@smartledger/keys 1.5.7 → 1.5.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2048,7 +2048,7 @@ zone
2048
2048
  zoo`.split(`
2049
2049
  `);var uA=class{async deriveKeypair(_){if(!_.seed)throw new Error("BIP32 derivation requires a seed");if(!_.path)throw new Error(`BIP32 derivation requires a path (e.g., "m/44'/0'/0'/0/0")`);try{let X=vi.fromMasterSeed(_.seed).derive(_.path);if(!X.privateKey)throw new Error(`Failed to derive private key at path ${_.path}`);if(!X.publicKey)throw new Error(`Failed to derive public key at path ${_.path}`);return{privateKey:X.privateKey,publicKey:X.publicKey}}catch(Z){throw new Error(`BIP32 derivation failed at path ${_.path}: ${Z instanceof Error?Z.message:String(Z)}`)}}mnemonicToSeed(_,Z){return Dc(_,Z)}generateMnemonic(_=256){return mc(Sc,_)}static bitcoinPath(_=0,Z=0,X=0){return`m/44'/0'/${_}'/${Z}/${X}`}static bitcoinSegWitPath(_=0,Z=0,X=0){return`m/84'/0'/${_}'/${Z}/${X}`}};be();var Hc="123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";function kf(z){let _=0n;for(let X of z)_=_*256n+BigInt(X);let Z="";for(;_>0n;){let X=Number(_%58n);Z=Hc[X]+Z,_=_/58n}for(let X of z){if(X!==0)break;Z="1"+Z}return Z}function Gf(z){let _=0n;for(let X of z){let ee=Hc.indexOf(X);if(ee===-1)throw new Error(`Invalid Base58 character: ${X}`);_=_*58n+BigInt(ee)}let Z=[];for(;_>0n;)Z.unshift(Number(_%256n)),_=_/256n;for(let X of z){if(X!=="1")break;Z.unshift(0)}return new Uint8Array(Z)}function is(z,_=!0,Z="mainnet"){if(z.length!==32)throw new Error("Private key must be 32 bytes");let X=Z==="mainnet"?128:239,ee=new Uint8Array(_?34:33);ee[0]=X,ee.set(z,1),_&&(ee[33]=1);let re=Br(ee),ae=Br(re).slice(0,4),fe=new Uint8Array(ee.length+4);return fe.set(ee),fe.set(ae,ee.length),kf(fe)}function os(z){let _=Gf(z);if(_.length!==37&&_.length!==38)throw new Error("Invalid WIF length");let Z=_.slice(0,-4),X=_.slice(-4),ee=Br(Z),ie=Br(ee).slice(0,4);if(!X.every((ce,Ee)=>ce===ie[Ee]))throw new Error("Invalid WIF checksum");let ae=Z[0],fe=ae===128?"mainnet":ae===239?"testnet":null;if(!fe)throw new Error(`Invalid WIF version byte: 0x${ae.toString(16)}`);let le=Z.length===34&&Z[33]===1;return{privateKey:Z.slice(1,33),compressed:le,network:fe}}In.hmacSha256Sync=(z,..._)=>Wi(Br,z,In.concatBytes(..._));var tn=class{constructor(){he(this,"suiteId","bsv-ecdsa-secp256k1");he(this,"version","1.0.0");he(this,"capabilities",{derivation:new uA})}async generateKeypair(){let _=d0.randomPrivateKey(),Z=c0(_,!0);return{privateKey:_,publicKey:Z}}async sign(_,Z){try{return(await u0(Z,_)).toCompactRawBytes()}catch(X){throw new Error(`BsvEcdsaSuite signing failed: ${X instanceof Error?X.message:String(X)}`)}}async verify(_,Z,X){try{return I0(X,Z,_)}catch{return!1}}exportPublicKey(_){return Qn(_)}importPublicKey(_){return _r(_)}exportPrivateKey(_){return is(_,!0,"mainnet")}importPrivateKey(_){if(_.length===64){let Z=_r(_);if(Z.length!==32)throw new Error("Private key must be 32 bytes");return Z}else try{let{privateKey:Z}=os(_);return Z}catch(Z){throw new Error(`Invalid private key format: ${Z instanceof Error?Z.message:String(Z)}`)}}};be();var ss=null;async function as(){if(!ss){let z=await Promise.resolve().then(()=>Kc(kc(),1));ss=z.default||z}return ss}var cs={"ml-dsa-44":{publicKey:1312,privateKey:2560,signature:2420},"ml-dsa-65":{publicKey:1952,privateKey:4032,signature:3309},"ml-dsa-87":{publicKey:2592,privateKey:4864,signature:4627}},Kn=class{constructor(){he(this,"version","1.0.0");he(this,"capabilities",{})}async generateKeypair(){try{let Z=await(await as()).keyPair();return{publicKey:new Uint8Array(Z.publicKey),privateKey:new Uint8Array(Z.privateKey)}}catch(_){throw new Error(`${this.suiteId} key generation failed: ${_ instanceof Error?_.message:String(_)}`)}}async sign(_,Z){try{let ee=await(await as()).signDetached(Buffer.from(Z),Buffer.from(_));return new Uint8Array(ee)}catch(X){throw new Error(`${this.suiteId} signing failed: ${X instanceof Error?X.message:String(X)}`)}}async verify(_,Z,X){try{return await(await as()).verifyDetached(Buffer.from(X),Buffer.from(Z),Buffer.from(_))}catch{return!1}}exportPublicKey(_){return Qn(_)}importPublicKey(_){let Z=_r(_);if(Z.length!==this.sizes.publicKey)throw new Error(`${this.suiteId} public key must be ${this.sizes.publicKey} bytes, got ${Z.length}`);return Z}exportPrivateKey(_){return Qn(_)}importPrivateKey(_){let Z=_r(_);if(Z.length!==this.sizes.privateKey)throw new Error(`${this.suiteId} private key must be ${this.sizes.privateKey} bytes, got ${Z.length}`);return Z}},Mn=class extends Kn{constructor(){super(...arguments);he(this,"suiteId","ml-dsa-44")}get sizes(){return cs["ml-dsa-44"]}},qn=class extends Kn{constructor(){super(...arguments);he(this,"suiteId","ml-dsa-65")}get sizes(){return cs["ml-dsa-65"]}},An=class extends Kn{constructor(){super(...arguments);he(this,"suiteId","ml-dsa-87")}get sizes(){return cs["ml-dsa-87"]}};var On=class{constructor(){he(this,"suites",new Map)}register(_){if(this.suites.has(_.suiteId))throw new Error(`Signature suite already registered: ${_.suiteId}`);this.suites.set(_.suiteId,_)}getSuite(_){let Z=this.suites.get(_);if(!Z)throw new Error(`Unknown signature suite: ${_}. Available: ${this.listSuites().join(", ")}`);return Z}hasSuite(_){return this.suites.has(_)}listSuites(){return[...this.suites.keys()]}getAllSuites(){return[...this.suites.values()]}unregister(_){return this.suites.delete(_)}clear(){this.suites.clear()}},Gr=new On;Gr.register(new tn);Gr.register(new Mn);Gr.register(new qn);Gr.register(new An);be();be();var tr=class{constructor(){he(this,"keys",new Map)}async store(_,Z,X){this.keys.set(_,{keypair:Z,meta:X})}async load(_){return this.keys.get(_)||null}async list(_){let Z=Array.from(this.keys.values()).map(X=>X.meta);return _?Z.filter(X=>Object.entries(_).every(([ee,re])=>ee==="usage"&&Array.isArray(re)?re.some(ie=>X.usage.includes(ie)):X[ee]===re)):Z}async delete(_){this.keys.delete(_)}async updateMeta(_,Z){let X=this.keys.get(_);if(!X)throw new Error(`Key not found: ${_}`);this.keys.set(_,{keypair:X.keypair,meta:{...X.meta,...Z}})}clear(){this.keys.clear()}},Jn=class{constructor(_=new tr){he(this,"storage");this.storage=_}async registerKey(_,Z,X,ee={}){let re={keyId:_,suiteId:X,createdAt:new Date().toISOString(),expiresAt:ee.expiresAt,usage:ee.usage||["signing"],cryptoProfileVersion:ee.cryptoProfileVersion||"1.0.0",status:ee.status||"active"};return await this.storage.store(_,Z,re),re}async getKey(_){return await this.storage.load(_)}async getPublicKey(_){let Z=await this.storage.load(_);return Z?{publicKey:Z.keypair.publicKey,meta:Z.meta}:null}async listKeys(_){return await this.storage.list(_)}async listActiveKeys(_){let Z=await this.storage.list(_),X=new Date;return Z.filter(ee=>!(ee.status&&ee.status!=="active"||ee.expiresAt&&new Date(ee.expiresAt)<X))}async rotateKey(_,Z,X){let ee=await this.storage.load(_);if(!ee)throw new Error(`Cannot rotate: key not found: ${_}`);return await this.storage.updateMeta(_,{status:"rotated"}),await this.registerKey(Z,X,ee.meta.suiteId,{usage:ee.meta.usage,cryptoProfileVersion:ee.meta.cryptoProfileVersion,expiresAt:ee.meta.expiresAt,status:"active"}),await this.storage.updateMeta(Z,{rotatedFrom:_}),(await this.storage.load(Z)).meta}async revokeKey(_,Z){await this.storage.updateMeta(_,{status:"revoked",revokedAt:new Date().toISOString()})}async deleteKey(_){await this.storage.delete(_)}async markExpiredKeys(){let _=await this.storage.list(),Z=new Date,X=0;for(let ee of _)ee.expiresAt&&new Date(ee.expiresAt)<Z&&ee.status==="active"&&(await this.storage.updateMeta(ee.keyId,{status:"expired"}),X++);return X}async pruneOldKeys(_=90){let Z=await this.storage.list(),X=new Date;X.setDate(X.getDate()-_);let ee=0;for(let re of Z)(re.status==="revoked"&&re.revokedAt&&new Date(re.revokedAt)<X||re.status==="expired"&&re.expiresAt&&new Date(re.expiresAt)<X)&&(await this.storage.delete(re.keyId),ee++);return ee}};be();be();var Fi=class{constructor(_){this.keyCounter=new Map;this.counterInitialized=new Set;this.counterInitPromises=new Map;this.keyRegistry=_.keyRegistry,this.suiteRegistry=_.suiteRegistry}async createKey(_,Z,X={}){let ee=this.suiteRegistry.getSuite(Z.primarySignatureSuite),re;if(X.derivationContext){if(!ee.capabilities?.derivation){let Ce=this.getSuitesWithCapability("derivation");throw new Error(`Suite '${ee.suiteId}' does not support key derivation.
2050
2050
  `+(Ce.length>0?`Suites with derivation capability: ${Ce.join(", ")}
2051
- Consider using one of these suites or remove the derivationContext option.`:"No suites currently support derivation. Remove the derivationContext option."))}re=await ee.capabilities.derivation.deriveKeypair(X.derivationContext)}else re=await ee.generateKeypair();let ie=await this.getNextCounter(_),ae=Z.primarySignatureSuite.split("-")[0],fe=`${_}:pk-${ae}-${ie}`;return{meta:await this.keyRegistry.registerKey(fe,re,Z.primarySignatureSuite,{expiresAt:X.expiresAt,usage:X.usage||["signing"],cryptoProfileVersion:X.cryptoProfileVersion||"1.0.0"}),publicKey:re.publicKey}}async getKey(_){let Z=await this.keyRegistry.getPublicKey(_);return Z?{meta:Z.meta,publicKey:Z.publicKey}:null}async signWithKey(_,Z){let X=await this.keyRegistry.getKey(_);if(!X)throw new Error(`Key not found: ${_}`);if(X.meta.status!=="active")throw new Error(`Key is not active: ${_} (status: ${X.meta.status})`);let ee=this.suiteRegistry.getSuite(X.meta.suiteId),re=this.getHashAlgorithm(X.meta.suiteId),ie=await fi(Z,re);return await ee.sign(X.keypair.privateKey,ie)}async verifySignature(_,Z,X){let ee=await this.keyRegistry.getPublicKey(_);if(!ee)return!1;let re=this.suiteRegistry.getSuite(ee.meta.suiteId),ie=this.getHashAlgorithm(ee.meta.suiteId),ae=await fi(Z,ie);try{return await re.verify(ee.publicKey,ae,X)}catch{return!1}}async listKeysForAgent(_,Z=!0){let ee=(Z?await this.keyRegistry.listActiveKeys():await this.keyRegistry.listKeys()).filter(ie=>ie.keyId.startsWith(`${_}:`)),re=[];for(let ie of ee){let ae=await this.keyRegistry.getPublicKey(ie.keyId);ae&&re.push({meta:ae.meta,publicKey:ae.publicKey})}return re}async getActiveCryptoProfile(_){let Z=await this.listKeysForAgent(_,!0);if(Z.length===0)return null;let X=this.sortKeysByCreatedAt(Z),ee=new Set(X.map(ie=>ie.meta.suiteId)),re=Array.from(ee);return{primarySignatureSuite:re[0],secondarySignatureSuite:re[1]}}async rotateAgentKeys(_){let Z=await this.listKeysForAgent(_,!0),X=[];for(let ee of Z){let ie=await this.suiteRegistry.getSuite(ee.meta.suiteId).generateKeypair(),ae=await this.getNextCounter(_),fe=ee.meta.suiteId.split("-")[0],le=`${_}:pk-${fe}-${ae}`,Ce=await this.keyRegistry.rotateKey(ee.meta.keyId,le,ie);X.push({meta:Ce,publicKey:ie.publicKey})}return X}async getOrCreateKey(_,Z,X={}){let re=(await this.listKeysForAgent(_,!0)).find(ie=>ie.meta.suiteId===Z.primarySignatureSuite);return re||await this.createKey(_,Z,X)}async createDualSignatureKeys(_,Z,X={}){if(!Z.secondarySignatureSuite)throw new Error("secondarySignatureSuite is required to create dual signature keys");let ee=await this.createKey(_,{primarySignatureSuite:Z.primarySignatureSuite},X),re=await this.createKey(_,{primarySignatureSuite:Z.secondarySignatureSuite},X);return{primaryKey:ee,secondaryKey:re}}async getOrCreateDualSignatureKeys(_,Z,X={}){if(!Z.secondarySignatureSuite)throw new Error("secondarySignatureSuite is required to create dual signature keys");let ee=await this.getOrCreateKey(_,{primarySignatureSuite:Z.primarySignatureSuite},X),re=await this.getOrCreateKey(_,{primarySignatureSuite:Z.secondarySignatureSuite},X);return{primaryKey:ee,secondaryKey:re}}async signWithSuites(_,Z,X){let ee=this.sortKeysByCreatedAt(await this.listKeysForAgent(_,!0));if(ee.length===0)throw new Error(`No active keys found for agent: ${_}`);let re=X?.length?X:Array.from(new Set(ee.map(ae=>ae.meta.suiteId))),ie=[];for(let ae of re){let fe=ee.find(Ce=>Ce.meta.suiteId===ae);if(!fe)throw new Error(`No active key for suite '${ae}' and agent '${_}'`);let le=await this.signWithKey(fe.meta.keyId,Z);ie.push({suiteId:ae,keyId:fe.meta.keyId,signature:le})}return{signatures:ie}}async verifyWithSuites(_,Z,X){let ee=[];for(let re of X)try{let ie=await this.verifySignature(re.keyId,Z,re.signature);ee.push({suiteId:re.suiteId,keyId:re.keyId,valid:ie})}catch(ie){ee.push({suiteId:re.suiteId,keyId:re.keyId,valid:!1,error:ie.message})}return{results:ee,allValid:ee.every(re=>re.valid)}}generateMnemonic(_=256){return new uA().generateMnemonic(_)}async createKeyFromMnemonic(_,Z,X,ee=uA.bitcoinPath(0,0,0),re,ie={}){let fe=new uA().mnemonicToSeed(X,re);return await this.createKey(_,Z,{...ie,derivationContext:{seed:fe,path:ee}})}getCapabilities(_){let Z=this.suiteRegistry.getSuite(_),X=[];return Z.capabilities?.derivation&&X.push("derivation"),Z.capabilities?.encryption&&X.push("encryption"),Z.capabilities?.threshold&&X.push("threshold"),X}getSuitesWithCapability(_){return this.suiteRegistry.getAllSuites().filter(X=>!!X.capabilities?.[_]).map(X=>X.suiteId)}async createBitcoinWalletKey(_,Z,X=0,ee=0,re=!1,ie={}){let ae=uA.bitcoinPath(X,re?1:0,ee);return this.createKeyFromMnemonic(_,{primarySignatureSuite:"bsv-ecdsa-secp256k1"},Z,ae,void 0,ie)}getHashAlgorithm(_){return _.startsWith("ml-dsa")?"sha3-256":"sha256"}async getNextCounter(_){if(!this.counterInitialized.has(_)){if(!this.counterInitPromises.has(_)){let re=(async()=>{let ae=(await this.keyRegistry.listKeys()).reduce((fe,le)=>{if(!le.keyId.startsWith(`${_}:pk-`))return fe;let Ce=le.keyId.match(/:pk-[^-]+-(\d+)$/);if(!Ce)return fe;let ce=parseInt(Ce[1],10);return Number.isFinite(ce)?Math.max(fe,ce):fe},0);this.keyCounter.set(_,ae),this.counterInitialized.add(_),this.counterInitPromises.delete(_)})();this.counterInitPromises.set(_,re)}let ee=this.counterInitPromises.get(_);ee&&await ee}let X=(this.keyCounter.get(_)||0)+1;return this.keyCounter.set(_,X),X}sortKeysByCreatedAt(_){return[..._].sort((Z,X)=>{let ee=new Date(Z.meta.createdAt).getTime(),re=new Date(X.meta.createdAt).getTime();if(ee!==re)return ee-re;let ie=this.getSuitePriority(Z.meta.suiteId)-this.getSuitePriority(X.meta.suiteId);return ie!==0?ie:Z.meta.keyId.localeCompare(X.meta.keyId)})}getSuitePriority(_){return _.startsWith("ml-dsa")?0:_.includes("ecdsa")?1:2}};be();async function gs(){let z=new tr,_=new Jn(z);return new Fi({keyRegistry:_,suiteRegistry:Gr})}var vf={createKeySDK:gs};typeof window<"u"&&(window.LumenKeys={createKeySDK:gs});return Mc(Uf);})();
2051
+ Consider using one of these suites or remove the derivationContext option.`:"No suites currently support derivation. Remove the derivationContext option."))}re=await ee.capabilities.derivation.deriveKeypair(X.derivationContext)}else re=await ee.generateKeypair();let ie=await this.getNextCounter(_),ae=Z.primarySignatureSuite.split("-")[0],fe=`${_}:pk-${ae}-${ie}`;return{meta:await this.keyRegistry.registerKey(fe,re,Z.primarySignatureSuite,{expiresAt:X.expiresAt,usage:X.usage||["signing"],cryptoProfileVersion:X.cryptoProfileVersion||"1.0.0"}),publicKey:re.publicKey}}async getKey(_){let Z=await this.keyRegistry.getPublicKey(_);return Z?{meta:Z.meta,publicKey:Z.publicKey}:null}async signWithKey(_,Z){let X=await this.keyRegistry.getKey(_);if(!X)throw new Error(`Key not found: ${_}`);if(X.meta.status!=="active")throw new Error(`Key is not active: ${_} (status: ${X.meta.status})`);let ee=this.suiteRegistry.getSuite(X.meta.suiteId),re=this.getHashAlgorithm(X.meta.suiteId),ie=await fi(Z,re);return await ee.sign(X.keypair.privateKey,ie)}async verifySignature(_,Z,X){let ee=await this.keyRegistry.getPublicKey(_);if(!ee)return!1;let re=this.suiteRegistry.getSuite(ee.meta.suiteId),ie=this.getHashAlgorithm(ee.meta.suiteId),ae=await fi(Z,ie);try{return await re.verify(ee.publicKey,ae,X)}catch{return!1}}async listKeysForAgent(_,Z=!0){let ee=(Z?await this.keyRegistry.listActiveKeys():await this.keyRegistry.listKeys()).filter(ie=>ie.keyId.startsWith(`${_}:`)),re=[];for(let ie of ee){let ae=await this.keyRegistry.getPublicKey(ie.keyId);ae&&re.push({meta:ae.meta,publicKey:ae.publicKey})}return re}async getActiveCryptoProfile(_){let Z=await this.listKeysForAgent(_,!0);if(Z.length===0)return null;let X=this.sortKeysByCreatedAt(Z),ee=new Set(X.map(ie=>ie.meta.suiteId)),re=Array.from(ee);return{primarySignatureSuite:re[0],secondarySignatureSuite:re[1]}}async rotateAgentKeys(_){let Z=await this.listKeysForAgent(_,!0),X=[];for(let ee of Z){let ie=await this.suiteRegistry.getSuite(ee.meta.suiteId).generateKeypair(),ae=await this.getNextCounter(_),fe=ee.meta.suiteId.split("-")[0],le=`${_}:pk-${fe}-${ae}`,Ce=await this.keyRegistry.rotateKey(ee.meta.keyId,le,ie);X.push({meta:Ce,publicKey:ie.publicKey})}return X}async getOrCreateKey(_,Z,X={}){let re=(await this.listKeysForAgent(_,!0)).find(ie=>ie.meta.suiteId===Z.primarySignatureSuite);return re||await this.createKey(_,Z,X)}async createDualSignatureKeys(_,Z,X={}){if(!Z.secondarySignatureSuite)throw new Error("secondarySignatureSuite is required to create dual signature keys");let ee=await this.createKey(_,{primarySignatureSuite:Z.primarySignatureSuite},X),re=await this.createKey(_,{primarySignatureSuite:Z.secondarySignatureSuite},X);return{primaryKey:ee,secondaryKey:re}}async getOrCreateDualSignatureKeys(_,Z,X={}){if(!Z.secondarySignatureSuite)throw new Error("secondarySignatureSuite is required to create dual signature keys");let ee=await this.getOrCreateKey(_,{primarySignatureSuite:Z.primarySignatureSuite},X),re=await this.getOrCreateKey(_,{primarySignatureSuite:Z.secondarySignatureSuite},X);return{primaryKey:ee,secondaryKey:re}}async signWithSuites(_,Z,X){let ee=this.sortKeysByCreatedAt(await this.listKeysForAgent(_,!0));if(ee.length===0)throw new Error(`No active keys found for agent: ${_}`);let re=X?.length?X:Array.from(new Set(ee.map(ae=>ae.meta.suiteId))),ie=[];for(let ae of re){let fe=ee.find(Ce=>Ce.meta.suiteId===ae);if(!fe)throw new Error(`No active key for suite '${ae}' and agent '${_}'`);let le=await this.signWithKey(fe.meta.keyId,Z);ie.push({suiteId:ae,keyId:fe.meta.keyId,signature:le})}return{signatures:ie}}async verifyWithSuites(_,Z,X){let ee=[];for(let re of X)try{let ie=await this.verifySignature(re.keyId,Z,re.signature);ee.push({suiteId:re.suiteId,keyId:re.keyId,valid:ie})}catch(ie){ee.push({suiteId:re.suiteId,keyId:re.keyId,valid:!1,error:ie.message})}return{results:ee,allValid:ee.every(re=>re.valid)}}generateMnemonic(_=256){return new uA().generateMnemonic(_)}async createKeyFromMnemonic(_,Z,X,ee=uA.bitcoinPath(0,0,0),re,ie={}){let fe=new uA().mnemonicToSeed(X,re);return await this.createKey(_,Z,{...ie,derivationContext:{seed:fe,path:ee}})}getCapabilities(_){let Z=this.suiteRegistry.getSuite(_),X=[];return Z.capabilities?.derivation&&X.push("derivation"),Z.capabilities?.encryption&&X.push("encryption"),Z.capabilities?.threshold&&X.push("threshold"),X}getSuitesWithCapability(_){return this.suiteRegistry.getAllSuites().filter(X=>!!X.capabilities?.[_]).map(X=>X.suiteId)}async createBitcoinWalletKey(_,Z,X=0,ee=0,re=!1,ie={}){let ae=uA.bitcoinPath(X,re?1:0,ee);return this.createKeyFromMnemonic(_,{primarySignatureSuite:"bsv-ecdsa-secp256k1"},Z,ae,void 0,ie)}getHashAlgorithm(_){return _.startsWith("ml-dsa")?"sha3-256":"sha256"}async getNextCounter(_){if(!this.counterInitialized.has(_)){if(!this.counterInitPromises.has(_)){let re=(async()=>{let ae=(await this.keyRegistry.listKeys()).reduce((fe,le)=>{if(!le.keyId.startsWith(`${_}:pk-`))return fe;let Ce=le.keyId.match(/:pk-[^-]+-(\d+)$/);if(!Ce)return fe;let ce=parseInt(Ce[1],10);return Number.isFinite(ce)?Math.max(fe,ce):fe},0);this.keyCounter.set(_,ae),this.counterInitialized.add(_),this.counterInitPromises.delete(_)})();this.counterInitPromises.set(_,re)}let ee=this.counterInitPromises.get(_);ee&&await ee}let X=(this.keyCounter.get(_)||0)+1;return this.keyCounter.set(_,X),X}sortKeysByCreatedAt(_){return[..._].sort((Z,X)=>{let ee=new Date(Z.meta.createdAt).getTime(),re=new Date(X.meta.createdAt).getTime();if(ee!==re)return ee-re;let ie=this.getSuitePriority(Z.meta.suiteId)-this.getSuitePriority(X.meta.suiteId);return ie!==0?ie:Z.meta.keyId.localeCompare(X.meta.keyId)})}getSuitePriority(_){return _.startsWith("ml-dsa")?0:_.includes("ecdsa")?1:2}};be();async function gs(z){let _=new tr,Z=new Jn(_);return new Fi({keyRegistry:Z,suiteRegistry:z||Gr})}var vf={createKeySDK:gs};typeof window<"u"&&(window.LumenKeys={createKeySDK:gs});return Mc(Uf);})();
2052
2052
  /*! Bundled license information:
2053
2053
 
2054
2054
  @noble/hashes/utils.js: