@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
73 lines (69 loc) • 2.82 kB
JavaScript
import { PublicJwk } from "../../../kms/jwk/PublicJwk.mjs";
import "../../../kms/index.mjs";
import { getEd25519VerificationKey2018 } from "../../domain/verificationMethod/Ed25519VerificationKey2018.mjs";
import { getX25519KeyAgreementKey2019 } from "../../domain/verificationMethod/X25519KeyAgreementKey2019.mjs";
import { DidCommV1Service } from "../../domain/service/DidCommV1Service.mjs";
import { DidDocumentBuilder } from "../../domain/DidDocumentBuilder.mjs";
import "../../domain/index.mjs";
import { DidKey } from "../key/DidKey.mjs";
import "../key/index.mjs";
import { convertPublicKeyToX25519 } from "@stablelib/ed25519";
//#region src/modules/dids/methods/peer/createPeerDidDocumentFromServices.ts
function createPeerDidDocumentFromServices(services, withKeys) {
const didDocumentBuilder = new DidDocumentBuilder("");
const recipientKeyIdMapping = {};
const keys = [];
let keyIndex = 1;
services.forEach((service, index) => {
const recipientKeys = service.recipientKeys.map((recipientKey) => {
if (recipientKeyIdMapping[recipientKey.fingerprint]) return recipientKeyIdMapping[recipientKey.fingerprint];
const x25519Key = PublicJwk.fromPublicKey({
crv: "X25519",
kty: "OKP",
publicKey: convertPublicKeyToX25519(recipientKey.publicKey.publicKey)
});
const ed25519RelativeVerificationMethodId = `#key-${keyIndex++}`;
const ed25519VerificationMethod = getEd25519VerificationKey2018({
id: ed25519RelativeVerificationMethodId,
publicJwk: recipientKey,
controller: "#id"
});
const x25519RelativeVerificationMethodId = `#key-${keyIndex++}`;
const x25519VerificationMethod = getX25519KeyAgreementKey2019({
id: x25519RelativeVerificationMethodId,
publicJwk: x25519Key,
controller: "#id"
});
recipientKeyIdMapping[recipientKey.fingerprint] = ed25519VerificationMethod.id;
if (withKeys) {
keys.push({
didDocumentRelativeKeyId: ed25519RelativeVerificationMethodId,
kmsKeyId: recipientKey.keyId
});
keys.push({
didDocumentRelativeKeyId: x25519RelativeVerificationMethodId,
kmsKeyId: recipientKey.keyId
});
}
didDocumentBuilder.addAuthentication(ed25519VerificationMethod).addKeyAgreement(x25519VerificationMethod);
return recipientKeyIdMapping[recipientKey.fingerprint];
});
const routingKeys = service.routingKeys?.map((key) => {
return `${new DidKey(key).did}#${key.fingerprint}`;
});
didDocumentBuilder.addService(new DidCommV1Service({
id: service.id,
priority: index,
serviceEndpoint: service.serviceEndpoint,
recipientKeys,
routingKeys
}));
});
return {
didDocument: didDocumentBuilder.build(),
keys: withKeys ? keys : void 0
};
}
//#endregion
export { createPeerDidDocumentFromServices };
//# sourceMappingURL=createPeerDidDocumentFromServices.mjs.map