@bn2me/client
Version:
bn2.me client library
2 lines (1 loc) • 973 B
JavaScript
import{a as e}from"./chunk-EXOYQILJ.js";import"./chunk-OSZ7DOEH.js";function d(){return crypto.subtle.generateKey({name:"ECDSA",namedCurve:"P-256"},!1,["sign"])}async function m({htm:t,htu:n,nonce:r,accessToken:a},i){let y=JSON.stringify({alg:"ES256",typ:"dpop+jwt",jwk:await u(i.publicKey)}),c=JSON.stringify({iat:Math.floor(Date.now()/1e3),jti:e(crypto.getRandomValues(new Uint8Array(32))),htm:t,htu:n,nonce:r,ath:a?e(await crypto.subtle.digest("SHA-256",o(a))):void 0}),s=`${e(o(y))}.${e(o(c))}`,p={name:"ECDSA",hash:"SHA-256"},g=e(await crypto.subtle.sign(p,i.privateKey,o(s)));return`${s}.${g}`}var w=new TextEncoder;function o(t){return w.encode(t)}async function u(t){let{kty:n,e:r,k:a,n:i,x:y,y:c,crv:s}=await crypto.subtle.exportKey("jwk",t);return{e:r,k:a,crv:s,kty:n,n:i,x:y,y:c}}async function P(t){let n=JSON.stringify(await u(t)),r=await crypto.subtle.digest("SHA-256",o(n));return e(r)}export{m as createDPoPJwt,d as generateDPoPKeyPair,P as jwkThumbprint};