@appzung/react-native-code-push 9.0.2 → 10.0.0-rc1

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 (191) hide show
  1. package/CodePush.js +22 -19
  2. package/LICENSE.md +1 -1
  3. package/README.md +159 -298
  4. package/android/app/.gradle/config.properties +2 -0
  5. package/android/app/build.gradle +1 -1
  6. package/android/app/local.properties +8 -0
  7. package/android/app/src/main/java/com/microsoft/codepush/react/CodePush.java +27 -21
  8. package/android/app/src/main/java/com/microsoft/codepush/react/CodePushBuilder.java +5 -5
  9. package/android/app/src/main/java/com/microsoft/codepush/react/CodePushConstants.java +1 -1
  10. package/android/app/src/main/java/com/microsoft/codepush/react/CodePushDialog.java +1 -1
  11. package/android/app/src/main/java/com/microsoft/codepush/react/CodePushInstallMode.java +2 -2
  12. package/android/app/src/main/java/com/microsoft/codepush/react/CodePushInvalidPublicKeyException.java +2 -2
  13. package/android/app/src/main/java/com/microsoft/codepush/react/CodePushInvalidUpdateException.java +1 -1
  14. package/android/app/src/main/java/com/microsoft/codepush/react/CodePushMalformedDataException.java +2 -2
  15. package/android/app/src/main/java/com/microsoft/codepush/react/CodePushNativeModule.java +5 -5
  16. package/android/app/src/main/java/com/microsoft/codepush/react/CodePushNotInitializedException.java +2 -2
  17. package/android/app/src/main/java/com/microsoft/codepush/react/CodePushTelemetryManager.java +14 -14
  18. package/android/app/src/main/java/com/microsoft/codepush/react/CodePushUnknownException.java +2 -2
  19. package/android/app/src/main/java/com/microsoft/codepush/react/CodePushUpdateManager.java +1 -1
  20. package/android/app/src/main/java/com/microsoft/codepush/react/CodePushUpdateState.java +2 -2
  21. package/android/app/src/main/java/com/microsoft/codepush/react/CodePushUpdateUtils.java +1 -1
  22. package/android/app/src/main/java/com/microsoft/codepush/react/CodePushUtils.java +1 -1
  23. package/android/app/src/main/java/com/microsoft/codepush/react/DownloadProgress.java +1 -1
  24. package/android/app/src/main/java/com/microsoft/codepush/react/DownloadProgressCallback.java +1 -1
  25. package/android/app/src/main/java/com/microsoft/codepush/react/FileUtils.java +1 -1
  26. package/android/app/src/main/java/com/microsoft/codepush/react/ReactInstanceHolder.java +1 -1
  27. package/android/app/src/main/java/com/microsoft/codepush/react/SettingsManager.java +1 -1
  28. package/android/app/src/main/java/com/microsoft/codepush/react/TLSSocketFactory.java +1 -1
  29. package/android/build.gradle +1 -1
  30. package/android/codepush.gradle +3 -3
  31. package/docs/advanced-usage.md +56 -0
  32. package/docs/api-android.md +12 -75
  33. package/docs/api-ios.md +5 -17
  34. package/docs/api-js.md +18 -55
  35. package/docs/setup-android.md +15 -397
  36. package/docs/setup-ios.md +24 -198
  37. package/docs/setup-windows.md +7 -74
  38. package/ios/CodePush/CodePush.h +4 -4
  39. package/ios/CodePush/CodePush.m +8 -8
  40. package/ios/CodePush/CodePushConfig.m +14 -11
  41. package/ios/CodePush/CodePushPackage.m +60 -60
  42. package/ios/CodePush/CodePushTelemetryManager.m +13 -13
  43. package/ios/CodePush.xcodeproj/project.pbxproj +1 -562
  44. package/package.json +27 -24
  45. package/react-native.config.js +1 -1
  46. package/scripts/generateBundledResourcesHash.js +1 -1
  47. package/scripts/getFilesInFolder.js +1 -1
  48. package/scripts/recordFilesBeforeBundleCommand.js +1 -1
  49. package/typings/react-native-code-push.d.ts +22 -22
  50. package/windows/CodePush/CodePushConfig.cpp +3 -3
  51. package/windows/CodePush/CodePushConfig.h +3 -3
  52. package/windows/CodePush/CodePushNativeModule.cpp +27 -27
  53. package/windows/CodePush/CodePushNativeModule.h +4 -4
  54. package/windows/CodePush/CodePushTelemetryManager.cpp +12 -12
  55. package/windows/CodePush/CodePushTelemetryManager.h +1 -1
  56. package/.azurepipelines/build-rn-code-push-1es.yml +0 -104
  57. package/.azurepipelines/test-rn-code-push.yml +0 -94
  58. package/.config/CredScanSuppressions.json +0 -14
  59. package/SECURITY.md +0 -41
  60. package/docs/multi-deployment-testing-android.md +0 -148
  61. package/docs/multi-deployment-testing-ios.md +0 -59
  62. package/ios/CodePush/Base64/Base64/MF_Base64Additions.h +0 -34
  63. package/ios/CodePush/Base64/Base64/MF_Base64Additions.m +0 -252
  64. package/ios/CodePush/Base64/README.md +0 -47
  65. package/ios/CodePush/JWT/Core/Algorithms/Base/JWTAlgorithm.h +0 -69
  66. package/ios/CodePush/JWT/Core/Algorithms/Base/JWTAlgorithmFactory.h +0 -16
  67. package/ios/CodePush/JWT/Core/Algorithms/Base/JWTAlgorithmFactory.m +0 -51
  68. package/ios/CodePush/JWT/Core/Algorithms/Base/JWTAlgorithmNone.h +0 -15
  69. package/ios/CodePush/JWT/Core/Algorithms/Base/JWTAlgorithmNone.m +0 -55
  70. package/ios/CodePush/JWT/Core/Algorithms/ESFamily/JWTAlgorithmESBase.h +0 -24
  71. package/ios/CodePush/JWT/Core/Algorithms/ESFamily/JWTAlgorithmESBase.m +0 -41
  72. package/ios/CodePush/JWT/Core/Algorithms/HSFamily/JWTAlgorithmHSBase.h +0 -28
  73. package/ios/CodePush/JWT/Core/Algorithms/HSFamily/JWTAlgorithmHSBase.m +0 -205
  74. package/ios/CodePush/JWT/Core/Algorithms/Holders/JWTAlgorithmDataHolder.h +0 -103
  75. package/ios/CodePush/JWT/Core/Algorithms/Holders/JWTAlgorithmDataHolder.m +0 -322
  76. package/ios/CodePush/JWT/Core/Algorithms/Holders/JWTAlgorithmDataHolderChain.h +0 -37
  77. package/ios/CodePush/JWT/Core/Algorithms/Holders/JWTAlgorithmDataHolderChain.m +0 -145
  78. package/ios/CodePush/JWT/Core/Algorithms/RSFamily/JWTAlgorithmRSBase.h +0 -35
  79. package/ios/CodePush/JWT/Core/Algorithms/RSFamily/JWTAlgorithmRSBase.m +0 -551
  80. package/ios/CodePush/JWT/Core/Algorithms/RSFamily/JWTRSAlgorithm.h +0 -23
  81. package/ios/CodePush/JWT/Core/Algorithms/RSFamily/RSKeys/JWTCryptoKey.h +0 -43
  82. package/ios/CodePush/JWT/Core/Algorithms/RSFamily/RSKeys/JWTCryptoKey.m +0 -230
  83. package/ios/CodePush/JWT/Core/Algorithms/RSFamily/RSKeys/JWTCryptoKeyExtractor.h +0 -31
  84. package/ios/CodePush/JWT/Core/Algorithms/RSFamily/RSKeys/JWTCryptoKeyExtractor.m +0 -113
  85. package/ios/CodePush/JWT/Core/Algorithms/RSFamily/RSKeys/JWTCryptoSecurity.h +0 -38
  86. package/ios/CodePush/JWT/Core/Algorithms/RSFamily/RSKeys/JWTCryptoSecurity.m +0 -500
  87. package/ios/CodePush/JWT/Core/ClaimSet/JWTClaim.h +0 -18
  88. package/ios/CodePush/JWT/Core/ClaimSet/JWTClaim.m +0 -214
  89. package/ios/CodePush/JWT/Core/ClaimSet/JWTClaimsSet.h +0 -23
  90. package/ios/CodePush/JWT/Core/ClaimSet/JWTClaimsSet.m +0 -29
  91. package/ios/CodePush/JWT/Core/ClaimSet/JWTClaimsSetSerializer.h +0 -19
  92. package/ios/CodePush/JWT/Core/ClaimSet/JWTClaimsSetSerializer.m +0 -68
  93. package/ios/CodePush/JWT/Core/ClaimSet/JWTClaimsSetVerifier.h +0 -18
  94. package/ios/CodePush/JWT/Core/ClaimSet/JWTClaimsSetVerifier.m +0 -72
  95. package/ios/CodePush/JWT/Core/Coding/JWTCoding+ResultTypes.h +0 -67
  96. package/ios/CodePush/JWT/Core/Coding/JWTCoding+ResultTypes.m +0 -111
  97. package/ios/CodePush/JWT/Core/Coding/JWTCoding+VersionOne.h +0 -119
  98. package/ios/CodePush/JWT/Core/Coding/JWTCoding+VersionOne.m +0 -307
  99. package/ios/CodePush/JWT/Core/Coding/JWTCoding+VersionThree.h +0 -94
  100. package/ios/CodePush/JWT/Core/Coding/JWTCoding+VersionThree.m +0 -619
  101. package/ios/CodePush/JWT/Core/Coding/JWTCoding+VersionTwo.h +0 -164
  102. package/ios/CodePush/JWT/Core/Coding/JWTCoding+VersionTwo.m +0 -514
  103. package/ios/CodePush/JWT/Core/Coding/JWTCoding.h +0 -24
  104. package/ios/CodePush/JWT/Core/Coding/JWTCoding.m +0 -11
  105. package/ios/CodePush/JWT/Core/FrameworkSupplement/JWT.h +0 -52
  106. package/ios/CodePush/JWT/Core/FrameworkSupplement/Map.modulemap +0 -5
  107. package/ios/CodePush/JWT/Core/Supplement/JWTBase64Coder.h +0 -28
  108. package/ios/CodePush/JWT/Core/Supplement/JWTBase64Coder.m +0 -70
  109. package/ios/CodePush/JWT/Core/Supplement/JWTDeprecations.h +0 -22
  110. package/ios/CodePush/JWT/Core/Supplement/JWTErrorDescription.h +0 -34
  111. package/ios/CodePush/JWT/Core/Supplement/JWTErrorDescription.m +0 -73
  112. package/ios/CodePush/JWT/LICENSE +0 -19
  113. package/ios/CodePush/JWT/README.md +0 -489
  114. package/ios/CodePush/SSZipArchive/Info.plist +0 -26
  115. package/ios/CodePush/SSZipArchive/README.md +0 -1
  116. package/ios/CodePush/SSZipArchive/SSZipArchive.h +0 -178
  117. package/ios/CodePush/SSZipArchive/SSZipArchive.m +0 -1496
  118. package/ios/CodePush/SSZipArchive/SSZipCommon.h +0 -71
  119. package/ios/CodePush/SSZipArchive/Supporting Files/PrivacyInfo.xcprivacy +0 -23
  120. package/ios/CodePush/SSZipArchive/include/ZipArchive.h +0 -25
  121. package/ios/CodePush/SSZipArchive/minizip/LICENSE +0 -17
  122. package/ios/CodePush/SSZipArchive/minizip/mz.h +0 -273
  123. package/ios/CodePush/SSZipArchive/minizip/mz_compat.c +0 -1306
  124. package/ios/CodePush/SSZipArchive/minizip/mz_compat.h +0 -346
  125. package/ios/CodePush/SSZipArchive/minizip/mz_crypt.c +0 -187
  126. package/ios/CodePush/SSZipArchive/minizip/mz_crypt.h +0 -65
  127. package/ios/CodePush/SSZipArchive/minizip/mz_crypt_apple.c +0 -526
  128. package/ios/CodePush/SSZipArchive/minizip/mz_os.c +0 -348
  129. package/ios/CodePush/SSZipArchive/minizip/mz_os.h +0 -176
  130. package/ios/CodePush/SSZipArchive/minizip/mz_os_posix.c +0 -350
  131. package/ios/CodePush/SSZipArchive/minizip/mz_strm.c +0 -556
  132. package/ios/CodePush/SSZipArchive/minizip/mz_strm.h +0 -132
  133. package/ios/CodePush/SSZipArchive/minizip/mz_strm_buf.c +0 -383
  134. package/ios/CodePush/SSZipArchive/minizip/mz_strm_buf.h +0 -42
  135. package/ios/CodePush/SSZipArchive/minizip/mz_strm_mem.c +0 -269
  136. package/ios/CodePush/SSZipArchive/minizip/mz_strm_mem.h +0 -48
  137. package/ios/CodePush/SSZipArchive/minizip/mz_strm_os.h +0 -40
  138. package/ios/CodePush/SSZipArchive/minizip/mz_strm_os_posix.c +0 -203
  139. package/ios/CodePush/SSZipArchive/minizip/mz_strm_pkcrypt.c +0 -334
  140. package/ios/CodePush/SSZipArchive/minizip/mz_strm_pkcrypt.h +0 -46
  141. package/ios/CodePush/SSZipArchive/minizip/mz_strm_split.c +0 -429
  142. package/ios/CodePush/SSZipArchive/minizip/mz_strm_split.h +0 -43
  143. package/ios/CodePush/SSZipArchive/minizip/mz_strm_wzaes.c +0 -360
  144. package/ios/CodePush/SSZipArchive/minizip/mz_strm_wzaes.h +0 -46
  145. package/ios/CodePush/SSZipArchive/minizip/mz_strm_zlib.c +0 -389
  146. package/ios/CodePush/SSZipArchive/minizip/mz_strm_zlib.h +0 -43
  147. package/ios/CodePush/SSZipArchive/minizip/mz_zip.c +0 -2782
  148. package/ios/CodePush/SSZipArchive/minizip/mz_zip.h +0 -262
  149. package/ios/CodePush/SSZipArchive/minizip/mz_zip_rw.c +0 -1942
  150. package/ios/CodePush/SSZipArchive/minizip/mz_zip_rw.h +0 -285
  151. package/scripts/postlink/android/postlink.js +0 -87
  152. package/scripts/postlink/ios/postlink.js +0 -116
  153. package/scripts/postlink/run.js +0 -11
  154. package/scripts/postunlink/android/postunlink.js +0 -74
  155. package/scripts/postunlink/ios/postunlink.js +0 -87
  156. package/scripts/postunlink/run.js +0 -11
  157. package/scripts/tools/linkToolsAndroid.js +0 -57
  158. package/scripts/tools/linkToolsIos.js +0 -130
  159. package/windows-legacy/CodePush/CodePush.csproj +0 -128
  160. package/windows-legacy/CodePush/CodePushUtils.cs +0 -47
  161. package/windows-legacy/CodePush/FileUtils.cs +0 -40
  162. package/windows-legacy/CodePush/Properties/AssemblyInfo.cs +0 -29
  163. package/windows-legacy/CodePush/Properties/CodePush.rd.xml +0 -33
  164. package/windows-legacy/CodePush/UpdateManager.cs +0 -305
  165. package/windows-legacy/CodePush/UpdateUtils.cs +0 -46
  166. package/windows-legacy/CodePush.Net46/Adapters/Http/HttpProgress.cs +0 -28
  167. package/windows-legacy/CodePush.Net46/Adapters/Storage/ApplicationDataContainer.cs +0 -106
  168. package/windows-legacy/CodePush.Net46/CodePush.Net46.csproj +0 -103
  169. package/windows-legacy/CodePush.Net46/CodePushUtils.cs +0 -158
  170. package/windows-legacy/CodePush.Net46/FileUtils.cs +0 -55
  171. package/windows-legacy/CodePush.Net46/Properties/AssemblyInfo.cs +0 -36
  172. package/windows-legacy/CodePush.Net46/UpdateManager.cs +0 -330
  173. package/windows-legacy/CodePush.Net46/UpdateUtils.cs +0 -70
  174. package/windows-legacy/CodePush.Net46/packages.config +0 -5
  175. package/windows-legacy/CodePush.Net46.Test/ApplicationDataContainerTest.cs +0 -105
  176. package/windows-legacy/CodePush.Net46.Test/CodePush.Net46.Test.csproj +0 -137
  177. package/windows-legacy/CodePush.Net46.Test/Properties/AssemblyInfo.cs +0 -36
  178. package/windows-legacy/CodePush.Net46.Test/TelemetryManagerTest.cs +0 -117
  179. package/windows-legacy/CodePush.Net46.Test/app.config +0 -11
  180. package/windows-legacy/CodePush.Net46.Test/packages.config +0 -4
  181. package/windows-legacy/CodePush.Shared/CodePush.Shared.projitems +0 -22
  182. package/windows-legacy/CodePush.Shared/CodePush.Shared.shproj +0 -13
  183. package/windows-legacy/CodePush.Shared/CodePushConstants.cs +0 -35
  184. package/windows-legacy/CodePush.Shared/CodePushNativeModule.cs +0 -329
  185. package/windows-legacy/CodePush.Shared/CodePushReactPackage.cs +0 -235
  186. package/windows-legacy/CodePush.Shared/CodePushUtils.cs +0 -70
  187. package/windows-legacy/CodePush.Shared/InstallMode.cs +0 -9
  188. package/windows-legacy/CodePush.Shared/MinimumBackgroundListener.cs +0 -44
  189. package/windows-legacy/CodePush.Shared/SettingsManager.cs +0 -148
  190. package/windows-legacy/CodePush.Shared/TelemetryManager.cs +0 -250
  191. package/windows-legacy/CodePush.Shared/UpdateState.cs +0 -9
@@ -1,119 +0,0 @@
1
- //
2
- // JWTCoding+VersionOne.h
3
- // JWT
4
- //
5
- // Created by Lobanov Dmitry on 27.11.16.
6
- // Copyright © 2016 JWTIO. All rights reserved.
7
- //
8
-
9
- #import <JWTCoding.h>
10
-
11
- @protocol JWTAlgorithm;
12
- @class JWTClaimsSet;
13
-
14
- @interface JWT (VersionOne)
15
- #pragma mark - Encode
16
- + (NSString *)encodeClaimsSet:(JWTClaimsSet *)theClaimsSet withSecret:(NSString *)theSecret;
17
- + (NSString *)encodeClaimsSet:(JWTClaimsSet *)theClaimsSet withSecret:(NSString *)theSecret algorithm:(id<JWTAlgorithm>)theAlgorithm;
18
-
19
- + (NSString *)encodePayload:(NSDictionary *)thePayload withSecret:(NSString *)theSecret;
20
- + (NSString *)encodePayload:(NSDictionary *)thePayload withSecret:(NSString *)theSecret algorithm:(id<JWTAlgorithm>)theAlgorithm;
21
-
22
- + (NSString *)encodePayload:(NSDictionary *)thePayload withSecret:(NSString *)theSecret withHeaders:(NSDictionary *)theHeaders algorithm:(id<JWTAlgorithm>)theAlgorithm;
23
-
24
- + (NSString *)encodePayload:(NSDictionary *)thePayload withSecret:(NSString *)theSecret withHeaders:(NSDictionary *)theHeaders algorithm:(id<JWTAlgorithm>)theAlgorithm withError:(NSError * __autoreleasing *)theError;
25
-
26
- //Will be deprecated in later releases
27
- #pragma mark - Decode
28
-
29
- /**
30
- Decodes a JWT and returns the decoded Header and Payload
31
- @param theMessage The encoded JWT
32
- @param theSecret The verification key to use for validating the JWT signature
33
- @param theTrustedClaimsSet The JWTClaimsSet to use for verifying the JWT values
34
- @param theError Error pointer, if there is an error decoding the message, upon return contains an NSError object that describes the problem.
35
- @param theAlgorithmName The name of the algorithm to use for verifying the signature. Required, unless skipping verification
36
- @param theForcedOption BOOL indicating if verifying the JWT signature should be skipped. Should only be used for debugging
37
- @return A dictionary containing the header and payload dictionaries. Keyed to "header" and "payload", respectively. Or nil if an error occurs.
38
- */
39
- + (NSDictionary *)decodeMessage:(NSString *)theMessage withSecret:(NSString *)theSecret withTrustedClaimsSet:(JWTClaimsSet *)theTrustedClaimsSet withError:(NSError *__autoreleasing *)theError withForcedAlgorithmByName:(NSString *)theAlgorithmName withForcedOption:(BOOL)theForcedOption;
40
-
41
- /**
42
- Decodes a JWT and returns the decoded Header and Payload
43
- @param theMessage The encoded JWT
44
- @param theSecret The verification key to use for validating the JWT signature
45
- @param theTrustedClaimsSet The JWTClaimsSet to use for verifying the JWT values
46
- @param theError Error pointer, if there is an error decoding the message, upon return contains an NSError object that describes the problem.
47
- @param theAlgorithmName The name of the algorithm to use for verifying the signature. Required.
48
- @return A dictionary containing the header and payload dictionaries. Keyed to "header" and "payload", respectively. Or nil if an error occurs.
49
- */
50
- + (NSDictionary *)decodeMessage:(NSString *)theMessage withSecret:(NSString *)theSecret withTrustedClaimsSet:(JWTClaimsSet *)theTrustedClaimsSet withError:(NSError *__autoreleasing *)theError withForcedAlgorithmByName:(NSString *)theAlgorithmName;
51
-
52
- /**
53
- Decodes a JWT and returns the decoded Header and Payload.
54
-
55
- Uses the JWTAlgorithmHS512 for decoding
56
-
57
- @param theMessage The encoded JWT
58
- @param theSecret The verification key to use for validating the JWT signature
59
- @param theTrustedClaimsSet The JWTClaimsSet to use for verifying the JWT values
60
- @param theError Error pointer, if there is an error decoding the message, upon return contains an NSError object that describes the problem.
61
- @param theForcedOption BOOL indicating if verifying the JWT signature should be skipped. Should only be used for debugging
62
- @return A dictionary containing the header and payload dictionaries. Keyed to "header" and "payload", respectively. Or nil if an error occurs.
63
- */
64
- + (NSDictionary *)decodeMessage:(NSString *)theMessage withSecret:(NSString *)theSecret withTrustedClaimsSet:(JWTClaimsSet *)theTrustedClaimsSet withError:(NSError *__autoreleasing *)theError withForcedOption:(BOOL)theForcedOption;
65
-
66
- /**
67
- Decodes a JWT and returns the decoded Header and Payload
68
- @param theMessage The encoded JWT
69
- @param theSecret The verification key to use for validating the JWT signature
70
- @param theError Error pointer, if there is an error decoding the message, upon return contains an NSError object that describes the problem.
71
- @param theAlgorithmName The name of the algorithm to use for verifying the signature. Required, unless skipping verification
72
- @param skipVerification BOOL indicating if verifying the JWT signature should be skipped. Should only be used for debugging
73
- @return A dictionary containing the header and payload dictionaries. Keyed to "header" and "payload", respectively. Or nil if an error occurs.
74
- */
75
- + (NSDictionary *)decodeMessage:(NSString *)theMessage withSecret:(NSString *)theSecret withError:(NSError *__autoreleasing *)theError withForcedAlgorithmByName:(NSString *)theAlgorithmName skipVerification:(BOOL)skipVerification;
76
-
77
- /**
78
- Decodes a JWT and returns the decoded Header and Payload
79
- @param theMessage The encoded JWT
80
- @param theSecret The verification key to use for validating the JWT signature
81
- @param theError Error pointer, if there is an error decoding the message, upon return contains an NSError object that describes the problem.
82
- @param theAlgorithmName The name of the algorithm to use for verifying the signature. Required.
83
- @return A dictionary containing the header and payload dictionaries. Keyed to "header" and "payload", respectively. Or nil if an error occurs.
84
- */
85
- + (NSDictionary *)decodeMessage:(NSString *)theMessage withSecret:(NSString *)theSecret withError:(NSError *__autoreleasing *)theError withForcedAlgorithmByName:(NSString *)theAlgorithmName;
86
-
87
- /**
88
- Decodes a JWT and returns the decoded Header and Payload
89
-
90
- Uses the JWTAlgorithmHS512 for decoding
91
-
92
- @param theMessage The encoded JWT
93
- @param theSecret The verification key to use for validating the JWT signature
94
- @param theError Error pointer, if there is an error decoding the message, upon return contains an NSError object that describes the problem.
95
- @param theForcedOption BOOL indicating if verifying the JWT signature should be skipped.
96
- @return A dictionary containing the header and payload dictionaries. Keyed to "header" and "payload", respectively. Or nil if an error occurs.
97
- */
98
- + (NSDictionary *)decodeMessage:(NSString *)theMessage withSecret:(NSString *)theSecret withError:(NSError *__autoreleasing *)theError withForcedOption:(BOOL)theForcedOption;
99
-
100
- /**
101
- Decodes a JWT and returns the decoded Header and Payload.
102
- Uses the JWTAlgorithmHS512 for decoding
103
- @param theMessage The encoded JWT
104
- @param theSecret The verification key to use for validating the JWT signature
105
- @param theError Error pointer, if there is an error decoding the message, upon return contains an NSError object that describes the problem.
106
- @return A dictionary containing the header and payload dictionaries. Keyed to "header" and "payload", respectively. Or nil if an error occurs.
107
- */
108
- + (NSDictionary *)decodeMessage:(NSString *)theMessage withSecret:(NSString *)theSecret withError:(NSError * __autoreleasing *)theError;
109
-
110
- /**
111
- Decodes a JWT and returns the decoded Header and Payload.
112
- Uses the JWTAlgorithmHS512 for decoding
113
- @param theMessage The encoded JWT
114
- @param theSecret The verification key to use for validating the JWT signature
115
- @return A dictionary containing the header and payload dictionaries. Keyed to "header" and "payload", respectively. Or nil if an error occurs.
116
- */
117
- + (NSDictionary *)decodeMessage:(NSString *)theMessage withSecret:(NSString *)theSecret;
118
-
119
- @end
@@ -1,307 +0,0 @@
1
- //
2
- // JWTCoding+VersionOne.m
3
- // JWT
4
- //
5
- // Created by Lobanov Dmitry on 27.11.16.
6
- // Copyright © 2016 JWTIO. All rights reserved.
7
- //
8
-
9
- #import "JWTCoding+VersionOne.h"
10
- #import "JWTBase64Coder.h"
11
-
12
- #import "JWTRSAlgorithm.h"
13
-
14
- #import "JWTAlgorithmFactory.h"
15
- #import "JWTAlgorithmHSBase.h"
16
-
17
- #import "JWTAlgorithmDataHolder.h"
18
-
19
- #import "JWTClaimsSetSerializer.h"
20
- #import "JWTClaimsSetVerifier.h"
21
-
22
- #import "JWTErrorDescription.h"
23
-
24
- @implementation JWT (VersionOne)
25
- #pragma mark - Private Methods
26
- + (NSString *)encodeSegment:(id)theSegment withError:(NSError **)error
27
- {
28
- NSData *encodedSegmentData = nil;
29
-
30
- if (theSegment) {
31
- encodedSegmentData = [NSJSONSerialization dataWithJSONObject:theSegment options:0 error:error];
32
- }
33
- else {
34
- // error!
35
- NSError *generatedError = [JWTErrorDescription errorWithCode:JWTInvalidSegmentSerializationError];
36
- if (error) {
37
- *error = generatedError;
38
- }
39
- NSLog(@"%@ Could not encode segment: %@", self.class, generatedError.localizedDescription);
40
- return nil;
41
- }
42
-
43
- NSString *encodedSegment = nil;
44
-
45
- if (encodedSegmentData) {
46
- encodedSegment = [JWTBase64Coder base64UrlEncodedStringWithData:encodedSegmentData];//[encodedSegmentData base64UrlEncodedString];
47
- }
48
-
49
- return encodedSegment;
50
- }
51
-
52
- + (NSString *)encodeSegment:(id)theSegment;
53
- {
54
- NSError *error;
55
- return [self encodeSegment:theSegment withError:&error];
56
- }
57
-
58
- #pragma mark - Public Methods
59
-
60
- + (NSString *)encodeClaimsSet:(JWTClaimsSet *)theClaimsSet withSecret:(NSString *)theSecret;
61
- {
62
- return [self encodeClaimsSet:theClaimsSet withSecret:theSecret algorithm:[JWTAlgorithmFactory algorithmByName:JWTAlgorithmNameHS512]];
63
- }
64
-
65
- + (NSString *)encodeClaimsSet:(JWTClaimsSet *)theClaimsSet withSecret:(NSString *)theSecret algorithm:(id<JWTAlgorithm>)theAlgorithm;
66
- {
67
- NSDictionary *payload = [JWTClaimsSetSerializer dictionaryWithClaimsSet:theClaimsSet];
68
- return [self encodePayload:payload withSecret:theSecret algorithm:theAlgorithm];
69
- }
70
-
71
- + (NSString *)encodePayload:(NSDictionary *)thePayload withSecret:(NSString *)theSecret;
72
- {
73
- return [self encodePayload:thePayload withSecret:theSecret algorithm:[JWTAlgorithmFactory algorithmByName:JWTAlgorithmNameHS512]];
74
- }
75
-
76
- + (NSString *)encodePayload:(NSDictionary *)thePayload withSecret:(NSString *)theSecret algorithm:(id<JWTAlgorithm>)theAlgorithm;
77
- {
78
- return [self encodePayload:thePayload withSecret:theSecret withHeaders:nil algorithm:theAlgorithm];
79
- }
80
-
81
- + (NSString *)encodePayload:(NSDictionary *)thePayload withSecret:(NSString *)theSecret withHeaders:(NSDictionary *)theHeaders algorithm:(id<JWTAlgorithm>)theAlgorithm;
82
- {
83
-
84
- NSError *error = nil;
85
- NSString *encodedString = [self encodePayload:thePayload withSecret:theSecret withHeaders:theHeaders algorithm:theAlgorithm withError:&error];
86
-
87
- if (error) {
88
- // do something
89
- }
90
-
91
- return encodedString;
92
- }
93
-
94
- + (NSString *)encodePayload:(NSDictionary *)thePayload withSecret:(NSString *)theSecret withHeaders:(NSDictionary *)theHeaders algorithm:(id<JWTAlgorithm>)theAlgorithm withError:(NSError * __autoreleasing *)theError;
95
- {
96
-
97
- NSDictionary *header = @{@"typ": @"JWT", @"alg": theAlgorithm.name};
98
- NSMutableDictionary *allHeaders = [header mutableCopy];
99
-
100
- if (theHeaders.allKeys.count) {
101
- [allHeaders addEntriesFromDictionary:theHeaders];
102
- }
103
-
104
- NSString *headerSegment = [self encodeSegment:[allHeaders copy] withError:theError];
105
-
106
- if (!headerSegment) {
107
- // encode header segment error
108
- if (theError) {
109
- *theError = [JWTErrorDescription errorWithCode:JWTEncodingHeaderError];
110
- }
111
- return nil;
112
- }
113
-
114
- NSString *payloadSegment = [self encodeSegment:thePayload withError:theError];
115
-
116
- if (!payloadSegment) {
117
- // encode payment segment error
118
- if (theError) {
119
- *theError = [JWTErrorDescription errorWithCode:JWTEncodingPayloadError];
120
- }
121
- return nil;
122
- }
123
-
124
- if (!theAlgorithm) {
125
- // error
126
- *theError = [JWTErrorDescription errorWithCode:JWTUnsupportedAlgorithmError];
127
- return nil;
128
- }
129
-
130
- NSString *signingInput = [@[headerSegment, payloadSegment] componentsJoinedByString:@"."];
131
- NSData *signedOutputData = [theAlgorithm encodePayload:signingInput withSecret:theSecret];
132
- NSString *signedOutput = [JWTBase64Coder base64UrlEncodedStringWithData:signedOutputData];
133
-
134
- return [@[headerSegment, payloadSegment, signedOutput] componentsJoinedByString:@"."];
135
- }
136
-
137
- #pragma mark - Decode
138
-
139
- + (NSDictionary *)decodeMessage:(NSString *)theMessage withSecret:(NSString *)theSecret withTrustedClaimsSet:(JWTClaimsSet *)theTrustedClaimsSet withError:(NSError *__autoreleasing *)theError withForcedAlgorithmByName:(NSString *)theAlgorithmName
140
- {
141
- return [self decodeMessage:theMessage withSecret:theSecret withTrustedClaimsSet:theTrustedClaimsSet withError:theError withForcedAlgorithmByName:theAlgorithmName withForcedOption:NO];
142
- }
143
-
144
- + (NSDictionary *)decodeMessage:(NSString *)theMessage withSecret:(NSString *)theSecret withTrustedClaimsSet:(JWTClaimsSet *)theTrustedClaimsSet withError:(NSError *__autoreleasing *)theError withForcedOption:(BOOL)theForcedOption
145
- {
146
- return [self decodeMessage:theMessage withSecret:theSecret withTrustedClaimsSet:theTrustedClaimsSet withError:theError withForcedAlgorithmByName:JWTAlgorithmNameHS512 withForcedOption:theForcedOption];
147
- }
148
-
149
- + (NSDictionary *)decodeMessage:(NSString *)theMessage withSecret:(NSString *)theSecret withTrustedClaimsSet:(JWTClaimsSet *)theTrustedClaimsSet withError:(NSError *__autoreleasing *)theError withForcedAlgorithmByName:(NSString *)theAlgorithmName withForcedOption:(BOOL)theForcedOption
150
- {
151
- return [self decodeMessage:theMessage withSecret:theSecret withTrustedClaimsSet:theTrustedClaimsSet withError:theError withForcedAlgorithmByName:theAlgorithmName withForcedOption:theForcedOption withAlgorithmWhiteList:nil];
152
- }
153
-
154
- + (NSDictionary *)decodeMessage:(NSString *)theMessage withSecret:(NSString *)theSecret withTrustedClaimsSet:(JWTClaimsSet *)theTrustedClaimsSet withError:(NSError *__autoreleasing *)theError withForcedAlgorithmByName:(NSString *)theAlgorithmName withForcedOption:(BOOL)theForcedOption withAlgorithmWhiteList:(NSSet *)theWhitelist
155
- {
156
- NSDictionary *dictionary = [self decodeMessage:theMessage withSecret:theSecret withError:theError withForcedAlgorithmByName:theAlgorithmName skipVerification:theForcedOption whitelist:theWhitelist];
157
-
158
- if (*theError) {
159
- // do something
160
- return dictionary;
161
- }
162
-
163
- if (theTrustedClaimsSet) {
164
- BOOL claimVerified = [JWTClaimsSetVerifier verifyClaimsSet:[JWTClaimsSetSerializer claimsSetWithDictionary:dictionary[@"payload"]] withTrustedClaimsSet:theTrustedClaimsSet];
165
- if (claimVerified) {
166
- return dictionary;
167
- }
168
- else {
169
- *theError = [JWTErrorDescription errorWithCode:JWTClaimsSetVerificationFailed];
170
- return nil;
171
- }
172
- }
173
-
174
- return dictionary;
175
- }
176
-
177
- + (NSDictionary *)decodeMessage:(NSString *)theMessage withSecret:(NSString *)theSecret withError:(NSError *__autoreleasing *)theError withForcedOption:(BOOL)theForcedOption;
178
- {
179
- return [self decodeMessage:theMessage withSecret:theSecret withError:theError withForcedAlgorithmByName:JWTAlgorithmNameHS512 skipVerification:theForcedOption];
180
- }
181
-
182
- + (NSDictionary *)decodeMessage:(NSString *)theMessage withSecret:(NSString *)theSecret withError:(NSError *__autoreleasing *)theError withForcedAlgorithmByName:(NSString *)theAlgorithmName;
183
- {
184
- return [self decodeMessage:theMessage withSecret:theSecret withError:theError withForcedAlgorithmByName:theAlgorithmName skipVerification:NO];
185
- }
186
-
187
- + (NSDictionary *)decodeMessage:(NSString *)theMessage withSecret:(NSString *)theSecret withError:(NSError *__autoreleasing *)theError withForcedAlgorithmByName:(NSString *)theAlgorithmName skipVerification:(BOOL)skipVerification
188
- {
189
- return [self decodeMessage:theMessage withSecret:theSecret withError:theError withForcedAlgorithmByName:theAlgorithmName skipVerification:skipVerification whitelist:nil];
190
- }
191
-
192
- + (NSDictionary *)decodeMessage:(NSString *)theMessage withSecret:(NSString *)theSecret withError:(NSError *__autoreleasing *)theError withForcedAlgorithmByName:(NSString *)theAlgorithmName skipVerification:(BOOL)skipVerification whitelist:(NSSet *)theWhitelist
193
- {
194
- NSArray *parts = [theMessage componentsSeparatedByString:@"."];
195
-
196
- if (parts.count < 3) {
197
- // generate error?
198
- if (theError) {
199
- *theError = [JWTErrorDescription errorWithCode:JWTInvalidFormatError];
200
- }
201
- return nil;
202
- }
203
-
204
- NSString *headerPart = parts[0];
205
- NSString *payloadPart = parts[1];
206
- NSString *signedPart = parts[2];
207
-
208
- // decode headerPart
209
- NSError *jsonError = nil;
210
- NSData *headerData = [JWTBase64Coder dataWithBase64UrlEncodedString:headerPart];
211
- id headerJSON = [NSJSONSerialization JSONObjectWithData:headerData
212
- options:0
213
- error:&jsonError];
214
- if (jsonError) {
215
- *theError = [JWTErrorDescription errorWithCode:JWTDecodingHeaderError];
216
- return nil;
217
- }
218
- NSDictionary *header = (NSDictionary *)headerJSON;
219
- if (!header) {
220
- *theError = [JWTErrorDescription errorWithCode:JWTNoHeaderError];
221
- return nil;
222
- }
223
-
224
- if (!skipVerification) {
225
- // find algorithm
226
-
227
- //It is insecure to trust the header's value for the algorithm, since
228
- //the signature hasn't been verified yet, so an algorithm must be provided
229
- if (!theAlgorithmName) {
230
- *theError = [JWTErrorDescription errorWithCode:JWTUnspecifiedAlgorithmError];
231
- return nil;
232
- }
233
-
234
- NSString *headerAlgorithmName = header[@"alg"];
235
-
236
- //If the algorithm in the header doesn't match what's expected, verification fails
237
- if (![theAlgorithmName isEqualToString:headerAlgorithmName]) {
238
- *theError = [JWTErrorDescription errorWithCode:JWTUnsupportedAlgorithmError];
239
- return nil;
240
- }
241
-
242
- //If a whitelist is passed in, ensure the chosen algorithm is allowed
243
- if (theWhitelist) {
244
- if (![theWhitelist containsObject:theAlgorithmName]) {
245
- *theError = [JWTErrorDescription errorWithCode:JWTUnsupportedAlgorithmError];
246
- return nil;
247
- }
248
- }
249
-
250
- id<JWTAlgorithm> algorithm = [JWTAlgorithmFactory algorithmByName:theAlgorithmName];
251
-
252
- if (!algorithm) {
253
- *theError = [JWTErrorDescription errorWithCode:JWTUnsupportedAlgorithmError];
254
- return nil;
255
- }
256
-
257
- // Verify the signed part
258
- NSString *signingInput = [@[headerPart, payloadPart] componentsJoinedByString:@"."];
259
- BOOL signatureValid = [algorithm verifySignedInput:signingInput withSignature:signedPart verificationKey:theSecret];
260
-
261
- if (!signatureValid) {
262
- *theError = [JWTErrorDescription errorWithCode:JWTInvalidSignatureError];
263
- return nil;
264
- }
265
- }
266
-
267
- // and decode payload
268
- jsonError = nil;
269
- NSData *payloadData = [JWTBase64Coder dataWithBase64UrlEncodedString:payloadPart];
270
- id payloadJSON = [NSJSONSerialization JSONObjectWithData:payloadData
271
- options:0
272
- error:&jsonError];
273
- if (jsonError) {
274
- *theError = [JWTErrorDescription errorWithCode:JWTDecodingPayloadError];
275
- return nil;
276
- }
277
- NSDictionary *payload = (NSDictionary *)payloadJSON;
278
-
279
- if (!payload) {
280
- *theError = [JWTErrorDescription errorWithCode:JWTNoPayloadError];
281
- return nil;
282
- }
283
-
284
- NSDictionary *result = @{
285
- @"header" : header,
286
- @"payload" : payload
287
- };
288
-
289
- return result;
290
- }
291
-
292
- + (NSDictionary *)decodeMessage:(NSString *)theMessage withSecret:(NSString *)theSecret withError:(NSError * __autoreleasing *)theError;
293
- {
294
- return [self decodeMessage:theMessage withSecret:theSecret withError:theError withForcedAlgorithmByName:JWTAlgorithmNameHS512];
295
- }
296
-
297
- + (NSDictionary *)decodeMessage:(NSString *)theMessage withSecret:(NSString *)theSecret;
298
- {
299
- NSError *error = nil;
300
- NSDictionary *dictionary = [self decodeMessage:theMessage withSecret:theSecret withError:&error];
301
- if (error) {
302
- // do something
303
- }
304
- return dictionary;
305
- }
306
-
307
- @end
@@ -1,94 +0,0 @@
1
- //
2
- // JWTCoding+VersionThree.h
3
- // JWT
4
- //
5
- // Created by Lobanov Dmitry on 27.11.16.
6
- // Copyright © 2016 JWTIO. All rights reserved.
7
- //
8
-
9
- #import <JWTCoding.h>
10
-
11
- // encode and decode options
12
- @protocol JWTAlgorithm;
13
- @class JWTClaimsSet;
14
- @class JWTCodingBuilder;
15
- @class JWTEncodingBuilder;
16
- @class JWTDecodingBuilder;
17
- @class JWTAlgorithmDataHolderChain;
18
- @protocol JWTAlgorithmDataHolderProtocol;
19
- @class JWTCodingResultType;
20
-
21
- @interface JWT (VersionThree)
22
- + (JWTEncodingBuilder *)encodeWithHolders:(NSArray *)holders;
23
- + (JWTEncodingBuilder *)encodeWithChain:(JWTAlgorithmDataHolderChain *)chain;
24
- + (JWTDecodingBuilder *)decodeWithHolders:(NSArray *)holders;
25
- + (JWTDecodingBuilder *)decodeWithChain:(JWTAlgorithmDataHolderChain *)chain;
26
- @end
27
-
28
- @interface JWTCodingBuilder : NSObject
29
- #pragma mark - Create
30
- // each element should conform to JWTAlgorithmDataHolderProtocol
31
- + (instancetype)createWithHolders:(NSArray *)holders;
32
- + (instancetype)createWithChain:(JWTAlgorithmDataHolderChain *)chain;
33
- + (instancetype)createWithEmptyChain;
34
-
35
- #pragma mark - Internal
36
- @property (nonatomic, readonly) JWTAlgorithmDataHolderChain *internalChain;
37
- @property (copy, nonatomic, readonly) NSNumber *internalOptions;
38
-
39
- #pragma mark - Fluent
40
- @property (copy, nonatomic, readonly) JWTCodingBuilder *(^chain)(JWTAlgorithmDataHolderChain *chain);
41
- @property (copy, nonatomic, readonly) JWTCodingBuilder *(^constructChain)(JWTAlgorithmDataHolderChain *(^block)());
42
- @property (copy, nonatomic, readonly) JWTCodingBuilder *(^modifyChain)(JWTAlgorithmDataHolderChain *(^block)(JWTAlgorithmDataHolderChain * chain));
43
- @property (copy, nonatomic, readonly) JWTCodingBuilder *(^options)(NSNumber *options);
44
- @property (copy, nonatomic, readonly) JWTCodingBuilder *(^addHolder)(id<JWTAlgorithmDataHolderProtocol> holder);
45
- //@property (copy, nonatomic, readonly) JWTCodingBuilder *(^constructHolder)(id<JWTAlgorithmDataHolderProtocol>(^block)(id<JWTAlgorithmDataHolderProtocol> holder));
46
- @end
47
-
48
- @interface JWTCodingBuilder (Sugar)
49
- - (instancetype)and;
50
- - (instancetype)with;
51
- @end
52
-
53
- @interface JWTCodingBuilder (Coding)
54
- @property (nonatomic, readonly) JWTCodingResultType *result;
55
- @end
56
-
57
- @interface JWTEncodingBuilder : JWTCodingBuilder
58
- #pragma mark - Create
59
- + (instancetype)encodePayload:(NSDictionary *)payload;
60
- + (instancetype)encodeClaimsSet:(JWTClaimsSet *)claimsSet;
61
-
62
- #pragma mark - Internal
63
- @property (copy, nonatomic, readonly) NSDictionary *internalPayload;
64
- @property (copy, nonatomic, readonly) NSDictionary *internalHeaders;
65
- @property (nonatomic, readonly) JWTClaimsSet *internalClaimsSet;
66
-
67
- #pragma mark - Fluent
68
- @property (copy, nonatomic, readonly) JWTEncodingBuilder *(^payload)(NSDictionary *payload);
69
- @property (copy, nonatomic, readonly) JWTEncodingBuilder *(^headers)(NSDictionary *headers);
70
- @property (copy, nonatomic, readonly) JWTEncodingBuilder *(^claimsSet)(JWTClaimsSet *claimsSet);
71
-
72
- @end
73
-
74
- @interface JWTEncodingBuilder (Coding)
75
- @property (nonatomic, readonly) JWTCodingResultType *encode;
76
- @end
77
-
78
- @interface JWTDecodingBuilder : JWTCodingBuilder
79
- #pragma mark - Create
80
- + (instancetype)decodeMessage:(NSString *)message;
81
-
82
- #pragma mark - Internal
83
- @property (copy, nonatomic, readonly) NSString *internalMessage;
84
- @property (nonatomic, readonly) JWTClaimsSet *internalClaimsSet;
85
-
86
- #pragma mark - Fluent
87
- @property (copy, nonatomic, readonly) JWTDecodingBuilder *(^message)(NSString *message);
88
- @property (copy, nonatomic, readonly) JWTDecodingBuilder *(^claimsSet)(JWTClaimsSet *claimsSet);
89
-
90
- @end
91
-
92
- @interface JWTDecodingBuilder (Coding)
93
- @property (nonatomic, readonly) JWTCodingResultType *decode;
94
- @end