@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
106 lines (105 loc) • 2.98 kB
JavaScript
import { PublicJwk } from "../../../kms/jwk/PublicJwk.mjs";
import { KeyManagementApi } from "../../../kms/KeyManagementApi.mjs";
import "../../../kms/index.mjs";
import "../../domain/DidDocumentRole.mjs";
import { DidJwk } from "./DidJwk.mjs";
import { DidRecord } from "../../repository/DidRecord.mjs";
import { DidRepository } from "../../repository/DidRepository.mjs";
import "../../repository/index.mjs";
//#region src/modules/dids/methods/jwk/JwkDidRegistrar.ts
var JwkDidRegistrar = class {
constructor() {
this.supportedMethods = ["jwk"];
}
async create(agentContext, options) {
const didRepository = agentContext.dependencyManager.resolve(DidRepository);
try {
let publicJwk;
let keyId;
const kms = agentContext.dependencyManager.resolve(KeyManagementApi);
if (options.options.createKey) {
const createKeyResult = await kms.createKey(options.options.createKey);
publicJwk = createKeyResult.publicJwk;
keyId = createKeyResult.keyId;
} else if (options.options.keyId) {
const _publicJwk = await kms.getPublicKey({ keyId: options.options.keyId });
keyId = options.options.keyId;
if (!_publicJwk) return {
didDocumentMetadata: {},
didRegistrationMetadata: {},
didState: {
state: "failed",
reason: `notFound: key with key id '${options.options.keyId}' not found`
}
};
if (_publicJwk.kty === "oct") return {
didDocumentMetadata: {},
didRegistrationMetadata: {},
didState: {
state: "failed",
reason: `notFound: key with key id '${options.options.keyId}' uses unsupported kty 'oct' for did:jwk`
}
};
publicJwk = _publicJwk;
} else return {
didDocumentMetadata: {},
didRegistrationMetadata: {},
didState: {
state: "failed",
reason: "Missing keyId or createKey"
}
};
const didJwk = DidJwk.fromPublicJwk(PublicJwk.fromPublicJwk(publicJwk));
const didRecord = new DidRecord({
did: didJwk.did,
role: "created",
keys: [{
didDocumentRelativeKeyId: "#0",
kmsKeyId: keyId
}]
});
await didRepository.save(agentContext, didRecord);
return {
didDocumentMetadata: {},
didRegistrationMetadata: {},
didState: {
state: "finished",
did: didJwk.did,
didDocument: didJwk.didDocument
}
};
} catch (error) {
return {
didDocumentMetadata: {},
didRegistrationMetadata: {},
didState: {
state: "failed",
reason: `unknownError: ${error.message}`
}
};
}
}
async update() {
return {
didDocumentMetadata: {},
didRegistrationMetadata: {},
didState: {
state: "failed",
reason: "notSupported: cannot update did:jwk did"
}
};
}
async deactivate() {
return {
didDocumentMetadata: {},
didRegistrationMetadata: {},
didState: {
state: "failed",
reason: "notSupported: cannot deactivate did:jwk did"
}
};
}
};
//#endregion
export { JwkDidRegistrar };
//# sourceMappingURL=JwkDidRegistrar.mjs.map