@pagopa/io-react-native-wallet 0.3.0 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- package/README.md +57 -24
- package/lib/commonjs/index.js +13 -0
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/rp/__test__/index.test.js +8 -1
- package/lib/commonjs/rp/__test__/index.test.js.map +1 -1
- package/lib/commonjs/rp/index.js +5 -14
- package/lib/commonjs/rp/index.js.map +1 -1
- package/lib/commonjs/rp/types.js +7 -27
- package/lib/commonjs/rp/types.js.map +1 -1
- package/lib/commonjs/trust/chain.js +94 -0
- package/lib/commonjs/trust/chain.js.map +1 -0
- package/lib/commonjs/trust/index.js +44 -0
- package/lib/commonjs/trust/index.js.map +1 -0
- package/lib/commonjs/trust/types.js +64 -0
- package/lib/commonjs/trust/types.js.map +1 -0
- package/lib/commonjs/wallet-instance-attestation/issuing.js +4 -4
- package/lib/commonjs/wallet-instance-attestation/issuing.js.map +1 -1
- package/lib/commonjs/wallet-instance-attestation/types.js +6 -9
- package/lib/commonjs/wallet-instance-attestation/types.js.map +1 -1
- package/lib/module/index.js +2 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/rp/__test__/index.test.js +8 -1
- package/lib/module/rp/__test__/index.test.js.map +1 -1
- package/lib/module/rp/index.js +5 -14
- package/lib/module/rp/index.js.map +1 -1
- package/lib/module/rp/types.js +7 -27
- package/lib/module/rp/types.js.map +1 -1
- package/lib/module/trust/chain.js +86 -0
- package/lib/module/trust/chain.js.map +1 -0
- package/lib/module/trust/index.js +34 -0
- package/lib/module/trust/index.js.map +1 -0
- package/lib/module/trust/types.js +52 -0
- package/lib/module/trust/types.js.map +1 -0
- package/lib/module/wallet-instance-attestation/issuing.js +4 -4
- package/lib/module/wallet-instance-attestation/issuing.js.map +1 -1
- package/lib/module/wallet-instance-attestation/types.js +6 -9
- package/lib/module/wallet-instance-attestation/types.js.map +1 -1
- package/lib/typescript/index.d.ts +2 -1
- package/lib/typescript/index.d.ts.map +1 -1
- package/lib/typescript/rp/index.d.ts.map +1 -1
- package/lib/typescript/rp/types.d.ts +232 -145
- package/lib/typescript/rp/types.d.ts.map +1 -1
- package/lib/typescript/trust/chain.d.ts +17 -0
- package/lib/typescript/trust/chain.d.ts.map +1 -0
- package/lib/typescript/trust/index.d.ts +16 -0
- package/lib/typescript/trust/index.d.ts.map +1 -0
- package/lib/typescript/trust/types.d.ts +1041 -0
- package/lib/typescript/trust/types.d.ts.map +1 -0
- package/lib/typescript/wallet-instance-attestation/types.d.ts +30 -50
- package/lib/typescript/wallet-instance-attestation/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/index.ts +3 -0
- package/src/rp/__test__/index.test.ts +8 -1
- package/src/rp/index.ts +5 -20
- package/src/rp/types.ts +17 -34
- package/src/trust/chain.ts +109 -0
- package/src/trust/index.ts +43 -0
- package/src/trust/types.ts +56 -0
- package/src/wallet-instance-attestation/issuing.ts +4 -4
- package/src/wallet-instance-attestation/types.ts +6 -9
package/README.md
CHANGED
@@ -27,7 +27,6 @@ PID.SdJwt.decode("<token>");
|
|
27
27
|
|
28
28
|
//Decode and verification
|
29
29
|
PID.SdJwt.verify("<token>");
|
30
|
-
|
31
30
|
```
|
32
31
|
|
33
32
|
### Wallet Instance Attestation
|
@@ -37,32 +36,26 @@ PID.SdJwt.verify("<token>");
|
|
37
36
|
```ts
|
38
37
|
import { WalletInstanceAttestation } from "@pagopa/io-react-native-wallet";
|
39
38
|
|
40
|
-
const issuing = new WalletInstanceAttestation.Issuing(
|
41
|
-
yourWalletProviderUrl
|
42
|
-
);
|
39
|
+
const issuing = new WalletInstanceAttestation.Issuing(yourWalletProviderUrl);
|
43
40
|
|
44
41
|
// Generate keys
|
45
42
|
const publicKey = await yourCustomPublicKey("TEE_KEY_TAG");
|
46
43
|
|
47
44
|
const walletInstanceAttestationRequest =
|
48
|
-
await issuing.getAttestationRequestToSign(
|
49
|
-
publicKey
|
50
|
-
);
|
45
|
+
await issuing.getAttestationRequestToSign(publicKey);
|
51
46
|
|
52
47
|
//Sign with TEE
|
53
48
|
const signature = await yourCustomSignatureFunction(
|
54
|
-
|
55
|
-
|
56
|
-
);
|
57
|
-
|
58
|
-
const walletInstanceAttestation =
|
59
|
-
await issuing.getAttestation(
|
60
|
-
walletInstanceAttestationRequest,
|
61
|
-
signature
|
49
|
+
walletInstanceAttestationRequest,
|
50
|
+
"TEE_KEY_TAG"
|
62
51
|
);
|
63
52
|
|
64
|
-
|
53
|
+
const walletInstanceAttestation = await issuing.getAttestation(
|
54
|
+
walletInstanceAttestationRequest,
|
55
|
+
signature
|
56
|
+
);
|
65
57
|
|
58
|
+
console.log(walletInstanceAttestation);
|
66
59
|
```
|
67
60
|
|
68
61
|
#### Encode and Decode
|
@@ -75,17 +68,57 @@ WalletInstanceAttestation.decode("<token>");
|
|
75
68
|
|
76
69
|
## Example
|
77
70
|
|
78
|
-
|
71
|
+
### NodeJS and Ruby
|
79
72
|
|
80
|
-
|
81
|
-
|
73
|
+
To run the example project you need to install the correct version of NodeJS and Ruby.
|
74
|
+
We recommend the use of a virtual environment of your choice. For ease of use, this guide adopts [nodenv](https://github.com/nodenv/nodenv) or [nvm](https://github.com/nvm-sh/nvm) for NodeJS and [rbenv](https://github.com/rbenv/rbenv) for Ruby.
|
75
|
+
[Yarn](https://yarnpkg.com/) is the package manager of choice.
|
76
|
+
|
77
|
+
The node version used in this project is stored in [example/.node-version](example/.node-version) and [example/.nvmrc],
|
78
|
+
while the version of Ruby is stored in [example/.ruby-version](.ruby-version).
|
79
|
+
|
80
|
+
### React Native
|
81
|
+
|
82
|
+
Follow the [official tutorial](https://reactnative.dev/docs/environment-setup?guide=native) for installing the `React Native CLI` for your operating system.
|
83
|
+
|
84
|
+
If you have a macOS system, you can follow both the tutorial for iOS and for Android. If you have a Linux or Windows system, you only need to install the development environment for Android.
|
85
|
+
|
86
|
+
### Build the app
|
87
|
+
|
88
|
+
In order to build the app,
|
89
|
+
As stated [previously](#nodejs-and-ruby), we also use `nodenv` and `rbenv` for managing the environment:
|
90
|
+
|
91
|
+
```bash
|
92
|
+
# Clone the repository
|
93
|
+
$ git clone https://github.com/pagopa/io-react-native-wallet
|
94
|
+
|
95
|
+
# CD into the repository
|
96
|
+
$ cd io-react-native-wallet
|
97
|
+
|
98
|
+
# Install library dependencies
|
99
|
+
$ yarn install
|
100
|
+
|
101
|
+
# CD into the example folder
|
102
|
+
$ cd example
|
103
|
+
|
104
|
+
# Install bundle
|
105
|
+
$ gem install bundle
|
106
|
+
|
107
|
+
# Install the required Gems from the Gemfile
|
108
|
+
# Run this only during the first setup and when Gems dependencies change
|
109
|
+
$ bundle install
|
82
110
|
|
83
|
-
|
111
|
+
# Install example dependencies
|
112
|
+
# Run this only during the first setup and when JS dependencies change
|
113
|
+
$ yarn install
|
84
114
|
|
85
|
-
#
|
86
|
-
|
115
|
+
# Install podfiles when targeting iOS (ignore this step for Android)
|
116
|
+
# Run this only during the first setup and when Pods dependencies change
|
117
|
+
$ cd ios && bundle exec pod install && cd ..
|
87
118
|
|
88
|
-
#
|
89
|
-
yarn
|
119
|
+
# Run the app on iOS
|
120
|
+
$ yarn ios
|
90
121
|
|
122
|
+
# Run the app on Android
|
123
|
+
$ yarn android
|
91
124
|
```
|
package/lib/commonjs/index.js
CHANGED
@@ -11,12 +11,24 @@ Object.defineProperty(exports, "RelyingPartySolution", {
|
|
11
11
|
}
|
12
12
|
});
|
13
13
|
exports.WalletInstanceAttestation = void 0;
|
14
|
+
Object.defineProperty(exports, "getEntityConfiguration", {
|
15
|
+
enumerable: true,
|
16
|
+
get: function () {
|
17
|
+
return _trust.getEntityConfiguration;
|
18
|
+
}
|
19
|
+
});
|
14
20
|
Object.defineProperty(exports, "getUnsignedDPop", {
|
15
21
|
enumerable: true,
|
16
22
|
get: function () {
|
17
23
|
return _dpop.getUnsignedDPop;
|
18
24
|
}
|
19
25
|
});
|
26
|
+
Object.defineProperty(exports, "verifyTrustChain", {
|
27
|
+
enumerable: true,
|
28
|
+
get: function () {
|
29
|
+
return _trust.verifyTrustChain;
|
30
|
+
}
|
31
|
+
});
|
20
32
|
require("react-native-url-polyfill/auto");
|
21
33
|
var PID = _interopRequireWildcard(require("./pid"));
|
22
34
|
exports.PID = PID;
|
@@ -27,6 +39,7 @@ exports.Errors = Errors;
|
|
27
39
|
var WalletInstanceAttestation = _interopRequireWildcard(require("./wallet-instance-attestation"));
|
28
40
|
exports.WalletInstanceAttestation = WalletInstanceAttestation;
|
29
41
|
var _dpop = require("./utils/dpop");
|
42
|
+
var _trust = require("./trust");
|
30
43
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
31
44
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
32
45
|
//# sourceMappingURL=index.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["require","PID","_interopRequireWildcard","exports","RP","Errors","WalletInstanceAttestation","_dpop","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"
|
1
|
+
{"version":3,"names":["require","PID","_interopRequireWildcard","exports","RP","Errors","WalletInstanceAttestation","_dpop","_trust","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEAA,OAAA;AAEA,IAAAC,GAAA,GAAAC,uBAAA,CAAAF,OAAA;AAA6BG,OAAA,CAAAF,GAAA,GAAAA,GAAA;AAC7B,IAAAG,EAAA,GAAAF,uBAAA,CAAAF,OAAA;AAA2BG,OAAA,CAAAC,EAAA,GAAAA,EAAA;AAC3B,IAAAC,MAAA,GAAAH,uBAAA,CAAAF,OAAA;AAAyCG,OAAA,CAAAE,MAAA,GAAAA,MAAA;AACzC,IAAAC,yBAAA,GAAAJ,uBAAA,CAAAF,OAAA;AAA2EG,OAAA,CAAAG,yBAAA,GAAAA,yBAAA;AAC3E,IAAAC,KAAA,GAAAP,OAAA;AAEA,IAAAQ,MAAA,GAAAR,OAAA;AAAmE,SAAAS,yBAAAC,WAAA,eAAAC,OAAA,kCAAAC,iBAAA,OAAAD,OAAA,QAAAE,gBAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,WAAA,WAAAA,WAAA,GAAAG,gBAAA,GAAAD,iBAAA,KAAAF,WAAA;AAAA,SAAAR,wBAAAY,GAAA,EAAAJ,WAAA,SAAAA,WAAA,IAAAI,GAAA,IAAAA,GAAA,CAAAC,UAAA,WAAAD,GAAA,QAAAA,GAAA,oBAAAA,GAAA,wBAAAA,GAAA,4BAAAE,OAAA,EAAAF,GAAA,UAAAG,KAAA,GAAAR,wBAAA,CAAAC,WAAA,OAAAO,KAAA,IAAAA,KAAA,CAAAC,GAAA,CAAAJ,GAAA,YAAAG,KAAA,CAAAE,GAAA,CAAAL,GAAA,SAAAM,MAAA,WAAAC,qBAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,GAAA,IAAAX,GAAA,QAAAW,GAAA,kBAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAd,GAAA,EAAAW,GAAA,SAAAI,IAAA,GAAAR,qBAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAV,GAAA,EAAAW,GAAA,cAAAI,IAAA,KAAAA,IAAA,CAAAV,GAAA,IAAAU,IAAA,CAAAC,GAAA,KAAAR,MAAA,CAAAC,cAAA,CAAAH,MAAA,EAAAK,GAAA,EAAAI,IAAA,YAAAT,MAAA,CAAAK,GAAA,IAAAX,GAAA,CAAAW,GAAA,SAAAL,MAAA,CAAAJ,OAAA,GAAAF,GAAA,MAAAG,KAAA,IAAAA,KAAA,CAAAa,GAAA,CAAAhB,GAAA,EAAAM,MAAA,YAAAA,MAAA"}
|
@@ -15,7 +15,7 @@ describe("decodeAuthRequestQR", () => {
|
|
15
15
|
});
|
16
16
|
});
|
17
17
|
describe("RpEntityConfiguration", () => {
|
18
|
-
it("should parse a valid
|
18
|
+
it("should parse a valid conf", async () => {
|
19
19
|
const pp = {
|
20
20
|
header: {
|
21
21
|
alg: "RS256",
|
@@ -36,6 +36,13 @@ describe("RpEntityConfiguration", () => {
|
|
36
36
|
}]
|
37
37
|
},
|
38
38
|
metadata: {
|
39
|
+
federation_entity: {
|
40
|
+
organization_name: "wallet-provider",
|
41
|
+
homepage_uri: "https://wallet-provider.example",
|
42
|
+
policy_uri: "https://wallet-provider.example",
|
43
|
+
logo_uri: "https://wallet-provider.example",
|
44
|
+
contacts: ["https://wallet-provider.example"]
|
45
|
+
},
|
39
46
|
wallet_relying_party: {
|
40
47
|
application_type: "web",
|
41
48
|
authorization_encrypted_response_alg: ["RSA-OAEP", "RSA-OAEP-256", "ECDH-ES", "ECDH-ES+A128KW", "ECDH-ES+A192KW", "ECDH-ES+A256KW"],
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["_","require","_errors","_types","describe","it","qrcode","result","RelyingPartySolution","decodeAuthRequestQR","expect","requestURI","toEqual","toThrowError","AuthRequestDecodeError","pp","header","alg","kid","typ","payload","exp","iat","iss","sub","jwks","keys","kty","e","n","metadata","wallet_relying_party","application_type","authorization_encrypted_response_alg","authorization_encrypted_response_enc","authorization_signed_response_alg","client_id","client_name","
|
1
|
+
{"version":3,"names":["_","require","_errors","_types","describe","it","qrcode","result","RelyingPartySolution","decodeAuthRequestQR","expect","requestURI","toEqual","toThrowError","AuthRequestDecodeError","pp","header","alg","kid","typ","payload","exp","iat","iss","sub","jwks","keys","kty","e","n","metadata","federation_entity","organization_name","homepage_uri","policy_uri","logo_uri","contacts","wallet_relying_party","application_type","authorization_encrypted_response_alg","authorization_encrypted_response_enc","authorization_signed_response_alg","client_id","client_name","default_acr_values","default_max_age","id_token_encrypted_response_alg","id_token_encrypted_response_enc","id_token_signed_response_alg","presentation_definitions","id","input_descriptors","format","constraints","fields","filter","const","type","path","intent_to_retain","limit_disclosure","jwt","mso_mdoc","redirect_uris","request_uris","require_auth_time","subject_type","vp_formats","jwt_vp_json","crv","d","use","x","y","p","q","authority_hints","RpEntityConfiguration","safeParse","success","error","toBe"],"sourceRoot":"../../../../src","sources":["rp/__test__/index.test.ts"],"mappings":"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"}
|
package/lib/commonjs/rp/index.js
CHANGED
@@ -9,6 +9,7 @@ var _ioReactNativeJwt = require("@pagopa/io-react-native-jwt");
|
|
9
9
|
var _types = require("./types");
|
10
10
|
var _reactNativeUuid = _interopRequireDefault(require("react-native-uuid"));
|
11
11
|
var _sdJwt = require("../sd-jwt");
|
12
|
+
var _trust = require("../trust");
|
12
13
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
13
14
|
class RelyingPartySolution {
|
14
15
|
constructor(relyingPartyBaseUrl, walletInstanceAttestation) {
|
@@ -213,7 +214,7 @@ class RelyingPartySolution {
|
|
213
214
|
body
|
214
215
|
});
|
215
216
|
if (response.status === 200) {
|
216
|
-
return await response.
|
217
|
+
return await response.json();
|
217
218
|
}
|
218
219
|
throw new _errors.IoWalletError(`Unable to send Authorization Response. Response: ${await response.text()} with code: ${response.status}`);
|
219
220
|
}
|
@@ -239,19 +240,9 @@ class RelyingPartySolution {
|
|
239
240
|
* Obtain the relying party entity configuration.
|
240
241
|
*/
|
241
242
|
async getEntityConfiguration() {
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
});
|
246
|
-
if (response.status === 200) {
|
247
|
-
const responseText = await response.text();
|
248
|
-
const responseJwt = await (0, _ioReactNativeJwt.decode)(responseText);
|
249
|
-
return _types.RpEntityConfiguration.parse({
|
250
|
-
header: responseJwt.protectedHeader,
|
251
|
-
payload: responseJwt.payload
|
252
|
-
});
|
253
|
-
}
|
254
|
-
throw new _errors.IoWalletError(`Unable to obtain RP Entity Configuration. Response code: ${response.status}`);
|
243
|
+
return (0, _trust.getEntityConfiguration)(this.relyingPartyBaseUrl, {
|
244
|
+
appFetch: this.appFetch
|
245
|
+
}).then(_types.RpEntityConfiguration.parse);
|
255
246
|
}
|
256
247
|
}
|
257
248
|
exports.RelyingPartySolution = RelyingPartySolution;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["_errors","require","_ioReactNativeJwt","_types","_reactNativeUuid","_interopRequireDefault","_sdJwt","obj","__esModule","default","RelyingPartySolution","constructor","relyingPartyBaseUrl","walletInstanceAttestation","appFetch","arguments","length","undefined","fetch","decodeAuthRequestQR","qrcode","decoded","decodeBase64","decodedUrl","URL","protocol","resource","hostname","requestURI","searchParams","get","clientId","result","QRCodePayload","safeParse","success","data","AuthRequestDecodeError","error","message","getUnsignedWalletInstanceDPoP","walletInstanceAttestationJwk","authRequestUrl","SignJWT","jti","uuid","v4","htm","htu","ath","sha256ToBase64","setProtectedHeader","alg","jwk","typ","setIssuedAt","setExpirationTime","toSign","getRequestObject","signedWalletInstanceDPoP","requestUri","entity","response","method","headers","Authorization","DPoP","status","responseJson","json","responseEncodedJwt","responseJwt","decodeJwt","pubKey","payload","metadata","wallet_relying_party","jwks","find","_ref","kid","protectedHeader","NoSuitableKeysFoundInEntityConfiguration","verify","requestObj","RequestObject","parse","header","IoWalletError","prepareVpToken","walletInstanceIdentifier","_ref2","signKeyId","vc","claims","token","vp","paths","disclose","vp_token","iss","nonce","setAudience","response_uri","vc_scope","scope","presentation_submission","definition_id","id","descriptor_map","map","p","path","format","sendAuthorizationResponse","chooseRSAPublicKeyToEncrypt","authzResponsePayload","JSON","stringify","state","encrypted","EncryptJwe","enc","encrypt","formBody","URLSearchParams","body","toString","text","usingRsa256","filter","use","kty","getEntityConfiguration","
|
1
|
+
{"version":3,"names":["_errors","require","_ioReactNativeJwt","_types","_reactNativeUuid","_interopRequireDefault","_sdJwt","_trust","obj","__esModule","default","RelyingPartySolution","constructor","relyingPartyBaseUrl","walletInstanceAttestation","appFetch","arguments","length","undefined","fetch","decodeAuthRequestQR","qrcode","decoded","decodeBase64","decodedUrl","URL","protocol","resource","hostname","requestURI","searchParams","get","clientId","result","QRCodePayload","safeParse","success","data","AuthRequestDecodeError","error","message","getUnsignedWalletInstanceDPoP","walletInstanceAttestationJwk","authRequestUrl","SignJWT","jti","uuid","v4","htm","htu","ath","sha256ToBase64","setProtectedHeader","alg","jwk","typ","setIssuedAt","setExpirationTime","toSign","getRequestObject","signedWalletInstanceDPoP","requestUri","entity","response","method","headers","Authorization","DPoP","status","responseJson","json","responseEncodedJwt","responseJwt","decodeJwt","pubKey","payload","metadata","wallet_relying_party","jwks","find","_ref","kid","protectedHeader","NoSuitableKeysFoundInEntityConfiguration","verify","requestObj","RequestObject","parse","header","IoWalletError","prepareVpToken","walletInstanceIdentifier","_ref2","signKeyId","vc","claims","token","vp","paths","disclose","vp_token","iss","nonce","setAudience","response_uri","vc_scope","scope","presentation_submission","definition_id","id","descriptor_map","map","p","path","format","sendAuthorizationResponse","chooseRSAPublicKeyToEncrypt","authzResponsePayload","JSON","stringify","state","encrypted","EncryptJwe","enc","encrypt","formBody","URLSearchParams","body","toString","text","usingRsa256","filter","use","kty","getEntityConfiguration","then","RpEntityConfiguration","exports"],"sourceRoot":"../../../src","sources":["rp/index.ts"],"mappings":"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"}
|
package/lib/commonjs/rp/types.js
CHANGED
@@ -7,6 +7,7 @@ exports.RpEntityConfiguration = exports.RequestObject = exports.QRCodePayload =
|
|
7
7
|
var _jwk = require("../utils/jwk");
|
8
8
|
var _types = require("../sd-jwt/types");
|
9
9
|
var z = _interopRequireWildcard(require("zod"));
|
10
|
+
var _types2 = require("../trust/types");
|
10
11
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
11
12
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
12
13
|
const RequestObject = z.object({
|
@@ -32,22 +33,12 @@ const RequestObject = z.object({
|
|
32
33
|
})
|
33
34
|
});
|
34
35
|
|
35
|
-
|
36
|
+
/**
|
37
|
+
* EntityConfiguration plus the metadata specific for a Relying Party entity.
|
38
|
+
*/
|
36
39
|
exports.RequestObject = RequestObject;
|
37
|
-
const RpEntityConfiguration = z.object({
|
38
|
-
header: z.object({
|
39
|
-
typ: z.literal("entity-statement+jwt"),
|
40
|
-
alg: z.string(),
|
41
|
-
kid: z.string()
|
42
|
-
}),
|
40
|
+
const RpEntityConfiguration = _types2.EntityConfiguration.and(z.object({
|
43
41
|
payload: z.object({
|
44
|
-
exp: _types.UnixTime,
|
45
|
-
iat: _types.UnixTime,
|
46
|
-
iss: z.string(),
|
47
|
-
sub: z.string(),
|
48
|
-
jwks: z.object({
|
49
|
-
keys: z.array(_jwk.JWK)
|
50
|
-
}),
|
51
42
|
metadata: z.object({
|
52
43
|
wallet_relying_party: z.object({
|
53
44
|
application_type: z.string(),
|
@@ -56,20 +47,9 @@ const RpEntityConfiguration = z.object({
|
|
56
47
|
jwks: z.array(_jwk.JWK),
|
57
48
|
contacts: z.array(z.string())
|
58
49
|
})
|
59
|
-
|
60
|
-
// Actual RP implementation does not comply with the spec
|
61
|
-
/* federation_entity: z.object({
|
62
|
-
organization_name: z.string(),
|
63
|
-
homepage_uri: z.string(),
|
64
|
-
policy_uri: z.string(),
|
65
|
-
logo_uri: z.string(),
|
66
|
-
contacts: z.array(z.string()),
|
67
|
-
}), */
|
68
|
-
}),
|
69
|
-
|
70
|
-
authority_hints: z.array(z.string())
|
50
|
+
})
|
71
51
|
})
|
72
|
-
});
|
52
|
+
}));
|
73
53
|
exports.RpEntityConfiguration = RpEntityConfiguration;
|
74
54
|
const QRCodePayload = z.object({
|
75
55
|
protocol: z.string(),
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["_jwk","require","_types","z","_interopRequireWildcard","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","RequestObject","object","header","typ","literal","optional","alg","string","kid","trust_chain","array","payload","iss","iat","UnixTime","exp","state","nonce","response_uri","response_type","response_mode","client_id","client_id_scheme","scope","exports","RpEntityConfiguration","
|
1
|
+
{"version":3,"names":["_jwk","require","_types","z","_interopRequireWildcard","_types2","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","RequestObject","object","header","typ","literal","optional","alg","string","kid","trust_chain","array","payload","iss","iat","UnixTime","exp","state","nonce","response_uri","response_type","response_mode","client_id","client_id_scheme","scope","exports","RpEntityConfiguration","EntityConfiguration","and","metadata","wallet_relying_party","application_type","client_name","jwks","JWK","contacts","QRCodePayload","protocol","resource","clientId","requestURI"],"sourceRoot":"../../../src","sources":["rp/types.ts"],"mappings":"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"}
|
@@ -0,0 +1,94 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
exports.verifyTrustChain = verifyTrustChain;
|
7
|
+
var _ioReactNativeJwt = require("@pagopa/io-react-native-jwt");
|
8
|
+
var _types = require("./types");
|
9
|
+
var _errors = require("../utils/errors");
|
10
|
+
var z = _interopRequireWildcard(require("zod"));
|
11
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
12
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
13
|
+
// Verify a token signature
|
14
|
+
// The kid is extracted from the token header
|
15
|
+
const verify = async (token, kid, jwks) => {
|
16
|
+
const jwk = jwks.find(k => k.kid === kid);
|
17
|
+
if (!jwk) {
|
18
|
+
throw new Error(`Invalid kid: ${kid}, token: ${token}`);
|
19
|
+
}
|
20
|
+
const {
|
21
|
+
protectedHeader: header,
|
22
|
+
payload
|
23
|
+
} = await (0, _ioReactNativeJwt.verify)(token, jwk);
|
24
|
+
return {
|
25
|
+
header,
|
26
|
+
payload
|
27
|
+
};
|
28
|
+
};
|
29
|
+
const decode = token => {
|
30
|
+
const {
|
31
|
+
protectedHeader: header,
|
32
|
+
payload
|
33
|
+
} = (0, _ioReactNativeJwt.decode)(token);
|
34
|
+
return {
|
35
|
+
header,
|
36
|
+
payload
|
37
|
+
};
|
38
|
+
};
|
39
|
+
|
40
|
+
// The first element of the chain is supposed to be the Entity Configuration for the document issuer
|
41
|
+
const FirstElementShape = _types.EntityConfiguration;
|
42
|
+
// Each element but the first is supposed to be an Entity Statement
|
43
|
+
const MiddleElementShape = _types.EntityStatement;
|
44
|
+
// The last element of the chain can either be an Entity Statement
|
45
|
+
// or the Entity Configuration for the known Trust Anchor
|
46
|
+
const LastElementShape = z.union([_types.EntityStatement, _types.TrustAnchorEntityConfiguration]);
|
47
|
+
|
48
|
+
/**
|
49
|
+
* Validates a provided trust chain against a known trust
|
50
|
+
*
|
51
|
+
* @param trustAnchorEntity
|
52
|
+
* @param chain
|
53
|
+
* @returns The list of parsed token representing the chain
|
54
|
+
* @throws {IoWalletError} If the chain is not valid
|
55
|
+
*/
|
56
|
+
async function verifyTrustChain(trustAnchorEntity, chain) {
|
57
|
+
// If the chain is empty, fail
|
58
|
+
if (chain.length === 0) {
|
59
|
+
throw new _errors.IoWalletError("Cannot verify empty trust chain");
|
60
|
+
}
|
61
|
+
|
62
|
+
// Select the expected token shape
|
63
|
+
const selectTokenShape = elementIndex => elementIndex === 0 ? FirstElementShape : elementIndex === chain.length - 1 ? LastElementShape : MiddleElementShape;
|
64
|
+
|
65
|
+
// select the kid from the current index
|
66
|
+
const selectKid = currentIndex => {
|
67
|
+
const token = chain[currentIndex];
|
68
|
+
if (!token) {
|
69
|
+
throw new _errors.IoWalletError(`Cannot select kid: empty token`);
|
70
|
+
}
|
71
|
+
const shape = selectTokenShape(currentIndex);
|
72
|
+
return shape.parse(decode(token)).header.kid;
|
73
|
+
};
|
74
|
+
|
75
|
+
// select keys from the next token
|
76
|
+
// if the current token is the last, keys fro trust anchor will be used
|
77
|
+
const selectKeys = currentIndex => {
|
78
|
+
if (currentIndex === chain.length - 1) {
|
79
|
+
return trustAnchorEntity.payload.jwks.keys;
|
80
|
+
}
|
81
|
+
const nextIndex = currentIndex + 1;
|
82
|
+
const nextToken = chain[nextIndex];
|
83
|
+
if (!nextToken) {
|
84
|
+
throw new _errors.IoWalletError(`Cannot select keys: empty nextToken`);
|
85
|
+
}
|
86
|
+
const shape = selectTokenShape(nextIndex);
|
87
|
+
return shape.parse(decode(nextToken)).payload.jwks.keys;
|
88
|
+
};
|
89
|
+
|
90
|
+
// Iterate the chain and validate each element's signature against the public keys of its next
|
91
|
+
// If there is no next, hence it's the end of the chain and it must be verified by the Trust Anchor
|
92
|
+
return Promise.all(chain.map((token, i) => [token, selectKid(i), selectKeys(i)]).map(args => verify(...args)));
|
93
|
+
}
|
94
|
+
//# sourceMappingURL=chain.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"names":["_ioReactNativeJwt","require","_types","_errors","z","_interopRequireWildcard","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","verify","token","kid","jwks","jwk","find","k","Error","protectedHeader","header","payload","verifyJwt","decode","decodeJwt","FirstElementShape","EntityConfiguration","MiddleElementShape","EntityStatement","LastElementShape","union","TrustAnchorEntityConfiguration","verifyTrustChain","trustAnchorEntity","chain","length","IoWalletError","selectTokenShape","elementIndex","selectKid","currentIndex","shape","parse","selectKeys","keys","nextIndex","nextToken","Promise","all","map","i","args"],"sourceRoot":"../../../src","sources":["trust/chain.ts"],"mappings":"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"}
|
@@ -0,0 +1,44 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
exports.getEntityConfiguration = getEntityConfiguration;
|
7
|
+
Object.defineProperty(exports, "verifyTrustChain", {
|
8
|
+
enumerable: true,
|
9
|
+
get: function () {
|
10
|
+
return _chain.verifyTrustChain;
|
11
|
+
}
|
12
|
+
});
|
13
|
+
var _ioReactNativeJwt = require("@pagopa/io-react-native-jwt");
|
14
|
+
var _types = require("./types");
|
15
|
+
var _errors = require("../utils/errors");
|
16
|
+
var _chain = require("./chain");
|
17
|
+
/**
|
18
|
+
* Fetch and parse teh entity configuration document for a given federation entity
|
19
|
+
*
|
20
|
+
* @param entityBaseUrl The base url of the entity.
|
21
|
+
* @param options.appFetch An optional instance of the http client to be used.
|
22
|
+
* @returns The parsed entity configuration object
|
23
|
+
* @throws {IoWalletError} If the http request fails
|
24
|
+
* @throws Parse error if the document is not in the expected shape.
|
25
|
+
*/
|
26
|
+
async function getEntityConfiguration(entityBaseUrl) {
|
27
|
+
let {
|
28
|
+
appFetch = fetch
|
29
|
+
} = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
30
|
+
const wellKnownUrl = `${entityBaseUrl}/.well-known/openid-federation`;
|
31
|
+
const response = await appFetch(wellKnownUrl, {
|
32
|
+
method: "GET"
|
33
|
+
});
|
34
|
+
if (response.status === 200) {
|
35
|
+
const responseText = await response.text();
|
36
|
+
const responseJwt = (0, _ioReactNativeJwt.decode)(responseText);
|
37
|
+
return _types.EntityConfiguration.parse({
|
38
|
+
header: responseJwt.protectedHeader,
|
39
|
+
payload: responseJwt.payload
|
40
|
+
});
|
41
|
+
}
|
42
|
+
throw new _errors.IoWalletError(`Unable to obtain Entity Configuration at ${wellKnownUrl}. Response code: ${response.status}`);
|
43
|
+
}
|
44
|
+
//# sourceMappingURL=index.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"names":["_ioReactNativeJwt","require","_types","_errors","_chain","getEntityConfiguration","entityBaseUrl","appFetch","fetch","arguments","length","undefined","wellKnownUrl","response","method","status","responseText","text","responseJwt","decodeJwt","EntityConfiguration","parse","header","protectedHeader","payload","IoWalletError"],"sourceRoot":"../../../src","sources":["trust/index.ts"],"mappings":";;;;;;;;;;;;AAAA,IAAAA,iBAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,OAAA,GAAAF,OAAA;AACA,IAAAG,MAAA,GAAAH,OAAA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,eAAeI,sBAAsBA,CAC1CC,aAAqB,EAMS;EAAA,IAL9B;IACEC,QAAQ,GAAGC;EAGb,CAAC,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;EAEN,MAAMG,YAAY,GAAI,GAAEN,aAAc,gCAA+B;EAErE,MAAMO,QAAQ,GAAG,MAAMN,QAAQ,CAACK,YAAY,EAAE;IAC5CE,MAAM,EAAE;EACV,CAAC,CAAC;EAEF,IAAID,QAAQ,CAACE,MAAM,KAAK,GAAG,EAAE;IAC3B,MAAMC,YAAY,GAAG,MAAMH,QAAQ,CAACI,IAAI,CAAC,CAAC;IAC1C,MAAMC,WAAW,GAAG,IAAAC,wBAAS,EAACH,YAAY,CAAC;IAC3C,OAAOI,0BAAmB,CAACC,KAAK,CAAC;MAC/BC,MAAM,EAAEJ,WAAW,CAACK,eAAe;MACnCC,OAAO,EAAEN,WAAW,CAACM;IACvB,CAAC,CAAC;EACJ;EAEA,MAAM,IAAIC,qBAAa,CACpB,4CAA2Cb,YAAa,oBAAmBC,QAAQ,CAACE,MAAO,EAC9F,CAAC;AACH"}
|
@@ -0,0 +1,64 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
exports.TrustMark = exports.TrustAnchorEntityConfiguration = exports.EntityStatement = exports.EntityConfiguration = void 0;
|
7
|
+
var _types = require("../sd-jwt/types");
|
8
|
+
var _jwk = require("../utils/jwk");
|
9
|
+
var z = _interopRequireWildcard(require("zod"));
|
10
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
11
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
12
|
+
const TrustMark = z.object({
|
13
|
+
id: z.string(),
|
14
|
+
trust_mark: z.string()
|
15
|
+
});
|
16
|
+
exports.TrustMark = TrustMark;
|
17
|
+
const EntityStatement = z.object({
|
18
|
+
header: z.object({
|
19
|
+
typ: z.literal("entity-statement+jwt"),
|
20
|
+
alg: z.string(),
|
21
|
+
kid: z.string()
|
22
|
+
}),
|
23
|
+
payload: z.object({
|
24
|
+
iss: z.string(),
|
25
|
+
sub: z.string(),
|
26
|
+
jwks: z.object({
|
27
|
+
keys: z.array(_jwk.JWK)
|
28
|
+
}),
|
29
|
+
trust_marks: z.array(TrustMark),
|
30
|
+
iat: z.number(),
|
31
|
+
exp: z.number()
|
32
|
+
})
|
33
|
+
});
|
34
|
+
exports.EntityStatement = EntityStatement;
|
35
|
+
const EntityConfiguration = z.object({
|
36
|
+
header: z.object({
|
37
|
+
typ: z.literal("entity-statement+jwt"),
|
38
|
+
alg: z.string(),
|
39
|
+
kid: z.string()
|
40
|
+
}),
|
41
|
+
payload: z.object({
|
42
|
+
exp: _types.UnixTime,
|
43
|
+
iat: _types.UnixTime,
|
44
|
+
iss: z.string(),
|
45
|
+
sub: z.string(),
|
46
|
+
jwks: z.object({
|
47
|
+
keys: z.array(_jwk.JWK)
|
48
|
+
}),
|
49
|
+
metadata: z.object({
|
50
|
+
federation_entity: z.object({
|
51
|
+
organization_name: z.string(),
|
52
|
+
homepage_uri: z.string(),
|
53
|
+
policy_uri: z.string(),
|
54
|
+
logo_uri: z.string(),
|
55
|
+
contacts: z.array(z.string())
|
56
|
+
})
|
57
|
+
}),
|
58
|
+
authority_hints: z.array(z.string())
|
59
|
+
})
|
60
|
+
});
|
61
|
+
exports.EntityConfiguration = EntityConfiguration;
|
62
|
+
const TrustAnchorEntityConfiguration = EntityConfiguration;
|
63
|
+
exports.TrustAnchorEntityConfiguration = TrustAnchorEntityConfiguration;
|
64
|
+
//# sourceMappingURL=types.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"names":["_types","require","_jwk","z","_interopRequireWildcard","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","TrustMark","object","id","string","trust_mark","exports","EntityStatement","header","typ","literal","alg","kid","payload","iss","sub","jwks","keys","array","JWK","trust_marks","iat","number","exp","EntityConfiguration","UnixTime","metadata","federation_entity","organization_name","homepage_uri","policy_uri","logo_uri","contacts","authority_hints","TrustAnchorEntityConfiguration"],"sourceRoot":"../../../src","sources":["trust/types.ts"],"mappings":"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"}
|