1- /** Session-scoped crypto material for E2EE (mirrors legacy `sessionStorage` key names ). */
1+ /** Tab-shared crypto material for E2EE (stored in `localStorage` so auth survives new tabs ). */
22
33const P = "dn." ;
44
@@ -23,36 +23,36 @@ export type StoredSessionCrypto = {
2323} ;
2424
2525export function writeSessionCrypto ( data : StoredSessionCrypto ) : void {
26- sessionStorage . setItem ( CRYPTO_KEYS . sessionKey , data . sessionKeyB64 ) ;
27- sessionStorage . setItem (
26+ localStorage . setItem ( CRYPTO_KEYS . sessionKey , data . sessionKeyB64 ) ;
27+ localStorage . setItem (
2828 CRYPTO_KEYS . encryptedPrivateKeyring ,
2929 data . encryptedPrivateKeyringB64 ,
3030 ) ;
31- sessionStorage . setItem (
31+ localStorage . setItem (
3232 CRYPTO_KEYS . encryptedSymmetricKeyring ,
3333 data . encryptedSymmetricKeyringB64 ,
3434 ) ;
35- sessionStorage . setItem ( CRYPTO_KEYS . sessionId , data . sessionId ) ;
36- sessionStorage . setItem ( CRYPTO_KEYS . userId , data . userId ) ;
37- sessionStorage . setItem ( CRYPTO_KEYS . publicKeyring , data . publicKeyringB64 ) ;
38- sessionStorage . setItem (
35+ localStorage . setItem ( CRYPTO_KEYS . sessionId , data . sessionId ) ;
36+ localStorage . setItem ( CRYPTO_KEYS . userId , data . userId ) ;
37+ localStorage . setItem ( CRYPTO_KEYS . publicKeyring , data . publicKeyringB64 ) ;
38+ localStorage . setItem (
3939 CRYPTO_KEYS . personalGroupId ,
4040 data . personalGroupId ,
4141 ) ;
4242}
4343
4444export function readSessionCrypto ( ) : StoredSessionCrypto | null {
45- const sessionKeyB64 = sessionStorage . getItem ( CRYPTO_KEYS . sessionKey ) ;
46- const encryptedPrivateKeyringB64 = sessionStorage . getItem (
45+ const sessionKeyB64 = localStorage . getItem ( CRYPTO_KEYS . sessionKey ) ;
46+ const encryptedPrivateKeyringB64 = localStorage . getItem (
4747 CRYPTO_KEYS . encryptedPrivateKeyring ,
4848 ) ;
49- const encryptedSymmetricKeyringB64 = sessionStorage . getItem (
49+ const encryptedSymmetricKeyringB64 = localStorage . getItem (
5050 CRYPTO_KEYS . encryptedSymmetricKeyring ,
5151 ) ;
52- const sessionId = sessionStorage . getItem ( CRYPTO_KEYS . sessionId ) ;
53- const userId = sessionStorage . getItem ( CRYPTO_KEYS . userId ) ;
54- const publicKeyringB64 = sessionStorage . getItem ( CRYPTO_KEYS . publicKeyring ) ;
55- const personalGroupId = sessionStorage . getItem ( CRYPTO_KEYS . personalGroupId ) ;
52+ const sessionId = localStorage . getItem ( CRYPTO_KEYS . sessionId ) ;
53+ const userId = localStorage . getItem ( CRYPTO_KEYS . userId ) ;
54+ const publicKeyringB64 = localStorage . getItem ( CRYPTO_KEYS . publicKeyring ) ;
55+ const personalGroupId = localStorage . getItem ( CRYPTO_KEYS . personalGroupId ) ;
5656 if (
5757 sessionKeyB64 == null ||
5858 encryptedPrivateKeyringB64 == null ||
@@ -77,6 +77,6 @@ export function readSessionCrypto(): StoredSessionCrypto | null {
7777
7878export function clearSessionCrypto ( ) : void {
7979 for ( const k of Object . values ( CRYPTO_KEYS ) ) {
80- sessionStorage . removeItem ( k ) ;
80+ localStorage . removeItem ( k ) ;
8181 }
8282}
0 commit comments