UNPKG

@sphereon/ssi-sdk-ext.did-provider-key

Version:

Sphereon SSI-SDK plugin for management of did:key identifiers.

151 lines (148 loc) • 6.06 kB
"use strict"; var __create = Object.create; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __getProtoOf = Object.getPrototypeOf; var __hasOwnProp = Object.prototype.hasOwnProperty; var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( // If the importer is in node compatibility mode or this is not an ESM // file that has been converted to a CommonJS file using a Babel- // compatible transform (i.e. "__esModule" has not been set), then set // "default" to the CommonJS "module.exports" for node compatibility. isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod )); var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // src/index.ts var index_exports = {}; __export(index_exports, { SphereonKeyDidProvider: () => SphereonKeyDidProvider, getDidKeyResolver: () => getDidKeyResolver }); module.exports = __toCommonJS(index_exports); // src/SphereonKeyDidProvider.ts var import_ssi_sdk_ext = require("@sphereon/ssi-sdk-ext.key-utils"); var import_did_manager = require("@veramo/did-manager"); var import_debug = __toESM(require("debug"), 1); var import_multibase = __toESM(require("multibase"), 1); var import_multicodec = __toESM(require("multicodec"), 1); var u8a = __toESM(require("uint8arrays"), 1); var { fromString, toString } = u8a; var PROVIDER_NAME = "Sphereon Key DID Provider"; var debug = (0, import_debug.default)("did-provider-key"); var keyCodecs = { RSA: "rsa-pub", Ed25519: "ed25519-pub", X25519: "x25519-pub", Secp256k1: "secp256k1-pub", Secp256r1: "p256-pub", Bls12381G1: "bls12_381-g1-pub", Bls12381G2: "bls12_381-g2-pub" }; var SphereonKeyDidProvider = class extends import_did_manager.AbstractIdentifierProvider { static { __name(this, "SphereonKeyDidProvider"); } kms; constructor(options) { super(); this.kms = options.defaultKms; } async createIdentifier({ kms, alias, options }, context) { let codecName = options?.codecName?.toUpperCase() === "EBSI" ? import_ssi_sdk_ext.JWK_JCS_PUB_NAME : options?.codecName; const keyType = options?.type ?? options?.key?.type ?? (codecName === import_ssi_sdk_ext.JWK_JCS_PUB_NAME ? "Secp256r1" : "Secp256k1"); const key = await (0, import_ssi_sdk_ext.importProvidedOrGeneratedKey)({ providerName: PROVIDER_NAME, // @ts-ignore kms: kms ?? this.kms, alias, options: { ...options, type: keyType } }, context); let methodSpecificId; const compressedPublicKeyHex = (0, import_ssi_sdk_ext.toRawCompressedHexPublicKey)(fromString(key.publicKeyHex, "hex"), key.type); if (codecName === import_ssi_sdk_ext.JWK_JCS_PUB_NAME) { const jwk = (0, import_ssi_sdk_ext.toJwk)(key.publicKeyHex, keyType, { use: import_ssi_sdk_ext.JwkKeyUse.Signature, key, noKidThumbprint: true }); methodSpecificId = toString(import_multibase.default.encode("base58btc", import_multicodec.default.addPrefix(fromString(import_ssi_sdk_ext.JWK_JCS_PUB_PREFIX.valueOf().toString(16), "hex"), (0, import_ssi_sdk_ext.jwkJcsEncode)(jwk)))); } else if (codecName) { methodSpecificId = toString(import_multibase.default.encode("base58btc", import_multicodec.default.addPrefix(codecName, fromString(compressedPublicKeyHex, "hex")))); } else { codecName = keyCodecs[keyType]; if (codecName) { methodSpecificId = toString(import_multibase.default.encode("base58btc", import_multicodec.default.addPrefix(codecName, fromString(compressedPublicKeyHex, "hex")))).toString(); } } if (!methodSpecificId) { throw Error(`Key type ${keyType}, codec ${codecName} is not supported currently for did:key`); } const identifier = { did: `did:key:${methodSpecificId}`, controllerKeyId: key.kid, keys: [ key ], services: [] }; debug("Created", identifier.did); return identifier; } async updateIdentifier(args, context) { throw new Error("KeyDIDProvider updateIdentifier not supported yet."); } async deleteIdentifier(identifier, context) { for (const { kid } of identifier.keys) { await context.agent.keyManagerDelete({ kid }); } return true; } async addKey({ identifier, key, options }, context) { throw Error("KeyDIDProvider addKey not supported"); } async addService({ identifier, service, options }, context) { throw Error("KeyDIDProvider addService not supported"); } async removeKey(args, context) { throw Error("KeyDIDProvider removeKey not supported"); } async removeService(args, context) { throw Error("KeyDIDProvider removeService not supported"); } }; // src/KeyDidResolver.ts var import_did_resolver = require("did-resolver"); var import_ssi_sdk_ext2 = require("@sphereon/ssi-sdk-ext.did-resolver-key"); var resolveDidKey = /* @__PURE__ */ __name(async (didUrl, _parsed, _resolver, options) => { const resolver = new import_did_resolver.Resolver({ ...(0, import_ssi_sdk_ext2.getResolver)() }); return resolver.resolve(didUrl, options); }, "resolveDidKey"); function getDidKeyResolver() { return { key: resolveDidKey }; } __name(getDidKeyResolver, "getDidKeyResolver"); //# sourceMappingURL=index.cjs.map