did-provider-quick
Version:
Veramo plugin that can enable creation and control of did:quick identifiers.
43 lines • 2.05 kB
JavaScript
import { getDIDQuickUpdates } from './getDIDQuickUpdates.js';
import { multibaseToBytes } from '@veramo/utils';
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 });
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;
if (verifiableCredential?.type?.includes('DIDQuickAddKey')) {
verificationMethods = [...verificationMethods, verifiableCredential.credentialSubject];
const { keyBytes, keyType } = multibaseToBytes(verifiableCredential.credentialSubject.publicKeyMultibase);
if (keyType === 'Ed25519' || keyType === "Secp256k1") {
authenticationKeys = [...authenticationKeys, verifiableCredential.credentialSubject.id];
}
if (keyType === 'Ed25519') {
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