@appzung/react-native-code-push 8.3.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/CodePush.podspec +3 -3
  3. package/LICENSE.md +1 -1
  4. package/README.md +159 -296
  5. package/android/app/.gradle/config.properties +2 -0
  6. package/android/app/build.gradle +2 -0
  7. package/android/app/local.properties +8 -0
  8. package/android/app/src/main/AndroidManifest.xml +1 -2
  9. package/android/app/src/main/java/com/microsoft/codepush/react/CodePush.java +27 -21
  10. package/android/app/src/main/java/com/microsoft/codepush/react/CodePushBuilder.java +5 -5
  11. package/android/app/src/main/java/com/microsoft/codepush/react/CodePushConstants.java +1 -1
  12. package/android/app/src/main/java/com/microsoft/codepush/react/CodePushDialog.java +1 -1
  13. package/android/app/src/main/java/com/microsoft/codepush/react/CodePushInstallMode.java +2 -2
  14. package/android/app/src/main/java/com/microsoft/codepush/react/CodePushInvalidPublicKeyException.java +2 -2
  15. package/android/app/src/main/java/com/microsoft/codepush/react/CodePushInvalidUpdateException.java +1 -1
  16. package/android/app/src/main/java/com/microsoft/codepush/react/CodePushMalformedDataException.java +2 -2
  17. package/android/app/src/main/java/com/microsoft/codepush/react/CodePushNativeModule.java +5 -5
  18. package/android/app/src/main/java/com/microsoft/codepush/react/CodePushNotInitializedException.java +2 -2
  19. package/android/app/src/main/java/com/microsoft/codepush/react/CodePushTelemetryManager.java +14 -14
  20. package/android/app/src/main/java/com/microsoft/codepush/react/CodePushUnknownException.java +2 -2
  21. package/android/app/src/main/java/com/microsoft/codepush/react/CodePushUpdateManager.java +1 -1
  22. package/android/app/src/main/java/com/microsoft/codepush/react/CodePushUpdateState.java +2 -2
  23. package/android/app/src/main/java/com/microsoft/codepush/react/CodePushUpdateUtils.java +16 -9
  24. package/android/app/src/main/java/com/microsoft/codepush/react/CodePushUtils.java +1 -1
  25. package/android/app/src/main/java/com/microsoft/codepush/react/DownloadProgress.java +1 -1
  26. package/android/app/src/main/java/com/microsoft/codepush/react/DownloadProgressCallback.java +1 -1
  27. package/android/app/src/main/java/com/microsoft/codepush/react/FileUtils.java +1 -1
  28. package/android/app/src/main/java/com/microsoft/codepush/react/ReactInstanceHolder.java +1 -1
  29. package/android/app/src/main/java/com/microsoft/codepush/react/SettingsManager.java +1 -1
  30. package/android/app/src/main/java/com/microsoft/codepush/react/TLSSocketFactory.java +1 -1
  31. package/android/build.gradle +3 -0
  32. package/android/codepush.gradle +3 -3
  33. package/docs/advanced-usage.md +56 -0
  34. package/docs/api-android.md +12 -75
  35. package/docs/api-ios.md +5 -17
  36. package/docs/api-js.md +18 -55
  37. package/docs/setup-android.md +15 -397
  38. package/docs/setup-ios.md +24 -198
  39. package/docs/setup-windows.md +7 -74
  40. package/ios/CodePush/CodePush.h +4 -4
  41. package/ios/CodePush/CodePush.m +10 -9
  42. package/ios/CodePush/CodePushConfig.m +14 -11
  43. package/ios/CodePush/CodePushPackage.m +60 -60
  44. package/ios/CodePush/CodePushTelemetryManager.m +13 -13
  45. package/ios/CodePush.xcodeproj/project.pbxproj +24 -470
  46. package/ios/PrivacyInfo.xcprivacy +31 -0
  47. package/package.json +27 -24
  48. package/react-native.config.js +1 -1
  49. package/scripts/generateBundledResourcesHash.js +1 -1
  50. package/scripts/getFilesInFolder.js +1 -1
  51. package/scripts/recordFilesBeforeBundleCommand.js +1 -1
  52. package/typings/react-native-code-push.d.ts +22 -22
  53. package/windows/CodePush/CodePushConfig.cpp +3 -3
  54. package/windows/CodePush/CodePushConfig.h +3 -3
  55. package/windows/CodePush/CodePushNativeModule.cpp +27 -27
  56. package/windows/CodePush/CodePushNativeModule.h +4 -4
  57. package/windows/CodePush/CodePushTelemetryManager.cpp +12 -12
  58. package/windows/CodePush/CodePushTelemetryManager.h +1 -1
  59. package/.azurepipelines/build-rn-code-push-1es.yml +0 -104
  60. package/.azurepipelines/test-rn-code-push.yml +0 -94
  61. package/.config/CredScanSuppressions.json +0 -14
  62. package/SECURITY.md +0 -41
  63. package/docs/multi-deployment-testing-android.md +0 -148
  64. package/docs/multi-deployment-testing-ios.md +0 -59
  65. package/ios/CodePush/Base64/Base64/MF_Base64Additions.h +0 -34
  66. package/ios/CodePush/Base64/Base64/MF_Base64Additions.m +0 -252
  67. package/ios/CodePush/Base64/README.md +0 -47
  68. package/ios/CodePush/JWT/Core/Algorithms/Base/JWTAlgorithm.h +0 -69
  69. package/ios/CodePush/JWT/Core/Algorithms/Base/JWTAlgorithmFactory.h +0 -16
  70. package/ios/CodePush/JWT/Core/Algorithms/Base/JWTAlgorithmFactory.m +0 -51
  71. package/ios/CodePush/JWT/Core/Algorithms/Base/JWTAlgorithmNone.h +0 -15
  72. package/ios/CodePush/JWT/Core/Algorithms/Base/JWTAlgorithmNone.m +0 -55
  73. package/ios/CodePush/JWT/Core/Algorithms/ESFamily/JWTAlgorithmESBase.h +0 -24
  74. package/ios/CodePush/JWT/Core/Algorithms/ESFamily/JWTAlgorithmESBase.m +0 -41
  75. package/ios/CodePush/JWT/Core/Algorithms/HSFamily/JWTAlgorithmHSBase.h +0 -28
  76. package/ios/CodePush/JWT/Core/Algorithms/HSFamily/JWTAlgorithmHSBase.m +0 -205
  77. package/ios/CodePush/JWT/Core/Algorithms/Holders/JWTAlgorithmDataHolder.h +0 -103
  78. package/ios/CodePush/JWT/Core/Algorithms/Holders/JWTAlgorithmDataHolder.m +0 -322
  79. package/ios/CodePush/JWT/Core/Algorithms/Holders/JWTAlgorithmDataHolderChain.h +0 -37
  80. package/ios/CodePush/JWT/Core/Algorithms/Holders/JWTAlgorithmDataHolderChain.m +0 -145
  81. package/ios/CodePush/JWT/Core/Algorithms/RSFamily/JWTAlgorithmRSBase.h +0 -35
  82. package/ios/CodePush/JWT/Core/Algorithms/RSFamily/JWTAlgorithmRSBase.m +0 -551
  83. package/ios/CodePush/JWT/Core/Algorithms/RSFamily/JWTRSAlgorithm.h +0 -23
  84. package/ios/CodePush/JWT/Core/Algorithms/RSFamily/RSKeys/JWTCryptoKey.h +0 -43
  85. package/ios/CodePush/JWT/Core/Algorithms/RSFamily/RSKeys/JWTCryptoKey.m +0 -230
  86. package/ios/CodePush/JWT/Core/Algorithms/RSFamily/RSKeys/JWTCryptoKeyExtractor.h +0 -31
  87. package/ios/CodePush/JWT/Core/Algorithms/RSFamily/RSKeys/JWTCryptoKeyExtractor.m +0 -113
  88. package/ios/CodePush/JWT/Core/Algorithms/RSFamily/RSKeys/JWTCryptoSecurity.h +0 -38
  89. package/ios/CodePush/JWT/Core/Algorithms/RSFamily/RSKeys/JWTCryptoSecurity.m +0 -500
  90. package/ios/CodePush/JWT/Core/ClaimSet/JWTClaim.h +0 -18
  91. package/ios/CodePush/JWT/Core/ClaimSet/JWTClaim.m +0 -214
  92. package/ios/CodePush/JWT/Core/ClaimSet/JWTClaimsSet.h +0 -23
  93. package/ios/CodePush/JWT/Core/ClaimSet/JWTClaimsSet.m +0 -29
  94. package/ios/CodePush/JWT/Core/ClaimSet/JWTClaimsSetSerializer.h +0 -19
  95. package/ios/CodePush/JWT/Core/ClaimSet/JWTClaimsSetSerializer.m +0 -68
  96. package/ios/CodePush/JWT/Core/ClaimSet/JWTClaimsSetVerifier.h +0 -18
  97. package/ios/CodePush/JWT/Core/ClaimSet/JWTClaimsSetVerifier.m +0 -72
  98. package/ios/CodePush/JWT/Core/Coding/JWTCoding+ResultTypes.h +0 -67
  99. package/ios/CodePush/JWT/Core/Coding/JWTCoding+ResultTypes.m +0 -111
  100. package/ios/CodePush/JWT/Core/Coding/JWTCoding+VersionOne.h +0 -119
  101. package/ios/CodePush/JWT/Core/Coding/JWTCoding+VersionOne.m +0 -307
  102. package/ios/CodePush/JWT/Core/Coding/JWTCoding+VersionThree.h +0 -94
  103. package/ios/CodePush/JWT/Core/Coding/JWTCoding+VersionThree.m +0 -619
  104. package/ios/CodePush/JWT/Core/Coding/JWTCoding+VersionTwo.h +0 -164
  105. package/ios/CodePush/JWT/Core/Coding/JWTCoding+VersionTwo.m +0 -514
  106. package/ios/CodePush/JWT/Core/Coding/JWTCoding.h +0 -24
  107. package/ios/CodePush/JWT/Core/Coding/JWTCoding.m +0 -11
  108. package/ios/CodePush/JWT/Core/FrameworkSupplement/JWT.h +0 -52
  109. package/ios/CodePush/JWT/Core/FrameworkSupplement/Map.modulemap +0 -5
  110. package/ios/CodePush/JWT/Core/Supplement/JWTBase64Coder.h +0 -28
  111. package/ios/CodePush/JWT/Core/Supplement/JWTBase64Coder.m +0 -70
  112. package/ios/CodePush/JWT/Core/Supplement/JWTDeprecations.h +0 -22
  113. package/ios/CodePush/JWT/Core/Supplement/JWTErrorDescription.h +0 -34
  114. package/ios/CodePush/JWT/Core/Supplement/JWTErrorDescription.m +0 -73
  115. package/ios/CodePush/JWT/LICENSE +0 -19
  116. package/ios/CodePush/JWT/README.md +0 -489
  117. package/ios/CodePush/SSZipArchive/Common.h +0 -81
  118. package/ios/CodePush/SSZipArchive/README.md +0 -1
  119. package/ios/CodePush/SSZipArchive/SSZipArchive.h +0 -76
  120. package/ios/CodePush/SSZipArchive/SSZipArchive.m +0 -691
  121. package/ios/CodePush/SSZipArchive/aes/aes.h +0 -198
  122. package/ios/CodePush/SSZipArchive/aes/aes_via_ace.h +0 -541
  123. package/ios/CodePush/SSZipArchive/aes/aescrypt.c +0 -294
  124. package/ios/CodePush/SSZipArchive/aes/aeskey.c +0 -548
  125. package/ios/CodePush/SSZipArchive/aes/aesopt.h +0 -739
  126. package/ios/CodePush/SSZipArchive/aes/aestab.c +0 -391
  127. package/ios/CodePush/SSZipArchive/aes/aestab.h +0 -173
  128. package/ios/CodePush/SSZipArchive/aes/brg_endian.h +0 -126
  129. package/ios/CodePush/SSZipArchive/aes/brg_types.h +0 -219
  130. package/ios/CodePush/SSZipArchive/aes/entropy.c +0 -54
  131. package/ios/CodePush/SSZipArchive/aes/entropy.h +0 -16
  132. package/ios/CodePush/SSZipArchive/aes/fileenc.c +0 -144
  133. package/ios/CodePush/SSZipArchive/aes/fileenc.h +0 -121
  134. package/ios/CodePush/SSZipArchive/aes/hmac.c +0 -145
  135. package/ios/CodePush/SSZipArchive/aes/hmac.h +0 -103
  136. package/ios/CodePush/SSZipArchive/aes/prng.c +0 -155
  137. package/ios/CodePush/SSZipArchive/aes/prng.h +0 -82
  138. package/ios/CodePush/SSZipArchive/aes/pwd2key.c +0 -103
  139. package/ios/CodePush/SSZipArchive/aes/pwd2key.h +0 -57
  140. package/ios/CodePush/SSZipArchive/aes/sha1.c +0 -258
  141. package/ios/CodePush/SSZipArchive/aes/sha1.h +0 -73
  142. package/ios/CodePush/SSZipArchive/minizip/crypt.h +0 -130
  143. package/ios/CodePush/SSZipArchive/minizip/ioapi.c +0 -369
  144. package/ios/CodePush/SSZipArchive/minizip/ioapi.h +0 -175
  145. package/ios/CodePush/SSZipArchive/minizip/mztools.c +0 -284
  146. package/ios/CodePush/SSZipArchive/minizip/mztools.h +0 -31
  147. package/ios/CodePush/SSZipArchive/minizip/unzip.c +0 -1839
  148. package/ios/CodePush/SSZipArchive/minizip/unzip.h +0 -248
  149. package/ios/CodePush/SSZipArchive/minizip/zip.c +0 -1910
  150. package/ios/CodePush/SSZipArchive/minizip/zip.h +0 -202
  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,489 +0,0 @@
1
- [![JWT](http://jwt.io/assets/logo.svg)](https://jwt.io/)
2
-
3
- [![Build Status](https://travis-ci.org/yourkarma/JWT.svg?branch=master)](https://travis-ci.org/yourkarma/JWT)
4
- [![Pod Version](http://img.shields.io/cocoapods/v/JWT.svg?style=flat)](http://cocoadocs.org/docsets/JWT)
5
- [![Pod Platform](http://img.shields.io/cocoapods/p/JWT.svg?style=flat)](http://cocoadocs.org/docsets/JWT)
6
- [![Reference Status](https://www.versioneye.com/objective-c/jwt/reference_badge.svg?style=flat)](https://www.versioneye.com/objective-c/jwt/references)
7
-
8
- # JWT
9
-
10
- A [JSON Web Token][] implementation in Objective-C.
11
-
12
- [JSON Web Token]: http://self-issued.info/docs/draft-ietf-oauth-json-web-token.html
13
-
14
- # What's new in master and bleeding edge.
15
- Nothing here.
16
-
17
- # What's new in Version 3.0
18
-
19
- * Fluent style expanded.
20
- * Coding result types added.
21
- * Algorithms and data holders.
22
- * Algorithms and data holders chain.
23
- * Keys loaded from Pem files.
24
-
25
- ## Introduction to Algorithms data holders and chain.
26
- You have algorithm, secret data and unknown jwt token.
27
- Let's try to decode it.
28
-
29
- ```objective-c
30
- // create token
31
- NSString *token = @"...";
32
-
33
- // possible that algorithm could return error.
34
- // you could try use algorithm and data chain.
35
-
36
- NSString *firstSecret = @"first";
37
- NSString *firstAlgorithmName = JWTAlgorithmNameHS384;
38
-
39
- id <JWTAlgorithmDataHolderProtocol> firstHolder = [JWTAlgorithmHSFamilyDataHolder new].algorithmName(firstAlgorithmName).secret(firstSecret);
40
-
41
- id <JWTAlgorithmDataHolderProtocol> errorHolder = [JWTAlgorithmNoneDataHolder new];
42
-
43
- // chain together.
44
- JWTAlgorithmDataHolderChain *chain = [[JWTAlgorithmDataHolderChain alloc] initWithHolders:@[firstHolder, errorHolder]];
45
-
46
- // or add them in builder
47
- [JWTDecodingBuilder decodeMessage:token].addHolder(firstHolder).addHolder(errorHolder);
48
-
49
- // or add them as chain
50
- [JWTDecodingBuilder decodeMessage:token].chain(chain);
51
- ```
52
-
53
- Maybe you would like to try different secrets.
54
-
55
- ```objective-c
56
- // possible that your algorithm has several secrets.
57
- // you don't know which secret to use.
58
- // but you want to decode it.
59
- NSString *firstSecret = @"first";
60
- NSArray *manySecrets = @[@"second", @"third", @"forty two"];
61
- // translate to data
62
- NSArray *manySecretsData = @[];
63
- for (NSString *secret in manySecrets) {
64
- NSData *secretData = [JWTBase64Coder dataWithBase64UrlEncodedString:secret];
65
- if (secret) {
66
- manySecretsData = [manySecretsData arrayByAddingObject:secretData];
67
- }
68
- }
69
-
70
- NSString *algorithmName = JWTAlgorithmNameHS384;
71
-
72
- id <JWTAlgorithmDataHolderProtocol> firstHolder = [JWTAlgorithmHSFamilyDataHolder new].algorithmName(algorithmName).secret(firstSecret);
73
-
74
- // lets create chain
75
- JWTAlgorithmDataHolderChain *chain = [JWTAlgorithmDataHolderChain chainWithHolder:firstHolder];
76
-
77
- // and lets populate chain with secrets.
78
- NSLog(@"chain has: %@", chain.debugDescription);
79
-
80
- JWTAlgorithmDataHolderChain *expandedChain = [chain chainByPopulatingAlgorithm:firstHolder.currentAlgorithm withManySecretData:manySecretsData];
81
-
82
- // now we have expanded chain with many secrets and one algorithm.
83
- NSLog(@"expanded chain has: %@", expandedChain.debugDescription);
84
- ```
85
-
86
- ## Decode and encode with chain.
87
-
88
- ```objective-c
89
- JWTClaimsSet *claimsSet = [[JWTClaimsSet alloc] init];
90
- // fill it
91
- claimsSet.issuer = @"Facebook";
92
- claimsSet.subject = @"Token";
93
- claimsSet.audience = @"https://jwt.io";
94
-
95
- // encode it
96
- NSString *secret = @"secret";
97
- NSString *algorithmName = @"HS384";
98
- NSDictionary *headers = @{@"custom":@"value"};
99
-
100
- id<JWTAlgorithmDataHolderProtocol>holder = [JWTAlgorithmHSFamilyDataHolder new].algorithmName(algorithmName).secret(secret);
101
-
102
- JWTCodingResultType *result = [JWTEncodingBuilder encodeClaimsSet:claimsSet].headers(headers).addHolder(holder).result;
103
-
104
- NSString *encodedToken = result.successResult.encoded;
105
- if (result.successResult) {
106
- // handle encoded result
107
- NSLog(@"encoded result: %@", result.successResult.encoded);
108
- }
109
- else {
110
- // handle error
111
- NSLog(@"encode failed, error: %@", result.errorResult.error);
112
- }
113
-
114
- // decode it
115
- // you can set any property that you want, all properties are optional
116
- JWTClaimsSet *trustedClaimsSet = [claimsSet copy];
117
-
118
- NSNumber *options = @(JWTCodingDecodingOptionsNone);
119
- NSString *yourJwt = encodedToken; // from previous example
120
- JWTCodingResultType *decodedResult = [JWTDecodingBuilder decodeMessage:yourJwt].claimsSet(claimsSet).addHolder(holder).options(options).and.result;
121
-
122
- if (decodedResult.successResult) {
123
- // handle decoded result
124
- NSLog(@"decoded result: %@", decodedResult.successResult.headerAndPayloadDictionary);
125
- NSLog(@"headers: %@", decodedResult.successResult.headers);
126
- NSLog(@"payload: %@", decodedResult.successResult.payload);
127
- }
128
- else {
129
- // handle error
130
- NSLog(@"decode failed, error: %@", decodedResult.errorResult.error);
131
- }
132
- ```
133
-
134
- ## Keys loaded from Pem files.
135
-
136
- You have a key in pem file. And you want to use it directly for sign/verify.
137
- Suppose, that "public_rsa.pem" and "private_rsa.pem" are public and private keys in pem format.
138
- ```objective-c
139
- // Load keys
140
- - (NSString *)pemKeyStringFromFileWithName:(NSString *)string inBundle:(NSBundle *)bundle {
141
- NSURL *fileURL = [bundle URLForResource:name withExtension:@"pem"];
142
- NSError *error = nil;
143
- NSString *fileContent = [NSString stringWithContentsOfURL:fileURL encoding:NSUTF8StringEncoding error:&error];
144
- if (error) {
145
- NSLog(@"%@ error: %@", self.debugDescription, error);
146
- return nil;
147
- }
148
- }
149
-
150
- // Sign and verify
151
- - (void)signAndVerifyWithPrivateKeyPemString:(NSString *)privateKey publicKeyPemString:(NSString *)publicKey privateKeyPassphrase:(NSString *)passphrase {
152
- NSString *algorithmName = @"RS256";
153
-
154
- id <JWTAlgorithmDataHolderProtocol> signDataHolder = [JWTAlgorithmRSFamilyDataHolder new].keyExtractorType([JWTCryptoKeyExtractor privateKeyWithPEMBase64].type).privateKeyCertificatePassphrase(passphrase).algorithmName(algorithmName).secret(privateKey);
155
-
156
- id <JWTAlgorithmDataHolderProtocol> verifyDataHolder = [JWTAlgorithmRSFamilyDataHolder new].keyExtractorType([JWTCryptoKeyExtractor publicKeyWithPEMBase64].type).algorithmName(algorithmName).secret(publicKey);
157
-
158
- // sign
159
- NSDictionary *payloadDictionary = @{@"hello": @"world"};
160
-
161
- JWTCodingBuilder *signBuilder = [JWTEncodingBuilder encodePayload:payloadDictionary].addHolder(signDataHolder);
162
- JWTCodingResultType *signResult = signBuilder.result;
163
- NSString *token = nil;
164
- if (signResult.successResult) {
165
- // success
166
- NSLog(@"%@ success: %@", self.debugDescription, signResult.successResult.encoded);
167
- token = signResult.successResult.encoded;
168
- }
169
- else {
170
- // error
171
- NSLog(@"%@ error: %@", self.debugDescription, signResult.errorResult.error);
172
- }
173
-
174
- // verify
175
- if (token == nil) {
176
- NSLog(@"something wrong");
177
- }
178
-
179
- JWTCodingBuilder *verifyBuilder = [JWTDecodingBuilder decodeMessage:token].addHolder(verifyDataHolder);
180
- JWTCodingResultType *verifyResult = verifyBuilder.result;
181
- if (verifyResult.successResult) {
182
- // success
183
- NSLog(@"%@ success: %@", self.debugDescription, verifyResult.successResult.payload);
184
- token = verifyResult.successResult.encoded;
185
- }
186
- else {
187
- // error
188
- NSLog(@"%@ error: %@", self.debugDescription, verifyResult.errorResult.error);
189
- }
190
- }
191
- ```
192
-
193
- # Experiments in Version 2.0
194
- ## Whitelists possible algorithms.
195
- When you need to decode jwt by several algorithms you could specify their names in whitelist.
196
- Later this feature possible will migrate to options.
197
- For example, someone returns result or error.
198
- ### Limitations
199
- Restricted to pair (algorithm or none) due to limitations of unique `secret`.
200
-
201
- ```objective-c
202
- NSString *jwtResultOrError = /*...*/;
203
- NSString *secret = @"secret";
204
- JWTBuilder *builder = [JWT decodeMessage:jwtResultOrError].secret(@"secret").whitelist(@[@"HS256", @"none"]);
205
- NSDictionary *decoded = builder.decode;
206
- if (builder.jwtError) {
207
- // oh!
208
- }
209
- else {
210
- NSDictionary *payload = decoded[@"payload"];
211
- NSDictionary *header = decoded[@"header"];
212
- NSArray *tries = decoded[@"tries"]; // will be evolded into something appropriate later.
213
- }
214
- ```
215
-
216
- # What's new in Version 2.0
217
-
218
- * Old plain style deprecated.
219
- * Use modern fluent style instead.
220
-
221
- ```objective-c
222
- NSDictionary *payload = @{@"foo" : @"bar"};
223
- NSString *secret = @"secret";
224
- id<JWTAlgorithm> algorithm = [JWTAlgorithmFactory algorithmByName:@"HS256"];
225
- // Deprecated
226
- [JWT encodePayload:payload withSecret:secret algorithm:algorithm];
227
-
228
- // Modern
229
- [JWTBuilder encodePayload:payload].secret(secret).algorithm(algorithm).encode;
230
- ```
231
-
232
- # Installation
233
-
234
- Add the following to your [CocoaPods][] Podfile:
235
-
236
- pod "JWT"
237
-
238
- [CocoaPods]: http://cocoapods.org
239
-
240
- Install via Cartfile:
241
-
242
- github "yourkarma/JWT" "master"
243
-
244
- and `import JWT`
245
-
246
- # Documentation
247
- # Usage
248
-
249
- ## JWTBuilder
250
-
251
- To encode & decode JWTs, use fluent style with the `JWTBuilder` interface
252
-
253
- ```objective-c
254
- + (JWTBuilder *)encodePayload:(NSDictionary *)payload;
255
- + (JWTBuilder *)encodeClaimsSet:(JWTClaimsSet *)claimsSet;
256
- + (JWTBuilder *)decodeMessage:(NSString *)message;
257
- ```
258
-
259
- As you can see, JWTBuilder has interface from both decoding and encoding.
260
-
261
- Note: some attributes are encode-only or decode-only.
262
-
263
- #pragma mark - Encode only
264
- *payload;
265
- *headers;
266
- *algorithm;
267
-
268
- #pragma mark - Decode only
269
- *message
270
- *options // as forcedOption from jwt decode functions interface.
271
- *whitelist //optional array of algorithm names to whitelist for decoding
272
-
273
- You can inspect JWTBuilder by `jwt`-prefixed attributes.
274
-
275
- You can set JWTBuilder attributes by fluent style (block interface).
276
-
277
- You can encode arbitrary payloads like so:
278
-
279
- ```objective-c
280
- NSDictionary *payload = @{@"foo" : @"bar"};
281
- NSString *secret = @"secret";
282
- id<JWTAlgorithm> algorithm = [JWTAlgorithmFactory algorithmByName:@"HS256"];
283
-
284
- [JWTBuilder encodePayload:payload].secret(@"secret").algorithm(algorithm).encode;
285
- ```
286
-
287
- If you're using reserved claim names you can encode your claim set like so (all properties are optional):
288
-
289
- ```objective-c
290
- JWTClaimsSet *claimsSet = [[JWTClaimsSet alloc] init];
291
- claimsSet.issuer = @"Facebook";
292
- claimsSet.subject = @"Token";
293
- claimsSet.audience = @"http://yourkarma.com";
294
- claimsSet.expirationDate = [NSDate distantFuture];
295
- claimsSet.notBeforeDate = [NSDate distantPast];
296
- claimsSet.issuedAt = [NSDate date];
297
- claimsSet.identifier = @"thisisunique";
298
- claimsSet.type = @"test";
299
-
300
- NSString *secret = @"secret";
301
- id<JWTAlgorithm> algorithm = [JWTAlgorithmFactory algorithmByName:@"HS256"];
302
-
303
- [JWTBuilder encodeClaimsSet:claimsSet].secret(secret).algorithm(algorithm).encode;
304
- ```
305
-
306
- You can decode a JWT like so:
307
-
308
- ```objective-c
309
- NSString *jwtToken = @"header.payload.signature";
310
- NSString *secret = @"secret";
311
- NSString *algorithmName = @"HS256"; //Must specify an algorithm to use
312
-
313
- NSDictionary *payload = [JWTBuilder decodeMessage:jwtToken].secret(secret).algorithmName(algorithmName).decode;
314
- ```
315
-
316
- If you want to check claims while decoding, you could use next sample of code (all properties are optional):
317
-
318
- ```objective-c
319
- // Trusted Claims Set
320
- JWTClaimsSet *trustedClaimsSet = [[JWTClaimsSet alloc] init];
321
- trustedClaimsSet.issuer = @"Facebook";
322
- trustedClaimsSet.subject = @"Token";
323
- trustedClaimsSet.audience = @"http://yourkarma.com";
324
- trustedClaimsSet.expirationDate = [NSDate date];
325
- trustedClaimsSet.notBeforeDate = [NSDate date];
326
- trustedClaimsSet.issuedAt = [NSDate date];
327
- trustedClaimsSet.identifier = @"thisisunique";
328
- trustedClaimsSet.type = @"test";
329
-
330
- NSString *message = @"encodedJwt";
331
- NSString *secret = @"secret";
332
- NSString *algorithmName = @"chosenAlgorithm"
333
-
334
- JWTBuilder *builder = [JWTBuilder decodeMessage:jwt].secret(secret).algorithmName(algorithmName).claimsSet(trustedClaimsSet);
335
- NSDictionary *payload = builder.decode;
336
-
337
- if (builder.jwtError == nil) {
338
- // do your work here
339
- }
340
- else {
341
- // handle error
342
- }
343
- ```
344
-
345
- If you want to enforce a whitelist of valid algorithms:
346
-
347
- ```objective-c
348
- NSArray *whitelist = @[@"HS256", @"HS512"];
349
- NSString *jwtToken = @"header.payload.signature";
350
- NSString *secret = @"secret";
351
- NSString *algorithmName = @"HS256";
352
-
353
- //Returns nil
354
- NSDictionary *payload = [JWTBuilder decodeMessage:jwtToken].secret(secret).algorithmName(algorithmName).whitelist(@[]).decode;
355
-
356
- //Returns the decoded payload
357
- NSDictionary *payload = [JWTBuilder decodeMessage:jwtToken].secret(secret).algorithmName(algorithmName).whitelist(whitelist).decode;
358
- ```
359
-
360
- ### Encode / Decode Example
361
-
362
- ```objective-c
363
- // suppose, that you create ClaimsSet
364
- JWTClaimsSet *claimsSet = [[JWTClaimsSet alloc] init];
365
- // fill it
366
- claimsSet.issuer = @"Facebook";
367
- claimsSet.subject = @"Token";
368
- claimsSet.audience = @"http://yourkarma.com";
369
-
370
- // encode it
371
- NSString *secret = @"secret";
372
- NSString *algorithmName = @"HS384";
373
- NSDictionary *headers = @{@"custom":@"value"};
374
- id<JWTAlgorithm> algorithm = [JWTAlgorithmFactory algorithmByName:algorithmName];
375
-
376
- JWTBuilder *encodeBuilder = [JWT encodeClaimsSet:claimsSet];
377
- NSString *encodedResult = encodeBuilder.secret(secret).algorithm(algorithm).headers(headers).encode;
378
-
379
- if (encodeBuilder.jwtError == nil) {
380
- // handle encoded result
381
- NSLog(@"encoded result: %@", encodedResult);
382
- }
383
- else {
384
- // handle error
385
- NSLog(@"encode failed, error: %@", encodeBuilder.jwtError);
386
- }
387
-
388
- // decode it
389
- // you can set any property that you want, all properties are optional
390
- JWTClaimsSet *trustedClaimsSet = [claimsSet copy];
391
-
392
- // decode forced ? try YES
393
- BOOL decodeForced = NO;
394
- NSNumber *options = @(decodeForced);
395
- NSString *yourJwt = encodedResult; // from previous example
396
- NSString *yourSecret = secret; // from previous example
397
- NSString *yourAlgorithm = algorithmName; // from previous example
398
- JWTBuilder *decodeBuilder = [JWT decodeMessage:yourJwt];
399
- NSDictionary *decodedResult = decodeBuilder.message(yourJwt).secret(yourSecret).algorithmName(yourAlgorithm).claimsSet(trustedClaimsSet).options(options).decode;
400
- if (decodeBuilder.jwtError == nil) {
401
- // handle decoded result
402
- NSLog(@"decoded result: %@", decodedResult);
403
- }
404
- else {
405
- // handle error
406
- NSLog(@"decode failed, error: %@", decodeBuilder.jwtError);
407
- }
408
- ```
409
-
410
- #### NSData
411
- You can also encode/decode using a secret that is represented as an NSData object
412
-
413
- ```objective-c
414
- //Encode
415
- NSData *secretData = "<your data>";
416
- NSString *algorithmName = @"HS384";
417
- NSDictionary *headers = @{@"custom":@"value"};
418
- id<JWTAlgorithm> algorithm = [JWTAlgorithmFactory algorithmByName:algorithmName];
419
-
420
- JWTBuilder *encodeBuilder = [JWT encodeClaimsSet:claimsSet];
421
- NSString *encodedResult = encodeBuilder.secretData(secretData).algorithm(algorithm).headers(headers).encode;
422
-
423
- //Decode
424
- NSString *jwtToken = @"header.payload.signature";
425
- NSData *secretData = "<your data>"
426
- NSString *algorithmName = @"HS256"; //Must specify an algorithm to use
427
-
428
- NSDictionary *payload = [JWTBuilder decodeMessage:jwtToken].secretData(secretData).algorithmName(algorithmName).decode;
429
- ```
430
-
431
- # Algorithms
432
-
433
- The following algorithms are supported:
434
-
435
- * RS256
436
- * HS512 - HMAC using SHA-512.
437
- * HS256 / HS384 / HS512
438
- * None
439
-
440
- ## RS256 usage.
441
- For example, you have your file with privateKey: `file.p12`.
442
- And you have a secret passphrase for that file: `secret`.
443
-
444
- ```objective-c
445
- // Encode
446
- NSDictionary *payload = @{@"payload" : @"hidden_information"};
447
- NSString *algorithmName = @"RS256";
448
-
449
- NSString *filePath = [[NSBundle mainBundle] pathForResource:@"secret_key" ofType:@"p12"];
450
- NSData *privateKeySecretData = [NSData dataWithContentsOfFile:filePath];
451
-
452
- NSString *passphraseForPrivateKey = @"secret";
453
-
454
- JWTBuilder *builder = [JWTBuilder encodePayload:payload].secretData(privateKeySecretData).privateKeyCertificatePassphrase(passphraseForPrivateKey).algorithmName(algorithmName);
455
- NSString *token = builder.encode;
456
-
457
- // check error
458
- if (builder.jwtError == nil) {
459
- // handle result
460
- }
461
- else {
462
- // error occurred.
463
- }
464
-
465
- // Decode
466
- // Suppose, that you get token from previous example. You need a valid public key for a private key in previous example.
467
- // Private key stored in @"secret_key.p12". So, you need public key for that private key.
468
- NSString *publicKey = @"..."; // load public key. Or use it as raw string.
469
-
470
- algorithmName = @"RS256";
471
-
472
- JWTBuilder *decodeBuilder = [JWTBuilder decodeMessage:token].secret(publicKey).algorithmName(algorithmName);
473
- NSDictionary *envelopedPayload = decodeBuilder.decode;
474
-
475
- // check error
476
- if (decodeBuilder.jwtError == nil) {
477
- // handle result
478
- }
479
- else {
480
- // error occurred.
481
- }
482
- ```
483
-
484
-
485
- Additional algorithms can be added by implementing the `JWTAlgorithm` protocol.
486
-
487
- ## Before pull request
488
-
489
- Please, read [Contribution notes](https://github.com/yourkarma/JWT/blob/master/.github/CONTRIBUTING.md) before make pull request.
@@ -1,81 +0,0 @@
1
- #ifndef SSZipCommon
2
- #define SSZipCommon
3
-
4
- /* tm_unz contain date/time info */
5
- typedef struct tm_unz_s
6
- {
7
- unsigned int tm_sec; /* seconds after the minute - [0,59] */
8
- unsigned int tm_min; /* minutes after the hour - [0,59] */
9
- unsigned int tm_hour; /* hours since midnight - [0,23] */
10
- unsigned int tm_mday; /* day of the month - [1,31] */
11
- unsigned int tm_mon; /* months since January - [0,11] */
12
- unsigned int tm_year; /* years - [1980..2044] */
13
- } tm_unz;
14
-
15
- typedef struct unz_file_info_s
16
- {
17
- unsigned long version; /* version made by 2 bytes */
18
- unsigned long version_needed; /* version needed to extract 2 bytes */
19
- unsigned long flag; /* general purpose bit flag 2 bytes */
20
- unsigned long compression_method; /* compression method 2 bytes */
21
- unsigned long dosDate; /* last mod file date in Dos fmt 4 bytes */
22
- unsigned long crc; /* crc-32 4 bytes */
23
- unsigned long compressed_size; /* compressed size 4 bytes */
24
- unsigned long uncompressed_size; /* uncompressed size 4 bytes */
25
- unsigned long size_filename; /* filename length 2 bytes */
26
- unsigned long size_file_extra; /* extra field length 2 bytes */
27
- unsigned long size_file_comment; /* file comment length 2 bytes */
28
-
29
- unsigned long disk_num_start; /* disk number start 2 bytes */
30
- unsigned long internal_fa; /* internal file attributes 2 bytes */
31
- unsigned long external_fa; /* external file attributes 4 bytes */
32
-
33
- tm_unz tmu_date;
34
- } unz_file_info;
35
-
36
- /* unz_file_info contain information about a file in the zipfile */
37
- typedef struct unz_file_info64_s
38
- {
39
- unsigned long version; /* version made by 2 bytes */
40
- unsigned long version_needed; /* version needed to extract 2 bytes */
41
- unsigned long flag; /* general purpose bit flag 2 bytes */
42
- unsigned long compression_method; /* compression method 2 bytes */
43
- unsigned long dosDate; /* last mod file date in Dos fmt 4 bytes */
44
- unsigned long crc; /* crc-32 4 bytes */
45
- unsigned long long compressed_size; /* compressed size 8 bytes */
46
- unsigned long long uncompressed_size; /* uncompressed size 8 bytes */
47
- unsigned long size_filename; /* filename length 2 bytes */
48
- unsigned long size_file_extra; /* extra field length 2 bytes */
49
- unsigned long size_file_comment; /* file comment length 2 bytes */
50
-
51
- unsigned long disk_num_start; /* disk number start 2 bytes */
52
- unsigned long internal_fa; /* internal file attributes 2 bytes */
53
- unsigned long external_fa; /* external file attributes 4 bytes */
54
-
55
- tm_unz tmu_date;
56
- unsigned long long disk_offset;
57
- unsigned long size_file_extra_internal;
58
- } unz_file_info64;
59
-
60
- typedef struct unz_global_info_s
61
- {
62
- unsigned long number_entry; /* total number of entries in
63
- the central dir on this disk */
64
-
65
- unsigned long number_disk_with_CD; /* number the the disk with central dir, used for spanning ZIP*/
66
-
67
-
68
- unsigned long size_comment; /* size of the global comment of the zipfile */
69
- } unz_global_info;
70
-
71
- typedef struct unz_global_info64
72
- {
73
- unsigned long long number_entry; /* total number of entries in
74
- the central dir on this disk */
75
-
76
- unsigned long number_disk_with_CD; /* number the the disk with central dir, used for spanning ZIP*/
77
-
78
- unsigned long size_comment; /* size of the global comment of the zipfile */
79
- } unz_global_info64;
80
-
81
- #endif
@@ -1 +0,0 @@
1
- The source code in this folder is taken from [https://github.com/ZipArchive/ZipArchive/tree/35fe9b6af48527cde0b5db52287474ed3a32d75f/SSZipArchive](https://github.com/ZipArchive/ZipArchive/tree/35fe9b6af48527cde0b5db52287474ed3a32d75f/SSZipArchive) which is [MIT licensed](https://github.com/ZipArchive/ZipArchive/blob/35fe9b6af48527cde0b5db52287474ed3a32d75f/LICENSE.txt).
@@ -1,76 +0,0 @@
1
- //
2
- // SSZipArchive.h
3
- // SSZipArchive
4
- //
5
- // Created by Sam Soffes on 7/21/10.
6
- // Copyright (c) Sam Soffes 2010-2015. All rights reserved.
7
- //
8
-
9
- #ifndef _SSZIPARCHIVE_H
10
- #define _SSZIPARCHIVE_H
11
-
12
- #import <Foundation/Foundation.h>
13
- #include "Common.h"
14
-
15
- @protocol SSZipArchiveDelegate;
16
-
17
- @interface SSZipArchive : NSObject
18
-
19
- // Unzip
20
- + (BOOL)unzipFileAtPath:(NSString *)path toDestination:(NSString *)destination;
21
- + (BOOL)unzipFileAtPath:(NSString *)path toDestination:(NSString *)destination delegate:(id<SSZipArchiveDelegate>)delegate;
22
-
23
- + (BOOL)unzipFileAtPath:(NSString *)path toDestination:(NSString *)destination overwrite:(BOOL)overwrite password:(NSString *)password error:(NSError * *)error;
24
- + (BOOL)unzipFileAtPath:(NSString *)path toDestination:(NSString *)destination overwrite:(BOOL)overwrite password:(NSString *)password error:(NSError * *)error delegate:(id<SSZipArchiveDelegate>)delegate;
25
-
26
- + (BOOL)unzipFileAtPath:(NSString *)path
27
- toDestination:(NSString *)destination
28
- progressHandler:(void (^)(NSString *entry, unz_file_info zipInfo, long entryNumber, long total))progressHandler
29
- completionHandler:(void (^)(NSString *path, BOOL succeeded, NSError *error))completionHandler;
30
-
31
- + (BOOL)unzipFileAtPath:(NSString *)path
32
- toDestination:(NSString *)destination
33
- overwrite:(BOOL)overwrite
34
- password:(NSString *)password
35
- progressHandler:(void (^)(NSString *entry, unz_file_info zipInfo, long entryNumber, long total))progressHandler
36
- completionHandler:(void (^)(NSString *path, BOOL succeeded, NSError *error))completionHandler;
37
-
38
- // Zip
39
-
40
- // without password
41
- + (BOOL)createZipFileAtPath:(NSString *)path withFilesAtPaths:(NSArray *)paths;
42
- + (BOOL)createZipFileAtPath:(NSString *)path withContentsOfDirectory:(NSString *)directoryPath;
43
- + (BOOL)createZipFileAtPath:(NSString *)path withContentsOfDirectory:(NSString *)directoryPath keepParentDirectory:(BOOL)keepParentDirector;
44
-
45
- // with password, password could be nil
46
- + (BOOL)createZipFileAtPath:(NSString *)path withFilesAtPaths:(NSArray *)paths withPassword:(NSString *)password;
47
- + (BOOL)createZipFileAtPath:(NSString *)path withContentsOfDirectory:(NSString *)directoryPath withPassword:(NSString *)password;
48
- + (BOOL)createZipFileAtPath:(NSString *)path withContentsOfDirectory:(NSString *)directoryPath keepParentDirectory:(BOOL)keepParentDirectory withPassword:(NSString *)password;
49
-
50
- - (instancetype)initWithPath:(NSString *)path;
51
- @property (NS_NONATOMIC_IOSONLY, readonly, getter = isOpen) BOOL open;
52
- - (BOOL)writeFile:(NSString *)path withPassword:(NSString *)password;
53
- - (BOOL)writeFileAtPath:(NSString *)path withFileName:(NSString *)fileName withPassword:(NSString *)password;
54
- - (BOOL)writeData:(NSData *)data filename:(NSString *)filename withPassword:(NSString *)password;
55
- @property (NS_NONATOMIC_IOSONLY, readonly, getter = isClosed) BOOL close;
56
-
57
- @end
58
-
59
- @protocol SSZipArchiveDelegate <NSObject>
60
-
61
- @optional
62
-
63
- - (void)zipArchiveWillUnzipArchiveAtPath:(NSString *)path zipInfo:(unz_global_info)zipInfo;
64
- - (void)zipArchiveDidUnzipArchiveAtPath:(NSString *)path zipInfo:(unz_global_info)zipInfo unzippedPath:(NSString *)unzippedPath;
65
-
66
- - (BOOL)zipArchiveShouldUnzipFileAtIndex:(NSInteger)fileIndex totalFiles:(NSInteger)totalFiles archivePath:(NSString *)archivePath fileInfo:(unz_file_info)fileInfo;
67
- - (void)zipArchiveWillUnzipFileAtIndex:(NSInteger)fileIndex totalFiles:(NSInteger)totalFiles archivePath:(NSString *)archivePath fileInfo:(unz_file_info)fileInfo;
68
- - (void)zipArchiveDidUnzipFileAtIndex:(NSInteger)fileIndex totalFiles:(NSInteger)totalFiles archivePath:(NSString *)archivePath fileInfo:(unz_file_info)fileInfo;
69
- - (void)zipArchiveDidUnzipFileAtIndex:(NSInteger)fileIndex totalFiles:(NSInteger)totalFiles archivePath:(NSString *)archivePath unzippedFilePath:(NSString *)unzippedFilePath;
70
-
71
- - (void)zipArchiveProgressEvent:(unsigned long long)loaded total:(unsigned long long)total;
72
- - (void)zipArchiveDidUnzipArchiveFile:(NSString *)zipFile entryPath:(NSString *)entryPath destPath:(NSString *)destPath;
73
-
74
- @end
75
-
76
- #endif /* _SSZIPARCHIVE_H */