did-relayer-quick
Version:
Veramo plugin that can enable creation and control of did:quick identifiers.
51 lines • 2.46 kB
JavaScript
import Debug from 'debug';
import { getDIDQuickUpdates } from './getDIDQuickUpdates.js';
const debug = Debug('veramo:did-provider-quick:saveDIDQuickUpdate');
export async function resolveDID(did, agent) {
if (!did.startsWith('did:quick:')) {
throw Error('DID not of type did:quick');
}
const rootDid = did.replace('did:quick:', '');
const rootDoc = await agent.resolveDid({ didUrl: rootDid });
console.log("rootDoc: ", rootDoc);
const creds = await getDIDQuickUpdates({ did: rootDid }, agent);
let keyAgreementKeys = rootDoc.didDocument.keyAgreement ? [...(rootDoc.didDocument.keyAgreement)] : [];
let authenticationKeys = rootDoc.didDocument.authentication ? [...(rootDoc.didDocument.authentication)] : [];
let verificationMethods = [...(rootDoc.didDocument.verificationMethod)];
let serviceEndpoints = rootDoc.didDocument.service ? [...(rootDoc.didDocument.service)] : [];
// let numKeys = 0
for (const cred of creds) {
const { verifiableCredential } = cred;
// const { addOp } = verifiableCredential.credentialSubject
// if (addOp) {
// if (addOp.keyAgreementKey) {
// verificationMethods = [...verificationMethods, addOp.keyAgreementKey]
// keyAgreementKeys = [...keyAgreementKeys, addOp.keyAgreementKey.id]
// } else if (addOp.authenticationKey) {
// verificationMethods = [...verificationMethods, addOp.authenticationKey]
// authenticationKeys = [...authenticationKeys, addOp.authenticationKey.id]
// } else if (addOp.serviceEndpoint) {
// serviceEndpoints = [...serviceEndpoints, ...addOp.serviceEndpoint]
// }
// }
if (verifiableCredential?.type?.includes('DIDQuickAddKey')) {
verificationMethods = [...verificationMethods, verifiableCredential.credentialSubject];
keyAgreementKeys = [...keyAgreementKeys, verifiableCredential.credentialSubject.id];
}
}
const didDocument = {
...rootDoc.didDocument,
id: 'did:quick:' + rootDid,
verificationMethod: verificationMethods,
authentication: authenticationKeys,
assertionMethod: authenticationKeys,
keyAgreement: keyAgreementKeys,
service: serviceEndpoints
};
return {
didDocument,
didDocumentMetadata: {},
didResolutionMetadata: {}
};
}
//# sourceMappingURL=resolveDID.js.map