@pagopa/io-react-native-wallet 0.24.0 → 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/credential/trustmark/get-credential-trustmark.js +14 -5
- package/lib/commonjs/credential/trustmark/get-credential-trustmark.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/credential/trustmark/get-credential-trustmark.js +14 -5
- package/lib/module/credential/trustmark/get-credential-trustmark.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/credential/trustmark/get-credential-trustmark.d.ts +4 -2
- package/lib/typescript/credential/trustmark/get-credential-trustmark.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/credential/trustmark/get-credential-trustmark.ts +13 -4
- 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
package/src/utils/misc.ts
CHANGED
@@ -2,21 +2,22 @@ import { IoWalletError, UnexpectedStatusCodeError } from "./errors";
|
|
2
2
|
import { sha256 } from "js-sha256";
|
3
3
|
|
4
4
|
/**
|
5
|
-
* Check if a response is in the expected status,
|
5
|
+
* Check if a response is in the expected status, otherwise throw an error
|
6
6
|
* @param status - The expected status
|
7
|
-
* @
|
7
|
+
* @param customError - A custom error compatible with {@link UnexpectedStatusCodeError}
|
8
|
+
* @throws UnexpectedStatusCodeError if the status is different from the one expected
|
8
9
|
* @returns The given response object
|
9
10
|
*/
|
10
|
-
export const
|
11
|
-
(status: number) =>
|
11
|
+
export const hasStatusOrThrow =
|
12
|
+
(status: number, customError?: typeof UnexpectedStatusCodeError) =>
|
12
13
|
async (res: Response): Promise<Response> => {
|
13
14
|
if (res.status !== status) {
|
14
|
-
const
|
15
|
-
throw new
|
16
|
-
`Http request failed. Expected ${status}, got ${res.status}, url: ${res.url}
|
17
|
-
res.status,
|
18
|
-
|
19
|
-
);
|
15
|
+
const ErrorClass = customError ?? UnexpectedStatusCodeError;
|
16
|
+
throw new ErrorClass({
|
17
|
+
message: `Http request failed. Expected ${status}, got ${res.status}, url: ${res.url}`,
|
18
|
+
statusCode: res.status,
|
19
|
+
reason: await parseRawHttpResponse(res), // Pass the response body as reason so the original error can surface
|
20
|
+
});
|
20
21
|
}
|
21
22
|
return res;
|
22
23
|
};
|
@@ -110,10 +111,12 @@ export const createAbortPromiseFromSignal = (signal: AbortSignal) => {
|
|
110
111
|
export const isDefined = <T>(x: T | undefined | null | ""): x is T =>
|
111
112
|
Boolean(x);
|
112
113
|
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
114
|
+
/**
|
115
|
+
* Utility function to parse a raw HTTP response as JSON if supported, otherwise as text.
|
116
|
+
*/
|
117
|
+
export const parseRawHttpResponse = <T extends Record<string, unknown>>(
|
118
|
+
response: Response
|
119
|
+
) =>
|
120
|
+
response.headers.get("content-type")?.includes("application/json")
|
121
|
+
? (response.json() as Promise<T>)
|
122
|
+
: response.text();
|
package/src/utils/par.ts
CHANGED
@@ -6,8 +6,9 @@ import {
|
|
6
6
|
import uuid from "react-native-uuid";
|
7
7
|
import * as z from "zod";
|
8
8
|
import * as WalletInstanceAttestation from "../wallet-instance-attestation";
|
9
|
-
import { generateRandomAlphaNumericString,
|
9
|
+
import { generateRandomAlphaNumericString, hasStatusOrThrow } from "./misc";
|
10
10
|
import { createPopToken } from "./pop";
|
11
|
+
import { IssuerResponseError } from "./errors";
|
11
12
|
|
12
13
|
export type AuthorizationDetail = z.infer<typeof AuthorizationDetail>;
|
13
14
|
export const AuthorizationDetail = z.object({
|
@@ -109,7 +110,7 @@ export const makeParRequest =
|
|
109
110
|
},
|
110
111
|
body: formBody.toString(),
|
111
112
|
})
|
112
|
-
.then(
|
113
|
+
.then(hasStatusOrThrow(201, IssuerResponseError))
|
113
114
|
.then((res) => res.json())
|
114
115
|
.then((result) => result.request_uri);
|
115
116
|
};
|
@@ -6,7 +6,8 @@ The suggested way to implement this service is to use [io-react-native-integrity
|
|
6
6
|
|
7
7
|
The following methods are available:
|
8
8
|
- `createWalletInstance` creates a new wallet instance;
|
9
|
-
- `
|
9
|
+
- `revokeWalletInstance` revokes a wallet instance by ID;
|
10
|
+
- `getWalletInstanceStatus` fetches the status of a wallet instance by ID without the need to require an attestation.
|
10
11
|
|
11
12
|
Examples are provided as follows:
|
12
13
|
|
@@ -35,12 +36,29 @@ return integrityKeyTag;
|
|
35
36
|
|
36
37
|
The returned `integrityKeyTag` is supposed to be stored and used to verify the integrity of the device in the future when using an `IntegrityContext` object. It must be regenerated if another wallet instance is created.
|
37
38
|
|
38
|
-
### Wallet
|
39
|
+
### Wallet Instance revocation
|
40
|
+
|
41
|
+
Revoke a Wallet Instance by ID. The ID matches the hardware/integrity key tag used for creation.
|
42
|
+
|
43
|
+
```ts
|
44
|
+
const { WALLET_PROVIDER_BASE_URL } = env;
|
45
|
+
|
46
|
+
await WalletInstance.revokeWalletInstance({
|
47
|
+
id: "495e5bec-b93f-4fd7-952a-94b27233abdb"
|
48
|
+
walletProviderBaseUrl: WALLET_PROVIDER_BASE_URL,
|
49
|
+
appFetch,
|
50
|
+
});
|
51
|
+
|
52
|
+
```
|
53
|
+
### Wallet Instance status
|
54
|
+
|
55
|
+
Get the status of a Wallet Instance by ID. The ID matches the hardware/integrity key tag used for creation.
|
39
56
|
|
40
57
|
```ts
|
41
58
|
const { WALLET_PROVIDER_BASE_URL } = env;
|
42
59
|
|
43
|
-
await WalletInstance.
|
60
|
+
const status = await WalletInstance.getWalletInstanceStatus({
|
61
|
+
id: "495e5bec-b93f-4fd7-952a-94b27233abdb"
|
44
62
|
walletProviderBaseUrl: WALLET_PROVIDER_BASE_URL,
|
45
63
|
appFetch,
|
46
64
|
});
|
@@ -48,6 +66,9 @@ await WalletInstance.revokeCurrentWalletInstance({
|
|
48
66
|
|
49
67
|
## Mapped results
|
50
68
|
|
51
|
-
|
69
|
+
The following errors are mapped to a `WalletProviderResponseError` with specific codes.
|
52
70
|
|
53
|
-
|
71
|
+
|HTTP Status|Error Code|Description|
|
72
|
+
|-----------|----------|-----------|
|
73
|
+
|`409 Conflict`|`ERR_IO_WALLET_INSTANCE_INTEGRITY_FAILED`|This response is returned by the wallet provider when an integrity check fails.|
|
74
|
+
|`*`|`ERR_IO_WALLET_PROVIDER_GENERIC_ERROR`|This is a generic error code to map unexpected errors that occurred when interacting with the Wallet Provider.|
|
@@ -1,10 +1,11 @@
|
|
1
1
|
import { getWalletProviderClient } from "../client";
|
2
|
-
import type { IntegrityContext } from "..";
|
3
2
|
import {
|
4
|
-
|
5
|
-
WalletInstanceCreationIntegrityError,
|
3
|
+
ResponseErrorBuilder,
|
6
4
|
WalletProviderResponseError,
|
5
|
+
WalletProviderResponseErrorCodes,
|
7
6
|
} from "../utils/errors";
|
7
|
+
import type { WalletInstanceData } from "../client/generated/wallet-provider";
|
8
|
+
import type { IntegrityContext } from "..";
|
8
9
|
|
9
10
|
export async function createWalletInstance(context: {
|
10
11
|
integrityContext: IntegrityContext;
|
@@ -40,28 +41,49 @@ const handleCreateWalletInstanceError = (e: unknown) => {
|
|
40
41
|
throw e;
|
41
42
|
}
|
42
43
|
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
)
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
e
|
54
|
-
e.reason
|
55
|
-
);
|
44
|
+
throw new ResponseErrorBuilder(WalletProviderResponseError)
|
45
|
+
.handle(409, {
|
46
|
+
code: WalletProviderResponseErrorCodes.WalletInstanceIntegrityFailed,
|
47
|
+
message:
|
48
|
+
"Unable to create a wallet instance with a device that failed the integrity check",
|
49
|
+
})
|
50
|
+
.handle("*", {
|
51
|
+
code: WalletProviderResponseErrorCodes.WalletInstanceCreationFailed,
|
52
|
+
message: "Unable to create wallet instance",
|
53
|
+
})
|
54
|
+
.buildFrom(e);
|
56
55
|
};
|
57
56
|
|
58
|
-
|
57
|
+
/**
|
58
|
+
* Revoke a Wallet Instance by ID.
|
59
|
+
* @param context.id The Wallet Instance ID. It matches the hardware key tag used for creation.
|
60
|
+
*/
|
61
|
+
export async function revokeWalletInstance(context: {
|
62
|
+
id: string;
|
59
63
|
walletProviderBaseUrl: string;
|
60
64
|
appFetch?: GlobalFetch["fetch"];
|
61
65
|
}): Promise<void> {
|
62
66
|
const api = getWalletProviderClient(context);
|
63
67
|
|
64
|
-
await api.put("/wallet-instances/
|
68
|
+
await api.put("/wallet-instances/{id}/status", {
|
69
|
+
path: { id: context.id },
|
65
70
|
body: { status: "REVOKED" },
|
66
71
|
});
|
67
72
|
}
|
73
|
+
|
74
|
+
/**
|
75
|
+
* Get the status of a Wallet Instance by ID.
|
76
|
+
* @param context.id The Wallet Instance ID. It matches the hardware key tag used for creation.
|
77
|
+
* @returns Details on the status of the Wallet Instance
|
78
|
+
*/
|
79
|
+
export async function getWalletInstanceStatus(context: {
|
80
|
+
id: string;
|
81
|
+
walletProviderBaseUrl: string;
|
82
|
+
appFetch?: GlobalFetch["fetch"];
|
83
|
+
}): Promise<WalletInstanceData> {
|
84
|
+
const api = getWalletProviderClient(context);
|
85
|
+
|
86
|
+
return api.get("/wallet-instances/{id}/status", {
|
87
|
+
path: { id: context.id },
|
88
|
+
});
|
89
|
+
}
|
@@ -36,6 +36,12 @@ The returned `issuedAttestation` is supposed to be stored and used for any futur
|
|
36
36
|
|
37
37
|
## Mapped results
|
38
38
|
|
39
|
-
|
39
|
+
The following errors are mapped to a `WalletProviderResponseError` with specific codes.
|
40
|
+
|
41
|
+
|HTTP Status|Error Code|Description|
|
42
|
+
|-----------|----------|-----------|
|
43
|
+
|`403 Forbidden`|`ERR_IO_WALLET_INSTANCE_REVOKED`|This response is returned by the wallet provider when the wallet instance has been revoked.|
|
44
|
+
|`404 Not Found`|`ERR_IO_WALLET_INSTANCE_NOT_FOUND`|This response is returned by the wallet provider when the wallet instance does not exist.|
|
45
|
+
|`409 Conflict`|`ERR_IO_WALLET_INSTANCE_INTEGRITY_FAILED`|This response is returned by the wallet provider when an integrity check fails.|
|
46
|
+
|`*`|`ERR_IO_WALLET_PROVIDER_GENERIC_ERROR`|This is a generic error code to map unexpected errors that occurred when interacting with the Wallet Provider.|
|
40
47
|
|
41
|
-
A `409 Conflict` response is returned by the wallet provider when an integrity check fails.
|
@@ -1,14 +1,15 @@
|
|
1
|
-
import {
|
2
|
-
|
3
|
-
|
1
|
+
import {
|
2
|
+
type CryptoContext,
|
3
|
+
SignJWT,
|
4
|
+
thumbprint,
|
5
|
+
} from "@pagopa/io-react-native-jwt";
|
6
|
+
import { fixBase64EncodingOnKey, JWK } from "../utils/jwk";
|
4
7
|
import { getWalletProviderClient } from "../client";
|
5
8
|
import type { IntegrityContext } from "..";
|
6
9
|
import {
|
10
|
+
ResponseErrorBuilder,
|
7
11
|
WalletProviderResponseError,
|
8
|
-
|
9
|
-
WalletInstanceNotFoundError,
|
10
|
-
WalletInstanceAttestationIssuingError,
|
11
|
-
WalletInstanceIntegrityFailedError,
|
12
|
+
WalletProviderResponseErrorCodes,
|
12
13
|
} from "../utils/errors";
|
13
14
|
import { TokenResponse } from "./types";
|
14
15
|
|
@@ -120,33 +121,24 @@ const handleAttestationCreationError = (e: unknown) => {
|
|
120
121
|
throw e;
|
121
122
|
}
|
122
123
|
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
e.reason
|
144
|
-
);
|
145
|
-
}
|
146
|
-
|
147
|
-
throw new WalletInstanceAttestationIssuingError(
|
148
|
-
`Unable to obtain wallet instance attestation [response status code: ${e.statusCode}]`,
|
149
|
-
e.claim,
|
150
|
-
e.reason
|
151
|
-
);
|
124
|
+
throw new ResponseErrorBuilder(WalletProviderResponseError)
|
125
|
+
.handle(403, {
|
126
|
+
code: WalletProviderResponseErrorCodes.WalletInstanceRevoked,
|
127
|
+
message: "Unable to get an attestation for a revoked Wallet Instance",
|
128
|
+
})
|
129
|
+
.handle(404, {
|
130
|
+
code: WalletProviderResponseErrorCodes.WalletInstanceNotFound,
|
131
|
+
message:
|
132
|
+
"Unable to get an attestation for a Wallet Instance that does not exist",
|
133
|
+
})
|
134
|
+
.handle(409, {
|
135
|
+
code: WalletProviderResponseErrorCodes.WalletInstanceIntegrityFailed,
|
136
|
+
message:
|
137
|
+
"Unable to get an attestation for a Wallet Instance that failed the integrity check",
|
138
|
+
})
|
139
|
+
.handle("*", {
|
140
|
+
code: WalletProviderResponseErrorCodes.WalletInstanceAttestationIssuingFailed,
|
141
|
+
message: "Unable to obtain wallet instance attestation",
|
142
|
+
})
|
143
|
+
.buildFrom(e);
|
152
144
|
};
|