export const shuffleAttackCutoff = 1546329600000 ; export const pbkdf2 = { hash : { name : 'SHA-256' } , iter : 100000 , ks : 64 } ; export const ecdsa = { pair : { name : 'ECDSA' , namedCurve : 'P-256' } , sign : { name : 'ECDSA' , hash : { name : 'SHA-256' } } } ; export const ecdh = { name : 'ECDH' , namedCurve : 'P-256' } ; export function jwk ( pub , d ? ) { const coords = pub . split ( '.' ) ; return { crv : 'P-256' , d , ext : true , key_opts : d ? [ 'sign' ] : [ 'verify' ] , kty : 'EC' , x : coords [ 0 ] , y : coords [ 1 ] } ; } export function keyToJwk ( keyBytes ) { const keyB64 = keyBytes . toString ( 'base64' ) ; const k = keyB64 . replace ( /\+/g , '-' ) . replace ( /\//g , '_' ) . replace ( /\=/g , '' ) ; return { kty : 'oct' , k , ext : false , alg : 'A256GCM' } ; } export function check ( t ) { return typeof t === 'string' && 'SEA{' === t . slice ( 0 , 4 ) ; } export function parse ( t ) { try { const yes = typeof t === 'string' ; if ( yes && 'SEA{' === t . slice ( 0 , 4 ) ) { t = t . slice ( 3 ) ; } return yes ? JSON . parse ( t ) : t ; } catch ( _e ) { } return t ; }