@sphereon/ssi-sdk-ext.did-resolver-jwk 0.34.1-fix.79 → 0.34.1-next.278
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +12 -12
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +12 -12
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
package/dist/index.cjs
CHANGED
|
@@ -48,26 +48,26 @@ var import_ssi_types = require("@sphereon/ssi-types");
|
|
|
48
48
|
var import_base64url = __toESM(require("base64url"), 1);
|
|
49
49
|
|
|
50
50
|
// src/types/jwk-resolver-types.ts
|
|
51
|
-
var Key = /* @__PURE__ */ function(Key2) {
|
|
51
|
+
var Key = /* @__PURE__ */ (function(Key2) {
|
|
52
52
|
Key2["Ed25519"] = "Ed25519";
|
|
53
53
|
Key2["Secp256k1"] = "Secp256k1";
|
|
54
54
|
Key2["Secp256r1"] = "Secp256r1";
|
|
55
55
|
return Key2;
|
|
56
|
-
}({});
|
|
57
|
-
var KeyUse = /* @__PURE__ */ function(KeyUse2) {
|
|
56
|
+
})({});
|
|
57
|
+
var KeyUse = /* @__PURE__ */ (function(KeyUse2) {
|
|
58
58
|
KeyUse2["Encryption"] = "enc";
|
|
59
59
|
KeyUse2["Signature"] = "sig";
|
|
60
60
|
return KeyUse2;
|
|
61
|
-
}({});
|
|
62
|
-
var KeyType = /* @__PURE__ */ function(KeyType2) {
|
|
61
|
+
})({});
|
|
62
|
+
var KeyType = /* @__PURE__ */ (function(KeyType2) {
|
|
63
63
|
KeyType2["EC"] = "EC";
|
|
64
64
|
KeyType2["OKP"] = "OKP";
|
|
65
65
|
return KeyType2;
|
|
66
|
-
}({});
|
|
67
|
-
var VerificationType = /* @__PURE__ */ function(VerificationType2) {
|
|
66
|
+
})({});
|
|
67
|
+
var VerificationType = /* @__PURE__ */ (function(VerificationType2) {
|
|
68
68
|
VerificationType2["JsonWebKey2020"] = "JsonWebKey2020";
|
|
69
69
|
return VerificationType2;
|
|
70
|
-
}({});
|
|
70
|
+
})({});
|
|
71
71
|
var SIG_KEY_ALGS = [
|
|
72
72
|
"ES256",
|
|
73
73
|
"ES384",
|
|
@@ -85,14 +85,14 @@ var ENC_KEY_ALGS = [
|
|
|
85
85
|
"ECDH_ES_A256KW",
|
|
86
86
|
"RSA_OAEP_256"
|
|
87
87
|
];
|
|
88
|
-
var VocabType = /* @__PURE__ */ function(VocabType2) {
|
|
88
|
+
var VocabType = /* @__PURE__ */ (function(VocabType2) {
|
|
89
89
|
VocabType2["Jose"] = "https://www.iana.org/assignments/jose#";
|
|
90
90
|
return VocabType2;
|
|
91
|
-
}({});
|
|
92
|
-
var ContextType = /* @__PURE__ */ function(ContextType2) {
|
|
91
|
+
})({});
|
|
92
|
+
var ContextType = /* @__PURE__ */ (function(ContextType2) {
|
|
93
93
|
ContextType2["DidDocument"] = "https://www.w3.org/ns/did/v1";
|
|
94
94
|
return ContextType2;
|
|
95
|
-
}({});
|
|
95
|
+
})({});
|
|
96
96
|
|
|
97
97
|
// src/jwk-did-resolver.ts
|
|
98
98
|
var resolveDidJwk = /* @__PURE__ */ __name(async (didUrl, options) => {
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/jwk-did-resolver.ts","../src/types/jwk-resolver-types.ts"],"sourcesContent":["/**\n * Provides `did:jwk` {@link @veramo/did-provider-jwk#JwkDIDProvider | identifier provider }\n * for the {@link @veramo/did-manager#DIDManager}\n *\n * @packageDocumentation\n */\nexport { getDidJwkResolver } from './jwk-did-resolver'\nexport * from './types/jwk-resolver-types'\n","import { IParsedDID, parseDid } from '@sphereon/ssi-types'\nimport base64url from 'base64url'\nimport { DIDResolutionOptions, DIDResolutionResult, DIDResolver, JsonWebKey } from 'did-resolver'\nimport { ContextType, ENC_KEY_ALGS, KeyUse, SIG_KEY_ALGS, VerificationType, VocabType } from './types/jwk-resolver-types'\n\nexport const resolveDidJwk: DIDResolver = async (didUrl: string, options?: DIDResolutionOptions): Promise<DIDResolutionResult> => {\n return resolve(didUrl, options)\n}\n\nconst resolve = async (didUrl: string, _options?: DIDResolutionOptions): Promise<DIDResolutionResult> => {\n let parsedDid: IParsedDID\n try {\n parsedDid = parseDid(didUrl)\n } catch (error: unknown) {\n // Error from did resolution spec\n return errorResponseFrom('invalidDid')\n }\n\n if (parsedDid.method !== 'jwk') {\n // Error from did resolution spec\n return errorResponseFrom('unsupportedDidMethod')\n }\n\n let jwk: JsonWebKey\n try {\n jwk = JSON.parse(base64url.decode(parsedDid.id, 'UTF-8'))\n } catch (error: unknown) {\n // Error from did resolution spec\n return errorResponseFrom('invalidDid')\n }\n\n // We need this since DIDResolutionResult does not allow for an object in the array\n const context = [ContextType.DidDocument, { '@vocab': VocabType.Jose }] as never\n\n // We add the alg check to ensure max compatibility with implementations that do not export the use property\n const enc = (jwk.use && jwk.use === KeyUse.Encryption) || (jwk.alg && ENC_KEY_ALGS.includes(jwk.alg))\n const sig = (jwk.use && jwk.use === KeyUse.Signature) || (jwk.alg && SIG_KEY_ALGS.includes(jwk.alg))\n\n const didResolution: DIDResolutionResult = {\n didResolutionMetadata: {\n contentType: 'application/did+ld+json',\n pattern: '^(did:jwk:.+)$',\n did: {\n didString: parsedDid.did,\n methodSpecificId: parsedDid.id,\n method: 'jwk',\n },\n },\n\n didDocument: {\n '@context': context,\n id: parsedDid.did,\n verificationMethod: [\n {\n id: `${parsedDid.did}#0`,\n type: VerificationType.JsonWebKey2020,\n controller: parsedDid.did,\n publicKeyJwk: jwk,\n },\n ],\n ...(sig && { assertionMethod: [`${parsedDid.did}#0`] }),\n ...(sig && { authentication: [`${parsedDid.did}#0`] }),\n ...(sig && { capabilityInvocation: [`${parsedDid.did}#0`] }),\n ...(sig && { capabilityDelegation: [`${parsedDid.did}#0`] }),\n ...(enc && { keyAgreement: [`${parsedDid.did}#0`] }),\n },\n didDocumentMetadata: {},\n }\n\n return didResolution\n}\n\nconst errorResponseFrom = async (error: string): Promise<DIDResolutionResult> => {\n return {\n didResolutionMetadata: {\n error,\n },\n didDocument: null,\n didDocumentMetadata: {},\n }\n}\n\nexport function getDidJwkResolver() {\n return { jwk: resolveDidJwk }\n}\n","export enum Key {\n Ed25519 = 'Ed25519',\n Secp256k1 = 'Secp256k1',\n Secp256r1 = 'Secp256r1',\n}\n\nexport enum KeyUse {\n Encryption = 'enc',\n Signature = 'sig',\n}\n\nexport enum KeyType {\n EC = 'EC',\n OKP = 'OKP',\n}\n\nexport enum VerificationType {\n JsonWebKey2020 = 'JsonWebKey2020',\n}\nexport const SIG_KEY_ALGS = ['ES256', 'ES384', 'ES512', 'EdDSA', 'ES256K', 'Ed25519', 'Secp256k1', 'Secp256r1', 'Bls12381G1', 'Bls12381G2']\nexport const ENC_KEY_ALGS = ['X25519', 'ECDH_ES_A256KW', 'RSA_OAEP_256']\n\n// https://datatracker.ietf.org/doc/html/rfc8812#section-3\n// https://datatracker.ietf.org/doc/html/rfc8812#section-4\nexport enum VocabType {\n Jose = 'https://www.iana.org/assignments/jose#',\n}\n\nexport enum ContextType {\n DidDocument = 'https://www.w3.org/ns/did/v1',\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;;;;;;ACAA,uBAAqC;AACrC,uBAAsB;;;ACDf,IAAKA,MAAAA,
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/jwk-did-resolver.ts","../src/types/jwk-resolver-types.ts"],"sourcesContent":["/**\n * Provides `did:jwk` {@link @veramo/did-provider-jwk#JwkDIDProvider | identifier provider }\n * for the {@link @veramo/did-manager#DIDManager}\n *\n * @packageDocumentation\n */\nexport { getDidJwkResolver } from './jwk-did-resolver'\nexport * from './types/jwk-resolver-types'\n","import { IParsedDID, parseDid } from '@sphereon/ssi-types'\nimport base64url from 'base64url'\nimport { DIDResolutionOptions, DIDResolutionResult, DIDResolver, JsonWebKey } from 'did-resolver'\nimport { ContextType, ENC_KEY_ALGS, KeyUse, SIG_KEY_ALGS, VerificationType, VocabType } from './types/jwk-resolver-types'\n\nexport const resolveDidJwk: DIDResolver = async (didUrl: string, options?: DIDResolutionOptions): Promise<DIDResolutionResult> => {\n return resolve(didUrl, options)\n}\n\nconst resolve = async (didUrl: string, _options?: DIDResolutionOptions): Promise<DIDResolutionResult> => {\n let parsedDid: IParsedDID\n try {\n parsedDid = parseDid(didUrl)\n } catch (error: unknown) {\n // Error from did resolution spec\n return errorResponseFrom('invalidDid')\n }\n\n if (parsedDid.method !== 'jwk') {\n // Error from did resolution spec\n return errorResponseFrom('unsupportedDidMethod')\n }\n\n let jwk: JsonWebKey\n try {\n jwk = JSON.parse(base64url.decode(parsedDid.id, 'UTF-8'))\n } catch (error: unknown) {\n // Error from did resolution spec\n return errorResponseFrom('invalidDid')\n }\n\n // We need this since DIDResolutionResult does not allow for an object in the array\n const context = [ContextType.DidDocument, { '@vocab': VocabType.Jose }] as never\n\n // We add the alg check to ensure max compatibility with implementations that do not export the use property\n const enc = (jwk.use && jwk.use === KeyUse.Encryption) || (jwk.alg && ENC_KEY_ALGS.includes(jwk.alg))\n const sig = (jwk.use && jwk.use === KeyUse.Signature) || (jwk.alg && SIG_KEY_ALGS.includes(jwk.alg))\n\n const didResolution: DIDResolutionResult = {\n didResolutionMetadata: {\n contentType: 'application/did+ld+json',\n pattern: '^(did:jwk:.+)$',\n did: {\n didString: parsedDid.did,\n methodSpecificId: parsedDid.id,\n method: 'jwk',\n },\n },\n\n didDocument: {\n '@context': context,\n id: parsedDid.did,\n verificationMethod: [\n {\n id: `${parsedDid.did}#0`,\n type: VerificationType.JsonWebKey2020,\n controller: parsedDid.did,\n publicKeyJwk: jwk,\n },\n ],\n ...(sig && { assertionMethod: [`${parsedDid.did}#0`] }),\n ...(sig && { authentication: [`${parsedDid.did}#0`] }),\n ...(sig && { capabilityInvocation: [`${parsedDid.did}#0`] }),\n ...(sig && { capabilityDelegation: [`${parsedDid.did}#0`] }),\n ...(enc && { keyAgreement: [`${parsedDid.did}#0`] }),\n },\n didDocumentMetadata: {},\n }\n\n return didResolution\n}\n\nconst errorResponseFrom = async (error: string): Promise<DIDResolutionResult> => {\n return {\n didResolutionMetadata: {\n error,\n },\n didDocument: null,\n didDocumentMetadata: {},\n }\n}\n\nexport function getDidJwkResolver() {\n return { jwk: resolveDidJwk }\n}\n","export enum Key {\n Ed25519 = 'Ed25519',\n Secp256k1 = 'Secp256k1',\n Secp256r1 = 'Secp256r1',\n}\n\nexport enum KeyUse {\n Encryption = 'enc',\n Signature = 'sig',\n}\n\nexport enum KeyType {\n EC = 'EC',\n OKP = 'OKP',\n}\n\nexport enum VerificationType {\n JsonWebKey2020 = 'JsonWebKey2020',\n}\nexport const SIG_KEY_ALGS = ['ES256', 'ES384', 'ES512', 'EdDSA', 'ES256K', 'Ed25519', 'Secp256k1', 'Secp256r1', 'Bls12381G1', 'Bls12381G2']\nexport const ENC_KEY_ALGS = ['X25519', 'ECDH_ES_A256KW', 'RSA_OAEP_256']\n\n// https://datatracker.ietf.org/doc/html/rfc8812#section-3\n// https://datatracker.ietf.org/doc/html/rfc8812#section-4\nexport enum VocabType {\n Jose = 'https://www.iana.org/assignments/jose#',\n}\n\nexport enum ContextType {\n DidDocument = 'https://www.w3.org/ns/did/v1',\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;;;;;;ACAA,uBAAqC;AACrC,uBAAsB;;;ACDf,IAAKA,MAAAA,0BAAAA,MAAAA;;;;SAAAA;;AAML,IAAKC,SAAAA,0BAAAA,SAAAA;;;SAAAA;;AAKL,IAAKC,UAAAA,0BAAAA,UAAAA;;;SAAAA;;AAKL,IAAKC,mBAAAA,0BAAAA,mBAAAA;;SAAAA;;AAGL,IAAMC,eAAe;EAAC;EAAS;EAAS;EAAS;EAAS;EAAU;EAAW;EAAa;EAAa;EAAc;;AACvH,IAAMC,eAAe;EAAC;EAAU;EAAkB;;AAIlD,IAAKC,YAAAA,0BAAAA,YAAAA;;SAAAA;;AAIL,IAAKC,cAAAA,0BAAAA,cAAAA;;SAAAA;;;;ADvBL,IAAMC,gBAA6B,8BAAOC,QAAgBC,YAAAA;AAC/D,SAAOC,QAAQF,QAAQC,OAAAA;AACzB,GAF0C;AAI1C,IAAMC,UAAU,8BAAOF,QAAgBG,aAAAA;AACrC,MAAIC;AACJ,MAAI;AACFA,oBAAYC,2BAASL,MAAAA;EACvB,SAASM,OAAgB;AAEvB,WAAOC,kBAAkB,YAAA;EAC3B;AAEA,MAAIH,UAAUI,WAAW,OAAO;AAE9B,WAAOD,kBAAkB,sBAAA;EAC3B;AAEA,MAAIE;AACJ,MAAI;AACFA,UAAMC,KAAKC,MAAMC,iBAAAA,QAAUC,OAAOT,UAAUU,IAAI,OAAA,CAAA;EAClD,SAASR,OAAgB;AAEvB,WAAOC,kBAAkB,YAAA;EAC3B;AAGA,QAAMQ,UAAU;IAACC,YAAYC;IAAa;MAAE,UAAUC,UAAUC;IAAK;;AAGrE,QAAMC,MAAOX,IAAIY,OAAOZ,IAAIY,QAAQC,OAAOC,cAAgBd,IAAIe,OAAOC,aAAaC,SAASjB,IAAIe,GAAG;AACnG,QAAMG,MAAOlB,IAAIY,OAAOZ,IAAIY,QAAQC,OAAOM,aAAenB,IAAIe,OAAOK,aAAaH,SAASjB,IAAIe,GAAG;AAElG,QAAMM,gBAAqC;IACzCC,uBAAuB;MACrBC,aAAa;MACbC,SAAS;MACTC,KAAK;QACHC,WAAW/B,UAAU8B;QACrBE,kBAAkBhC,UAAUU;QAC5BN,QAAQ;MACV;IACF;IAEA6B,aAAa;MACX,YAAYtB;MACZD,IAAIV,UAAU8B;MACdI,oBAAoB;QAClB;UACExB,IAAI,GAAGV,UAAU8B,GAAG;UACpBK,MAAMC,iBAAiBC;UACvBC,YAAYtC,UAAU8B;UACtBS,cAAclC;QAChB;;MAEF,GAAIkB,OAAO;QAAEiB,iBAAiB;UAAC,GAAGxC,UAAU8B,GAAG;;MAAM;MACrD,GAAIP,OAAO;QAAEkB,gBAAgB;UAAC,GAAGzC,UAAU8B,GAAG;;MAAM;MACpD,GAAIP,OAAO;QAAEmB,sBAAsB;UAAC,GAAG1C,UAAU8B,GAAG;;MAAM;MAC1D,GAAIP,OAAO;QAAEoB,sBAAsB;UAAC,GAAG3C,UAAU8B,GAAG;;MAAM;MAC1D,GAAId,OAAO;QAAE4B,cAAc;UAAC,GAAG5C,UAAU8B,GAAG;;MAAM;IACpD;IACAe,qBAAqB,CAAC;EACxB;AAEA,SAAOnB;AACT,GA7DgB;AA+DhB,IAAMvB,oBAAoB,8BAAOD,UAAAA;AAC/B,SAAO;IACLyB,uBAAuB;MACrBzB;IACF;IACA+B,aAAa;IACbY,qBAAqB,CAAC;EACxB;AACF,GAR0B;AAUnB,SAASC,oBAAAA;AACd,SAAO;IAAEzC,KAAKV;EAAc;AAC9B;AAFgBmD;","names":["Key","KeyUse","KeyType","VerificationType","SIG_KEY_ALGS","ENC_KEY_ALGS","VocabType","ContextType","resolveDidJwk","didUrl","options","resolve","_options","parsedDid","parseDid","error","errorResponseFrom","method","jwk","JSON","parse","base64url","decode","id","context","ContextType","DidDocument","VocabType","Jose","enc","use","KeyUse","Encryption","alg","ENC_KEY_ALGS","includes","sig","Signature","SIG_KEY_ALGS","didResolution","didResolutionMetadata","contentType","pattern","did","didString","methodSpecificId","didDocument","verificationMethod","type","VerificationType","JsonWebKey2020","controller","publicKeyJwk","assertionMethod","authentication","capabilityInvocation","capabilityDelegation","keyAgreement","didDocumentMetadata","getDidJwkResolver"]}
|
package/dist/index.js
CHANGED
|
@@ -6,26 +6,26 @@ import { parseDid } from "@sphereon/ssi-types";
|
|
|
6
6
|
import base64url from "base64url";
|
|
7
7
|
|
|
8
8
|
// src/types/jwk-resolver-types.ts
|
|
9
|
-
var Key = /* @__PURE__ */ function(Key2) {
|
|
9
|
+
var Key = /* @__PURE__ */ (function(Key2) {
|
|
10
10
|
Key2["Ed25519"] = "Ed25519";
|
|
11
11
|
Key2["Secp256k1"] = "Secp256k1";
|
|
12
12
|
Key2["Secp256r1"] = "Secp256r1";
|
|
13
13
|
return Key2;
|
|
14
|
-
}({});
|
|
15
|
-
var KeyUse = /* @__PURE__ */ function(KeyUse2) {
|
|
14
|
+
})({});
|
|
15
|
+
var KeyUse = /* @__PURE__ */ (function(KeyUse2) {
|
|
16
16
|
KeyUse2["Encryption"] = "enc";
|
|
17
17
|
KeyUse2["Signature"] = "sig";
|
|
18
18
|
return KeyUse2;
|
|
19
|
-
}({});
|
|
20
|
-
var KeyType = /* @__PURE__ */ function(KeyType2) {
|
|
19
|
+
})({});
|
|
20
|
+
var KeyType = /* @__PURE__ */ (function(KeyType2) {
|
|
21
21
|
KeyType2["EC"] = "EC";
|
|
22
22
|
KeyType2["OKP"] = "OKP";
|
|
23
23
|
return KeyType2;
|
|
24
|
-
}({});
|
|
25
|
-
var VerificationType = /* @__PURE__ */ function(VerificationType2) {
|
|
24
|
+
})({});
|
|
25
|
+
var VerificationType = /* @__PURE__ */ (function(VerificationType2) {
|
|
26
26
|
VerificationType2["JsonWebKey2020"] = "JsonWebKey2020";
|
|
27
27
|
return VerificationType2;
|
|
28
|
-
}({});
|
|
28
|
+
})({});
|
|
29
29
|
var SIG_KEY_ALGS = [
|
|
30
30
|
"ES256",
|
|
31
31
|
"ES384",
|
|
@@ -43,14 +43,14 @@ var ENC_KEY_ALGS = [
|
|
|
43
43
|
"ECDH_ES_A256KW",
|
|
44
44
|
"RSA_OAEP_256"
|
|
45
45
|
];
|
|
46
|
-
var VocabType = /* @__PURE__ */ function(VocabType2) {
|
|
46
|
+
var VocabType = /* @__PURE__ */ (function(VocabType2) {
|
|
47
47
|
VocabType2["Jose"] = "https://www.iana.org/assignments/jose#";
|
|
48
48
|
return VocabType2;
|
|
49
|
-
}({});
|
|
50
|
-
var ContextType = /* @__PURE__ */ function(ContextType2) {
|
|
49
|
+
})({});
|
|
50
|
+
var ContextType = /* @__PURE__ */ (function(ContextType2) {
|
|
51
51
|
ContextType2["DidDocument"] = "https://www.w3.org/ns/did/v1";
|
|
52
52
|
return ContextType2;
|
|
53
|
-
}({});
|
|
53
|
+
})({});
|
|
54
54
|
|
|
55
55
|
// src/jwk-did-resolver.ts
|
|
56
56
|
var resolveDidJwk = /* @__PURE__ */ __name(async (didUrl, options) => {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/jwk-did-resolver.ts","../src/types/jwk-resolver-types.ts"],"sourcesContent":["import { IParsedDID, parseDid } from '@sphereon/ssi-types'\nimport base64url from 'base64url'\nimport { DIDResolutionOptions, DIDResolutionResult, DIDResolver, JsonWebKey } from 'did-resolver'\nimport { ContextType, ENC_KEY_ALGS, KeyUse, SIG_KEY_ALGS, VerificationType, VocabType } from './types/jwk-resolver-types'\n\nexport const resolveDidJwk: DIDResolver = async (didUrl: string, options?: DIDResolutionOptions): Promise<DIDResolutionResult> => {\n return resolve(didUrl, options)\n}\n\nconst resolve = async (didUrl: string, _options?: DIDResolutionOptions): Promise<DIDResolutionResult> => {\n let parsedDid: IParsedDID\n try {\n parsedDid = parseDid(didUrl)\n } catch (error: unknown) {\n // Error from did resolution spec\n return errorResponseFrom('invalidDid')\n }\n\n if (parsedDid.method !== 'jwk') {\n // Error from did resolution spec\n return errorResponseFrom('unsupportedDidMethod')\n }\n\n let jwk: JsonWebKey\n try {\n jwk = JSON.parse(base64url.decode(parsedDid.id, 'UTF-8'))\n } catch (error: unknown) {\n // Error from did resolution spec\n return errorResponseFrom('invalidDid')\n }\n\n // We need this since DIDResolutionResult does not allow for an object in the array\n const context = [ContextType.DidDocument, { '@vocab': VocabType.Jose }] as never\n\n // We add the alg check to ensure max compatibility with implementations that do not export the use property\n const enc = (jwk.use && jwk.use === KeyUse.Encryption) || (jwk.alg && ENC_KEY_ALGS.includes(jwk.alg))\n const sig = (jwk.use && jwk.use === KeyUse.Signature) || (jwk.alg && SIG_KEY_ALGS.includes(jwk.alg))\n\n const didResolution: DIDResolutionResult = {\n didResolutionMetadata: {\n contentType: 'application/did+ld+json',\n pattern: '^(did:jwk:.+)$',\n did: {\n didString: parsedDid.did,\n methodSpecificId: parsedDid.id,\n method: 'jwk',\n },\n },\n\n didDocument: {\n '@context': context,\n id: parsedDid.did,\n verificationMethod: [\n {\n id: `${parsedDid.did}#0`,\n type: VerificationType.JsonWebKey2020,\n controller: parsedDid.did,\n publicKeyJwk: jwk,\n },\n ],\n ...(sig && { assertionMethod: [`${parsedDid.did}#0`] }),\n ...(sig && { authentication: [`${parsedDid.did}#0`] }),\n ...(sig && { capabilityInvocation: [`${parsedDid.did}#0`] }),\n ...(sig && { capabilityDelegation: [`${parsedDid.did}#0`] }),\n ...(enc && { keyAgreement: [`${parsedDid.did}#0`] }),\n },\n didDocumentMetadata: {},\n }\n\n return didResolution\n}\n\nconst errorResponseFrom = async (error: string): Promise<DIDResolutionResult> => {\n return {\n didResolutionMetadata: {\n error,\n },\n didDocument: null,\n didDocumentMetadata: {},\n }\n}\n\nexport function getDidJwkResolver() {\n return { jwk: resolveDidJwk }\n}\n","export enum Key {\n Ed25519 = 'Ed25519',\n Secp256k1 = 'Secp256k1',\n Secp256r1 = 'Secp256r1',\n}\n\nexport enum KeyUse {\n Encryption = 'enc',\n Signature = 'sig',\n}\n\nexport enum KeyType {\n EC = 'EC',\n OKP = 'OKP',\n}\n\nexport enum VerificationType {\n JsonWebKey2020 = 'JsonWebKey2020',\n}\nexport const SIG_KEY_ALGS = ['ES256', 'ES384', 'ES512', 'EdDSA', 'ES256K', 'Ed25519', 'Secp256k1', 'Secp256r1', 'Bls12381G1', 'Bls12381G2']\nexport const ENC_KEY_ALGS = ['X25519', 'ECDH_ES_A256KW', 'RSA_OAEP_256']\n\n// https://datatracker.ietf.org/doc/html/rfc8812#section-3\n// https://datatracker.ietf.org/doc/html/rfc8812#section-4\nexport enum VocabType {\n Jose = 'https://www.iana.org/assignments/jose#',\n}\n\nexport enum ContextType {\n DidDocument = 'https://www.w3.org/ns/did/v1',\n}\n"],"mappings":";;;;AAAA,SAAqBA,gBAAgB;AACrC,OAAOC,eAAe;;;ACDf,IAAKC,MAAAA,
|
|
1
|
+
{"version":3,"sources":["../src/jwk-did-resolver.ts","../src/types/jwk-resolver-types.ts"],"sourcesContent":["import { IParsedDID, parseDid } from '@sphereon/ssi-types'\nimport base64url from 'base64url'\nimport { DIDResolutionOptions, DIDResolutionResult, DIDResolver, JsonWebKey } from 'did-resolver'\nimport { ContextType, ENC_KEY_ALGS, KeyUse, SIG_KEY_ALGS, VerificationType, VocabType } from './types/jwk-resolver-types'\n\nexport const resolveDidJwk: DIDResolver = async (didUrl: string, options?: DIDResolutionOptions): Promise<DIDResolutionResult> => {\n return resolve(didUrl, options)\n}\n\nconst resolve = async (didUrl: string, _options?: DIDResolutionOptions): Promise<DIDResolutionResult> => {\n let parsedDid: IParsedDID\n try {\n parsedDid = parseDid(didUrl)\n } catch (error: unknown) {\n // Error from did resolution spec\n return errorResponseFrom('invalidDid')\n }\n\n if (parsedDid.method !== 'jwk') {\n // Error from did resolution spec\n return errorResponseFrom('unsupportedDidMethod')\n }\n\n let jwk: JsonWebKey\n try {\n jwk = JSON.parse(base64url.decode(parsedDid.id, 'UTF-8'))\n } catch (error: unknown) {\n // Error from did resolution spec\n return errorResponseFrom('invalidDid')\n }\n\n // We need this since DIDResolutionResult does not allow for an object in the array\n const context = [ContextType.DidDocument, { '@vocab': VocabType.Jose }] as never\n\n // We add the alg check to ensure max compatibility with implementations that do not export the use property\n const enc = (jwk.use && jwk.use === KeyUse.Encryption) || (jwk.alg && ENC_KEY_ALGS.includes(jwk.alg))\n const sig = (jwk.use && jwk.use === KeyUse.Signature) || (jwk.alg && SIG_KEY_ALGS.includes(jwk.alg))\n\n const didResolution: DIDResolutionResult = {\n didResolutionMetadata: {\n contentType: 'application/did+ld+json',\n pattern: '^(did:jwk:.+)$',\n did: {\n didString: parsedDid.did,\n methodSpecificId: parsedDid.id,\n method: 'jwk',\n },\n },\n\n didDocument: {\n '@context': context,\n id: parsedDid.did,\n verificationMethod: [\n {\n id: `${parsedDid.did}#0`,\n type: VerificationType.JsonWebKey2020,\n controller: parsedDid.did,\n publicKeyJwk: jwk,\n },\n ],\n ...(sig && { assertionMethod: [`${parsedDid.did}#0`] }),\n ...(sig && { authentication: [`${parsedDid.did}#0`] }),\n ...(sig && { capabilityInvocation: [`${parsedDid.did}#0`] }),\n ...(sig && { capabilityDelegation: [`${parsedDid.did}#0`] }),\n ...(enc && { keyAgreement: [`${parsedDid.did}#0`] }),\n },\n didDocumentMetadata: {},\n }\n\n return didResolution\n}\n\nconst errorResponseFrom = async (error: string): Promise<DIDResolutionResult> => {\n return {\n didResolutionMetadata: {\n error,\n },\n didDocument: null,\n didDocumentMetadata: {},\n }\n}\n\nexport function getDidJwkResolver() {\n return { jwk: resolveDidJwk }\n}\n","export enum Key {\n Ed25519 = 'Ed25519',\n Secp256k1 = 'Secp256k1',\n Secp256r1 = 'Secp256r1',\n}\n\nexport enum KeyUse {\n Encryption = 'enc',\n Signature = 'sig',\n}\n\nexport enum KeyType {\n EC = 'EC',\n OKP = 'OKP',\n}\n\nexport enum VerificationType {\n JsonWebKey2020 = 'JsonWebKey2020',\n}\nexport const SIG_KEY_ALGS = ['ES256', 'ES384', 'ES512', 'EdDSA', 'ES256K', 'Ed25519', 'Secp256k1', 'Secp256r1', 'Bls12381G1', 'Bls12381G2']\nexport const ENC_KEY_ALGS = ['X25519', 'ECDH_ES_A256KW', 'RSA_OAEP_256']\n\n// https://datatracker.ietf.org/doc/html/rfc8812#section-3\n// https://datatracker.ietf.org/doc/html/rfc8812#section-4\nexport enum VocabType {\n Jose = 'https://www.iana.org/assignments/jose#',\n}\n\nexport enum ContextType {\n DidDocument = 'https://www.w3.org/ns/did/v1',\n}\n"],"mappings":";;;;AAAA,SAAqBA,gBAAgB;AACrC,OAAOC,eAAe;;;ACDf,IAAKC,MAAAA,0BAAAA,MAAAA;;;;SAAAA;;AAML,IAAKC,SAAAA,0BAAAA,SAAAA;;;SAAAA;;AAKL,IAAKC,UAAAA,0BAAAA,UAAAA;;;SAAAA;;AAKL,IAAKC,mBAAAA,0BAAAA,mBAAAA;;SAAAA;;AAGL,IAAMC,eAAe;EAAC;EAAS;EAAS;EAAS;EAAS;EAAU;EAAW;EAAa;EAAa;EAAc;;AACvH,IAAMC,eAAe;EAAC;EAAU;EAAkB;;AAIlD,IAAKC,YAAAA,0BAAAA,YAAAA;;SAAAA;;AAIL,IAAKC,cAAAA,0BAAAA,cAAAA;;SAAAA;;;;ADvBL,IAAMC,gBAA6B,8BAAOC,QAAgBC,YAAAA;AAC/D,SAAOC,QAAQF,QAAQC,OAAAA;AACzB,GAF0C;AAI1C,IAAMC,UAAU,8BAAOF,QAAgBG,aAAAA;AACrC,MAAIC;AACJ,MAAI;AACFA,gBAAYC,SAASL,MAAAA;EACvB,SAASM,OAAgB;AAEvB,WAAOC,kBAAkB,YAAA;EAC3B;AAEA,MAAIH,UAAUI,WAAW,OAAO;AAE9B,WAAOD,kBAAkB,sBAAA;EAC3B;AAEA,MAAIE;AACJ,MAAI;AACFA,UAAMC,KAAKC,MAAMC,UAAUC,OAAOT,UAAUU,IAAI,OAAA,CAAA;EAClD,SAASR,OAAgB;AAEvB,WAAOC,kBAAkB,YAAA;EAC3B;AAGA,QAAMQ,UAAU;IAACC,YAAYC;IAAa;MAAE,UAAUC,UAAUC;IAAK;;AAGrE,QAAMC,MAAOX,IAAIY,OAAOZ,IAAIY,QAAQC,OAAOC,cAAgBd,IAAIe,OAAOC,aAAaC,SAASjB,IAAIe,GAAG;AACnG,QAAMG,MAAOlB,IAAIY,OAAOZ,IAAIY,QAAQC,OAAOM,aAAenB,IAAIe,OAAOK,aAAaH,SAASjB,IAAIe,GAAG;AAElG,QAAMM,gBAAqC;IACzCC,uBAAuB;MACrBC,aAAa;MACbC,SAAS;MACTC,KAAK;QACHC,WAAW/B,UAAU8B;QACrBE,kBAAkBhC,UAAUU;QAC5BN,QAAQ;MACV;IACF;IAEA6B,aAAa;MACX,YAAYtB;MACZD,IAAIV,UAAU8B;MACdI,oBAAoB;QAClB;UACExB,IAAI,GAAGV,UAAU8B,GAAG;UACpBK,MAAMC,iBAAiBC;UACvBC,YAAYtC,UAAU8B;UACtBS,cAAclC;QAChB;;MAEF,GAAIkB,OAAO;QAAEiB,iBAAiB;UAAC,GAAGxC,UAAU8B,GAAG;;MAAM;MACrD,GAAIP,OAAO;QAAEkB,gBAAgB;UAAC,GAAGzC,UAAU8B,GAAG;;MAAM;MACpD,GAAIP,OAAO;QAAEmB,sBAAsB;UAAC,GAAG1C,UAAU8B,GAAG;;MAAM;MAC1D,GAAIP,OAAO;QAAEoB,sBAAsB;UAAC,GAAG3C,UAAU8B,GAAG;;MAAM;MAC1D,GAAId,OAAO;QAAE4B,cAAc;UAAC,GAAG5C,UAAU8B,GAAG;;MAAM;IACpD;IACAe,qBAAqB,CAAC;EACxB;AAEA,SAAOnB;AACT,GA7DgB;AA+DhB,IAAMvB,oBAAoB,8BAAOD,UAAAA;AAC/B,SAAO;IACLyB,uBAAuB;MACrBzB;IACF;IACA+B,aAAa;IACbY,qBAAqB,CAAC;EACxB;AACF,GAR0B;AAUnB,SAASC,oBAAAA;AACd,SAAO;IAAEzC,KAAKV;EAAc;AAC9B;AAFgBmD;","names":["parseDid","base64url","Key","KeyUse","KeyType","VerificationType","SIG_KEY_ALGS","ENC_KEY_ALGS","VocabType","ContextType","resolveDidJwk","didUrl","options","resolve","_options","parsedDid","parseDid","error","errorResponseFrom","method","jwk","JSON","parse","base64url","decode","id","context","ContextType","DidDocument","VocabType","Jose","enc","use","KeyUse","Encryption","alg","ENC_KEY_ALGS","includes","sig","Signature","SIG_KEY_ALGS","didResolution","didResolutionMetadata","contentType","pattern","did","didString","methodSpecificId","didDocument","verificationMethod","type","VerificationType","JsonWebKey2020","controller","publicKeyJwk","assertionMethod","authentication","capabilityInvocation","capabilityDelegation","keyAgreement","didDocumentMetadata","getDidJwkResolver"]}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sphereon/ssi-sdk-ext.did-resolver-jwk",
|
|
3
3
|
"description": "DIF resolver for resolution of did:jwk identifiers.",
|
|
4
|
-
"version": "0.34.1-
|
|
4
|
+
"version": "0.34.1-next.278+0eacb25b",
|
|
5
5
|
"source": "./src/index.ts",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"main": "./dist/index.cjs",
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"build": "tsup --config ../../tsup.config.ts --tsconfig ../../tsconfig.tsup.json"
|
|
23
23
|
},
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@sphereon/ssi-types": "0.34.1-
|
|
25
|
+
"@sphereon/ssi-types": "0.34.1-next.278+0eacb25b",
|
|
26
26
|
"base64url": "^3.0.1",
|
|
27
27
|
"debug": "^4.3.4",
|
|
28
28
|
"did-resolver": "^4.1.0",
|
|
@@ -52,5 +52,5 @@
|
|
|
52
52
|
"DID",
|
|
53
53
|
"Veramo"
|
|
54
54
|
],
|
|
55
|
-
"gitHead": "
|
|
55
|
+
"gitHead": "0eacb25b6e38cef88d04d696d84e3c2ebcf89ede"
|
|
56
56
|
}
|