@sphereon/ssi-sdk.presentation-exchange 0.26.0 → 0.26.1-next.106

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.
@@ -5,6 +5,7 @@ import { Format } from '@sphereon/pex-models';
5
5
  export declare function createPEXPresentationSignCallback(args: {
6
6
  idOpts: IIdentifierOpts;
7
7
  fetchRemoteContexts?: boolean;
8
+ skipDidResolution?: boolean;
8
9
  format?: Format | ProofFormat;
9
10
  domain?: string;
10
11
  challenge?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"functions.d.ts","sourceRoot":"","sources":["../src/functions.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6E,eAAe,EAAE,MAAM,iCAAiC,CAAA;AAC5I,OAAO,EAAE,4BAA4B,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAA;AAE9F,OAAO,EAAuB,WAAW,EAAE,MAAM,cAAc,CAAA;AAE/D,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAE7C,wBAAsB,iCAAiC,CACrD,IAAI,EAAE;IACJ,MAAM,EAAE,eAAe,CAAA;IACvB,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B,MAAM,CAAC,EAAE,MAAM,GAAG,WAAW,CAAA;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,EACD,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,4BAA4B,CAAC,CA0HvC"}
1
+ {"version":3,"file":"functions.d.ts","sourceRoot":"","sources":["../src/functions.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6E,eAAe,EAAE,MAAM,iCAAiC,CAAA;AAE5I,OAAO,EAAE,4BAA4B,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAA;AAE9F,OAAO,EAA6B,WAAW,EAAE,MAAM,cAAc,CAAA;AAErE,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAE7C,wBAAsB,iCAAiC,CACrD,IAAI,EAAE;IACJ,MAAM,EAAE,eAAe,CAAA;IACvB,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,MAAM,CAAC,EAAE,MAAM,GAAG,WAAW,CAAA;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,EACD,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,4BAA4B,CAAC,CA4IvC"}
package/dist/functions.js CHANGED
@@ -32,7 +32,7 @@ function createPEXPresentationSignCallback(args, context) {
32
32
  return proofFormat;
33
33
  }
34
34
  return (_a) => __awaiter(this, [_a], void 0, function* ({ presentation, domain, presentationDefinition, format, challenge, }) {
35
- var _b, _c, _d;
35
+ var _b, _c, _d, _e, _f, _g;
36
36
  const idOpts = args.idOpts;
37
37
  const id = yield (0, ssi_sdk_ext_did_utils_1.getIdentifier)(idOpts, context);
38
38
  if (typeof idOpts.identifier === 'string') {
@@ -41,24 +41,42 @@ function createPEXPresentationSignCallback(args, context) {
41
41
  if (!presentation.holder) {
42
42
  presentation.holder = id.did;
43
43
  }
44
- const key = yield (0, ssi_sdk_ext_did_utils_1.getKey)(id, 'authentication', context, idOpts.kid);
45
- const didResolution = yield (0, ssi_sdk_ext_did_utils_1.getAgentResolver)(context).resolve(idOpts.identifier.did);
46
- const vms = yield (0, ssi_sdk_ext_did_utils_1.dereferenceDidKeysWithJwkSupport)(didResolution.didDocument, (_b = idOpts.verificationMethodSection) !== null && _b !== void 0 ? _b : 'authentication', context);
47
- const vm = vms.find((vm) => vm.publicKeyHex === key.publicKeyHex);
48
- if (!vm) {
49
- throw Error(`Could not resolve DID document or match signing key to did ${idOpts.identifier.did}`);
44
+ let key;
45
+ if (args.skipDidResolution) {
46
+ if (!idOpts.kid) {
47
+ key = id.keys.find((key) => { var _a, _b, _c; return ((_b = (_a = key.meta) === null || _a === void 0 ? void 0 : _a.purpose) === null || _b === void 0 ? void 0 : _b.includes((_c = idOpts.verificationMethodSection) !== null && _c !== void 0 ? _c : 'authentication')) === true; });
48
+ }
49
+ if (!key) {
50
+ key = id.keys.find((key) => { var _a; return !idOpts.kid || key.kid === idOpts.kid || ((_a = key.meta) === null || _a === void 0 ? void 0 : _a.jwkThumbprint) === idOpts.kid || `${id.did}#${key.kid}` === idOpts.kid; });
51
+ }
52
+ }
53
+ else {
54
+ key = yield (0, ssi_sdk_ext_did_utils_1.getKey)(id, 'authentication', context, idOpts.kid);
55
+ }
56
+ if (!key) {
57
+ throw Error(`Could not determine key to use ${JSON.stringify(idOpts)}`);
58
+ }
59
+ let vm = undefined;
60
+ if (args.skipDidResolution !== true) {
61
+ const didResolution = yield (0, ssi_sdk_ext_did_utils_1.getAgentResolver)(context).resolve(idOpts.identifier.did);
62
+ const vms = yield (0, ssi_sdk_ext_did_utils_1.dereferenceDidKeysWithJwkSupport)(didResolution.didDocument, (_b = idOpts.verificationMethodSection) !== null && _b !== void 0 ? _b : 'authentication', context);
63
+ vm = vms.find((vm) => vm.publicKeyHex === key.publicKeyHex);
64
+ if (!vm) {
65
+ throw Error(`Could not resolve DID document or match signing key to did ${idOpts.identifier.did}`);
66
+ }
50
67
  }
51
68
  const proofFormat = determineProofFormat({ format, presentationDefinition });
52
69
  let header;
53
70
  if (!presentation.holder) {
54
71
  presentation.holder = id.did;
55
72
  }
73
+ const kid = (_e = (_c = vm === null || vm === void 0 ? void 0 : vm.id) !== null && _c !== void 0 ? _c : (_d = key.meta) === null || _d === void 0 ? void 0 : _d.jwkThumbprint) !== null && _e !== void 0 ? _e : key.kid;
56
74
  if (proofFormat === 'jwt') {
57
75
  header = {
58
- kid: vm.id,
76
+ kid: kid.includes('#') ? kid : `${id.did}#${kid}`,
59
77
  };
60
78
  if (presentation.verifier || !presentation.aud) {
61
- presentation.aud = Array.isArray(presentation.verifier) ? presentation.verifier : (_d = (_c = presentation.verifier) !== null && _c !== void 0 ? _c : domain) !== null && _d !== void 0 ? _d : args.domain;
79
+ presentation.aud = Array.isArray(presentation.verifier) ? presentation.verifier : (_g = (_f = presentation.verifier) !== null && _f !== void 0 ? _f : domain) !== null && _g !== void 0 ? _g : args.domain;
62
80
  delete presentation.verifier;
63
81
  }
64
82
  if (!presentation.nbf) {
@@ -69,7 +87,7 @@ function createPEXPresentationSignCallback(args, context) {
69
87
  }
70
88
  }
71
89
  else {
72
- presentation.nbf = Math.floor(Date.now() / 1000);
90
+ presentation.nbf = Math.floor(Date.now() / 1000 - 120);
73
91
  }
74
92
  }
75
93
  if (!presentation.iat) {
@@ -83,7 +101,7 @@ function createPEXPresentationSignCallback(args, context) {
83
101
  }
84
102
  }
85
103
  else {
86
- presentation.exp = presentation.nbf + 600;
104
+ presentation.exp = presentation.nbf + 600 + 120;
87
105
  }
88
106
  }
89
107
  if (!presentation.vp) {
@@ -98,7 +116,6 @@ function createPEXPresentationSignCallback(args, context) {
98
116
  }
99
117
  // we ignore the alg / proof_format for now, as we already have the kid anyway at this point
100
118
  // todo: look for jwt_vc_json and remove types and @context
101
- console.log(`PRE CREATE VP AGENT ${new Date().toString()}`);
102
119
  const vp = yield context.agent.createVerifiablePresentation({
103
120
  presentation: presentation,
104
121
  removeOriginalFields: false,
@@ -109,8 +126,6 @@ function createPEXPresentationSignCallback(args, context) {
109
126
  proofFormat,
110
127
  header,
111
128
  });
112
- console.log(`POST CREATE VP AGENT ${new Date().toString()}`);
113
- console.log(`PRE MAPPER AGENT ${new Date().toString()}`);
114
129
  // makes sure we extract an actual JWT from the internal representation in case it is a JWT
115
130
  return ssi_types_1.CredentialMapper.storedPresentationToOriginalFormat(vp);
116
131
  });
@@ -1 +1 @@
1
- {"version":3,"file":"functions.js","sourceRoot":"","sources":["../src/functions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"functions.js","sourceRoot":"","sources":["../src/functions.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sphereon/ssi-sdk.presentation-exchange",
3
- "version": "0.26.0",
3
+ "version": "0.26.1-next.106+91c10fbf",
4
4
  "source": "src/index.ts",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -16,14 +16,14 @@
16
16
  "dependencies": {
17
17
  "@sphereon/pex": "^3.3.3",
18
18
  "@sphereon/pex-models": "^2.2.4",
19
- "@sphereon/ssi-sdk-ext.did-utils": "0.21.0",
20
- "@sphereon/ssi-sdk.data-store": "0.26.0",
21
- "@sphereon/ssi-types": "0.26.0",
19
+ "@sphereon/ssi-sdk-ext.did-utils": "0.22.0",
20
+ "@sphereon/ssi-sdk.data-store": "0.26.1-next.106+91c10fbf",
21
+ "@sphereon/ssi-types": "0.26.1-next.106+91c10fbf",
22
22
  "@veramo/core": "4.2.0"
23
23
  },
24
24
  "devDependencies": {
25
25
  "@sphereon/did-uni-client": "^0.6.3",
26
- "@sphereon/ssi-sdk.agent-config": "0.26.0",
26
+ "@sphereon/ssi-sdk.agent-config": "0.26.1-next.106+91c10fbf",
27
27
  "@types/json-buffer": "^3.0.0",
28
28
  "@veramo/did-provider-key": "4.2.0",
29
29
  "@veramo/did-resolver": "4.2.0",
@@ -60,5 +60,5 @@
60
60
  "OpenID Connect",
61
61
  "Authenticator"
62
62
  ],
63
- "gitHead": "d9b111c8b7753942e705c617cc7b0dfc3d906f58"
63
+ "gitHead": "91c10fbf40b9360fc8dede6fc66296364acee806"
64
64
  }
package/src/functions.ts CHANGED
@@ -1,7 +1,8 @@
1
1
  import { dereferenceDidKeysWithJwkSupport, getAgentResolver, getIdentifier, getKey, IIdentifierOpts } from '@sphereon/ssi-sdk-ext.did-utils'
2
+ import { _NormalizedVerificationMethod } from '@veramo/utils'
2
3
  import { IPEXPresentationSignCallback, IRequiredContext } from './types/IPresentationExchange'
3
4
  import { IPresentationDefinition } from '@sphereon/pex'
4
- import { PresentationPayload, ProofFormat } from '@veramo/core'
5
+ import { IKey, PresentationPayload, ProofFormat } from '@veramo/core'
5
6
  import { CredentialMapper, Optional, OriginalVerifiablePresentation, W3CVerifiablePresentation } from '@sphereon/ssi-types'
6
7
  import { Format } from '@sphereon/pex-models'
7
8
 
@@ -9,6 +10,7 @@ export async function createPEXPresentationSignCallback(
9
10
  args: {
10
11
  idOpts: IIdentifierOpts
11
12
  fetchRemoteContexts?: boolean
13
+ skipDidResolution?: boolean
12
14
  format?: Format | ProofFormat
13
15
  domain?: string
14
16
  challenge?: string
@@ -58,12 +60,32 @@ export async function createPEXPresentationSignCallback(
58
60
  if (!presentation.holder) {
59
61
  presentation.holder = id.did
60
62
  }
61
- const key = await getKey(id, 'authentication', context, idOpts.kid)
62
- const didResolution = await getAgentResolver(context).resolve(idOpts.identifier.did)
63
- const vms = await dereferenceDidKeysWithJwkSupport(didResolution.didDocument!, idOpts.verificationMethodSection ?? 'authentication', context)
64
- const vm = vms.find((vm) => vm.publicKeyHex === key.publicKeyHex)
65
- if (!vm) {
66
- throw Error(`Could not resolve DID document or match signing key to did ${idOpts.identifier.did}`)
63
+ let key: IKey | undefined
64
+
65
+ if (args.skipDidResolution) {
66
+ if (!idOpts.kid) {
67
+ key = id.keys.find((key) => key.meta?.purpose?.includes(idOpts.verificationMethodSection ?? 'authentication') === true)
68
+ }
69
+ if (!key) {
70
+ key = id.keys.find(
71
+ (key) => !idOpts.kid || key.kid === idOpts.kid || key.meta?.jwkThumbprint === idOpts.kid || `${id.did}#${key.kid}` === idOpts.kid,
72
+ )
73
+ }
74
+ } else {
75
+ key = await getKey(id, 'authentication', context, idOpts.kid)
76
+ }
77
+
78
+ if (!key) {
79
+ throw Error(`Could not determine key to use ${JSON.stringify(idOpts)}`)
80
+ }
81
+ let vm: _NormalizedVerificationMethod | undefined = undefined
82
+ if (args.skipDidResolution !== true) {
83
+ const didResolution = await getAgentResolver(context).resolve(idOpts.identifier.did)
84
+ const vms = await dereferenceDidKeysWithJwkSupport(didResolution.didDocument!, idOpts.verificationMethodSection ?? 'authentication', context)
85
+ vm = vms.find((vm) => vm.publicKeyHex === key.publicKeyHex)
86
+ if (!vm) {
87
+ throw Error(`Could not resolve DID document or match signing key to did ${idOpts.identifier.did}`)
88
+ }
67
89
  }
68
90
 
69
91
  const proofFormat = determineProofFormat({ format, presentationDefinition })
@@ -71,9 +93,10 @@ export async function createPEXPresentationSignCallback(
71
93
  if (!presentation.holder) {
72
94
  presentation.holder = id.did
73
95
  }
96
+ const kid = vm?.id ?? key.meta?.jwkThumbprint ?? key.kid
74
97
  if (proofFormat === 'jwt') {
75
98
  header = {
76
- kid: vm.id,
99
+ kid: kid.includes('#') ? kid : `${id.did}#${kid}`,
77
100
  }
78
101
  if (presentation.verifier || !presentation.aud) {
79
102
  presentation.aud = Array.isArray(presentation.verifier) ? presentation.verifier : presentation.verifier ?? domain ?? args.domain
@@ -86,7 +109,7 @@ export async function createPEXPresentationSignCallback(
86
109
  presentation.nbf = Math.floor(converted / 1000)
87
110
  }
88
111
  } else {
89
- presentation.nbf = Math.floor(Date.now() / 1000)
112
+ presentation.nbf = Math.floor(Date.now() / 1000 - 120)
90
113
  }
91
114
  }
92
115
 
@@ -101,7 +124,7 @@ export async function createPEXPresentationSignCallback(
101
124
  presentation.exp = Math.floor(converted / 1000)
102
125
  }
103
126
  } else {
104
- presentation.exp = presentation.nbf + 600
127
+ presentation.exp = presentation.nbf + 600 + 120
105
128
  }
106
129
  }
107
130
 
@@ -120,7 +143,6 @@ export async function createPEXPresentationSignCallback(
120
143
 
121
144
  // todo: look for jwt_vc_json and remove types and @context
122
145
 
123
- console.log(`PRE CREATE VP AGENT ${new Date().toString()}`)
124
146
  const vp = await context.agent.createVerifiablePresentation({
125
147
  presentation: presentation as PresentationPayload,
126
148
  removeOriginalFields: false,
@@ -131,8 +153,6 @@ export async function createPEXPresentationSignCallback(
131
153
  proofFormat,
132
154
  header,
133
155
  })
134
- console.log(`POST CREATE VP AGENT ${new Date().toString()}`)
135
- console.log(`PRE MAPPER AGENT ${new Date().toString()}`)
136
156
  // makes sure we extract an actual JWT from the internal representation in case it is a JWT
137
157
  return CredentialMapper.storedPresentationToOriginalFormat(vp as OriginalVerifiablePresentation)
138
158
  }