@proof.com/proof-vc-common 0.1.4 → 0.2.0
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/README.md +29 -35
- package/dist/certificates/chain_validator.js +6 -6
- package/dist/certificates/chain_validator.js.map +1 -1
- package/dist/certificates/trust_store/index.d.ts +2 -2
- package/dist/certificates/trust_store/index.d.ts.map +1 -1
- package/dist/certificates/trust_store/index.js +3 -6
- package/dist/certificates/trust_store/index.js.map +1 -1
- package/dist/index.browser.d.ts +1 -0
- package/dist/index.browser.d.ts.map +1 -1
- package/dist/index.browser.js.map +1 -1
- package/dist/index.node.d.ts +2 -0
- package/dist/index.node.d.ts.map +1 -1
- package/dist/index.node.js.map +1 -1
- package/dist/presentation/base_client.d.ts +22 -21
- package/dist/presentation/base_client.d.ts.map +1 -1
- package/dist/presentation/base_client.js +43 -54
- package/dist/presentation/base_client.js.map +1 -1
- package/dist/presentation/node_client.d.ts +19 -2
- package/dist/presentation/node_client.d.ts.map +1 -1
- package/dist/presentation/node_client.js +58 -2
- package/dist/presentation/node_client.js.map +1 -1
- package/dist/proof_credentials.d.ts +6 -11
- package/dist/proof_credentials.d.ts.map +1 -1
- package/dist/proof_credentials.js +14 -32
- package/dist/proof_credentials.js.map +1 -1
- package/dist/types.d.ts +1 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/vc_presentation.browser.d.ts +2 -2
- package/dist/vc_presentation.browser.d.ts.map +1 -1
- package/dist/vc_presentation.browser.js +1 -1
- package/dist/vc_presentation.browser.js.map +1 -1
- package/dist/vc_presentation.node.d.ts +3 -3
- package/dist/vc_presentation.node.d.ts.map +1 -1
- package/dist/vc_presentation.node.js +1 -1
- package/dist/vc_presentation.node.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -42,9 +42,9 @@ import { init } from "@proof.com/proof-vc-common";
|
|
|
42
42
|
|
|
43
43
|
init({
|
|
44
44
|
environment: "sandbox",
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
45
|
+
clientId: "verifier-demo",
|
|
46
|
+
responseMode: "direct_post",
|
|
47
|
+
callbackUri: "http://localhost/verify_vp_token",
|
|
48
48
|
});
|
|
49
49
|
```
|
|
50
50
|
|
|
@@ -54,7 +54,7 @@ Proof supports `fragment` and `direct_post` response modes.
|
|
|
54
54
|
|
|
55
55
|
#### fragment
|
|
56
56
|
|
|
57
|
-
Using `fragment` the `vp_token` is returned as a fragment of the `
|
|
57
|
+
Using `fragment` the `vp_token` is returned as a fragment of the `callbackUri` when the user is 302 redirected from Proof to your website.
|
|
58
58
|
|
|
59
59
|
```
|
|
60
60
|
GET http://localhost/verify_vp_token#vp_token=eyJwcm9vZl9pZF9...
|
|
@@ -62,7 +62,7 @@ GET http://localhost/verify_vp_token#vp_token=eyJwcm9vZl9pZF9...
|
|
|
62
62
|
|
|
63
63
|
#### direct_post
|
|
64
64
|
|
|
65
|
-
Using `direct_post` the `vp_token` is returned in the JSON body of a POST request to the `
|
|
65
|
+
Using `direct_post` the `vp_token` is returned in the JSON body of a POST request to the `callbackUri` from Proof to your website. See the [OID4VP specification](https://openid.net/specs/openid-4-verifiable-presentations-1_0.html#name-response-mode-direct_post) for more details.
|
|
66
66
|
|
|
67
67
|
```
|
|
68
68
|
POST http://localhost/verify_vp_token
|
|
@@ -73,14 +73,16 @@ POST http://localhost/verify_vp_token
|
|
|
73
73
|
|
|
74
74
|
Proof supports [Pushed Authorization Requests](https://datatracker.ietf.org/doc/html/rfc9126) (PAR).
|
|
75
75
|
You may want to use this feature when using [Transaction Templates](#transaction-templates) to avoid hitting URL size limits.
|
|
76
|
+
Note that PAR is available **only from the Node.js distribution**.
|
|
76
77
|
|
|
77
78
|
```javascript
|
|
78
79
|
init({
|
|
79
80
|
environment: "sandbox",
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
81
|
+
clientId: "caxdw5a7d",
|
|
82
|
+
clientSecret: "…",
|
|
83
|
+
responseMode: "direct_post",
|
|
84
|
+
callbackUri: "http://localhost/verify_vp_token",
|
|
85
|
+
usePushedAuthorizationRequest: true,
|
|
84
86
|
});
|
|
85
87
|
```
|
|
86
88
|
|
|
@@ -110,11 +112,11 @@ Request a Verifiable Credential Presentation with an [OAuth 2.0](https://datatra
|
|
|
110
112
|
```javascript
|
|
111
113
|
import { getAuthorizationRequestURL } from "@proof.com/proof-vc-common";
|
|
112
114
|
|
|
113
|
-
const redirect = getAuthorizationRequestURL({
|
|
115
|
+
const redirect = await getAuthorizationRequestURL({
|
|
114
116
|
nonce: "3e8e4918-e9fb-453a-a538-81152be15c1b",
|
|
115
117
|
scope: "urn:proof:params:scope:verifiable-credentials:basic",
|
|
116
118
|
state: "6A2B4CD830",
|
|
117
|
-
|
|
119
|
+
loginHint: "frodo.baggins@theshire",
|
|
118
120
|
});
|
|
119
121
|
|
|
120
122
|
window.location.href = redirect;
|
|
@@ -162,12 +164,12 @@ const data = transactionData.wireInstructions({
|
|
|
162
164
|
currency: "USD",
|
|
163
165
|
memo: "Invoice #2024-089",
|
|
164
166
|
});
|
|
165
|
-
const redirect = getAuthorizationRequestURL({
|
|
167
|
+
const redirect = await getAuthorizationRequestURL({
|
|
166
168
|
nonce: "3e8e4918-e9fb-453a-a538-81152be15c1b",
|
|
167
169
|
scope: "urn:proof:params:scope:verifiable-credentials:basic",
|
|
168
170
|
state: "6A2B4CD830",
|
|
169
|
-
|
|
170
|
-
|
|
171
|
+
loginHint: "frodo.baggins@theshire",
|
|
172
|
+
transactionData: data,
|
|
171
173
|
});
|
|
172
174
|
```
|
|
173
175
|
|
|
@@ -190,12 +192,12 @@ const data = transactionData.paymentItemized({
|
|
|
190
192
|
{ quantity: 2, unit_cost: 11.4, label: "Fees" },
|
|
191
193
|
],
|
|
192
194
|
});
|
|
193
|
-
const redirect = getAuthorizationRequestURL({
|
|
195
|
+
const redirect = await getAuthorizationRequestURL({
|
|
194
196
|
nonce: "3e8e4918-e9fb-453a-a538-81152be15c1b",
|
|
195
197
|
scope: "urn:proof:params:scope:verifiable-credentials:basic",
|
|
196
198
|
state: "6A2B4CD830",
|
|
197
|
-
|
|
198
|
-
|
|
199
|
+
loginHint: "frodo.baggins@theshire",
|
|
200
|
+
transactionData: data,
|
|
199
201
|
});
|
|
200
202
|
```
|
|
201
203
|
|
|
@@ -225,12 +227,12 @@ const data = transactionData.paymentMandate({
|
|
|
225
227
|
amount: 500,
|
|
226
228
|
currency: "USD",
|
|
227
229
|
});
|
|
228
|
-
const redirect = getAuthorizationRequestURL({
|
|
230
|
+
const redirect = await getAuthorizationRequestURL({
|
|
229
231
|
nonce: "3e8e4918-e9fb-453a-a538-81152be15c1b",
|
|
230
232
|
scope: "urn:proof:params:scope:verifiable-credentials:basic",
|
|
231
233
|
state: "6A2B4CD830",
|
|
232
|
-
|
|
233
|
-
|
|
234
|
+
loginHint: "frodo.baggins@theshire",
|
|
235
|
+
transactionData: data,
|
|
234
236
|
});
|
|
235
237
|
```
|
|
236
238
|
|
|
@@ -241,20 +243,16 @@ Decode and verify a Verifiable Presentation's `vp_token` server-side:
|
|
|
241
243
|
```javascript
|
|
242
244
|
import { init, verifyVPToken } from "@proof.com/proof-vc-common";
|
|
243
245
|
|
|
244
|
-
init({
|
|
245
|
-
environment: "sandbox",
|
|
246
|
-
client_id: "verifier-demo",
|
|
247
|
-
callback_uri: "https://demo.next.proof.com/",
|
|
248
|
-
});
|
|
246
|
+
init({ trustRoot: "production" });
|
|
249
247
|
|
|
250
248
|
const vpToken = "eyJwcm9vZl9pZ...";
|
|
251
|
-
const presentation = verifyVPToken({
|
|
249
|
+
const presentation = await verifyVPToken({
|
|
252
250
|
encodedVPToken: vpToken,
|
|
253
251
|
nonce: "3e8e4918-e9fb-453a-a538-81152be15c1b",
|
|
254
252
|
});
|
|
255
253
|
const verifiableCredential = presentation["proof_id_default"][0];
|
|
256
254
|
|
|
257
|
-
if (verifiableCredential.isOver18
|
|
255
|
+
if (verifiableCredential.isOver18) {
|
|
258
256
|
purchaseItem();
|
|
259
257
|
} else {
|
|
260
258
|
userNotOver18();
|
|
@@ -266,19 +264,15 @@ Verify a single SD-JWT-VC:
|
|
|
266
264
|
```javascript
|
|
267
265
|
import { init, verify } from "@proof.com/proof-vc-common";
|
|
268
266
|
|
|
269
|
-
init({
|
|
270
|
-
environment: "sandbox",
|
|
271
|
-
client_id: "verifier-demo",
|
|
272
|
-
callback_uri: "https://demo.next.proof.com/",
|
|
273
|
-
});
|
|
267
|
+
init({ trustRoot: "production" });
|
|
274
268
|
|
|
275
269
|
const encodedSDJWT = "eyJraWQiOiI3...";
|
|
276
|
-
const verifiableCredential = verify({
|
|
270
|
+
const verifiableCredential = await verify({
|
|
277
271
|
encodedSDJWT,
|
|
278
272
|
nonce: "3e8e4918-e9fb-453a-a538-81152be15c1b",
|
|
279
273
|
});
|
|
280
274
|
|
|
281
|
-
if (verifiableCredential.isOver18
|
|
275
|
+
if (verifiableCredential.isOver18) {
|
|
282
276
|
purchaseItem();
|
|
283
277
|
} else {
|
|
284
278
|
userNotOver18();
|
|
@@ -293,7 +287,7 @@ following the CA/B Forum Baseline Requirements for the Issuance and Management o
|
|
|
293
287
|
The Proof Root CA R1 Certificate is published at http://cert.proof.com/proof-root-ca-r1.crt and
|
|
294
288
|
is also committed in this repository [proof-root-ca-r1.crt](src/certificates/trust_store/proof_root_ca_r1.ts).
|
|
295
289
|
|
|
296
|
-
The sandbox Root CA R1 Development certificate is also committed in this repository [proof-root-ca-r1-development.crt](src/certificates/trust_store/proof_root_ca_r1_development.ts) and used when `
|
|
290
|
+
The sandbox Root CA R1 Development certificate is also committed in this repository [proof-root-ca-r1-development.crt](src/certificates/trust_store/proof_root_ca_r1_development.ts) and used when `trustRoot: "development"`.
|
|
297
291
|
|
|
298
292
|
## Documentation
|
|
299
293
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export function verifyChain(chain, root) {
|
|
2
2
|
if (chain.length === 0) {
|
|
3
|
-
throw
|
|
3
|
+
throw "verifyChain: empty chain";
|
|
4
4
|
}
|
|
5
5
|
const full = [...chain, root];
|
|
6
6
|
const now = new Date();
|
|
@@ -10,20 +10,20 @@ export function verifyChain(chain, root) {
|
|
|
10
10
|
const validFrom = new Date(cert.validFromDate);
|
|
11
11
|
const validTo = new Date(cert.validToDate);
|
|
12
12
|
if (now < validFrom || now > validTo) {
|
|
13
|
-
throw
|
|
13
|
+
throw `Certificate at index ${i} is expired or not yet valid`;
|
|
14
14
|
}
|
|
15
15
|
if (!cert.checkIssued(issuer)) {
|
|
16
|
-
throw
|
|
16
|
+
throw `Certificate at index ${i} not issued by next in chain`;
|
|
17
17
|
}
|
|
18
18
|
if (!cert.verify(issuer.publicKey)) {
|
|
19
|
-
throw
|
|
19
|
+
throw `Certificate at index ${i} has invalid signature`;
|
|
20
20
|
}
|
|
21
21
|
}
|
|
22
22
|
if (now > new Date(root.validToDate)) {
|
|
23
|
-
throw
|
|
23
|
+
throw "Root certificate expired";
|
|
24
24
|
}
|
|
25
25
|
if (!root.verify(root.publicKey)) {
|
|
26
|
-
throw
|
|
26
|
+
throw "Root is not self-signed";
|
|
27
27
|
}
|
|
28
28
|
}
|
|
29
29
|
//# sourceMappingURL=chain_validator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chain_validator.js","sourceRoot":"","sources":["../../src/certificates/chain_validator.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,WAAW,CACzB,KAAwB,EACxB,IAAqB;IAErB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,
|
|
1
|
+
{"version":3,"file":"chain_validator.js","sourceRoot":"","sources":["../../src/certificates/chain_validator.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,WAAW,CACzB,KAAwB,EACxB,IAAqB;IAErB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,0BAA0B,CAAC;IACnC,CAAC;IAED,MAAM,IAAI,GAAG,CAAC,GAAG,KAAK,EAAE,IAAI,CAAC,CAAC;IAC9B,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IAEvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAE,CAAC;QACtB,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC;QAE5B,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC/C,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC3C,IAAI,GAAG,GAAG,SAAS,IAAI,GAAG,GAAG,OAAO,EAAE,CAAC;YACrC,MAAM,wBAAwB,CAAC,8BAA8B,CAAC;QAChE,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;YAC9B,MAAM,wBAAwB,CAAC,8BAA8B,CAAC;QAChE,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;YACnC,MAAM,wBAAwB,CAAC,wBAAwB,CAAC;QAC1D,CAAC;IACH,CAAC;IAED,IAAI,GAAG,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;QACrC,MAAM,0BAA0B,CAAC;IACnC,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;QACjC,MAAM,yBAAyB,CAAC;IAClC,CAAC;AACH,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { X509Certificate } from "node:crypto";
|
|
2
|
-
import type {
|
|
3
|
-
export declare function getTrustRoot(
|
|
2
|
+
import type { TrustRoot } from "../../types.ts";
|
|
3
|
+
export declare function getTrustRoot(trustRoot: TrustRoot): X509Certificate;
|
|
4
4
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/certificates/trust_store/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/certificates/trust_store/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAOhD,wBAAgB,YAAY,CAAC,SAAS,EAAE,SAAS,GAAG,eAAe,CAOlE"}
|
|
@@ -3,14 +3,11 @@ import { PROOF_ROOT_CA_R1_PEM } from "./proof_root_ca_r1.js";
|
|
|
3
3
|
import { PROOF_ROOT_CA_R1_DEVELOPMENT_PEM } from "./proof_root_ca_r1_development.js";
|
|
4
4
|
const PRODUCTION_ROOT = new X509Certificate(PROOF_ROOT_CA_R1_PEM);
|
|
5
5
|
const DEVELOPMENT_ROOT = new X509Certificate(PROOF_ROOT_CA_R1_DEVELOPMENT_PEM);
|
|
6
|
-
export function getTrustRoot(
|
|
7
|
-
switch (
|
|
6
|
+
export function getTrustRoot(trustRoot) {
|
|
7
|
+
switch (trustRoot) {
|
|
8
8
|
case "production":
|
|
9
9
|
return PRODUCTION_ROOT;
|
|
10
|
-
case "
|
|
11
|
-
case "next":
|
|
12
|
-
case "staging":
|
|
13
|
-
case "sandbox":
|
|
10
|
+
case "development":
|
|
14
11
|
return DEVELOPMENT_ROOT;
|
|
15
12
|
}
|
|
16
13
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/certificates/trust_store/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,gCAAgC,EAAE,MAAM,mCAAmC,CAAC;AAErF,MAAM,eAAe,GAAG,IAAI,eAAe,CAAC,oBAAoB,CAAC,CAAC;AAClE,MAAM,gBAAgB,GAAG,IAAI,eAAe,CAAC,gCAAgC,CAAC,CAAC;AAE/E,MAAM,UAAU,YAAY,CAAC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/certificates/trust_store/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,gCAAgC,EAAE,MAAM,mCAAmC,CAAC;AAErF,MAAM,eAAe,GAAG,IAAI,eAAe,CAAC,oBAAoB,CAAC,CAAC;AAClE,MAAM,gBAAgB,GAAG,IAAI,eAAe,CAAC,gCAAgC,CAAC,CAAC;AAE/E,MAAM,UAAU,YAAY,CAAC,SAAoB;IAC/C,QAAQ,SAAS,EAAE,CAAC;QAClB,KAAK,YAAY;YACf,OAAO,eAAe,CAAC;QACzB,KAAK,aAAa;YAChB,OAAO,gBAAgB,CAAC;IAC5B,CAAC;AACH,CAAC"}
|
package/dist/index.browser.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export type * from "./types.ts";
|
|
2
2
|
export type { TransactionData, WireInstructionsTransactionData, PaymentMandateTransactionData, PaymentItemizedTransactionData, SessionDataTransactionData, WireInstructionsPayload, PaymentMandatePayload, PaymentItemizedPayload, PaymentItemizedItem, SessionDataPayload, } from "./transaction_data.ts";
|
|
3
3
|
export { TX_DATA_TYPE, transactionData } from "./transaction_data.ts";
|
|
4
|
+
export type { BrowserInitParams, AuthorizationRequestParams, } from "./presentation/base_client.ts";
|
|
4
5
|
export { init, getAuthorizationRequestURL } from "./vc_presentation.browser.ts";
|
|
5
6
|
//# sourceMappingURL=index.browser.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.browser.d.ts","sourceRoot":"","sources":["../src/index.browser.ts"],"names":[],"mappings":"AAAA,mBAAmB,YAAY,CAAC;AAChC,YAAY,EACV,eAAe,EACf,+BAA+B,EAC/B,6BAA6B,EAC7B,8BAA8B,EAC9B,0BAA0B,EAC1B,uBAAuB,EACvB,qBAAqB,EACrB,sBAAsB,EACtB,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAEtE,OAAO,EAAE,IAAI,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.browser.d.ts","sourceRoot":"","sources":["../src/index.browser.ts"],"names":[],"mappings":"AAAA,mBAAmB,YAAY,CAAC;AAChC,YAAY,EACV,eAAe,EACf,+BAA+B,EAC/B,6BAA6B,EAC7B,8BAA8B,EAC9B,0BAA0B,EAC1B,uBAAuB,EACvB,qBAAqB,EACrB,sBAAsB,EACtB,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAEtE,YAAY,EACV,iBAAiB,EACjB,0BAA0B,GAC3B,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EAAE,IAAI,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.browser.js","sourceRoot":"","sources":["../src/index.browser.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.browser.js","sourceRoot":"","sources":["../src/index.browser.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAOtE,OAAO,EAAE,IAAI,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC"}
|
package/dist/index.node.d.ts
CHANGED
|
@@ -2,5 +2,7 @@ export type * from "./types.ts";
|
|
|
2
2
|
export type { TransactionData, WireInstructionsTransactionData, PaymentMandateTransactionData, PaymentItemizedTransactionData, SessionDataTransactionData, WireInstructionsPayload, PaymentMandatePayload, PaymentItemizedPayload, PaymentItemizedItem, SessionDataPayload, } from "./transaction_data.ts";
|
|
3
3
|
export { TX_DATA_TYPE, transactionData } from "./transaction_data.ts";
|
|
4
4
|
export { ProofCredentialV1 } from "./proof_credentials.ts";
|
|
5
|
+
export type { AuthorizationRequestParams } from "./presentation/base_client.ts";
|
|
6
|
+
export type { NodeInitParams, VerifyParams, VerifyVPTokenParams, } from "./presentation/node_client.ts";
|
|
5
7
|
export { init, getAuthorizationRequestURL, verify, verifyVPToken, } from "./vc_presentation.node.ts";
|
|
6
8
|
//# sourceMappingURL=index.node.d.ts.map
|
package/dist/index.node.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.node.d.ts","sourceRoot":"","sources":["../src/index.node.ts"],"names":[],"mappings":"AAAA,mBAAmB,YAAY,CAAC;AAChC,YAAY,EACV,eAAe,EACf,+BAA+B,EAC/B,6BAA6B,EAC7B,8BAA8B,EAC9B,0BAA0B,EAC1B,uBAAuB,EACvB,qBAAqB,EACrB,sBAAsB,EACtB,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAEtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,OAAO,EACL,IAAI,EACJ,0BAA0B,EAC1B,MAAM,EACN,aAAa,GACd,MAAM,2BAA2B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.node.d.ts","sourceRoot":"","sources":["../src/index.node.ts"],"names":[],"mappings":"AAAA,mBAAmB,YAAY,CAAC;AAChC,YAAY,EACV,eAAe,EACf,+BAA+B,EAC/B,6BAA6B,EAC7B,8BAA8B,EAC9B,0BAA0B,EAC1B,uBAAuB,EACvB,qBAAqB,EACrB,sBAAsB,EACtB,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAEtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,YAAY,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AAChF,YAAY,EACV,cAAc,EACd,YAAY,EACZ,mBAAmB,GACpB,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EACL,IAAI,EACJ,0BAA0B,EAC1B,MAAM,EACN,aAAa,GACd,MAAM,2BAA2B,CAAC"}
|
package/dist/index.node.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.node.js","sourceRoot":"","sources":["../src/index.node.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAEtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.node.js","sourceRoot":"","sources":["../src/index.node.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAEtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAS3D,OAAO,EACL,IAAI,EACJ,0BAA0B,EAC1B,MAAM,EACN,aAAa,GACd,MAAM,2BAA2B,CAAC"}
|
|
@@ -1,35 +1,36 @@
|
|
|
1
1
|
import type { Environment, ResponseMode, ResponseType, Scope } from "../types.ts";
|
|
2
2
|
import { type TransactionData } from "../transaction_data.ts";
|
|
3
|
-
export type
|
|
3
|
+
export type BrowserInitParams = {
|
|
4
4
|
environment: Environment;
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
response_mode?: ResponseMode;
|
|
9
|
-
callback_uri: string;
|
|
5
|
+
clientId: string;
|
|
6
|
+
callbackUri: string;
|
|
7
|
+
responseMode?: ResponseMode;
|
|
10
8
|
};
|
|
11
9
|
export type AuthorizationRequestParams = {
|
|
12
10
|
scope: Scope;
|
|
13
11
|
nonce: string;
|
|
14
12
|
state?: string;
|
|
15
|
-
|
|
16
|
-
|
|
13
|
+
loginHint?: string;
|
|
14
|
+
transactionData?: TransactionData | string;
|
|
17
15
|
};
|
|
18
16
|
export declare class VCPresentationClient {
|
|
19
|
-
protected readonly environment
|
|
20
|
-
protected readonly
|
|
21
|
-
protected readonly
|
|
22
|
-
protected readonly
|
|
23
|
-
protected readonly
|
|
24
|
-
protected readonly
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
17
|
+
protected readonly environment?: Environment;
|
|
18
|
+
protected readonly clientId?: string;
|
|
19
|
+
protected readonly responseMode: ResponseMode;
|
|
20
|
+
protected readonly responseType: ResponseType;
|
|
21
|
+
protected readonly callbackUri?: string;
|
|
22
|
+
protected readonly oid4vpUri = "/verifiable-credentials/v1/presentation";
|
|
23
|
+
constructor(params: {
|
|
24
|
+
environment?: Environment;
|
|
25
|
+
clientId?: string;
|
|
26
|
+
responseMode?: ResponseMode;
|
|
27
|
+
callbackUri?: string;
|
|
28
|
+
});
|
|
28
29
|
getAuthorizationRequestURL(params: AuthorizationRequestParams): Promise<string>;
|
|
30
|
+
protected requireRequestConfig(): void;
|
|
29
31
|
protected baseURL(): string;
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
private defaultAuthorizationRequestParameters;
|
|
32
|
+
protected buildAuthorizeURL(params: AuthorizationRequestParams): string;
|
|
33
|
+
protected buildParameters({ scope, nonce, state, loginHint, transactionData, }: AuthorizationRequestParams): URLSearchParams;
|
|
34
|
+
protected defaultAuthorizationRequestParameters(): Record<string, string>;
|
|
34
35
|
}
|
|
35
36
|
//# sourceMappingURL=base_client.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base_client.d.ts","sourceRoot":"","sources":["../../src/presentation/base_client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,KAAK,EACN,MAAM,aAAa,CAAC;AACrB,OAAO,EAEL,KAAK,eAAe,EACrB,MAAM,wBAAwB,CAAC;AAEhC,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"base_client.d.ts","sourceRoot":"","sources":["../../src/presentation/base_client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,KAAK,EACN,MAAM,aAAa,CAAC;AACrB,OAAO,EAEL,KAAK,eAAe,EACrB,MAAM,wBAAwB,CAAC;AAEhC,MAAM,MAAM,iBAAiB,GAAG;IAC9B,WAAW,EAAE,WAAW,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG;IACvC,KAAK,EAAE,KAAK,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,eAAe,GAAG,MAAM,CAAC;CAC5C,CAAC;AAEF,qBAAa,oBAAoB;IAC/B,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC;IAC7C,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IACrC,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAc;IAC3D,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAc;IAC3D,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IACxC,SAAS,CAAC,QAAQ,CAAC,SAAS,6CAA6C;gBAE7D,MAAM,EAAE;QAClB,WAAW,CAAC,EAAE,WAAW,CAAC;QAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,YAAY,CAAC,EAAE,YAAY,CAAC;QAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB;IAeY,0BAA0B,CACrC,MAAM,EAAE,0BAA0B,GACjC,OAAO,CAAC,MAAM,CAAC;IAKlB,SAAS,CAAC,oBAAoB,IAAI,IAAI;IAYtC,SAAS,CAAC,OAAO,IAAI,MAAM;IAiB3B,SAAS,CAAC,iBAAiB,CAAC,MAAM,EAAE,0BAA0B,GAAG,MAAM;IAMvE,SAAS,CAAC,eAAe,CAAC,EACxB,KAAK,EACL,KAAK,EACL,KAAK,EACL,SAAS,EACT,eAAe,GAChB,EAAE,0BAA0B,GAAG,eAAe;IAiB/C,SAAS,CAAC,qCAAqC,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;CAa1E"}
|
|
@@ -1,31 +1,39 @@
|
|
|
1
1
|
import { encodeTransactionData, } from "../transaction_data.js";
|
|
2
2
|
export class VCPresentationClient {
|
|
3
3
|
environment;
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
this.environment = environment;
|
|
13
|
-
this.client_id = client_id;
|
|
14
|
-
this.callback_uri = callback_uri;
|
|
15
|
-
if (client_secret !== undefined) {
|
|
16
|
-
this.client_secret = client_secret;
|
|
4
|
+
clientId;
|
|
5
|
+
responseMode = "fragment";
|
|
6
|
+
responseType = "vp_token";
|
|
7
|
+
callbackUri;
|
|
8
|
+
oid4vpUri = "/verifiable-credentials/v1/presentation";
|
|
9
|
+
constructor(params) {
|
|
10
|
+
if (params.environment !== undefined) {
|
|
11
|
+
this.environment = params.environment;
|
|
17
12
|
}
|
|
18
|
-
if (
|
|
19
|
-
this.
|
|
13
|
+
if (params.clientId !== undefined) {
|
|
14
|
+
this.clientId = params.clientId;
|
|
20
15
|
}
|
|
21
|
-
if (
|
|
22
|
-
this.
|
|
16
|
+
if (params.callbackUri !== undefined) {
|
|
17
|
+
this.callbackUri = params.callbackUri;
|
|
18
|
+
}
|
|
19
|
+
if (params.responseMode !== undefined) {
|
|
20
|
+
this.responseMode = params.responseMode;
|
|
23
21
|
}
|
|
24
22
|
}
|
|
25
23
|
async getAuthorizationRequestURL(params) {
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
24
|
+
this.requireRequestConfig();
|
|
25
|
+
return this.buildAuthorizeURL(params);
|
|
26
|
+
}
|
|
27
|
+
requireRequestConfig() {
|
|
28
|
+
if (this.environment === undefined) {
|
|
29
|
+
throw "getAuthorizationRequestURL requires `environment` in init()";
|
|
30
|
+
}
|
|
31
|
+
if (this.clientId === undefined) {
|
|
32
|
+
throw "getAuthorizationRequestURL requires `clientId` in init()";
|
|
33
|
+
}
|
|
34
|
+
if (this.callbackUri === undefined) {
|
|
35
|
+
throw "getAuthorizationRequestURL requires `callbackUri` in init()";
|
|
36
|
+
}
|
|
29
37
|
}
|
|
30
38
|
baseURL() {
|
|
31
39
|
switch (this.environment) {
|
|
@@ -39,41 +47,25 @@ export class VCPresentationClient {
|
|
|
39
47
|
return "https://api.fairfax.proof.com";
|
|
40
48
|
case "production":
|
|
41
49
|
return "https://api.proof.com";
|
|
50
|
+
default:
|
|
51
|
+
throw "getAuthorizationRequestURL requires `environment` in init()";
|
|
42
52
|
}
|
|
43
53
|
}
|
|
44
54
|
buildAuthorizeURL(params) {
|
|
45
|
-
const url = new URL(`${this.
|
|
55
|
+
const url = new URL(`${this.oid4vpUri}/authorize`, this.baseURL());
|
|
46
56
|
url.search = this.buildParameters(params).toString();
|
|
47
57
|
return url.toString();
|
|
48
58
|
}
|
|
49
|
-
|
|
50
|
-
const
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
headers: { "Content-Type": "application/x-www-form-urlencoded" },
|
|
54
|
-
body: this.buildParameters(params).toString(),
|
|
55
|
-
});
|
|
56
|
-
const data = await response.json();
|
|
57
|
-
if (!response.ok) {
|
|
58
|
-
throw `${data["error"]}: ${data["error_description"]}`;
|
|
59
|
-
}
|
|
60
|
-
const authorizeURL = new URL(`${this.oid4vp_uri}/authorize`, this.baseURL());
|
|
61
|
-
authorizeURL.search = new URLSearchParams({
|
|
62
|
-
client_id: this.client_id,
|
|
63
|
-
request_uri: data["request_uri"],
|
|
64
|
-
}).toString();
|
|
65
|
-
return authorizeURL.toString();
|
|
66
|
-
}
|
|
67
|
-
buildParameters({ scope, nonce, state, login_hint, transaction_data, }) {
|
|
68
|
-
const encodedTransactionData = typeof transaction_data === "object"
|
|
69
|
-
? encodeTransactionData(transaction_data)
|
|
70
|
-
: transaction_data;
|
|
59
|
+
buildParameters({ scope, nonce, state, loginHint, transactionData, }) {
|
|
60
|
+
const encodedTransactionData = typeof transactionData === "object"
|
|
61
|
+
? encodeTransactionData(transactionData)
|
|
62
|
+
: transactionData;
|
|
71
63
|
return new URLSearchParams({
|
|
72
64
|
...this.defaultAuthorizationRequestParameters(),
|
|
73
65
|
scope,
|
|
74
66
|
nonce,
|
|
75
67
|
...(state !== undefined && { state }),
|
|
76
|
-
...(
|
|
68
|
+
...(loginHint !== undefined && { login_hint: loginHint }),
|
|
77
69
|
...(encodedTransactionData !== undefined && {
|
|
78
70
|
transaction_data: encodedTransactionData,
|
|
79
71
|
}),
|
|
@@ -81,17 +73,14 @@ export class VCPresentationClient {
|
|
|
81
73
|
}
|
|
82
74
|
defaultAuthorizationRequestParameters() {
|
|
83
75
|
return {
|
|
84
|
-
client_id: this.
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
response_type: this.response_type,
|
|
90
|
-
...(this.response_mode === "fragment" && {
|
|
91
|
-
redirect_uri: this.callback_uri,
|
|
76
|
+
client_id: this.clientId,
|
|
77
|
+
response_mode: this.responseMode,
|
|
78
|
+
response_type: this.responseType,
|
|
79
|
+
...(this.responseMode === "fragment" && {
|
|
80
|
+
redirect_uri: this.callbackUri,
|
|
92
81
|
}),
|
|
93
|
-
...(this.
|
|
94
|
-
response_uri: this.
|
|
82
|
+
...(this.responseMode === "direct_post" && {
|
|
83
|
+
response_uri: this.callbackUri,
|
|
95
84
|
}),
|
|
96
85
|
};
|
|
97
86
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base_client.js","sourceRoot":"","sources":["../../src/presentation/base_client.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,qBAAqB,GAEtB,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"base_client.js","sourceRoot":"","sources":["../../src/presentation/base_client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,14 @@
|
|
|
1
|
-
import type { ProofCredential, VPToken } from "../types.ts";
|
|
2
|
-
import { VCPresentationClient } from "./base_client.ts";
|
|
1
|
+
import type { Environment, ProofCredential, ResponseMode, TrustRoot, VPToken } from "../types.ts";
|
|
2
|
+
import { VCPresentationClient, type AuthorizationRequestParams } from "./base_client.ts";
|
|
3
|
+
export type NodeInitParams = {
|
|
4
|
+
trustRoot?: TrustRoot;
|
|
5
|
+
environment?: Environment;
|
|
6
|
+
clientId?: string;
|
|
7
|
+
clientSecret?: string;
|
|
8
|
+
callbackUri?: string;
|
|
9
|
+
responseMode?: ResponseMode;
|
|
10
|
+
usePushedAuthorizationRequest?: boolean;
|
|
11
|
+
};
|
|
3
12
|
export type VerifyParams = {
|
|
4
13
|
encodedSDJWT: string;
|
|
5
14
|
nonce?: string;
|
|
@@ -11,6 +20,14 @@ export type VerifyVPTokenParams = {
|
|
|
11
20
|
aud?: string;
|
|
12
21
|
};
|
|
13
22
|
export declare class NodeVCPresentationClient extends VCPresentationClient {
|
|
23
|
+
protected readonly clientSecret?: string;
|
|
24
|
+
protected readonly usePushedAuthorizationRequest: boolean;
|
|
25
|
+
protected readonly trustRoot?: TrustRoot;
|
|
26
|
+
constructor(params: NodeInitParams);
|
|
27
|
+
getAuthorizationRequestURL(params: AuthorizationRequestParams): Promise<string>;
|
|
28
|
+
protected defaultAuthorizationRequestParameters(): Record<string, string>;
|
|
29
|
+
protected pushAuthorizationRequest(params: AuthorizationRequestParams): Promise<string>;
|
|
30
|
+
protected requireTrustRoot(): TrustRoot;
|
|
14
31
|
verify({ encodedSDJWT, nonce, aud, }: VerifyParams): Promise<ProofCredential>;
|
|
15
32
|
verifyVPToken({ encodedVPToken, nonce, aud, }: VerifyVPTokenParams): Promise<VPToken>;
|
|
16
33
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node_client.d.ts","sourceRoot":"","sources":["../../src/presentation/node_client.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"node_client.d.ts","sourceRoot":"","sources":["../../src/presentation/node_client.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACV,WAAW,EACX,eAAe,EACf,YAAY,EACZ,SAAS,EACT,OAAO,EACR,MAAM,aAAa,CAAC;AAKrB,OAAO,EACL,oBAAoB,EACpB,KAAK,0BAA0B,EAChC,MAAM,kBAAkB,CAAC;AAE1B,MAAM,MAAM,cAAc,GAAG;IAC3B,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,6BAA6B,CAAC,EAAE,OAAO,CAAC;CACzC,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAiCF,qBAAa,wBAAyB,SAAQ,oBAAoB;IAChE,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IACzC,SAAS,CAAC,QAAQ,CAAC,6BAA6B,EAAE,OAAO,CAAS;IAClE,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC;gBAE7B,MAAM,EAAE,cAAc;IAaZ,0BAA0B,CAC9C,MAAM,EAAE,0BAA0B,GACjC,OAAO,CAAC,MAAM,CAAC;cAOC,qCAAqC,IAAI,MAAM,CAChE,MAAM,EACN,MAAM,CACP;cASe,wBAAwB,CACtC,MAAM,EAAE,0BAA0B,GACjC,OAAO,CAAC,MAAM,CAAC;IAyBlB,SAAS,CAAC,gBAAgB,IAAI,SAAS;IAO1B,MAAM,CAAC,EAClB,YAAY,EACZ,KAAK,EACL,GAAG,GACJ,EAAE,YAAY,GAAG,OAAO,CAAC,eAAe,CAAC;IAoD7B,aAAa,CAAC,EACzB,cAAc,EACd,KAAK,EACL,GAAG,GACJ,EAAE,mBAAmB,GAAG,OAAO,CAAC,OAAO,CAAC;CAqB1C"}
|
|
@@ -7,7 +7,7 @@ import { credentialIdAsType } from "../utils.js";
|
|
|
7
7
|
import { getProofCredential } from "../proof_credential_factory.js";
|
|
8
8
|
import { verifyChain } from "../certificates/chain_validator.js";
|
|
9
9
|
import { getTrustRoot } from "../certificates/trust_store/index.js";
|
|
10
|
-
import { VCPresentationClient } from "./base_client.js";
|
|
10
|
+
import { VCPresentationClient, } from "./base_client.js";
|
|
11
11
|
const VERIFIERS = { ES256, ES384, ES512 };
|
|
12
12
|
const EXPECTED_CURVE = {
|
|
13
13
|
ES256: "P-256",
|
|
@@ -31,6 +31,62 @@ function kbVerifierFor(kbAlg) {
|
|
|
31
31
|
};
|
|
32
32
|
}
|
|
33
33
|
export class NodeVCPresentationClient extends VCPresentationClient {
|
|
34
|
+
clientSecret;
|
|
35
|
+
usePushedAuthorizationRequest = false;
|
|
36
|
+
trustRoot;
|
|
37
|
+
constructor(params) {
|
|
38
|
+
super(params);
|
|
39
|
+
if (params.clientSecret !== undefined) {
|
|
40
|
+
this.clientSecret = params.clientSecret;
|
|
41
|
+
}
|
|
42
|
+
if (params.usePushedAuthorizationRequest !== undefined) {
|
|
43
|
+
this.usePushedAuthorizationRequest = params.usePushedAuthorizationRequest;
|
|
44
|
+
}
|
|
45
|
+
if (params.trustRoot !== undefined) {
|
|
46
|
+
this.trustRoot = params.trustRoot;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
async getAuthorizationRequestURL(params) {
|
|
50
|
+
this.requireRequestConfig();
|
|
51
|
+
return this.usePushedAuthorizationRequest
|
|
52
|
+
? this.pushAuthorizationRequest(params)
|
|
53
|
+
: this.buildAuthorizeURL(params);
|
|
54
|
+
}
|
|
55
|
+
defaultAuthorizationRequestParameters() {
|
|
56
|
+
return {
|
|
57
|
+
...super.defaultAuthorizationRequestParameters(),
|
|
58
|
+
...(this.clientSecret !== undefined && {
|
|
59
|
+
client_secret: this.clientSecret,
|
|
60
|
+
}),
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
async pushAuthorizationRequest(params) {
|
|
64
|
+
if (this.clientSecret === undefined) {
|
|
65
|
+
throw "pushed authorization requests require `clientSecret` in init()";
|
|
66
|
+
}
|
|
67
|
+
const parURL = new URL(`${this.oid4vpUri}/par`, this.baseURL()).toString();
|
|
68
|
+
const response = await fetch(parURL, {
|
|
69
|
+
method: "POST",
|
|
70
|
+
headers: { "Content-Type": "application/x-www-form-urlencoded" },
|
|
71
|
+
body: this.buildParameters(params).toString(),
|
|
72
|
+
});
|
|
73
|
+
const data = await response.json();
|
|
74
|
+
if (!response.ok) {
|
|
75
|
+
throw `${data["error"]}: ${data["error_description"]}`;
|
|
76
|
+
}
|
|
77
|
+
const authorizeURL = new URL(`${this.oid4vpUri}/authorize`, this.baseURL());
|
|
78
|
+
authorizeURL.search = new URLSearchParams({
|
|
79
|
+
client_id: this.clientId,
|
|
80
|
+
request_uri: data["request_uri"],
|
|
81
|
+
}).toString();
|
|
82
|
+
return authorizeURL.toString();
|
|
83
|
+
}
|
|
84
|
+
requireTrustRoot() {
|
|
85
|
+
if (this.trustRoot === undefined) {
|
|
86
|
+
throw "verify requires `trustRoot` in init()";
|
|
87
|
+
}
|
|
88
|
+
return this.trustRoot;
|
|
89
|
+
}
|
|
34
90
|
async verify({ encodedSDJWT, nonce, aud, }) {
|
|
35
91
|
const decoded = await new SDJwtVcInstance({ hasher }).decode(encodedSDJWT);
|
|
36
92
|
const alg = decoded.jwt?.header?.["alg"];
|
|
@@ -59,7 +115,7 @@ export class NodeVCPresentationClient extends VCPresentationClient {
|
|
|
59
115
|
throw "aud was supplied for verification but the SD-JWT-VC contains no KB JWT";
|
|
60
116
|
}
|
|
61
117
|
const chain = x5c.map((b64) => new X509Certificate(Buffer.from(b64, "base64")));
|
|
62
|
-
verifyChain(chain, getTrustRoot(this.
|
|
118
|
+
verifyChain(chain, getTrustRoot(this.requireTrustRoot()));
|
|
63
119
|
const leafJwk = chain[0].publicKey.export({ format: "jwk" });
|
|
64
120
|
if (leafJwk.crv !== EXPECTED_CURVE[alg]) {
|
|
65
121
|
throw `Leaf cert curve ${leafJwk.crv} does not match alg ${alg}`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node_client.js","sourceRoot":"","sources":["../../src/presentation/node_client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"node_client.js","sourceRoot":"","sources":["../../src/presentation/node_client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AASvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AACpE,OAAO,EACL,oBAAoB,GAErB,MAAM,kBAAkB,CAAC;AAwB1B,MAAM,SAAS,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAW,CAAC;AAGnD,MAAM,cAAc,GAAiC;IACnD,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,OAAO;CACf,CAAC;AAEF,SAAS,cAAc,CAAC,CAAU;IAChC,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,IAAI,SAAS,CAAC;AACjD,CAAC;AAED,SAAS,aAAa,CAAC,KAAmB;IACxC,OAAO,KAAK,EACV,IAAY,EACZ,GAAW,EACX,OAAmB,EACD,EAAE;QACpB,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC;QAChC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,MAAM,qDAAqD,CAAC;QAC9D,CAAC;QACD,IAAI,MAAM,CAAC,GAAG,KAAK,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;YACzC,MAAM,iBAAiB,MAAM,CAAC,GAAG,8BAA8B,KAAK,EAAE,CAAC;QACzE,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAC5D,OAAO,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC7B,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,OAAO,wBAAyB,SAAQ,oBAAoB;IAC7C,YAAY,CAAU;IACtB,6BAA6B,GAAY,KAAK,CAAC;IAC/C,SAAS,CAAa;IAEzC,YAAY,MAAsB;QAChC,KAAK,CAAC,MAAM,CAAC,CAAC;QACd,IAAI,MAAM,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;YACtC,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;QAC1C,CAAC;QACD,IAAI,MAAM,CAAC,6BAA6B,KAAK,SAAS,EAAE,CAAC;YACvD,IAAI,CAAC,6BAA6B,GAAG,MAAM,CAAC,6BAA6B,CAAC;QAC5E,CAAC;QACD,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YACnC,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;QACpC,CAAC;IACH,CAAC;IAEe,KAAK,CAAC,0BAA0B,CAC9C,MAAkC;QAElC,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,OAAO,IAAI,CAAC,6BAA6B;YACvC,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC;YACvC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;IACrC,CAAC;IAEkB,qCAAqC;QAItD,OAAO;YACL,GAAG,KAAK,CAAC,qCAAqC,EAAE;YAChD,GAAG,CAAC,IAAI,CAAC,YAAY,KAAK,SAAS,IAAI;gBACrC,aAAa,EAAE,IAAI,CAAC,YAAY;aACjC,CAAC;SACH,CAAC;IACJ,CAAC;IAES,KAAK,CAAC,wBAAwB,CACtC,MAAkC;QAElC,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;YACpC,MAAM,gEAAgE,CAAC;QACzE,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC3E,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,MAAM,EAAE;YACnC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,mCAAmC,EAAE;YAChE,IAAI,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE;SAC9C,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAEnC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,mBAAmB,CAAC,EAAE,CAAC;QACzD,CAAC;QAED,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,YAAY,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QAC5E,YAAY,CAAC,MAAM,GAAG,IAAI,eAAe,CAAC;YACxC,SAAS,EAAE,IAAI,CAAC,QAAS;YACzB,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC;SACjC,CAAC,CAAC,QAAQ,EAAE,CAAC;QAEd,OAAO,YAAY,CAAC,QAAQ,EAAE,CAAC;IACjC,CAAC;IAES,gBAAgB;QACxB,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YACjC,MAAM,uCAAuC,CAAC;QAChD,CAAC;QACD,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAEM,KAAK,CAAC,MAAM,CAAC,EAClB,YAAY,EACZ,KAAK,EACL,GAAG,GACU;QACb,MAAM,OAAO,GAAG,MAAM,IAAI,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAC3E,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC;QACzC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC;QAEzC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;YACzB,MAAM,+BAA+B,GAAG,EAAE,CAAC;QAC7C,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5C,MAAM,oCAAoC,CAAC;QAC7C,CAAC;QAED,IAAI,UAAU,GAAG,IAAI,CAAC;QACtB,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC;QACzC,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAChC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,MAAM,wEAAwE,CAAC;YACjF,CAAC;YACD,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC3B,MAAM,sCAAsC,KAAK,EAAE,CAAC;YACtD,CAAC;YACD,IAAI,GAAG,KAAK,SAAS,IAAI,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,KAAK,GAAG,EAAE,CAAC;gBAC5D,MAAM,cAAc,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,gCAAgC,GAAG,EAAE,CAAC;YACtF,CAAC;YACD,UAAU,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;QACpC,CAAC;aAAM,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YAC7B,MAAM,wEAAwE,CAAC;QACjF,CAAC;QAED,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CACnB,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,GAAa,EAAE,QAAQ,CAAC,CAAC,CACnE,CAAC;QACF,WAAW,CAAC,KAAK,EAAE,YAAY,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC;QAE1D,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QAC9D,IAAI,OAAO,CAAC,GAAG,KAAK,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;YACxC,MAAM,mBAAmB,OAAO,CAAC,GAAG,uBAAuB,GAAG,EAAE,CAAC;QACnE,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAC3D,MAAM,WAAW,GAAG,IAAI,eAAe,CAAC;YACtC,MAAM;YACN,QAAQ;YACR,GAAG,CAAC,UAAU,KAAK,IAAI,IAAI,EAAE,UAAU,EAAE,CAAC;SAC3C,CAAC,CAAC;QACH,MAAM,WAAW,CAAC,MAAM,CAAC,YAAY,EAAE;YACrC,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC3D,CAAC,CAAC;QAEH,OAAO,kBAAkB,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;IAEM,KAAK,CAAC,aAAa,CAAC,EACzB,cAAc,EACd,KAAK,EACL,GAAG,GACiB;QACpB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,cAAc,CAAC,CAGzD,CAAC;QACF,MAAM,OAAO,GAAG,EAAa,CAAC;QAE9B,KAAK,MAAM,CAAC,GAAG,EAAE,aAAa,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3D,MAAM,YAAY,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;YAC7C,OAAO,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC;YAC3B,KAAK,MAAM,YAAY,IAAI,aAAa,EAAE,CAAC;gBACzC,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC;oBACnC,YAAY;oBACZ,GAAG,CAAC,KAAK,KAAK,SAAS,IAAI,EAAE,KAAK,EAAE,CAAC;oBACrC,GAAG,CAAC,GAAG,KAAK,SAAS,IAAI,EAAE,GAAG,EAAE,CAAC;iBAClC,CAAC,CAAC;gBACH,OAAO,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACzC,CAAC;QACH,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;CACF"}
|
|
@@ -23,20 +23,15 @@ type ProofCredentialV1Params = {
|
|
|
23
23
|
is_over_65?: boolean;
|
|
24
24
|
} & CredentialParams;
|
|
25
25
|
export declare class ProofCredentialV1 extends Credential {
|
|
26
|
-
|
|
27
|
-
|
|
26
|
+
readonly givenName: string | undefined;
|
|
27
|
+
readonly familyName: string | undefined;
|
|
28
|
+
readonly isOver18: boolean | undefined;
|
|
29
|
+
readonly isOver21: boolean | undefined;
|
|
30
|
+
readonly isOver65: boolean | undefined;
|
|
28
31
|
private readonly birth_date;
|
|
29
|
-
private readonly is_over_18;
|
|
30
|
-
private readonly is_over_21;
|
|
31
|
-
private readonly is_over_65;
|
|
32
32
|
constructor(params: ProofCredentialV1Params);
|
|
33
33
|
credentialType(): CredentialType;
|
|
34
34
|
format(): Format;
|
|
35
|
-
|
|
36
|
-
familyName(): string | undefined;
|
|
37
|
-
dateOfBirth(): Date | undefined;
|
|
38
|
-
isOver18(): boolean | undefined;
|
|
39
|
-
isOver21(): boolean | undefined;
|
|
40
|
-
isOver65(): boolean | undefined;
|
|
35
|
+
get dateOfBirth(): Date | undefined;
|
|
41
36
|
}
|
|
42
37
|
//# sourceMappingURL=proof_credentials.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proof_credentials.d.ts","sourceRoot":"","sources":["../src/proof_credentials.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC1E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAE1C,YAAY,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,KAAK,gBAAgB,GAAG;IACtB,KAAK,EAAE,KAAK,CAAC;IACb,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC,CAAC;AAEF,uBAAe,UAAW,YAAW,eAAe;IAClD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;IAC9B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA0B;IAEjD,SAAS,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,gBAAgB;IAKzD,QAAQ,CAAC,cAAc,IAAI,cAAc;IACzC,QAAQ,CAAC,MAAM,IAAI,MAAM;IAElB,SAAS,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAIpC,QAAQ,IAAI,KAAK;CAGzB;AAED,KAAK,uBAAuB,GAAG;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,GAAG,gBAAgB,CAAC;AAErB,qBAAa,iBAAkB,SAAQ,UAAU;IAC/C,
|
|
1
|
+
{"version":3,"file":"proof_credentials.d.ts","sourceRoot":"","sources":["../src/proof_credentials.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC1E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAE1C,YAAY,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,KAAK,gBAAgB,GAAG;IACtB,KAAK,EAAE,KAAK,CAAC;IACb,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC,CAAC;AAEF,uBAAe,UAAW,YAAW,eAAe;IAClD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;IAC9B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA0B;IAEjD,SAAS,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,gBAAgB;IAKzD,QAAQ,CAAC,cAAc,IAAI,cAAc;IACzC,QAAQ,CAAC,MAAM,IAAI,MAAM;IAElB,SAAS,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAIpC,QAAQ,IAAI,KAAK;CAGzB;AAED,KAAK,uBAAuB,GAAG;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,GAAG,gBAAgB,CAAC;AAErB,qBAAa,iBAAkB,SAAQ,UAAU;IAC/C,SAAgB,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9C,SAAgB,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/C,SAAgB,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9C,SAAgB,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9C,SAAgB,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAqB;gBAEpC,MAAM,EAAE,uBAAuB;IAUpC,cAAc,IAAI,cAAc;IAIhC,MAAM,IAAI,MAAM;IAIvB,IAAW,WAAW,IAAI,IAAI,GAAG,SAAS,CAIzC;CACF"}
|
|
@@ -13,20 +13,20 @@ class Credential {
|
|
|
13
13
|
}
|
|
14
14
|
}
|
|
15
15
|
export class ProofCredentialV1 extends Credential {
|
|
16
|
-
|
|
17
|
-
|
|
16
|
+
givenName;
|
|
17
|
+
familyName;
|
|
18
|
+
isOver18;
|
|
19
|
+
isOver21;
|
|
20
|
+
isOver65;
|
|
18
21
|
birth_date;
|
|
19
|
-
is_over_18;
|
|
20
|
-
is_over_21;
|
|
21
|
-
is_over_65;
|
|
22
22
|
constructor(params) {
|
|
23
23
|
super(params);
|
|
24
|
-
this.
|
|
25
|
-
this.
|
|
24
|
+
this.givenName = params.given_name;
|
|
25
|
+
this.familyName = params.family_name;
|
|
26
26
|
this.birth_date = params.birth_date;
|
|
27
|
-
this.
|
|
28
|
-
this.
|
|
29
|
-
this.
|
|
27
|
+
this.isOver18 = params.is_over_18;
|
|
28
|
+
this.isOver21 = params.is_over_21;
|
|
29
|
+
this.isOver65 = params.is_over_65;
|
|
30
30
|
}
|
|
31
31
|
credentialType() {
|
|
32
32
|
return "ProofCredentialV1";
|
|
@@ -34,28 +34,10 @@ export class ProofCredentialV1 extends Credential {
|
|
|
34
34
|
format() {
|
|
35
35
|
return "dc+sd-jwt";
|
|
36
36
|
}
|
|
37
|
-
|
|
38
|
-
return this.
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
return this.family_name;
|
|
42
|
-
}
|
|
43
|
-
dateOfBirth() {
|
|
44
|
-
if (this.birth_date !== undefined) {
|
|
45
|
-
return new Date(this.birth_date);
|
|
46
|
-
}
|
|
47
|
-
else {
|
|
48
|
-
return undefined;
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
isOver18() {
|
|
52
|
-
return this.is_over_18;
|
|
53
|
-
}
|
|
54
|
-
isOver21() {
|
|
55
|
-
return this.is_over_21;
|
|
56
|
-
}
|
|
57
|
-
isOver65() {
|
|
58
|
-
return this.is_over_65;
|
|
37
|
+
get dateOfBirth() {
|
|
38
|
+
return this.birth_date !== undefined
|
|
39
|
+
? new Date(this.birth_date)
|
|
40
|
+
: undefined;
|
|
59
41
|
}
|
|
60
42
|
}
|
|
61
43
|
//# sourceMappingURL=proof_credentials.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proof_credentials.js","sourceRoot":"","sources":["../src/proof_credentials.ts"],"names":[],"mappings":"AAUA,MAAe,UAAU;IACN,KAAK,CAAQ;IACb,MAAM,CAA0B;IAEjD,YAAsB,EAAE,KAAK,EAAE,MAAM,EAAoB;QACvD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAKM,SAAS;QACd,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAEM,QAAQ;QACb,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;CACF;AAWD,MAAM,OAAO,iBAAkB,SAAQ,UAAU;
|
|
1
|
+
{"version":3,"file":"proof_credentials.js","sourceRoot":"","sources":["../src/proof_credentials.ts"],"names":[],"mappings":"AAUA,MAAe,UAAU;IACN,KAAK,CAAQ;IACb,MAAM,CAA0B;IAEjD,YAAsB,EAAE,KAAK,EAAE,MAAM,EAAoB;QACvD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAKM,SAAS;QACd,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAEM,QAAQ;QACb,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;CACF;AAWD,MAAM,OAAO,iBAAkB,SAAQ,UAAU;IAC/B,SAAS,CAAqB;IAC9B,UAAU,CAAqB;IAC/B,QAAQ,CAAsB;IAC9B,QAAQ,CAAsB;IAC9B,QAAQ,CAAsB;IAC7B,UAAU,CAAqB;IAEhD,YAAY,MAA+B;QACzC,KAAK,CAAC,MAAM,CAAC,CAAC;QACd,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC;QACnC,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC;QACrC,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;QACpC,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC;QAClC,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC;QAClC,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC;IACpC,CAAC;IAEM,cAAc;QACnB,OAAO,mBAAmB,CAAC;IAC7B,CAAC;IAEM,MAAM;QACX,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,IAAW,WAAW;QACpB,OAAO,IAAI,CAAC,UAAU,KAAK,SAAS;YAClC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;YAC3B,CAAC,CAAC,SAAS,CAAC;IAChB,CAAC;CACF"}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { SDJwt } from "@sd-jwt/core";
|
|
2
2
|
export type Environment = "localhost" | "next" | "staging" | "sandbox" | "production";
|
|
3
|
+
export type TrustRoot = "development" | "production";
|
|
3
4
|
export type ResponseMode = "fragment" | "direct_post";
|
|
4
5
|
export type ResponseType = "vp_token";
|
|
5
6
|
export type Scope = "urn:proof:params:scope:verifiable-credentials:basic";
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAE1C,MAAM,MAAM,WAAW,GACnB,WAAW,GACX,MAAM,GACN,SAAS,GACT,SAAS,GACT,YAAY,CAAC;AACjB,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,aAAa,CAAC;AACtD,MAAM,MAAM,YAAY,GAAG,UAAU,CAAC;AACtC,MAAM,MAAM,KAAK,GAAG,qDAAqD,CAAC;AAC1E,MAAM,MAAM,YAAY,GAAG,kBAAkB,CAAC;AAC9C,MAAM,MAAM,cAAc,GAAG,mBAAmB,CAAC;AACjD,MAAM,MAAM,MAAM,GAAG,WAAW,CAAC;AAEjC,MAAM,WAAW,eAAe;IAC9B,cAAc,IAAI,cAAc,CAAC;IACjC,MAAM,IAAI,MAAM,CAAC;IACjB,SAAS,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,QAAQ,IAAI,KAAK,CAAC;CACnB;AAED,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC,YAAY,EAAE,eAAe,EAAE,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAE1C,MAAM,MAAM,WAAW,GACnB,WAAW,GACX,MAAM,GACN,SAAS,GACT,SAAS,GACT,YAAY,CAAC;AACjB,MAAM,MAAM,SAAS,GAAG,aAAa,GAAG,YAAY,CAAC;AACrD,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,aAAa,CAAC;AACtD,MAAM,MAAM,YAAY,GAAG,UAAU,CAAC;AACtC,MAAM,MAAM,KAAK,GAAG,qDAAqD,CAAC;AAC1E,MAAM,MAAM,YAAY,GAAG,kBAAkB,CAAC;AAC9C,MAAM,MAAM,cAAc,GAAG,mBAAmB,CAAC;AACjD,MAAM,MAAM,MAAM,GAAG,WAAW,CAAC;AAEjC,MAAM,WAAW,eAAe;IAC9B,cAAc,IAAI,cAAc,CAAC;IACjC,MAAM,IAAI,MAAM,CAAC;IACjB,SAAS,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,QAAQ,IAAI,KAAK,CAAC;CACnB;AAED,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC,YAAY,EAAE,eAAe,EAAE,CAAC,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type
|
|
2
|
-
export declare function init(params:
|
|
1
|
+
import { type BrowserInitParams, type AuthorizationRequestParams } from "./presentation/base_client.ts";
|
|
2
|
+
export declare function init(params: BrowserInitParams): void;
|
|
3
3
|
export declare function getAuthorizationRequestURL(params: AuthorizationRequestParams): Promise<string>;
|
|
4
4
|
//# sourceMappingURL=vc_presentation.browser.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vc_presentation.browser.d.ts","sourceRoot":"","sources":["../src/vc_presentation.browser.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,
|
|
1
|
+
{"version":3,"file":"vc_presentation.browser.d.ts","sourceRoot":"","sources":["../src/vc_presentation.browser.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,0BAA0B,EAChC,MAAM,+BAA+B,CAAC;AAIvC,wBAAgB,IAAI,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI,CAIpD;AAED,wBAAsB,0BAA0B,CAC9C,MAAM,EAAE,0BAA0B,GACjC,OAAO,CAAC,MAAM,CAAC,CAIjB"}
|
|
@@ -2,7 +2,7 @@ import { VCPresentationClient, } from "./presentation/base_client.js";
|
|
|
2
2
|
let instance = null;
|
|
3
3
|
export function init(params) {
|
|
4
4
|
if (params.environment === "production" && instance)
|
|
5
|
-
throw
|
|
5
|
+
throw "VCPresentationClient already initialized (browser)";
|
|
6
6
|
instance = new VCPresentationClient(params);
|
|
7
7
|
}
|
|
8
8
|
export async function getAuthorizationRequestURL(params) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vc_presentation.browser.js","sourceRoot":"","sources":["../src/vc_presentation.browser.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,GAGrB,MAAM,+BAA+B,CAAC;AAEvC,IAAI,QAAQ,GAAgC,IAAI,CAAC;AAEjD,MAAM,UAAU,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"vc_presentation.browser.js","sourceRoot":"","sources":["../src/vc_presentation.browser.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,GAGrB,MAAM,+BAA+B,CAAC;AAEvC,IAAI,QAAQ,GAAgC,IAAI,CAAC;AAEjD,MAAM,UAAU,IAAI,CAAC,MAAyB;IAC5C,IAAI,MAAM,CAAC,WAAW,KAAK,YAAY,IAAI,QAAQ;QACjD,MAAM,oDAAoD,CAAC;IAC7D,QAAQ,GAAG,IAAI,oBAAoB,CAAC,MAAM,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,MAAkC;IAElC,IAAI,CAAC,QAAQ;QACX,MAAM,oEAAoE,CAAC;IAC7E,OAAO,QAAQ,CAAC,0BAA0B,CAAC,MAAM,CAAC,CAAC;AACrD,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import { type VerifyParams, type VerifyVPTokenParams } from "./presentation/node_client.ts";
|
|
1
|
+
import type { AuthorizationRequestParams } from "./presentation/base_client.ts";
|
|
2
|
+
import { type NodeInitParams, type VerifyParams, type VerifyVPTokenParams } from "./presentation/node_client.ts";
|
|
3
3
|
import type { ProofCredential, VPToken } from "./types.ts";
|
|
4
|
-
export declare function init(params:
|
|
4
|
+
export declare function init(params: NodeInitParams): void;
|
|
5
5
|
export declare function getAuthorizationRequestURL(params: AuthorizationRequestParams): Promise<string>;
|
|
6
6
|
export declare function verify(params: VerifyParams): Promise<ProofCredential>;
|
|
7
7
|
export declare function verifyVPToken(params: VerifyVPTokenParams): Promise<VPToken>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vc_presentation.node.d.ts","sourceRoot":"","sources":["../src/vc_presentation.node.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"vc_presentation.node.d.ts","sourceRoot":"","sources":["../src/vc_presentation.node.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AAChF,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,mBAAmB,EACzB,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAI3D,wBAAgB,IAAI,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAIjD;AAED,wBAAsB,0BAA0B,CAC9C,MAAM,EAAE,0BAA0B,GACjC,OAAO,CAAC,MAAM,CAAC,CAIjB;AAED,wBAAsB,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,eAAe,CAAC,CAI3E;AAED,wBAAsB,aAAa,CACjC,MAAM,EAAE,mBAAmB,GAC1B,OAAO,CAAC,OAAO,CAAC,CAIlB"}
|
|
@@ -2,7 +2,7 @@ import { NodeVCPresentationClient, } from "./presentation/node_client.js";
|
|
|
2
2
|
let instance = null;
|
|
3
3
|
export function init(params) {
|
|
4
4
|
if (params.environment === "production" && instance)
|
|
5
|
-
throw
|
|
5
|
+
throw "NodeVCPresentationClient already initialized (node)";
|
|
6
6
|
instance = new NodeVCPresentationClient(params);
|
|
7
7
|
}
|
|
8
8
|
export async function getAuthorizationRequestURL(params) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vc_presentation.node.js","sourceRoot":"","sources":["../src/vc_presentation.node.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"vc_presentation.node.js","sourceRoot":"","sources":["../src/vc_presentation.node.ts"],"names":[],"mappings":"AACA,OAAO,EACL,wBAAwB,GAIzB,MAAM,+BAA+B,CAAC;AAGvC,IAAI,QAAQ,GAAoC,IAAI,CAAC;AAErD,MAAM,UAAU,IAAI,CAAC,MAAsB;IACzC,IAAI,MAAM,CAAC,WAAW,KAAK,YAAY,IAAI,QAAQ;QACjD,MAAM,qDAAqD,CAAC;IAC9D,QAAQ,GAAG,IAAI,wBAAwB,CAAC,MAAM,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,MAAkC;IAElC,IAAI,CAAC,QAAQ;QACX,MAAM,qEAAqE,CAAC;IAC9E,OAAO,QAAQ,CAAC,0BAA0B,CAAC,MAAM,CAAC,CAAC;AACrD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,MAAoB;IAC/C,IAAI,CAAC,QAAQ;QACX,MAAM,qEAAqE,CAAC;IAC9E,OAAO,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACjC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,MAA2B;IAE3B,IAAI,CAAC,QAAQ;QACX,MAAM,qEAAqE,CAAC;IAC9E,OAAO,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;AACxC,CAAC"}
|