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

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 (82) hide show
  1. package/android/src/main/java/com/pagopa/ioreactnativejwt/IoReactNativeJwtModule.kt +35 -15
  2. package/ios/IoReactNativeJwt.mm +6 -0
  3. package/ios/IoReactNativeJwt.swift +63 -0
  4. package/lib/commonjs/index.js +42 -125
  5. package/lib/commonjs/index.js.map +1 -1
  6. package/lib/commonjs/jwe/index.js +41 -0
  7. package/lib/commonjs/jwe/index.js.map +1 -0
  8. package/lib/commonjs/jwk/index.js +29 -0
  9. package/lib/commonjs/jwk/index.js.map +1 -0
  10. package/lib/commonjs/jwt/index.js +171 -0
  11. package/lib/commonjs/jwt/index.js.map +1 -0
  12. package/lib/commonjs/{jwt_claims_set.js → jwt/jwt_claims_set.js} +2 -2
  13. package/lib/commonjs/jwt/jwt_claims_set.js.map +1 -0
  14. package/lib/commonjs/{produce.js → jwt/produce.js} +2 -2
  15. package/lib/commonjs/jwt/produce.js.map +1 -0
  16. package/lib/commonjs/{sign.js → jwt/sign.js} +4 -4
  17. package/lib/commonjs/jwt/sign.js.map +1 -0
  18. package/lib/commonjs/{unsecured.js → jwt/unsecured.js} +2 -2
  19. package/lib/commonjs/jwt/unsecured.js.map +1 -0
  20. package/lib/commonjs/utils/errors.js +28 -1
  21. package/lib/commonjs/utils/errors.js.map +1 -1
  22. package/lib/module/index.js +6 -111
  23. package/lib/module/index.js.map +1 -1
  24. package/lib/module/jwe/index.js +35 -0
  25. package/lib/module/jwe/index.js.map +1 -0
  26. package/lib/module/jwk/index.js +22 -0
  27. package/lib/module/jwk/index.js.map +1 -0
  28. package/lib/module/jwt/index.js +94 -0
  29. package/lib/module/jwt/index.js.map +1 -0
  30. package/lib/module/{jwt_claims_set.js → jwt/jwt_claims_set.js} +2 -2
  31. package/lib/module/jwt/jwt_claims_set.js.map +1 -0
  32. package/lib/module/{produce.js → jwt/produce.js} +2 -2
  33. package/lib/module/jwt/produce.js.map +1 -0
  34. package/lib/module/{sign.js → jwt/sign.js} +4 -4
  35. package/lib/module/jwt/sign.js.map +1 -0
  36. package/lib/module/{unsecured.js → jwt/unsecured.js} +2 -2
  37. package/lib/module/jwt/unsecured.js.map +1 -0
  38. package/lib/module/utils/errors.js +26 -0
  39. package/lib/module/utils/errors.js.map +1 -1
  40. package/lib/typescript/index.d.ts +6 -89
  41. package/lib/typescript/index.d.ts.map +1 -1
  42. package/lib/typescript/jwe/index.d.ts +32 -0
  43. package/lib/typescript/jwe/index.d.ts.map +1 -0
  44. package/lib/typescript/jwk/index.d.ts +22 -0
  45. package/lib/typescript/jwk/index.d.ts.map +1 -0
  46. package/lib/typescript/jwt/index.d.ts +74 -0
  47. package/lib/typescript/jwt/index.d.ts.map +1 -0
  48. package/lib/typescript/{jwt_claims_set.d.ts → jwt/jwt_claims_set.d.ts} +1 -1
  49. package/lib/typescript/jwt/jwt_claims_set.d.ts.map +1 -0
  50. package/lib/typescript/{produce.d.ts → jwt/produce.d.ts} +1 -1
  51. package/lib/typescript/jwt/produce.d.ts.map +1 -0
  52. package/lib/typescript/{sign.d.ts → jwt/sign.d.ts} +1 -1
  53. package/lib/typescript/jwt/sign.d.ts.map +1 -0
  54. package/lib/typescript/{unsecured.d.ts → jwt/unsecured.d.ts} +1 -1
  55. package/lib/typescript/jwt/unsecured.d.ts.map +1 -0
  56. package/lib/typescript/types.d.ts +51 -46
  57. package/lib/typescript/types.d.ts.map +1 -1
  58. package/lib/typescript/utils/errors.d.ts +23 -0
  59. package/lib/typescript/utils/errors.d.ts.map +1 -1
  60. package/package.json +1 -1
  61. package/src/index.tsx +6 -116
  62. package/src/jwe/index.ts +45 -0
  63. package/src/jwk/index.ts +24 -0
  64. package/src/jwt/index.ts +95 -0
  65. package/src/{jwt_claims_set.ts → jwt/jwt_claims_set.ts} +3 -3
  66. package/src/{produce.ts → jwt/produce.ts} +3 -3
  67. package/src/{sign.ts → jwt/sign.ts} +5 -5
  68. package/src/{unsecured.ts → jwt/unsecured.ts} +3 -3
  69. package/src/types.ts +56 -48
  70. package/src/utils/errors.ts +27 -0
  71. package/lib/commonjs/jwt_claims_set.js.map +0 -1
  72. package/lib/commonjs/produce.js.map +0 -1
  73. package/lib/commonjs/sign.js.map +0 -1
  74. package/lib/commonjs/unsecured.js.map +0 -1
  75. package/lib/module/jwt_claims_set.js.map +0 -1
  76. package/lib/module/produce.js.map +0 -1
  77. package/lib/module/sign.js.map +0 -1
  78. package/lib/module/unsecured.js.map +0 -1
  79. package/lib/typescript/jwt_claims_set.d.ts.map +0 -1
  80. package/lib/typescript/produce.d.ts.map +0 -1
  81. package/lib/typescript/sign.d.ts.map +0 -1
  82. package/lib/typescript/unsecured.d.ts.map +0 -1
@@ -1,29 +1,28 @@
1
1
  package com.pagopa.ioreactnativejwt
2
2
 
3
+ import android.util.Base64
4
+ import android.util.Base64.DEFAULT
5
+ import com.facebook.react.bridge.Promise
3
6
  import com.facebook.react.bridge.ReactApplicationContext
4
7
  import com.facebook.react.bridge.ReactContextBaseJavaModule
5
8
  import com.facebook.react.bridge.ReactMethod
6
- import com.facebook.react.bridge.Promise
7
-
8
- import android.util.Base64
9
- import android.util.Base64.DEFAULT
10
- import com.nimbusds.jose.JWSHeader
11
- import com.nimbusds.jose.crypto.RSASSASigner
9
+ import com.facebook.react.bridge.ReadableMap
10
+ import com.nimbusds.jose.JWEEncrypter
11
+ import com.nimbusds.jose.JWEHeader
12
+ import com.nimbusds.jose.JWEObject
13
+ import com.nimbusds.jose.Payload
14
+ import com.nimbusds.jose.crypto.ECDSAVerifier
15
+ import com.nimbusds.jose.crypto.RSAEncrypter
16
+ import com.nimbusds.jose.crypto.RSASSAVerifier
12
17
  import com.nimbusds.jose.crypto.bc.BouncyCastleProviderSingleton
13
- import com.nimbusds.jose.jwk.RSAKey
18
+ import com.nimbusds.jose.crypto.impl.ECDSA.transcodeSignatureToConcat
14
19
  import com.nimbusds.jose.jwk.ECKey
15
- import com.nimbusds.jwt.JWTClaimsSet
20
+ import com.nimbusds.jose.jwk.RSAKey
16
21
  import com.nimbusds.jwt.SignedJWT
17
- import com.facebook.react.bridge.ReadableMap
18
22
  import org.json.JSONObject
19
- import com.nimbusds.jose.crypto.RSASSAVerifier
20
- import com.nimbusds.jose.crypto.ECDSAVerifier
21
- import com.facebook.react.bridge.WritableNativeMap
22
- import com.nimbusds.jose.crypto.impl.RSA_OAEP
23
- import com.pagopa.ioreactnativejwt.Utils.convertJsonToMap
24
- import com.nimbusds.jose.crypto.impl.ECDSA.transcodeSignatureToConcat
25
23
  import java.security.MessageDigest
26
24
 
25
+
27
26
  class IoReactNativeJwtModule(reactContext: ReactApplicationContext) :
28
27
  ReactContextBaseJavaModule(reactContext) {
29
28
 
@@ -107,6 +106,27 @@ class IoReactNativeJwtModule(reactContext: ReactApplicationContext) :
107
106
  }
108
107
  }
109
108
 
109
+ @ReactMethod
110
+ fun enc(token: String, header: ReadableMap, jwk: ReadableMap, promise: Promise) {
111
+ try {
112
+ val jwkJson = JSONObject(jwk.toHashMap())
113
+ val headerJson = JSONObject(header.toHashMap())
114
+ val payload = Payload(token)
115
+ if (isECKey(jwkJson)) {
116
+ promise.reject(Exception("EC is not supported"))
117
+ } else {
118
+ val publicKey = RSAKey.parse(jwkJson.toString())
119
+ val internalHeader = JWEHeader.parse(headerJson.toString())
120
+ val jweObject = JWEObject(internalHeader, payload)
121
+ val encrypter: JWEEncrypter = RSAEncrypter(publicKey)
122
+ jweObject.encrypt(encrypter)
123
+ val jweString = jweObject.serialize()
124
+ promise.resolve(jweString)
125
+ }
126
+ } catch (ex: Exception) {
127
+ promise.reject(ex)
128
+ }
129
+ }
110
130
 
111
131
  companion object {
112
132
  const val NAME = "IoReactNativeJwt"
@@ -20,6 +20,12 @@ RCT_EXTERN_METHOD(sha256: (NSString)toHash
20
20
  resolver: (RCTPromiseResolveBlock)resolve
21
21
  rejecter: (RCTPromiseRejectBlock)reject)
22
22
 
23
+ RCT_EXTERN_METHOD(enc: (NSString)plaintext
24
+ header: (NSDictionary *)header
25
+ jwk: (NSDictionary *)jwk
26
+ resolver: (RCTPromiseResolveBlock)resolve
27
+ rejecter: (RCTPromiseRejectBlock)reject)
28
+
23
29
  + (BOOL)requiresMainQueueSetup
24
30
  {
25
31
  return NO;
@@ -1,15 +1,45 @@
1
1
  import JOSESwift
2
2
  import CommonCrypto
3
3
 
4
+
4
5
  @objc(IoReactNativeJwt)
5
6
  class IoReactNativeJwt: NSObject {
6
7
 
8
+ // create an enum with error values
9
+ enum HeaderError: Error {
10
+ case invalidAlg(String)
11
+ case invalidEnc(String)
12
+ }
7
13
 
8
14
  func isECKey(jwk:NSDictionary) -> Bool{
9
15
  let kty = jwk["kty"] as! String
10
16
  return kty == "EC"
11
17
  }
12
18
 
19
+ func getKeyManagmentAlg(header:NSDictionary) throws -> KeyManagementAlgorithm{
20
+ let alg = header["alg"] as! String
21
+ switch alg{
22
+ case "RSA-OAEP":
23
+ return KeyManagementAlgorithm.RSAOAEP
24
+ case "RSA-OAEP-256":
25
+ return KeyManagementAlgorithm.RSAOAEP256
26
+ default:
27
+ throw HeaderError.invalidAlg("alg value not supported")
28
+ }
29
+ }
30
+
31
+ func getContentEncryptionAlgorithm(header:NSDictionary) throws -> ContentEncryptionAlgorithm{
32
+ let enc = header["enc"] as! String
33
+ switch enc{
34
+ case "A128CBC-HS256":
35
+ return ContentEncryptionAlgorithm.A128CBCHS256
36
+ case "A256CBC-HS512":
37
+ return ContentEncryptionAlgorithm.A256CBCHS512
38
+ default:
39
+ throw HeaderError.invalidAlg("enc value not supported")
40
+ }
41
+ }
42
+
13
43
  @objc
14
44
  func verify(_ token: String, jwk: NSDictionary, resolver resolve: RCTPromiseResolveBlock, rejecter reject: RCTPromiseRejectBlock) {
15
45
  do {
@@ -152,5 +182,38 @@ class IoReactNativeJwt: NSObject {
152
182
  }
153
183
  }
154
184
 
185
+ @objc
186
+ func enc(_ plaintext: String, header: NSDictionary, jwk: NSDictionary, resolver resolve: RCTPromiseResolveBlock, rejecter reject: RCTPromiseRejectBlock) {
187
+ do {
188
+ let publicKeyJson = try JSONSerialization.data(withJSONObject: jwk, options:[] )
189
+ let message = plaintext.data(using: .utf8)!
190
+
191
+ if let content = header as? [String:AnyObject] {
192
+ let jweHeader = try JWEHeader(parameters: content)
193
+ let payload = Payload(message)
155
194
 
195
+ if isECKey(jwk:jwk) {
196
+ reject("Error", "EC not supported", nil);
197
+ } else {
198
+ let rsaJwk = try RSAPublicKey(data: publicKeyJson)
199
+ let publicKey = try rsaJwk.converted(to: SecKey.self)
200
+ let encrypter = Encrypter(keyManagementAlgorithm: try getKeyManagmentAlg(header: header), contentEncryptionAlgorithm: try getContentEncryptionAlgorithm(header: header), encryptionKey: publicKey)!
201
+
202
+ let jwe = try JWE(header: jweHeader, payload: payload, encrypter: encrypter)
203
+
204
+ resolve(jwe.compactSerializedString)
205
+
206
+ }
207
+
208
+ } else {
209
+ reject("Error", "Header is invalid", nil);
210
+ }
211
+ }
212
+
213
+ catch {
214
+ reject("Error", "\(error)", error);
215
+ }
216
+
217
+
218
+ }
156
219
  }
@@ -4,16 +4,11 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  var _exportNames = {
7
- decode: true,
8
- isSignatureValid: true,
9
- verify: true,
10
- thumbprint: true,
11
7
  derToJose: true,
12
8
  encodeBase64: true,
13
9
  decodeBase64: true,
14
10
  sha256ToBase64: true
15
11
  };
16
- exports.decode = void 0;
17
12
  Object.defineProperty(exports, "decodeBase64", {
18
13
  enumerable: true,
19
14
  get: function () {
@@ -32,30 +27,49 @@ Object.defineProperty(exports, "encodeBase64", {
32
27
  return _base.encodeBase64;
33
28
  }
34
29
  });
35
- exports.isSignatureValid = void 0;
36
30
  Object.defineProperty(exports, "sha256ToBase64", {
37
31
  enumerable: true,
38
32
  get: function () {
39
33
  return _hash.sha256ToBase64;
40
34
  }
41
35
  });
42
- exports.verify = exports.thumbprint = void 0;
43
- var _jwt_claims_set = _interopRequireDefault(require("./jwt_claims_set"));
44
- var _errors = require("./utils/errors");
45
- var _proxy = require("./utils/proxy");
46
- var _sign = require("./sign");
47
- Object.keys(_sign).forEach(function (key) {
36
+ var _index = require("./jwe/index");
37
+ Object.keys(_index).forEach(function (key) {
48
38
  if (key === "default" || key === "__esModule") return;
49
39
  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
50
- if (key in exports && exports[key] === _sign[key]) return;
40
+ if (key in exports && exports[key] === _index[key]) return;
51
41
  Object.defineProperty(exports, key, {
52
42
  enumerable: true,
53
43
  get: function () {
54
- return _sign[key];
44
+ return _index[key];
45
+ }
46
+ });
47
+ });
48
+ var _index2 = require("./jwt/index");
49
+ Object.keys(_index2).forEach(function (key) {
50
+ if (key === "default" || key === "__esModule") return;
51
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
52
+ if (key in exports && exports[key] === _index2[key]) return;
53
+ Object.defineProperty(exports, key, {
54
+ enumerable: true,
55
+ get: function () {
56
+ return _index2[key];
57
+ }
58
+ });
59
+ });
60
+ var _index3 = require("./jwk/index");
61
+ Object.keys(_index3).forEach(function (key) {
62
+ if (key === "default" || key === "__esModule") return;
63
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
64
+ if (key in exports && exports[key] === _index3[key]) return;
65
+ Object.defineProperty(exports, key, {
66
+ enumerable: true,
67
+ get: function () {
68
+ return _index3[key];
55
69
  }
56
70
  });
57
71
  });
58
- var _produce = require("./produce");
72
+ var _produce = require("./jwt/produce");
59
73
  Object.keys(_produce).forEach(function (key) {
60
74
  if (key === "default" || key === "__esModule") return;
61
75
  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
@@ -67,7 +81,19 @@ Object.keys(_produce).forEach(function (key) {
67
81
  }
68
82
  });
69
83
  });
70
- var _unsecured = require("./unsecured");
84
+ var _sign = require("./jwt/sign");
85
+ Object.keys(_sign).forEach(function (key) {
86
+ if (key === "default" || key === "__esModule") return;
87
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
88
+ if (key in exports && exports[key] === _sign[key]) return;
89
+ Object.defineProperty(exports, key, {
90
+ enumerable: true,
91
+ get: function () {
92
+ return _sign[key];
93
+ }
94
+ });
95
+ });
96
+ var _unsecured = require("./jwt/unsecured");
71
97
  Object.keys(_unsecured).forEach(function (key) {
72
98
  if (key === "default" || key === "__esModule") return;
73
99
  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
@@ -82,113 +108,4 @@ Object.keys(_unsecured).forEach(function (key) {
82
108
  var _asn = require("./utils/asn1");
83
109
  var _base = require("./utils/base64");
84
110
  var _hash = require("./hash");
85
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
86
- /**
87
- * Decode the JWT without validation.
88
- *
89
- * @example Usage with a public JWK encoded RSA key
90
- *
91
- * ```js
92
- * const jwt =
93
- * 'eyJ0eXAiOiJlbnRpdHktc3RhdGVtZW50K2p3dCIsImtpZCI6IkVDIzEiLCJhbGciOiJFUzI1NiJ9.eyJpc3MiOiJodHRwczovL2lvLWQtd2FsbGV0LWl0LmF6dXJld2Vic2l0ZXMubmV0LyIsInN1YiI6Imh0dHBzOi8vaW8tZC13YWxsZXQtaXQuYXp1cmV3ZWJzaXRlcy5uZXQvIiwibWV0YWRhdGEiOnsiZXVkaV93YWxsZXRfcHJvdmlkZXIiOnsiandrcyI6W3siY3J2IjoiUC0yNTYiLCJrdHkiOiJFQyIsIngiOiJxckpyajNBZl9CNTdzYk9JUnJjQk03YnI3d09jOHluajdsSEZQVGVmZlVrIiwieSI6IjFIMGNXRHlHZ3ZVOHcta1BLVV94eWNPQ1VOVDJvMGJ3c2xJUXRuUFU2aU0iLCJraWQiOiJFQyMxIn1dLCJ0b2tlbl9lbmRwb2ludCI6Imh0dHBzOi8vaW8tZC13YWxsZXQtaXQuYXp1cmV3ZWJzaXRlcy5uZXQvdG9rZW4iLCJhc2NfdmFsdWVzX3N1cHBvcnRlZCI6WyJodHRwczovL2lvLWQtd2FsbGV0LWl0LmF6dXJld2Vic2l0ZXMubmV0L0xvQS9iYXNpYyIsImh0dHBzOi8vaW8tZC13YWxsZXQtaXQuYXp1cmV3ZWJzaXRlcy5uZXQvTG9BL21lZGl1bSIsImh0dHBzOi8vaW8tZC13YWxsZXQtaXQuYXp1cmV3ZWJzaXRlcy5uZXQvTG9BL2hpZ2h0Il0sImdyYW50X3R5cGVzX3N1cHBvcnRlZCI6WyJ1cm46aWV0ZjpwYXJhbXM6b2F1dGg6Y2xpZW50LWFzc2VydGlvbi10eXBlOmp3dC1rZXktYXR0ZXN0YXRpb24iXSwidG9rZW5fZW5kcG9pbnRfYXV0aF9tZXRob2RzX3N1cHBvcnRlZCI6WyJwcml2YXRlX2tleV9qd3QiXSwidG9rZW5fZW5kcG9pbnRfYXV0aF9zaWduaW5nX2FsZ192YWx1ZXNfc3VwcG9ydGVkIjpbIkVTMjU2IiwiRVMyNTZLIiwiRVMzODQiLCJFUzUxMiIsIlJTMjU2IiwiUlMzODQiLCJSUzUxMiIsIlBTMjU2IiwiUFMzODQiLCJQUzUxMiJdfSwiZmVkZXJhdGlvbl9lbnRpdHkiOnsib3JnYW5pemF0aW9uX25hbWUiOiJQYWdvUGEgUy5wLkEuIiwiaG9tZXBhZ2VfdXJpIjoiaHR0cHM6Ly9pby5pdGFsaWEuaXQvIiwicG9saWN5X3VyaSI6Imh0dHBzOi8vaW8uaXRhbGlhLml0L3ByaXZhY3ktcG9saWN5LyIsInRvc191cmkiOiJodHRwczovL2lvLml0YWxpYS5pdC9wcml2YWN5LXBvbGljeS8iLCJsb2dvX3VyaSI6Imh0dHBzOi8vaW8uaXRhbGlhLml0L2Fzc2V0cy9pbWcvaW8taXQtbG9nby13aGl0ZS5zdmcifX0sImlhdCI6MTY4OTIzNjYzNSwiZXhwIjoxNjg5MjQwMjM1fQ.6wA0M6rNYNSFN_EylzMA6ElAibW7FVSZyoLNEkHU5c_RKuiNenT08YIMvbysYautLZotUedEMP5xCyNpY34x6Q'
94
- *
95
- * const { payload, protectedHeader } = await decode(jwt)
96
- *
97
- * ```
98
- *
99
- * @param jwt JSON Web Token value (encoded as JWS).
100
- */
101
- const decode = token => _sign.SignJWT.decode(token);
102
-
103
- /**
104
- * Verifies the JWS signature
105
- *
106
- * @example Usage with a public JWK encoded RSA key
107
- *
108
- * ```js
109
- * const jwk = {
110
- * crv: 'P-256',
111
- * kty: 'EC',
112
- * x: 'qrJrj3Af_B57sbOIRrcBM7br7wOc8ynj7lHFPTeffUk',
113
- * y: '1H0cWDyGgvU8w-kPKU_xycOCUNT2o0bwslIQtnPU6iM',
114
- * }
115
- * const jwt =
116
- * 'eyJ0eXAiOiJlbnRpdHktc3RhdGVtZW50K2p3dCIsImtpZCI6IkVDIzEiLCJhbGciOiJFUzI1NiJ9.eyJpc3MiOiJodHRwczovL2lvLWQtd2FsbGV0LWl0LmF6dXJld2Vic2l0ZXMubmV0LyIsInN1YiI6Imh0dHBzOi8vaW8tZC13YWxsZXQtaXQuYXp1cmV3ZWJzaXRlcy5uZXQvIiwibWV0YWRhdGEiOnsiZXVkaV93YWxsZXRfcHJvdmlkZXIiOnsiandrcyI6W3siY3J2IjoiUC0yNTYiLCJrdHkiOiJFQyIsIngiOiJxckpyajNBZl9CNTdzYk9JUnJjQk03YnI3d09jOHluajdsSEZQVGVmZlVrIiwieSI6IjFIMGNXRHlHZ3ZVOHcta1BLVV94eWNPQ1VOVDJvMGJ3c2xJUXRuUFU2aU0iLCJraWQiOiJFQyMxIn1dLCJ0b2tlbl9lbmRwb2ludCI6Imh0dHBzOi8vaW8tZC13YWxsZXQtaXQuYXp1cmV3ZWJzaXRlcy5uZXQvdG9rZW4iLCJhc2NfdmFsdWVzX3N1cHBvcnRlZCI6WyJodHRwczovL2lvLWQtd2FsbGV0LWl0LmF6dXJld2Vic2l0ZXMubmV0L0xvQS9iYXNpYyIsImh0dHBzOi8vaW8tZC13YWxsZXQtaXQuYXp1cmV3ZWJzaXRlcy5uZXQvTG9BL21lZGl1bSIsImh0dHBzOi8vaW8tZC13YWxsZXQtaXQuYXp1cmV3ZWJzaXRlcy5uZXQvTG9BL2hpZ2h0Il0sImdyYW50X3R5cGVzX3N1cHBvcnRlZCI6WyJ1cm46aWV0ZjpwYXJhbXM6b2F1dGg6Y2xpZW50LWFzc2VydGlvbi10eXBlOmp3dC1rZXktYXR0ZXN0YXRpb24iXSwidG9rZW5fZW5kcG9pbnRfYXV0aF9tZXRob2RzX3N1cHBvcnRlZCI6WyJwcml2YXRlX2tleV9qd3QiXSwidG9rZW5fZW5kcG9pbnRfYXV0aF9zaWduaW5nX2FsZ192YWx1ZXNfc3VwcG9ydGVkIjpbIkVTMjU2IiwiRVMyNTZLIiwiRVMzODQiLCJFUzUxMiIsIlJTMjU2IiwiUlMzODQiLCJSUzUxMiIsIlBTMjU2IiwiUFMzODQiLCJQUzUxMiJdfSwiZmVkZXJhdGlvbl9lbnRpdHkiOnsib3JnYW5pemF0aW9uX25hbWUiOiJQYWdvUGEgUy5wLkEuIiwiaG9tZXBhZ2VfdXJpIjoiaHR0cHM6Ly9pby5pdGFsaWEuaXQvIiwicG9saWN5X3VyaSI6Imh0dHBzOi8vaW8uaXRhbGlhLml0L3ByaXZhY3ktcG9saWN5LyIsInRvc191cmkiOiJodHRwczovL2lvLml0YWxpYS5pdC9wcml2YWN5LXBvbGljeS8iLCJsb2dvX3VyaSI6Imh0dHBzOi8vaW8uaXRhbGlhLml0L2Fzc2V0cy9pbWcvaW8taXQtbG9nby13aGl0ZS5zdmcifX0sImlhdCI6MTY4OTIzNjYzNSwiZXhwIjoxNjg5MjQwMjM1fQ.6wA0M6rNYNSFN_EylzMA6ElAibW7FVSZyoLNEkHU5c_RKuiNenT08YIMvbysYautLZotUedEMP5xCyNpY34x6Q'
117
- *
118
- * const isSignatureValid = await verify(jwt, jwk)
119
- * ```
120
- *
121
- * @param jwt JSON Web Token value (encoded as JWS).
122
- * @param key Public key to verify the JWT in JWK format.
123
- */
124
- exports.decode = decode;
125
- const isSignatureValid = (token, jwk) => _proxy.IoReactNativeJwt.verify(token, jwk);
126
-
127
- /**
128
- * Verifies the JWT format (to be a JWS Compact format), verifies the JWS signature, validates the
129
- * JWT Claims Set.
130
- *
131
- * @example Usage with a public JWK encoded RSA key
132
- *
133
- * ```js
134
- * const jwk = {
135
- * crv: 'P-256',
136
- * kty: 'EC',
137
- * x: 'qrJrj3Af_B57sbOIRrcBM7br7wOc8ynj7lHFPTeffUk',
138
- * y: '1H0cWDyGgvU8w-kPKU_xycOCUNT2o0bwslIQtnPU6iM',
139
- * }
140
- * const jwt =
141
- * 'eyJ0eXAiOiJlbnRpdHktc3RhdGVtZW50K2p3dCIsImtpZCI6IkVDIzEiLCJhbGciOiJFUzI1NiJ9.eyJpc3MiOiJodHRwczovL2lvLWQtd2FsbGV0LWl0LmF6dXJld2Vic2l0ZXMubmV0LyIsInN1YiI6Imh0dHBzOi8vaW8tZC13YWxsZXQtaXQuYXp1cmV3ZWJzaXRlcy5uZXQvIiwibWV0YWRhdGEiOnsiZXVkaV93YWxsZXRfcHJvdmlkZXIiOnsiandrcyI6W3siY3J2IjoiUC0yNTYiLCJrdHkiOiJFQyIsIngiOiJxckpyajNBZl9CNTdzYk9JUnJjQk03YnI3d09jOHluajdsSEZQVGVmZlVrIiwieSI6IjFIMGNXRHlHZ3ZVOHcta1BLVV94eWNPQ1VOVDJvMGJ3c2xJUXRuUFU2aU0iLCJraWQiOiJFQyMxIn1dLCJ0b2tlbl9lbmRwb2ludCI6Imh0dHBzOi8vaW8tZC13YWxsZXQtaXQuYXp1cmV3ZWJzaXRlcy5uZXQvdG9rZW4iLCJhc2NfdmFsdWVzX3N1cHBvcnRlZCI6WyJodHRwczovL2lvLWQtd2FsbGV0LWl0LmF6dXJld2Vic2l0ZXMubmV0L0xvQS9iYXNpYyIsImh0dHBzOi8vaW8tZC13YWxsZXQtaXQuYXp1cmV3ZWJzaXRlcy5uZXQvTG9BL21lZGl1bSIsImh0dHBzOi8vaW8tZC13YWxsZXQtaXQuYXp1cmV3ZWJzaXRlcy5uZXQvTG9BL2hpZ2h0Il0sImdyYW50X3R5cGVzX3N1cHBvcnRlZCI6WyJ1cm46aWV0ZjpwYXJhbXM6b2F1dGg6Y2xpZW50LWFzc2VydGlvbi10eXBlOmp3dC1rZXktYXR0ZXN0YXRpb24iXSwidG9rZW5fZW5kcG9pbnRfYXV0aF9tZXRob2RzX3N1cHBvcnRlZCI6WyJwcml2YXRlX2tleV9qd3QiXSwidG9rZW5fZW5kcG9pbnRfYXV0aF9zaWduaW5nX2FsZ192YWx1ZXNfc3VwcG9ydGVkIjpbIkVTMjU2IiwiRVMyNTZLIiwiRVMzODQiLCJFUzUxMiIsIlJTMjU2IiwiUlMzODQiLCJSUzUxMiIsIlBTMjU2IiwiUFMzODQiLCJQUzUxMiJdfSwiZmVkZXJhdGlvbl9lbnRpdHkiOnsib3JnYW5pemF0aW9uX25hbWUiOiJQYWdvUGEgUy5wLkEuIiwiaG9tZXBhZ2VfdXJpIjoiaHR0cHM6Ly9pby5pdGFsaWEuaXQvIiwicG9saWN5X3VyaSI6Imh0dHBzOi8vaW8uaXRhbGlhLml0L3ByaXZhY3ktcG9saWN5LyIsInRvc191cmkiOiJodHRwczovL2lvLml0YWxpYS5pdC9wcml2YWN5LXBvbGljeS8iLCJsb2dvX3VyaSI6Imh0dHBzOi8vaW8uaXRhbGlhLml0L2Fzc2V0cy9pbWcvaW8taXQtbG9nby13aGl0ZS5zdmcifX0sImlhdCI6MTY4OTIzNjYzNSwiZXhwIjoxNjg5MjQwMjM1fQ.6wA0M6rNYNSFN_EylzMA6ElAibW7FVSZyoLNEkHU5c_RKuiNenT08YIMvbysYautLZotUedEMP5xCyNpY34x6Q'
142
- *
143
- * const { payload, protectedHeader } = await verify(jwt, jwk, {
144
- * typ: 'entity-statement+jwt',
145
- * requiredClaims: ['iss', 'sub', 'metadata'],
146
- * })
147
- * ```
148
- *
149
- * @param jwt JSON Web Token value (encoded as JWS).
150
- * @param key Public key to verify the JWT in JWK format.
151
- * @param options JWT Decryption and JWT Claims Set validation options.
152
- */
153
- exports.isSignatureValid = isSignatureValid;
154
- const verify = async function (token, jwk) {
155
- let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
156
- const {
157
- protectedHeader,
158
- payload
159
- } = await decode(token);
160
- const signatureIsValid = await isSignatureValid(token, jwk);
161
- if (signatureIsValid) {
162
- const verifiedPayload = (0, _jwt_claims_set.default)(protectedHeader, payload, options);
163
- return {
164
- payload: verifiedPayload,
165
- protectedHeader
166
- };
167
- } else {
168
- throw new _errors.JWSSignatureVerificationFailed();
169
- }
170
- };
171
-
172
- /**
173
- * Calculate JWK thumbprint
174
- *
175
- * @example Get JWK thumbprint
176
- *
177
- * ```js
178
- * const jwk: JWK = {
179
- * crv: 'P-256',
180
- * kty: 'EC',
181
- * x: 'qrJrj3Af_B57sbOIRrcBM7br7wOc8ynj7lHFPTeffUk',
182
- * y: '1H0cWDyGgvU8w-kPKU_xycOCUNT2o0bwslIQtnPU6iM',
183
- * };
184
-
185
- * const thumbprint = await thumbprint(jwk)
186
- *
187
- * ```
188
- *
189
- * @param jwk JSON Web Key
190
- */
191
- exports.verify = verify;
192
- const thumbprint = jwk => _proxy.IoReactNativeJwt.thumbprint(jwk);
193
- exports.thumbprint = thumbprint;
194
111
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_jwt_claims_set","_interopRequireDefault","require","_errors","_proxy","_sign","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_produce","_unsecured","_asn","_base","_hash","obj","__esModule","default","decode","token","SignJWT","isSignatureValid","jwk","IoReactNativeJwt","verify","options","arguments","length","undefined","protectedHeader","payload","signatureIsValid","verifiedPayload","jwtPayload","JWSSignatureVerificationFailed","thumbprint"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA,IAAAA,eAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AACA,IAAAE,MAAA,GAAAF,OAAA;AACA,IAAAG,KAAA,GAAAH,OAAA;AAGAI,MAAA,CAAAC,IAAA,CAAAF,KAAA,EAAAG,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAJ,KAAA,CAAAI,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAZ,KAAA,CAAAI,GAAA;IAAA;EAAA;AAAA;AADA,IAAAS,QAAA,GAAAhB,OAAA;AAAAI,MAAA,CAAAC,IAAA,CAAAW,QAAA,EAAAV,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAS,QAAA,CAAAT,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAC,QAAA,CAAAT,GAAA;IAAA;EAAA;AAAA;AAEA,IAAAU,UAAA,GAAAjB,OAAA;AAAAI,MAAA,CAAAC,IAAA,CAAAY,UAAA,EAAAX,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAU,UAAA,CAAAV,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAE,UAAA,CAAAV,GAAA;IAAA;EAAA;AAAA;AACA,IAAAW,IAAA,GAAAlB,OAAA;AACA,IAAAmB,KAAA,GAAAnB,OAAA;AACA,IAAAoB,KAAA,GAAApB,OAAA;AAAwC,SAAAD,uBAAAsB,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMG,MAAM,GAAIC,KAAa,IAAsBC,aAAO,CAACF,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;AApBAb,OAAA,CAAAY,MAAA,GAAAA,MAAA;AAqBO,MAAMG,gBAAgB,GAAGA,CAACF,KAAa,EAAEG,GAAQ,KACtDC,uBAAgB,CAACC,MAAM,CAACL,KAAK,EAAEG,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;AAzBAhB,OAAA,CAAAe,gBAAA,GAAAA,gBAAA;AA0BO,MAAMG,MAAM,GAAG,eAAAA,CACpBL,KAAa,EACbG,GAAQ,EAEqB;EAAA,IAD7BG,OAAoC,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;EAEzC,MAAM;IAAEG,eAAe;IAAEC;EAAQ,CAAC,GAAG,MAAMZ,MAAM,CAACC,KAAK,CAAC;EACxD,MAAMY,gBAAgB,GAAG,MAAMV,gBAAgB,CAACF,KAAK,EAAEG,GAAG,CAAC;EAE3D,IAAIS,gBAAgB,EAAE;IACpB,MAAMC,eAAe,GAAG,IAAAC,uBAAU,EAACJ,eAAe,EAAEC,OAAO,EAAEL,OAAO,CAAC;IACrE,OAAO;MAAEK,OAAO,EAAEE,eAAe;MAAEH;IAAgB,CAAC;EACtD,CAAC,MAAM;IACL,MAAM,IAAIK,sCAA8B,CAAC,CAAC;EAC5C;AACF,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAlBA5B,OAAA,CAAAkB,MAAA,GAAAA,MAAA;AAmBO,MAAMW,UAAU,GAAIb,GAAQ,IACjCC,uBAAgB,CAACY,UAAU,CAACb,GAAG,CAAC;AAAChB,OAAA,CAAA6B,UAAA,GAAAA,UAAA"}
1
+ {"version":3,"names":["_index","require","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_index2","_index3","_produce","_sign","_unsecured","_asn","_base","_hash"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.EncryptJwe = void 0;
7
+ var _proxy = require("../utils/proxy");
8
+ /**
9
+ * The EncryptJwe class is used to build and encrypt Flattened JWE objects.
10
+ *
11
+ * @example Usage
12
+ *
13
+ * ```js
14
+ * const jwe = await new EncryptJwe(
15
+ * new TextEncoder().encode('It’s a dangerous business, Frodo, going out your door.', { alg: 'RSA-OAEP-256', enc: 'A256GCM' }),
16
+ * )
17
+ * .encrypt(publicKey)
18
+ *
19
+ * console.log(jwe)
20
+ * ```
21
+ */
22
+ class EncryptJwe {
23
+ /** @param plaintext String representation of the plaintext to encrypt. */
24
+ /** @param header JWE header with alg and enc parameters. */
25
+ constructor(plaintext, header) {
26
+ this._plaintext = plaintext;
27
+ this._protectedHeader = header;
28
+ }
29
+
30
+ /**
31
+ * Encrypts and resolves the value of the Flattened JWE object.
32
+ *
33
+ * @param key Public Key or Secret to encrypt the JWE with. See
34
+ */
35
+ async encrypt(key) {
36
+ let jwe = await _proxy.IoReactNativeJwt.enc(this._plaintext, this._protectedHeader, key);
37
+ return jwe;
38
+ }
39
+ }
40
+ exports.EncryptJwe = EncryptJwe;
41
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_proxy","require","EncryptJwe","constructor","plaintext","header","_plaintext","_protectedHeader","encrypt","key","jwe","IoReactNativeJwt","enc","exports"],"sourceRoot":"../../../src","sources":["jwe/index.ts"],"mappings":";;;;;;AACA,IAAAA,MAAA,GAAAC,OAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,UAAU,CAAC;EAItB;EACA;EACAC,WAAWA,CACTC,SAAiB,EACjBC,MAA0D,EAC1D;IACA,IAAI,CAACC,UAAU,GAAGF,SAAS;IAC3B,IAAI,CAACG,gBAAgB,GAAGF,MAAM;EAChC;;EAEA;AACF;AACA;AACA;AACA;EACE,MAAMG,OAAOA,CAACC,GAAQ,EAAmB;IACvC,IAAIC,GAAG,GAAG,MAAMC,uBAAgB,CAACC,GAAG,CAClC,IAAI,CAACN,UAAU,EACf,IAAI,CAACC,gBAAgB,EACrBE,GACF,CAAC;IACD,OAAOC,GAAG;EACZ;AACF;AAACG,OAAA,CAAAX,UAAA,GAAAA,UAAA"}
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.thumbprint = void 0;
7
+ var _proxy = require("../utils/proxy");
8
+ /**
9
+ * Calculate JWK thumbprint
10
+ *
11
+ * @example Get JWK thumbprint
12
+ *
13
+ * ```js
14
+ * const jwk: JWK = {
15
+ * crv: 'P-256',
16
+ * kty: 'EC',
17
+ * x: 'qrJrj3Af_B57sbOIRrcBM7br7wOc8ynj7lHFPTeffUk',
18
+ * y: '1H0cWDyGgvU8w-kPKU_xycOCUNT2o0bwslIQtnPU6iM',
19
+ * };
20
+
21
+ * const thumbprint = await thumbprint(jwk)
22
+ *
23
+ * ```
24
+ *
25
+ * @param jwk JSON Web Key
26
+ */
27
+ const thumbprint = jwk => _proxy.IoReactNativeJwt.thumbprint(jwk);
28
+ exports.thumbprint = thumbprint;
29
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_proxy","require","thumbprint","jwk","IoReactNativeJwt","exports"],"sourceRoot":"../../../src","sources":["jwk/index.ts"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,UAAU,GAAIC,GAAQ,IACjCC,uBAAgB,CAACF,UAAU,CAACC,GAAG,CAAC;AAACE,OAAA,CAAAH,UAAA,GAAAA,UAAA"}
@@ -0,0 +1,171 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ var _exportNames = {
7
+ decode: true,
8
+ isSignatureValid: true,
9
+ verify: true,
10
+ derToJose: true,
11
+ encodeBase64: true,
12
+ decodeBase64: true,
13
+ sha256ToBase64: true
14
+ };
15
+ exports.decode = void 0;
16
+ Object.defineProperty(exports, "decodeBase64", {
17
+ enumerable: true,
18
+ get: function () {
19
+ return _base.decodeBase64;
20
+ }
21
+ });
22
+ Object.defineProperty(exports, "derToJose", {
23
+ enumerable: true,
24
+ get: function () {
25
+ return _asn.derToJose;
26
+ }
27
+ });
28
+ Object.defineProperty(exports, "encodeBase64", {
29
+ enumerable: true,
30
+ get: function () {
31
+ return _base.encodeBase64;
32
+ }
33
+ });
34
+ exports.isSignatureValid = void 0;
35
+ Object.defineProperty(exports, "sha256ToBase64", {
36
+ enumerable: true,
37
+ get: function () {
38
+ return _hash.sha256ToBase64;
39
+ }
40
+ });
41
+ exports.verify = void 0;
42
+ var _jwt_claims_set = _interopRequireDefault(require("./jwt_claims_set"));
43
+ var _errors = require("../utils/errors");
44
+ var _proxy = require("../utils/proxy");
45
+ var _sign = require("./sign");
46
+ Object.keys(_sign).forEach(function (key) {
47
+ if (key === "default" || key === "__esModule") return;
48
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
49
+ if (key in exports && exports[key] === _sign[key]) return;
50
+ Object.defineProperty(exports, key, {
51
+ enumerable: true,
52
+ get: function () {
53
+ return _sign[key];
54
+ }
55
+ });
56
+ });
57
+ var _produce = require("./produce");
58
+ Object.keys(_produce).forEach(function (key) {
59
+ if (key === "default" || key === "__esModule") return;
60
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
61
+ if (key in exports && exports[key] === _produce[key]) return;
62
+ Object.defineProperty(exports, key, {
63
+ enumerable: true,
64
+ get: function () {
65
+ return _produce[key];
66
+ }
67
+ });
68
+ });
69
+ var _unsecured = require("./unsecured");
70
+ Object.keys(_unsecured).forEach(function (key) {
71
+ if (key === "default" || key === "__esModule") return;
72
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
73
+ if (key in exports && exports[key] === _unsecured[key]) return;
74
+ Object.defineProperty(exports, key, {
75
+ enumerable: true,
76
+ get: function () {
77
+ return _unsecured[key];
78
+ }
79
+ });
80
+ });
81
+ var _asn = require("../utils/asn1");
82
+ var _base = require("../utils/base64");
83
+ var _hash = require("../hash");
84
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
85
+ /**
86
+ * Decode the JWT without validation.
87
+ *
88
+ * @example Usage with a public JWK encoded RSA key
89
+ *
90
+ * ```js
91
+ * const jwt =
92
+ * 'eyJ0eXAiOiJlbnRpdHktc3RhdGVtZW50K2p3dCIsImtpZCI6IkVDIzEiLCJhbGciOiJFUzI1NiJ9.eyJpc3MiOiJodHRwczovL2lvLWQtd2FsbGV0LWl0LmF6dXJld2Vic2l0ZXMubmV0LyIsInN1YiI6Imh0dHBzOi8vaW8tZC13YWxsZXQtaXQuYXp1cmV3ZWJzaXRlcy5uZXQvIiwibWV0YWRhdGEiOnsiZXVkaV93YWxsZXRfcHJvdmlkZXIiOnsiandrcyI6W3siY3J2IjoiUC0yNTYiLCJrdHkiOiJFQyIsIngiOiJxckpyajNBZl9CNTdzYk9JUnJjQk03YnI3d09jOHluajdsSEZQVGVmZlVrIiwieSI6IjFIMGNXRHlHZ3ZVOHcta1BLVV94eWNPQ1VOVDJvMGJ3c2xJUXRuUFU2aU0iLCJraWQiOiJFQyMxIn1dLCJ0b2tlbl9lbmRwb2ludCI6Imh0dHBzOi8vaW8tZC13YWxsZXQtaXQuYXp1cmV3ZWJzaXRlcy5uZXQvdG9rZW4iLCJhc2NfdmFsdWVzX3N1cHBvcnRlZCI6WyJodHRwczovL2lvLWQtd2FsbGV0LWl0LmF6dXJld2Vic2l0ZXMubmV0L0xvQS9iYXNpYyIsImh0dHBzOi8vaW8tZC13YWxsZXQtaXQuYXp1cmV3ZWJzaXRlcy5uZXQvTG9BL21lZGl1bSIsImh0dHBzOi8vaW8tZC13YWxsZXQtaXQuYXp1cmV3ZWJzaXRlcy5uZXQvTG9BL2hpZ2h0Il0sImdyYW50X3R5cGVzX3N1cHBvcnRlZCI6WyJ1cm46aWV0ZjpwYXJhbXM6b2F1dGg6Y2xpZW50LWFzc2VydGlvbi10eXBlOmp3dC1rZXktYXR0ZXN0YXRpb24iXSwidG9rZW5fZW5kcG9pbnRfYXV0aF9tZXRob2RzX3N1cHBvcnRlZCI6WyJwcml2YXRlX2tleV9qd3QiXSwidG9rZW5fZW5kcG9pbnRfYXV0aF9zaWduaW5nX2FsZ192YWx1ZXNfc3VwcG9ydGVkIjpbIkVTMjU2IiwiRVMyNTZLIiwiRVMzODQiLCJFUzUxMiIsIlJTMjU2IiwiUlMzODQiLCJSUzUxMiIsIlBTMjU2IiwiUFMzODQiLCJQUzUxMiJdfSwiZmVkZXJhdGlvbl9lbnRpdHkiOnsib3JnYW5pemF0aW9uX25hbWUiOiJQYWdvUGEgUy5wLkEuIiwiaG9tZXBhZ2VfdXJpIjoiaHR0cHM6Ly9pby5pdGFsaWEuaXQvIiwicG9saWN5X3VyaSI6Imh0dHBzOi8vaW8uaXRhbGlhLml0L3ByaXZhY3ktcG9saWN5LyIsInRvc191cmkiOiJodHRwczovL2lvLml0YWxpYS5pdC9wcml2YWN5LXBvbGljeS8iLCJsb2dvX3VyaSI6Imh0dHBzOi8vaW8uaXRhbGlhLml0L2Fzc2V0cy9pbWcvaW8taXQtbG9nby13aGl0ZS5zdmcifX0sImlhdCI6MTY4OTIzNjYzNSwiZXhwIjoxNjg5MjQwMjM1fQ.6wA0M6rNYNSFN_EylzMA6ElAibW7FVSZyoLNEkHU5c_RKuiNenT08YIMvbysYautLZotUedEMP5xCyNpY34x6Q'
93
+ *
94
+ * const { payload, protectedHeader } = await decode(jwt)
95
+ *
96
+ * ```
97
+ *
98
+ * @param jwt JSON Web Token value (encoded as JWS).
99
+ */
100
+ const decode = token => _sign.SignJWT.decode(token);
101
+
102
+ /**
103
+ * Verifies the JWS signature
104
+ *
105
+ * @example Usage with a public JWK encoded RSA key
106
+ *
107
+ * ```js
108
+ * const jwk = {
109
+ * crv: 'P-256',
110
+ * kty: 'EC',
111
+ * x: 'qrJrj3Af_B57sbOIRrcBM7br7wOc8ynj7lHFPTeffUk',
112
+ * y: '1H0cWDyGgvU8w-kPKU_xycOCUNT2o0bwslIQtnPU6iM',
113
+ * }
114
+ * const jwt =
115
+ * 'eyJ0eXAiOiJlbnRpdHktc3RhdGVtZW50K2p3dCIsImtpZCI6IkVDIzEiLCJhbGciOiJFUzI1NiJ9.eyJpc3MiOiJodHRwczovL2lvLWQtd2FsbGV0LWl0LmF6dXJld2Vic2l0ZXMubmV0LyIsInN1YiI6Imh0dHBzOi8vaW8tZC13YWxsZXQtaXQuYXp1cmV3ZWJzaXRlcy5uZXQvIiwibWV0YWRhdGEiOnsiZXVkaV93YWxsZXRfcHJvdmlkZXIiOnsiandrcyI6W3siY3J2IjoiUC0yNTYiLCJrdHkiOiJFQyIsIngiOiJxckpyajNBZl9CNTdzYk9JUnJjQk03YnI3d09jOHluajdsSEZQVGVmZlVrIiwieSI6IjFIMGNXRHlHZ3ZVOHcta1BLVV94eWNPQ1VOVDJvMGJ3c2xJUXRuUFU2aU0iLCJraWQiOiJFQyMxIn1dLCJ0b2tlbl9lbmRwb2ludCI6Imh0dHBzOi8vaW8tZC13YWxsZXQtaXQuYXp1cmV3ZWJzaXRlcy5uZXQvdG9rZW4iLCJhc2NfdmFsdWVzX3N1cHBvcnRlZCI6WyJodHRwczovL2lvLWQtd2FsbGV0LWl0LmF6dXJld2Vic2l0ZXMubmV0L0xvQS9iYXNpYyIsImh0dHBzOi8vaW8tZC13YWxsZXQtaXQuYXp1cmV3ZWJzaXRlcy5uZXQvTG9BL21lZGl1bSIsImh0dHBzOi8vaW8tZC13YWxsZXQtaXQuYXp1cmV3ZWJzaXRlcy5uZXQvTG9BL2hpZ2h0Il0sImdyYW50X3R5cGVzX3N1cHBvcnRlZCI6WyJ1cm46aWV0ZjpwYXJhbXM6b2F1dGg6Y2xpZW50LWFzc2VydGlvbi10eXBlOmp3dC1rZXktYXR0ZXN0YXRpb24iXSwidG9rZW5fZW5kcG9pbnRfYXV0aF9tZXRob2RzX3N1cHBvcnRlZCI6WyJwcml2YXRlX2tleV9qd3QiXSwidG9rZW5fZW5kcG9pbnRfYXV0aF9zaWduaW5nX2FsZ192YWx1ZXNfc3VwcG9ydGVkIjpbIkVTMjU2IiwiRVMyNTZLIiwiRVMzODQiLCJFUzUxMiIsIlJTMjU2IiwiUlMzODQiLCJSUzUxMiIsIlBTMjU2IiwiUFMzODQiLCJQUzUxMiJdfSwiZmVkZXJhdGlvbl9lbnRpdHkiOnsib3JnYW5pemF0aW9uX25hbWUiOiJQYWdvUGEgUy5wLkEuIiwiaG9tZXBhZ2VfdXJpIjoiaHR0cHM6Ly9pby5pdGFsaWEuaXQvIiwicG9saWN5X3VyaSI6Imh0dHBzOi8vaW8uaXRhbGlhLml0L3ByaXZhY3ktcG9saWN5LyIsInRvc191cmkiOiJodHRwczovL2lvLml0YWxpYS5pdC9wcml2YWN5LXBvbGljeS8iLCJsb2dvX3VyaSI6Imh0dHBzOi8vaW8uaXRhbGlhLml0L2Fzc2V0cy9pbWcvaW8taXQtbG9nby13aGl0ZS5zdmcifX0sImlhdCI6MTY4OTIzNjYzNSwiZXhwIjoxNjg5MjQwMjM1fQ.6wA0M6rNYNSFN_EylzMA6ElAibW7FVSZyoLNEkHU5c_RKuiNenT08YIMvbysYautLZotUedEMP5xCyNpY34x6Q'
116
+ *
117
+ * const isSignatureValid = await verify(jwt, jwk)
118
+ * ```
119
+ *
120
+ * @param jwt JSON Web Token value (encoded as JWS).
121
+ * @param key Public key to verify the JWT in JWK format.
122
+ */
123
+ exports.decode = decode;
124
+ const isSignatureValid = (token, jwk) => _proxy.IoReactNativeJwt.verify(token, jwk);
125
+
126
+ /**
127
+ * Verifies the JWT format (to be a JWS Compact format), verifies the JWS signature, validates the
128
+ * JWT Claims Set.
129
+ *
130
+ * @example Usage with a public JWK encoded RSA key
131
+ *
132
+ * ```js
133
+ * const jwk = {
134
+ * crv: 'P-256',
135
+ * kty: 'EC',
136
+ * x: 'qrJrj3Af_B57sbOIRrcBM7br7wOc8ynj7lHFPTeffUk',
137
+ * y: '1H0cWDyGgvU8w-kPKU_xycOCUNT2o0bwslIQtnPU6iM',
138
+ * }
139
+ * const jwt =
140
+ * 'eyJ0eXAiOiJlbnRpdHktc3RhdGVtZW50K2p3dCIsImtpZCI6IkVDIzEiLCJhbGciOiJFUzI1NiJ9.eyJpc3MiOiJodHRwczovL2lvLWQtd2FsbGV0LWl0LmF6dXJld2Vic2l0ZXMubmV0LyIsInN1YiI6Imh0dHBzOi8vaW8tZC13YWxsZXQtaXQuYXp1cmV3ZWJzaXRlcy5uZXQvIiwibWV0YWRhdGEiOnsiZXVkaV93YWxsZXRfcHJvdmlkZXIiOnsiandrcyI6W3siY3J2IjoiUC0yNTYiLCJrdHkiOiJFQyIsIngiOiJxckpyajNBZl9CNTdzYk9JUnJjQk03YnI3d09jOHluajdsSEZQVGVmZlVrIiwieSI6IjFIMGNXRHlHZ3ZVOHcta1BLVV94eWNPQ1VOVDJvMGJ3c2xJUXRuUFU2aU0iLCJraWQiOiJFQyMxIn1dLCJ0b2tlbl9lbmRwb2ludCI6Imh0dHBzOi8vaW8tZC13YWxsZXQtaXQuYXp1cmV3ZWJzaXRlcy5uZXQvdG9rZW4iLCJhc2NfdmFsdWVzX3N1cHBvcnRlZCI6WyJodHRwczovL2lvLWQtd2FsbGV0LWl0LmF6dXJld2Vic2l0ZXMubmV0L0xvQS9iYXNpYyIsImh0dHBzOi8vaW8tZC13YWxsZXQtaXQuYXp1cmV3ZWJzaXRlcy5uZXQvTG9BL21lZGl1bSIsImh0dHBzOi8vaW8tZC13YWxsZXQtaXQuYXp1cmV3ZWJzaXRlcy5uZXQvTG9BL2hpZ2h0Il0sImdyYW50X3R5cGVzX3N1cHBvcnRlZCI6WyJ1cm46aWV0ZjpwYXJhbXM6b2F1dGg6Y2xpZW50LWFzc2VydGlvbi10eXBlOmp3dC1rZXktYXR0ZXN0YXRpb24iXSwidG9rZW5fZW5kcG9pbnRfYXV0aF9tZXRob2RzX3N1cHBvcnRlZCI6WyJwcml2YXRlX2tleV9qd3QiXSwidG9rZW5fZW5kcG9pbnRfYXV0aF9zaWduaW5nX2FsZ192YWx1ZXNfc3VwcG9ydGVkIjpbIkVTMjU2IiwiRVMyNTZLIiwiRVMzODQiLCJFUzUxMiIsIlJTMjU2IiwiUlMzODQiLCJSUzUxMiIsIlBTMjU2IiwiUFMzODQiLCJQUzUxMiJdfSwiZmVkZXJhdGlvbl9lbnRpdHkiOnsib3JnYW5pemF0aW9uX25hbWUiOiJQYWdvUGEgUy5wLkEuIiwiaG9tZXBhZ2VfdXJpIjoiaHR0cHM6Ly9pby5pdGFsaWEuaXQvIiwicG9saWN5X3VyaSI6Imh0dHBzOi8vaW8uaXRhbGlhLml0L3ByaXZhY3ktcG9saWN5LyIsInRvc191cmkiOiJodHRwczovL2lvLml0YWxpYS5pdC9wcml2YWN5LXBvbGljeS8iLCJsb2dvX3VyaSI6Imh0dHBzOi8vaW8uaXRhbGlhLml0L2Fzc2V0cy9pbWcvaW8taXQtbG9nby13aGl0ZS5zdmcifX0sImlhdCI6MTY4OTIzNjYzNSwiZXhwIjoxNjg5MjQwMjM1fQ.6wA0M6rNYNSFN_EylzMA6ElAibW7FVSZyoLNEkHU5c_RKuiNenT08YIMvbysYautLZotUedEMP5xCyNpY34x6Q'
141
+ *
142
+ * const { payload, protectedHeader } = await verify(jwt, jwk, {
143
+ * typ: 'entity-statement+jwt',
144
+ * requiredClaims: ['iss', 'sub', 'metadata'],
145
+ * })
146
+ * ```
147
+ *
148
+ * @param jwt JSON Web Token value (encoded as JWS).
149
+ * @param key Public key to verify the JWT in JWK format.
150
+ * @param options JWT Decryption and JWT Claims Set validation options.
151
+ */
152
+ exports.isSignatureValid = isSignatureValid;
153
+ const verify = async function (token, jwk) {
154
+ let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
155
+ const {
156
+ protectedHeader,
157
+ payload
158
+ } = await decode(token);
159
+ const signatureIsValid = await isSignatureValid(token, jwk);
160
+ if (signatureIsValid) {
161
+ const verifiedPayload = (0, _jwt_claims_set.default)(protectedHeader, payload, options);
162
+ return {
163
+ payload: verifiedPayload,
164
+ protectedHeader
165
+ };
166
+ } else {
167
+ throw new _errors.JWSSignatureVerificationFailed();
168
+ }
169
+ };
170
+ exports.verify = verify;
171
+ //# sourceMappingURL=index.js.map