@pagopa/io-react-native-wallet 0.24.1 → 0.25.0
Sign up to get free protection for your applications and to get access to all the features.
- package/lib/commonjs/client/generated/wallet-provider.js +39 -16
- package/lib/commonjs/client/generated/wallet-provider.js.map +1 -1
- package/lib/commonjs/client/index.js +25 -10
- package/lib/commonjs/client/index.js.map +1 -1
- package/lib/commonjs/credential/issuance/03-start-user-authorization.js +1 -1
- package/lib/commonjs/credential/issuance/04-complete-user-authorization.js +21 -14
- package/lib/commonjs/credential/issuance/04-complete-user-authorization.js.map +1 -1
- package/lib/commonjs/credential/issuance/05-authorize-access.js +5 -2
- package/lib/commonjs/credential/issuance/05-authorize-access.js.map +1 -1
- package/lib/commonjs/credential/issuance/06-obtain-credential.js +26 -17
- package/lib/commonjs/credential/issuance/06-obtain-credential.js.map +1 -1
- package/lib/commonjs/credential/issuance/README.md +8 -14
- package/lib/commonjs/credential/issuance/errors.js +52 -0
- package/lib/commonjs/credential/issuance/errors.js.map +1 -0
- package/lib/commonjs/credential/issuance/index.js +7 -2
- package/lib/commonjs/credential/issuance/index.js.map +1 -1
- package/lib/commonjs/credential/issuance/types.js +1 -5
- package/lib/commonjs/credential/issuance/types.js.map +1 -1
- package/lib/commonjs/credential/presentation/01-start-flow.js +1 -1
- package/lib/commonjs/credential/presentation/01-start-flow.js.map +1 -1
- package/lib/commonjs/credential/presentation/03-get-request-object.js +2 -2
- package/lib/commonjs/credential/presentation/03-get-request-object.js.map +1 -1
- package/lib/commonjs/credential/presentation/04-send-authorization-response.js +2 -2
- package/lib/commonjs/credential/presentation/04-send-authorization-response.js.map +1 -1
- package/lib/commonjs/credential/presentation/errors.js +49 -0
- package/lib/commonjs/credential/presentation/errors.js.map +1 -0
- package/lib/commonjs/credential/presentation/index.js +5 -0
- package/lib/commonjs/credential/presentation/index.js.map +1 -1
- package/lib/commonjs/credential/status/02-status-attestation.js +8 -6
- package/lib/commonjs/credential/status/02-status-attestation.js.map +1 -1
- package/lib/commonjs/credential/status/README.md +5 -2
- package/lib/commonjs/credential/status/types.js +1 -14
- package/lib/commonjs/credential/status/types.js.map +1 -1
- package/lib/commonjs/sd-jwt/errors.js +40 -0
- package/lib/commonjs/sd-jwt/errors.js.map +1 -0
- package/lib/commonjs/sd-jwt/index.js +8 -4
- package/lib/commonjs/sd-jwt/index.js.map +1 -1
- package/lib/commonjs/sd-jwt/verifier.js +5 -1
- package/lib/commonjs/sd-jwt/verifier.js.map +1 -1
- package/lib/commonjs/trust/index.js +2 -2
- package/lib/commonjs/trust/index.js.map +1 -1
- package/lib/commonjs/utils/decoder.js +3 -1
- package/lib/commonjs/utils/decoder.js.map +1 -1
- package/lib/commonjs/utils/error-codes.js +51 -0
- package/lib/commonjs/utils/error-codes.js.map +1 -0
- package/lib/commonjs/utils/errors.js +119 -463
- package/lib/commonjs/utils/errors.js.map +1 -1
- package/lib/commonjs/utils/misc.js +21 -14
- package/lib/commonjs/utils/misc.js.map +1 -1
- package/lib/commonjs/utils/par.js +2 -1
- package/lib/commonjs/utils/par.js.map +1 -1
- package/lib/commonjs/wallet-instance/README.md +26 -5
- package/lib/commonjs/wallet-instance/index.js +33 -7
- package/lib/commonjs/wallet-instance/index.js.map +1 -1
- package/lib/commonjs/wallet-instance-attestation/README.md +8 -2
- package/lib/commonjs/wallet-instance-attestation/issuing.js +13 -10
- package/lib/commonjs/wallet-instance-attestation/issuing.js.map +1 -1
- package/lib/module/client/generated/wallet-provider.js +31 -11
- package/lib/module/client/generated/wallet-provider.js.map +1 -1
- package/lib/module/client/index.js +22 -8
- package/lib/module/client/index.js.map +1 -1
- package/lib/module/credential/issuance/03-start-user-authorization.js +1 -1
- package/lib/module/credential/issuance/04-complete-user-authorization.js +16 -9
- package/lib/module/credential/issuance/04-complete-user-authorization.js.map +1 -1
- package/lib/module/credential/issuance/05-authorize-access.js +7 -4
- package/lib/module/credential/issuance/05-authorize-access.js.map +1 -1
- package/lib/module/credential/issuance/06-obtain-credential.js +29 -20
- package/lib/module/credential/issuance/06-obtain-credential.js.map +1 -1
- package/lib/module/credential/issuance/README.md +8 -14
- package/lib/module/credential/issuance/errors.js +44 -0
- package/lib/module/credential/issuance/errors.js.map +1 -0
- package/lib/module/credential/issuance/index.js +3 -2
- package/lib/module/credential/issuance/index.js.map +1 -1
- package/lib/module/credential/issuance/types.js +0 -3
- package/lib/module/credential/issuance/types.js.map +1 -1
- package/lib/module/credential/presentation/01-start-flow.js +1 -1
- package/lib/module/credential/presentation/01-start-flow.js.map +1 -1
- package/lib/module/credential/presentation/03-get-request-object.js +3 -3
- package/lib/module/credential/presentation/03-get-request-object.js.map +1 -1
- package/lib/module/credential/presentation/04-send-authorization-response.js +3 -3
- package/lib/module/credential/presentation/04-send-authorization-response.js.map +1 -1
- package/lib/module/credential/presentation/errors.js +42 -0
- package/lib/module/credential/presentation/errors.js.map +1 -0
- package/lib/module/credential/presentation/index.js +2 -1
- package/lib/module/credential/presentation/index.js.map +1 -1
- package/lib/module/credential/status/02-status-attestation.js +11 -9
- package/lib/module/credential/status/02-status-attestation.js.map +1 -1
- package/lib/module/credential/status/README.md +5 -2
- package/lib/module/credential/status/types.js +0 -12
- package/lib/module/credential/status/types.js.map +1 -1
- package/lib/module/sd-jwt/errors.js +32 -0
- package/lib/module/sd-jwt/errors.js.map +1 -0
- package/lib/module/sd-jwt/index.js +5 -5
- package/lib/module/sd-jwt/index.js.map +1 -1
- package/lib/module/sd-jwt/verifier.js +5 -1
- package/lib/module/sd-jwt/verifier.js.map +1 -1
- package/lib/module/trust/index.js +3 -3
- package/lib/module/trust/index.js.map +1 -1
- package/lib/module/utils/decoder.js +3 -1
- package/lib/module/utils/decoder.js.map +1 -1
- package/lib/module/utils/error-codes.js +43 -0
- package/lib/module/utils/error-codes.js.map +1 -0
- package/lib/module/utils/errors.js +98 -438
- package/lib/module/utils/errors.js.map +1 -1
- package/lib/module/utils/misc.js +18 -11
- package/lib/module/utils/misc.js.map +1 -1
- package/lib/module/utils/par.js +3 -2
- package/lib/module/utils/par.js.map +1 -1
- package/lib/module/wallet-instance/README.md +26 -5
- package/lib/module/wallet-instance/index.js +32 -7
- package/lib/module/wallet-instance/index.js.map +1 -1
- package/lib/module/wallet-instance-attestation/README.md +8 -2
- package/lib/module/wallet-instance-attestation/issuing.js +15 -12
- package/lib/module/wallet-instance-attestation/issuing.js.map +1 -1
- package/lib/typescript/client/generated/wallet-provider.d.ts +138 -27
- package/lib/typescript/client/generated/wallet-provider.d.ts.map +1 -1
- package/lib/typescript/client/index.d.ts +7 -1
- package/lib/typescript/client/index.d.ts.map +1 -1
- package/lib/typescript/credential/issuance/03-start-user-authorization.d.ts +1 -1
- package/lib/typescript/credential/issuance/04-complete-user-authorization.d.ts +1 -1
- package/lib/typescript/credential/issuance/04-complete-user-authorization.d.ts.map +1 -1
- package/lib/typescript/credential/issuance/05-authorize-access.d.ts.map +1 -1
- package/lib/typescript/credential/issuance/06-obtain-credential.d.ts.map +1 -1
- package/lib/typescript/credential/issuance/errors.d.ts +28 -0
- package/lib/typescript/credential/issuance/errors.d.ts.map +1 -0
- package/lib/typescript/credential/issuance/index.d.ts +3 -2
- package/lib/typescript/credential/issuance/index.d.ts.map +1 -1
- package/lib/typescript/credential/issuance/types.d.ts +0 -8
- package/lib/typescript/credential/issuance/types.d.ts.map +1 -1
- package/lib/typescript/credential/presentation/03-get-request-object.d.ts.map +1 -1
- package/lib/typescript/credential/presentation/04-send-authorization-response.d.ts.map +1 -1
- package/lib/typescript/credential/presentation/errors.d.ts +25 -0
- package/lib/typescript/credential/presentation/errors.d.ts.map +1 -0
- package/lib/typescript/credential/presentation/index.d.ts +2 -1
- package/lib/typescript/credential/presentation/index.d.ts.map +1 -1
- package/lib/typescript/credential/status/02-status-attestation.d.ts.map +1 -1
- package/lib/typescript/credential/status/types.d.ts +0 -15
- package/lib/typescript/credential/status/types.d.ts.map +1 -1
- package/lib/typescript/sd-jwt/errors.d.ts +20 -0
- package/lib/typescript/sd-jwt/errors.d.ts.map +1 -0
- package/lib/typescript/sd-jwt/index.d.ts +3 -2
- package/lib/typescript/sd-jwt/index.d.ts.map +1 -1
- package/lib/typescript/utils/error-codes.d.ts +45 -0
- package/lib/typescript/utils/error-codes.d.ts.map +1 -0
- package/lib/typescript/utils/errors.d.ts +88 -225
- package/lib/typescript/utils/errors.d.ts.map +1 -1
- package/lib/typescript/utils/misc.d.ts +9 -4
- package/lib/typescript/utils/misc.d.ts.map +1 -1
- package/lib/typescript/utils/par.d.ts.map +1 -1
- package/lib/typescript/wallet-instance/index.d.ts +17 -1
- package/lib/typescript/wallet-instance/index.d.ts.map +1 -1
- package/lib/typescript/wallet-instance-attestation/issuing.d.ts.map +1 -1
- package/lib/typescript/wallet-instance-attestation/types.d.ts +4 -4
- package/package.json +1 -1
- package/src/client/generated/wallet-provider.ts +43 -13
- package/src/client/index.ts +28 -15
- package/src/credential/issuance/03-start-user-authorization.ts +1 -1
- package/src/credential/issuance/04-complete-user-authorization.ts +21 -21
- package/src/credential/issuance/05-authorize-access.ts +7 -4
- package/src/credential/issuance/06-obtain-credential.ts +39 -39
- package/src/credential/issuance/README.md +8 -14
- package/src/credential/issuance/errors.ts +44 -0
- package/src/credential/issuance/index.ts +4 -2
- package/src/credential/issuance/types.ts +0 -8
- package/src/credential/presentation/01-start-flow.ts +1 -1
- package/src/credential/presentation/03-get-request-object.ts +3 -3
- package/src/credential/presentation/04-send-authorization-response.ts +3 -3
- package/src/credential/presentation/errors.ts +41 -0
- package/src/credential/presentation/index.ts +2 -0
- package/src/credential/status/02-status-attestation.ts +17 -25
- package/src/credential/status/README.md +5 -2
- package/src/credential/status/types.ts +0 -15
- package/src/sd-jwt/errors.ts +39 -0
- package/src/sd-jwt/index.ts +5 -8
- package/src/sd-jwt/verifier.ts +5 -5
- package/src/trust/index.ts +3 -3
- package/src/utils/decoder.ts +3 -3
- package/src/utils/error-codes.ts +50 -0
- package/src/utils/errors.ts +152 -476
- package/src/utils/misc.ts +20 -17
- package/src/utils/par.ts +3 -2
- package/src/wallet-instance/README.md +26 -5
- package/src/wallet-instance/index.ts +40 -18
- package/src/wallet-instance-attestation/README.md +8 -2
- package/src/wallet-instance-attestation/issuing.ts +28 -36
@@ -41,18 +41,3 @@ export const ParsedStatusAttestation = z.object({
|
|
41
41
|
iat: UnixTime,
|
42
42
|
}),
|
43
43
|
});
|
44
|
-
|
45
|
-
/**
|
46
|
-
* Shape from parsing a status attestation response in case of error.
|
47
|
-
*/
|
48
|
-
export const InvalidStatusAttestationResponse = z.object({
|
49
|
-
error: z.string(),
|
50
|
-
});
|
51
|
-
|
52
|
-
/**
|
53
|
-
* Type from parsing a status attestation response in case of error.
|
54
|
-
* Inferred from {@link InvalidStatusAttestationResponse}.
|
55
|
-
*/
|
56
|
-
export type InvalidStatusAttestationResponse = z.infer<
|
57
|
-
typeof InvalidStatusAttestationResponse
|
58
|
-
>;
|
@@ -0,0 +1,39 @@
|
|
1
|
+
/**
|
2
|
+
* When claims are requested but not found in the credential
|
3
|
+
*
|
4
|
+
*/
|
5
|
+
export class ClaimsNotFoundBetweenDisclosures extends Error {
|
6
|
+
code = "ERR_CLAIMS_NOT_FOUND";
|
7
|
+
|
8
|
+
/** The Claims not found */
|
9
|
+
claims: string[];
|
10
|
+
|
11
|
+
constructor(claims: string | string[]) {
|
12
|
+
const c = Array.isArray(claims) ? claims : [claims];
|
13
|
+
const message = `Some requested claims are not present in the disclosurable values, claims: ${c.join(
|
14
|
+
", "
|
15
|
+
)}`;
|
16
|
+
super(message);
|
17
|
+
this.claims = c;
|
18
|
+
}
|
19
|
+
}
|
20
|
+
|
21
|
+
/**
|
22
|
+
* When the SD-JWT does not contain an hashed reference to a given set of claims
|
23
|
+
*/
|
24
|
+
export class ClaimsNotFoundInToken extends Error {
|
25
|
+
code = "ERR_CLAIMS_NOT_FOUND_IN_TOKEN";
|
26
|
+
|
27
|
+
/** The Claims not found */
|
28
|
+
claims: string[];
|
29
|
+
|
30
|
+
constructor(claims: string | string[]) {
|
31
|
+
const claimsArray = Array.isArray(claims) ? claims : [claims];
|
32
|
+
super(
|
33
|
+
`Some requested claims are not present in the disclosurable values: ${claimsArray.join(
|
34
|
+
", "
|
35
|
+
)}`
|
36
|
+
);
|
37
|
+
this.claims = claimsArray;
|
38
|
+
}
|
39
|
+
}
|
package/src/sd-jwt/index.ts
CHANGED
@@ -6,10 +6,7 @@ import { sha256ToBase64 } from "@pagopa/io-react-native-jwt";
|
|
6
6
|
import { Disclosure, SdJwt4VC, type DisclosureWithEncoded } from "./types";
|
7
7
|
import { verifyDisclosure } from "./verifier";
|
8
8
|
import type { JWK } from "../utils/jwk";
|
9
|
-
import
|
10
|
-
ClaimsNotFoundBetweenDislosures,
|
11
|
-
ClaimsNotFoundInToken,
|
12
|
-
} from "../utils/errors";
|
9
|
+
import * as Errors from "./errors";
|
13
10
|
import { Base64 } from "js-base64";
|
14
11
|
|
15
12
|
const decodeDisclosure = (encoded: string): DisclosureWithEncoded => {
|
@@ -73,7 +70,7 @@ export const decode = <S extends z.ZodType<SdJwt4VC>>(
|
|
73
70
|
* @param token The encoded token that represents a valid sd-jwt for verifiable credentials
|
74
71
|
* @param claims The list of claims to be disclosed
|
75
72
|
*
|
76
|
-
* @throws {
|
73
|
+
* @throws {ClaimsNotFoundBetweenDisclosures} When one or more claims does not relate to any discloure.
|
77
74
|
* @throws {ClaimsNotFoundInToken} When one or more claims are not contained in the SD-JWT token.
|
78
75
|
* @returns The encoded token with only the requested disclosures, along with the path each claim can be found on the SD-JWT token
|
79
76
|
*
|
@@ -94,7 +91,7 @@ export const disclose = async (
|
|
94
91
|
|
95
92
|
// check every claim represents a known disclosure
|
96
93
|
if (!disclosure) {
|
97
|
-
throw new
|
94
|
+
throw new Errors.ClaimsNotFoundBetweenDisclosures(claim);
|
98
95
|
}
|
99
96
|
|
100
97
|
const hash = await sha256ToBase64(disclosure.encoded);
|
@@ -106,7 +103,7 @@ export const disclose = async (
|
|
106
103
|
return { claim, path: `verified_claims.claims._sd[${index}]` };
|
107
104
|
}
|
108
105
|
|
109
|
-
throw new ClaimsNotFoundInToken(claim);
|
106
|
+
throw new Errors.ClaimsNotFoundInToken(claim);
|
110
107
|
})
|
111
108
|
);
|
112
109
|
|
@@ -166,4 +163,4 @@ export const verify = async <S extends z.ZodType<SdJwt4VC>>(
|
|
166
163
|
};
|
167
164
|
};
|
168
165
|
|
169
|
-
export { SdJwt4VC };
|
166
|
+
export { SdJwt4VC, Errors };
|
package/src/sd-jwt/verifier.ts
CHANGED
@@ -9,10 +9,10 @@ export const verifyDisclosure = async (
|
|
9
9
|
) => {
|
10
10
|
let hash = await sha256ToBase64(encoded);
|
11
11
|
if (!claims.includes(hash)) {
|
12
|
-
throw new ValidationFailed(
|
13
|
-
"Validation of disclosure failed",
|
14
|
-
`${decoded}`,
|
15
|
-
"Disclosure hash not found in claims"
|
16
|
-
);
|
12
|
+
throw new ValidationFailed({
|
13
|
+
message: "Validation of disclosure failed",
|
14
|
+
claim: `${decoded}`,
|
15
|
+
reason: "Disclosure hash not found in claims",
|
16
|
+
});
|
17
17
|
}
|
18
18
|
};
|
package/src/trust/index.ts
CHANGED
@@ -8,7 +8,7 @@ import {
|
|
8
8
|
EntityStatement,
|
9
9
|
} from "./types";
|
10
10
|
import { validateTrustChain, renewTrustChain } from "./chain";
|
11
|
-
import {
|
11
|
+
import { hasStatusOrThrow } from "../utils/misc";
|
12
12
|
|
13
13
|
export type {
|
14
14
|
WalletProviderEntityConfiguration,
|
@@ -70,7 +70,7 @@ export async function getSignedEntityConfiguration(
|
|
70
70
|
return await appFetch(wellKnownUrl, {
|
71
71
|
method: "GET",
|
72
72
|
})
|
73
|
-
.then(
|
73
|
+
.then(hasStatusOrThrow(200))
|
74
74
|
.then((res) => res.text());
|
75
75
|
}
|
76
76
|
|
@@ -256,6 +256,6 @@ export async function getSignedEntityStatement(
|
|
256
256
|
return await appFetch(url, {
|
257
257
|
method: "GET",
|
258
258
|
})
|
259
|
-
.then(
|
259
|
+
.then(hasStatusOrThrow(200))
|
260
260
|
.then((res) => res.text());
|
261
261
|
}
|
package/src/utils/decoder.ts
CHANGED
@@ -47,7 +47,7 @@ export const getJwtFromFormPost = async (
|
|
47
47
|
}
|
48
48
|
}
|
49
49
|
|
50
|
-
throw new ValidationFailed(
|
51
|
-
`Unable to obtain JWT from form_post.jwt. Form data: ${formData}
|
52
|
-
);
|
50
|
+
throw new ValidationFailed({
|
51
|
+
message: `Unable to obtain JWT from form_post.jwt. Form data: ${formData}`,
|
52
|
+
});
|
53
53
|
};
|
@@ -0,0 +1,50 @@
|
|
1
|
+
export const IssuerResponseErrorCodes = {
|
2
|
+
IssuerGenericError: "ERR_ISSUER_GENERIC_ERROR",
|
3
|
+
/**
|
4
|
+
* Error code thrown when a credential cannot be issued immediately because it follows the async flow.
|
5
|
+
*/
|
6
|
+
CredentialIssuingNotSynchronous: "ERR_CREDENTIAL_ISSUING_NOT_SYNCHRONOUS",
|
7
|
+
/**
|
8
|
+
* Error code thrown when an error occurs while requesting a credential.
|
9
|
+
*/
|
10
|
+
CredentialRequestFailed: "ERR_CREDENTIAL_REQUEST_FAILED",
|
11
|
+
/**
|
12
|
+
* Error code thrown when a credential status is invalid, either during issuance or when requesting a status attestation.
|
13
|
+
*/
|
14
|
+
CredentialInvalidStatus: "ERR_CREDENTIAL_INVALID_STATUS",
|
15
|
+
/**
|
16
|
+
* Error code thrown when an error occurs while obtaining a status attestation for a credential.
|
17
|
+
*/
|
18
|
+
StatusAttestationRequestFailed: "ERR_STATUS_ATTESTATION_REQUEST_FAILED",
|
19
|
+
} as const;
|
20
|
+
|
21
|
+
export const WalletProviderResponseErrorCodes = {
|
22
|
+
WalletProviderGenericError: "ERR_IO_WALLET_PROVIDER_GENERIC_ERROR",
|
23
|
+
/**
|
24
|
+
* An error code thrown when an error occurs during the wallet instance creation process.
|
25
|
+
*/
|
26
|
+
WalletInstanceCreationFailed: "ERR_IO_WALLET_INSTANCE_CREATION_FAILED",
|
27
|
+
/**
|
28
|
+
* An error code thrown when validation fail
|
29
|
+
*/
|
30
|
+
WalletInstanceAttestationIssuingFailed:
|
31
|
+
"ERR_IO_WALLET_INSTANCE_ATTESTATION_ISSUING_FAILED",
|
32
|
+
/**
|
33
|
+
* An error code thrown when the requester does not pass the integrity checks when interacting with the Wallet Provider.
|
34
|
+
*/
|
35
|
+
WalletInstanceIntegrityFailed: "ERR_IO_WALLET_INSTANCE_INTEGRITY_FAILED",
|
36
|
+
/**
|
37
|
+
* An error code thrown when obtaining a wallet instance attestation but the wallet instance is revoked.
|
38
|
+
*/
|
39
|
+
WalletInstanceRevoked: "ERR_IO_WALLET_INSTANCE_REVOKED",
|
40
|
+
/**
|
41
|
+
* An error code thrown when obtaining a wallet instance attestation but the wallet instance is not found.
|
42
|
+
*/
|
43
|
+
WalletInstanceNotFound: "ERR_IO_WALLET_INSTANCE_NOT_FOUND",
|
44
|
+
} as const;
|
45
|
+
|
46
|
+
export type IssuerResponseErrorCode =
|
47
|
+
(typeof IssuerResponseErrorCodes)[keyof typeof IssuerResponseErrorCodes];
|
48
|
+
|
49
|
+
export type WalletProviderResponseErrorCode =
|
50
|
+
(typeof WalletProviderResponseErrorCodes)[keyof typeof WalletProviderResponseErrorCodes];
|