@pagopa/io-react-native-jwt 1.5.0 → 2.0.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.
@@ -1,5 +1,6 @@
1
1
  import JOSESwift
2
2
  import CommonCrypto
3
+ import Foundation
3
4
 
4
5
 
5
6
  @objc(IoReactNativeJwt)
@@ -23,6 +24,8 @@ class IoReactNativeJwt: NSObject {
23
24
  return KeyManagementAlgorithm.RSAOAEP
24
25
  case "RSA-OAEP-256":
25
26
  return KeyManagementAlgorithm.RSAOAEP256
27
+ case "ECDH-ES":
28
+ return KeyManagementAlgorithm.ECDH_ES
26
29
  default:
27
30
  throw HeaderError.invalidAlg("alg value not supported")
28
31
  }
@@ -52,11 +55,11 @@ class IoReactNativeJwt: NSObject {
52
55
  if isECKey(jwk:jwk) {
53
56
  let ecJwk = try ECPublicKey(data: publicKeyJson)
54
57
  let publicKey = try ecJwk.converted(to: SecKey.self)
55
- verifier = Verifier(verifyingAlgorithm: jws.header.algorithm!, key: publicKey)!
58
+ verifier = Verifier(signatureAlgorithm: jws.header.algorithm!, key: publicKey)!
56
59
  } else {
57
60
  let rsaJwk = try RSAPublicKey(data: publicKeyJson)
58
61
  let publicKey = try rsaJwk.converted(to: SecKey.self)
59
- verifier = Verifier(verifyingAlgorithm: jws.header.algorithm!, key: publicKey)!
62
+ verifier = Verifier(signatureAlgorithm: jws.header.algorithm!, key: publicKey)!
60
63
  }
61
64
  _ = try jws.validate(using: verifier!)
62
65
  resolve(true)
@@ -193,12 +196,17 @@ class IoReactNativeJwt: NSObject {
193
196
  let payload = Payload(message)
194
197
 
195
198
  if isECKey(jwk:jwk) {
196
- reject("Error", "EC not supported", nil);
199
+ // --- ECDH-ES / EC Key ---
200
+ let ecPublicKey = try ECPublicKey(data: publicKeyJson)
201
+ let encrypter = Encrypter(keyManagementAlgorithm: try getKeyManagmentAlg(header: header), contentEncryptionAlgorithm: try getContentEncryptionAlgorithm(header: header), encryptionKey: ecPublicKey)!
202
+
203
+ let jwe = try JWE(header: jweHeader, payload: payload, encrypter: encrypter)
204
+
205
+ resolve(jwe.compactSerializedString)
197
206
  } else {
198
207
  let rsaJwk = try RSAPublicKey(data: publicKeyJson)
199
208
  let publicKey = try rsaJwk.converted(to: SecKey.self)
200
209
  let encrypter = Encrypter(keyManagementAlgorithm: try getKeyManagmentAlg(header: header), contentEncryptionAlgorithm: try getContentEncryptionAlgorithm(header: header), encryptionKey: publicKey)!
201
-
202
210
  let jwe = try JWE(header: jweHeader, payload: payload, encrypter: encrypter)
203
211
 
204
212
  resolve(jwe.compactSerializedString)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pagopa/io-react-native-jwt",
3
- "version": "1.5.0",
3
+ "version": "2.0.0",
4
4
  "description": "Native support for JWT",
5
5
  "source": "src/index",
6
6
  "main": "lib/commonjs/index",
@@ -17,7 +17,7 @@ Pod::Spec.new do |s|
17
17
  s.source_files = "ios/**/*.{h,m,mm,swift}"
18
18
 
19
19
  #JOSESwift dependency
20
- s.dependency "JOSESwift", "~> 2.3"
20
+ s.dependency "JOSESwift", "~> 3.0"
21
21
 
22
22
  # Use install_modules_dependencies helper to install the dependencies if React Native version >=0.71.0.
23
23
  # See https://github.com/facebook/react-native/blob/febf6b7f33fdb4904669f99d795eba4c0f95d7bf/scripts/cocoapods/new_architecture.rb#L79.