@pagopa/io-react-native-wallet 0.9.2 → 0.10.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/lib/commonjs/credential/issuance/06-obtain-credential.js +2 -34
- package/lib/commonjs/credential/issuance/06-obtain-credential.js.map +1 -1
- package/lib/commonjs/credential/issuance/07-verify-and-parse-credential.js +169 -0
- package/lib/commonjs/credential/issuance/07-verify-and-parse-credential.js.map +1 -0
- package/lib/commonjs/credential/issuance/08-confirm-credential.js +6 -0
- package/lib/commonjs/credential/issuance/08-confirm-credential.js.map +1 -0
- package/lib/commonjs/credential/issuance/const.js +6 -1
- package/lib/commonjs/credential/issuance/const.js.map +1 -1
- package/lib/commonjs/credential/issuance/index.js +7 -0
- package/lib/commonjs/credential/issuance/index.js.map +1 -1
- package/lib/commonjs/index.js +3 -1
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/sd-jwt/__test__/index.test.js +33 -1
- package/lib/commonjs/sd-jwt/__test__/index.test.js.map +1 -1
- package/lib/commonjs/sd-jwt/index.js +15 -6
- package/lib/commonjs/sd-jwt/index.js.map +1 -1
- package/lib/commonjs/sd-jwt/types.js +1 -1
- package/lib/commonjs/trust/types.js +5 -0
- package/lib/commonjs/trust/types.js.map +1 -1
- package/lib/commonjs/utils/misc.js +2 -2
- package/lib/commonjs/utils/misc.js.map +1 -1
- package/lib/module/credential/issuance/06-obtain-credential.js +3 -34
- package/lib/module/credential/issuance/06-obtain-credential.js.map +1 -1
- package/lib/module/credential/issuance/07-verify-and-parse-credential.js +163 -0
- package/lib/module/credential/issuance/07-verify-and-parse-credential.js.map +1 -0
- package/lib/module/credential/issuance/08-confirm-credential.js +2 -0
- package/lib/module/credential/issuance/08-confirm-credential.js.map +1 -0
- package/lib/module/credential/issuance/const.js +2 -0
- package/lib/module/credential/issuance/const.js.map +1 -1
- package/lib/module/credential/issuance/index.js +2 -1
- package/lib/module/credential/issuance/index.js.map +1 -1
- package/lib/module/index.js +2 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/sd-jwt/__test__/index.test.js +33 -1
- package/lib/module/sd-jwt/__test__/index.test.js.map +1 -1
- package/lib/module/sd-jwt/index.js +10 -6
- package/lib/module/sd-jwt/index.js.map +1 -1
- package/lib/module/sd-jwt/types.js +1 -1
- package/lib/module/trust/types.js +5 -0
- package/lib/module/trust/types.js.map +1 -1
- package/lib/module/utils/misc.js +2 -2
- package/lib/module/utils/misc.js.map +1 -1
- package/lib/typescript/credential/issuance/06-obtain-credential.d.ts +2 -1
- package/lib/typescript/credential/issuance/06-obtain-credential.d.ts.map +1 -1
- package/lib/typescript/credential/issuance/07-verify-and-parse-credential.d.ts +36 -0
- package/lib/typescript/credential/issuance/07-verify-and-parse-credential.d.ts.map +1 -0
- package/lib/typescript/credential/issuance/08-confirm-credential.d.ts +11 -0
- package/lib/typescript/credential/issuance/08-confirm-credential.d.ts.map +1 -0
- package/lib/typescript/credential/issuance/const.d.ts +3 -0
- package/lib/typescript/credential/issuance/const.d.ts.map +1 -1
- package/lib/typescript/credential/issuance/index.d.ts +4 -3
- package/lib/typescript/credential/issuance/index.d.ts.map +1 -1
- package/lib/typescript/index.d.ts +2 -1
- package/lib/typescript/index.d.ts.map +1 -1
- package/lib/typescript/sd-jwt/index.d.ts +222 -5
- package/lib/typescript/sd-jwt/index.d.ts.map +1 -1
- package/lib/typescript/sd-jwt/types.d.ts +1 -1
- package/lib/typescript/trust/index.d.ts +8 -0
- package/lib/typescript/trust/index.d.ts.map +1 -1
- package/lib/typescript/trust/types.d.ts +232 -0
- package/lib/typescript/trust/types.d.ts.map +1 -1
- package/lib/typescript/utils/misc.d.ts +1 -1
- package/lib/typescript/utils/misc.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/credential/issuance/06-obtain-credential.ts +3 -51
- package/src/credential/issuance/07-verify-and-parse-credential.ts +229 -0
- package/src/credential/issuance/08-confirm-credential.ts +14 -0
- package/src/credential/issuance/const.ts +6 -0
- package/src/credential/issuance/index.ts +7 -1
- package/src/index.ts +2 -0
- package/src/sd-jwt/__test__/index.test.ts +32 -1
- package/src/sd-jwt/index.ts +14 -8
- package/src/sd-jwt/types.ts +1 -1
- package/src/trust/types.ts +4 -0
- package/src/utils/misc.ts +4 -2
@@ -0,0 +1,36 @@
|
|
1
|
+
import type { Out } from "../../utils/misc";
|
2
|
+
import type { EvaluateIssuerTrust } from "./02-evaluate-issuer-trust";
|
3
|
+
import type { ObtainCredential } from "./06-obtain-credential";
|
4
|
+
import type { CryptoContext } from "@pagopa/io-react-native-jwt";
|
5
|
+
export type VerifyAndParseCredential = (issuerConf: Out<EvaluateIssuerTrust>["issuerConf"], credential: Out<ObtainCredential>["credential"], format: Out<ObtainCredential>["format"], context: {
|
6
|
+
credentialCryptoContext: CryptoContext;
|
7
|
+
ignoreMissingAttributes?: boolean;
|
8
|
+
}) => Promise<{
|
9
|
+
parsedCredential: ParsedCredential;
|
10
|
+
}>;
|
11
|
+
type ParsedCredential = Record<
|
12
|
+
/** Attribute key */
|
13
|
+
string, {
|
14
|
+
/** Human-readable name of the attribute */
|
15
|
+
name: /* if i18n is provided */ Record<string, string> | /* if no i18n is provided */ string;
|
16
|
+
/** If in defined as mandatory by the Issuer */
|
17
|
+
mandatory: boolean;
|
18
|
+
/** The actual value of the attribute */
|
19
|
+
value: unknown;
|
20
|
+
}>;
|
21
|
+
/**
|
22
|
+
* Verify and parse an encoded credential
|
23
|
+
*
|
24
|
+
* @param issuerConf The Issuer configuration
|
25
|
+
* @param credential The encoded credential
|
26
|
+
* @param format The format of the credentual
|
27
|
+
* @param context.credentialCryptoContext The context to access the key the Credential will be bound to
|
28
|
+
* @param context.ignoreMissingAttributes (optional) Whether to fail if a defined attribute is note present in the credentual. Default: false
|
29
|
+
* @returns A parsed credential with attributes in plain value
|
30
|
+
* @throws If the credential signature is not verified with the Issuer key set
|
31
|
+
* @throws If the credential is not bound to the provided user key
|
32
|
+
* @throws If the credential data fail to parse
|
33
|
+
*/
|
34
|
+
export declare const verifyAndParseCredential: VerifyAndParseCredential;
|
35
|
+
export {};
|
36
|
+
//# sourceMappingURL=07-verify-and-parse-credential.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"07-verify-and-parse-credential.d.ts","sourceRoot":"","sources":["../../../../src/credential/issuance/07-verify-and-parse-credential.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAK/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAEjE,MAAM,MAAM,wBAAwB,GAAG,CACrC,UAAU,EAAE,GAAG,CAAC,mBAAmB,CAAC,CAAC,YAAY,CAAC,EAClD,UAAU,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC,YAAY,CAAC,EAC/C,MAAM,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC,QAAQ,CAAC,EACvC,OAAO,EAAE;IACP,uBAAuB,EAAE,aAAa,CAAC;IACvC,uBAAuB,CAAC,EAAE,OAAO,CAAC;CACnC,KACE,OAAO,CAAC;IAAE,gBAAgB,EAAE,gBAAgB,CAAA;CAAE,CAAC,CAAC;AAGrD,KAAK,gBAAgB,GAAG,MAAM;AAC5B,oBAAoB;AACpB,MAAM,EACN;IACE,2CAA2C;IAC3C,IAAI,EACA,yBAAyB,CAAC,MAAM,CAC9B,MAAM,EACN,MAAM,CACP,GACD,4BAA4B,CAAC,MAAM,CAAC;IACxC,+CAA+C;IAC/C,SAAS,EAAE,OAAO,CAAC;IACnB,wCAAwC;IACxC,KAAK,EAAE,OAAO,CAAC;CAChB,CACF,CAAC;AAkKF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,wBAAwB,EAAE,wBAiBtC,CAAC"}
|
@@ -0,0 +1,11 @@
|
|
1
|
+
import type { ObtainCredential } from "./06-obtain-credential";
|
2
|
+
import type { Out } from "../../utils/misc";
|
3
|
+
/**
|
4
|
+
* The end of the issuing flow.
|
5
|
+
* The User accepted the Credential and it can be stored in the device according to the app implementation preferences.
|
6
|
+
* To be implemented.
|
7
|
+
*
|
8
|
+
* @returns The type of the Credential to be issued and the url of the Issuer
|
9
|
+
*/
|
10
|
+
export type ConfirmCredential = (credential: Out<ObtainCredential>["credential"], format: Out<ObtainCredential>["format"]) => Promise<void>;
|
11
|
+
//# sourceMappingURL=08-confirm-credential.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"08-confirm-credential.d.ts","sourceRoot":"","sources":["../../../../src/credential/issuance/08-confirm-credential.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAE5C;;;;;;GAMG;AACH,MAAM,MAAM,iBAAiB,GAAG,CAC9B,UAAU,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC,YAAY,CAAC,EAC/C,MAAM,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC,QAAQ,CAAC,KACpC,OAAO,CAAC,IAAI,CAAC,CAAC"}
|
@@ -1,2 +1,5 @@
|
|
1
|
+
import * as z from "zod";
|
1
2
|
export declare const ASSERTION_TYPE = "urn:ietf:params:oauth:client-assertion-type:jwt-client-attestation";
|
3
|
+
export type SupportedCredentialFormat = z.infer<typeof SupportedCredentialFormat>;
|
4
|
+
export declare const SupportedCredentialFormat: z.ZodLiteral<"vc+sd-jwt">;
|
2
5
|
//# sourceMappingURL=const.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"const.d.ts","sourceRoot":"","sources":["../../../../src/credential/issuance/const.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,cAAc,uEAC2C,CAAC"}
|
1
|
+
{"version":3,"file":"const.d.ts","sourceRoot":"","sources":["../../../../src/credential/issuance/const.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AACzB,eAAO,MAAM,cAAc,uEAC2C,CAAC;AAEvE,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAC7C,OAAO,yBAAyB,CACjC,CAAC;AACF,eAAO,MAAM,yBAAyB,2BAAyB,CAAC"}
|
@@ -4,7 +4,8 @@ import { startUserAuthorization, type StartUserAuthorization } from "./03-start-
|
|
4
4
|
import { type CompleteUserAuthorization } from "./04-complete-user-authorization";
|
5
5
|
import { authorizeAccess, type AuthorizeAccess } from "./05-authorize-access";
|
6
6
|
import { obtainCredential, type ObtainCredential } from "./06-obtain-credential";
|
7
|
-
import type
|
8
|
-
|
9
|
-
export
|
7
|
+
import { verifyAndParseCredential, type VerifyAndParseCredential } from "./07-verify-and-parse-credential";
|
8
|
+
import type { ConfirmCredential } from "./08-confirm-credential";
|
9
|
+
export { evaluateIssuerTrust, startUserAuthorization, authorizeAccess, obtainCredential, verifyAndParseCredential, };
|
10
|
+
export type { StartFlow, EvaluateIssuerTrust, StartUserAuthorization, CompleteUserAuthorization, AuthorizeAccess, ObtainCredential, VerifyAndParseCredential, ConfirmCredential, };
|
10
11
|
//# sourceMappingURL=index.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/credential/issuance/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EACL,mBAAmB,EACnB,KAAK,mBAAmB,EACzB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,sBAAsB,EACtB,KAAK,sBAAsB,EAC5B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,KAAK,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAClF,OAAO,EAAE,eAAe,EAAE,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC9E,OAAO,EACL,gBAAgB,EAChB,KAAK,gBAAgB,EACtB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAEjE,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,eAAe,EACf,gBAAgB,
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/credential/issuance/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EACL,mBAAmB,EACnB,KAAK,mBAAmB,EACzB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,sBAAsB,EACtB,KAAK,sBAAsB,EAC5B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,KAAK,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAClF,OAAO,EAAE,eAAe,EAAE,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC9E,OAAO,EACL,gBAAgB,EAChB,KAAK,gBAAgB,EACtB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,wBAAwB,EACxB,KAAK,wBAAwB,EAC9B,MAAM,kCAAkC,CAAC;AAC1C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAEjE,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,eAAe,EACf,gBAAgB,EAChB,wBAAwB,GACzB,CAAC;AACF,YAAY,EACV,SAAS,EACT,mBAAmB,EACnB,sBAAsB,EACtB,yBAAyB,EACzB,eAAe,EACf,gBAAgB,EAChB,wBAAwB,EACxB,iBAAiB,GAClB,CAAC"}
|
@@ -1,10 +1,11 @@
|
|
1
1
|
import "react-native-url-polyfill/auto";
|
2
2
|
import * as Credential from "./credential";
|
3
3
|
import * as PID from "./pid";
|
4
|
+
import * as SdJwt from "./sd-jwt";
|
4
5
|
import * as Errors from "./utils/errors";
|
5
6
|
import * as WalletInstanceAttestation from "./wallet-instance-attestation";
|
6
7
|
import * as Trust from "./trust";
|
7
8
|
import { AuthorizationDetail, AuthorizationDetails } from "./utils/par";
|
8
9
|
import { createCryptoContextFor } from "./utils/crypto";
|
9
|
-
export { PID, Credential, WalletInstanceAttestation, Errors, Trust, createCryptoContextFor, AuthorizationDetail, AuthorizationDetails, };
|
10
|
+
export { SdJwt, PID, Credential, WalletInstanceAttestation, Errors, Trust, createCryptoContextFor, AuthorizationDetail, AuthorizationDetails, };
|
10
11
|
//# sourceMappingURL=index.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,gCAAgC,CAAC;AAExC,OAAO,KAAK,UAAU,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,GAAG,MAAM,OAAO,CAAC;AAC7B,OAAO,KAAK,MAAM,MAAM,gBAAgB,CAAC;AACzC,OAAO,KAAK,yBAAyB,MAAM,+BAA+B,CAAC;AAC3E,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAExD,OAAO,EACL,GAAG,EACH,UAAU,EACV,yBAAyB,EACzB,MAAM,EACN,KAAK,EACL,sBAAsB,EACtB,mBAAmB,EACnB,oBAAoB,GACrB,CAAC"}
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,gCAAgC,CAAC;AAExC,OAAO,KAAK,UAAU,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,GAAG,MAAM,OAAO,CAAC;AAC7B,OAAO,KAAK,KAAK,MAAM,UAAU,CAAC;AAClC,OAAO,KAAK,MAAM,MAAM,gBAAgB,CAAC;AACzC,OAAO,KAAK,yBAAyB,MAAM,+BAA+B,CAAC;AAC3E,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAExD,OAAO,EACL,KAAK,EACL,GAAG,EACH,UAAU,EACV,yBAAyB,EACzB,MAAM,EACN,KAAK,EACL,sBAAsB,EACtB,mBAAmB,EACnB,oBAAoB,GACrB,CAAC"}
|
@@ -1,5 +1,5 @@
|
|
1
1
|
import { z } from "zod";
|
2
|
-
import { Disclosure, type DisclosureWithEncoded } from "./types";
|
2
|
+
import { Disclosure, SdJwt4VC, type DisclosureWithEncoded } from "./types";
|
3
3
|
import type { JWK } from "../utils/jwk";
|
4
4
|
/**
|
5
5
|
* Decode a given SD-JWT with Disclosures to get the parsed SD-JWT object they define.
|
@@ -10,12 +10,120 @@ import type { JWK } from "../utils/jwk";
|
|
10
10
|
*
|
11
11
|
* @function
|
12
12
|
* @param token The encoded token that represents a valid sd-jwt for verifiable credentials
|
13
|
-
* @param
|
13
|
+
* @param customSchema (optional) Schema to use to parse the SD-JWT. Default: SdJwt4VC
|
14
14
|
*
|
15
15
|
* @returns The parsed SD-JWT token and the parsed disclosures
|
16
16
|
*
|
17
17
|
*/
|
18
|
-
export declare const decode: <S extends z.
|
18
|
+
export declare const decode: <S extends z.ZodType<{
|
19
|
+
header: {
|
20
|
+
alg: string;
|
21
|
+
typ: "vc+sd-jwt";
|
22
|
+
trust_chain: string[];
|
23
|
+
kid?: string | undefined;
|
24
|
+
};
|
25
|
+
payload: {
|
26
|
+
type: string;
|
27
|
+
status: string;
|
28
|
+
iss: string;
|
29
|
+
sub: string;
|
30
|
+
jti: string;
|
31
|
+
iat: number;
|
32
|
+
exp: number;
|
33
|
+
cnf: {
|
34
|
+
jwk: {
|
35
|
+
kty: "RSA" | "EC";
|
36
|
+
alg?: string | undefined;
|
37
|
+
crv?: string | undefined;
|
38
|
+
d?: string | undefined;
|
39
|
+
dp?: string | undefined;
|
40
|
+
dq?: string | undefined;
|
41
|
+
e?: string | undefined;
|
42
|
+
ext?: boolean | undefined;
|
43
|
+
k?: string | undefined;
|
44
|
+
key_ops?: string[] | undefined;
|
45
|
+
kid?: string | undefined;
|
46
|
+
n?: string | undefined;
|
47
|
+
p?: string | undefined;
|
48
|
+
q?: string | undefined;
|
49
|
+
qi?: string | undefined;
|
50
|
+
use?: string | undefined;
|
51
|
+
x?: string | undefined;
|
52
|
+
y?: string | undefined;
|
53
|
+
x5c?: string[] | undefined;
|
54
|
+
x5t?: string | undefined;
|
55
|
+
"x5t#S256"?: string | undefined;
|
56
|
+
x5u?: string | undefined;
|
57
|
+
};
|
58
|
+
};
|
59
|
+
verified_claims: {
|
60
|
+
verification: {
|
61
|
+
trust_framework: "eidas";
|
62
|
+
assurance_level: string;
|
63
|
+
} & {
|
64
|
+
_sd: string[];
|
65
|
+
};
|
66
|
+
claims: {
|
67
|
+
_sd: string[];
|
68
|
+
};
|
69
|
+
};
|
70
|
+
_sd_alg: "sha-256";
|
71
|
+
};
|
72
|
+
}, z.ZodTypeDef, {
|
73
|
+
header: {
|
74
|
+
alg: string;
|
75
|
+
typ: "vc+sd-jwt";
|
76
|
+
trust_chain: string[];
|
77
|
+
kid?: string | undefined;
|
78
|
+
};
|
79
|
+
payload: {
|
80
|
+
type: string;
|
81
|
+
status: string;
|
82
|
+
iss: string;
|
83
|
+
sub: string;
|
84
|
+
jti: string;
|
85
|
+
iat: number;
|
86
|
+
exp: number;
|
87
|
+
cnf: {
|
88
|
+
jwk: {
|
89
|
+
kty: "RSA" | "EC";
|
90
|
+
alg?: string | undefined;
|
91
|
+
crv?: string | undefined;
|
92
|
+
d?: string | undefined;
|
93
|
+
dp?: string | undefined;
|
94
|
+
dq?: string | undefined;
|
95
|
+
e?: string | undefined;
|
96
|
+
ext?: boolean | undefined;
|
97
|
+
k?: string | undefined;
|
98
|
+
key_ops?: string[] | undefined;
|
99
|
+
kid?: string | undefined;
|
100
|
+
n?: string | undefined;
|
101
|
+
p?: string | undefined;
|
102
|
+
q?: string | undefined;
|
103
|
+
qi?: string | undefined;
|
104
|
+
use?: string | undefined;
|
105
|
+
x?: string | undefined;
|
106
|
+
y?: string | undefined;
|
107
|
+
x5c?: string[] | undefined;
|
108
|
+
x5t?: string | undefined;
|
109
|
+
"x5t#S256"?: string | undefined;
|
110
|
+
x5u?: string | undefined;
|
111
|
+
};
|
112
|
+
};
|
113
|
+
verified_claims: {
|
114
|
+
verification: {
|
115
|
+
trust_framework: "eidas";
|
116
|
+
assurance_level: string;
|
117
|
+
} & {
|
118
|
+
_sd: string[];
|
119
|
+
};
|
120
|
+
claims: {
|
121
|
+
_sd: string[];
|
122
|
+
};
|
123
|
+
};
|
124
|
+
_sd_alg: "sha-256";
|
125
|
+
};
|
126
|
+
}>>(token: string, customSchema?: S | undefined) => {
|
19
127
|
sdJwt: z.TypeOf<S>;
|
20
128
|
disclosures: DisclosureWithEncoded[];
|
21
129
|
};
|
@@ -50,13 +158,122 @@ export declare const disclose: (token: string, claims: string[]) => Promise<{
|
|
50
158
|
*
|
51
159
|
* @param token The encoded token that represents a valid sd-jwt for verifiable credentials
|
52
160
|
* @param publicKey The single public key or an array of public keys to validate the signature.
|
53
|
-
* @param
|
161
|
+
* @param customSchema Schema to use to parse the SD-JWT
|
54
162
|
*
|
55
163
|
* @returns The parsed SD-JWT token and the parsed disclosures
|
56
164
|
*
|
57
165
|
*/
|
58
|
-
export declare const verify: <S extends z.
|
166
|
+
export declare const verify: <S extends z.ZodType<{
|
167
|
+
header: {
|
168
|
+
alg: string;
|
169
|
+
typ: "vc+sd-jwt";
|
170
|
+
trust_chain: string[];
|
171
|
+
kid?: string | undefined;
|
172
|
+
};
|
173
|
+
payload: {
|
174
|
+
type: string;
|
175
|
+
status: string;
|
176
|
+
iss: string;
|
177
|
+
sub: string;
|
178
|
+
jti: string;
|
179
|
+
iat: number;
|
180
|
+
exp: number;
|
181
|
+
cnf: {
|
182
|
+
jwk: {
|
183
|
+
kty: "RSA" | "EC";
|
184
|
+
alg?: string | undefined;
|
185
|
+
crv?: string | undefined;
|
186
|
+
d?: string | undefined;
|
187
|
+
dp?: string | undefined;
|
188
|
+
dq?: string | undefined;
|
189
|
+
e?: string | undefined;
|
190
|
+
ext?: boolean | undefined;
|
191
|
+
k?: string | undefined;
|
192
|
+
key_ops?: string[] | undefined;
|
193
|
+
kid?: string | undefined;
|
194
|
+
n?: string | undefined;
|
195
|
+
p?: string | undefined;
|
196
|
+
q?: string | undefined;
|
197
|
+
qi?: string | undefined;
|
198
|
+
use?: string | undefined;
|
199
|
+
x?: string | undefined;
|
200
|
+
y?: string | undefined;
|
201
|
+
x5c?: string[] | undefined;
|
202
|
+
x5t?: string | undefined;
|
203
|
+
"x5t#S256"?: string | undefined;
|
204
|
+
x5u?: string | undefined;
|
205
|
+
};
|
206
|
+
};
|
207
|
+
verified_claims: {
|
208
|
+
verification: {
|
209
|
+
trust_framework: "eidas";
|
210
|
+
assurance_level: string;
|
211
|
+
} & {
|
212
|
+
_sd: string[];
|
213
|
+
};
|
214
|
+
claims: {
|
215
|
+
_sd: string[];
|
216
|
+
};
|
217
|
+
};
|
218
|
+
_sd_alg: "sha-256";
|
219
|
+
};
|
220
|
+
}, z.ZodTypeDef, {
|
221
|
+
header: {
|
222
|
+
alg: string;
|
223
|
+
typ: "vc+sd-jwt";
|
224
|
+
trust_chain: string[];
|
225
|
+
kid?: string | undefined;
|
226
|
+
};
|
227
|
+
payload: {
|
228
|
+
type: string;
|
229
|
+
status: string;
|
230
|
+
iss: string;
|
231
|
+
sub: string;
|
232
|
+
jti: string;
|
233
|
+
iat: number;
|
234
|
+
exp: number;
|
235
|
+
cnf: {
|
236
|
+
jwk: {
|
237
|
+
kty: "RSA" | "EC";
|
238
|
+
alg?: string | undefined;
|
239
|
+
crv?: string | undefined;
|
240
|
+
d?: string | undefined;
|
241
|
+
dp?: string | undefined;
|
242
|
+
dq?: string | undefined;
|
243
|
+
e?: string | undefined;
|
244
|
+
ext?: boolean | undefined;
|
245
|
+
k?: string | undefined;
|
246
|
+
key_ops?: string[] | undefined;
|
247
|
+
kid?: string | undefined;
|
248
|
+
n?: string | undefined;
|
249
|
+
p?: string | undefined;
|
250
|
+
q?: string | undefined;
|
251
|
+
qi?: string | undefined;
|
252
|
+
use?: string | undefined;
|
253
|
+
x?: string | undefined;
|
254
|
+
y?: string | undefined;
|
255
|
+
x5c?: string[] | undefined;
|
256
|
+
x5t?: string | undefined;
|
257
|
+
"x5t#S256"?: string | undefined;
|
258
|
+
x5u?: string | undefined;
|
259
|
+
};
|
260
|
+
};
|
261
|
+
verified_claims: {
|
262
|
+
verification: {
|
263
|
+
trust_framework: "eidas";
|
264
|
+
assurance_level: string;
|
265
|
+
} & {
|
266
|
+
_sd: string[];
|
267
|
+
};
|
268
|
+
claims: {
|
269
|
+
_sd: string[];
|
270
|
+
};
|
271
|
+
};
|
272
|
+
_sd_alg: "sha-256";
|
273
|
+
};
|
274
|
+
}>>(token: string, publicKey: JWK | JWK[], customSchema?: S | undefined) => Promise<{
|
59
275
|
sdJwt: z.TypeOf<S>;
|
60
276
|
disclosures: Disclosure[];
|
61
277
|
}>;
|
278
|
+
export { SdJwt4VC };
|
62
279
|
//# sourceMappingURL=index.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/sd-jwt/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAOxB,OAAO,EAAE,UAAU,
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/sd-jwt/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAOxB,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAE3E,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAWxC;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WACV,MAAM;;iBAIA,qBAAqB,EAAE;CA0BrC,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,QAAQ,UACZ,MAAM,UACL,MAAM,EAAE;WACE,MAAM;WAAS;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE;EA8CnE,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WACV,MAAM,aACF,GAAG,GAAG,GAAG,EAAE;;iBAEqB,UAAU,EAAE;EAwBxD,CAAC;AAEF,OAAO,EAAE,QAAQ,EAAE,CAAC"}
|
@@ -23,7 +23,7 @@ export declare const Disclosure: z.ZodTuple<[z.ZodString, z.ZodString, z.ZodUnkn
|
|
23
23
|
* For such reason, we may find conveninent to have encoded and decode values stored explicitly in the same structure.
|
24
24
|
* Please note that `encoded` can always decode into `decode`, but `decode` may or may not be encoded with the same value of `encoded`
|
25
25
|
*
|
26
|
-
* @see https://www.ietf.org/id/draft-ietf-oauth-selective-disclosure-jwt-05.html#name-disclosures-for-object-prop
|
26
|
+
* @see https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-05.html#name-disclosures-for-object-prop
|
27
27
|
*/
|
28
28
|
export type DisclosureWithEncoded = {
|
29
29
|
decoded: Disclosure;
|
@@ -102,6 +102,7 @@ export declare const getWalletProviderEntityConfiguration: (entityBaseUrl: Param
|
|
102
102
|
federation_resolve_endpoint?: string | undefined;
|
103
103
|
federation_trust_mark_status_endpoint?: string | undefined;
|
104
104
|
federation_trust_mark_list_endpoint?: string | undefined;
|
105
|
+
organization_name?: string | undefined;
|
105
106
|
homepage_uri?: string | undefined;
|
106
107
|
policy_uri?: string | undefined;
|
107
108
|
logo_uri?: string | undefined;
|
@@ -201,6 +202,7 @@ export declare const getCredentialIssuerEntityConfiguration: (entityBaseUrl: Par
|
|
201
202
|
federation_resolve_endpoint?: string | undefined;
|
202
203
|
federation_trust_mark_status_endpoint?: string | undefined;
|
203
204
|
federation_trust_mark_list_endpoint?: string | undefined;
|
205
|
+
organization_name?: string | undefined;
|
204
206
|
homepage_uri?: string | undefined;
|
205
207
|
policy_uri?: string | undefined;
|
206
208
|
logo_uri?: string | undefined;
|
@@ -383,6 +385,7 @@ export declare const getTrustAnchorEntityConfiguration: (entityBaseUrl: Paramete
|
|
383
385
|
federation_resolve_endpoint?: string | undefined;
|
384
386
|
federation_trust_mark_status_endpoint?: string | undefined;
|
385
387
|
federation_trust_mark_list_endpoint?: string | undefined;
|
388
|
+
organization_name?: string | undefined;
|
386
389
|
homepage_uri?: string | undefined;
|
387
390
|
policy_uri?: string | undefined;
|
388
391
|
logo_uri?: string | undefined;
|
@@ -442,6 +445,7 @@ export declare const getRelyingPartyEntityConfiguration: (entityBaseUrl: Paramet
|
|
442
445
|
federation_resolve_endpoint?: string | undefined;
|
443
446
|
federation_trust_mark_status_endpoint?: string | undefined;
|
444
447
|
federation_trust_mark_list_endpoint?: string | undefined;
|
448
|
+
organization_name?: string | undefined;
|
445
449
|
homepage_uri?: string | undefined;
|
446
450
|
policy_uri?: string | undefined;
|
447
451
|
logo_uri?: string | undefined;
|
@@ -538,6 +542,7 @@ export declare const getEntityConfiguration: (entityBaseUrl: Parameters<typeof f
|
|
538
542
|
federation_resolve_endpoint?: string | undefined;
|
539
543
|
federation_trust_mark_status_endpoint?: string | undefined;
|
540
544
|
federation_trust_mark_list_endpoint?: string | undefined;
|
545
|
+
organization_name?: string | undefined;
|
541
546
|
homepage_uri?: string | undefined;
|
542
547
|
policy_uri?: string | undefined;
|
543
548
|
logo_uri?: string | undefined;
|
@@ -596,6 +601,7 @@ export declare const getEntityConfiguration: (entityBaseUrl: Parameters<typeof f
|
|
596
601
|
federation_resolve_endpoint?: string | undefined;
|
597
602
|
federation_trust_mark_status_endpoint?: string | undefined;
|
598
603
|
federation_trust_mark_list_endpoint?: string | undefined;
|
604
|
+
organization_name?: string | undefined;
|
599
605
|
homepage_uri?: string | undefined;
|
600
606
|
policy_uri?: string | undefined;
|
601
607
|
logo_uri?: string | undefined;
|
@@ -777,6 +783,7 @@ export declare const getEntityConfiguration: (entityBaseUrl: Parameters<typeof f
|
|
777
783
|
federation_resolve_endpoint?: string | undefined;
|
778
784
|
federation_trust_mark_status_endpoint?: string | undefined;
|
779
785
|
federation_trust_mark_list_endpoint?: string | undefined;
|
786
|
+
organization_name?: string | undefined;
|
780
787
|
homepage_uri?: string | undefined;
|
781
788
|
policy_uri?: string | undefined;
|
782
789
|
logo_uri?: string | undefined;
|
@@ -872,6 +879,7 @@ export declare const getEntityConfiguration: (entityBaseUrl: Parameters<typeof f
|
|
872
879
|
federation_resolve_endpoint?: string | undefined;
|
873
880
|
federation_trust_mark_status_endpoint?: string | undefined;
|
874
881
|
federation_trust_mark_list_endpoint?: string | undefined;
|
882
|
+
organization_name?: string | undefined;
|
875
883
|
homepage_uri?: string | undefined;
|
876
884
|
policy_uri?: string | undefined;
|
877
885
|
logo_uri?: string | undefined;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/trust/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,iCAAiC,EACjC,8BAA8B,EAC9B,mCAAmC,EACnC,+BAA+B,EAC/B,mBAAmB,EACnB,eAAe,EAChB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,kBAAkB,EAAmB,MAAM,SAAS,CAAC;AAG9D,YAAY,EACV,iCAAiC,EACjC,8BAA8B,EAC9B,mCAAmC,EACnC,+BAA+B,EAC/B,mBAAmB,EACnB,eAAe,GAChB,CAAC;AAEF;;;;;;;;;;GAUG;AACH,wBAAsB,gBAAgB,CACpC,iBAAiB,EAAE,8BAA8B,EACjD,KAAK,EAAE,MAAM,EAAE,EACf,EACE,QAAgB,EAChB,WAAkB,GACnB,GAAE;IAAE,QAAQ,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;IAAC,WAAW,CAAC,EAAE,OAAO,CAAA;CAAO,GACjE,OAAO,CAAC,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC,CAWhD;AAED;;;;;;GAMG;AACH,wBAAsB,4BAA4B,CAChD,aAAa,EAAE,MAAM,EACrB,EACE,QAAgB,GACjB,GAAE;IACD,QAAQ,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;CAC5B,GACL,OAAO,CAAC,MAAM,CAAC,CAQjB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,iBAAe,gCAAgC,CAC7C,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,OAAO,iCAAiC,EAChD,OAAO,CAAC,EAAE;IACR,QAAQ,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;CACjC,GACA,OAAO,CAAC,iCAAiC,CAAC,CAAC;AAC9C,iBAAe,gCAAgC,CAC7C,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,OAAO,+BAA+B,EAC9C,OAAO,CAAC,EAAE;IACR,QAAQ,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;CACjC,GACA,OAAO,CAAC,+BAA+B,CAAC,CAAC;AAC5C,iBAAe,gCAAgC,CAC7C,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,OAAO,8BAA8B,EAC7C,OAAO,CAAC,EAAE;IACR,QAAQ,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;CACjC,GACA,OAAO,CAAC,8BAA8B,CAAC,CAAC;AAC3C,iBAAe,gCAAgC,CAC7C,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,OAAO,mCAAmC,EAClD,OAAO,CAAC,EAAE;IACR,QAAQ,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;CACjC,GACA,OAAO,CAAC,mCAAmC,CAAC,CAAC;AAChD,iBAAe,gCAAgC,CAC7C,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,OAAO,mBAAmB,EAClC,OAAO,CAAC,EAAE;IACR,QAAQ,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;CACjC,GACA,OAAO,CAAC,mBAAmB,CAAC,CAAC;AA0BhC,eAAO,MAAM,oCAAoC,kBAChC,WAAW,uCAAuC,CAAC,CAAC,CAAC,CAAC,YAC3D,WAAW,uCAAuC,CAAC,CAAC,CAAC,CAAC
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/trust/index.ts"],"names":[],"mappings":"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"}
|