@credo-ts/core
Version:
<p align="center"> <br /> <img alt="Credo Logo" src="https://github.com/openwallet-foundation/credo-ts/blob/c7886cb8377ceb8ee4efe8d264211e561a75072d/images/credo-logo.png" height="250px" /> </p> <h1 align="center"><b>Credo - Core</b></h1
1 lines • 5.38 kB
Source Map (JSON)
{"version":3,"file":"KmsKeyPair.mjs","names":[],"sources":["../../src/crypto/KmsKeyPair.ts"],"sourcesContent":["import { AgentContext } from '../agent'\nimport { CredoError } from '../error'\nimport { VerificationMethod } from '../modules/dids'\nimport { getPublicJwkFromVerificationMethod } from '../modules/dids/domain/key-type/keyDidMapping'\nimport { KeyManagementApi, PublicJwk } from '../modules/kms'\nimport type { LdKeyPairOptions } from '../modules/vc/linked-data-proofs/models/LdKeyPair'\nimport { LdKeyPair } from '../modules/vc/linked-data-proofs/models/LdKeyPair'\nimport { JsonTransformer, MessageValidator } from '../utils'\n\ninterface KmsKeyPairOptions extends LdKeyPairOptions {\n publicJwk: PublicJwk\n}\n\nexport function createKmsKeyPairClass(agentContext: AgentContext) {\n return class KmsKeyPair extends LdKeyPair {\n public publicJwk: PublicJwk\n public type = 'KmsKeyPair'\n\n public constructor(options: KmsKeyPairOptions) {\n super(options)\n this.publicJwk = options.publicJwk\n }\n\n public static async generate(): Promise<KmsKeyPair> {\n throw new Error('Not implemented')\n }\n\n public fingerprint(): string {\n throw new Error('Method not implemented.')\n }\n\n public verifyFingerprint(_fingerprint: string): boolean {\n throw new Error('Method not implemented.')\n }\n\n public static async from(verificationMethod: VerificationMethod): Promise<KmsKeyPair> {\n const vMethod = JsonTransformer.fromJSON(verificationMethod, VerificationMethod)\n MessageValidator.validateSync(vMethod)\n const publicJwk = getPublicJwkFromVerificationMethod(vMethod)\n\n return new KmsKeyPair({\n id: vMethod.id,\n controller: vMethod.controller,\n publicJwk,\n })\n }\n\n /**\n * This method returns a wrapped wallet.sign method. The method is being wrapped so we can covert between Uint8Array and Buffer. This is to make it compatible with the external signature libraries.\n */\n public signer(): { sign: (data: { data: Uint8Array | Uint8Array[] }) => Promise<Uint8Array> } {\n // wrap function for conversion\n const wrappedSign = async (data: { data: Uint8Array | Uint8Array[] }): Promise<Uint8Array> => {\n if (Array.isArray(data.data)) {\n throw new CredoError('Signing array of data entries is not supported')\n }\n const kms = agentContext.dependencyManager.resolve(KeyManagementApi)\n\n const result = await kms.sign({\n data: data.data,\n keyId: this.publicJwk.keyId,\n algorithm: this.publicJwk.signatureAlgorithm,\n })\n\n return result.signature\n }\n\n return {\n sign: wrappedSign.bind(this),\n }\n }\n\n /**\n * This method returns a wrapped wallet.verify method. The method is being wrapped so we can covert between Uint8Array and Buffer. This is to make it compatible with the external signature libraries.\n */\n public verifier(): {\n verify: (data: { data: Uint8Array | Uint8Array[]; signature: Uint8Array }) => Promise<boolean>\n } {\n const wrappedVerify = async (data: {\n data: Uint8Array | Uint8Array[]\n signature: Uint8Array\n }): Promise<boolean> => {\n if (Array.isArray(data.data)) {\n throw new CredoError('Verifying array of data entries is not supported')\n }\n const kms = agentContext.dependencyManager.resolve(KeyManagementApi)\n\n const { verified } = await kms.verify({\n data: data.data,\n signature: data.signature,\n key: {\n publicJwk: this.publicJwk.toJson(),\n },\n algorithm: this.publicJwk.signatureAlgorithm,\n })\n\n return verified\n }\n return {\n verify: wrappedVerify.bind(this),\n }\n }\n\n public get publicKeyBuffer(): Uint8Array {\n const publicKey = this.publicJwk.publicKey\n\n if (publicKey.kty === 'RSA') {\n throw new CredoError(`kty 'RSA' not supported for publicKeyBuffer`)\n }\n\n return publicKey.publicKey\n }\n }\n}\n"],"mappings":";;;;;;;;;;;;;AAaA,SAAgB,sBAAsB,cAA4B;CAChE,OAAO,MAAM,mBAAmB,UAAU;EAIxC,YAAmB,SAA4B;GAC7C,MAAM,OAAO;GAHf,KAAO,OAAO;GAIZ,KAAK,YAAY,QAAQ;EAC3B;EAEA,aAAoB,WAAgC;GAClD,MAAM,IAAI,MAAM,iBAAiB;EACnC;EAEA,cAA6B;GAC3B,MAAM,IAAI,MAAM,yBAAyB;EAC3C;EAEA,kBAAyB,cAA+B;GACtD,MAAM,IAAI,MAAM,yBAAyB;EAC3C;EAEA,aAAoB,KAAK,oBAA6D;GACpF,MAAM,UAAU,gBAAgB,SAAS,oBAAoB,kBAAkB;GAC/E,iBAAiB,aAAa,OAAO;GACrC,MAAM,YAAY,mCAAmC,OAAO;GAE5D,OAAO,IAAI,WAAW;IACpB,IAAI,QAAQ;IACZ,YAAY,QAAQ;IACpB;GACF,CAAC;EACH;;;;EAKA,SAA8F;GAE5F,MAAM,cAAc,OAAO,SAAmE;IAC5F,IAAI,MAAM,QAAQ,KAAK,IAAI,GACzB,MAAM,IAAI,WAAW,gDAAgD;IAUvE,QAAO,MARK,aAAa,kBAAkB,QAAQ,gBAE5B,CAAC,CAAC,KAAK;KAC5B,MAAM,KAAK;KACX,OAAO,KAAK,UAAU;KACtB,WAAW,KAAK,UAAU;IAC5B,CAAC,EAAA,CAEa;GAChB;GAEA,OAAO,EACL,MAAM,YAAY,KAAK,IAAI,EAC7B;EACF;;;;EAKA,WAEE;GACA,MAAM,gBAAgB,OAAO,SAGL;IACtB,IAAI,MAAM,QAAQ,KAAK,IAAI,GACzB,MAAM,IAAI,WAAW,kDAAkD;IAIzE,MAAM,EAAE,aAAa,MAFT,aAAa,kBAAkB,QAAQ,gBAEtB,CAAC,CAAC,OAAO;KACpC,MAAM,KAAK;KACX,WAAW,KAAK;KAChB,KAAK,EACH,WAAW,KAAK,UAAU,OAAO,EACnC;KACA,WAAW,KAAK,UAAU;IAC5B,CAAC;IAED,OAAO;GACT;GACA,OAAO,EACL,QAAQ,cAAc,KAAK,IAAI,EACjC;EACF;EAEA,IAAW,kBAA8B;GACvC,MAAM,YAAY,KAAK,UAAU;GAEjC,IAAI,UAAU,QAAQ,OACpB,MAAM,IAAI,WAAW,6CAA6C;GAGpE,OAAO,UAAU;EACnB;CACF;AACF"}