@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
83 lines (79 loc) • 3.17 kB
JavaScript
import { CredoError } from "../error/CredoError.mjs";
import "../error/index.mjs";
import { MessageValidator } from "../utils/MessageValidator.mjs";
import { JsonTransformer } from "../utils/JsonTransformer.mjs";
import "../utils/index.mjs";
import "../agent/index.mjs";
import { KeyManagementApi } from "../modules/kms/KeyManagementApi.mjs";
import "../modules/kms/index.mjs";
import { VerificationMethod } from "../modules/dids/domain/verificationMethod/VerificationMethod.mjs";
import { getPublicJwkFromVerificationMethod } from "../modules/dids/domain/key-type/keyDidMapping.mjs";
import "../modules/dids/index.mjs";
import { LdKeyPair } from "../modules/vc/data-integrity/models/LdKeyPair.mjs";
//#region src/crypto/KmsKeyPair.ts
function createKmsKeyPairClass(agentContext) {
return class KmsKeyPair extends LdKeyPair {
constructor(options) {
super(options);
this.type = "KmsKeyPair";
this.publicJwk = options.publicJwk;
}
static async generate() {
throw new Error("Not implemented");
}
fingerprint() {
throw new Error("Method not implemented.");
}
verifyFingerprint(_fingerprint) {
throw new Error("Method not implemented.");
}
static async from(verificationMethod) {
const vMethod = JsonTransformer.fromJSON(verificationMethod, VerificationMethod);
MessageValidator.validateSync(vMethod);
const publicJwk = getPublicJwkFromVerificationMethod(vMethod);
return new KmsKeyPair({
id: vMethod.id,
controller: vMethod.controller,
publicJwk
});
}
/**
* 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.
*/
signer() {
const wrappedSign = async (data) => {
if (Array.isArray(data.data)) throw new CredoError("Signing array of data entries is not supported");
return (await agentContext.dependencyManager.resolve(KeyManagementApi).sign({
data: data.data,
keyId: this.publicJwk.keyId,
algorithm: this.publicJwk.signatureAlgorithm
})).signature;
};
return { sign: wrappedSign.bind(this) };
}
/**
* 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.
*/
verifier() {
const wrappedVerify = async (data) => {
if (Array.isArray(data.data)) throw new CredoError("Verifying array of data entries is not supported");
const { verified } = await agentContext.dependencyManager.resolve(KeyManagementApi).verify({
data: data.data,
signature: data.signature,
key: { publicJwk: this.publicJwk.toJson() },
algorithm: this.publicJwk.signatureAlgorithm
});
return verified;
};
return { verify: wrappedVerify.bind(this) };
}
get publicKeyBuffer() {
const publicKey = this.publicJwk.publicKey;
if (publicKey.kty === "RSA") throw new CredoError(`kty 'RSA' not supported for publicKeyBuffer`);
return publicKey.publicKey;
}
};
}
//#endregion
export { createKmsKeyPairClass };
//# sourceMappingURL=KmsKeyPair.mjs.map