@proof.com/proof-vc-common 0.1.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/LICENSE +201 -0
- package/README.md +305 -0
- package/dist/certificates/chain_validator.d.ts +3 -0
- package/dist/certificates/chain_validator.d.ts.map +1 -0
- package/dist/certificates/chain_validator.js +29 -0
- package/dist/certificates/chain_validator.js.map +1 -0
- package/dist/certificates/trust_store/index.d.ts +4 -0
- package/dist/certificates/trust_store/index.d.ts.map +1 -0
- package/dist/certificates/trust_store/index.js +17 -0
- package/dist/certificates/trust_store/index.js.map +1 -0
- package/dist/certificates/trust_store/proof_root_ca_r1.d.ts +2 -0
- package/dist/certificates/trust_store/proof_root_ca_r1.d.ts.map +1 -0
- package/dist/certificates/trust_store/proof_root_ca_r1.js +16 -0
- package/dist/certificates/trust_store/proof_root_ca_r1.js.map +1 -0
- package/dist/certificates/trust_store/proof_root_ca_r1_development.d.ts +2 -0
- package/dist/certificates/trust_store/proof_root_ca_r1_development.d.ts.map +1 -0
- package/dist/certificates/trust_store/proof_root_ca_r1_development.js +17 -0
- package/dist/certificates/trust_store/proof_root_ca_r1_development.js.map +1 -0
- package/dist/index.browser.d.ts +5 -0
- package/dist/index.browser.d.ts.map +1 -0
- package/dist/index.browser.js +3 -0
- package/dist/index.browser.js.map +1 -0
- package/dist/index.node.d.ts +5 -0
- package/dist/index.node.d.ts.map +1 -0
- package/dist/index.node.js +3 -0
- package/dist/index.node.js.map +1 -0
- package/dist/presentation/base_client.d.ts +33 -0
- package/dist/presentation/base_client.d.ts.map +1 -0
- package/dist/presentation/base_client.js +92 -0
- package/dist/presentation/base_client.js.map +1 -0
- package/dist/presentation/node_client.d.ts +15 -0
- package/dist/presentation/node_client.d.ts.map +1 -0
- package/dist/presentation/node_client.js +59 -0
- package/dist/presentation/node_client.js.map +1 -0
- package/dist/proof_credential_factory.d.ts +4 -0
- package/dist/proof_credential_factory.d.ts.map +1 -0
- package/dist/proof_credential_factory.js +37 -0
- package/dist/proof_credential_factory.js.map +1 -0
- package/dist/proof_credentials.d.ts +42 -0
- package/dist/proof_credentials.d.ts.map +1 -0
- package/dist/proof_credentials.js +61 -0
- package/dist/proof_credentials.js.map +1 -0
- package/dist/transaction_data.d.ts +73 -0
- package/dist/transaction_data.d.ts.map +1 -0
- package/dist/transaction_data.js +51 -0
- package/dist/transaction_data.js.map +1 -0
- package/dist/types.d.ts +16 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/utils.d.ts +3 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +10 -0
- package/dist/utils.js.map +1 -0
- package/dist/vc_presentation.browser.d.ts +4 -0
- package/dist/vc_presentation.browser.d.ts.map +1 -0
- package/dist/vc_presentation.browser.js +13 -0
- package/dist/vc_presentation.browser.js.map +1 -0
- package/dist/vc_presentation.node.d.ts +8 -0
- package/dist/vc_presentation.node.d.ts.map +1 -0
- package/dist/vc_presentation.node.js +23 -0
- package/dist/vc_presentation.node.js.map +1 -0
- package/package.json +77 -0
|
@@ -0,0 +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;AAEtE,OAAO,EAAE,IAAI,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export type * from "./types.ts";
|
|
2
|
+
export type { TransactionData, WireInstructionsTransactionData, PaymentMandateTransactionData, PaymentItemizedTransactionData, SessionDataTransactionData, WireInstructionsPayload, PaymentMandatePayload, PaymentItemizedPayload, PaymentItemizedItem, SessionDataPayload, } from "./transaction_data.ts";
|
|
3
|
+
export { TX_DATA_TYPE, transactionData } from "./transaction_data.ts";
|
|
4
|
+
export { init, getAuthorizationRequestURL, verify, verifyVPToken, } from "./vc_presentation.node.ts";
|
|
5
|
+
//# sourceMappingURL=index.node.d.ts.map
|
|
@@ -0,0 +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,EACL,IAAI,EACJ,0BAA0B,EAC1B,MAAM,EACN,aAAa,GACd,MAAM,2BAA2B,CAAC"}
|
|
@@ -0,0 +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,EACL,IAAI,EACJ,0BAA0B,EAC1B,MAAM,EACN,aAAa,GACd,MAAM,2BAA2B,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { Environment, ResponseMode, ResponseType, Scope } from "../types.ts";
|
|
2
|
+
import { type TransactionData } from "../transaction_data.ts";
|
|
3
|
+
export type VCPresentationClientParams = {
|
|
4
|
+
environment: Environment;
|
|
5
|
+
client_id: string;
|
|
6
|
+
client_secret?: string;
|
|
7
|
+
use_pushed_authorization_request?: boolean;
|
|
8
|
+
response_mode?: ResponseMode;
|
|
9
|
+
callback_uri: string;
|
|
10
|
+
};
|
|
11
|
+
export type AuthorizationRequestParams = {
|
|
12
|
+
scope: Scope;
|
|
13
|
+
nonce: string;
|
|
14
|
+
state?: string;
|
|
15
|
+
login_hint?: string;
|
|
16
|
+
transaction_data?: TransactionData | string;
|
|
17
|
+
};
|
|
18
|
+
export declare class VCPresentationClient {
|
|
19
|
+
protected readonly environment: Environment;
|
|
20
|
+
protected readonly client_id: string;
|
|
21
|
+
protected readonly client_secret?: string;
|
|
22
|
+
protected readonly use_pushed_authorization_request: boolean;
|
|
23
|
+
protected readonly response_mode: ResponseMode;
|
|
24
|
+
protected readonly response_type: ResponseType;
|
|
25
|
+
protected readonly callback_uri: string;
|
|
26
|
+
protected readonly oid4vp_uri = "/verifiable-credentials/v1/presentation";
|
|
27
|
+
constructor({ environment, client_id, client_secret, use_pushed_authorization_request, response_mode, callback_uri, }: VCPresentationClientParams);
|
|
28
|
+
getAuthorizationRequestURL(params: AuthorizationRequestParams): Promise<string>;
|
|
29
|
+
protected baseURL(): string;
|
|
30
|
+
private buildAuthorizationRequestURL;
|
|
31
|
+
private defaultAuthorizationRequestParameters;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=base_client.d.ts.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { encodeTransactionData, } from "../transaction_data.js";
|
|
2
|
+
export class VCPresentationClient {
|
|
3
|
+
environment;
|
|
4
|
+
client_id;
|
|
5
|
+
client_secret;
|
|
6
|
+
use_pushed_authorization_request = false;
|
|
7
|
+
response_mode = "fragment";
|
|
8
|
+
response_type = "vp_token";
|
|
9
|
+
callback_uri;
|
|
10
|
+
oid4vp_uri = "/verifiable-credentials/v1/presentation";
|
|
11
|
+
constructor({ environment, client_id, client_secret, use_pushed_authorization_request, response_mode, callback_uri, }) {
|
|
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;
|
|
17
|
+
}
|
|
18
|
+
if (use_pushed_authorization_request !== undefined) {
|
|
19
|
+
this.use_pushed_authorization_request = use_pushed_authorization_request;
|
|
20
|
+
}
|
|
21
|
+
if (response_mode !== undefined) {
|
|
22
|
+
this.response_mode = response_mode;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
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
|
+
}
|
|
40
|
+
}
|
|
41
|
+
baseURL() {
|
|
42
|
+
switch (this.environment) {
|
|
43
|
+
case "localhost":
|
|
44
|
+
return "https://api.local.dev-notarize.com";
|
|
45
|
+
case "next":
|
|
46
|
+
return "https://api.next.proof.com";
|
|
47
|
+
case "staging":
|
|
48
|
+
return "https://api.staging.proof.com";
|
|
49
|
+
case "sandbox":
|
|
50
|
+
return "https://api.fairfax.proof.com";
|
|
51
|
+
case "production":
|
|
52
|
+
return "https://api.proof.com";
|
|
53
|
+
}
|
|
54
|
+
}
|
|
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";
|
|
60
|
+
const encodedTransactionData = typeof transaction_data === "object"
|
|
61
|
+
? encodeTransactionData(transaction_data)
|
|
62
|
+
: transaction_data;
|
|
63
|
+
const params = new URLSearchParams({
|
|
64
|
+
...this.defaultAuthorizationRequestParameters(),
|
|
65
|
+
scope,
|
|
66
|
+
nonce,
|
|
67
|
+
...(state !== undefined && { state }),
|
|
68
|
+
...(login_hint !== undefined && { login_hint }),
|
|
69
|
+
...(encodedTransactionData !== undefined && {
|
|
70
|
+
transaction_data: encodedTransactionData,
|
|
71
|
+
}),
|
|
72
|
+
});
|
|
73
|
+
return new URL(`${this.oid4vp_uri}${endpoint}?${params}`, baseURL).toString();
|
|
74
|
+
}
|
|
75
|
+
defaultAuthorizationRequestParameters() {
|
|
76
|
+
return {
|
|
77
|
+
client_id: this.client_id,
|
|
78
|
+
...(this.client_secret !== undefined && {
|
|
79
|
+
client_secret: this.client_secret,
|
|
80
|
+
}),
|
|
81
|
+
response_mode: this.response_mode,
|
|
82
|
+
response_type: this.response_type,
|
|
83
|
+
...(this.response_mode === "fragment" && {
|
|
84
|
+
redirect_uri: this.callback_uri,
|
|
85
|
+
}),
|
|
86
|
+
...(this.response_mode === "direct_post" && {
|
|
87
|
+
response_uri: this.callback_uri,
|
|
88
|
+
}),
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=base_client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base_client.js","sourceRoot":"","sources":["../../src/presentation/base_client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { ProofCredential, VPToken } from "../types.ts";
|
|
2
|
+
import { VCPresentationClient } from "./base_client.ts";
|
|
3
|
+
export type VerifyParams = {
|
|
4
|
+
encodedSDJWT: string;
|
|
5
|
+
nonce?: string;
|
|
6
|
+
};
|
|
7
|
+
export type VerifyVPTokenParams = {
|
|
8
|
+
encodedVPToken: string;
|
|
9
|
+
nonce?: string;
|
|
10
|
+
};
|
|
11
|
+
export declare class NodeVCPresentationClient extends VCPresentationClient {
|
|
12
|
+
verify({ encodedSDJWT, nonce, }: VerifyParams): Promise<ProofCredential>;
|
|
13
|
+
verifyVPToken({ encodedVPToken, nonce, }: VerifyVPTokenParams): Promise<VPToken>;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=node_client.d.ts.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { X509Certificate } from "node:crypto";
|
|
2
|
+
import { Buffer } from "node:buffer";
|
|
3
|
+
import { SDJwtVcInstance } from "@sd-jwt/sd-jwt-vc";
|
|
4
|
+
import { ES256, ES384, ES512, hasher } from "@owf/crypto";
|
|
5
|
+
import { base64urlDecode } from "@owf/identity-common";
|
|
6
|
+
import { credentialIdAsType } from "../utils.js";
|
|
7
|
+
import { getProofCredential } from "../proof_credential_factory.js";
|
|
8
|
+
import { verifyChain } from "../certificates/chain_validator.js";
|
|
9
|
+
import { getTrustRoot } from "../certificates/trust_store/index.js";
|
|
10
|
+
import { VCPresentationClient } from "./base_client.js";
|
|
11
|
+
const VERIFIERS = { ES256, ES384, ES512 };
|
|
12
|
+
const EXPECTED_CURVE = {
|
|
13
|
+
ES256: "P-256",
|
|
14
|
+
ES384: "P-384",
|
|
15
|
+
ES512: "P-521",
|
|
16
|
+
};
|
|
17
|
+
function isSupportedAlg(s) {
|
|
18
|
+
return typeof s === "string" && s in VERIFIERS;
|
|
19
|
+
}
|
|
20
|
+
export class NodeVCPresentationClient extends VCPresentationClient {
|
|
21
|
+
async verify({ encodedSDJWT, nonce, }) {
|
|
22
|
+
const decoded = await new SDJwtVcInstance({ hasher }).decode(encodedSDJWT);
|
|
23
|
+
const alg = decoded.jwt?.header?.["alg"];
|
|
24
|
+
const x5c = decoded.jwt?.header?.["x5c"];
|
|
25
|
+
if (!isSupportedAlg(alg)) {
|
|
26
|
+
throw `Unsupported or missing alg: ${alg}`;
|
|
27
|
+
}
|
|
28
|
+
if (!Array.isArray(x5c) || x5c.length === 0) {
|
|
29
|
+
throw "JWT header x5c is missing or empty";
|
|
30
|
+
}
|
|
31
|
+
const chain = x5c.map((b64) => new X509Certificate(Buffer.from(b64, "base64")));
|
|
32
|
+
verifyChain(chain, getTrustRoot(this.environment));
|
|
33
|
+
const leafJwk = chain[0].publicKey.export({ format: "jwk" });
|
|
34
|
+
if (leafJwk.crv !== EXPECTED_CURVE[alg]) {
|
|
35
|
+
throw `Leaf cert curve ${leafJwk.crv} does not match alg ${alg}`;
|
|
36
|
+
}
|
|
37
|
+
const verifier = await VERIFIERS[alg].getVerifier(leafJwk);
|
|
38
|
+
const SDJWTClient = new SDJwtVcInstance({ hasher, verifier });
|
|
39
|
+
await SDJWTClient.verify(encodedSDJWT, { nonce });
|
|
40
|
+
return getProofCredential(decoded);
|
|
41
|
+
}
|
|
42
|
+
async verifyVPToken({ encodedVPToken, nonce, }) {
|
|
43
|
+
const records = JSON.parse(base64urlDecode(encodedVPToken));
|
|
44
|
+
const vpToken = {};
|
|
45
|
+
for (const [key, encodedSDJWTs] of Object.entries(records)) {
|
|
46
|
+
const credentialId = credentialIdAsType(key);
|
|
47
|
+
vpToken[credentialId] = [];
|
|
48
|
+
for (const encodedSDJWT of encodedSDJWTs) {
|
|
49
|
+
const credential = await this.verify({
|
|
50
|
+
encodedSDJWT,
|
|
51
|
+
...(nonce !== undefined && { nonce }),
|
|
52
|
+
});
|
|
53
|
+
vpToken[credentialId].push(credential);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return vpToken;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=node_client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node_client.js","sourceRoot":"","sources":["../../src/presentation/node_client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proof_credential_factory.d.ts","sourceRoot":"","sources":["../src/proof_credential_factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EACL,KAAK,eAAe,EAErB,MAAM,wBAAwB,CAAC;AAGhC,eAAO,MAAM,kBAAkB,GAC7B,OAAO,KAAK,KACX,OAAO,CAAC,eAAe,CAmCzB,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { ProofCredentialV1, } from "./proof_credentials.js";
|
|
2
|
+
import { hasher } from "@owf/crypto";
|
|
3
|
+
export const getProofCredential = async (sdjwt) => {
|
|
4
|
+
const claims = (await sdjwt.getClaims(hasher));
|
|
5
|
+
const vct = claims["vct"];
|
|
6
|
+
if (vct === "https://credentials.notarize.com/ProofCredentialV1") {
|
|
7
|
+
const ages = claims["age_equal_or_over"] !== undefined
|
|
8
|
+
? claims["age_equal_or_over"]
|
|
9
|
+
: undefined;
|
|
10
|
+
return new ProofCredentialV1({
|
|
11
|
+
sdjwt,
|
|
12
|
+
claims,
|
|
13
|
+
...(claims["given_name"] !== undefined && {
|
|
14
|
+
given_name: claims["given_name"],
|
|
15
|
+
}),
|
|
16
|
+
...(claims["family_name"] !== undefined && {
|
|
17
|
+
family_name: claims["family_name"],
|
|
18
|
+
}),
|
|
19
|
+
...(claims["birth_date"] !== undefined && {
|
|
20
|
+
birth_date: claims["birth_date"],
|
|
21
|
+
}),
|
|
22
|
+
...(ages?.["18"] !== undefined && {
|
|
23
|
+
is_over_18: ages?.["18"],
|
|
24
|
+
}),
|
|
25
|
+
...(ages?.["21"] !== undefined && {
|
|
26
|
+
is_over_21: ages?.["21"],
|
|
27
|
+
}),
|
|
28
|
+
...(ages?.["65"] !== undefined && {
|
|
29
|
+
is_over_65: ages?.["65"],
|
|
30
|
+
}),
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
throw `unknown ProofCredential for vct: ${vct}`;
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
//# sourceMappingURL=proof_credential_factory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proof_credential_factory.js","sourceRoot":"","sources":["../src/proof_credential_factory.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,iBAAiB,GAClB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,EACrC,KAAY,EACc,EAAE;IAC5B,MAAM,MAAM,GAAG,CAAC,MAAM,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAA4B,CAAC;IAC1E,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAE1B,IAAI,GAAG,KAAK,oDAAoD,EAAE,CAAC;QACjE,MAAM,IAAI,GACR,MAAM,CAAC,mBAAmB,CAAC,KAAK,SAAS;YACvC,CAAC,CAAE,MAAM,CAAC,mBAAmB,CAA6B;YAC1D,CAAC,CAAC,SAAS,CAAC;QAEhB,OAAO,IAAI,iBAAiB,CAAC;YAC3B,KAAK;YACL,MAAM;YACN,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,SAAS,IAAI;gBACxC,UAAU,EAAE,MAAM,CAAC,YAAY,CAAW;aAC3C,CAAC;YACF,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,SAAS,IAAI;gBACzC,WAAW,EAAE,MAAM,CAAC,aAAa,CAAW;aAC7C,CAAC;YACF,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,SAAS,IAAI;gBACxC,UAAU,EAAE,MAAM,CAAC,YAAY,CAAW;aAC3C,CAAC;YACF,GAAG,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,KAAK,SAAS,IAAI;gBAChC,UAAU,EAAE,IAAI,EAAE,CAAC,IAAI,CAAY;aACpC,CAAC;YACF,GAAG,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,KAAK,SAAS,IAAI;gBAChC,UAAU,EAAE,IAAI,EAAE,CAAC,IAAI,CAAY;aACpC,CAAC;YACF,GAAG,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,KAAK,SAAS,IAAI;gBAChC,UAAU,EAAE,IAAI,EAAE,CAAC,IAAI,CAAY;aACpC,CAAC;SACH,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,MAAM,oCAAoC,GAAG,EAAE,CAAC;IAClD,CAAC;AACH,CAAC,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import type { CredentialType, Format, ProofCredential } from "./types.ts";
|
|
2
|
+
import type { SDJwt } from "@sd-jwt/core";
|
|
3
|
+
export type { ProofCredential } from "./types.ts";
|
|
4
|
+
type CredentialParams = {
|
|
5
|
+
sdjwt: SDJwt;
|
|
6
|
+
claims: Record<string, unknown>;
|
|
7
|
+
};
|
|
8
|
+
declare abstract class Credential implements ProofCredential {
|
|
9
|
+
private readonly sdjwt;
|
|
10
|
+
private readonly claims;
|
|
11
|
+
protected constructor({ sdjwt, claims }: CredentialParams);
|
|
12
|
+
abstract credentialType(): CredentialType;
|
|
13
|
+
abstract format(): Format;
|
|
14
|
+
getClaims(): Record<string, unknown>;
|
|
15
|
+
getSDJWT(): SDJwt;
|
|
16
|
+
}
|
|
17
|
+
type ProofCredentialV1Params = {
|
|
18
|
+
given_name?: string;
|
|
19
|
+
family_name?: string;
|
|
20
|
+
birth_date?: string;
|
|
21
|
+
is_over_18?: boolean;
|
|
22
|
+
is_over_21?: boolean;
|
|
23
|
+
is_over_65?: boolean;
|
|
24
|
+
} & CredentialParams;
|
|
25
|
+
export declare class ProofCredentialV1 extends Credential {
|
|
26
|
+
private readonly given_name;
|
|
27
|
+
private readonly family_name;
|
|
28
|
+
private readonly birth_date;
|
|
29
|
+
private readonly is_over_18;
|
|
30
|
+
private readonly is_over_21;
|
|
31
|
+
private readonly is_over_65;
|
|
32
|
+
constructor(params: ProofCredentialV1Params);
|
|
33
|
+
credentialType(): CredentialType;
|
|
34
|
+
format(): Format;
|
|
35
|
+
givenName(): string | undefined;
|
|
36
|
+
familyName(): string | undefined;
|
|
37
|
+
dateOfBirth(): Date | undefined;
|
|
38
|
+
isOver18(): boolean | undefined;
|
|
39
|
+
isOver21(): boolean | undefined;
|
|
40
|
+
isOver65(): boolean | undefined;
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=proof_credentials.d.ts.map
|
|
@@ -0,0 +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,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAqB;IAChD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAqB;IACjD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAqB;IAChD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAsB;IACjD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAsB;IACjD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAsB;gBAErC,MAAM,EAAE,uBAAuB;IAUpC,cAAc,IAAI,cAAc;IAIhC,MAAM,IAAI,MAAM;IAIhB,SAAS,IAAI,MAAM,GAAG,SAAS;IAI/B,UAAU,IAAI,MAAM,GAAG,SAAS;IAIhC,WAAW,IAAI,IAAI,GAAG,SAAS;IAQ/B,QAAQ,IAAI,OAAO,GAAG,SAAS;IAI/B,QAAQ,IAAI,OAAO,GAAG,SAAS;IAI/B,QAAQ,IAAI,OAAO,GAAG,SAAS;CAGvC"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
class Credential {
|
|
2
|
+
sdjwt;
|
|
3
|
+
claims;
|
|
4
|
+
constructor({ sdjwt, claims }) {
|
|
5
|
+
this.sdjwt = sdjwt;
|
|
6
|
+
this.claims = claims;
|
|
7
|
+
}
|
|
8
|
+
getClaims() {
|
|
9
|
+
return this.claims;
|
|
10
|
+
}
|
|
11
|
+
getSDJWT() {
|
|
12
|
+
return this.sdjwt;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
export class ProofCredentialV1 extends Credential {
|
|
16
|
+
given_name;
|
|
17
|
+
family_name;
|
|
18
|
+
birth_date;
|
|
19
|
+
is_over_18;
|
|
20
|
+
is_over_21;
|
|
21
|
+
is_over_65;
|
|
22
|
+
constructor(params) {
|
|
23
|
+
super(params);
|
|
24
|
+
this.given_name = params.given_name;
|
|
25
|
+
this.family_name = params.family_name;
|
|
26
|
+
this.birth_date = params.birth_date;
|
|
27
|
+
this.is_over_18 = params.is_over_18;
|
|
28
|
+
this.is_over_21 = params.is_over_21;
|
|
29
|
+
this.is_over_65 = params.is_over_65;
|
|
30
|
+
}
|
|
31
|
+
credentialType() {
|
|
32
|
+
return "ProofCredentialV1";
|
|
33
|
+
}
|
|
34
|
+
format() {
|
|
35
|
+
return "dc+sd-jwt";
|
|
36
|
+
}
|
|
37
|
+
givenName() {
|
|
38
|
+
return this.given_name;
|
|
39
|
+
}
|
|
40
|
+
familyName() {
|
|
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;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=proof_credentials.js.map
|
|
@@ -0,0 +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;IAC9B,UAAU,CAAqB;IAC/B,WAAW,CAAqB;IAChC,UAAU,CAAqB;IAC/B,UAAU,CAAsB;IAChC,UAAU,CAAsB;IAChC,UAAU,CAAsB;IAEjD,YAAY,MAA+B;QACzC,KAAK,CAAC,MAAM,CAAC,CAAC;QACd,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;QACpC,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;QACtC,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;QACpC,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;QACpC,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;QACpC,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;IACtC,CAAC;IAEM,cAAc;QACnB,OAAO,mBAAmB,CAAC;IAC7B,CAAC;IAEM,MAAM;QACX,OAAO,WAAW,CAAC;IACrB,CAAC;IAEM,SAAS;QACd,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAEM,UAAU;QACf,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAEM,WAAW;QAChB,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YAClC,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACnC,CAAC;aAAM,CAAC;YACN,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IAEM,QAAQ;QACb,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAEM,QAAQ;QACb,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAEM,QAAQ;QACb,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;CACF"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
export declare const TX_DATA_TYPE: {
|
|
2
|
+
readonly WIRE_INSTRUCTIONS: "urn:proof:params:vc:transaction-data:wire-instructions:v1";
|
|
3
|
+
readonly PAYMENT_MANDATE: "urn:proof:params:vc:transaction-data:payment-mandate:v1";
|
|
4
|
+
readonly PAYMENT_ITEMIZED: "urn:proof:params:vc:transaction-data:payment-itemized:v1";
|
|
5
|
+
readonly SESSION_DATA: "urn:proof:params:vc:transaction-data:session-data";
|
|
6
|
+
};
|
|
7
|
+
export type WireInstructionsPayload = {
|
|
8
|
+
recipient: {
|
|
9
|
+
institution_name: string;
|
|
10
|
+
routing_number: string;
|
|
11
|
+
account_number: string;
|
|
12
|
+
individual_name?: string;
|
|
13
|
+
website?: string;
|
|
14
|
+
};
|
|
15
|
+
source: {
|
|
16
|
+
individual_name: string;
|
|
17
|
+
account_number: string;
|
|
18
|
+
routing_number: string;
|
|
19
|
+
institution_name?: string;
|
|
20
|
+
};
|
|
21
|
+
amount: number;
|
|
22
|
+
currency: string;
|
|
23
|
+
memo?: string;
|
|
24
|
+
};
|
|
25
|
+
export type PaymentMandatePayload = {
|
|
26
|
+
payment_instrument: {
|
|
27
|
+
type: string;
|
|
28
|
+
id: string;
|
|
29
|
+
description?: string;
|
|
30
|
+
};
|
|
31
|
+
payee: {
|
|
32
|
+
name: string;
|
|
33
|
+
id?: string;
|
|
34
|
+
website?: string;
|
|
35
|
+
};
|
|
36
|
+
prompt_summary: string;
|
|
37
|
+
amount: number;
|
|
38
|
+
currency: string;
|
|
39
|
+
};
|
|
40
|
+
export type PaymentItemizedItem = {
|
|
41
|
+
quantity: number;
|
|
42
|
+
unit_cost: number;
|
|
43
|
+
label: string;
|
|
44
|
+
};
|
|
45
|
+
export type PaymentItemizedPayload = {
|
|
46
|
+
currency: string;
|
|
47
|
+
items: PaymentItemizedItem[];
|
|
48
|
+
title?: string;
|
|
49
|
+
description?: string;
|
|
50
|
+
};
|
|
51
|
+
export type SessionDataPayload = {
|
|
52
|
+
ip_address: string;
|
|
53
|
+
device_id?: string;
|
|
54
|
+
};
|
|
55
|
+
type Envelope<T extends string, P> = {
|
|
56
|
+
type: T;
|
|
57
|
+
credential_ids: readonly string[];
|
|
58
|
+
payload: P;
|
|
59
|
+
};
|
|
60
|
+
export type WireInstructionsTransactionData = Envelope<typeof TX_DATA_TYPE.WIRE_INSTRUCTIONS, WireInstructionsPayload>;
|
|
61
|
+
export type PaymentMandateTransactionData = Envelope<typeof TX_DATA_TYPE.PAYMENT_MANDATE, PaymentMandatePayload>;
|
|
62
|
+
export type PaymentItemizedTransactionData = Envelope<typeof TX_DATA_TYPE.PAYMENT_ITEMIZED, PaymentItemizedPayload>;
|
|
63
|
+
export type SessionDataTransactionData = Envelope<typeof TX_DATA_TYPE.SESSION_DATA, SessionDataPayload>;
|
|
64
|
+
export type TransactionData = WireInstructionsTransactionData | PaymentMandateTransactionData | PaymentItemizedTransactionData | SessionDataTransactionData;
|
|
65
|
+
export declare const transactionData: {
|
|
66
|
+
readonly wireInstructions: (payload: WireInstructionsPayload) => WireInstructionsTransactionData;
|
|
67
|
+
readonly paymentMandate: (payload: PaymentMandatePayload) => PaymentMandateTransactionData;
|
|
68
|
+
readonly paymentItemized: (payload: PaymentItemizedPayload) => PaymentItemizedTransactionData;
|
|
69
|
+
readonly sessionData: (payload: SessionDataPayload) => SessionDataTransactionData;
|
|
70
|
+
};
|
|
71
|
+
export declare function encodeTransactionData(data: TransactionData): string;
|
|
72
|
+
export {};
|
|
73
|
+
//# sourceMappingURL=transaction_data.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transaction_data.d.ts","sourceRoot":"","sources":["../src/transaction_data.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY;;;;;CAMf,CAAC;AAIX,MAAM,MAAM,uBAAuB,GAAG;IACpC,SAAS,EAAE;QACT,gBAAgB,EAAE,MAAM,CAAC;QACzB,cAAc,EAAE,MAAM,CAAC;QACvB,cAAc,EAAE,MAAM,CAAC;QACvB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,MAAM,EAAE;QACN,eAAe,EAAE,MAAM,CAAC;QACxB,cAAc,EAAE,MAAM,CAAC;QACvB,cAAc,EAAE,MAAM,CAAC;QACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;KAC3B,CAAC;IACF,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,kBAAkB,EAAE;QAClB,IAAI,EAAE,MAAM,CAAC;QACb,EAAE,EAAE,MAAM,CAAC;QACX,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,KAAK,EAAE;QACL,IAAI,EAAE,MAAM,CAAC;QACb,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,mBAAmB,EAAE,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,KAAK,QAAQ,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,IAAI;IACnC,IAAI,EAAE,CAAC,CAAC;IACR,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,OAAO,EAAE,CAAC,CAAC;CACZ,CAAC;AAEF,MAAM,MAAM,+BAA+B,GAAG,QAAQ,CACpD,OAAO,YAAY,CAAC,iBAAiB,EACrC,uBAAuB,CACxB,CAAC;AACF,MAAM,MAAM,6BAA6B,GAAG,QAAQ,CAClD,OAAO,YAAY,CAAC,eAAe,EACnC,qBAAqB,CACtB,CAAC;AACF,MAAM,MAAM,8BAA8B,GAAG,QAAQ,CACnD,OAAO,YAAY,CAAC,gBAAgB,EACpC,sBAAsB,CACvB,CAAC;AACF,MAAM,MAAM,0BAA0B,GAAG,QAAQ,CAC/C,OAAO,YAAY,CAAC,YAAY,EAChC,kBAAkB,CACnB,CAAC;AAEF,MAAM,MAAM,eAAe,GACvB,+BAA+B,GAC/B,6BAA6B,GAC7B,8BAA8B,GAC9B,0BAA0B,CAAC;AAE/B,eAAO,MAAM,eAAe;yCAEf,uBAAuB,KAC/B,+BAA+B;uCAQvB,qBAAqB,KAC7B,6BAA6B;wCAQrB,sBAAsB,KAC9B,8BAA8B;oCAOZ,kBAAkB,KAAG,0BAA0B;CAO5D,CAAC;AAYX,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM,CAEnE"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
export const TX_DATA_TYPE = {
|
|
2
|
+
WIRE_INSTRUCTIONS: "urn:proof:params:vc:transaction-data:wire-instructions:v1",
|
|
3
|
+
PAYMENT_MANDATE: "urn:proof:params:vc:transaction-data:payment-mandate:v1",
|
|
4
|
+
PAYMENT_ITEMIZED: "urn:proof:params:vc:transaction-data:payment-itemized:v1",
|
|
5
|
+
SESSION_DATA: "urn:proof:params:vc:transaction-data:session-data",
|
|
6
|
+
};
|
|
7
|
+
const CREDENTIAL_IDS = ["proof_id_default"];
|
|
8
|
+
export const transactionData = {
|
|
9
|
+
wireInstructions(payload) {
|
|
10
|
+
return {
|
|
11
|
+
type: TX_DATA_TYPE.WIRE_INSTRUCTIONS,
|
|
12
|
+
credential_ids: CREDENTIAL_IDS,
|
|
13
|
+
payload,
|
|
14
|
+
};
|
|
15
|
+
},
|
|
16
|
+
paymentMandate(payload) {
|
|
17
|
+
return {
|
|
18
|
+
type: TX_DATA_TYPE.PAYMENT_MANDATE,
|
|
19
|
+
credential_ids: CREDENTIAL_IDS,
|
|
20
|
+
payload,
|
|
21
|
+
};
|
|
22
|
+
},
|
|
23
|
+
paymentItemized(payload) {
|
|
24
|
+
return {
|
|
25
|
+
type: TX_DATA_TYPE.PAYMENT_ITEMIZED,
|
|
26
|
+
credential_ids: CREDENTIAL_IDS,
|
|
27
|
+
payload,
|
|
28
|
+
};
|
|
29
|
+
},
|
|
30
|
+
sessionData(payload) {
|
|
31
|
+
return {
|
|
32
|
+
type: TX_DATA_TYPE.SESSION_DATA,
|
|
33
|
+
credential_ids: CREDENTIAL_IDS,
|
|
34
|
+
payload,
|
|
35
|
+
};
|
|
36
|
+
},
|
|
37
|
+
};
|
|
38
|
+
function base64UrlEncode(s) {
|
|
39
|
+
const bytes = new TextEncoder().encode(s);
|
|
40
|
+
let binary = "";
|
|
41
|
+
for (const b of bytes)
|
|
42
|
+
binary += String.fromCharCode(b);
|
|
43
|
+
return btoa(binary)
|
|
44
|
+
.replace(/\+/g, "-")
|
|
45
|
+
.replace(/\//g, "_")
|
|
46
|
+
.replace(/=+$/, "");
|
|
47
|
+
}
|
|
48
|
+
export function encodeTransactionData(data) {
|
|
49
|
+
return base64UrlEncode(JSON.stringify(data));
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=transaction_data.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transaction_data.js","sourceRoot":"","sources":["../src/transaction_data.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,iBAAiB,EACf,2DAA2D;IAC7D,eAAe,EAAE,yDAAyD;IAC1E,gBAAgB,EAAE,0DAA0D;IAC5E,YAAY,EAAE,mDAAmD;CACzD,CAAC;AAEX,MAAM,cAAc,GAAG,CAAC,kBAAkB,CAAU,CAAC;AAoFrD,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,gBAAgB,CACd,OAAgC;QAEhC,OAAO;YACL,IAAI,EAAE,YAAY,CAAC,iBAAiB;YACpC,cAAc,EAAE,cAAc;YAC9B,OAAO;SACR,CAAC;IACJ,CAAC;IACD,cAAc,CACZ,OAA8B;QAE9B,OAAO;YACL,IAAI,EAAE,YAAY,CAAC,eAAe;YAClC,cAAc,EAAE,cAAc;YAC9B,OAAO;SACR,CAAC;IACJ,CAAC;IACD,eAAe,CACb,OAA+B;QAE/B,OAAO;YACL,IAAI,EAAE,YAAY,CAAC,gBAAgB;YACnC,cAAc,EAAE,cAAc;YAC9B,OAAO;SACR,CAAC;IACJ,CAAC;IACD,WAAW,CAAC,OAA2B;QACrC,OAAO;YACL,IAAI,EAAE,YAAY,CAAC,YAAY;YAC/B,cAAc,EAAE,cAAc;YAC9B,OAAO;SACR,CAAC;IACJ,CAAC;CACO,CAAC;AAEX,SAAS,eAAe,CAAC,CAAS;IAChC,MAAM,KAAK,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC1C,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,KAAK,MAAM,CAAC,IAAI,KAAK;QAAE,MAAM,IAAI,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IACxD,OAAO,IAAI,CAAC,MAAM,CAAC;SAChB,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;SACnB,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;SACnB,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,IAAqB;IACzD,OAAO,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;AAC/C,CAAC"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { SDJwt } from "@sd-jwt/core";
|
|
2
|
+
export type Environment = "localhost" | "next" | "staging" | "sandbox" | "production";
|
|
3
|
+
export type ResponseMode = "fragment" | "direct_post";
|
|
4
|
+
export type ResponseType = "vp_token";
|
|
5
|
+
export type Scope = "urn:proof:params:scope:verifiable-credentials:basic";
|
|
6
|
+
export type CredentialID = "proof_id_default";
|
|
7
|
+
export type CredentialType = "ProofCredentialV1";
|
|
8
|
+
export type Format = "dc+sd-jwt";
|
|
9
|
+
export interface ProofCredential {
|
|
10
|
+
credentialType(): CredentialType;
|
|
11
|
+
format(): Format;
|
|
12
|
+
getClaims(): Record<string, unknown>;
|
|
13
|
+
getSDJWT(): SDJwt;
|
|
14
|
+
}
|
|
15
|
+
export type VPToken = Record<CredentialID, ProofCredential[]>;
|
|
16
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +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"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|
package/dist/utils.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAI/C,eAAO,MAAM,kBAAkB,GAAI,GAAG,MAAM,KAAG,YAO9C,CAAC"}
|
package/dist/utils.js
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
const CREDENTIAL_IDS = ["proof_id_default"];
|
|
2
|
+
export const credentialIdAsType = (s) => {
|
|
3
|
+
for (const credentialId of CREDENTIAL_IDS) {
|
|
4
|
+
if (s === credentialId) {
|
|
5
|
+
return credentialId;
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
throw `invalid CredentialID: ${s}`;
|
|
9
|
+
};
|
|
10
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAEA,MAAM,cAAc,GAAmB,CAAC,kBAAkB,CAAC,CAAC;AAE5D,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAS,EAAgB,EAAE;IAC5D,KAAK,MAAM,YAAY,IAAI,cAAc,EAAE,CAAC;QAC1C,IAAI,CAAC,KAAK,YAAY,EAAE,CAAC;YACvB,OAAO,YAAY,CAAC;QACtB,CAAC;IACH,CAAC;IACD,MAAM,yBAAyB,CAAC,EAAE,CAAC;AACrC,CAAC,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { type VCPresentationClientParams, type AuthorizationRequestParams } from "./presentation/base_client.ts";
|
|
2
|
+
export declare function init(params: VCPresentationClientParams): void;
|
|
3
|
+
export declare function getAuthorizationRequestURL(params: AuthorizationRequestParams): Promise<string>;
|
|
4
|
+
//# sourceMappingURL=vc_presentation.browser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vc_presentation.browser.d.ts","sourceRoot":"","sources":["../src/vc_presentation.browser.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,0BAA0B,EAC/B,KAAK,0BAA0B,EAChC,MAAM,+BAA+B,CAAC;AAIvC,wBAAgB,IAAI,CAAC,MAAM,EAAE,0BAA0B,GAAG,IAAI,CAI7D;AAED,wBAAsB,0BAA0B,CAC9C,MAAM,EAAE,0BAA0B,GACjC,OAAO,CAAC,MAAM,CAAC,CAIjB"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { VCPresentationClient, } from "./presentation/base_client.js";
|
|
2
|
+
let instance = null;
|
|
3
|
+
export function init(params) {
|
|
4
|
+
if (params.environment === "production" && instance)
|
|
5
|
+
throw new Error("VCPresentationClient already initialized (browser)");
|
|
6
|
+
instance = new VCPresentationClient(params);
|
|
7
|
+
}
|
|
8
|
+
export async function getAuthorizationRequestURL(params) {
|
|
9
|
+
if (!instance)
|
|
10
|
+
throw "VCPresentationClient not initialized — call init() first (browser)";
|
|
11
|
+
return instance.getAuthorizationRequestURL(params);
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=vc_presentation.browser.js.map
|
|
@@ -0,0 +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,MAAkC;IACrD,IAAI,MAAM,CAAC,WAAW,KAAK,YAAY,IAAI,QAAQ;QACjD,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;IACxE,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"}
|