@proof.com/proof-vc-common 0.1.2 → 0.1.3
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 +3 -3
- package/dist/presentation/base_client.d.ts +3 -1
- package/dist/presentation/base_client.d.ts.map +1 -1
- package/dist/presentation/base_client.js +28 -21
- package/dist/presentation/base_client.js.map +1 -1
- package/dist/presentation/node_client.d.ts.map +1 -1
- package/dist/presentation/node_client.js +32 -2
- package/dist/presentation/node_client.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -285,7 +285,7 @@ if (verifiableCredential.isOver18()) {
|
|
|
285
285
|
}
|
|
286
286
|
```
|
|
287
287
|
|
|
288
|
-
|
|
288
|
+
## Certificate Authority
|
|
289
289
|
|
|
290
290
|
Proof's Verifiable Credentials are issued by our [Certificate Authority](https://www.proof.com/legal/certificate-policy)
|
|
291
291
|
following the CA/B Forum Baseline Requirements for the Issuance and Management of Publicly-Trusted TLS Server Certificates published at https://www.cabforum.org.
|
|
@@ -295,11 +295,11 @@ is also committed in this repository [proof-root-ca-r1.crt](src/certificates/tru
|
|
|
295
295
|
|
|
296
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 `environment: "sandbox"`.
|
|
297
297
|
|
|
298
|
-
|
|
298
|
+
## Documentation
|
|
299
299
|
|
|
300
300
|
_Digital Credentials_ guides https://dev.proof.com/docs/digital-credentials-overview \
|
|
301
301
|
_API Documentation_ https://dev.proof.com/reference/authorizeverifiablecredentialpresentation
|
|
302
302
|
|
|
303
|
-
|
|
303
|
+
## Contributing
|
|
304
304
|
|
|
305
305
|
[Contribution guidelines for this project](CONTRIBUTING.md)
|
|
@@ -27,7 +27,9 @@ export declare class VCPresentationClient {
|
|
|
27
27
|
constructor({ environment, client_id, client_secret, use_pushed_authorization_request, response_mode, callback_uri, }: VCPresentationClientParams);
|
|
28
28
|
getAuthorizationRequestURL(params: AuthorizationRequestParams): Promise<string>;
|
|
29
29
|
protected baseURL(): string;
|
|
30
|
-
private
|
|
30
|
+
private buildAuthorizeURL;
|
|
31
|
+
private pushAuthorizationRequest;
|
|
32
|
+
private buildParameters;
|
|
31
33
|
private defaultAuthorizationRequestParameters;
|
|
32
34
|
}
|
|
33
35
|
//# 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,0BAA0B,GAAG;IACvC,WAAW,EAAE,WAAW,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gCAAgC,CAAC,EAAE,OAAO,CAAC;IAC3C,aAAa,CAAC,EAAE,YAAY,CAAC;IAC7B,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG;IACvC,KAAK,EAAE,KAAK,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,eAAe,GAAG,MAAM,CAAC;CAC7C,CAAC;AAEF,qBAAa,oBAAoB;IAC/B,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAC5C,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IACrC,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAC1C,SAAS,CAAC,QAAQ,CAAC,gCAAgC,EAAE,OAAO,CAAS;IACrE,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,YAAY,CAAc;IAC5D,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,YAAY,CAAc;IAC5D,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IACxC,SAAS,CAAC,QAAQ,CAAC,UAAU,6CAA6C;gBAE9D,EACV,WAAW,EACX,SAAS,EACT,aAAa,EACb,gCAAgC,EAChC,aAAa,EACb,YAAY,GACb,EAAE,0BAA0B;IAgBhB,0BAA0B,CACrC,MAAM,EAAE,0BAA0B,GACjC,OAAO,CAAC,MAAM,CAAC;
|
|
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,0BAA0B,GAAG;IACvC,WAAW,EAAE,WAAW,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gCAAgC,CAAC,EAAE,OAAO,CAAC;IAC3C,aAAa,CAAC,EAAE,YAAY,CAAC;IAC7B,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG;IACvC,KAAK,EAAE,KAAK,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,eAAe,GAAG,MAAM,CAAC;CAC7C,CAAC;AAEF,qBAAa,oBAAoB;IAC/B,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAC5C,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IACrC,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAC1C,SAAS,CAAC,QAAQ,CAAC,gCAAgC,EAAE,OAAO,CAAS;IACrE,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,YAAY,CAAc;IAC5D,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,YAAY,CAAc;IAC5D,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IACxC,SAAS,CAAC,QAAQ,CAAC,UAAU,6CAA6C;gBAE9D,EACV,WAAW,EACX,SAAS,EACT,aAAa,EACb,gCAAgC,EAChC,aAAa,EACb,YAAY,GACb,EAAE,0BAA0B;IAgBhB,0BAA0B,CACrC,MAAM,EAAE,0BAA0B,GACjC,OAAO,CAAC,MAAM,CAAC;IAMlB,SAAS,CAAC,OAAO,IAAI,MAAM;IAe3B,OAAO,CAAC,iBAAiB;YAMX,wBAAwB;IA2BtC,OAAO,CAAC,eAAe;IAuBvB,OAAO,CAAC,qCAAqC;CAgB9C"}
|
|
@@ -23,20 +23,9 @@ export class VCPresentationClient {
|
|
|
23
23
|
}
|
|
24
24
|
}
|
|
25
25
|
async getAuthorizationRequestURL(params) {
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
const data = await response.json();
|
|
30
|
-
if (!response.ok) {
|
|
31
|
-
throw `${data["error"]}: ${data["error_description"]}`;
|
|
32
|
-
}
|
|
33
|
-
else {
|
|
34
|
-
return data["request_uri"];
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
else {
|
|
38
|
-
return url;
|
|
39
|
-
}
|
|
26
|
+
return this.use_pushed_authorization_request
|
|
27
|
+
? this.pushAuthorizationRequest(params)
|
|
28
|
+
: this.buildAuthorizeURL(params);
|
|
40
29
|
}
|
|
41
30
|
baseURL() {
|
|
42
31
|
switch (this.environment) {
|
|
@@ -52,15 +41,34 @@ export class VCPresentationClient {
|
|
|
52
41
|
return "https://api.proof.com";
|
|
53
42
|
}
|
|
54
43
|
}
|
|
55
|
-
|
|
56
|
-
const
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
44
|
+
buildAuthorizeURL(params) {
|
|
45
|
+
const url = new URL(`${this.oid4vp_uri}/authorize`, this.baseURL());
|
|
46
|
+
url.search = this.buildParameters(params).toString();
|
|
47
|
+
return url.toString();
|
|
48
|
+
}
|
|
49
|
+
async pushAuthorizationRequest(params) {
|
|
50
|
+
const parURL = new URL(`${this.oid4vp_uri}/par`, this.baseURL()).toString();
|
|
51
|
+
const response = await fetch(parURL, {
|
|
52
|
+
method: "POST",
|
|
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, }) {
|
|
60
68
|
const encodedTransactionData = typeof transaction_data === "object"
|
|
61
69
|
? encodeTransactionData(transaction_data)
|
|
62
70
|
: transaction_data;
|
|
63
|
-
|
|
71
|
+
return new URLSearchParams({
|
|
64
72
|
...this.defaultAuthorizationRequestParameters(),
|
|
65
73
|
scope,
|
|
66
74
|
nonce,
|
|
@@ -70,7 +78,6 @@ export class VCPresentationClient {
|
|
|
70
78
|
transaction_data: encodedTransactionData,
|
|
71
79
|
}),
|
|
72
80
|
});
|
|
73
|
-
return new URL(`${this.oid4vp_uri}${endpoint}?${params}`, baseURL).toString();
|
|
74
81
|
}
|
|
75
82
|
defaultAuthorizationRequestParameters() {
|
|
76
83
|
return {
|
|
@@ -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;AAmBhC,MAAM,OAAO,oBAAoB;IACZ,WAAW,CAAc;IACzB,SAAS,CAAS;IAClB,aAAa,CAAU;IACvB,gCAAgC,GAAY,KAAK,CAAC;IAClD,aAAa,GAAiB,UAAU,CAAC;IACzC,aAAa,GAAiB,UAAU,CAAC;IACzC,YAAY,CAAS;IACrB,UAAU,GAAG,yCAAyC,CAAC;IAE1E,YAAY,EACV,WAAW,EACX,SAAS,EACT,aAAa,EACb,gCAAgC,EAChC,aAAa,EACb,YAAY,GACe;QAC3B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QAEjC,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;YAChC,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACrC,CAAC;QACD,IAAI,gCAAgC,KAAK,SAAS,EAAE,CAAC;YACnD,IAAI,CAAC,gCAAgC,GAAG,gCAAgC,CAAC;QAC3E,CAAC;QACD,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;YAChC,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACrC,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,0BAA0B,CACrC,MAAkC;QAElC,MAAM,
|
|
1
|
+
{"version":3,"file":"base_client.js","sourceRoot":"","sources":["../../src/presentation/base_client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node_client.d.ts","sourceRoot":"","sources":["../../src/presentation/node_client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"node_client.d.ts","sourceRoot":"","sources":["../../src/presentation/node_client.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAK5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAExD,MAAM,MAAM,YAAY,GAAG;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAiCF,qBAAa,wBAAyB,SAAQ,oBAAoB;IACnD,MAAM,CAAC,EAClB,YAAY,EACZ,KAAK,GACN,EAAE,YAAY,GAAG,OAAO,CAAC,eAAe,CAAC;IA+C7B,aAAa,CAAC,EACzB,cAAc,EACd,KAAK,GACN,EAAE,mBAAmB,GAAG,OAAO,CAAC,OAAO,CAAC;CAoB1C"}
|
|
@@ -17,6 +17,19 @@ const EXPECTED_CURVE = {
|
|
|
17
17
|
function isSupportedAlg(s) {
|
|
18
18
|
return typeof s === "string" && s in VERIFIERS;
|
|
19
19
|
}
|
|
20
|
+
function kbVerifierFor(kbAlg) {
|
|
21
|
+
return async (data, sig, payload) => {
|
|
22
|
+
const cnfJwk = payload.cnf?.jwk;
|
|
23
|
+
if (cnfJwk === undefined) {
|
|
24
|
+
throw "SD-JWT-VC is missing cnf.jwk — cannot verify KB JWT";
|
|
25
|
+
}
|
|
26
|
+
if (cnfJwk.crv !== EXPECTED_CURVE[kbAlg]) {
|
|
27
|
+
throw `cnf.jwk curve ${cnfJwk.crv} does not match KB JWT alg ${kbAlg}`;
|
|
28
|
+
}
|
|
29
|
+
const verifier = await VERIFIERS[kbAlg].getVerifier(cnfJwk);
|
|
30
|
+
return verifier(data, sig);
|
|
31
|
+
};
|
|
32
|
+
}
|
|
20
33
|
export class NodeVCPresentationClient extends VCPresentationClient {
|
|
21
34
|
async verify({ encodedSDJWT, nonce, }) {
|
|
22
35
|
const decoded = await new SDJwtVcInstance({ hasher }).decode(encodedSDJWT);
|
|
@@ -28,6 +41,17 @@ export class NodeVCPresentationClient extends VCPresentationClient {
|
|
|
28
41
|
if (!Array.isArray(x5c) || x5c.length === 0) {
|
|
29
42
|
throw "JWT header x5c is missing or empty";
|
|
30
43
|
}
|
|
44
|
+
let kbVerifier = null;
|
|
45
|
+
const kbAlg = decoded.kbJwt?.header?.alg;
|
|
46
|
+
if (decoded.kbJwt !== undefined) {
|
|
47
|
+
if (nonce === undefined) {
|
|
48
|
+
throw "SD-JWT-VC contains a KB JWT but no nonce was supplied for verification";
|
|
49
|
+
}
|
|
50
|
+
if (!isSupportedAlg(kbAlg)) {
|
|
51
|
+
throw `Unsupported or missing KB JWT alg: ${kbAlg}`;
|
|
52
|
+
}
|
|
53
|
+
kbVerifier = kbVerifierFor(kbAlg);
|
|
54
|
+
}
|
|
31
55
|
const chain = x5c.map((b64) => new X509Certificate(Buffer.from(b64, "base64")));
|
|
32
56
|
verifyChain(chain, getTrustRoot(this.environment));
|
|
33
57
|
const leafJwk = chain[0].publicKey.export({ format: "jwk" });
|
|
@@ -35,8 +59,14 @@ export class NodeVCPresentationClient extends VCPresentationClient {
|
|
|
35
59
|
throw `Leaf cert curve ${leafJwk.crv} does not match alg ${alg}`;
|
|
36
60
|
}
|
|
37
61
|
const verifier = await VERIFIERS[alg].getVerifier(leafJwk);
|
|
38
|
-
const SDJWTClient = new SDJwtVcInstance({
|
|
39
|
-
|
|
62
|
+
const SDJWTClient = new SDJwtVcInstance({
|
|
63
|
+
hasher,
|
|
64
|
+
verifier,
|
|
65
|
+
...(kbVerifier !== null && { kbVerifier }),
|
|
66
|
+
});
|
|
67
|
+
await SDJWTClient.verify(encodedSDJWT, {
|
|
68
|
+
...(nonce !== undefined ? { keyBindingNonce: nonce } : {}),
|
|
69
|
+
});
|
|
40
70
|
return getProofCredential(decoded);
|
|
41
71
|
}
|
|
42
72
|
async verifyVPToken({ encodedVPToken, nonce, }) {
|
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"node_client.js","sourceRoot":"","sources":["../../src/presentation/node_client.ts"],"names":[],"mappings":"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"}
|