@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 CHANGED
@@ -285,7 +285,7 @@ if (verifiableCredential.isOver18()) {
285
285
  }
286
286
  ```
287
287
 
288
- ### Certificate Authority
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
- ### Documentation
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
- ### Contributing
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 buildAuthorizationRequestURL;
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;IAiBlB,SAAS,CAAC,OAAO,IAAI,MAAM;IAe3B,OAAO,CAAC,4BAA4B;IAgCpC,OAAO,CAAC,qCAAqC;CAgB9C"}
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
- const url = this.buildAuthorizationRequestURL(params);
27
- if (this.use_pushed_authorization_request) {
28
- const response = await fetch(url, { method: "post" });
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
- buildAuthorizationRequestURL({ scope, nonce, state, login_hint, transaction_data, }) {
56
- const baseURL = this.baseURL();
57
- const endpoint = this.use_pushed_authorization_request
58
- ? "/par"
59
- : "/authorize";
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
- const params = new URLSearchParams({
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":"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"}
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":"AAMA,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;AAeF,qBAAa,wBAAyB,SAAQ,oBAAoB;IACnD,MAAM,CAAC,EAClB,YAAY,EACZ,KAAK,GACN,EAAE,YAAY,GAAG,OAAO,CAAC,eAAe,CAAC;IA6B7B,aAAa,CAAC,EACzB,cAAc,EACd,KAAK,GACN,EAAE,mBAAmB,GAAG,OAAO,CAAC,OAAO,CAAC;CAoB1C"}
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({ hasher, verifier });
39
- await SDJWTClient.verify(encodedSDJWT, { nonce });
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":"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"}
1
+ {"version":3,"file":"node_client.js","sourceRoot":"","sources":["../../src/presentation/node_client.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@proof.com/proof-vc-common",
3
- "version": "0.1.2",
3
+ "version": "0.1.3",
4
4
  "description": "A digital passport. Verified once, usable everywhere.",
5
5
  "keywords": [
6
6
  "VC",