@appzung/react-native-code-push 9.0.2 → 10.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.
- package/CodePush.podspec +1 -0
- package/LICENSE.md +1 -1
- package/README.md +169 -329
- package/android/app/.gradle/config.properties +2 -0
- package/android/app/build.gradle +63 -19
- package/android/app/local.properties +8 -0
- package/android/app/src/main/AndroidManifest.xml +2 -3
- package/android/app/src/main/AndroidManifestNew.xml +3 -0
- package/android/app/src/main/java/com/{microsoft → appzung}/codepush/react/CodePush.java +35 -97
- package/android/app/src/main/java/com/{microsoft → appzung}/codepush/react/CodePushConstants.java +1 -1
- package/android/app/src/main/java/com/{microsoft → appzung}/codepush/react/CodePushInstallMode.java +2 -2
- package/android/app/src/main/java/com/{microsoft → appzung}/codepush/react/CodePushInvalidPublicKeyException.java +2 -2
- package/android/app/src/main/java/com/{microsoft → appzung}/codepush/react/CodePushInvalidUpdateException.java +1 -1
- package/android/app/src/main/java/com/{microsoft → appzung}/codepush/react/CodePushMalformedDataException.java +2 -2
- package/android/app/src/main/java/com/{microsoft → appzung}/codepush/react/CodePushNativeModule.java +37 -8
- package/android/app/src/main/java/com/{microsoft → appzung}/codepush/react/CodePushNotInitializedException.java +2 -2
- package/android/app/src/main/java/com/{microsoft → appzung}/codepush/react/CodePushTelemetryManager.java +14 -14
- package/android/app/src/main/java/com/{microsoft → appzung}/codepush/react/CodePushUnknownException.java +2 -2
- package/android/app/src/main/java/com/{microsoft → appzung}/codepush/react/CodePushUpdateManager.java +3 -3
- package/android/app/src/main/java/com/{microsoft → appzung}/codepush/react/CodePushUpdateState.java +2 -2
- package/android/app/src/main/java/com/{microsoft → appzung}/codepush/react/CodePushUpdateUtils.java +1 -1
- package/android/app/src/main/java/com/{microsoft → appzung}/codepush/react/CodePushUtils.java +1 -1
- package/android/app/src/main/java/com/{microsoft → appzung}/codepush/react/DownloadProgress.java +1 -1
- package/android/app/src/main/java/com/{microsoft → appzung}/codepush/react/DownloadProgressCallback.java +1 -1
- package/android/app/src/main/java/com/{microsoft → appzung}/codepush/react/FileUtils.java +1 -1
- package/android/app/src/main/java/com/{microsoft → appzung}/codepush/react/ReactInstanceHolder.java +1 -1
- package/android/app/src/main/java/com/{microsoft → appzung}/codepush/react/SettingsManager.java +1 -1
- package/android/app/src/main/java/com/{microsoft → appzung}/codepush/react/TLSSocketFactory.java +1 -1
- package/android/build.gradle +1 -11
- package/android/codepush.gradle +3 -3
- package/android/gradle/wrapper/gradle-wrapper.properties +1 -1
- package/android/gradle.properties +4 -20
- package/docs/advanced-usage.md +56 -0
- package/docs/api-android.md +16 -77
- package/docs/api-ios.md +9 -21
- package/docs/api-js.md +184 -219
- package/docs/code-signing.md +62 -0
- package/docs/migrating-to-v10.md +31 -0
- package/docs/setup-android.md +54 -463
- package/docs/setup-ios.md +37 -208
- package/docs/setup-windows.md +8 -74
- package/ios/CodePush/CodePush.h +4 -4
- package/ios/CodePush/CodePush.m +21 -65
- package/ios/CodePush/CodePushConfig.m +14 -11
- package/ios/CodePush/CodePushPackage.m +60 -60
- package/ios/CodePush/CodePushTelemetryManager.m +13 -13
- package/ios/CodePush.xcodeproj/project.pbxproj +1 -562
- package/lib/commonjs/CodePush.js +90 -0
- package/lib/commonjs/CodePush.js.map +1 -0
- package/lib/commonjs/allowRestart.js +12 -0
- package/lib/commonjs/allowRestart.js.map +1 -0
- package/lib/commonjs/checkForUpdates.js +105 -0
- package/lib/commonjs/checkForUpdates.js.map +1 -0
- package/lib/commonjs/clearUpdates.js +15 -0
- package/lib/commonjs/clearUpdates.js.map +1 -0
- package/lib/commonjs/disallowRestart.js +12 -0
- package/lib/commonjs/disallowRestart.js.map +1 -0
- package/lib/commonjs/enums/CheckFrequency.enum.js +25 -0
- package/lib/commonjs/enums/CheckFrequency.enum.js.map +1 -0
- package/lib/commonjs/enums/DeploymentStatus.enum.js +21 -0
- package/lib/commonjs/enums/DeploymentStatus.enum.js.map +1 -0
- package/lib/commonjs/enums/InstallMode.enum.js +35 -0
- package/lib/commonjs/enums/InstallMode.enum.js.map +1 -0
- package/lib/commonjs/enums/SyncStatus.enum.js +53 -0
- package/lib/commonjs/enums/SyncStatus.enum.js.map +1 -0
- package/lib/commonjs/enums/UpdateState.enum.js +29 -0
- package/lib/commonjs/enums/UpdateState.enum.js.map +1 -0
- package/lib/commonjs/getUpdateMetadata.js +25 -0
- package/lib/commonjs/getUpdateMetadata.js.map +1 -0
- package/lib/commonjs/index.js +195 -0
- package/lib/commonjs/index.js.map +1 -0
- package/lib/commonjs/internals/AcquisitionSdk.js +9 -0
- package/lib/commonjs/internals/AcquisitionSdk.js.map +1 -0
- package/lib/commonjs/internals/LocalPackageImplementation.js +29 -0
- package/lib/commonjs/internals/LocalPackageImplementation.js.map +1 -0
- package/lib/commonjs/internals/NativeRNAppZungCodePushModule.js +8 -0
- package/lib/commonjs/internals/NativeRNAppZungCodePushModule.js.map +1 -0
- package/lib/commonjs/internals/RNAppZungCodePushModuleSpec.js +6 -0
- package/lib/commonjs/internals/RNAppZungCodePushModuleSpec.js.map +1 -0
- package/lib/commonjs/internals/RemotePackageImplementation.js +49 -0
- package/lib/commonjs/internals/RemotePackageImplementation.js.map +1 -0
- package/lib/commonjs/internals/getConfiguration.js +15 -0
- package/lib/commonjs/internals/getConfiguration.js.map +1 -0
- package/lib/commonjs/internals/getCurrentPackage.js +12 -0
- package/lib/commonjs/internals/getCurrentPackage.js.map +1 -0
- package/lib/commonjs/internals/getPromisifiedSdk.js +49 -0
- package/lib/commonjs/internals/getPromisifiedSdk.js.map +1 -0
- package/lib/commonjs/internals/shouldUpdateBeIgnored.js +62 -0
- package/lib/commonjs/internals/shouldUpdateBeIgnored.js.map +1 -0
- package/lib/commonjs/internals/types.js +6 -0
- package/lib/commonjs/internals/types.js.map +1 -0
- package/lib/commonjs/internals/utils/log.js +11 -0
- package/lib/commonjs/internals/utils/log.js.map +1 -0
- package/lib/commonjs/internals/utils/request-fetch-adapter.js +50 -0
- package/lib/commonjs/internals/utils/request-fetch-adapter.js.map +1 -0
- package/lib/commonjs/internals/version.js +9 -0
- package/lib/commonjs/internals/version.js.map +1 -0
- package/lib/commonjs/notifyAppReady.js +83 -0
- package/lib/commonjs/notifyAppReady.js.map +1 -0
- package/lib/commonjs/reactNative.d.js +2 -0
- package/lib/commonjs/reactNative.d.js.map +1 -0
- package/lib/commonjs/restartApp.js +16 -0
- package/lib/commonjs/restartApp.js.map +1 -0
- package/lib/commonjs/sync.js +219 -0
- package/lib/commonjs/sync.js.map +1 -0
- package/lib/commonjs/types.js +6 -0
- package/lib/commonjs/types.js.map +1 -0
- package/lib/module/CodePush.js +84 -0
- package/lib/module/CodePush.js.map +1 -0
- package/lib/module/allowRestart.js +9 -0
- package/lib/module/allowRestart.js.map +1 -0
- package/lib/module/checkForUpdates.js +101 -0
- package/lib/module/checkForUpdates.js.map +1 -0
- package/lib/module/clearUpdates.js +12 -0
- package/lib/module/clearUpdates.js.map +1 -0
- package/lib/module/disallowRestart.js +9 -0
- package/lib/module/disallowRestart.js.map +1 -0
- package/lib/module/enums/CheckFrequency.enum.js +21 -0
- package/lib/module/enums/CheckFrequency.enum.js.map +1 -0
- package/lib/module/enums/DeploymentStatus.enum.js +17 -0
- package/lib/module/enums/DeploymentStatus.enum.js.map +1 -0
- package/lib/module/enums/InstallMode.enum.js +32 -0
- package/lib/module/enums/InstallMode.enum.js.map +1 -0
- package/lib/module/enums/SyncStatus.enum.js +49 -0
- package/lib/module/enums/SyncStatus.enum.js.map +1 -0
- package/lib/module/enums/UpdateState.enum.js +26 -0
- package/lib/module/enums/UpdateState.enum.js.map +1 -0
- package/lib/module/getUpdateMetadata.js +21 -0
- package/lib/module/getUpdateMetadata.js.map +1 -0
- package/lib/module/index.js +19 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/internals/AcquisitionSdk.js +5 -0
- package/lib/module/internals/AcquisitionSdk.js.map +1 -0
- package/lib/module/internals/LocalPackageImplementation.js +24 -0
- package/lib/module/internals/LocalPackageImplementation.js.map +1 -0
- package/lib/module/internals/NativeRNAppZungCodePushModule.js +4 -0
- package/lib/module/internals/NativeRNAppZungCodePushModule.js.map +1 -0
- package/lib/module/internals/RNAppZungCodePushModuleSpec.js +4 -0
- package/lib/module/internals/RNAppZungCodePushModuleSpec.js.map +1 -0
- package/lib/module/internals/RemotePackageImplementation.js +44 -0
- package/lib/module/internals/RemotePackageImplementation.js.map +1 -0
- package/lib/module/internals/getConfiguration.js +11 -0
- package/lib/module/internals/getConfiguration.js.map +1 -0
- package/lib/module/internals/getCurrentPackage.js +8 -0
- package/lib/module/internals/getCurrentPackage.js.map +1 -0
- package/lib/module/internals/getPromisifiedSdk.js +45 -0
- package/lib/module/internals/getPromisifiedSdk.js.map +1 -0
- package/lib/module/internals/shouldUpdateBeIgnored.js +58 -0
- package/lib/module/internals/shouldUpdateBeIgnored.js.map +1 -0
- package/lib/module/internals/types.js +4 -0
- package/lib/module/internals/types.js.map +1 -0
- package/lib/module/internals/utils/log.js +7 -0
- package/lib/module/internals/utils/log.js.map +1 -0
- package/lib/module/internals/utils/request-fetch-adapter.js +46 -0
- package/lib/module/internals/utils/request-fetch-adapter.js.map +1 -0
- package/lib/module/internals/version.js +5 -0
- package/lib/module/internals/version.js.map +1 -0
- package/lib/module/notifyAppReady.js +79 -0
- package/lib/module/notifyAppReady.js.map +1 -0
- package/lib/module/reactNative.d.js +2 -0
- package/lib/module/reactNative.d.js.map +1 -0
- package/lib/module/restartApp.js +13 -0
- package/lib/module/restartApp.js.map +1 -0
- package/lib/module/sync.js +215 -0
- package/lib/module/sync.js.map +1 -0
- package/lib/module/types.js +4 -0
- package/lib/module/types.js.map +1 -0
- package/lib/typescript/commonjs/package.json +1 -0
- package/lib/typescript/commonjs/src/CodePush.d.ts +24 -0
- package/lib/typescript/commonjs/src/CodePush.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/allowRestart.d.ts +5 -0
- package/lib/typescript/commonjs/src/allowRestart.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/checkForUpdates.d.ts +9 -0
- package/lib/typescript/commonjs/src/checkForUpdates.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/clearUpdates.d.ts +8 -0
- package/lib/typescript/commonjs/src/clearUpdates.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/disallowRestart.d.ts +5 -0
- package/lib/typescript/commonjs/src/disallowRestart.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/enums/CheckFrequency.enum.d.ts +18 -0
- package/lib/typescript/commonjs/src/enums/CheckFrequency.enum.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/enums/DeploymentStatus.enum.d.ts +14 -0
- package/lib/typescript/commonjs/src/enums/DeploymentStatus.enum.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/enums/InstallMode.enum.d.ts +27 -0
- package/lib/typescript/commonjs/src/enums/InstallMode.enum.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/enums/SyncStatus.enum.d.ts +46 -0
- package/lib/typescript/commonjs/src/enums/SyncStatus.enum.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/enums/UpdateState.enum.d.ts +21 -0
- package/lib/typescript/commonjs/src/enums/UpdateState.enum.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/getUpdateMetadata.d.ts +9 -0
- package/lib/typescript/commonjs/src/getUpdateMetadata.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/index.d.ts +17 -0
- package/lib/typescript/commonjs/src/index.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/internals/AcquisitionSdk.d.ts +3 -0
- package/lib/typescript/commonjs/src/internals/AcquisitionSdk.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/internals/LocalPackageImplementation.d.ts +17 -0
- package/lib/typescript/commonjs/src/internals/LocalPackageImplementation.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/internals/NativeRNAppZungCodePushModule.d.ts +3 -0
- package/lib/typescript/commonjs/src/internals/NativeRNAppZungCodePushModule.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/internals/RNAppZungCodePushModuleSpec.d.ts +36 -0
- package/lib/typescript/commonjs/src/internals/RNAppZungCodePushModuleSpec.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/internals/RemotePackageImplementation.d.ts +18 -0
- package/lib/typescript/commonjs/src/internals/RemotePackageImplementation.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/internals/getConfiguration.d.ts +3 -0
- package/lib/typescript/commonjs/src/internals/getConfiguration.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/internals/getCurrentPackage.d.ts +2 -0
- package/lib/typescript/commonjs/src/internals/getCurrentPackage.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/internals/getPromisifiedSdk.d.ts +13 -0
- package/lib/typescript/commonjs/src/internals/getPromisifiedSdk.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/internals/shouldUpdateBeIgnored.d.ts +3 -0
- package/lib/typescript/commonjs/src/internals/shouldUpdateBeIgnored.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/internals/types.d.ts +16 -0
- package/lib/typescript/commonjs/src/internals/types.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/internals/utils/log.d.ts +2 -0
- package/lib/typescript/commonjs/src/internals/utils/log.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/internals/utils/request-fetch-adapter.d.ts +3 -0
- package/lib/typescript/commonjs/src/internals/utils/request-fetch-adapter.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/internals/version.d.ts +2 -0
- package/lib/typescript/commonjs/src/internals/version.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/notifyAppReady.d.ts +6 -0
- package/lib/typescript/commonjs/src/notifyAppReady.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/restartApp.d.ts +7 -0
- package/lib/typescript/commonjs/src/restartApp.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/sync.d.ts +17 -0
- package/lib/typescript/commonjs/src/sync.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/types.d.ts +196 -0
- package/lib/typescript/commonjs/src/types.d.ts.map +1 -0
- package/lib/typescript/module/package.json +1 -0
- package/lib/typescript/module/src/CodePush.d.ts +24 -0
- package/lib/typescript/module/src/CodePush.d.ts.map +1 -0
- package/lib/typescript/module/src/allowRestart.d.ts +5 -0
- package/lib/typescript/module/src/allowRestart.d.ts.map +1 -0
- package/lib/typescript/module/src/checkForUpdates.d.ts +9 -0
- package/lib/typescript/module/src/checkForUpdates.d.ts.map +1 -0
- package/lib/typescript/module/src/clearUpdates.d.ts +8 -0
- package/lib/typescript/module/src/clearUpdates.d.ts.map +1 -0
- package/lib/typescript/module/src/disallowRestart.d.ts +5 -0
- package/lib/typescript/module/src/disallowRestart.d.ts.map +1 -0
- package/lib/typescript/module/src/enums/CheckFrequency.enum.d.ts +18 -0
- package/lib/typescript/module/src/enums/CheckFrequency.enum.d.ts.map +1 -0
- package/lib/typescript/module/src/enums/DeploymentStatus.enum.d.ts +14 -0
- package/lib/typescript/module/src/enums/DeploymentStatus.enum.d.ts.map +1 -0
- package/lib/typescript/module/src/enums/InstallMode.enum.d.ts +27 -0
- package/lib/typescript/module/src/enums/InstallMode.enum.d.ts.map +1 -0
- package/lib/typescript/module/src/enums/SyncStatus.enum.d.ts +46 -0
- package/lib/typescript/module/src/enums/SyncStatus.enum.d.ts.map +1 -0
- package/lib/typescript/module/src/enums/UpdateState.enum.d.ts +21 -0
- package/lib/typescript/module/src/enums/UpdateState.enum.d.ts.map +1 -0
- package/lib/typescript/module/src/getUpdateMetadata.d.ts +9 -0
- package/lib/typescript/module/src/getUpdateMetadata.d.ts.map +1 -0
- package/lib/typescript/module/src/index.d.ts +17 -0
- package/lib/typescript/module/src/index.d.ts.map +1 -0
- package/lib/typescript/module/src/internals/AcquisitionSdk.d.ts +3 -0
- package/lib/typescript/module/src/internals/AcquisitionSdk.d.ts.map +1 -0
- package/lib/typescript/module/src/internals/LocalPackageImplementation.d.ts +17 -0
- package/lib/typescript/module/src/internals/LocalPackageImplementation.d.ts.map +1 -0
- package/lib/typescript/module/src/internals/NativeRNAppZungCodePushModule.d.ts +3 -0
- package/lib/typescript/module/src/internals/NativeRNAppZungCodePushModule.d.ts.map +1 -0
- package/lib/typescript/module/src/internals/RNAppZungCodePushModuleSpec.d.ts +36 -0
- package/lib/typescript/module/src/internals/RNAppZungCodePushModuleSpec.d.ts.map +1 -0
- package/lib/typescript/module/src/internals/RemotePackageImplementation.d.ts +18 -0
- package/lib/typescript/module/src/internals/RemotePackageImplementation.d.ts.map +1 -0
- package/lib/typescript/module/src/internals/getConfiguration.d.ts +3 -0
- package/lib/typescript/module/src/internals/getConfiguration.d.ts.map +1 -0
- package/lib/typescript/module/src/internals/getCurrentPackage.d.ts +2 -0
- package/lib/typescript/module/src/internals/getCurrentPackage.d.ts.map +1 -0
- package/lib/typescript/module/src/internals/getPromisifiedSdk.d.ts +13 -0
- package/lib/typescript/module/src/internals/getPromisifiedSdk.d.ts.map +1 -0
- package/lib/typescript/module/src/internals/shouldUpdateBeIgnored.d.ts +3 -0
- package/lib/typescript/module/src/internals/shouldUpdateBeIgnored.d.ts.map +1 -0
- package/lib/typescript/module/src/internals/types.d.ts +16 -0
- package/lib/typescript/module/src/internals/types.d.ts.map +1 -0
- package/lib/typescript/module/src/internals/utils/log.d.ts +2 -0
- package/lib/typescript/module/src/internals/utils/log.d.ts.map +1 -0
- package/lib/typescript/module/src/internals/utils/request-fetch-adapter.d.ts +3 -0
- package/lib/typescript/module/src/internals/utils/request-fetch-adapter.d.ts.map +1 -0
- package/lib/typescript/module/src/internals/version.d.ts +2 -0
- package/lib/typescript/module/src/internals/version.d.ts.map +1 -0
- package/lib/typescript/module/src/notifyAppReady.d.ts +6 -0
- package/lib/typescript/module/src/notifyAppReady.d.ts.map +1 -0
- package/lib/typescript/module/src/restartApp.d.ts +7 -0
- package/lib/typescript/module/src/restartApp.d.ts.map +1 -0
- package/lib/typescript/module/src/sync.d.ts +17 -0
- package/lib/typescript/module/src/sync.d.ts.map +1 -0
- package/lib/typescript/module/src/types.d.ts +196 -0
- package/lib/typescript/module/src/types.d.ts.map +1 -0
- package/package.json +79 -29
- package/react-native.config.js +8 -8
- package/scripts/generateBundledResourcesHash.js +1 -1
- package/scripts/getFilesInFolder.js +1 -1
- package/scripts/recordFilesBeforeBundleCommand.js +1 -1
- package/src/CodePush.tsx +108 -0
- package/src/allowRestart.ts +6 -0
- package/src/checkForUpdates.ts +109 -0
- package/src/clearUpdates.ts +9 -0
- package/src/disallowRestart.ts +6 -0
- package/src/enums/CheckFrequency.enum.ts +19 -0
- package/src/enums/DeploymentStatus.enum.ts +14 -0
- package/src/enums/InstallMode.enum.ts +31 -0
- package/src/enums/SyncStatus.enum.ts +53 -0
- package/src/enums/UpdateState.enum.ts +24 -0
- package/src/getUpdateMetadata.ts +23 -0
- package/src/index.ts +18 -0
- package/src/internals/AcquisitionSdk.ts +3 -0
- package/src/internals/LocalPackageImplementation.ts +45 -0
- package/src/internals/NativeRNAppZungCodePushModule.ts +3 -0
- package/src/internals/RNAppZungCodePushModuleSpec.ts +54 -0
- package/src/internals/RemotePackageImplementation.ts +69 -0
- package/src/internals/getConfiguration.ts +12 -0
- package/src/internals/getCurrentPackage.ts +6 -0
- package/src/internals/getPromisifiedSdk.ts +72 -0
- package/src/internals/shouldUpdateBeIgnored.ts +76 -0
- package/src/internals/types.ts +18 -0
- package/{logging.js → src/internals/utils/log.ts} +1 -3
- package/src/internals/utils/request-fetch-adapter.ts +58 -0
- package/src/internals/version.ts +2 -0
- package/src/notifyAppReady.ts +94 -0
- package/src/reactNative.d.ts +34 -0
- package/src/restartApp.ts +10 -0
- package/src/sync.ts +272 -0
- package/src/types.ts +237 -0
- package/tsconfig.build.json +4 -0
- package/tsconfig.json +29 -12
- package/windows/CodePush/CodePushConfig.cpp +3 -3
- package/windows/CodePush/CodePushConfig.h +3 -3
- package/windows/CodePush/CodePushNativeModule.cpp +27 -27
- package/windows/CodePush/CodePushNativeModule.h +4 -4
- package/windows/CodePush/CodePushTelemetryManager.cpp +12 -12
- package/windows/CodePush/CodePushTelemetryManager.h +1 -1
- package/.azurepipelines/build-rn-code-push-1es.yml +0 -104
- package/.azurepipelines/test-rn-code-push.yml +0 -94
- package/.config/CredScanSuppressions.json +0 -14
- package/AlertAdapter.js +0 -24
- package/CONTRIBUTING.md +0 -134
- package/CodePush.js +0 -671
- package/SECURITY.md +0 -41
- package/android/app/src/main/java/com/microsoft/codepush/react/CodePushBuilder.java +0 -37
- package/android/app/src/main/java/com/microsoft/codepush/react/CodePushDialog.java +0 -102
- package/docs/multi-deployment-testing-android.md +0 -148
- package/docs/multi-deployment-testing-ios.md +0 -59
- package/ios/CodePush/Base64/Base64/MF_Base64Additions.h +0 -34
- package/ios/CodePush/Base64/Base64/MF_Base64Additions.m +0 -252
- package/ios/CodePush/Base64/README.md +0 -47
- package/ios/CodePush/JWT/Core/Algorithms/Base/JWTAlgorithm.h +0 -69
- package/ios/CodePush/JWT/Core/Algorithms/Base/JWTAlgorithmFactory.h +0 -16
- package/ios/CodePush/JWT/Core/Algorithms/Base/JWTAlgorithmFactory.m +0 -51
- package/ios/CodePush/JWT/Core/Algorithms/Base/JWTAlgorithmNone.h +0 -15
- package/ios/CodePush/JWT/Core/Algorithms/Base/JWTAlgorithmNone.m +0 -55
- package/ios/CodePush/JWT/Core/Algorithms/ESFamily/JWTAlgorithmESBase.h +0 -24
- package/ios/CodePush/JWT/Core/Algorithms/ESFamily/JWTAlgorithmESBase.m +0 -41
- package/ios/CodePush/JWT/Core/Algorithms/HSFamily/JWTAlgorithmHSBase.h +0 -28
- package/ios/CodePush/JWT/Core/Algorithms/HSFamily/JWTAlgorithmHSBase.m +0 -205
- package/ios/CodePush/JWT/Core/Algorithms/Holders/JWTAlgorithmDataHolder.h +0 -103
- package/ios/CodePush/JWT/Core/Algorithms/Holders/JWTAlgorithmDataHolder.m +0 -322
- package/ios/CodePush/JWT/Core/Algorithms/Holders/JWTAlgorithmDataHolderChain.h +0 -37
- package/ios/CodePush/JWT/Core/Algorithms/Holders/JWTAlgorithmDataHolderChain.m +0 -145
- package/ios/CodePush/JWT/Core/Algorithms/RSFamily/JWTAlgorithmRSBase.h +0 -35
- package/ios/CodePush/JWT/Core/Algorithms/RSFamily/JWTAlgorithmRSBase.m +0 -551
- package/ios/CodePush/JWT/Core/Algorithms/RSFamily/JWTRSAlgorithm.h +0 -23
- package/ios/CodePush/JWT/Core/Algorithms/RSFamily/RSKeys/JWTCryptoKey.h +0 -43
- package/ios/CodePush/JWT/Core/Algorithms/RSFamily/RSKeys/JWTCryptoKey.m +0 -230
- package/ios/CodePush/JWT/Core/Algorithms/RSFamily/RSKeys/JWTCryptoKeyExtractor.h +0 -31
- package/ios/CodePush/JWT/Core/Algorithms/RSFamily/RSKeys/JWTCryptoKeyExtractor.m +0 -113
- package/ios/CodePush/JWT/Core/Algorithms/RSFamily/RSKeys/JWTCryptoSecurity.h +0 -38
- package/ios/CodePush/JWT/Core/Algorithms/RSFamily/RSKeys/JWTCryptoSecurity.m +0 -500
- package/ios/CodePush/JWT/Core/ClaimSet/JWTClaim.h +0 -18
- package/ios/CodePush/JWT/Core/ClaimSet/JWTClaim.m +0 -214
- package/ios/CodePush/JWT/Core/ClaimSet/JWTClaimsSet.h +0 -23
- package/ios/CodePush/JWT/Core/ClaimSet/JWTClaimsSet.m +0 -29
- package/ios/CodePush/JWT/Core/ClaimSet/JWTClaimsSetSerializer.h +0 -19
- package/ios/CodePush/JWT/Core/ClaimSet/JWTClaimsSetSerializer.m +0 -68
- package/ios/CodePush/JWT/Core/ClaimSet/JWTClaimsSetVerifier.h +0 -18
- package/ios/CodePush/JWT/Core/ClaimSet/JWTClaimsSetVerifier.m +0 -72
- package/ios/CodePush/JWT/Core/Coding/JWTCoding+ResultTypes.h +0 -67
- package/ios/CodePush/JWT/Core/Coding/JWTCoding+ResultTypes.m +0 -111
- package/ios/CodePush/JWT/Core/Coding/JWTCoding+VersionOne.h +0 -119
- package/ios/CodePush/JWT/Core/Coding/JWTCoding+VersionOne.m +0 -307
- package/ios/CodePush/JWT/Core/Coding/JWTCoding+VersionThree.h +0 -94
- package/ios/CodePush/JWT/Core/Coding/JWTCoding+VersionThree.m +0 -619
- package/ios/CodePush/JWT/Core/Coding/JWTCoding+VersionTwo.h +0 -164
- package/ios/CodePush/JWT/Core/Coding/JWTCoding+VersionTwo.m +0 -514
- package/ios/CodePush/JWT/Core/Coding/JWTCoding.h +0 -24
- package/ios/CodePush/JWT/Core/Coding/JWTCoding.m +0 -11
- package/ios/CodePush/JWT/Core/FrameworkSupplement/JWT.h +0 -52
- package/ios/CodePush/JWT/Core/FrameworkSupplement/Map.modulemap +0 -5
- package/ios/CodePush/JWT/Core/Supplement/JWTBase64Coder.h +0 -28
- package/ios/CodePush/JWT/Core/Supplement/JWTBase64Coder.m +0 -70
- package/ios/CodePush/JWT/Core/Supplement/JWTDeprecations.h +0 -22
- package/ios/CodePush/JWT/Core/Supplement/JWTErrorDescription.h +0 -34
- package/ios/CodePush/JWT/Core/Supplement/JWTErrorDescription.m +0 -73
- package/ios/CodePush/JWT/LICENSE +0 -19
- package/ios/CodePush/JWT/README.md +0 -489
- package/ios/CodePush/SSZipArchive/Info.plist +0 -26
- package/ios/CodePush/SSZipArchive/README.md +0 -1
- package/ios/CodePush/SSZipArchive/SSZipArchive.h +0 -178
- package/ios/CodePush/SSZipArchive/SSZipArchive.m +0 -1496
- package/ios/CodePush/SSZipArchive/SSZipCommon.h +0 -71
- package/ios/CodePush/SSZipArchive/Supporting Files/PrivacyInfo.xcprivacy +0 -23
- package/ios/CodePush/SSZipArchive/include/ZipArchive.h +0 -25
- package/ios/CodePush/SSZipArchive/minizip/LICENSE +0 -17
- package/ios/CodePush/SSZipArchive/minizip/mz.h +0 -273
- package/ios/CodePush/SSZipArchive/minizip/mz_compat.c +0 -1306
- package/ios/CodePush/SSZipArchive/minizip/mz_compat.h +0 -346
- package/ios/CodePush/SSZipArchive/minizip/mz_crypt.c +0 -187
- package/ios/CodePush/SSZipArchive/minizip/mz_crypt.h +0 -65
- package/ios/CodePush/SSZipArchive/minizip/mz_crypt_apple.c +0 -526
- package/ios/CodePush/SSZipArchive/minizip/mz_os.c +0 -348
- package/ios/CodePush/SSZipArchive/minizip/mz_os.h +0 -176
- package/ios/CodePush/SSZipArchive/minizip/mz_os_posix.c +0 -350
- package/ios/CodePush/SSZipArchive/minizip/mz_strm.c +0 -556
- package/ios/CodePush/SSZipArchive/minizip/mz_strm.h +0 -132
- package/ios/CodePush/SSZipArchive/minizip/mz_strm_buf.c +0 -383
- package/ios/CodePush/SSZipArchive/minizip/mz_strm_buf.h +0 -42
- package/ios/CodePush/SSZipArchive/minizip/mz_strm_mem.c +0 -269
- package/ios/CodePush/SSZipArchive/minizip/mz_strm_mem.h +0 -48
- package/ios/CodePush/SSZipArchive/minizip/mz_strm_os.h +0 -40
- package/ios/CodePush/SSZipArchive/minizip/mz_strm_os_posix.c +0 -203
- package/ios/CodePush/SSZipArchive/minizip/mz_strm_pkcrypt.c +0 -334
- package/ios/CodePush/SSZipArchive/minizip/mz_strm_pkcrypt.h +0 -46
- package/ios/CodePush/SSZipArchive/minizip/mz_strm_split.c +0 -429
- package/ios/CodePush/SSZipArchive/minizip/mz_strm_split.h +0 -43
- package/ios/CodePush/SSZipArchive/minizip/mz_strm_wzaes.c +0 -360
- package/ios/CodePush/SSZipArchive/minizip/mz_strm_wzaes.h +0 -46
- package/ios/CodePush/SSZipArchive/minizip/mz_strm_zlib.c +0 -389
- package/ios/CodePush/SSZipArchive/minizip/mz_strm_zlib.h +0 -43
- package/ios/CodePush/SSZipArchive/minizip/mz_zip.c +0 -2782
- package/ios/CodePush/SSZipArchive/minizip/mz_zip.h +0 -262
- package/ios/CodePush/SSZipArchive/minizip/mz_zip_rw.c +0 -1942
- package/ios/CodePush/SSZipArchive/minizip/mz_zip_rw.h +0 -285
- package/package-mixins.js +0 -68
- package/request-fetch-adapter.js +0 -52
- package/scripts/postlink/android/postlink.js +0 -87
- package/scripts/postlink/ios/postlink.js +0 -116
- package/scripts/postlink/run.js +0 -11
- package/scripts/postunlink/android/postunlink.js +0 -74
- package/scripts/postunlink/ios/postunlink.js +0 -87
- package/scripts/postunlink/run.js +0 -11
- package/scripts/tools/linkToolsAndroid.js +0 -57
- package/scripts/tools/linkToolsIos.js +0 -130
- package/tslint.json +0 -32
- package/typings/react-native-code-push.d.ts +0 -455
- package/windows-legacy/CodePush/CodePush.csproj +0 -128
- package/windows-legacy/CodePush/CodePushUtils.cs +0 -47
- package/windows-legacy/CodePush/FileUtils.cs +0 -40
- package/windows-legacy/CodePush/Properties/AssemblyInfo.cs +0 -29
- package/windows-legacy/CodePush/Properties/CodePush.rd.xml +0 -33
- package/windows-legacy/CodePush/UpdateManager.cs +0 -305
- package/windows-legacy/CodePush/UpdateUtils.cs +0 -46
- package/windows-legacy/CodePush.Net46/Adapters/Http/HttpProgress.cs +0 -28
- package/windows-legacy/CodePush.Net46/Adapters/Storage/ApplicationDataContainer.cs +0 -106
- package/windows-legacy/CodePush.Net46/CodePush.Net46.csproj +0 -103
- package/windows-legacy/CodePush.Net46/CodePushUtils.cs +0 -158
- package/windows-legacy/CodePush.Net46/FileUtils.cs +0 -55
- package/windows-legacy/CodePush.Net46/Properties/AssemblyInfo.cs +0 -36
- package/windows-legacy/CodePush.Net46/UpdateManager.cs +0 -330
- package/windows-legacy/CodePush.Net46/UpdateUtils.cs +0 -70
- package/windows-legacy/CodePush.Net46/packages.config +0 -5
- package/windows-legacy/CodePush.Net46.Test/ApplicationDataContainerTest.cs +0 -105
- package/windows-legacy/CodePush.Net46.Test/CodePush.Net46.Test.csproj +0 -137
- package/windows-legacy/CodePush.Net46.Test/Properties/AssemblyInfo.cs +0 -36
- package/windows-legacy/CodePush.Net46.Test/TelemetryManagerTest.cs +0 -117
- package/windows-legacy/CodePush.Net46.Test/app.config +0 -11
- package/windows-legacy/CodePush.Net46.Test/packages.config +0 -4
- package/windows-legacy/CodePush.Shared/CodePush.Shared.projitems +0 -22
- package/windows-legacy/CodePush.Shared/CodePush.Shared.shproj +0 -13
- package/windows-legacy/CodePush.Shared/CodePushConstants.cs +0 -35
- package/windows-legacy/CodePush.Shared/CodePushNativeModule.cs +0 -329
- package/windows-legacy/CodePush.Shared/CodePushReactPackage.cs +0 -235
- package/windows-legacy/CodePush.Shared/CodePushUtils.cs +0 -70
- package/windows-legacy/CodePush.Shared/InstallMode.cs +0 -9
- package/windows-legacy/CodePush.Shared/MinimumBackgroundListener.cs +0 -44
- package/windows-legacy/CodePush.Shared/SettingsManager.cs +0 -148
- package/windows-legacy/CodePush.Shared/TelemetryManager.cs +0 -250
- package/windows-legacy/CodePush.Shared/UpdateState.cs +0 -9
|
@@ -1,619 +0,0 @@
|
|
|
1
|
-
//
|
|
2
|
-
// JWTCoding+VersionThree.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+VersionThree.h"
|
|
10
|
-
#import "JWTAlgorithmDataHolderChain.h"
|
|
11
|
-
#import "JWTRSAlgorithm.h"
|
|
12
|
-
#import "JWTCoding+ResultTypes.h"
|
|
13
|
-
#import "JWTAlgorithmFactory.h"
|
|
14
|
-
#import "JWTErrorDescription.h"
|
|
15
|
-
#import "JWTBase64Coder.h"
|
|
16
|
-
#import "JWTClaimsSetSerializer.h"
|
|
17
|
-
#import "JWTClaimsSetVerifier.h"
|
|
18
|
-
|
|
19
|
-
@implementation JWT (VersionThree)
|
|
20
|
-
+ (JWTEncodingBuilder *)encodeWithHolders:(NSArray *)holders {
|
|
21
|
-
return [JWTEncodingBuilder createWithHolders:holders];
|
|
22
|
-
}
|
|
23
|
-
+ (JWTEncodingBuilder *)encodeWithChain:(JWTAlgorithmDataHolderChain *)chain {
|
|
24
|
-
return [JWTEncodingBuilder createWithChain:chain];
|
|
25
|
-
}
|
|
26
|
-
+ (JWTDecodingBuilder *)decodeWithHolders:(NSArray *)holders {
|
|
27
|
-
return [JWTDecodingBuilder createWithHolders:holders];
|
|
28
|
-
}
|
|
29
|
-
+ (JWTDecodingBuilder *)decodeWithChain:(JWTAlgorithmDataHolderChain *)chain {
|
|
30
|
-
return [JWTDecodingBuilder createWithChain:chain];
|
|
31
|
-
}
|
|
32
|
-
@end
|
|
33
|
-
|
|
34
|
-
@interface JWTCodingBuilder ()
|
|
35
|
-
#pragma mark - Internal
|
|
36
|
-
@property (strong, nonatomic, readwrite) JWTAlgorithmDataHolderChain *internalChain;
|
|
37
|
-
@property (copy, nonatomic, readwrite) NSNumber *internalOptions;
|
|
38
|
-
|
|
39
|
-
#pragma mark - Fluent
|
|
40
|
-
@property (copy, nonatomic, readwrite) JWTCodingBuilder *(^chain)(JWTAlgorithmDataHolderChain *chain);
|
|
41
|
-
@property (copy, nonatomic, readwrite) JWTCodingBuilder *(^constructChain)(JWTAlgorithmDataHolderChain *(^block)());
|
|
42
|
-
@property (copy, nonatomic, readwrite) JWTCodingBuilder *(^modifyChain)(JWTAlgorithmDataHolderChain *(^block)(JWTAlgorithmDataHolderChain * chain));
|
|
43
|
-
@property (copy, nonatomic, readwrite) JWTCodingBuilder *(^options)(NSNumber *options);
|
|
44
|
-
@property (copy, nonatomic, readwrite) JWTCodingBuilder *(^addHolder)(id<JWTAlgorithmDataHolderProtocol> holder);
|
|
45
|
-
@property (copy, nonatomic, readwrite) JWTCodingBuilder *(^constructHolder)(id<JWTAlgorithmDataHolderProtocol>(^block)(id<JWTAlgorithmDataHolderProtocol> holder));
|
|
46
|
-
|
|
47
|
-
@end
|
|
48
|
-
@interface JWTCodingBuilder (Fluent_Setup)
|
|
49
|
-
- (instancetype)chain:(JWTAlgorithmDataHolderChain *)chain;
|
|
50
|
-
- (instancetype)options:(NSNumber *)options;
|
|
51
|
-
- (instancetype)addHolder:(id<JWTAlgorithmDataHolderProtocol>)holder;
|
|
52
|
-
- (void)setupFluent;
|
|
53
|
-
@end
|
|
54
|
-
|
|
55
|
-
@implementation JWTCodingBuilder (Fluent_Setup)
|
|
56
|
-
- (instancetype)chain:(JWTAlgorithmDataHolderChain *)chain {
|
|
57
|
-
self.internalChain = chain;
|
|
58
|
-
return self;
|
|
59
|
-
}
|
|
60
|
-
- (instancetype)options:(NSNumber *)options {
|
|
61
|
-
self.internalOptions = options;
|
|
62
|
-
return self;
|
|
63
|
-
}
|
|
64
|
-
- (instancetype)addHolder:(id<JWTAlgorithmDataHolderProtocol>)holder {
|
|
65
|
-
self.internalChain = [self.internalChain chainByAppendingHolder:holder];
|
|
66
|
-
return self;
|
|
67
|
-
}
|
|
68
|
-
- (void)setupFluent {
|
|
69
|
-
__weak typeof(self) weakSelf = self;
|
|
70
|
-
self.chain = ^(JWTAlgorithmDataHolderChain *chain) {
|
|
71
|
-
return [weakSelf chain:chain];
|
|
72
|
-
};
|
|
73
|
-
|
|
74
|
-
self.constructChain = ^(JWTAlgorithmDataHolderChain *(^block)()) {
|
|
75
|
-
if (block) {
|
|
76
|
-
JWTAlgorithmDataHolderChain *chain = block();
|
|
77
|
-
return [weakSelf chain:chain];
|
|
78
|
-
}
|
|
79
|
-
return weakSelf;
|
|
80
|
-
};
|
|
81
|
-
|
|
82
|
-
self.modifyChain = ^(JWTAlgorithmDataHolderChain *(^block)(JWTAlgorithmDataHolderChain *chain)) {
|
|
83
|
-
if (block) {
|
|
84
|
-
JWTAlgorithmDataHolderChain *chain = block(weakSelf.internalChain);
|
|
85
|
-
return [weakSelf chain:chain];
|
|
86
|
-
}
|
|
87
|
-
return weakSelf;
|
|
88
|
-
};
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
self.options = ^(NSNumber *options) {
|
|
92
|
-
return [weakSelf options:options];
|
|
93
|
-
};
|
|
94
|
-
|
|
95
|
-
self.addHolder = ^(id<JWTAlgorithmDataHolderProtocol> holder) {
|
|
96
|
-
return [weakSelf addHolder:holder];
|
|
97
|
-
};
|
|
98
|
-
|
|
99
|
-
self.constructHolder = ^(id<JWTAlgorithmDataHolderProtocol> (^block)(id<JWTAlgorithmDataHolderProtocol> holder)) {
|
|
100
|
-
if (block) {
|
|
101
|
-
[weakSelf addHolder:block([JWTAlgorithmBaseDataHolder new])];
|
|
102
|
-
}
|
|
103
|
-
return weakSelf;
|
|
104
|
-
};
|
|
105
|
-
}
|
|
106
|
-
@end
|
|
107
|
-
|
|
108
|
-
@implementation JWTCodingBuilder
|
|
109
|
-
#pragma mark - Getters
|
|
110
|
-
// Chain always exists
|
|
111
|
-
- (JWTAlgorithmDataHolderChain *)internalChain {
|
|
112
|
-
return _internalChain ?: (_internalChain = [JWTAlgorithmDataHolderChain new], _internalChain);
|
|
113
|
-
}
|
|
114
|
-
#pragma mark - Create
|
|
115
|
-
- (instancetype)initWithChain:(JWTAlgorithmDataHolderChain *)chain {
|
|
116
|
-
if (self = [super init]) {
|
|
117
|
-
self.internalChain = chain;
|
|
118
|
-
[self setupFluent];
|
|
119
|
-
}
|
|
120
|
-
return self;
|
|
121
|
-
}
|
|
122
|
-
+ (instancetype)createWithHolders:(NSArray *)items {
|
|
123
|
-
return [self createWithChain:[[JWTAlgorithmDataHolderChain alloc] initWithHolders:items]];
|
|
124
|
-
}
|
|
125
|
-
+ (instancetype)createWithChain:(JWTAlgorithmDataHolderChain *)chain {
|
|
126
|
-
return [[self alloc] initWithChain:chain];
|
|
127
|
-
}
|
|
128
|
-
+ (instancetype)createWithEmptyChain {
|
|
129
|
-
return [self createWithChain:nil];
|
|
130
|
-
}
|
|
131
|
-
@end
|
|
132
|
-
|
|
133
|
-
@implementation JWTCodingBuilder (Sugar)
|
|
134
|
-
- (instancetype)and {
|
|
135
|
-
return self;
|
|
136
|
-
}
|
|
137
|
-
- (instancetype)with {
|
|
138
|
-
return self;
|
|
139
|
-
}
|
|
140
|
-
@end
|
|
141
|
-
|
|
142
|
-
@interface JWTEncodingBuilder ()
|
|
143
|
-
#pragma mark - Internal
|
|
144
|
-
@property (copy, nonatomic, readwrite) NSDictionary *internalPayload;
|
|
145
|
-
@property (copy, nonatomic, readwrite) NSDictionary *internalHeaders;
|
|
146
|
-
@property (strong, nonatomic, readwrite) JWTClaimsSet *internalClaimsSet;
|
|
147
|
-
@property (copy, nonatomic, readwrite) NSDictionary *internalMixingClaimsPayload;
|
|
148
|
-
|
|
149
|
-
#pragma mark - Fluent
|
|
150
|
-
@property (copy, nonatomic, readwrite) JWTEncodingBuilder *(^payload)(NSDictionary *payload);
|
|
151
|
-
@property (copy, nonatomic, readwrite) JWTEncodingBuilder *(^headers)(NSDictionary *headers);
|
|
152
|
-
@property (copy, nonatomic, readwrite) JWTEncodingBuilder *(^claimsSet)(JWTClaimsSet *claimsSet);
|
|
153
|
-
@end
|
|
154
|
-
|
|
155
|
-
@interface JWTEncodingBuilder (Fluent_Setup)
|
|
156
|
-
- (instancetype)payload:(NSDictionary *)payload;
|
|
157
|
-
- (instancetype)headers:(NSDictionary *)headers;
|
|
158
|
-
- (instancetype)claimsSet:(JWTClaimsSet *)claimsSet;
|
|
159
|
-
@end
|
|
160
|
-
|
|
161
|
-
@implementation JWTEncodingBuilder (Fluent_Setup)
|
|
162
|
-
|
|
163
|
-
- (instancetype)payload:(NSDictionary *)payload {
|
|
164
|
-
self.internalPayload = payload;
|
|
165
|
-
return self;
|
|
166
|
-
}
|
|
167
|
-
- (instancetype)headers:(NSDictionary *)headers {
|
|
168
|
-
self.internalHeaders = headers;
|
|
169
|
-
return self;
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
- (instancetype)claimsSet:(JWTClaimsSet *)claimsSet {
|
|
173
|
-
self.internalClaimsSet = claimsSet;
|
|
174
|
-
return self;
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
- (void)setupFluent {
|
|
178
|
-
[super setupFluent];
|
|
179
|
-
__weak typeof(self) weakSelf = self;
|
|
180
|
-
self.payload = ^(NSDictionary *payload) {
|
|
181
|
-
return [weakSelf payload:payload];
|
|
182
|
-
};
|
|
183
|
-
self.headers = ^(NSDictionary *headers) {
|
|
184
|
-
return [weakSelf headers:headers];
|
|
185
|
-
};
|
|
186
|
-
self.claimsSet = ^(JWTClaimsSet *claimsSet) {
|
|
187
|
-
return [weakSelf claimsSet:claimsSet];
|
|
188
|
-
};
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
@end
|
|
192
|
-
|
|
193
|
-
@implementation JWTEncodingBuilder
|
|
194
|
-
#pragma mark - Getters
|
|
195
|
-
- (NSDictionary *)internalMixingClaimsPayload {
|
|
196
|
-
NSMutableDictionary *dictionary = [@{} mutableCopy];
|
|
197
|
-
if (_internalPayload) {
|
|
198
|
-
[dictionary addEntriesFromDictionary:_internalPayload];
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
if (_internalClaimsSet) {
|
|
202
|
-
[dictionary addEntriesFromDictionary:[JWTClaimsSetSerializer dictionaryWithClaimsSet:_internalClaimsSet]];
|
|
203
|
-
}
|
|
204
|
-
|
|
205
|
-
return dictionary;
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
#pragma mark - Create
|
|
209
|
-
+ (instancetype)encodePayload:(NSDictionary *)payload {
|
|
210
|
-
return ((JWTEncodingBuilder *)[self createWithEmptyChain]).payload(payload);
|
|
211
|
-
}
|
|
212
|
-
|
|
213
|
-
+ (instancetype)encodeClaimsSet:(JWTClaimsSet *)claimsSet {
|
|
214
|
-
return ((JWTEncodingBuilder *)[self createWithEmptyChain]).claimsSet(claimsSet);
|
|
215
|
-
}
|
|
216
|
-
|
|
217
|
-
@end
|
|
218
|
-
|
|
219
|
-
@implementation JWTEncodingBuilder (Coding)
|
|
220
|
-
- (JWTCodingResultType *)encode {
|
|
221
|
-
|
|
222
|
-
NSDictionary *headers = self.internalHeaders;
|
|
223
|
-
NSDictionary *payload = self.internalMixingClaimsPayload;
|
|
224
|
-
|
|
225
|
-
NSString *encodedMessage = nil;
|
|
226
|
-
NSError *error = nil;
|
|
227
|
-
|
|
228
|
-
NSArray *holders = self.internalChain.holders;
|
|
229
|
-
// ERROR: HOLDERS ARE EMPTY.
|
|
230
|
-
if (holders.count == 0) {
|
|
231
|
-
error = [JWTErrorDescription errorWithCode:JWTDecodingHoldersChainEmptyError];
|
|
232
|
-
}
|
|
233
|
-
|
|
234
|
-
for (id <JWTAlgorithmDataHolderProtocol>holder in holders) {
|
|
235
|
-
id <JWTAlgorithm>algorithm = holder.internalAlgorithm;
|
|
236
|
-
NSData *secretData = holder.internalSecretData;
|
|
237
|
-
encodedMessage = [self encodeWithAlgorithm:algorithm withHeaders:headers withPayload:payload withSecretData:secretData withError:&error];
|
|
238
|
-
if (encodedMessage && (error == nil)) {
|
|
239
|
-
break;
|
|
240
|
-
}
|
|
241
|
-
}
|
|
242
|
-
|
|
243
|
-
JWTCodingResultType *result = nil;
|
|
244
|
-
|
|
245
|
-
if (error) {
|
|
246
|
-
result = [[JWTCodingResultType alloc] initWithErrorResult:[[JWTCodingResultTypeError alloc] initWithError:error]];
|
|
247
|
-
}
|
|
248
|
-
else if (encodedMessage) {
|
|
249
|
-
result = [[JWTCodingResultType alloc] initWithSuccessResult:[[JWTCodingResultTypeSuccess alloc] initWithEncoded:encodedMessage]];
|
|
250
|
-
}
|
|
251
|
-
else {
|
|
252
|
-
NSLog(@"%@ something went wrong! result is nil!", self.debugDescription);
|
|
253
|
-
}
|
|
254
|
-
|
|
255
|
-
return result;
|
|
256
|
-
}
|
|
257
|
-
- (NSString *)encodeWithAlgorithm:(id<JWTAlgorithm>)theAlgorithm withHeaders:(NSDictionary *)theHeaders withPayload:(NSDictionary *)thePayload withSecretData:(NSData *)theSecretData withError:(NSError *__autoreleasing *)theError {
|
|
258
|
-
// do it!
|
|
259
|
-
|
|
260
|
-
if (!theAlgorithm) {
|
|
261
|
-
if (theError) {
|
|
262
|
-
*theError = [JWTErrorDescription errorWithCode:JWTUnspecifiedAlgorithmError];
|
|
263
|
-
}
|
|
264
|
-
return nil;
|
|
265
|
-
}
|
|
266
|
-
|
|
267
|
-
NSString *theAlgorithmName = [theAlgorithm name];
|
|
268
|
-
|
|
269
|
-
if (!theAlgorithmName) {
|
|
270
|
-
if (theError) {
|
|
271
|
-
*theError = [JWTErrorDescription errorWithCode:JWTUnsupportedAlgorithmError];
|
|
272
|
-
}
|
|
273
|
-
return nil;
|
|
274
|
-
}
|
|
275
|
-
|
|
276
|
-
NSDictionary *header = @{
|
|
277
|
-
@"alg": theAlgorithmName,
|
|
278
|
-
@"typ": @"JWT"
|
|
279
|
-
};
|
|
280
|
-
NSMutableDictionary *allHeaders = [header mutableCopy];
|
|
281
|
-
|
|
282
|
-
if (theHeaders.allKeys.count > 0) {
|
|
283
|
-
[allHeaders addEntriesFromDictionary:theHeaders];
|
|
284
|
-
}
|
|
285
|
-
|
|
286
|
-
NSString *headerSegment = [self encodeSegment:[allHeaders copy] withError:nil];
|
|
287
|
-
|
|
288
|
-
if (!headerSegment) {
|
|
289
|
-
// encode header segment error
|
|
290
|
-
if (theError) {
|
|
291
|
-
*theError = [JWTErrorDescription errorWithCode:JWTEncodingHeaderError];
|
|
292
|
-
}
|
|
293
|
-
return nil;
|
|
294
|
-
}
|
|
295
|
-
|
|
296
|
-
NSString *payloadSegment = [self encodeSegment:thePayload withError:nil];
|
|
297
|
-
|
|
298
|
-
if (!payloadSegment) {
|
|
299
|
-
// encode payment segment error
|
|
300
|
-
if (theError) {
|
|
301
|
-
*theError = [JWTErrorDescription errorWithCode:JWTEncodingPayloadError];
|
|
302
|
-
}
|
|
303
|
-
return nil;
|
|
304
|
-
}
|
|
305
|
-
|
|
306
|
-
NSString *signingInput = [@[headerSegment, payloadSegment] componentsJoinedByString:@"."];
|
|
307
|
-
|
|
308
|
-
NSString *signedOutput = nil;
|
|
309
|
-
|
|
310
|
-
// this happens somewhere outside.
|
|
311
|
-
|
|
312
|
-
NSError *algorithmError = nil;
|
|
313
|
-
if (theSecretData && [theAlgorithm respondsToSelector:@selector(signHash:key:error:)]) {
|
|
314
|
-
NSData *signedOutputData = [theAlgorithm signHash:[signingInput dataUsingEncoding:NSUTF8StringEncoding] key:theSecretData error:&algorithmError];
|
|
315
|
-
signedOutput = [JWTBase64Coder base64UrlEncodedStringWithData:signedOutputData];
|
|
316
|
-
}
|
|
317
|
-
// if (theSecretData && [theAlgorithm respondsToSelector:@selector(encodePayloadData:withSecret:)]) {
|
|
318
|
-
// // not sure that it is correct.
|
|
319
|
-
// NSData *signedOutputData = [theAlgorithm encodePayloadData:[signingInput dataUsingEncoding:NSUTF8StringEncoding] withSecret:theSecretData];
|
|
320
|
-
// signedOutput = [JWTBase64Coder base64UrlEncodedStringWithData:signedOutputData];
|
|
321
|
-
// }
|
|
322
|
-
// not used now.
|
|
323
|
-
// else {
|
|
324
|
-
// NSData *signedOutputData = [theAlgorithm encodePayload:signingInput withSecret:self.jwtSecret];
|
|
325
|
-
// signedOutput = [JWTBase64Coder base64UrlEncodedStringWithData:signedOutputData];
|
|
326
|
-
// }
|
|
327
|
-
|
|
328
|
-
if (algorithmError) {
|
|
329
|
-
// algorithmError
|
|
330
|
-
if (theError) {
|
|
331
|
-
*theError = algorithmError;
|
|
332
|
-
}
|
|
333
|
-
return nil;
|
|
334
|
-
}
|
|
335
|
-
if (!signedOutput) {
|
|
336
|
-
// Make sure signing worked (e.g. we may have issues extracting the key from the PKCS12 bundle if passphrase is incorrect)
|
|
337
|
-
if (theError) {
|
|
338
|
-
*theError = [JWTErrorDescription errorWithCode:JWTEncodingSigningError];
|
|
339
|
-
}
|
|
340
|
-
return nil;
|
|
341
|
-
}
|
|
342
|
-
|
|
343
|
-
return [@[headerSegment, payloadSegment, signedOutput] componentsJoinedByString:@"."];
|
|
344
|
-
}
|
|
345
|
-
|
|
346
|
-
- (NSString *)encodeSegment:(id)theSegment withError:(NSError *__autoreleasing*)error {
|
|
347
|
-
NSData *encodedSegmentData = nil;
|
|
348
|
-
|
|
349
|
-
if (theSegment) {
|
|
350
|
-
encodedSegmentData = [NSJSONSerialization dataWithJSONObject:theSegment options:0 error:error];
|
|
351
|
-
}
|
|
352
|
-
else {
|
|
353
|
-
// error!
|
|
354
|
-
NSError *generatedError = [JWTErrorDescription errorWithCode:JWTInvalidSegmentSerializationError];
|
|
355
|
-
if (error) {
|
|
356
|
-
*error = generatedError;
|
|
357
|
-
}
|
|
358
|
-
NSLog(@"%@ Could not encode segment: %@", self.class, generatedError.localizedDescription);
|
|
359
|
-
return nil;
|
|
360
|
-
}
|
|
361
|
-
|
|
362
|
-
NSString *encodedSegment = nil;
|
|
363
|
-
|
|
364
|
-
if (encodedSegmentData) {
|
|
365
|
-
encodedSegment = [JWTBase64Coder base64UrlEncodedStringWithData:encodedSegmentData];
|
|
366
|
-
}
|
|
367
|
-
|
|
368
|
-
return encodedSegment;
|
|
369
|
-
}
|
|
370
|
-
|
|
371
|
-
- (JWTCodingResultType *)result {
|
|
372
|
-
return self.encode;
|
|
373
|
-
}
|
|
374
|
-
@end
|
|
375
|
-
|
|
376
|
-
@interface JWTDecodingBuilder ()
|
|
377
|
-
#pragma mark - Internal
|
|
378
|
-
@property (copy, nonatomic, readwrite) NSString *internalMessage;
|
|
379
|
-
@property (nonatomic, readwrite) JWTClaimsSet *internalClaimsSet;
|
|
380
|
-
|
|
381
|
-
#pragma mark - Fluent
|
|
382
|
-
@property (copy, nonatomic, readwrite) JWTDecodingBuilder *(^message)(NSString *message);
|
|
383
|
-
@property (copy, nonatomic, readwrite) JWTDecodingBuilder *(^claimsSet)(JWTClaimsSet *claimsSet);
|
|
384
|
-
|
|
385
|
-
@end
|
|
386
|
-
|
|
387
|
-
@interface JWTDecodingBuilder (Fluent_Setup)
|
|
388
|
-
- (instancetype)message:(NSString *)message;
|
|
389
|
-
- (instancetype)claimsSet:(JWTClaimsSet *)claimsSet;
|
|
390
|
-
@end
|
|
391
|
-
@implementation JWTDecodingBuilder (Fluent_Setup)
|
|
392
|
-
- (instancetype)message:(NSString *)message {
|
|
393
|
-
self.internalMessage = message;
|
|
394
|
-
return self;
|
|
395
|
-
}
|
|
396
|
-
- (instancetype)claimsSet:(JWTClaimsSet *)claimsSet {
|
|
397
|
-
self.internalClaimsSet = claimsSet;
|
|
398
|
-
return self;
|
|
399
|
-
}
|
|
400
|
-
- (void)setupFluent {
|
|
401
|
-
[super setupFluent];
|
|
402
|
-
__weak typeof(self) weakSelf = self;
|
|
403
|
-
self.message = ^(NSString *message) {
|
|
404
|
-
return [weakSelf message:message];
|
|
405
|
-
};
|
|
406
|
-
self.claimsSet = ^(JWTClaimsSet *claimsSet) {
|
|
407
|
-
return [weakSelf claimsSet:claimsSet];
|
|
408
|
-
};
|
|
409
|
-
}
|
|
410
|
-
@end
|
|
411
|
-
|
|
412
|
-
@implementation JWTDecodingBuilder
|
|
413
|
-
#pragma mark - Create
|
|
414
|
-
+ (instancetype)decodeMessage:(NSString *)message {
|
|
415
|
-
return ((JWTDecodingBuilder *)[self createWithEmptyChain]).message(message);
|
|
416
|
-
}
|
|
417
|
-
@end
|
|
418
|
-
|
|
419
|
-
@implementation JWTDecodingBuilder (Coding)
|
|
420
|
-
- (JWTCodingResultType *)decode {
|
|
421
|
-
// do!
|
|
422
|
-
// iterate over items in chain!
|
|
423
|
-
// and return if everything ok!
|
|
424
|
-
// or return error!
|
|
425
|
-
NSError *error = nil;
|
|
426
|
-
NSDictionary *decodedDictionary = nil;
|
|
427
|
-
NSString *message = self.internalMessage;
|
|
428
|
-
NSNumber *options = self.internalOptions;
|
|
429
|
-
NSArray *holders = self.internalChain.holders;
|
|
430
|
-
JWTClaimsSet *claimsSet = self.internalClaimsSet;
|
|
431
|
-
|
|
432
|
-
// ERROR: HOLDERS ARE EMPTY.
|
|
433
|
-
if (holders.count == 0) {
|
|
434
|
-
error = [JWTErrorDescription errorWithCode:JWTDecodingHoldersChainEmptyError];
|
|
435
|
-
}
|
|
436
|
-
|
|
437
|
-
for (id <JWTAlgorithmDataHolderProtocol>holder in self.internalChain.holders) {
|
|
438
|
-
// try decode!
|
|
439
|
-
id <JWTAlgorithm> algorithm = holder.internalAlgorithm;
|
|
440
|
-
NSData *secretData = holder.internalSecretData;
|
|
441
|
-
// try to retrieve passphrase.
|
|
442
|
-
decodedDictionary = [self decodeMessage:message secretData:secretData algorithm:algorithm options:options error:&error];
|
|
443
|
-
if (decodedDictionary && (error == nil)) {
|
|
444
|
-
break;
|
|
445
|
-
}
|
|
446
|
-
}
|
|
447
|
-
|
|
448
|
-
// claimsSet verification.
|
|
449
|
-
JWTCodingResultType *result = nil;
|
|
450
|
-
if (error) {
|
|
451
|
-
return [[JWTCodingResultType alloc] initWithErrorResult:[[JWTCodingResultTypeError alloc] initWithError:error]];
|
|
452
|
-
}
|
|
453
|
-
|
|
454
|
-
if (claimsSet) {
|
|
455
|
-
BOOL claimsVerified = [JWTClaimsSetVerifier verifyClaimsSet:[JWTClaimsSetSerializer claimsSetWithDictionary:decodedDictionary[JWTCodingResultPayload]] withTrustedClaimsSet:claimsSet];
|
|
456
|
-
if (!claimsVerified){
|
|
457
|
-
error = [JWTErrorDescription errorWithCode:JWTClaimsSetVerificationFailed];
|
|
458
|
-
return [[JWTCodingResultType alloc] initWithErrorResult:[[JWTCodingResultTypeError alloc] initWithError:error]];
|
|
459
|
-
}
|
|
460
|
-
}
|
|
461
|
-
|
|
462
|
-
if (decodedDictionary) {
|
|
463
|
-
NSDictionary *headers = decodedDictionary[JWTCodingResultHeaders];
|
|
464
|
-
NSDictionary *payload = decodedDictionary[JWTCodingResultPayload];
|
|
465
|
-
result = [[JWTCodingResultType alloc] initWithSuccessResult:[[JWTCodingResultTypeSuccess alloc] initWithHeaders:headers withPayload:payload]];
|
|
466
|
-
}
|
|
467
|
-
else {
|
|
468
|
-
NSLog(@"%@ something went wrong! result is nil!", self.debugDescription);
|
|
469
|
-
}
|
|
470
|
-
|
|
471
|
-
return result;
|
|
472
|
-
}
|
|
473
|
-
|
|
474
|
-
// Maybe later add algorithmName
|
|
475
|
-
- (NSDictionary *)decodeMessage:(NSString *)theMessage secretData:(NSData *)theSecretData algorithm:(id<JWTAlgorithm>)theAlgorithm options:(NSNumber *)theOptions error:(NSError *__autoreleasing *)theError {
|
|
476
|
-
|
|
477
|
-
BOOL skipVerification = [theOptions boolValue];
|
|
478
|
-
NSString *theAlgorithmName = [theAlgorithm name];
|
|
479
|
-
|
|
480
|
-
NSArray *parts = [theMessage componentsSeparatedByString:@"."];
|
|
481
|
-
|
|
482
|
-
if (parts.count < 3) {
|
|
483
|
-
// generate error?
|
|
484
|
-
if (theError) {
|
|
485
|
-
*theError = [JWTErrorDescription errorWithCode:JWTInvalidFormatError];
|
|
486
|
-
}
|
|
487
|
-
return nil;
|
|
488
|
-
}
|
|
489
|
-
|
|
490
|
-
NSString *headerPart = parts[0];
|
|
491
|
-
NSString *payloadPart = parts[1];
|
|
492
|
-
NSString *signedPart = parts[2];
|
|
493
|
-
|
|
494
|
-
// decode headerPart
|
|
495
|
-
NSError *jsonError = nil;
|
|
496
|
-
NSData *headerData = [JWTBase64Coder dataWithBase64UrlEncodedString:headerPart];
|
|
497
|
-
id headerJSON = [NSJSONSerialization JSONObjectWithData:headerData
|
|
498
|
-
options:0
|
|
499
|
-
error:&jsonError];
|
|
500
|
-
if (jsonError) {
|
|
501
|
-
if (theError) {
|
|
502
|
-
*theError = [JWTErrorDescription errorWithCode:JWTDecodingHeaderError];
|
|
503
|
-
}
|
|
504
|
-
return nil;
|
|
505
|
-
}
|
|
506
|
-
NSDictionary *header = (NSDictionary *)headerJSON;
|
|
507
|
-
if (!header) {
|
|
508
|
-
if (theError) {
|
|
509
|
-
*theError = [JWTErrorDescription errorWithCode:JWTNoHeaderError];
|
|
510
|
-
}
|
|
511
|
-
return nil;
|
|
512
|
-
}
|
|
513
|
-
|
|
514
|
-
if (!skipVerification) {
|
|
515
|
-
// find algorithm
|
|
516
|
-
|
|
517
|
-
//It is insecure to trust the header's value for the algorithm, since
|
|
518
|
-
//the signature hasn't been verified yet, so an algorithm must be provided
|
|
519
|
-
if (!theAlgorithmName) {
|
|
520
|
-
if (theError) {
|
|
521
|
-
*theError = [JWTErrorDescription errorWithCode:JWTUnspecifiedAlgorithmError];
|
|
522
|
-
}
|
|
523
|
-
return nil;
|
|
524
|
-
}
|
|
525
|
-
|
|
526
|
-
NSString *headerAlgorithmName = header[@"alg"];
|
|
527
|
-
|
|
528
|
-
//If the algorithm in the header doesn't match what's expected, verification fails
|
|
529
|
-
if (![theAlgorithmName isEqualToString:headerAlgorithmName]) {
|
|
530
|
-
if (theError) {
|
|
531
|
-
*theError = [JWTErrorDescription errorWithCode:JWTAlgorithmNameMismatchError];
|
|
532
|
-
}
|
|
533
|
-
return nil;
|
|
534
|
-
}
|
|
535
|
-
|
|
536
|
-
// A shit logic, but...
|
|
537
|
-
// You should copy algorithm if this algorithm conforms to RSAlgorithm (NSCopying).
|
|
538
|
-
// Now RS Algorithm holds too much. ( All data about keys :/ )
|
|
539
|
-
// Need further investigation.
|
|
540
|
-
id<JWTAlgorithm> algorithm = nil;
|
|
541
|
-
if ([theAlgorithm conformsToProtocol:@protocol(JWTRSAlgorithm)]) {
|
|
542
|
-
algorithm = [(id<JWTRSAlgorithm>)theAlgorithm copyWithZone:nil];
|
|
543
|
-
}
|
|
544
|
-
else {
|
|
545
|
-
algorithm = [JWTAlgorithmFactory algorithmByName:theAlgorithmName];
|
|
546
|
-
}
|
|
547
|
-
|
|
548
|
-
if (!algorithm) {
|
|
549
|
-
if (theError) {
|
|
550
|
-
*theError = [JWTErrorDescription errorWithCode:JWTUnsupportedAlgorithmError];
|
|
551
|
-
}
|
|
552
|
-
return nil;
|
|
553
|
-
}
|
|
554
|
-
|
|
555
|
-
// Verify the signed part
|
|
556
|
-
NSString *signingInput = [@[headerPart, payloadPart] componentsJoinedByString:@"."];
|
|
557
|
-
BOOL signatureValid = NO;
|
|
558
|
-
|
|
559
|
-
NSError *algorithmError = nil;
|
|
560
|
-
if (theSecretData && [algorithm respondsToSelector:@selector(verifyHash:signature:key:error:)]) {
|
|
561
|
-
signatureValid =
|
|
562
|
-
//[algorithm verifySignedInput:signingInput withSignature:signedPart verificationKeyData:theSecretData];
|
|
563
|
-
[algorithm verifyHash:[signingInput dataUsingEncoding:NSUTF8StringEncoding] signature:[JWTBase64Coder dataWithBase64UrlEncodedString:signedPart] key:theSecretData error:&algorithmError];
|
|
564
|
-
}
|
|
565
|
-
// if (theSecretData && [algorithm respondsToSelector:@selector(verifySignedInput:withSignature:verificationKeyData:)]) {
|
|
566
|
-
// signatureValid = [algorithm verifySignedInput:signingInput withSignature:signedPart verificationKeyData:theSecretData];
|
|
567
|
-
//
|
|
568
|
-
// // Not used now.
|
|
569
|
-
//// } else {
|
|
570
|
-
//// signatureValid = [algorithm verifySignedInput:signingInput withSignature:signedPart verificationKey:theSecret];
|
|
571
|
-
// }
|
|
572
|
-
|
|
573
|
-
if (algorithmError) {
|
|
574
|
-
if (theError) {
|
|
575
|
-
*theError = algorithmError;
|
|
576
|
-
}
|
|
577
|
-
return nil;
|
|
578
|
-
}
|
|
579
|
-
if (!signatureValid) {
|
|
580
|
-
if (theError) {
|
|
581
|
-
*theError = [JWTErrorDescription errorWithCode:JWTInvalidSignatureError];
|
|
582
|
-
}
|
|
583
|
-
return nil;
|
|
584
|
-
}
|
|
585
|
-
}
|
|
586
|
-
|
|
587
|
-
// and decode payload
|
|
588
|
-
jsonError = nil;
|
|
589
|
-
NSData *payloadData = [JWTBase64Coder dataWithBase64UrlEncodedString:payloadPart];
|
|
590
|
-
id payloadJSON = [NSJSONSerialization JSONObjectWithData:payloadData
|
|
591
|
-
options:0
|
|
592
|
-
error:&jsonError];
|
|
593
|
-
if (jsonError) {
|
|
594
|
-
if (theError) {
|
|
595
|
-
*theError = [JWTErrorDescription errorWithCode:JWTDecodingPayloadError];
|
|
596
|
-
}
|
|
597
|
-
return nil;
|
|
598
|
-
}
|
|
599
|
-
NSDictionary *payload = (NSDictionary *)payloadJSON;
|
|
600
|
-
|
|
601
|
-
if (!payload) {
|
|
602
|
-
if (theError) {
|
|
603
|
-
*theError = [JWTErrorDescription errorWithCode:JWTNoPayloadError];
|
|
604
|
-
}
|
|
605
|
-
return nil;
|
|
606
|
-
}
|
|
607
|
-
|
|
608
|
-
NSDictionary *result = @{
|
|
609
|
-
JWTCodingResultHeaders : header,
|
|
610
|
-
JWTCodingResultPayload : payload
|
|
611
|
-
};
|
|
612
|
-
|
|
613
|
-
return result;
|
|
614
|
-
}
|
|
615
|
-
|
|
616
|
-
- (JWTCodingResultType *)result {
|
|
617
|
-
return self.decode;
|
|
618
|
-
}
|
|
619
|
-
@end
|