@pagopa/io-react-native-jwt 0.5.0 → 0.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/LICENSE +201 -20
  2. package/README.md +14 -0
  3. package/lib/commonjs/index.js +60 -72
  4. package/lib/commonjs/index.js.map +1 -1
  5. package/lib/commonjs/jwk/index.js +26 -1
  6. package/lib/commonjs/jwk/index.js.map +1 -1
  7. package/lib/commonjs/jwt/index.js +49 -3
  8. package/lib/commonjs/jwt/index.js.map +1 -1
  9. package/lib/commonjs/types.js +63 -0
  10. package/lib/commonjs/types.js.map +1 -1
  11. package/lib/commonjs/utils/errors.js +23 -1
  12. package/lib/commonjs/utils/errors.js.map +1 -1
  13. package/lib/module/index.js +6 -6
  14. package/lib/module/index.js.map +1 -1
  15. package/lib/module/jwk/index.js +25 -0
  16. package/lib/module/jwk/index.js.map +1 -1
  17. package/lib/module/jwt/index.js +47 -3
  18. package/lib/module/jwt/index.js.map +1 -1
  19. package/lib/module/types.js +56 -0
  20. package/lib/module/types.js.map +1 -1
  21. package/lib/module/utils/errors.js +20 -0
  22. package/lib/module/utils/errors.js.map +1 -1
  23. package/lib/typescript/index.d.ts +7 -6
  24. package/lib/typescript/index.d.ts.map +1 -1
  25. package/lib/typescript/jwk/index.d.ts +9 -1
  26. package/lib/typescript/jwk/index.d.ts.map +1 -1
  27. package/lib/typescript/jwt/index.d.ts +31 -3
  28. package/lib/typescript/jwt/index.d.ts.map +1 -1
  29. package/lib/typescript/types.d.ts +328 -31
  30. package/lib/typescript/types.d.ts.map +1 -1
  31. package/lib/typescript/utils/errors.d.ts +14 -0
  32. package/lib/typescript/utils/errors.d.ts.map +1 -1
  33. package/package.json +3 -2
  34. package/src/index.ts +16 -0
  35. package/src/jwk/index.ts +28 -1
  36. package/src/jwt/index.ts +58 -5
  37. package/src/types.ts +43 -32
  38. package/src/utils/errors.ts +22 -0
  39. package/src/index.tsx +0 -10
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.JWTInvalid = exports.JWTExpired = exports.JWTClaimValidationFailed = exports.JWSSignatureVerificationFailed = exports.JWSInvalid = exports.JWEInvalid = exports.JOSENotSupported = exports.JOSEError = exports.JOSEAlgNotAllowed = void 0;
6
+ exports.JWTInvalid = exports.JWTExpired = exports.JWTClaimValidationFailed = exports.JWSSignatureVerificationFailed = exports.JWSInvalid = exports.JWKSetInvalid = exports.JWKNotFound = exports.JWEInvalid = exports.JOSENotSupported = exports.JOSEError = exports.JOSEAlgNotAllowed = void 0;
7
7
  /**
8
8
  * A generic Error that all other JOSE specific Error subclasses extend.
9
9
  *
@@ -237,5 +237,27 @@ class JWEInvalid extends JOSEError {
237
237
  }
238
238
  code = 'ERR_JWE_INVALID';
239
239
  }
240
+
241
+ /**
242
+ * An error subclass thrown when a JWKSet is invalid.
243
+ */
240
244
  exports.JWEInvalid = JWEInvalid;
245
+ class JWKSetInvalid extends JOSEError {
246
+ static get code() {
247
+ return 'ERR_JWKS_INVALID';
248
+ }
249
+ code = 'ERR_JWKS_INVALID';
250
+ }
251
+
252
+ /**
253
+ * An error subclass thrown when a JWK is not found.
254
+ */
255
+ exports.JWKSetInvalid = JWKSetInvalid;
256
+ class JWKNotFound extends JOSEError {
257
+ static get code() {
258
+ return 'ERR_JWK_NOT_FOUND';
259
+ }
260
+ code = 'ERR_JWK_NOT_FOUND';
261
+ }
262
+ exports.JWKNotFound = JWKNotFound;
241
263
  //# sourceMappingURL=errors.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["JOSEError","Error","code","constructor","message","_Error$captureStackTr","name","captureStackTrace","call","exports","JWTClaimValidationFailed","claim","arguments","length","undefined","reason","JWTExpired","JOSEAlgNotAllowed","JOSENotSupported","JWTInvalid","JWSInvalid","JWSSignatureVerificationFailed","JWEInvalid"],"sourceRoot":"../../../src","sources":["utils/errors.ts"],"mappings":"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"}
1
+ {"version":3,"names":["JOSEError","Error","code","constructor","message","_Error$captureStackTr","name","captureStackTrace","call","exports","JWTClaimValidationFailed","claim","arguments","length","undefined","reason","JWTExpired","JOSEAlgNotAllowed","JOSENotSupported","JWTInvalid","JWSInvalid","JWSSignatureVerificationFailed","JWEInvalid","JWKSetInvalid","JWKNotFound"],"sourceRoot":"../../../src","sources":["utils/errors.ts"],"mappings":"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"}
@@ -1,9 +1,9 @@
1
- export * from './jwe/index';
2
- export * from './jwt/index';
3
- export * from './jwk/index';
4
- export * from './jwt/produce';
5
- export * from './jwt/sign';
6
- export * from './jwt/unsecured';
1
+ export { EncryptJwe } from './jwe/index';
2
+ export { decode, isSignatureValid, verify, getJwkFromHeader } from './jwt/index';
3
+ export { thumbprint, getRemoteJWKSet } from './jwk/index';
4
+ export { ProduceJWT } from './jwt/produce';
5
+ export { SignJWT } from './jwt/sign';
6
+ export { UnsecuredJWT } from './jwt/unsecured';
7
7
  export { derToJose } from './utils/asn1';
8
8
  export { encodeBase64, decodeBase64 } from './utils/base64';
9
9
  export { sha256ToBase64 } from './hash';
@@ -1 +1 @@
1
- {"version":3,"names":["derToJose","encodeBase64","decodeBase64","sha256ToBase64"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"AAAA,cAAc,aAAa;AAC3B,cAAc,aAAa;AAC3B,cAAc,aAAa;AAC3B,cAAc,eAAe;AAC7B,cAAc,YAAY;AAC1B,cAAc,iBAAiB;AAE/B,SAASA,SAAS,QAAQ,cAAc;AACxC,SAASC,YAAY,EAAEC,YAAY,QAAQ,gBAAgB;AAC3D,SAASC,cAAc,QAAQ,QAAQ"}
1
+ {"version":3,"names":["EncryptJwe","decode","isSignatureValid","verify","getJwkFromHeader","thumbprint","getRemoteJWKSet","ProduceJWT","SignJWT","UnsecuredJWT","derToJose","encodeBase64","decodeBase64","sha256ToBase64"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"AAAA,SAASA,UAAU,QAAQ,aAAa;AACxC,SACEC,MAAM,EACNC,gBAAgB,EAChBC,MAAM,EACNC,gBAAgB,QACX,aAAa;AACpB,SAASC,UAAU,EAAEC,eAAe,QAAQ,aAAa;AACzD,SAASC,UAAU,QAAQ,eAAe;AAC1C,SAASC,OAAO,QAAQ,YAAY;AACpC,SAASC,YAAY,QAAQ,iBAAiB;AAG9C,SAASC,SAAS,QAAQ,cAAc;AACxC,SAASC,YAAY,EAAEC,YAAY,QAAQ,gBAAgB;AAC3D,SAASC,cAAc,QAAQ,QAAQ"}
@@ -1,4 +1,8 @@
1
1
  import { IoReactNativeJwt } from '../utils/proxy';
2
+ import { WithJWKS } from '../types';
3
+ import { JWKSetInvalid } from '../utils/errors';
4
+ import { decode } from '..';
5
+
2
6
  /**
3
7
  * Calculate JWK thumbprint
4
8
  *
@@ -19,4 +23,25 @@ import { IoReactNativeJwt } from '../utils/proxy';
19
23
  * @param jwk JSON Web Key
20
24
  */
21
25
  export const thumbprint = jwk => IoReactNativeJwt.thumbprint(jwk);
26
+
27
+ /**
28
+ * Returns a JSON Web Key Set (JWKS) downloaded from a remote endpoint,
29
+ * that is, for example, an OAuth 2.0 or OIDC jwks_uri.
30
+ *
31
+ * @param url URL string to fetch the JSON Web Key Set from.
32
+ * @param appFetch fetch function (optional)
33
+ */
34
+ export const getRemoteJWKSet = async function (url) {
35
+ let appFetch = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : fetch;
36
+ let response = await appFetch(url);
37
+ if (response.status === 200) {
38
+ const jwt = await response.text();
39
+ const {
40
+ payload
41
+ } = await decode(jwt);
42
+ const parsedPayload = WithJWKS.parse(payload);
43
+ return parsedPayload.jwks.keys;
44
+ }
45
+ throw new JWKSetInvalid(`Unable to obtain JWKSet from given url. Response status: ${response.status}`);
46
+ };
22
47
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["IoReactNativeJwt","thumbprint","jwk"],"sourceRoot":"../../../src","sources":["jwk/index.ts"],"mappings":"AAAA,SAASA,gBAAgB,QAAQ,gBAAgB;AAGjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,UAAU,GAAIC,GAAQ,IACjCF,gBAAgB,CAACC,UAAU,CAACC,GAAG,CAAC"}
1
+ {"version":3,"names":["IoReactNativeJwt","WithJWKS","JWKSetInvalid","decode","thumbprint","jwk","getRemoteJWKSet","url","appFetch","arguments","length","undefined","fetch","response","status","jwt","text","payload","parsedPayload","parse","jwks","keys"],"sourceRoot":"../../../src","sources":["jwk/index.ts"],"mappings":"AAAA,SAASA,gBAAgB,QAAQ,gBAAgB;AACjD,SAASC,QAAQ,QAAa,UAAU;AACxC,SAASC,aAAa,QAAQ,iBAAiB;AAC/C,SAASC,MAAM,QAAQ,IAAI;;AAE3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,UAAU,GAAIC,GAAQ,IACjCL,gBAAgB,CAACI,UAAU,CAACC,GAAG,CAAC;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,eAAe,GAAG,eAAAA,CAC7BC,GAAW,EAEQ;EAAA,IADnBC,QAA8B,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAGG,KAAK;EAEtC,IAAIC,QAAQ,GAAG,MAAML,QAAQ,CAACD,GAAG,CAAC;EAElC,IAAIM,QAAQ,CAACC,MAAM,KAAK,GAAG,EAAE;IAC3B,MAAMC,GAAG,GAAG,MAAMF,QAAQ,CAACG,IAAI,CAAC,CAAC;IACjC,MAAM;MAAEC;IAAQ,CAAC,GAAG,MAAMd,MAAM,CAACY,GAAG,CAAC;IACrC,MAAMG,aAAa,GAAGjB,QAAQ,CAACkB,KAAK,CAACF,OAAO,CAAC;IAC7C,OAAOC,aAAa,CAACE,IAAI,CAACC,IAAI;EAChC;EAEA,MAAM,IAAInB,aAAa,CACpB,4DAA2DW,QAAQ,CAACC,MAAO,EAC9E,CAAC;AACH,CAAC"}
@@ -1,7 +1,8 @@
1
1
  import jwtPayload from './jwt_claims_set';
2
- import { JWSSignatureVerificationFailed } from '../utils/errors';
2
+ import { JWKNotFound, JWSSignatureVerificationFailed } from '../utils/errors';
3
3
  import { IoReactNativeJwt } from '../utils/proxy';
4
4
  import { SignJWT } from './sign';
5
+ import { getKtyFromAlg } from '../algorithms';
5
6
  export * from './produce';
6
7
  export * from './sign';
7
8
  export * from './unsecured';
@@ -70,8 +71,23 @@ export const isSignatureValid = (token, jwk) => IoReactNativeJwt.verify(token, j
70
71
  * })
71
72
  * ```
72
73
  *
74
+ * * @example Usage with a JWKSet
75
+ *
76
+ * ```js
77
+ * const wellKnownUrl = 'https://example.com/.well-known/openid-federation';
78
+ * const jwks = await getRemoteJWKSet(wellKnownUrl);
79
+ *
80
+ * const jwt =
81
+ * 'eyJ0eXAiOiJlbnRpdHktc3RhdGVtZW50K2p3dCIsImtpZCI6IkVDIzEiLCJhbGciOiJFUzI1NiJ9.eyJpc3MiOiJodHRwczovL2lvLWQtd2FsbGV0LWl0LmF6dXJld2Vic2l0ZXMubmV0LyIsInN1YiI6Imh0dHBzOi8vaW8tZC13YWxsZXQtaXQuYXp1cmV3ZWJzaXRlcy5uZXQvIiwibWV0YWRhdGEiOnsiZXVkaV93YWxsZXRfcHJvdmlkZXIiOnsiandrcyI6W3siY3J2IjoiUC0yNTYiLCJrdHkiOiJFQyIsIngiOiJxckpyajNBZl9CNTdzYk9JUnJjQk03YnI3d09jOHluajdsSEZQVGVmZlVrIiwieSI6IjFIMGNXRHlHZ3ZVOHcta1BLVV94eWNPQ1VOVDJvMGJ3c2xJUXRuUFU2aU0iLCJraWQiOiJFQyMxIn1dLCJ0b2tlbl9lbmRwb2ludCI6Imh0dHBzOi8vaW8tZC13YWxsZXQtaXQuYXp1cmV3ZWJzaXRlcy5uZXQvdG9rZW4iLCJhc2NfdmFsdWVzX3N1cHBvcnRlZCI6WyJodHRwczovL2lvLWQtd2FsbGV0LWl0LmF6dXJld2Vic2l0ZXMubmV0L0xvQS9iYXNpYyIsImh0dHBzOi8vaW8tZC13YWxsZXQtaXQuYXp1cmV3ZWJzaXRlcy5uZXQvTG9BL21lZGl1bSIsImh0dHBzOi8vaW8tZC13YWxsZXQtaXQuYXp1cmV3ZWJzaXRlcy5uZXQvTG9BL2hpZ2h0Il0sImdyYW50X3R5cGVzX3N1cHBvcnRlZCI6WyJ1cm46aWV0ZjpwYXJhbXM6b2F1dGg6Y2xpZW50LWFzc2VydGlvbi10eXBlOmp3dC1rZXktYXR0ZXN0YXRpb24iXSwidG9rZW5fZW5kcG9pbnRfYXV0aF9tZXRob2RzX3N1cHBvcnRlZCI6WyJwcml2YXRlX2tleV9qd3QiXSwidG9rZW5fZW5kcG9pbnRfYXV0aF9zaWduaW5nX2FsZ192YWx1ZXNfc3VwcG9ydGVkIjpbIkVTMjU2IiwiRVMyNTZLIiwiRVMzODQiLCJFUzUxMiIsIlJTMjU2IiwiUlMzODQiLCJSUzUxMiIsIlBTMjU2IiwiUFMzODQiLCJQUzUxMiJdfSwiZmVkZXJhdGlvbl9lbnRpdHkiOnsib3JnYW5pemF0aW9uX25hbWUiOiJQYWdvUGEgUy5wLkEuIiwiaG9tZXBhZ2VfdXJpIjoiaHR0cHM6Ly9pby5pdGFsaWEuaXQvIiwicG9saWN5X3VyaSI6Imh0dHBzOi8vaW8uaXRhbGlhLml0L3ByaXZhY3ktcG9saWN5LyIsInRvc191cmkiOiJodHRwczovL2lvLml0YWxpYS5pdC9wcml2YWN5LXBvbGljeS8iLCJsb2dvX3VyaSI6Imh0dHBzOi8vaW8uaXRhbGlhLml0L2Fzc2V0cy9pbWcvaW8taXQtbG9nby13aGl0ZS5zdmcifX0sImlhdCI6MTY4OTIzNjYzNSwiZXhwIjoxNjg5MjQwMjM1fQ.6wA0M6rNYNSFN_EylzMA6ElAibW7FVSZyoLNEkHU5c_RKuiNenT08YIMvbysYautLZotUedEMP5xCyNpY34x6Q'
82
+ *
83
+ * const { payload, protectedHeader } = await verify(jwt, jwks, {
84
+ * typ: 'entity-statement+jwt',
85
+ * requiredClaims: ['iss', 'sub', 'metadata'],
86
+ * })
87
+ * ```
88
+ *
73
89
  * @param jwt JSON Web Token value (encoded as JWS).
74
- * @param key Public key to verify the JWT in JWK format.
90
+ * @param key Public key to verify the JWT in JWK format or JWKS (array of JWK).
75
91
  * @param options JWT Decryption and JWT Claims Set validation options.
76
92
  */
77
93
  export const verify = async function (token, jwk) {
@@ -80,7 +96,8 @@ export const verify = async function (token, jwk) {
80
96
  protectedHeader,
81
97
  payload
82
98
  } = await decode(token);
83
- const signatureIsValid = await isSignatureValid(token, jwk);
99
+ const selectedJwk = Array.isArray(jwk) ? getJwkFromHeader(protectedHeader, jwk) : jwk;
100
+ const signatureIsValid = await isSignatureValid(token, selectedJwk);
84
101
  if (signatureIsValid) {
85
102
  const verifiedPayload = jwtPayload(protectedHeader, payload, options);
86
103
  return {
@@ -91,4 +108,31 @@ export const verify = async function (token, jwk) {
91
108
  throw new JWSSignatureVerificationFailed();
92
109
  }
93
110
  };
111
+
112
+ /**
113
+ * Given the header of a JWT return the corresponding key from a JWKS.
114
+ *
115
+ * It uses the "alg" (JWS Algorithm) Header Parameter to determine the right JWK "kty" (Key Type),
116
+ * then proceeds to match the JWK "kid" (Key ID) with one found in the JWS Header Parameters (if
117
+ * there is one).
118
+ * Only a single public key must match the selection process.
119
+ *
120
+ * @param header JWT header
121
+ * @param jwks Json Web Key Set (JWKS)
122
+ *
123
+ */
124
+ export const getJwkFromHeader = (header, jwks) => {
125
+ const {
126
+ alg,
127
+ kid
128
+ } = header;
129
+ if (alg && kid) {
130
+ const kty = getKtyFromAlg(alg);
131
+ const filteredJwks = jwks.find(el => el.kty === kty && el.kid === kid);
132
+ if (filteredJwks) {
133
+ return filteredJwks;
134
+ }
135
+ }
136
+ throw new JWKNotFound(`No JWKs found that match alg:${alg} and kid:${kid}`);
137
+ };
94
138
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["jwtPayload","JWSSignatureVerificationFailed","IoReactNativeJwt","SignJWT","derToJose","encodeBase64","decodeBase64","sha256ToBase64","decode","token","isSignatureValid","jwk","verify","options","arguments","length","undefined","protectedHeader","payload","signatureIsValid","verifiedPayload"],"sourceRoot":"../../../src","sources":["jwt/index.ts"],"mappings":"AACA,OAAOA,UAAU,MAAM,kBAAkB;AACzC,SAASC,8BAA8B,QAAQ,iBAAiB;AAChE,SAASC,gBAAgB,QAAQ,gBAAgB;AACjD,SAASC,OAAO,QAAQ,QAAQ;AAGhC,cAAc,WAAW;AACzB,cAAc,QAAQ;AACtB,cAAc,aAAa;AAC3B,SAASC,SAAS,QAAQ,eAAe;AACzC,SAASC,YAAY,EAAEC,YAAY,QAAQ,iBAAiB;AAC5D,SAASC,cAAc,QAAQ,SAAS;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,MAAM,GAAIC,KAAa,IAAsBN,OAAO,CAACK,MAAM,CAACC,KAAK,CAAC;;AAE/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,gBAAgB,GAAGA,CAACD,KAAa,EAAEE,GAAQ,KACtDT,gBAAgB,CAACU,MAAM,CAACH,KAAK,EAAEE,GAAG,CAAC;;AAErC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,MAAM,GAAG,eAAAA,CACpBH,KAAa,EACbE,GAAQ,EAEqB;EAAA,IAD7BE,OAAoC,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;EAEzC,MAAM;IAAEG,eAAe;IAAEC;EAAQ,CAAC,GAAG,MAAMV,MAAM,CAACC,KAAK,CAAC;EACxD,MAAMU,gBAAgB,GAAG,MAAMT,gBAAgB,CAACD,KAAK,EAAEE,GAAG,CAAC;EAE3D,IAAIQ,gBAAgB,EAAE;IACpB,MAAMC,eAAe,GAAGpB,UAAU,CAACiB,eAAe,EAAEC,OAAO,EAAEL,OAAO,CAAC;IACrE,OAAO;MAAEK,OAAO,EAAEE,eAAe;MAAEH;IAAgB,CAAC;EACtD,CAAC,MAAM;IACL,MAAM,IAAIhB,8BAA8B,CAAC,CAAC;EAC5C;AACF,CAAC"}
1
+ {"version":3,"names":["jwtPayload","JWKNotFound","JWSSignatureVerificationFailed","IoReactNativeJwt","SignJWT","getKtyFromAlg","derToJose","encodeBase64","decodeBase64","sha256ToBase64","decode","token","isSignatureValid","jwk","verify","options","arguments","length","undefined","protectedHeader","payload","selectedJwk","Array","isArray","getJwkFromHeader","signatureIsValid","verifiedPayload","header","jwks","alg","kid","kty","filteredJwks","find","el"],"sourceRoot":"../../../src","sources":["jwt/index.ts"],"mappings":"AAKA,OAAOA,UAAU,MAAM,kBAAkB;AACzC,SAASC,WAAW,EAAEC,8BAA8B,QAAQ,iBAAiB;AAC7E,SAASC,gBAAgB,QAAQ,gBAAgB;AACjD,SAASC,OAAO,QAAQ,QAAQ;AAEhC,SAASC,aAAa,QAAQ,eAAe;AAE7C,cAAc,WAAW;AACzB,cAAc,QAAQ;AACtB,cAAc,aAAa;AAC3B,SAASC,SAAS,QAAQ,eAAe;AACzC,SAASC,YAAY,EAAEC,YAAY,QAAQ,iBAAiB;AAC5D,SAASC,cAAc,QAAQ,SAAS;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,MAAM,GAAIC,KAAa,IAAsBP,OAAO,CAACM,MAAM,CAACC,KAAK,CAAC;;AAE/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,gBAAgB,GAAGA,CAACD,KAAa,EAAEE,GAAQ,KACtDV,gBAAgB,CAACW,MAAM,CAACH,KAAK,EAAEE,GAAG,CAAC;;AAErC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,MAAM,GAAG,eAAAA,CACpBH,KAAa,EACbE,GAAgB,EAEa;EAAA,IAD7BE,OAAoC,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;EAEzC,MAAM;IAAEG,eAAe;IAAEC;EAAQ,CAAC,GAAG,MAAMV,MAAM,CAACC,KAAK,CAAC;EAExD,MAAMU,WAAW,GAAGC,KAAK,CAACC,OAAO,CAACV,GAAG,CAAC,GAClCW,gBAAgB,CAACL,eAAe,EAAEN,GAAG,CAAC,GACtCA,GAAG;EAEP,MAAMY,gBAAgB,GAAG,MAAMb,gBAAgB,CAACD,KAAK,EAAEU,WAAW,CAAC;EACnE,IAAII,gBAAgB,EAAE;IACpB,MAAMC,eAAe,GAAG1B,UAAU,CAACmB,eAAe,EAAEC,OAAO,EAAEL,OAAO,CAAC;IACrE,OAAO;MAAEK,OAAO,EAAEM,eAAe;MAAEP;IAAgB,CAAC;EACtD,CAAC,MAAM;IACL,MAAM,IAAIjB,8BAA8B,CAAC,CAAC;EAC5C;AACF,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMsB,gBAAgB,GAAGA,CAC9BG,MAA2B,EAC3BC,IAAW,KACH;EACR,MAAM;IAAEC,GAAG;IAAEC;EAAI,CAAC,GAAGH,MAAM;EAC3B,IAAIE,GAAG,IAAIC,GAAG,EAAE;IACd,MAAMC,GAAG,GAAG1B,aAAa,CAACwB,GAAG,CAAC;IAC9B,MAAMG,YAAY,GAAGJ,IAAI,CAACK,IAAI,CAAEC,EAAE,IAAKA,EAAE,CAACH,GAAG,KAAKA,GAAG,IAAIG,EAAE,CAACJ,GAAG,KAAKA,GAAG,CAAC;IAExE,IAAIE,YAAY,EAAE;MAChB,OAAOA,YAAY;IACrB;EACF;EAEA,MAAM,IAAI/B,WAAW,CAAE,gCAA+B4B,GAAI,YAAWC,GAAI,EAAC,CAAC;AAC7E,CAAC"}
@@ -1,2 +1,58 @@
1
+ import { z } from 'zod';
1
2
 
3
+ /** Recognized JWS Header Parameters, any other Header Members may also be present. */
4
+
5
+ /** Recognized Compact JWS Header Parameters, any other Header Members may also be present. */
6
+
7
+ /** Recognized JWE Header Parameters, any other Header members may also be present. */
8
+
9
+ /** Recognized JWT Claims Set members, any other members may also be present. */
10
+
11
+ /** JWT Claims Set verification options. */
12
+
13
+ export const JWK = z.object({
14
+ 'alg': z.string().optional(),
15
+ 'crv': z.string().optional(),
16
+ 'd': z.string().optional(),
17
+ 'dp': z.string().optional(),
18
+ 'dq': z.string().optional(),
19
+ 'e': z.string().optional(),
20
+ /** JWK "ext" (Extractable) Parameter. */
21
+ 'ext': z.boolean().optional(),
22
+ 'k': z.string().optional(),
23
+ /** JWK "key_ops" (Key Operations) Parameter. */
24
+ 'key_ops': z.array(z.string()).optional(),
25
+ /** JWK "kid" (Key ID) Parameter. */
26
+ 'kid': z.string().optional(),
27
+ /** JWK "kty" (Key Type) Parameter.
28
+ * This attribute is required to discriminate the
29
+ * type of EC/RSA algorithm */
30
+ 'kty': z.string(),
31
+ 'n': z.string().optional(),
32
+ 'oth': z.array(z.object({
33
+ d: z.string().optional(),
34
+ r: z.string().optional(),
35
+ t: z.string().optional()
36
+ })).optional(),
37
+ 'p': z.string().optional(),
38
+ 'q': z.string().optional(),
39
+ 'qi': z.string().optional(),
40
+ /** JWK "use" (Public Key Use) Parameter. */
41
+ 'use': z.string().optional(),
42
+ 'x': z.string().optional(),
43
+ 'y': z.string().optional(),
44
+ /** JWK "x5c" (X.509 Certificate Chain) Parameter. */
45
+ 'x5c': z.array(z.string()).optional(),
46
+ /** JWK "x5t" (X.509 Certificate SHA-1 Thumbprint) Parameter. */
47
+ 'x5t': z.string().optional(),
48
+ /** "x5t#S256" (X.509 Certificate SHA-256 Thumbprint) Parameter. */
49
+ 'x5t#S256': z.string().optional(),
50
+ /** JWK "x5u" (X.509 URL) Parameter. */
51
+ 'x5u': z.string().optional()
52
+ });
53
+ export const WithJWKS = z.object({
54
+ jwks: z.object({
55
+ keys: z.array(JWK)
56
+ })
57
+ });
2
58
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"names":[],"sourceRoot":"../../src","sources":["types.ts"],"mappings":""}
1
+ {"version":3,"names":["z","JWK","object","string","optional","boolean","array","d","r","t","WithJWKS","jwks","keys"],"sourceRoot":"../../src","sources":["types.ts"],"mappings":"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"}
@@ -223,4 +223,24 @@ export class JWEInvalid extends JOSEError {
223
223
  }
224
224
  code = 'ERR_JWE_INVALID';
225
225
  }
226
+
227
+ /**
228
+ * An error subclass thrown when a JWKSet is invalid.
229
+ */
230
+ export class JWKSetInvalid extends JOSEError {
231
+ static get code() {
232
+ return 'ERR_JWKS_INVALID';
233
+ }
234
+ code = 'ERR_JWKS_INVALID';
235
+ }
236
+
237
+ /**
238
+ * An error subclass thrown when a JWK is not found.
239
+ */
240
+ export class JWKNotFound extends JOSEError {
241
+ static get code() {
242
+ return 'ERR_JWK_NOT_FOUND';
243
+ }
244
+ code = 'ERR_JWK_NOT_FOUND';
245
+ }
226
246
  //# sourceMappingURL=errors.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["JOSEError","Error","code","constructor","message","_Error$captureStackTr","name","captureStackTrace","call","JWTClaimValidationFailed","claim","arguments","length","undefined","reason","JWTExpired","JOSEAlgNotAllowed","JOSENotSupported","JWTInvalid","JWSInvalid","JWSSignatureVerificationFailed","JWEInvalid"],"sourceRoot":"../../../src","sources":["utils/errors.ts"],"mappings":"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"}
1
+ {"version":3,"names":["JOSEError","Error","code","constructor","message","_Error$captureStackTr","name","captureStackTrace","call","JWTClaimValidationFailed","claim","arguments","length","undefined","reason","JWTExpired","JOSEAlgNotAllowed","JOSENotSupported","JWTInvalid","JWSInvalid","JWSSignatureVerificationFailed","JWEInvalid","JWKSetInvalid","JWKNotFound"],"sourceRoot":"../../../src","sources":["utils/errors.ts"],"mappings":"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"}
@@ -1,9 +1,10 @@
1
- export * from './jwe/index';
2
- export * from './jwt/index';
3
- export * from './jwk/index';
4
- export * from './jwt/produce';
5
- export * from './jwt/sign';
6
- export * from './jwt/unsecured';
1
+ export { EncryptJwe } from './jwe/index';
2
+ export { decode, isSignatureValid, verify, getJwkFromHeader, } from './jwt/index';
3
+ export { thumbprint, getRemoteJWKSet } from './jwk/index';
4
+ export { ProduceJWT } from './jwt/produce';
5
+ export { SignJWT } from './jwt/sign';
6
+ export { UnsecuredJWT } from './jwt/unsecured';
7
+ export type { UnsecuredResult } from './jwt/unsecured';
7
8
  export { derToJose } from './utils/asn1';
8
9
  export { encodeBase64, decodeBase64 } from './utils/base64';
9
10
  export { sha256ToBase64 } from './hash';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.tsx"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAEhC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EACL,MAAM,EACN,gBAAgB,EAChB,MAAM,EACN,gBAAgB,GACjB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,YAAY,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEvD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { JWK } from '../types';
1
+ import { JWK } from '../types';
2
2
  /**
3
3
  * Calculate JWK thumbprint
4
4
  *
@@ -19,4 +19,12 @@ import type { JWK } from '../types';
19
19
  * @param jwk JSON Web Key
20
20
  */
21
21
  export declare const thumbprint: (jwk: JWK) => Promise<string>;
22
+ /**
23
+ * Returns a JSON Web Key Set (JWKS) downloaded from a remote endpoint,
24
+ * that is, for example, an OAuth 2.0 or OIDC jwks_uri.
25
+ *
26
+ * @param url URL string to fetch the JSON Web Key Set from.
27
+ * @param appFetch fetch function (optional)
28
+ */
29
+ export declare const getRemoteJWKSet: (url: string, appFetch?: GlobalFetch['fetch']) => Promise<JWK[]>;
22
30
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/jwk/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAEpC;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,UAAU,QAAS,GAAG,KAAG,QAAQ,MAAM,CAClB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/jwk/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAY,GAAG,EAAE,MAAM,UAAU,CAAC;AAIzC;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,UAAU,QAAS,GAAG,KAAG,QAAQ,MAAM,CAClB,CAAC;AAEnC;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,QACrB,MAAM,aACD,WAAW,CAAC,OAAO,CAAC,KAC7B,QAAQ,GAAG,EAAE,CAaf,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { JWTClaimVerificationOptions, JWTDecodeResult } from '../types';
1
+ import type { JWSHeaderParameters, JWTClaimVerificationOptions, JWTDecodeResult } from '../types';
2
2
  import type { JWK } from '../types';
3
3
  export * from './produce';
4
4
  export * from './sign';
@@ -66,9 +66,37 @@ export declare const isSignatureValid: (token: string, jwk: JWK) => Promise<bool
66
66
  * })
67
67
  * ```
68
68
  *
69
+ * * @example Usage with a JWKSet
70
+ *
71
+ * ```js
72
+ * const wellKnownUrl = 'https://example.com/.well-known/openid-federation';
73
+ * const jwks = await getRemoteJWKSet(wellKnownUrl);
74
+ *
75
+ * const jwt =
76
+ * 'eyJ0eXAiOiJlbnRpdHktc3RhdGVtZW50K2p3dCIsImtpZCI6IkVDIzEiLCJhbGciOiJFUzI1NiJ9.eyJpc3MiOiJodHRwczovL2lvLWQtd2FsbGV0LWl0LmF6dXJld2Vic2l0ZXMubmV0LyIsInN1YiI6Imh0dHBzOi8vaW8tZC13YWxsZXQtaXQuYXp1cmV3ZWJzaXRlcy5uZXQvIiwibWV0YWRhdGEiOnsiZXVkaV93YWxsZXRfcHJvdmlkZXIiOnsiandrcyI6W3siY3J2IjoiUC0yNTYiLCJrdHkiOiJFQyIsIngiOiJxckpyajNBZl9CNTdzYk9JUnJjQk03YnI3d09jOHluajdsSEZQVGVmZlVrIiwieSI6IjFIMGNXRHlHZ3ZVOHcta1BLVV94eWNPQ1VOVDJvMGJ3c2xJUXRuUFU2aU0iLCJraWQiOiJFQyMxIn1dLCJ0b2tlbl9lbmRwb2ludCI6Imh0dHBzOi8vaW8tZC13YWxsZXQtaXQuYXp1cmV3ZWJzaXRlcy5uZXQvdG9rZW4iLCJhc2NfdmFsdWVzX3N1cHBvcnRlZCI6WyJodHRwczovL2lvLWQtd2FsbGV0LWl0LmF6dXJld2Vic2l0ZXMubmV0L0xvQS9iYXNpYyIsImh0dHBzOi8vaW8tZC13YWxsZXQtaXQuYXp1cmV3ZWJzaXRlcy5uZXQvTG9BL21lZGl1bSIsImh0dHBzOi8vaW8tZC13YWxsZXQtaXQuYXp1cmV3ZWJzaXRlcy5uZXQvTG9BL2hpZ2h0Il0sImdyYW50X3R5cGVzX3N1cHBvcnRlZCI6WyJ1cm46aWV0ZjpwYXJhbXM6b2F1dGg6Y2xpZW50LWFzc2VydGlvbi10eXBlOmp3dC1rZXktYXR0ZXN0YXRpb24iXSwidG9rZW5fZW5kcG9pbnRfYXV0aF9tZXRob2RzX3N1cHBvcnRlZCI6WyJwcml2YXRlX2tleV9qd3QiXSwidG9rZW5fZW5kcG9pbnRfYXV0aF9zaWduaW5nX2FsZ192YWx1ZXNfc3VwcG9ydGVkIjpbIkVTMjU2IiwiRVMyNTZLIiwiRVMzODQiLCJFUzUxMiIsIlJTMjU2IiwiUlMzODQiLCJSUzUxMiIsIlBTMjU2IiwiUFMzODQiLCJQUzUxMiJdfSwiZmVkZXJhdGlvbl9lbnRpdHkiOnsib3JnYW5pemF0aW9uX25hbWUiOiJQYWdvUGEgUy5wLkEuIiwiaG9tZXBhZ2VfdXJpIjoiaHR0cHM6Ly9pby5pdGFsaWEuaXQvIiwicG9saWN5X3VyaSI6Imh0dHBzOi8vaW8uaXRhbGlhLml0L3ByaXZhY3ktcG9saWN5LyIsInRvc191cmkiOiJodHRwczovL2lvLml0YWxpYS5pdC9wcml2YWN5LXBvbGljeS8iLCJsb2dvX3VyaSI6Imh0dHBzOi8vaW8uaXRhbGlhLml0L2Fzc2V0cy9pbWcvaW8taXQtbG9nby13aGl0ZS5zdmcifX0sImlhdCI6MTY4OTIzNjYzNSwiZXhwIjoxNjg5MjQwMjM1fQ.6wA0M6rNYNSFN_EylzMA6ElAibW7FVSZyoLNEkHU5c_RKuiNenT08YIMvbysYautLZotUedEMP5xCyNpY34x6Q'
77
+ *
78
+ * const { payload, protectedHeader } = await verify(jwt, jwks, {
79
+ * typ: 'entity-statement+jwt',
80
+ * requiredClaims: ['iss', 'sub', 'metadata'],
81
+ * })
82
+ * ```
83
+ *
69
84
  * @param jwt JSON Web Token value (encoded as JWS).
70
- * @param key Public key to verify the JWT in JWK format.
85
+ * @param key Public key to verify the JWT in JWK format or JWKS (array of JWK).
71
86
  * @param options JWT Decryption and JWT Claims Set validation options.
72
87
  */
73
- export declare const verify: (token: string, jwk: JWK, options?: JWTClaimVerificationOptions) => Promise<JWTDecodeResult>;
88
+ export declare const verify: (token: string, jwk: JWK | JWK[], options?: JWTClaimVerificationOptions) => Promise<JWTDecodeResult>;
89
+ /**
90
+ * Given the header of a JWT return the corresponding key from a JWKS.
91
+ *
92
+ * It uses the "alg" (JWS Algorithm) Header Parameter to determine the right JWK "kty" (Key Type),
93
+ * then proceeds to match the JWK "kid" (Key ID) with one found in the JWS Header Parameters (if
94
+ * there is one).
95
+ * Only a single public key must match the selection process.
96
+ *
97
+ * @param header JWT header
98
+ * @param jwks Json Web Key Set (JWKS)
99
+ *
100
+ */
101
+ export declare const getJwkFromHeader: (header: JWSHeaderParameters, jwks: JWK[]) => JWK;
74
102
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/jwt/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,2BAA2B,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAK7E,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAEpC,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC;AACvB,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACzC;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,MAAM,UAAW,MAAM,KAAG,eAAwC,CAAC;AAEhF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,gBAAgB,UAAW,MAAM,OAAO,GAAG,KAAG,QAAQ,OAAO,CACrC,CAAC;AAEtC;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,eAAO,MAAM,MAAM,UACV,MAAM,OACR,GAAG,YACC,2BAA2B,KACnC,QAAQ,eAAe,CAUzB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/jwt/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,2BAA2B,EAC3B,eAAe,EAChB,MAAM,UAAU,CAAC;AAKlB,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAGpC,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC;AACvB,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACzC;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,MAAM,UAAW,MAAM,KAAG,eAAwC,CAAC;AAEhF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,gBAAgB,UAAW,MAAM,OAAO,GAAG,KAAG,QAAQ,OAAO,CACrC,CAAC;AAEtC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,eAAO,MAAM,MAAM,UACV,MAAM,OACR,GAAG,GAAG,GAAG,EAAE,YACP,2BAA2B,KACnC,QAAQ,eAAe,CAczB,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,gBAAgB,WACnB,mBAAmB,QACrB,GAAG,EAAE,KACV,GAYF,CAAC"}