partner_react_native_sdk 0.1.7 → 1.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.
Files changed (206) hide show
  1. package/PartnerReactNativeSdk.podspec +5 -1
  2. package/lib/module/helpers/network/APICall.js +75 -96
  3. package/lib/module/helpers/network/APICall.js.map +1 -1
  4. package/lib/module/helpers/network/Encryption.js +146 -239
  5. package/lib/module/helpers/network/Encryption.js.map +1 -1
  6. package/lib/module/helpers/partner_library_react_native.js +81 -0
  7. package/lib/module/helpers/partner_library_react_native.js.map +1 -1
  8. package/lib/module/helpers/webview.js +70 -0
  9. package/lib/module/helpers/webview.js.map +1 -1
  10. package/lib/typescript/package.json +1 -0
  11. package/lib/typescript/src/helpers/network/APICall.d.ts +1 -0
  12. package/lib/typescript/src/helpers/network/APICall.d.ts.map +1 -1
  13. package/lib/typescript/src/helpers/network/Encryption.d.ts +23 -0
  14. package/lib/typescript/src/helpers/network/Encryption.d.ts.map +1 -1
  15. package/lib/typescript/src/helpers/partner_library_react_native.d.ts +9 -0
  16. package/lib/typescript/src/helpers/partner_library_react_native.d.ts.map +1 -1
  17. package/lib/typescript/src/helpers/webview.d.ts +10 -0
  18. package/lib/typescript/src/helpers/webview.d.ts.map +1 -1
  19. package/package.json +12 -8
  20. package/src/helpers/network/APICall.tsx +99 -94
  21. package/src/helpers/network/Encryption.tsx +179 -239
  22. package/src/helpers/partner_library_react_native.tsx +106 -0
  23. package/src/helpers/webview.tsx +87 -0
  24. package/android/generated/android/app/build/generated/source/codegen/RCTAppDependencyProvider.h +0 -25
  25. package/android/generated/android/app/build/generated/source/codegen/RCTAppDependencyProvider.mm +0 -55
  26. package/android/generated/android/app/build/generated/source/codegen/RCTModulesConformingToProtocolsProvider.h +0 -18
  27. package/android/generated/android/app/build/generated/source/codegen/RCTModulesConformingToProtocolsProvider.mm +0 -33
  28. package/android/generated/android/app/build/generated/source/codegen/RCTThirdPartyComponentsProvider.h +0 -16
  29. package/android/generated/android/app/build/generated/source/codegen/RCTThirdPartyComponentsProvider.mm +0 -42
  30. package/android/generated/android/app/build/generated/source/codegen/ReactAppDependencyProvider.podspec +0 -34
  31. package/android/generated/android/app/build/generated/source/codegen/java/com/facebook/fbreact/specs/NativeAsyncStorageModuleSpec.java +0 -59
  32. package/android/generated/android/app/build/generated/source/codegen/java/com/facebook/fbreact/specs/NativeBlobUtilsSpec.java +0 -280
  33. package/android/generated/android/app/build/generated/source/codegen/java/com/facebook/fbreact/specs/NativePartnerReactNativeSdkSpec.java +0 -37
  34. package/android/generated/android/app/build/generated/source/codegen/java/com/facebook/fbreact/specs/NativeRNCWebViewModuleSpec.java +0 -42
  35. package/android/generated/android/app/build/generated/source/codegen/java/com/facebook/fbreact/specs/NativeRNPermissionsSpec.java +0 -87
  36. package/android/generated/android/app/build/generated/source/codegen/java/com/facebook/fbreact/specs/NativeSafeAreaContextSpec.java +0 -65
  37. package/android/generated/android/app/build/generated/source/codegen/java/com/facebook/fbreact/specs/NativeScreensModuleSpec.java +0 -35
  38. package/android/generated/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNCSafeAreaProviderManagerDelegate.java +0 -26
  39. package/android/generated/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNCSafeAreaProviderManagerInterface.java +0 -17
  40. package/android/generated/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNCSafeAreaViewManagerDelegate.java +0 -36
  41. package/android/generated/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNCSafeAreaViewManagerInterface.java +0 -20
  42. package/android/generated/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNCWebViewManagerDelegate.java +0 -301
  43. package/android/generated/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNCWebViewManagerInterface.java +0 -107
  44. package/android/generated/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNSBottomTabsManagerDelegate.java +0 -81
  45. package/android/generated/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNSBottomTabsManagerInterface.java +0 -34
  46. package/android/generated/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNSBottomTabsScreenManagerDelegate.java +0 -89
  47. package/android/generated/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNSBottomTabsScreenManagerInterface.java +0 -38
  48. package/android/generated/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNSFullWindowOverlayManagerDelegate.java +0 -32
  49. package/android/generated/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNSFullWindowOverlayManagerInterface.java +0 -17
  50. package/android/generated/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNSModalScreenManagerDelegate.java +0 -128
  51. package/android/generated/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNSModalScreenManagerInterface.java +0 -51
  52. package/android/generated/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNSScreenContainerManagerDelegate.java +0 -26
  53. package/android/generated/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNSScreenContainerManagerInterface.java +0 -17
  54. package/android/generated/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNSScreenContentWrapperManagerDelegate.java +0 -26
  55. package/android/generated/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNSScreenContentWrapperManagerInterface.java +0 -17
  56. package/android/generated/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNSScreenFooterManagerDelegate.java +0 -26
  57. package/android/generated/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNSScreenFooterManagerInterface.java +0 -17
  58. package/android/generated/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNSScreenManagerDelegate.java +0 -128
  59. package/android/generated/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNSScreenManagerInterface.java +0 -51
  60. package/android/generated/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNSScreenNavigationContainerManagerDelegate.java +0 -26
  61. package/android/generated/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNSScreenNavigationContainerManagerInterface.java +0 -17
  62. package/android/generated/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNSScreenStackHeaderConfigManagerDelegate.java +0 -114
  63. package/android/generated/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNSScreenStackHeaderConfigManagerInterface.java +0 -45
  64. package/android/generated/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNSScreenStackHeaderSubviewManagerDelegate.java +0 -32
  65. package/android/generated/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNSScreenStackHeaderSubviewManagerInterface.java +0 -18
  66. package/android/generated/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNSScreenStackHostManagerDelegate.java +0 -26
  67. package/android/generated/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNSScreenStackHostManagerInterface.java +0 -17
  68. package/android/generated/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNSScreenStackManagerDelegate.java +0 -26
  69. package/android/generated/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNSScreenStackManagerInterface.java +0 -17
  70. package/android/generated/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNSSearchBarManagerDelegate.java +0 -103
  71. package/android/generated/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNSSearchBarManagerInterface.java +0 -39
  72. package/android/generated/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNSSplitViewHostManagerDelegate.java +0 -57
  73. package/android/generated/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNSSplitViewHostManagerInterface.java +0 -27
  74. package/android/generated/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNSSplitViewScreenManagerDelegate.java +0 -32
  75. package/android/generated/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNSSplitViewScreenManagerInterface.java +0 -18
  76. package/android/generated/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNSStackScreenManagerDelegate.java +0 -35
  77. package/android/generated/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNSStackScreenManagerInterface.java +0 -19
  78. package/android/generated/android/app/build/generated/source/codegen/jni/CMakeLists.txt +0 -36
  79. package/android/generated/android/app/build/generated/source/codegen/jni/RNCWebViewSpec-generated.cpp +0 -38
  80. package/android/generated/android/app/build/generated/source/codegen/jni/RNCWebViewSpec.h +0 -31
  81. package/android/generated/android/app/build/generated/source/codegen/jni/RNPartnerReactNativeSdkSpec-generated.cpp +0 -32
  82. package/android/generated/android/app/build/generated/source/codegen/jni/RNPartnerReactNativeSdkSpec.h +0 -31
  83. package/android/generated/android/app/build/generated/source/codegen/jni/RNPermissionsSpec-generated.cpp +0 -104
  84. package/android/generated/android/app/build/generated/source/codegen/jni/RNPermissionsSpec.h +0 -31
  85. package/android/generated/android/app/build/generated/source/codegen/jni/ReactNativeBlobUtilSpec-generated.cpp +0 -320
  86. package/android/generated/android/app/build/generated/source/codegen/jni/ReactNativeBlobUtilSpec.h +0 -31
  87. package/android/generated/android/app/build/generated/source/codegen/jni/react/renderer/components/RNCWebViewSpec/ComponentDescriptors.cpp +0 -22
  88. package/android/generated/android/app/build/generated/source/codegen/jni/react/renderer/components/RNCWebViewSpec/ComponentDescriptors.h +0 -24
  89. package/android/generated/android/app/build/generated/source/codegen/jni/react/renderer/components/RNCWebViewSpec/EventEmitters.cpp +0 -258
  90. package/android/generated/android/app/build/generated/source/codegen/jni/react/renderer/components/RNCWebViewSpec/EventEmitters.h +0 -277
  91. package/android/generated/android/app/build/generated/source/codegen/jni/react/renderer/components/RNCWebViewSpec/Props.cpp +0 -101
  92. package/android/generated/android/app/build/generated/source/codegen/jni/react/renderer/components/RNCWebViewSpec/Props.h +0 -507
  93. package/android/generated/android/app/build/generated/source/codegen/jni/react/renderer/components/RNCWebViewSpec/RNCWebViewSpecJSI-generated.cpp +0 -35
  94. package/android/generated/android/app/build/generated/source/codegen/jni/react/renderer/components/RNCWebViewSpec/RNCWebViewSpecJSI.h +0 -80
  95. package/android/generated/android/app/build/generated/source/codegen/jni/react/renderer/components/RNCWebViewSpec/ShadowNodes.cpp +0 -17
  96. package/android/generated/android/app/build/generated/source/codegen/jni/react/renderer/components/RNCWebViewSpec/ShadowNodes.h +0 -32
  97. package/android/generated/android/app/build/generated/source/codegen/jni/react/renderer/components/RNCWebViewSpec/States.cpp +0 -16
  98. package/android/generated/android/app/build/generated/source/codegen/jni/react/renderer/components/RNCWebViewSpec/States.h +0 -29
  99. package/android/generated/android/app/build/generated/source/codegen/jni/react/renderer/components/RNPartnerReactNativeSdkSpec/RNPartnerReactNativeSdkSpecJSI-generated.cpp +0 -28
  100. package/android/generated/android/app/build/generated/source/codegen/jni/react/renderer/components/RNPartnerReactNativeSdkSpec/RNPartnerReactNativeSdkSpecJSI.h +0 -71
  101. package/android/generated/android/app/build/generated/source/codegen/jni/react/renderer/components/RNPermissionsSpec/RNPermissionsSpecJSI-generated.cpp +0 -106
  102. package/android/generated/android/app/build/generated/source/codegen/jni/react/renderer/components/RNPermissionsSpec/RNPermissionsSpecJSI.h +0 -226
  103. package/android/generated/android/app/build/generated/source/codegen/jni/react/renderer/components/ReactNativeBlobUtilSpec/ReactNativeBlobUtilSpecJSI-generated.cpp +0 -449
  104. package/android/generated/android/app/build/generated/source/codegen/jni/react/renderer/components/ReactNativeBlobUtilSpec/ReactNativeBlobUtilSpecJSI.h +0 -503
  105. package/android/generated/android/app/build/generated/source/codegen/jni/react/renderer/components/rnasyncstorage/rnasyncstorageJSI-generated.cpp +0 -72
  106. package/android/generated/android/app/build/generated/source/codegen/jni/react/renderer/components/rnasyncstorage/rnasyncstorageJSI.h +0 -116
  107. package/android/generated/android/app/build/generated/source/codegen/jni/react/renderer/components/rnscreens/ComponentDescriptors.cpp +0 -31
  108. package/android/generated/android/app/build/generated/source/codegen/jni/react/renderer/components/rnscreens/ComponentDescriptors.h +0 -33
  109. package/android/generated/android/app/build/generated/source/codegen/jni/react/renderer/components/rnscreens/EventEmitters.cpp +0 -480
  110. package/android/generated/android/app/build/generated/source/codegen/jni/react/renderer/components/rnscreens/EventEmitters.h +0 -403
  111. package/android/generated/android/app/build/generated/source/codegen/jni/react/renderer/components/rnscreens/Props.cpp +0 -286
  112. package/android/generated/android/app/build/generated/source/codegen/jni/react/renderer/components/rnscreens/Props.h +0 -1080
  113. package/android/generated/android/app/build/generated/source/codegen/jni/react/renderer/components/rnscreens/ShadowNodes.cpp +0 -26
  114. package/android/generated/android/app/build/generated/source/codegen/jni/react/renderer/components/rnscreens/ShadowNodes.h +0 -131
  115. package/android/generated/android/app/build/generated/source/codegen/jni/react/renderer/components/rnscreens/States.cpp +0 -16
  116. package/android/generated/android/app/build/generated/source/codegen/jni/react/renderer/components/rnscreens/States.h +0 -137
  117. package/android/generated/android/app/build/generated/source/codegen/jni/react/renderer/components/rnscreens/rnscreensJSI-generated.cpp +0 -22
  118. package/android/generated/android/app/build/generated/source/codegen/jni/react/renderer/components/rnscreens/rnscreensJSI.h +0 -64
  119. package/android/generated/android/app/build/generated/source/codegen/jni/react/renderer/components/safeareacontext/ComponentDescriptors.cpp +0 -22
  120. package/android/generated/android/app/build/generated/source/codegen/jni/react/renderer/components/safeareacontext/ComponentDescriptors.h +0 -24
  121. package/android/generated/android/app/build/generated/source/codegen/jni/react/renderer/components/safeareacontext/EventEmitters.cpp +0 -40
  122. package/android/generated/android/app/build/generated/source/codegen/jni/react/renderer/components/safeareacontext/EventEmitters.h +0 -47
  123. package/android/generated/android/app/build/generated/source/codegen/jni/react/renderer/components/safeareacontext/Props.cpp +0 -33
  124. package/android/generated/android/app/build/generated/source/codegen/jni/react/renderer/components/safeareacontext/Props.h +0 -85
  125. package/android/generated/android/app/build/generated/source/codegen/jni/react/renderer/components/safeareacontext/ShadowNodes.cpp +0 -17
  126. package/android/generated/android/app/build/generated/source/codegen/jni/react/renderer/components/safeareacontext/ShadowNodes.h +0 -32
  127. package/android/generated/android/app/build/generated/source/codegen/jni/react/renderer/components/safeareacontext/States.cpp +0 -16
  128. package/android/generated/android/app/build/generated/source/codegen/jni/react/renderer/components/safeareacontext/States.h +0 -29
  129. package/android/generated/android/app/build/generated/source/codegen/jni/react/renderer/components/safeareacontext/safeareacontextJSI-generated.cpp +0 -26
  130. package/android/generated/android/app/build/generated/source/codegen/jni/react/renderer/components/safeareacontext/safeareacontextJSI.h +0 -71
  131. package/android/generated/android/app/build/generated/source/codegen/jni/rnasyncstorage-generated.cpp +0 -62
  132. package/android/generated/android/app/build/generated/source/codegen/jni/rnasyncstorage.h +0 -31
  133. package/android/generated/android/app/build/generated/source/codegen/jni/rnscreens-generated.cpp +0 -29
  134. package/android/generated/android/app/build/generated/source/codegen/jni/rnscreens.h +0 -31
  135. package/android/generated/android/app/build/generated/source/codegen/jni/safeareacontext-generated.cpp +0 -32
  136. package/android/generated/android/app/build/generated/source/codegen/jni/safeareacontext.h +0 -31
  137. package/ios/generated/build/generated/ios/RCTAppDependencyProvider.h +0 -25
  138. package/ios/generated/build/generated/ios/RCTAppDependencyProvider.mm +0 -55
  139. package/ios/generated/build/generated/ios/RCTModulesConformingToProtocolsProvider.h +0 -18
  140. package/ios/generated/build/generated/ios/RCTModulesConformingToProtocolsProvider.mm +0 -33
  141. package/ios/generated/build/generated/ios/RCTThirdPartyComponentsProvider.h +0 -16
  142. package/ios/generated/build/generated/ios/RCTThirdPartyComponentsProvider.mm +0 -42
  143. package/ios/generated/build/generated/ios/RNCWebViewSpec/RNCWebViewSpec-generated.mm +0 -46
  144. package/ios/generated/build/generated/ios/RNCWebViewSpec/RNCWebViewSpec.h +0 -65
  145. package/ios/generated/build/generated/ios/RNCWebViewSpecJSI-generated.cpp +0 -35
  146. package/ios/generated/build/generated/ios/RNCWebViewSpecJSI.h +0 -80
  147. package/ios/generated/build/generated/ios/RNPartnerReactNativeSdkSpec/RNPartnerReactNativeSdkSpec-generated.mm +0 -39
  148. package/ios/generated/build/generated/ios/RNPartnerReactNativeSdkSpec/RNPartnerReactNativeSdkSpec.h +0 -63
  149. package/ios/generated/build/generated/ios/RNPartnerReactNativeSdkSpecJSI-generated.cpp +0 -28
  150. package/ios/generated/build/generated/ios/RNPartnerReactNativeSdkSpecJSI.h +0 -71
  151. package/ios/generated/build/generated/ios/RNPermissionsSpec/RNPermissionsSpec-generated.mm +0 -123
  152. package/ios/generated/build/generated/ios/RNPermissionsSpec/RNPermissionsSpec.h +0 -95
  153. package/ios/generated/build/generated/ios/RNPermissionsSpecJSI-generated.cpp +0 -106
  154. package/ios/generated/build/generated/ios/RNPermissionsSpecJSI.h +0 -226
  155. package/ios/generated/build/generated/ios/ReactAppDependencyProvider.podspec +0 -34
  156. package/ios/generated/build/generated/ios/ReactNativeBlobUtilSpec/ReactNativeBlobUtilSpec-generated.mm +0 -375
  157. package/ios/generated/build/generated/ios/ReactNativeBlobUtilSpec/ReactNativeBlobUtilSpec.h +0 -314
  158. package/ios/generated/build/generated/ios/ReactNativeBlobUtilSpecJSI-generated.cpp +0 -449
  159. package/ios/generated/build/generated/ios/ReactNativeBlobUtilSpecJSI.h +0 -503
  160. package/ios/generated/build/generated/ios/react/renderer/components/RNCWebViewSpec/ComponentDescriptors.cpp +0 -22
  161. package/ios/generated/build/generated/ios/react/renderer/components/RNCWebViewSpec/ComponentDescriptors.h +0 -24
  162. package/ios/generated/build/generated/ios/react/renderer/components/RNCWebViewSpec/EventEmitters.cpp +0 -258
  163. package/ios/generated/build/generated/ios/react/renderer/components/RNCWebViewSpec/EventEmitters.h +0 -277
  164. package/ios/generated/build/generated/ios/react/renderer/components/RNCWebViewSpec/Props.cpp +0 -101
  165. package/ios/generated/build/generated/ios/react/renderer/components/RNCWebViewSpec/Props.h +0 -507
  166. package/ios/generated/build/generated/ios/react/renderer/components/RNCWebViewSpec/RCTComponentViewHelpers.h +0 -218
  167. package/ios/generated/build/generated/ios/react/renderer/components/RNCWebViewSpec/ShadowNodes.cpp +0 -17
  168. package/ios/generated/build/generated/ios/react/renderer/components/RNCWebViewSpec/ShadowNodes.h +0 -32
  169. package/ios/generated/build/generated/ios/react/renderer/components/RNCWebViewSpec/States.cpp +0 -16
  170. package/ios/generated/build/generated/ios/react/renderer/components/RNCWebViewSpec/States.h +0 -29
  171. package/ios/generated/build/generated/ios/react/renderer/components/rnscreens/ComponentDescriptors.cpp +0 -31
  172. package/ios/generated/build/generated/ios/react/renderer/components/rnscreens/ComponentDescriptors.h +0 -33
  173. package/ios/generated/build/generated/ios/react/renderer/components/rnscreens/EventEmitters.cpp +0 -480
  174. package/ios/generated/build/generated/ios/react/renderer/components/rnscreens/EventEmitters.h +0 -403
  175. package/ios/generated/build/generated/ios/react/renderer/components/rnscreens/Props.cpp +0 -286
  176. package/ios/generated/build/generated/ios/react/renderer/components/rnscreens/Props.h +0 -1080
  177. package/ios/generated/build/generated/ios/react/renderer/components/rnscreens/RCTComponentViewHelpers.h +0 -195
  178. package/ios/generated/build/generated/ios/react/renderer/components/rnscreens/ShadowNodes.cpp +0 -26
  179. package/ios/generated/build/generated/ios/react/renderer/components/rnscreens/ShadowNodes.h +0 -131
  180. package/ios/generated/build/generated/ios/react/renderer/components/rnscreens/States.cpp +0 -16
  181. package/ios/generated/build/generated/ios/react/renderer/components/rnscreens/States.h +0 -137
  182. package/ios/generated/build/generated/ios/react/renderer/components/safeareacontext/ComponentDescriptors.cpp +0 -22
  183. package/ios/generated/build/generated/ios/react/renderer/components/safeareacontext/ComponentDescriptors.h +0 -24
  184. package/ios/generated/build/generated/ios/react/renderer/components/safeareacontext/EventEmitters.cpp +0 -40
  185. package/ios/generated/build/generated/ios/react/renderer/components/safeareacontext/EventEmitters.h +0 -47
  186. package/ios/generated/build/generated/ios/react/renderer/components/safeareacontext/Props.cpp +0 -33
  187. package/ios/generated/build/generated/ios/react/renderer/components/safeareacontext/Props.h +0 -85
  188. package/ios/generated/build/generated/ios/react/renderer/components/safeareacontext/RCTComponentViewHelpers.h +0 -24
  189. package/ios/generated/build/generated/ios/react/renderer/components/safeareacontext/ShadowNodes.cpp +0 -17
  190. package/ios/generated/build/generated/ios/react/renderer/components/safeareacontext/ShadowNodes.h +0 -32
  191. package/ios/generated/build/generated/ios/react/renderer/components/safeareacontext/States.cpp +0 -16
  192. package/ios/generated/build/generated/ios/react/renderer/components/safeareacontext/States.h +0 -29
  193. package/ios/generated/build/generated/ios/rnasyncstorage/rnasyncstorage-generated.mm +0 -74
  194. package/ios/generated/build/generated/ios/rnasyncstorage/rnasyncstorage.h +0 -71
  195. package/ios/generated/build/generated/ios/rnasyncstorageJSI-generated.cpp +0 -72
  196. package/ios/generated/build/generated/ios/rnasyncstorageJSI.h +0 -116
  197. package/ios/generated/build/generated/ios/rnscreens/rnscreens-generated.mm +0 -34
  198. package/ios/generated/build/generated/ios/rnscreens/rnscreens.h +0 -62
  199. package/ios/generated/build/generated/ios/rnscreensJSI-generated.cpp +0 -22
  200. package/ios/generated/build/generated/ios/rnscreensJSI.h +0 -64
  201. package/ios/generated/build/generated/ios/safeareacontext/safeareacontext-generated.mm +0 -39
  202. package/ios/generated/build/generated/ios/safeareacontext/safeareacontext.h +0 -226
  203. package/ios/generated/build/generated/ios/safeareacontextJSI-generated.cpp +0 -26
  204. package/ios/generated/build/generated/ios/safeareacontextJSI.h +0 -71
  205. package/lib/typescript/rn78test/App.d.ts +0 -10
  206. package/lib/typescript/rn78test/App.d.ts.map +0 -1
@@ -14,7 +14,7 @@ Pod::Spec.new do |s|
14
14
  s.source = { :git => "https://github.com/spense-fintech/partner-react-native-library.git.git", :tag => "#{s.version}" }
15
15
 
16
16
  s.source_files = "ios/**/*.{h,m,mm,cpp}"
17
- s.private_header_files = "ios/**/*.h"
17
+ # s.private_header_files = "ios/**/*.h"
18
18
  s.exclude_files = "ios/generated/**"
19
19
 
20
20
  # Use install_modules_dependencies helper to install the dependencies if React Native version >=0.71.0.
@@ -23,5 +23,9 @@ if respond_to?(:install_modules_dependencies, true)
23
23
  install_modules_dependencies(s)
24
24
  else
25
25
  s.dependency "React-Core"
26
+ s.dependency "React-Codegen"
27
+ s.dependency "RCTRequired"
28
+ s.dependency "RCTTypeSafety"
29
+ s.dependency "ReactCommon/turbomodule/core"
26
30
  end
27
31
  end
@@ -3,16 +3,7 @@
3
3
  // APICall.ts (updated)
4
4
  import NetworkManager from "./network_manager.js";
5
5
  import { HeaderManager } from "../utils/headerManager.js";
6
-
7
- // import {
8
- // generateAESKey,
9
- // exportAESKeyBase64,
10
- // encryptAESKeyWithRSA,
11
- // encryptAES,
12
- // decryptAES,
13
- // getWebsiteKey,
14
- // } from './Encryption';
15
-
6
+ import { generateAESKey, exportAESKeyBase64, encryptAESKeyWithRSA, encryptAES, decryptAES, getWebsiteKey } from "./Encryption.js";
16
7
  export class APICall {
17
8
  networkManager = new NetworkManager();
18
9
  headerManager = new HeaderManager();
@@ -20,7 +11,7 @@ export class APICall {
20
11
  const {
21
12
  body,
22
13
  headers,
23
- encrypted = false
14
+ encrypted = true
24
15
  } = options || {};
25
16
  try {
26
17
  const response = encrypted ? await this._callAPIEncrypt(method, apiUrl, body, headers) : await this._callAPIRaw(method, apiUrl, body, headers);
@@ -42,92 +33,80 @@ export class APICall {
42
33
  headers: mergedHeaders
43
34
  });
44
35
  }
45
-
46
- // ----------------- ENCRYPTED CALL -----------------
36
+ // ----------------- ENCRYPTED CALL (quick-crypto) -----------------
47
37
  async _callAPIEncrypt(method, apiUrl, body, headers) {
48
- // 1) Generate ephemeral AES-256 key
49
- // const aesKey = await generateAESKey();
50
- // // 2) Export AES key bytes -> Base64 (for RSA input)
51
- // const aesKeyBase64 = await exportAESKeyBase64(aesKey);
52
- // // 3) Fetch server public key (cached) and RSA-wrap the AES key
53
- // const websiteKey = await getWebsiteKey(); // { kid, public, expiry }
54
- // const rsaEncryptedKey = await encryptAESKeyWithRSA(
55
- // aesKeyBase64,
56
- // websiteKey.public
57
- // );
58
- // // 4) Encrypt payload with AES-GCM -> Base64(IV||CT||TAG)
59
- // const encryptedPayload = await encryptAES(
60
- // JSON.stringify(body ?? {}),
61
- // aesKey
62
- // );
63
- // // 5) Merge headers (stringify all values)
64
- // const baseHeaders = await this.headerManager.generateHeaders();
65
- // const mergedHeaders: Record<string, string> = {
66
- // ...Object.fromEntries(
67
- // Object.entries(baseHeaders).map(([k, v]) => [k, String(v)])
68
- // ),
69
- // ...(headers
70
- // ? Object.fromEntries(
71
- // Object.entries(headers).map(([k, v]) => [k, String(v)])
72
- // )
73
- // : {}),
74
- // };
75
- // // 6) Add encryption headers
76
- // const encryptedHeaders: Record<string, string> = {
77
- // 'Content-Type': 'application/json;charset=utf-8',
78
- // 'Accept': 'application/json',
79
- // ...mergedHeaders,
80
- // 'kid': websiteKey.kid ?? '',
81
- // 'key': rsaEncryptedKey ?? '',
82
- // };
83
- // // 7) Make the encrypted request with { encrypted: "<blob>" }
84
- // const response = await this.networkManager.request({
85
- // url: apiUrl,
86
- // method,
87
- // body: { encrypted: encryptedPayload },
88
- // headers: encryptedHeaders,
89
- // });
90
- // // 8) Decrypt response if it has { encrypted }
91
- // const decrypted = await APICall.handleDecryptedResponse(response, aesKey);
92
- // if (decrypted != null) {
93
- // if (response) {
94
- // response.data = decrypted;
95
- // }
96
- // }
97
- // return response;
98
- // }
99
- // // ----------------- RESPONSE DECRYPT -----------------
100
- // static async handleDecryptedResponse(
101
- // response: any,
102
- // aesKey: CryptoKey
103
- // ): Promise<Record<string, any> | null> {
104
- // try {
105
- // if (!response) return null;
106
- // const raw = response.data;
107
- // // Accept string or object
108
- // const data: Record<string, any> =
109
- // typeof raw === 'string' ? JSON.parse(raw) : (raw as any);
110
- // if (!data || typeof data !== 'object' || !('encrypted' in data)) {
111
- // // no encrypted field, return null to signal "not decrypted"
112
- // return null;
113
- // }
114
- // const encryptedPayload = String(data.encrypted ?? '');
115
- // if (!encryptedPayload) return null;
116
- // const decryptedJson = await decryptAES(encryptedPayload, aesKey);
117
- // try {
118
- // const obj = JSON.parse(decryptedJson);
119
- // if (obj && typeof obj === 'object') {
120
- // return obj as Record<string, any>;
121
- // }
122
- // return null;
123
- // } catch {
124
- // // decrypted payload wasn't valid JSON
125
- // return null;
126
- // }
127
- // } catch {
128
- // return null;
129
- // }
130
- // }
38
+ // 1) Generate ephemeral AES-256 key (Uint8Array)
39
+ const aesKey = generateAESKey(); // Uint8Array (32 bytes)
40
+
41
+ // 2) Export AES key bytes -> Base64 (for RSA input)
42
+ const aesKeyBase64 = exportAESKeyBase64(aesKey); // string
43
+
44
+ // 3) Fetch server public key (cached) and RSA-wrap the AES key
45
+ const websiteKey = await getWebsiteKey(); // { kid, public, expiry }
46
+ const rsaEncryptedKey = encryptAESKeyWithRSA(aesKeyBase64, websiteKey.public); // string
47
+
48
+ // 4) Encrypt payload with AES-GCM -> Base64(IV||CT||TAG)
49
+ const encryptedPayload = encryptAES(JSON.stringify(body ?? {}), aesKey); // string
50
+
51
+ // 5) Merge headers (stringify all values)
52
+ const baseHeaders = await this.headerManager.generateHeaders();
53
+ const mergedHeaders = {
54
+ ...Object.fromEntries(Object.entries(baseHeaders).map(([k, v]) => [k, String(v)])),
55
+ ...(headers ? Object.fromEntries(Object.entries(headers).map(([k, v]) => [k, String(v)])) : {})
56
+ };
57
+
58
+ // 6) Add encryption headers
59
+ const encryptedHeaders = {
60
+ 'Content-Type': 'application/json;charset=utf-8',
61
+ 'Accept': 'application/json',
62
+ ...mergedHeaders,
63
+ 'encryption_kid': websiteKey.kid ?? '',
64
+ 'key': rsaEncryptedKey ?? ''
65
+ };
66
+
67
+ // 7) Make the encrypted request with { encrypted: "<blob>" }
68
+ const response = await this.networkManager.request({
69
+ url: apiUrl,
70
+ method,
71
+ body: {
72
+ encrypted: encryptedPayload
73
+ },
74
+ headers: encryptedHeaders
75
+ });
76
+
77
+ // 8) Decrypt response if it has { encrypted }
78
+ const decrypted = APICall.handleDecryptedResponse(response, aesKey);
79
+ if (decrypted != null) {
80
+ response.data = decrypted;
81
+ }
82
+ return response;
83
+ }
84
+
85
+ // ----------------- RESPONSE DECRYPT (quick-crypto) -----------------
86
+ static handleDecryptedResponse(response, aesKey) {
87
+ try {
88
+ if (!response) return null;
89
+ const raw = response.data;
90
+ // Accept string or object
91
+ const data = typeof raw === 'string' ? JSON.parse(raw) : raw;
92
+ if (!data || typeof data !== 'object' || !('encrypted' in data)) {
93
+ // no encrypted field, return null to signal "not decrypted"
94
+ return null;
95
+ }
96
+ const encryptedPayload = String(data.encrypted ?? '');
97
+ if (!encryptedPayload) return null;
98
+ const decryptedJson = decryptAES(encryptedPayload, aesKey); // sync
99
+
100
+ try {
101
+ const obj = JSON.parse(decryptedJson);
102
+ return obj && typeof obj === 'object' ? obj : null;
103
+ } catch {
104
+ // decrypted payload wasn't valid JSON
105
+ return null;
106
+ }
107
+ } catch {
108
+ return null;
109
+ }
131
110
  }
132
111
  }
133
112
  //# sourceMappingURL=APICall.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["NetworkManager","HeaderManager","APICall","networkManager","headerManager","callAPI","method","apiUrl","options","body","headers","encrypted","response","_callAPIEncrypt","_callAPIRaw","error","console","log","mergedHeaders","generateHeaders","request","url"],"sourceRoot":"../../../../src","sources":["helpers/network/APICall.tsx"],"mappings":";;AAAA;AACA,OAAOA,cAAc,MAAM,sBAAmB;AAC9C,SAASC,aAAa,QAAQ,2BAAwB;;AAEtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAO,MAAMC,OAAO,CAAC;EACXC,cAAc,GAAmB,IAAIH,cAAc,CAAC,CAAC;EACrDI,aAAa,GAAkB,IAAIH,aAAa,CAAC,CAAC;EAE1D,MAAMI,OAAOA,CACXC,MAAc,EACdC,MAAc,EACdC,OAIC,EACa;IACd,MAAM;MAAEC,IAAI;MAAEC,OAAO;MAAEC,SAAS,GAAG;IAAM,CAAC,GAAGH,OAAO,IAAI,CAAC,CAAC;IAC1D,IAAI;MACF,MAAMI,QAAQ,GAAGD,SAAS,GACtB,MAAM,IAAI,CAACE,eAAe,CAACP,MAAM,EAAEC,MAAM,EAAEE,IAAI,EAAEC,OAAO,CAAC,GACzD,MAAM,IAAI,CAACI,WAAW,CAACR,MAAM,EAAEC,MAAM,EAAEE,IAAI,EAAEC,OAAO,CAAC;MAEzD,OAAOE,QAAQ;IACjB,CAAC,CAAC,OAAOG,KAAK,EAAE;MACdC,OAAO,CAACC,GAAG,CAAC,mBAAmB,EAAEF,KAAK,CAAC;MACvC,MAAMA,KAAK;IACb;EACF;EAEA,MAAcD,WAAWA,CACvBR,MAAc,EACdC,MAAc,EACdE,IAA0B,EAC1BC,OAA6B,EACf;IACd,MAAMQ,aAAa,GAAG;MACpB,IAAI,MAAM,IAAI,CAACd,aAAa,CAACe,eAAe,CAAC,CAAC,CAAC;MAC/C,IAAIT,OAAO,IAAI,CAAC,CAAC;IACnB,CAAC;IAED,OAAO,IAAI,CAACP,cAAc,CAACiB,OAAO,CAAC;MACjCC,GAAG,EAAEd,MAAM;MACXD,MAAM,EAAEA,MAAM;MACdG,IAAI,EAAEA,IAAI;MACVC,OAAO,EAAEQ;IACX,CAAC,CAAC;EACJ;;EAEA;EACA,MAAcL,eAAeA,CAC3BP,MAAc,EACdC,MAAc,EACdE,IAA0B,EAC1BC,OAA6B,EACf;IACd;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;EAAA;AAEJ","ignoreList":[]}
1
+ {"version":3,"names":["NetworkManager","HeaderManager","generateAESKey","exportAESKeyBase64","encryptAESKeyWithRSA","encryptAES","decryptAES","getWebsiteKey","APICall","networkManager","headerManager","callAPI","method","apiUrl","options","body","headers","encrypted","response","_callAPIEncrypt","_callAPIRaw","error","console","log","mergedHeaders","generateHeaders","request","url","aesKey","aesKeyBase64","websiteKey","rsaEncryptedKey","public","encryptedPayload","JSON","stringify","baseHeaders","Object","fromEntries","entries","map","k","v","String","encryptedHeaders","kid","decrypted","handleDecryptedResponse","data","raw","parse","decryptedJson","obj"],"sourceRoot":"../../../../src","sources":["helpers/network/APICall.tsx"],"mappings":"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","ignoreList":[]}
@@ -1,241 +1,148 @@
1
- // // Encryption.tsx
2
- // // Tested with RN 0.73+.
3
-
4
- // import AsyncStorage from '@react-native-async-storage/async-storage';
5
- // import { v4 as uuidv4 } from 'uuid';
6
- // import * as base64js from 'base64-js';
7
- // import { ServiceNames } from '../ServiceNames';
8
-
9
- // type WebsiteKey = {
10
- // kid: string;
11
- // public: string; // PEM
12
- // expiry: string; // ISO8601
13
- // };
14
-
15
- // const KEY_WEB = 'KEY_WEB';
16
- // const KEY_WEB_EXPIRY = 'KEY_WEB_EXPIRY';
17
-
18
- // const GCM_NONCE_LEN = 12; // 12-byte IV
19
- // const GCM_TAG_LEN = 16; // 16-byte auth tag
20
- // const AES_KEY_LEN = 256; // bits
21
-
22
- // // ---------- Base64 helpers ----------
23
- // const bytesToB64 = (bytes: Uint8Array): string => base64js.fromByteArray(bytes);
24
-
25
- // const b64ToBytes = (b64: string): Uint8Array => base64js.toByteArray(b64);
26
-
27
- // // ---------- UTF-8 helpers ----------
28
- // const utf8Encode = (s: string): Uint8Array => new TextEncoder().encode(s);
29
-
30
- // const utf8Decode = (bytes: Uint8Array): string =>
31
- // new TextDecoder().decode(bytes);
32
-
33
- // // ---------- AES-256-GCM ----------
34
-
35
- // /** Generate a random AES-256-GCM CryptoKey (extractable for raw export). */
36
- // export async function generateAESKey(): Promise<CryptoKey> {
37
- // return await crypto.subtle.generateKey(
38
- // { name: 'AES-GCM', length: AES_KEY_LEN },
39
- // true, // extractable to raw for Base64 export
40
- // ['encrypt', 'decrypt']
41
- // );
42
- // }
43
-
44
- // /** Export AES key bytes → Base64 (to match your RSA input). */
45
- // export async function exportAESKeyBase64(key: CryptoKey): Promise<string> {
46
- // const raw = new Uint8Array(await crypto.subtle.exportKey('raw', key));
47
- // return bytesToB64(raw);
48
- // }
49
-
50
- // /**
51
- // * Encrypt plaintext with AES-GCM and return Base64( IV || ciphertext || tag )
52
- // * Exactly matches your Flutter packing:
53
- // * - IV: 12 bytes
54
- // * - SubtleCrypto returns ciphertext||tag; we prepend IV and then Base64 the whole blob.
55
- // */
56
- // export async function encryptAES(
57
- // plaintext: string,
58
- // key: CryptoKey
59
- // ): Promise<string> {
60
- // const iv = crypto.getRandomValues(new Uint8Array(GCM_NONCE_LEN));
61
- // const ptBytes = utf8Encode(plaintext);
62
-
63
- // const ctWithTag = new Uint8Array(
64
- // await crypto.subtle.encrypt(
65
- // { name: 'AES-GCM', iv }, // 96-bit nonce
66
- // key,
67
- // ptBytes
68
- // )
69
- // );
70
- // // Pack IV || (ciphertext||tag)
71
- // const out = new Uint8Array(iv.length + ctWithTag.length);
72
- // out.set(iv, 0);
73
- // out.set(ctWithTag, iv.length);
74
- // return bytesToB64(out);
75
- // }
76
-
77
- // /**
78
- // * Decrypt Base64( IV || ciphertext || tag ) to plaintext.
79
- // * Splits IV (12), tag (16) and feeds ciphertext||tag to AES-GCM.
80
- // */
81
- // export async function decryptAES(
82
- // b64Data: string,
83
- // key: CryptoKey
84
- // ): Promise<string> {
85
- // const data = b64ToBytes(b64Data);
86
- // if (data.length < GCM_NONCE_LEN + GCM_TAG_LEN + 1) {
87
- // throw new Error('Invalid GCM payload length');
88
- // }
89
- // const iv = data.slice(0, GCM_NONCE_LEN);
90
- // const ctPlusTag = data.slice(GCM_NONCE_LEN); // subtle needs ciphertext||tag
91
- // const pt = new Uint8Array(
92
- // await crypto.subtle.decrypt({ name: 'AES-GCM', iv }, key, ctPlusTag)
93
- // );
94
- // return utf8Decode(pt);
95
- // }
96
-
97
- // // ---------- RSA-OAEP (SHA-256) ----------
98
-
99
- // /** Parse PEM public key and import as CryptoKey (RSA-OAEP with SHA-256). */
100
- // async function importRsaPublicKeyFromPem(pem: string): Promise<CryptoKey> {
101
- // // Tolerate PEMs with/without headers
102
- // const clean = pem
103
- // .replace(/-----BEGIN PUBLIC KEY-----/g, '')
104
- // .replace(/-----END PUBLIC KEY-----/g, '')
105
- // .replace(/\s+/g, '');
106
- // const der = b64ToBytes(clean);
107
- // return await crypto.subtle.importKey(
108
- // 'spki',
109
- // der,
110
- // { name: 'RSA-OAEP', hash: 'SHA-256' },
111
- // false,
112
- // ['encrypt']
113
- // );
114
- // }
115
-
116
- // /**
117
- // * RSA-OAEP(SHA-256) encrypts the UTF-8 bytes of the **Base64(AES key)** string.
118
- // * Returns Base64 ciphertext.
119
- // */
120
- // export async function encryptAESKeyWithRSA(
121
- // aesKeyBase64: string,
122
- // publicKeyPem: string
123
- // ): Promise<string> {
124
- // const pub = await importRsaPublicKeyFromPem(publicKeyPem);
125
- // const data = utf8Encode(aesKeyBase64);
126
- // const enc = new Uint8Array(
127
- // await crypto.subtle.encrypt({ name: 'RSA-OAEP' }, pub, data)
128
- // );
129
- // return bytesToB64(enc);
130
- // }
131
-
132
- // // ---------- Website key fetch / cache ----------
133
-
134
- // /**
135
- // * Fetches & caches the server public key.
136
- // * Accepts two shapes (same as your Flutter):
137
- // * A) { "<kid>": { kid, public, expiry } }
138
- // * B) { kid, public, expiry }
139
- // */
140
- // export async function getWebsiteKey(): Promise<WebsiteKey> {
141
- // const cachedJson = await AsyncStorage.getItem(KEY_WEB);
142
- // const cachedExpiry = await AsyncStorage.getItem(KEY_WEB_EXPIRY);
143
-
144
- // if (cachedJson && cachedExpiry) {
145
- // try {
146
- // const expiry = new Date(cachedExpiry);
147
- // if (new Date() < expiry) {
148
- // return JSON.parse(cachedJson) as WebsiteKey;
149
- // }
150
- // } catch {
151
- // // ignore and refetch
152
- // }
153
- // }
154
- // const txnId = uuidv4();
155
- // const resp = await fetch(ServiceNames.WEBSITE_KEYS, {
156
- // method: 'GET',
157
- // headers: {
158
- // 'X-Txn-ID': txnId,
159
- // },
160
- // });
161
-
162
- // if (!resp.ok) {
163
- // throw new Error(`Website keys fetch failed: ${resp.status}`);
164
- // }
165
- // const raw = await resp.json();
166
- // console.log('Fetched website key', { txnId, raw });
167
-
168
- // let obj: any;
169
- // if (
170
- // raw &&
171
- // typeof raw === 'object' &&
172
- // !(
173
- // Object.prototype.hasOwnProperty.call(raw, 'kid') &&
174
- // (Object.prototype.hasOwnProperty.call(raw, 'public') ||
175
- // Object.prototype.hasOwnProperty.call(raw, 'public_key'))
176
- // )
177
- // ) {
178
- // // Assume single-entry map keyed by KID
179
- // const values = Object.values(raw);
180
- // if (!values.length || typeof values[0] !== 'object') {
181
- // throw new Error('Unexpected keyset response shape');
182
- // }
183
- // obj = values[0];
184
- // } else {
185
- // obj = raw;
186
- // }
187
-
188
- // const kid: string | undefined = obj.kid ?? obj.KID;
189
- // const publicKey: string | undefined = obj.public ?? obj.public_key;
190
- // const expiry: string | undefined = obj.expiry ?? obj.exp ?? obj.expiresAt;
191
-
192
- // if (!kid || !publicKey || !expiry) {
193
- // throw new Error('Missing kid/public/expiry in website key response');
194
- // }
195
-
196
- // const normalized: WebsiteKey = { kid, public: publicKey, expiry };
197
-
198
- // await AsyncStorage.setItem(KEY_WEB, JSON.stringify(normalized));
199
- // await AsyncStorage.setItem(KEY_WEB_EXPIRY, expiry);
200
-
201
- // return normalized;
202
- // }
203
-
204
- // // ---------- Optional: Hybrid helpers (one-liners) ----------
205
-
206
- // export type HybridEnvelope = {
207
- // kid: string;
208
- // rsaWrappedAESKey: string; // Base64 RSA(OAEP) of Base64(AES key)
209
- // cipherData: string; // Base64( IV || ciphertext || tag )
210
- // };
211
-
212
- // export async function encryptHybrid(
213
- // plaintext: string
214
- // ): Promise<HybridEnvelope> {
215
- // // 1) fetch server key
216
- // const { kid, public: publicPem } = await getWebsiteKey();
217
-
218
- // // 2) generate AES key & encrypt data
219
- // const aesKey = await generateAESKey();
220
- // const cipherData = await encryptAES(plaintext, aesKey);
221
-
222
- // // 3) export AES key to Base64 and RSA-wrap it
223
- // const aesKeyB64 = await exportAESKeyBase64(aesKey);
224
- // const rsaWrappedAESKey = await encryptAESKeyWithRSA(aesKeyB64, publicPem);
225
-
226
- // return { kid, rsaWrappedAESKey, cipherData };
227
- // }
228
-
229
- // /**
230
- // * Decrypt using an already-imported AES key (symmetric path).
231
- // * Use this for local decrypts (e.g., testing) or when the server sends you encrypted data
232
- // * and you already have the AES key.
233
- // */
234
- // export async function decryptHybridLocal(
235
- // cipherData: string,
236
- // aesKey: CryptoKey
237
- // ): Promise<string> {
238
- // return await decryptAES(cipherData, aesKey);
239
- // }
240
1
  "use strict";
2
+
3
+ // Encryption.ts
4
+ import AsyncStorage from '@react-native-async-storage/async-storage';
5
+ import * as base64js from 'base64-js';
6
+ import { ServiceNames } from "../ServiceNames.js";
7
+ import crypto from 'react-native-quick-crypto';
8
+ import { Buffer } from '@craftzdog/react-native-buffer';
9
+ const {
10
+ randomBytes,
11
+ createCipheriv,
12
+ createDecipheriv,
13
+ publicEncrypt,
14
+ constants,
15
+ createPublicKey
16
+ } = crypto;
17
+ const KEY_WEB = 'KEY_WEB';
18
+ const KEY_WEB_EXPIRY = 'KEY_WEB_EXPIRY';
19
+ const GCM_NONCE_LEN = 12; // 12-byte IV
20
+ const GCM_TAG_LEN = 16; // 16-byte tag
21
+ const AES_KEY_LEN_BYTES = 32; // 256 bits
22
+
23
+ // --- small utils ---
24
+ const bytesToB64 = u8 => base64js.fromByteArray(u8);
25
+ const b64ToBytes = b64 => base64js.toByteArray(b64);
26
+
27
+ // ---------- AES-256-GCM ----------
28
+
29
+ /** Generate random 32-byte AES key */
30
+ export function generateAESKey() {
31
+ return new Uint8Array(randomBytes(AES_KEY_LEN_BYTES));
32
+ }
33
+
34
+ /** Export AES key bytes -> Base64 (for RSA input) */
35
+ export function exportAESKeyBase64(keyBytes) {
36
+ return bytesToB64(keyBytes);
37
+ }
38
+
39
+ /** Encrypt plaintext -> Base64( IV || ciphertext || tag ) */
40
+ export function encryptAES(plaintext, keyBytes) {
41
+ const iv = new Uint8Array(randomBytes(GCM_NONCE_LEN));
42
+ const cipher = createCipheriv('aes-256-gcm', Buffer.from(keyBytes), Buffer.from(iv));
43
+ const ct1 = cipher.update(plaintext, 'utf8');
44
+ const ct2 = cipher.final();
45
+ const ciphertext = Buffer.concat([ct1, ct2]);
46
+ const tag = cipher.getAuthTag(); // 16 bytes
47
+
48
+ const out = new Uint8Array(iv.length + ciphertext.length + tag.length);
49
+ out.set(iv, 0);
50
+ out.set(ciphertext, iv.length);
51
+ out.set(tag, iv.length + ciphertext.length);
52
+ return bytesToB64(out);
53
+ }
54
+
55
+ /** Decrypt Base64( IV || ciphertext || tag ) -> plaintext */
56
+ export function decryptAES(b64Data, keyBytes) {
57
+ const data = b64ToBytes(b64Data);
58
+ if (data.length < GCM_NONCE_LEN + GCM_TAG_LEN + 1) {
59
+ throw new Error('Invalid GCM payload length');
60
+ }
61
+ const iv = data.slice(0, GCM_NONCE_LEN);
62
+ const tag = data.slice(data.length - GCM_TAG_LEN);
63
+ const ct = data.slice(GCM_NONCE_LEN, data.length - GCM_TAG_LEN);
64
+ const decipher = createDecipheriv('aes-256-gcm', Buffer.from(keyBytes), Buffer.from(iv));
65
+ decipher.setAuthTag(Buffer.from(tag));
66
+ const pt1 = decipher.update(Buffer.from(ct));
67
+ const pt2 = decipher.final();
68
+ return Buffer.concat([pt1, pt2]).toString('utf8');
69
+ }
70
+
71
+ // ---------- RSA-OAEP (SHA-256) ----------
72
+
73
+ /** RSA-OAEP(SHA-256) encrypt UTF-8 bytes of Base64(AES key) -> Base64 ciphertext */
74
+ export function encryptAESKeyWithRSA(aesKeyBase64, publicKeyPem) {
75
+ const buf = Buffer.from(aesKeyBase64, 'utf8');
76
+ const enc = publicEncrypt({
77
+ key: publicKeyPem,
78
+ padding: constants.RSA_PKCS1_OAEP_PADDING,
79
+ oaepHash: 'sha256'
80
+ }, buf);
81
+ return enc.toString('base64');
82
+ }
83
+
84
+ // ---------- Website key fetch / cache ----------
85
+
86
+ export async function getWebsiteKey() {
87
+ // const cachedJson = await AsyncStorage.getItem(KEY_WEB);
88
+ // const cachedExpiry = await AsyncStorage.getItem(KEY_WEB_EXPIRY);
89
+ // if (cachedJson && cachedExpiry) {
90
+ // try {
91
+ // if (new Date() < new Date(cachedExpiry)) {
92
+ // return JSON.parse(cachedJson) as WebsiteKey;
93
+ // }
94
+ // } catch {
95
+ // /* ignore */
96
+ // }
97
+ // }
98
+
99
+ // const txnId = uuidv4();
100
+ const resp = await fetch(ServiceNames.WEBSITE_KEYS, {
101
+ method: 'GET'
102
+ // headers: { 'X-Txn-ID': txnId },
103
+ });
104
+ if (!resp.ok) throw new Error(`Website keys fetch failed: ${resp.status}`);
105
+ const raw = await resp.json();
106
+ console.log('Website keys response:', raw);
107
+ let obj;
108
+ if (raw && typeof raw === 'object' && !(Object.prototype.hasOwnProperty.call(raw, 'kid') && (Object.prototype.hasOwnProperty.call(raw, 'public') || Object.prototype.hasOwnProperty.call(raw, 'public_key')))) {
109
+ const values = Object.values(raw);
110
+ if (!values.length || typeof values[0] !== 'object') {
111
+ throw new Error('Unexpected keyset response shape');
112
+ }
113
+ obj = values[0];
114
+ } else {
115
+ obj = raw;
116
+ }
117
+ const kid = obj.kid ?? obj.KID;
118
+ const publicKey = obj.public ?? obj.public_key;
119
+ const expiry = obj.expiry ?? obj.exp ?? obj.expiresAt;
120
+ if (!kid || !publicKey || !expiry) throw new Error('Missing kid/public/expiry');
121
+ const normalized = {
122
+ kid,
123
+ public: publicKey,
124
+ expiry
125
+ };
126
+ await AsyncStorage.setItem(KEY_WEB, JSON.stringify(normalized));
127
+ await AsyncStorage.setItem(KEY_WEB_EXPIRY, expiry);
128
+ return normalized;
129
+ }
130
+
131
+ // ---------- Optional: one-liners ----------
132
+
133
+ export async function encryptHybrid(plaintext) {
134
+ const {
135
+ kid,
136
+ public: publicPem
137
+ } = await getWebsiteKey();
138
+ const aesKey = generateAESKey();
139
+ const cipherData = encryptAES(plaintext, aesKey);
140
+ const aesKeyB64 = exportAESKeyBase64(aesKey);
141
+ const rsaWrappedAESKey = encryptAESKeyWithRSA(aesKeyB64, publicPem);
142
+ return {
143
+ kid,
144
+ rsaWrappedAESKey,
145
+ cipherData
146
+ };
147
+ }
241
148
  //# sourceMappingURL=Encryption.js.map
@@ -1 +1 @@
1
- {"version":3,"names":[],"sourceRoot":"../../../../src","sources":["helpers/network/Encryption.tsx"],"mappings":"AAAA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA","ignoreList":[]}
1
+ {"version":3,"names":["AsyncStorage","base64js","ServiceNames","crypto","Buffer","randomBytes","createCipheriv","createDecipheriv","publicEncrypt","constants","createPublicKey","KEY_WEB","KEY_WEB_EXPIRY","GCM_NONCE_LEN","GCM_TAG_LEN","AES_KEY_LEN_BYTES","bytesToB64","u8","fromByteArray","b64ToBytes","b64","toByteArray","generateAESKey","Uint8Array","exportAESKeyBase64","keyBytes","encryptAES","plaintext","iv","cipher","from","ct1","update","ct2","final","ciphertext","concat","tag","getAuthTag","out","length","set","decryptAES","b64Data","data","Error","slice","ct","decipher","setAuthTag","pt1","pt2","toString","encryptAESKeyWithRSA","aesKeyBase64","publicKeyPem","buf","enc","key","padding","RSA_PKCS1_OAEP_PADDING","oaepHash","getWebsiteKey","resp","fetch","WEBSITE_KEYS","method","ok","status","raw","json","console","log","obj","Object","prototype","hasOwnProperty","call","values","kid","KID","publicKey","public","public_key","expiry","exp","expiresAt","normalized","setItem","JSON","stringify","encryptHybrid","publicPem","aesKey","cipherData","aesKeyB64","rsaWrappedAESKey"],"sourceRoot":"../../../../src","sources":["helpers/network/Encryption.tsx"],"mappings":"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","ignoreList":[]}