@pagopa/io-react-native-wallet 0.25.0 → 0.27.0
Sign up to get free protection for your applications and to get access to all the features.
- package/README.md +1 -35
- package/lib/commonjs/credential/issuance/03-start-user-authorization.js +1 -1
- package/lib/commonjs/credential/issuance/04-complete-user-authorization.js +19 -57
- package/lib/commonjs/credential/issuance/04-complete-user-authorization.js.map +1 -1
- package/lib/commonjs/credential/issuance/05-authorize-access.js +1 -0
- package/lib/commonjs/credential/issuance/05-authorize-access.js.map +1 -1
- package/lib/commonjs/credential/issuance/06-obtain-credential.js +1 -2
- package/lib/commonjs/credential/issuance/06-obtain-credential.js.map +1 -1
- package/lib/commonjs/credential/issuance/errors.js +1 -18
- package/lib/commonjs/credential/issuance/errors.js.map +1 -1
- package/lib/commonjs/credential/issuance/index.js +6 -0
- package/lib/commonjs/credential/issuance/index.js.map +1 -1
- package/lib/commonjs/credential/status/02-status-attestation.js +2 -4
- package/lib/commonjs/credential/status/02-status-attestation.js.map +1 -1
- package/lib/commonjs/index.js +1 -3
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/utils/misc.js +19 -58
- package/lib/commonjs/utils/misc.js.map +1 -1
- package/lib/commonjs/wallet-instance-attestation/issuing.js +1 -2
- package/lib/commonjs/wallet-instance-attestation/issuing.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 +19 -58
- package/lib/module/credential/issuance/04-complete-user-authorization.js.map +1 -1
- package/lib/module/credential/issuance/05-authorize-access.js +1 -0
- package/lib/module/credential/issuance/05-authorize-access.js.map +1 -1
- package/lib/module/credential/issuance/06-obtain-credential.js +1 -2
- package/lib/module/credential/issuance/06-obtain-credential.js.map +1 -1
- package/lib/module/credential/issuance/errors.js +0 -16
- package/lib/module/credential/issuance/errors.js.map +1 -1
- package/lib/module/credential/issuance/index.js +2 -2
- package/lib/module/credential/issuance/index.js.map +1 -1
- package/lib/module/credential/status/02-status-attestation.js +2 -4
- package/lib/module/credential/status/02-status-attestation.js.map +1 -1
- package/lib/module/index.js +1 -2
- package/lib/module/index.js.map +1 -1
- package/lib/module/utils/misc.js +14 -51
- package/lib/module/utils/misc.js.map +1 -1
- package/lib/module/wallet-instance-attestation/issuing.js +1 -2
- package/lib/module/wallet-instance-attestation/issuing.js.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 +16 -15
- package/lib/typescript/credential/issuance/04-complete-user-authorization.d.ts.map +1 -1
- package/lib/typescript/credential/issuance/05-authorize-access.d.ts +1 -0
- package/lib/typescript/credential/issuance/05-authorize-access.d.ts.map +1 -1
- package/lib/typescript/credential/issuance/errors.d.ts +0 -9
- package/lib/typescript/credential/issuance/errors.d.ts.map +1 -1
- package/lib/typescript/credential/issuance/index.d.ts +3 -3
- package/lib/typescript/credential/issuance/index.d.ts.map +1 -1
- package/lib/typescript/credential/status/02-status-attestation.d.ts +1 -2
- package/lib/typescript/credential/status/02-status-attestation.d.ts.map +1 -1
- package/lib/typescript/index.d.ts +1 -2
- package/lib/typescript/index.d.ts.map +1 -1
- package/lib/typescript/utils/misc.d.ts +5 -25
- package/lib/typescript/utils/misc.d.ts.map +1 -1
- package/lib/typescript/wallet-instance-attestation/issuing.d.ts +2 -2
- package/lib/typescript/wallet-instance-attestation/issuing.d.ts.map +1 -1
- package/package.json +2 -6
- package/src/credential/issuance/03-start-user-authorization.ts +1 -1
- package/src/credential/issuance/04-complete-user-authorization.ts +42 -103
- package/src/credential/issuance/05-authorize-access.ts +1 -0
- package/src/credential/issuance/06-obtain-credential.ts +1 -2
- package/src/credential/issuance/errors.ts +0 -15
- package/src/credential/issuance/index.ts +4 -0
- package/src/credential/status/02-status-attestation.ts +2 -4
- package/src/index.ts +0 -2
- package/src/utils/misc.ts +16 -63
- package/src/wallet-instance-attestation/issuing.ts +1 -2
- package/lib/commonjs/cie/README.md +0 -6
- package/lib/commonjs/cie/component.js +0 -182
- package/lib/commonjs/cie/component.js.map +0 -1
- package/lib/commonjs/cie/error.js +0 -44
- package/lib/commonjs/cie/error.js.map +0 -1
- package/lib/commonjs/cie/index.js +0 -32
- package/lib/commonjs/cie/index.js.map +0 -1
- package/lib/commonjs/cie/manager.js +0 -142
- package/lib/commonjs/cie/manager.js.map +0 -1
- package/lib/module/cie/README.md +0 -6
- package/lib/module/cie/component.js +0 -172
- package/lib/module/cie/component.js.map +0 -1
- package/lib/module/cie/error.js +0 -36
- package/lib/module/cie/error.js.map +0 -1
- package/lib/module/cie/index.js +0 -4
- package/lib/module/cie/index.js.map +0 -1
- package/lib/module/cie/manager.js +0 -133
- package/lib/module/cie/manager.js.map +0 -1
- package/lib/typescript/cie/component.d.ts +0 -46
- package/lib/typescript/cie/component.d.ts.map +0 -1
- package/lib/typescript/cie/error.d.ts +0 -31
- package/lib/typescript/cie/error.d.ts.map +0 -1
- package/lib/typescript/cie/index.d.ts +0 -4
- package/lib/typescript/cie/index.d.ts.map +0 -1
- package/lib/typescript/cie/manager.d.ts +0 -5
- package/lib/typescript/cie/manager.d.ts.map +0 -1
- package/src/cie/README.md +0 -6
- package/src/cie/component.tsx +0 -218
- package/src/cie/error.ts +0 -58
- package/src/cie/index.ts +0 -4
- package/src/cie/manager.ts +0 -183
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"04-complete-user-authorization.d.ts","sourceRoot":"","sources":["../../../../src/credential/issuance/04-complete-user-authorization.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,
|
1
|
+
{"version":3,"file":"04-complete-user-authorization.d.ts","sourceRoot":"","sources":["../../../../src/credential/issuance/04-complete-user-authorization.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,mBAAmB,EACzB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAoB,KAAK,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAG5E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAIL,KAAK,aAAa,EACnB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAMtD;;GAEG;AACH,MAAM,MAAM,sCAAsC,GAAG,CACnD,eAAe,EAAE,MAAM,KACpB,OAAO,CAAC,mBAAmB,CAAC,CAAC;AAElC,MAAM,MAAM,4CAA4C,GAAG,CACzD,aAAa,EAAE,GAAG,CAAC,mCAAmC,CAAC,EACvD,OAAO,EAAE;IACP,gBAAgB,EAAE,aAAa,CAAC;IAChC,gBAAgB,EAAE,aAAa,CAAC;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,yBAAyB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;CACjC,KACE,OAAO,CAAC,mBAAmB,CAAC,CAAC;AAElC,MAAM,MAAM,mCAAmC,GAAG,CAChD,gBAAgB,EAAE,GAAG,CAAC,sBAAsB,CAAC,CAAC,kBAAkB,CAAC,EACjE,QAAQ,EAAE,GAAG,CAAC,sBAAsB,CAAC,CAAC,UAAU,CAAC,EACjD,UAAU,EAAE,GAAG,CAAC,mBAAmB,CAAC,CAAC,YAAY,CAAC,EAClD,QAAQ,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC,KAC5B,OAAO,CAAC,aAAa,CAAC,CAAC;AAE5B,MAAM,MAAM,qBAAqB,GAAG,CAClC,gBAAgB,EAAE,GAAG,CAAC,sBAAsB,CAAC,CAAC,kBAAkB,CAAC,EACjE,QAAQ,EAAE,GAAG,CAAC,sBAAsB,CAAC,CAAC,UAAU,CAAC,EACjD,UAAU,EAAE,GAAG,CAAC,mBAAmB,CAAC,CAAC,YAAY,CAAC,EAClD,OAAO,EAAE,MAAM,KACZ,OAAO,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC,CAAC;AAEH;;;;;;;;GAQG;AACH,eAAO,MAAM,qBAAqB,EAAE,qBAkBnC,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,sCAAsC,EAAE,sCAKlD,CAAC;AAEJ;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,mCAAmC,EAAE,mCAyB/C,CAAC;AAEJ;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,4CAA4C,EAAE,4CAuGxD,CAAC;AAEJ;;;;;;GAMG;AACH,eAAO,MAAM,0BAA0B,YAC5B,OAAO,KACf,mBAaF,CAAC"}
|
@@ -27,6 +27,7 @@ export type AuthorizeAccess = (issuerConf: Out<EvaluateIssuerTrust>["issuerConf"
|
|
27
27
|
* @param context.dPopCryptoContext The DPoP crypto context
|
28
28
|
* @param context.appFetch (optional) fetch api implementation. Default: built-in fetch
|
29
29
|
* @throws {ValidationFailed} if an error occurs while parsing the token response
|
30
|
+
* @throws {IssuerResponseError} with a specific code for more context
|
30
31
|
* @return The token response containing the access token along with the token request signed with DPoP which has to be used in the {@link obtainCredential} step.
|
31
32
|
*/
|
32
33
|
export declare const authorizeAccess: AuthorizeAccess;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"05-authorize-access.d.ts","sourceRoot":"","sources":["../../../../src/credential/issuance/05-authorize-access.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,KAAK,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAK5E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAEjE,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAExC,OAAO,KAAK,EAAE,sCAAsC,EAAE,MAAM,kCAAkC,CAAC;AAE/F,MAAM,MAAM,eAAe,GAAG,CAC5B,UAAU,EAAE,GAAG,CAAC,mBAAmB,CAAC,CAAC,YAAY,CAAC,EAClD,IAAI,EAAE,GAAG,CAAC,sCAAsC,CAAC,CAAC,MAAM,CAAC,EACzD,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,GAAG,CAAC,sBAAsB,CAAC,CAAC,UAAU,CAAC,EACjD,YAAY,EAAE,GAAG,CAAC,sBAAsB,CAAC,CAAC,cAAc,CAAC,EACzD,OAAO,EAAE;IACP,yBAAyB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;IAChC,gBAAgB,EAAE,aAAa,CAAC;IAChC,iBAAiB,EAAE,aAAa,CAAC;CAClC,KACE,OAAO,CAAC;IAAE,WAAW,EAAE,aAAa,CAAA;CAAE,CAAC,CAAC;AAE7C
|
1
|
+
{"version":3,"file":"05-authorize-access.d.ts","sourceRoot":"","sources":["../../../../src/credential/issuance/05-authorize-access.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,KAAK,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAK5E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAEjE,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAExC,OAAO,KAAK,EAAE,sCAAsC,EAAE,MAAM,kCAAkC,CAAC;AAE/F,MAAM,MAAM,eAAe,GAAG,CAC5B,UAAU,EAAE,GAAG,CAAC,mBAAmB,CAAC,CAAC,YAAY,CAAC,EAClD,IAAI,EAAE,GAAG,CAAC,sCAAsC,CAAC,CAAC,MAAM,CAAC,EACzD,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,GAAG,CAAC,sBAAsB,CAAC,CAAC,UAAU,CAAC,EACjD,YAAY,EAAE,GAAG,CAAC,sBAAsB,CAAC,CAAC,cAAc,CAAC,EACzD,OAAO,EAAE;IACP,yBAAyB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;IAChC,gBAAgB,EAAE,aAAa,CAAC;IAChC,iBAAiB,EAAE,aAAa,CAAC;CAClC,KACE,OAAO,CAAC;IAAE,WAAW,EAAE,aAAa,CAAA;CAAE,CAAC,CAAC;AAE7C;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,eAAe,EAAE,eAyE7B,CAAC"}
|
@@ -16,13 +16,4 @@ export declare class AuthorizationIdpError extends IoWalletError {
|
|
16
16
|
errorDescription?: string;
|
17
17
|
constructor(error: string, errorDescription?: string);
|
18
18
|
}
|
19
|
-
/**
|
20
|
-
* Error subclass thrown when an operation has been aborted.
|
21
|
-
*/
|
22
|
-
export declare class OperationAbortedError extends IoWalletError {
|
23
|
-
code: string;
|
24
|
-
/** The aborted operation */
|
25
|
-
operation: string;
|
26
|
-
constructor(operation: string);
|
27
|
-
}
|
28
19
|
//# sourceMappingURL=errors.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../../src/credential/issuance/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAkB,MAAM,oBAAoB,CAAC;AAEnE;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,aAAa;IACnD,IAAI,SAAuC;gBAE/B,OAAO,CAAC,EAAE,MAAM;CAG7B;AAED;;;GAGG;AACH,qBAAa,qBAAsB,SAAQ,aAAa;IACtD,IAAI,SAA0D;IAE9D,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB,CAAC,EAAE,MAAM,CAAC;gBAEd,KAAK,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,MAAM;CAKrD
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../../src/credential/issuance/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAkB,MAAM,oBAAoB,CAAC;AAEnE;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,aAAa;IACnD,IAAI,SAAuC;gBAE/B,OAAO,CAAC,EAAE,MAAM;CAG7B;AAED;;;GAGG;AACH,qBAAa,qBAAsB,SAAQ,aAAa;IACtD,IAAI,SAA0D;IAE9D,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB,CAAC,EAAE,MAAM,CAAC;gBAEd,KAAK,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,MAAM;CAKrD"}
|
@@ -1,11 +1,11 @@
|
|
1
1
|
import { type StartFlow } from "./01-start-flow";
|
2
2
|
import { evaluateIssuerTrust, type EvaluateIssuerTrust } from "./02-evaluate-issuer-trust";
|
3
3
|
import { startUserAuthorization, type StartUserAuthorization } from "./03-start-user-authorization";
|
4
|
-
import { completeUserAuthorizationWithQueryMode, completeUserAuthorizationWithFormPostJwtMode, parseAuthorizationResponse, type CompleteUserAuthorizationWithQueryMode, type CompleteUserAuthorizationWithFormPostJwtMode, type GetRequestedCredentialToBePresented, getRequestedCredentialToBePresented } from "./04-complete-user-authorization";
|
4
|
+
import { completeUserAuthorizationWithQueryMode, completeUserAuthorizationWithFormPostJwtMode, parseAuthorizationResponse, buildAuthorizationUrl, type CompleteUserAuthorizationWithQueryMode, type CompleteUserAuthorizationWithFormPostJwtMode, type GetRequestedCredentialToBePresented, type BuildAuthorizationUrl, getRequestedCredentialToBePresented } 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
7
|
import { verifyAndParseCredential, type VerifyAndParseCredential } from "./07-verify-and-parse-credential";
|
8
8
|
import * as Errors from "./errors";
|
9
|
-
export { evaluateIssuerTrust, startUserAuthorization, completeUserAuthorizationWithQueryMode, getRequestedCredentialToBePresented, completeUserAuthorizationWithFormPostJwtMode, authorizeAccess, obtainCredential, verifyAndParseCredential, parseAuthorizationResponse, Errors, };
|
10
|
-
export type { StartFlow, EvaluateIssuerTrust, StartUserAuthorization, CompleteUserAuthorizationWithQueryMode, GetRequestedCredentialToBePresented, CompleteUserAuthorizationWithFormPostJwtMode, AuthorizeAccess, ObtainCredential, VerifyAndParseCredential, };
|
9
|
+
export { evaluateIssuerTrust, startUserAuthorization, buildAuthorizationUrl, completeUserAuthorizationWithQueryMode, getRequestedCredentialToBePresented, completeUserAuthorizationWithFormPostJwtMode, authorizeAccess, obtainCredential, verifyAndParseCredential, parseAuthorizationResponse, Errors, };
|
10
|
+
export type { StartFlow, EvaluateIssuerTrust, StartUserAuthorization, BuildAuthorizationUrl, CompleteUserAuthorizationWithQueryMode, GetRequestedCredentialToBePresented, CompleteUserAuthorizationWithFormPostJwtMode, AuthorizeAccess, ObtainCredential, VerifyAndParseCredential, };
|
11
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,EACL,sCAAsC,EACtC,4CAA4C,EAC5C,0BAA0B,EAC1B,KAAK,sCAAsC,EAC3C,KAAK,4CAA4C,EACjD,KAAK,mCAAmC,EACxC,mCAAmC,EACpC,MAAM,kCAAkC,CAAC;AAC1C,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,MAAM,MAAM,UAAU,CAAC;AAEnC,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,sCAAsC,EACtC,mCAAmC,EACnC,4CAA4C,EAC5C,eAAe,EACf,gBAAgB,EAChB,wBAAwB,EACxB,0BAA0B,EAC1B,MAAM,GACP,CAAC;AACF,YAAY,EACV,SAAS,EACT,mBAAmB,EACnB,sBAAsB,EACtB,sCAAsC,EACtC,mCAAmC,EACnC,4CAA4C,EAC5C,eAAe,EACf,gBAAgB,EAChB,wBAAwB,GACzB,CAAC"}
|
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,EACL,sCAAsC,EACtC,4CAA4C,EAC5C,0BAA0B,EAC1B,qBAAqB,EACrB,KAAK,sCAAsC,EAC3C,KAAK,4CAA4C,EACjD,KAAK,mCAAmC,EACxC,KAAK,qBAAqB,EAC1B,mCAAmC,EACpC,MAAM,kCAAkC,CAAC;AAC1C,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,MAAM,MAAM,UAAU,CAAC;AAEnC,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,qBAAqB,EACrB,sCAAsC,EACtC,mCAAmC,EACnC,4CAA4C,EAC5C,eAAe,EACf,gBAAgB,EAChB,wBAAwB,EACxB,0BAA0B,EAC1B,MAAM,GACP,CAAC;AACF,YAAY,EACV,SAAS,EACT,mBAAmB,EACnB,sBAAsB,EACtB,qBAAqB,EACrB,sCAAsC,EACtC,mCAAmC,EACnC,4CAA4C,EAC5C,eAAe,EACf,gBAAgB,EAChB,wBAAwB,GACzB,CAAC"}
|
@@ -12,8 +12,7 @@ export type StatusAttestation = (issuerConf: Out<EvaluateIssuerTrust>["issuerCon
|
|
12
12
|
* @param credential - The credential to be verified
|
13
13
|
* @param credentialCryptoContext - The credential's crypto context
|
14
14
|
* @param context.appFetch (optional) fetch api implementation. Default: built-in fetch
|
15
|
-
* @throws {
|
16
|
-
* @throws {@link StatusAttestationError} if an error occurs during the status attestation
|
15
|
+
* @throws {IssuerResponseError} with a specific code for more context
|
17
16
|
* @returns The credential status attestation
|
18
17
|
*/
|
19
18
|
export declare const statusAttestation: StatusAttestation;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"02-status-attestation.d.ts","sourceRoot":"","sources":["../../../../src/credential/status/02-status-attestation.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,GAAG,EACT,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACzE,OAAO,EAAE,KAAK,aAAa,EAAW,MAAM,6BAA6B,CAAC;AAE1E,OAAO,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAC;AAQpD,MAAM,MAAM,iBAAiB,GAAG,CAC9B,UAAU,EAAE,GAAG,CAAC,mBAAmB,CAAC,CAAC,YAAY,CAAC,EAClD,UAAU,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC,YAAY,CAAC,EAC/C,uBAAuB,EAAE,aAAa,EACtC,QAAQ,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC,KAC5B,OAAO,CAAC;IACX,iBAAiB,EAAE,yBAAyB,CAAC,oBAAoB,CAAC,CAAC;CACpE,CAAC,CAAC;AAEH
|
1
|
+
{"version":3,"file":"02-status-attestation.d.ts","sourceRoot":"","sources":["../../../../src/credential/status/02-status-attestation.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,GAAG,EACT,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACzE,OAAO,EAAE,KAAK,aAAa,EAAW,MAAM,6BAA6B,CAAC;AAE1E,OAAO,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAC;AAQpD,MAAM,MAAM,iBAAiB,GAAG,CAC9B,UAAU,EAAE,GAAG,CAAC,mBAAmB,CAAC,CAAC,YAAY,CAAC,EAClD,UAAU,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC,YAAY,CAAC,EAC/C,uBAAuB,EAAE,aAAa,EACtC,QAAQ,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC,KAC5B,OAAO,CAAC;IACX,iBAAiB,EAAE,yBAAyB,CAAC,oBAAoB,CAAC,CAAC;CACpE,CAAC,CAAC;AAEH;;;;;;;;;GASG;AACH,eAAO,MAAM,iBAAiB,EAAE,iBA2C/B,CAAC"}
|
@@ -8,10 +8,9 @@ import * as Errors from "./utils/errors";
|
|
8
8
|
import * as WalletInstanceAttestation from "./wallet-instance-attestation";
|
9
9
|
import * as Trust from "./trust";
|
10
10
|
import * as WalletInstance from "./wallet-instance";
|
11
|
-
import * as Cie from "./cie";
|
12
11
|
import { AuthorizationDetail, AuthorizationDetails } from "./utils/par";
|
13
12
|
import { createCryptoContextFor } from "./utils/crypto";
|
14
13
|
import type { IntegrityContext } from "./utils/integrity";
|
15
|
-
export { SdJwt, PID, Credential, WalletInstanceAttestation, WalletInstance, Errors, Trust, createCryptoContextFor, AuthorizationDetail, AuthorizationDetails, fixBase64EncodingOnKey,
|
14
|
+
export { SdJwt, PID, Credential, WalletInstanceAttestation, WalletInstance, Errors, Trust, createCryptoContextFor, AuthorizationDetail, AuthorizationDetails, fixBase64EncodingOnKey, };
|
16
15
|
export type { IntegrityContext, AuthorizationContext };
|
17
16
|
//# sourceMappingURL=index.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAGrD,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,KAAK,cAAc,MAAM,mBAAmB,CAAC;AACpD,OAAO,
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAGrD,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,KAAK,cAAc,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAE1D,OAAO,EACL,KAAK,EACL,GAAG,EACH,UAAU,EACV,yBAAyB,EACzB,cAAc,EACd,MAAM,EACN,KAAK,EACL,sBAAsB,EACtB,mBAAmB,EACnB,oBAAoB,EACpB,sBAAsB,GACvB,CAAC;AAEF,YAAY,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,CAAC"}
|
@@ -7,6 +7,10 @@ import { UnexpectedStatusCodeError } from "./errors";
|
|
7
7
|
* @returns The given response object
|
8
8
|
*/
|
9
9
|
export declare const hasStatusOrThrow: (status: number, customError?: typeof UnexpectedStatusCodeError) => (res: Response) => Promise<Response>;
|
10
|
+
/**
|
11
|
+
* Utility function to parse a raw HTTP response as JSON if supported, otherwise as text.
|
12
|
+
*/
|
13
|
+
export declare const parseRawHttpResponse: <T extends Record<string, unknown>>(response: Response) => Promise<string> | Promise<T>;
|
10
14
|
export type Out<FN> = FN extends (...args: any[]) => Promise<any> ? Awaited<ReturnType<FN>> : FN extends (...args: any[]) => any ? ReturnType<FN> : never;
|
11
15
|
/**
|
12
16
|
* TODO [SIW-1310]: replace this function with a cryptographically secure one.
|
@@ -14,18 +18,6 @@ export type Out<FN> = FN extends (...args: any[]) => Promise<any> ? Awaited<Retu
|
|
14
18
|
* @returns A random alphanumeric string of the given size
|
15
19
|
*/
|
16
20
|
export declare const generateRandomAlphaNumericString: (size: number) => string;
|
17
|
-
/**
|
18
|
-
* Repeatedly checks a condition function until it returns true,
|
19
|
-
* then resolves the returned promise. If the condition function does not return true
|
20
|
-
* within the specified timeout, the promise is rejected.
|
21
|
-
*
|
22
|
-
* @param conditionFunction - A function that returns a boolean value.
|
23
|
-
* The promise resolves when this function returns true.
|
24
|
-
* @param timeout - An optional timeout in seconds. The promise is rejected if the
|
25
|
-
* condition function does not return true within this time.
|
26
|
-
* @returns A promise that resolves once the conditionFunction returns true or rejects if timed out.
|
27
|
-
*/
|
28
|
-
export declare const until: (conditionFunction: () => boolean, timeoutSeconds?: number) => Promise<void>;
|
29
21
|
/**
|
30
22
|
* Get the hash of a credential without discloures.
|
31
23
|
* A credential is a string like `header.body.sign~sd1~sd2....` where `~` is the separator between the credential and the discloures.
|
@@ -33,17 +25,5 @@ export declare const until: (conditionFunction: () => boolean, timeoutSeconds?:
|
|
33
25
|
* @returns The hash of the credential without discloures
|
34
26
|
*/
|
35
27
|
export declare const getCredentialHashWithouDiscloures: (credential: string) => Promise<string>;
|
36
|
-
|
37
|
-
* Creates a promise that waits until the provided signal is aborted.
|
38
|
-
* @returns {Object} An object with `listen` and `remove` methods to handle subscribing and unsubscribing.
|
39
|
-
*/
|
40
|
-
export declare const createAbortPromiseFromSignal: (signal: AbortSignal) => {
|
41
|
-
listen: () => Promise<"OPERATION_ABORTED">;
|
42
|
-
remove: () => void;
|
43
|
-
};
|
44
|
-
export declare const isDefined: <T>(x: "" | T | null | undefined) => x is T;
|
45
|
-
/**
|
46
|
-
* Utility function to parse a raw HTTP response as JSON if supported, otherwise as text.
|
47
|
-
*/
|
48
|
-
export declare const parseRawHttpResponse: <T extends Record<string, unknown>>(response: Response) => Promise<string> | Promise<T>;
|
28
|
+
export declare const safeJsonParse: <T>(text: string, withDefault?: T | undefined) => T | null;
|
49
29
|
//# sourceMappingURL=misc.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"misc.d.ts","sourceRoot":"","sources":["../../../src/utils/misc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,yBAAyB,EAAE,MAAM,UAAU,CAAC;AAGpE;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,WAClB,MAAM,gBAAgB,gCAAgC,WACnD,QAAQ,KAAG,QAAQ,QAAQ,CAUtC,CAAC;
|
1
|
+
{"version":3,"file":"misc.d.ts","sourceRoot":"","sources":["../../../src/utils/misc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,yBAAyB,EAAE,MAAM,UAAU,CAAC;AAGpE;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,WAClB,MAAM,gBAAgB,gCAAgC,WACnD,QAAQ,KAAG,QAAQ,QAAQ,CAUtC,CAAC;AAEJ;;GAEG;AACH,eAAO,MAAM,oBAAoB,gDACrB,QAAQ,iCAIC,CAAC;AAItB,MAAM,MAAM,GAAG,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,GAAG,CAAC,GAC7D,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,GACvB,EAAE,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,GAClC,UAAU,CAAC,EAAE,CAAC,GACd,KAAK,CAAC;AAEV;;;;GAIG;AACH,eAAO,MAAM,gCAAgC,SAAU,MAAM,WAGjD,CAAC;AAEb;;;;;GAKG;AACH,eAAO,MAAM,iCAAiC,eAChC,MAAM,KACjB,QAAQ,MAAM,CAMhB,CAAC;AAEF,eAAO,MAAM,aAAa,YAAa,MAAM,0CAM5C,CAAC"}
|
@@ -1,3 +1,4 @@
|
|
1
|
+
/// <reference types="react-native" />
|
1
2
|
import { type CryptoContext } from "@pagopa/io-react-native-jwt";
|
2
3
|
import type { IntegrityContext } from "..";
|
3
4
|
/**
|
@@ -17,8 +18,7 @@ export declare function getAttestationRequest(challenge: string, wiaCryptoContex
|
|
17
18
|
* @param params.appFetch (optional) Http client
|
18
19
|
* @param walletProviderBaseUrl Base url for the Wallet Provider
|
19
20
|
* @returns The retrieved Wallet Instance Attestation token
|
20
|
-
* @throws {
|
21
|
-
* @throws {WalletInstanceNotFoundError} The Wallet Instance does not exist
|
21
|
+
* @throws {WalletProviderResponseError} with a specific code for more context
|
22
22
|
*/
|
23
23
|
export declare const getAttestation: ({ wiaCryptoContext, integrityContext, walletProviderBaseUrl, appFetch, }: {
|
24
24
|
wiaCryptoContext: CryptoContext;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"issuing.d.ts","sourceRoot":"","sources":["../../../src/wallet-instance-attestation/issuing.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,aAAa,EAGnB,MAAM,6BAA6B,CAAC;AAGrC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,IAAI,CAAC;AAQ3C;;;;;;;;GAQG;AACH,wBAAsB,qBAAqB,CACzC,SAAS,EAAE,MAAM,EACjB,gBAAgB,EAAE,aAAa,EAC/B,gBAAgB,EAAE,gBAAgB,EAClC,qBAAqB,EAAE,MAAM,GAC5B,OAAO,CAAC,MAAM,CAAC,CAoCjB;AAED
|
1
|
+
{"version":3,"file":"issuing.d.ts","sourceRoot":"","sources":["../../../src/wallet-instance-attestation/issuing.ts"],"names":[],"mappings":";AAAA,OAAO,EACL,KAAK,aAAa,EAGnB,MAAM,6BAA6B,CAAC;AAGrC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,IAAI,CAAC;AAQ3C;;;;;;;;GAQG;AACH,wBAAsB,qBAAqB,CACzC,SAAS,EAAE,MAAM,EACjB,gBAAgB,EAAE,aAAa,EAC/B,gBAAgB,EAAE,gBAAgB,EAClC,qBAAqB,EAAE,MAAM,GAC5B,OAAO,CAAC,MAAM,CAAC,CAoCjB;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,cAAc;sBAMP,aAAa;sBACb,gBAAgB;2BACX,MAAM;;;;;MAE3B,QAAQ,MAAM,CA6BjB,CAAC"}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@pagopa/io-react-native-wallet",
|
3
|
-
"version": "0.
|
3
|
+
"version": "0.27.0",
|
4
4
|
"description": "Provide data structures, helpers and API for IO Wallet",
|
5
5
|
"main": "lib/commonjs/index",
|
6
6
|
"module": "lib/module/index",
|
@@ -56,7 +56,6 @@
|
|
56
56
|
"@pagopa/eslint-config": "^3.0.0",
|
57
57
|
"@pagopa/io-react-native-crypto": "^0.2.3",
|
58
58
|
"@pagopa/io-react-native-jwt": "^1.3.0",
|
59
|
-
"@pagopa/react-native-cie": "^1.3.0",
|
60
59
|
"@react-native/eslint-config": "^0.72.2",
|
61
60
|
"@rushstack/eslint-patch": "^1.3.2",
|
62
61
|
"@types/jest": "^28.1.2",
|
@@ -70,7 +69,6 @@
|
|
70
69
|
"react": "18.2.0",
|
71
70
|
"react-native": "0.72.14",
|
72
71
|
"react-native-builder-bob": "^0.20.0",
|
73
|
-
"react-native-webview": "^13.10.5",
|
74
72
|
"typed-openapi": "^0.4.1",
|
75
73
|
"typescript": "^5.0.2"
|
76
74
|
},
|
@@ -80,10 +78,8 @@
|
|
80
78
|
"peerDependencies": {
|
81
79
|
"@pagopa/io-react-native-crypto": "*",
|
82
80
|
"@pagopa/io-react-native-jwt": "*",
|
83
|
-
"@pagopa/react-native-cie": "*",
|
84
81
|
"react": "*",
|
85
|
-
"react-native": "*"
|
86
|
-
"react-native-webview": "*"
|
82
|
+
"react-native": "*"
|
87
83
|
},
|
88
84
|
"engines": {
|
89
85
|
"node": ">= 16.0.0"
|
@@ -88,7 +88,7 @@ const selectResponseMode = (
|
|
88
88
|
* the application session identifier on the Wallet Instance side (state),
|
89
89
|
* the method (query or form_post.jwt) by which the Authorization Server
|
90
90
|
* should transmit the Authorization Response containing the authorization code issued upon the end user's authentication (response_mode)
|
91
|
-
* to the Wallet Instance's Token Endpoint to obtain the Access Token, and the
|
91
|
+
* to the Wallet Instance's Token Endpoint to obtain the Access Token, and the redirectUri of the Wallet Instance where the Authorization Response
|
92
92
|
* should be delivered. The redirect is achived by using a custom URL scheme that the Wallet Instance is registered to handle.
|
93
93
|
* @param issuerConf The issuer configuration
|
94
94
|
* @param credentialType The type of the credential to be requested returned by {@link selectCredentialDefinition}
|
@@ -1,21 +1,13 @@
|
|
1
1
|
import {
|
2
2
|
AuthorizationErrorShape,
|
3
3
|
AuthorizationResultShape,
|
4
|
-
type AuthorizationContext,
|
5
4
|
type AuthorizationResult,
|
6
5
|
} from "../../utils/auth";
|
7
|
-
import {
|
8
|
-
createAbortPromiseFromSignal,
|
9
|
-
hasStatusOrThrow,
|
10
|
-
isDefined,
|
11
|
-
until,
|
12
|
-
type Out,
|
13
|
-
} from "../../utils/misc";
|
6
|
+
import { hasStatusOrThrow, type Out } from "../../utils/misc";
|
14
7
|
import type { StartUserAuthorization } from "./03-start-user-authorization";
|
15
8
|
import parseUrl from "parse-url";
|
16
9
|
import { IssuerResponseError, ValidationFailed } from "../../utils/errors";
|
17
10
|
import type { EvaluateIssuerTrust } from "./02-evaluate-issuer-trust";
|
18
|
-
import { Linking } from "react-native";
|
19
11
|
import {
|
20
12
|
decode,
|
21
13
|
encodeBase64,
|
@@ -26,23 +18,13 @@ import { RequestObject } from "../presentation/types";
|
|
26
18
|
import uuid from "react-native-uuid";
|
27
19
|
import { ResponseUriResultShape } from "./types";
|
28
20
|
import { getJwtFromFormPost } from "../../utils/decoder";
|
29
|
-
import {
|
30
|
-
AuthorizationError,
|
31
|
-
AuthorizationIdpError,
|
32
|
-
OperationAbortedError,
|
33
|
-
} from "./errors";
|
21
|
+
import { AuthorizationError, AuthorizationIdpError } from "./errors";
|
34
22
|
|
35
23
|
/**
|
36
24
|
* The interface of the phase to complete User authorization via strong identification when the response mode is "query" and the request credential is a PersonIdentificationData.
|
37
25
|
*/
|
38
26
|
export type CompleteUserAuthorizationWithQueryMode = (
|
39
|
-
|
40
|
-
clientId: Out<StartUserAuthorization>["clientId"],
|
41
|
-
issuerConf: Out<EvaluateIssuerTrust>["issuerConf"],
|
42
|
-
idpHint: string,
|
43
|
-
redirectUri: string,
|
44
|
-
authorizationContext?: AuthorizationContext,
|
45
|
-
signal?: AbortSignal
|
27
|
+
authRedirectUrl: string
|
46
28
|
) => Promise<AuthorizationResult>;
|
47
29
|
|
48
30
|
export type CompleteUserAuthorizationWithFormPostJwtMode = (
|
@@ -63,98 +45,55 @@ export type GetRequestedCredentialToBePresented = (
|
|
63
45
|
appFetch?: GlobalFetch["fetch"]
|
64
46
|
) => Promise<RequestObject>;
|
65
47
|
|
48
|
+
export type BuildAuthorizationUrl = (
|
49
|
+
issuerRequestUri: Out<StartUserAuthorization>["issuerRequestUri"],
|
50
|
+
clientId: Out<StartUserAuthorization>["clientId"],
|
51
|
+
issuerConf: Out<EvaluateIssuerTrust>["issuerConf"],
|
52
|
+
idpHint: string
|
53
|
+
) => Promise<{
|
54
|
+
authUrl: string;
|
55
|
+
}>;
|
56
|
+
|
66
57
|
/**
|
67
|
-
* WARNING: This function must be called after {@link startUserAuthorization}. The
|
68
|
-
*
|
69
|
-
* It is used to complete the user authorization by catching the redirectSchema from the authorization server which then contains the authorization response.
|
70
|
-
* This function utilizes the authorization context to open an in-app browser capable of catching the redirectSchema to perform a get request to the authorization endpoint.
|
71
|
-
* If the 302 redirect happens and the redirectSchema is caught, the function will return the authorization response after parsing it from the query string.
|
58
|
+
* WARNING: This function must be called after {@link startUserAuthorization}. The generated authUrl must be used to open a browser or webview capable of catching the redirectSchema to perform a get request to the authorization endpoint.
|
59
|
+
* Builds the authorization URL to which the end user should be redirected to continue the authentication flow.
|
72
60
|
* @param issuerRequestUri the URI of the issuer where the request is sent
|
73
61
|
* @param clientId Identifies the current client across all the requests of the issuing flow returned by {@link startUserAuthorization}
|
74
62
|
* @param issuerConf The issuer configuration returned by {@link evaluateIssuerTrust}
|
75
|
-
* @param
|
76
|
-
*
|
77
|
-
* @param idphint Unique identifier of the SPID IDP selected by the user
|
78
|
-
* @param redirectUri The url to reach to complete the user authorization which is the custom URL scheme that the Wallet Instance is registered to handle, usually a custom URL or deeplink
|
79
|
-
* @param signal An optional {@link AbortSignal} to abort the operation when using the default browser
|
80
|
-
* @throws {AuthorizationError} if an error occurs during the authorization process
|
81
|
-
* @throws {AuthorizationIdpError} if an error occurs during the authorization process and the error is related to the IDP
|
82
|
-
* @throws {OperationAbortedError} if the caller aborts the operation via the provided signal
|
83
|
-
* @returns the authorization response which contains code, state and iss
|
63
|
+
* @param idpHint Unique identifier of the IDP selected by the user
|
64
|
+
* @returns An object containing the authorization URL
|
84
65
|
*/
|
85
|
-
export const
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
signal
|
94
|
-
) => {
|
95
|
-
const authzRequestEndpoint =
|
96
|
-
issuerConf.oauth_authorization_server.authorization_endpoint;
|
97
|
-
const params = new URLSearchParams({
|
98
|
-
client_id: clientId,
|
99
|
-
request_uri: issuerRequestUri,
|
100
|
-
idphint: idpHint,
|
101
|
-
});
|
102
|
-
const authUrl = `${authzRequestEndpoint}?${params}`;
|
103
|
-
var authRedirectUrl: string | undefined;
|
104
|
-
|
105
|
-
if (authorizationContext) {
|
106
|
-
const redirectSchema = new URL(redirectUri).protocol.replace(":", "");
|
107
|
-
authRedirectUrl = await authorizationContext
|
108
|
-
.authorize(authUrl, redirectSchema)
|
109
|
-
.catch((e) => {
|
110
|
-
throw new AuthorizationError(e.message);
|
111
|
-
});
|
112
|
-
} else {
|
113
|
-
// handler for redirectUri
|
114
|
-
const urlEventListener = Linking.addEventListener("url", ({ url }) => {
|
115
|
-
if (url.includes(redirectUri)) {
|
116
|
-
authRedirectUrl = url;
|
117
|
-
}
|
118
|
-
});
|
119
|
-
|
120
|
-
const operationIsAborted = signal
|
121
|
-
? createAbortPromiseFromSignal(signal)
|
122
|
-
: undefined;
|
123
|
-
await Linking.openURL(authUrl);
|
66
|
+
export const buildAuthorizationUrl: BuildAuthorizationUrl = async (
|
67
|
+
issuerRequestUri,
|
68
|
+
clientId,
|
69
|
+
issuerConf,
|
70
|
+
idpHint
|
71
|
+
) => {
|
72
|
+
const authzRequestEndpoint =
|
73
|
+
issuerConf.oauth_authorization_server.authorization_endpoint;
|
124
74
|
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
() => authRedirectUrl !== undefined,
|
131
|
-
120
|
132
|
-
);
|
133
|
-
|
134
|
-
/**
|
135
|
-
* Simultaneously listen for the abort signal (when provided) and the redirect url.
|
136
|
-
* The first event that occurs will resolve the promise.
|
137
|
-
* This is useful to properly cleanup when the caller aborts this operation.
|
138
|
-
*/
|
139
|
-
const winner = await Promise.race(
|
140
|
-
[operationIsAborted?.listen(), unitAuthRedirectIsNotUndefined].filter(
|
141
|
-
isDefined
|
142
|
-
)
|
143
|
-
).finally(() => {
|
144
|
-
urlEventListener.remove();
|
145
|
-
operationIsAborted?.remove();
|
146
|
-
});
|
75
|
+
const params = new URLSearchParams({
|
76
|
+
client_id: clientId,
|
77
|
+
request_uri: issuerRequestUri,
|
78
|
+
idphint: idpHint,
|
79
|
+
});
|
147
80
|
|
148
|
-
|
149
|
-
throw new OperationAbortedError("DefaultQueryModeAuthorization");
|
150
|
-
}
|
81
|
+
const authUrl = `${authzRequestEndpoint}?${params}`;
|
151
82
|
|
152
|
-
|
153
|
-
|
154
|
-
}
|
155
|
-
}
|
83
|
+
return { authUrl };
|
84
|
+
};
|
156
85
|
|
86
|
+
/**
|
87
|
+
* WARNING: This function must be called after obtaining the authorization redirect URL from the webviews (SPID and CIE L3) or browser for CIEID.
|
88
|
+
* Complete User authorization via strong identification when the response mode is "query" and the request credential is a PersonIdentificationData.
|
89
|
+
* This function parses the authorization redirect URL to extract the authorization response.
|
90
|
+
* @param authRedirectUrl The URL to which the end user should be redirected to start the authentication flow
|
91
|
+
* @returns the authorization response which contains code, state and iss
|
92
|
+
*/
|
93
|
+
export const completeUserAuthorizationWithQueryMode: CompleteUserAuthorizationWithQueryMode =
|
94
|
+
async (authRedirectUrl) => {
|
157
95
|
const query = parseUrl(authRedirectUrl).query;
|
96
|
+
|
158
97
|
return parseAuthorizationResponse(query);
|
159
98
|
};
|
160
99
|
|
@@ -40,6 +40,7 @@ export type AuthorizeAccess = (
|
|
40
40
|
* @param context.dPopCryptoContext The DPoP crypto context
|
41
41
|
* @param context.appFetch (optional) fetch api implementation. Default: built-in fetch
|
42
42
|
* @throws {ValidationFailed} if an error occurs while parsing the token response
|
43
|
+
* @throws {IssuerResponseError} with a specific code for more context
|
43
44
|
* @return The token response containing the access token along with the token request signed with DPoP which has to be used in the {@link obtainCredential} step.
|
44
45
|
*/
|
45
46
|
export const authorizeAccess: AuthorizeAccess = async (
|
@@ -160,8 +160,7 @@ export const obtainCredential: ObtainCredential = async (
|
|
160
160
|
* Handle the credential error by mapping it to a custom exception.
|
161
161
|
* If the error is not an instance of {@link UnexpectedStatusCodeError}, it is thrown as is.
|
162
162
|
* @param e - The error to be handled
|
163
|
-
* @throws {
|
164
|
-
* @throws {@link CredentialInvalidStatusError} if the status code is 404 (meaning the credential is invalid)
|
163
|
+
* @throws {IssuerResponseError} with a specific code for more context
|
165
164
|
*/
|
166
165
|
const handleObtainCredentialError = (e: unknown) => {
|
167
166
|
if (!(e instanceof UnexpectedStatusCodeError)) {
|
@@ -27,18 +27,3 @@ export class AuthorizationIdpError extends IoWalletError {
|
|
27
27
|
this.errorDescription = errorDescription;
|
28
28
|
}
|
29
29
|
}
|
30
|
-
|
31
|
-
/**
|
32
|
-
* Error subclass thrown when an operation has been aborted.
|
33
|
-
*/
|
34
|
-
export class OperationAbortedError extends IoWalletError {
|
35
|
-
code = "ERR_IO_WALLET_OPERATION_ABORTED";
|
36
|
-
|
37
|
-
/** The aborted operation */
|
38
|
-
operation: string;
|
39
|
-
|
40
|
-
constructor(operation: string) {
|
41
|
-
super(serializeAttrs({ operation }));
|
42
|
-
this.operation = operation;
|
43
|
-
}
|
44
|
-
}
|
@@ -11,9 +11,11 @@ import {
|
|
11
11
|
completeUserAuthorizationWithQueryMode,
|
12
12
|
completeUserAuthorizationWithFormPostJwtMode,
|
13
13
|
parseAuthorizationResponse,
|
14
|
+
buildAuthorizationUrl,
|
14
15
|
type CompleteUserAuthorizationWithQueryMode,
|
15
16
|
type CompleteUserAuthorizationWithFormPostJwtMode,
|
16
17
|
type GetRequestedCredentialToBePresented,
|
18
|
+
type BuildAuthorizationUrl,
|
17
19
|
getRequestedCredentialToBePresented,
|
18
20
|
} from "./04-complete-user-authorization";
|
19
21
|
import { authorizeAccess, type AuthorizeAccess } from "./05-authorize-access";
|
@@ -30,6 +32,7 @@ import * as Errors from "./errors";
|
|
30
32
|
export {
|
31
33
|
evaluateIssuerTrust,
|
32
34
|
startUserAuthorization,
|
35
|
+
buildAuthorizationUrl,
|
33
36
|
completeUserAuthorizationWithQueryMode,
|
34
37
|
getRequestedCredentialToBePresented,
|
35
38
|
completeUserAuthorizationWithFormPostJwtMode,
|
@@ -43,6 +46,7 @@ export type {
|
|
43
46
|
StartFlow,
|
44
47
|
EvaluateIssuerTrust,
|
45
48
|
StartUserAuthorization,
|
49
|
+
BuildAuthorizationUrl,
|
46
50
|
CompleteUserAuthorizationWithQueryMode,
|
47
51
|
GetRequestedCredentialToBePresented,
|
48
52
|
CompleteUserAuthorizationWithFormPostJwtMode,
|
@@ -30,8 +30,7 @@ export type StatusAttestation = (
|
|
30
30
|
* @param credential - The credential to be verified
|
31
31
|
* @param credentialCryptoContext - The credential's crypto context
|
32
32
|
* @param context.appFetch (optional) fetch api implementation. Default: built-in fetch
|
33
|
-
* @throws {
|
34
|
-
* @throws {@link StatusAttestationError} if an error occurs during the status attestation
|
33
|
+
* @throws {IssuerResponseError} with a specific code for more context
|
35
34
|
* @returns The credential status attestation
|
36
35
|
*/
|
37
36
|
export const statusAttestation: StatusAttestation = async (
|
@@ -83,8 +82,7 @@ export const statusAttestation: StatusAttestation = async (
|
|
83
82
|
* Handle the status attestation error by mapping it to a custom exception.
|
84
83
|
* If the error is not an instance of {@link UnexpectedStatusCodeError}, it is thrown as is.
|
85
84
|
* @param e - The error to be handled
|
86
|
-
* @throws {
|
87
|
-
* @throws {@link CredentialInvalidStatusError} if the status code is 404 (meaning the credential is invalid)
|
85
|
+
* @throws {IssuerResponseError} with a specific code for more context
|
88
86
|
*/
|
89
87
|
const handleStatusAttestationError = (e: unknown) => {
|
90
88
|
if (!(e instanceof UnexpectedStatusCodeError)) {
|
package/src/index.ts
CHANGED
@@ -11,7 +11,6 @@ import * as Errors from "./utils/errors";
|
|
11
11
|
import * as WalletInstanceAttestation from "./wallet-instance-attestation";
|
12
12
|
import * as Trust from "./trust";
|
13
13
|
import * as WalletInstance from "./wallet-instance";
|
14
|
-
import * as Cie from "./cie";
|
15
14
|
import { AuthorizationDetail, AuthorizationDetails } from "./utils/par";
|
16
15
|
import { createCryptoContextFor } from "./utils/crypto";
|
17
16
|
import type { IntegrityContext } from "./utils/integrity";
|
@@ -28,7 +27,6 @@ export {
|
|
28
27
|
AuthorizationDetail,
|
29
28
|
AuthorizationDetails,
|
30
29
|
fixBase64EncodingOnKey,
|
31
|
-
Cie,
|
32
30
|
};
|
33
31
|
|
34
32
|
export type { IntegrityContext, AuthorizationContext };
|
package/src/utils/misc.ts
CHANGED
@@ -22,6 +22,16 @@ export const hasStatusOrThrow =
|
|
22
22
|
return res;
|
23
23
|
};
|
24
24
|
|
25
|
+
/**
|
26
|
+
* Utility function to parse a raw HTTP response as JSON if supported, otherwise as text.
|
27
|
+
*/
|
28
|
+
export const parseRawHttpResponse = <T extends Record<string, unknown>>(
|
29
|
+
response: Response
|
30
|
+
) =>
|
31
|
+
response.headers.get("content-type")?.includes("application/json")
|
32
|
+
? (response.json() as Promise<T>)
|
33
|
+
: response.text();
|
34
|
+
|
25
35
|
// extract a type from an async function output
|
26
36
|
// helpful to bind the input of a function to the output of another
|
27
37
|
export type Out<FN> = FN extends (...args: any[]) => Promise<any>
|
@@ -40,39 +50,6 @@ export const generateRandomAlphaNumericString = (size: number) =>
|
|
40
50
|
Math.floor(Math.random() * 36).toString(36)
|
41
51
|
).join("");
|
42
52
|
|
43
|
-
/**
|
44
|
-
* Repeatedly checks a condition function until it returns true,
|
45
|
-
* then resolves the returned promise. If the condition function does not return true
|
46
|
-
* within the specified timeout, the promise is rejected.
|
47
|
-
*
|
48
|
-
* @param conditionFunction - A function that returns a boolean value.
|
49
|
-
* The promise resolves when this function returns true.
|
50
|
-
* @param timeout - An optional timeout in seconds. The promise is rejected if the
|
51
|
-
* condition function does not return true within this time.
|
52
|
-
* @returns A promise that resolves once the conditionFunction returns true or rejects if timed out.
|
53
|
-
*/
|
54
|
-
export const until = (
|
55
|
-
conditionFunction: () => boolean,
|
56
|
-
timeoutSeconds?: number
|
57
|
-
): Promise<void> =>
|
58
|
-
new Promise<void>((resolve, reject) => {
|
59
|
-
const start = Date.now();
|
60
|
-
const poll = () => {
|
61
|
-
if (conditionFunction()) {
|
62
|
-
resolve();
|
63
|
-
} else if (
|
64
|
-
timeoutSeconds !== undefined &&
|
65
|
-
Date.now() - start >= timeoutSeconds * 1000
|
66
|
-
) {
|
67
|
-
reject(new Error("Timeout exceeded"));
|
68
|
-
} else {
|
69
|
-
setTimeout(poll, 400);
|
70
|
-
}
|
71
|
-
};
|
72
|
-
|
73
|
-
poll();
|
74
|
-
});
|
75
|
-
|
76
53
|
/**
|
77
54
|
* Get the hash of a credential without discloures.
|
78
55
|
* A credential is a string like `header.body.sign~sd1~sd2....` where `~` is the separator between the credential and the discloures.
|
@@ -89,34 +66,10 @@ export const getCredentialHashWithouDiscloures = async (
|
|
89
66
|
return sha256(credential.slice(0, tildeIndex));
|
90
67
|
};
|
91
68
|
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
return {
|
99
|
-
listen: () =>
|
100
|
-
new Promise<"OPERATION_ABORTED">((resolve) => {
|
101
|
-
if (signal.aborted) {
|
102
|
-
return resolve("OPERATION_ABORTED");
|
103
|
-
}
|
104
|
-
listener = () => resolve("OPERATION_ABORTED");
|
105
|
-
signal.addEventListener("abort", listener);
|
106
|
-
}),
|
107
|
-
remove: () => signal.removeEventListener("abort", listener),
|
108
|
-
};
|
69
|
+
export const safeJsonParse = <T>(text: string, withDefault?: T): T | null => {
|
70
|
+
try {
|
71
|
+
return JSON.parse(text);
|
72
|
+
} catch (_) {
|
73
|
+
return withDefault ?? null;
|
74
|
+
}
|
109
75
|
};
|
110
|
-
|
111
|
-
export const isDefined = <T>(x: T | undefined | null | ""): x is T =>
|
112
|
-
Boolean(x);
|
113
|
-
|
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();
|