@vppos/react-native-nfc 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 (223) hide show
  1. package/LICENSE +20 -0
  2. package/NFCSDK.podspec +40 -0
  3. package/android/build.gradle +85 -0
  4. package/android/gradle.properties +5 -0
  5. package/android/src/main/AndroidManifest.xml +31 -0
  6. package/android/src/main/AndroidManifestNew.xml +30 -0
  7. package/android/src/main/java/com/nfcsdk/ChipReader.kt +237 -0
  8. package/android/src/main/java/com/nfcsdk/NFCSDKModule.kt +78 -0
  9. package/android/src/main/java/com/nfcsdk/NFCSDKPackage.kt +17 -0
  10. package/android/src/main/java/com/nfcsdk/NFCScanActivity.kt +299 -0
  11. package/android/src/main/java/com/nfcsdk/utils/Dg13Parser.kt +278 -0
  12. package/android/src/main/java/com/nfcsdk/utils/FaceExtractor.kt +40 -0
  13. package/android/src/main/java/com/nfcsdk/utils/MrzUtils.kt +75 -0
  14. package/android/src/main/res/drawable/bg_nfc_bottom_sheet.xml +13 -0
  15. package/android/src/main/res/drawable/bg_nfc_sheet_handle.xml +9 -0
  16. package/android/src/main/res/layout/activity_nfc.xml +110 -0
  17. package/android/src/main/res/values/styles.xml +10 -0
  18. package/android/src/main/res/xml/nfc_tech_filter.xml +8 -0
  19. package/ios/ChipReader.swift +258 -0
  20. package/ios/NFCSDK-Bridging-Header.h +2 -0
  21. package/ios/NFCSDK.mm +9 -0
  22. package/ios/NFCSDK.swift +112 -0
  23. package/ios/NFCSDKSession.swift +5 -0
  24. package/ios/utils/DG13Parser.swift +302 -0
  25. package/ios/utils/MrzUtils.swift +49 -0
  26. package/lib/module/errors.js +9 -0
  27. package/lib/module/errors.js.map +1 -0
  28. package/lib/module/index.js +118 -0
  29. package/lib/module/index.js.map +1 -0
  30. package/lib/module/package.json +1 -0
  31. package/lib/module/types.js +2 -0
  32. package/lib/module/types.js.map +1 -0
  33. package/lib/typescript/package.json +1 -0
  34. package/lib/typescript/src/errors.d.ts +4 -0
  35. package/lib/typescript/src/errors.d.ts.map +1 -0
  36. package/lib/typescript/src/index.d.ts +80 -0
  37. package/lib/typescript/src/index.d.ts.map +1 -0
  38. package/lib/typescript/src/types.d.ts +45 -0
  39. package/lib/typescript/src/types.d.ts.map +1 -0
  40. package/package.json +155 -0
  41. package/src/errors.ts +6 -0
  42. package/src/index.tsx +141 -0
  43. package/src/types.ts +45 -0
  44. package/vendor/ios-passport-reader/CHANGELOG +362 -0
  45. package/vendor/ios-passport-reader/CODE_OF_CONDUCT.md +77 -0
  46. package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp/AppDelegate.swift +39 -0
  47. package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp/Assets.xcassets/AppIcon.appiconset/Contents.json +158 -0
  48. package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp/Assets.xcassets/AppIcon.appiconset/icon-40.png +0 -0
  49. package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp/Assets.xcassets/AppIcon.appiconset/icon-40@2x.png +0 -0
  50. package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp/Assets.xcassets/AppIcon.appiconset/icon-40@3x.png +0 -0
  51. package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp/Assets.xcassets/AppIcon.appiconset/icon-60@2x.png +0 -0
  52. package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp/Assets.xcassets/AppIcon.appiconset/icon-60@3x.png +0 -0
  53. package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp/Assets.xcassets/AppIcon.appiconset/icon-72.png +0 -0
  54. package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp/Assets.xcassets/AppIcon.appiconset/icon-72@2x.png +0 -0
  55. package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp/Assets.xcassets/AppIcon.appiconset/icon-76.png +0 -0
  56. package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp/Assets.xcassets/AppIcon.appiconset/icon-76@2x.png +0 -0
  57. package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp/Assets.xcassets/AppIcon.appiconset/icon-83.5@2x.png +0 -0
  58. package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp/Assets.xcassets/AppIcon.appiconset/icon-small-50.png +0 -0
  59. package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp/Assets.xcassets/AppIcon.appiconset/icon-small-50@2x.png +0 -0
  60. package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp/Assets.xcassets/AppIcon.appiconset/icon-small.png +0 -0
  61. package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp/Assets.xcassets/AppIcon.appiconset/icon-small@2x.png +0 -0
  62. package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp/Assets.xcassets/AppIcon.appiconset/icon-small@3x.png +0 -0
  63. package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp/Assets.xcassets/AppIcon.appiconset/icon.png +0 -0
  64. package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp/Assets.xcassets/AppIcon.appiconset/icon@2x.png +0 -0
  65. package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp/Assets.xcassets/AppIcon.appiconset/ios-marketing.png +0 -0
  66. package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp/Assets.xcassets/AppIcon.appiconset/notification-icon@2x.png +0 -0
  67. package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp/Assets.xcassets/AppIcon.appiconset/notification-icon@3x.png +0 -0
  68. package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp/Assets.xcassets/AppIcon.appiconset/notification-icon~ipad.png +0 -0
  69. package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp/Assets.xcassets/AppIcon.appiconset/notification-icon~ipad@2x.png +0 -0
  70. package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp/Assets.xcassets/Contents.json +6 -0
  71. package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp/Assets.xcassets/background.imageset/Contents.json +21 -0
  72. package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp/Assets.xcassets/background.imageset/background.png +0 -0
  73. package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp/Assets.xcassets/head.imageset/Contents.json +21 -0
  74. package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp/Assets.xcassets/head.imageset/head.png +0 -0
  75. package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp/Base.lproj/LaunchScreen.storyboard +25 -0
  76. package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp/Extensions/FileManagerExt.swift +16 -0
  77. package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp/Extensions/StringExt.swift +40 -0
  78. package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp/Extensions/UIApplicationExt.swift +21 -0
  79. package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp/Info.plist +77 -0
  80. package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp/Model/PassportUtils.swift +76 -0
  81. package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp/Model/SettingsStore.swift +107 -0
  82. package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp/NFCPassportReader.entitlements +10 -0
  83. package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp/SceneDelegate.swift +57 -0
  84. package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp/Views/DetailsView.swift +197 -0
  85. package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp/Views/ExportPassportView.swift +164 -0
  86. package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp/Views/HelperViews/CheckBoxView.swift +48 -0
  87. package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp/Views/HelperViews/ViewExt.swift +20 -0
  88. package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp/Views/HelperViews/ViewModifiers.swift +41 -0
  89. package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp/Views/MRZEntryView.swift +125 -0
  90. package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp/Views/MRZScannerViewController.swift +90 -0
  91. package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp/Views/MainView.swift +214 -0
  92. package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp/Views/PassportSummaryView.swift +111 -0
  93. package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp/Views/PassportView.swift +73 -0
  94. package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp/Views/SettingsView.swift +63 -0
  95. package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp/Views/StoredPassportView.swift +152 -0
  96. package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp/masterList.pem +32 -0
  97. package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp/readme.md +10 -0
  98. package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp.xcodeproj/project.pbxproj +695 -0
  99. package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp.xcodeproj/xcshareddata/xcschemes/NFCPassportReader.xcscheme +106 -0
  100. package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp.xcworkspace/contents.xcworkspacedata +10 -0
  101. package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  102. package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings +8 -0
  103. package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderAppTests/DataGroupParsingTests.swift +189 -0
  104. package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderAppTests/Info.plist +22 -0
  105. package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderAppTests/NFCPassportReaderTests.swift +260 -0
  106. package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderAppTests/PACETests.swift +112 -0
  107. package/vendor/ios-passport-reader/Examples/Example_CocoaPods/Podfile +22 -0
  108. package/vendor/ios-passport-reader/Examples/Example_CocoaPods/Podfile.lock +35 -0
  109. package/vendor/ios-passport-reader/Examples/Example_CocoaPods/README.md +2 -0
  110. package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/AppDelegate.swift +39 -0
  111. package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/Assets.xcassets/AppIcon.appiconset/Contents.json +158 -0
  112. package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/Assets.xcassets/AppIcon.appiconset/icon-40.png +0 -0
  113. package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/Assets.xcassets/AppIcon.appiconset/icon-40@2x.png +0 -0
  114. package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/Assets.xcassets/AppIcon.appiconset/icon-40@3x.png +0 -0
  115. package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/Assets.xcassets/AppIcon.appiconset/icon-60@2x.png +0 -0
  116. package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/Assets.xcassets/AppIcon.appiconset/icon-60@3x.png +0 -0
  117. package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/Assets.xcassets/AppIcon.appiconset/icon-72.png +0 -0
  118. package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/Assets.xcassets/AppIcon.appiconset/icon-72@2x.png +0 -0
  119. package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/Assets.xcassets/AppIcon.appiconset/icon-76.png +0 -0
  120. package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/Assets.xcassets/AppIcon.appiconset/icon-76@2x.png +0 -0
  121. package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/Assets.xcassets/AppIcon.appiconset/icon-83.5@2x.png +0 -0
  122. package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/Assets.xcassets/AppIcon.appiconset/icon-small-50.png +0 -0
  123. package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/Assets.xcassets/AppIcon.appiconset/icon-small-50@2x.png +0 -0
  124. package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/Assets.xcassets/AppIcon.appiconset/icon-small.png +0 -0
  125. package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/Assets.xcassets/AppIcon.appiconset/icon-small@2x.png +0 -0
  126. package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/Assets.xcassets/AppIcon.appiconset/icon-small@3x.png +0 -0
  127. package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/Assets.xcassets/AppIcon.appiconset/icon.png +0 -0
  128. package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/Assets.xcassets/AppIcon.appiconset/icon@2x.png +0 -0
  129. package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/Assets.xcassets/AppIcon.appiconset/ios-marketing.png +0 -0
  130. package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/Assets.xcassets/AppIcon.appiconset/notification-icon@2x.png +0 -0
  131. package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/Assets.xcassets/AppIcon.appiconset/notification-icon@3x.png +0 -0
  132. package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/Assets.xcassets/AppIcon.appiconset/notification-icon~ipad.png +0 -0
  133. package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/Assets.xcassets/AppIcon.appiconset/notification-icon~ipad@2x.png +0 -0
  134. package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/Assets.xcassets/Contents.json +6 -0
  135. package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/Assets.xcassets/background.imageset/Contents.json +21 -0
  136. package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/Assets.xcassets/background.imageset/background.png +0 -0
  137. package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/Assets.xcassets/head.imageset/Contents.json +21 -0
  138. package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/Assets.xcassets/head.imageset/head.png +0 -0
  139. package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/Base.lproj/LaunchScreen.storyboard +25 -0
  140. package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/Extensions/FileManagerExt.swift +16 -0
  141. package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/Extensions/StringExt.swift +40 -0
  142. package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/Extensions/UIApplicationExt.swift +21 -0
  143. package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/Info.plist +79 -0
  144. package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/Model/PassportUtils.swift +99 -0
  145. package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/Model/SettingsStore.swift +98 -0
  146. package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/Model/SettingsStoreCAN.swift +75 -0
  147. package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/MrzScanner/LICENSE +21 -0
  148. package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/MrzScanner/PreviewView.swift +34 -0
  149. package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/MrzScanner/StringUtils.swift +160 -0
  150. package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/MrzScanner/ViewController.swift +320 -0
  151. package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/MrzScanner/VisionViewController.swift +163 -0
  152. package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/NFCPassportReader.entitlements +10 -0
  153. package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/SceneDelegate.swift +58 -0
  154. package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/Views/CANViews/CanKeyView.swift +251 -0
  155. package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/Views/CANViews/MRZEntryViewCanKey.swift +65 -0
  156. package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/Views/CANViews/PassportViewCAN.swift +73 -0
  157. package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/Views/DetailsView.swift +193 -0
  158. package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/Views/ExportPassportView.swift +164 -0
  159. package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/Views/HelperViews/CheckBoxView.swift +48 -0
  160. package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/Views/HelperViews/ViewExt.swift +20 -0
  161. package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/Views/HelperViews/ViewModifiers.swift +41 -0
  162. package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/Views/MRZEntryView.swift +125 -0
  163. package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/Views/MRZScannerViewController.swift +90 -0
  164. package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/Views/MainView.swift +264 -0
  165. package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/Views/PassportSummaryView.swift +111 -0
  166. package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/Views/PassportView.swift +73 -0
  167. package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/Views/SettingsView.swift +47 -0
  168. package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/Views/StoredPassportView.swift +149 -0
  169. package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/masterList.pem +32 -0
  170. package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/readme.md +10 -0
  171. package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp.xcodeproj/project.pbxproj +683 -0
  172. package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
  173. package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +25 -0
  174. package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp.xcodeproj/xcshareddata/xcschemes/NFCPassportReader.xcscheme +106 -0
  175. package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderAppTests/DataGroupParsingTests.swift +190 -0
  176. package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderAppTests/Info.plist +22 -0
  177. package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderAppTests/NFCPassportReaderTests.swift +260 -0
  178. package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderAppTests/PACETests.swift +112 -0
  179. package/vendor/ios-passport-reader/LICENSE +21 -0
  180. package/vendor/ios-passport-reader/NFCPassportReader.podspec +27 -0
  181. package/vendor/ios-passport-reader/Package.swift +29 -0
  182. package/vendor/ios-passport-reader/README.md +141 -0
  183. package/vendor/ios-passport-reader/Sources/NFCPassportReader/AES_3DES_DESEncryption.swift +377 -0
  184. package/vendor/ios-passport-reader/Sources/NFCPassportReader/BACHandler.swift +194 -0
  185. package/vendor/ios-passport-reader/Sources/NFCPassportReader/ChipAuthenticationHandler.swift +224 -0
  186. package/vendor/ios-passport-reader/Sources/NFCPassportReader/DataGroupHash.swift +16 -0
  187. package/vendor/ios-passport-reader/Sources/NFCPassportReader/DataGroupParser.swift +36 -0
  188. package/vendor/ios-passport-reader/Sources/NFCPassportReader/DataGroups/ActiveAuthenticationInfo.swift +69 -0
  189. package/vendor/ios-passport-reader/Sources/NFCPassportReader/DataGroups/COM.swift +61 -0
  190. package/vendor/ios-passport-reader/Sources/NFCPassportReader/DataGroups/CardAccess.swift +38 -0
  191. package/vendor/ios-passport-reader/Sources/NFCPassportReader/DataGroups/ChipAuthenticationInfo.swift +135 -0
  192. package/vendor/ios-passport-reader/Sources/NFCPassportReader/DataGroups/ChipAuthenticationPublicKeyInfo.swift +53 -0
  193. package/vendor/ios-passport-reader/Sources/NFCPassportReader/DataGroups/DataGroup.swift +103 -0
  194. package/vendor/ios-passport-reader/Sources/NFCPassportReader/DataGroups/DataGroup1.swift +111 -0
  195. package/vendor/ios-passport-reader/Sources/NFCPassportReader/DataGroups/DataGroup11.swift +66 -0
  196. package/vendor/ios-passport-reader/Sources/NFCPassportReader/DataGroups/DataGroup12.swift +75 -0
  197. package/vendor/ios-passport-reader/Sources/NFCPassportReader/DataGroups/DataGroup14.swift +37 -0
  198. package/vendor/ios-passport-reader/Sources/NFCPassportReader/DataGroups/DataGroup15.swift +46 -0
  199. package/vendor/ios-passport-reader/Sources/NFCPassportReader/DataGroups/DataGroup2.swift +163 -0
  200. package/vendor/ios-passport-reader/Sources/NFCPassportReader/DataGroups/DataGroup7.swift +46 -0
  201. package/vendor/ios-passport-reader/Sources/NFCPassportReader/DataGroups/DataGroupId.swift +105 -0
  202. package/vendor/ios-passport-reader/Sources/NFCPassportReader/DataGroups/NotImplementedDG.swift +16 -0
  203. package/vendor/ios-passport-reader/Sources/NFCPassportReader/DataGroups/PACEInfo.swift +415 -0
  204. package/vendor/ios-passport-reader/Sources/NFCPassportReader/DataGroups/SOD.swift +240 -0
  205. package/vendor/ios-passport-reader/Sources/NFCPassportReader/DataGroups/SecurityInfo.swift +136 -0
  206. package/vendor/ios-passport-reader/Sources/NFCPassportReader/Errors.swift +148 -0
  207. package/vendor/ios-passport-reader/Sources/NFCPassportReader/Logging.swift +32 -0
  208. package/vendor/ios-passport-reader/Sources/NFCPassportReader/Models/FaceImageInfo.swift +161 -0
  209. package/vendor/ios-passport-reader/Sources/NFCPassportReader/NFCPassportModel.swift +540 -0
  210. package/vendor/ios-passport-reader/Sources/NFCPassportReader/NFCViewDisplayMessage.swift +60 -0
  211. package/vendor/ios-passport-reader/Sources/NFCPassportReader/OpenSSLUtils.swift +705 -0
  212. package/vendor/ios-passport-reader/Sources/NFCPassportReader/PACEHandler.swift +627 -0
  213. package/vendor/ios-passport-reader/Sources/NFCPassportReader/PassportReader.swift +387 -0
  214. package/vendor/ios-passport-reader/Sources/NFCPassportReader/Resources/PrivacyInfo.xcprivacy +14 -0
  215. package/vendor/ios-passport-reader/Sources/NFCPassportReader/ResponseAPDU.swift +25 -0
  216. package/vendor/ios-passport-reader/Sources/NFCPassportReader/SecureMessaging.swift +301 -0
  217. package/vendor/ios-passport-reader/Sources/NFCPassportReader/SecureMessagingSessionKeyGenerator.swift +156 -0
  218. package/vendor/ios-passport-reader/Sources/NFCPassportReader/SimpleASN1DumpParser.swift +173 -0
  219. package/vendor/ios-passport-reader/Sources/NFCPassportReader/TagReader.swift +374 -0
  220. package/vendor/ios-passport-reader/Sources/NFCPassportReader/Utils.swift +430 -0
  221. package/vendor/ios-passport-reader/Sources/NFCPassportReader/X509Wrapper.swift +168 -0
  222. package/vendor/ios-passport-reader/scripts/README.md +45 -0
  223. package/vendor/ios-passport-reader/scripts/extract.py +197 -0
@@ -0,0 +1,112 @@
1
+ //
2
+ // PACETests.swift
3
+ // NFCPassportReaderAppTests
4
+ //
5
+ // Created by Andy Qua on 09/03/2021.
6
+ // Copyright © 2021 Andy Qua. All rights reserved.
7
+ //
8
+
9
+ import Foundation
10
+ import OpenSSL
11
+ import NFCPassportReader
12
+
13
+ // Currently not actual tests - maybe at some point but currently just a holding place for some testing stuff I didn't want to get rid of!
14
+ // Hopefully will re-organise into proper tests!
15
+ class PACETests {
16
+ func testDHKeyMapping() -> OpaquePointer {
17
+ var resp : [UInt8] = [0x7c, 0x82, 0x01, 0x04, 0x82, 0x82, 0x01, 0x00, 0x70, 0x5a, 0xce, 0x59, 0x1c, 0x0b, 0xe1, 0xa1, 0x19, 0x5b, 0x14, 0x1c, 0x97, 0x38, 0x51, 0xde, 0x07, 0xf1, 0x66, 0xa6, 0x74, 0x7d, 0x18, 0x9f, 0x5e, 0x3b, 0x51, 0x0d, 0xbf, 0xff, 0xe2, 0x16, 0xca, 0x96, 0x0e, 0x63, 0x8d, 0x16, 0x49, 0x5f, 0x53, 0x15, 0x60, 0x9b, 0xd6, 0x6e, 0x41, 0x52, 0x69, 0x08, 0x6a, 0x37, 0x6f, 0xf4, 0xd6, 0x14, 0xcc, 0x9b, 0x9d, 0x57, 0x0e, 0x64, 0x53, 0x49, 0xa3, 0xe6, 0xd6, 0xdb, 0x80, 0xfb, 0x08, 0x39, 0xb7, 0x66, 0xdc, 0xcc, 0xb1, 0xda, 0xe0, 0xe5, 0x21, 0xaf, 0xca, 0x9b, 0xdc, 0xe2, 0xc2, 0xd9, 0xb2, 0x58, 0xd8, 0x22, 0x94, 0x23, 0x76, 0x0f, 0x40, 0x74, 0xea, 0x73, 0xf1, 0xa4, 0x4d, 0xdd, 0xfc, 0x72, 0x27, 0xda, 0x8b, 0xce, 0x03, 0x75, 0x98, 0xfe, 0x38, 0x81, 0x1d, 0x45, 0xc9, 0xd6, 0x8b, 0x81, 0x8d, 0xef, 0xdc, 0xda, 0x5f, 0xc8, 0x1a, 0x12, 0x51, 0x0d, 0xfa, 0x02, 0x67, 0xf9, 0x89, 0x5e, 0x6d, 0xb8, 0x55, 0x43, 0xb0, 0x71, 0x47, 0x0d, 0xf0, 0x27, 0xda, 0x62, 0x3b, 0xd4, 0xa9, 0x4d, 0x5e, 0xde, 0xba, 0x81, 0x7b, 0xde, 0x79, 0x5f, 0x57, 0xbf, 0x0b, 0x35, 0xf4, 0x29, 0x6f, 0x5a, 0xd4, 0xe8, 0xd9, 0xfd, 0x2c, 0x87, 0x2e, 0x84, 0x26, 0x10, 0x9d, 0x1b, 0x50, 0xe4, 0x1d, 0xb3, 0x91, 0x02, 0xac, 0xa4, 0x58, 0x52, 0x61, 0x77, 0x1f, 0x97, 0x02, 0xd6, 0x48, 0x90, 0x1f, 0x69, 0xb6, 0xa0, 0x53, 0x53, 0xf9, 0xcb, 0x57, 0x01, 0xfe, 0x9f, 0xf2, 0xa1, 0x29, 0x60, 0x3f, 0xa5, 0xa4, 0xf6, 0x3d, 0xf1, 0xc6, 0x7a, 0xf3, 0xc6, 0xfd, 0x11, 0x6c, 0x38, 0xe8, 0x91, 0x82, 0x3c, 0xd9, 0x33, 0xef, 0x57, 0x9e, 0x6c, 0x04, 0x10, 0x65, 0x6a, 0xc5, 0xaa, 0x1f, 0xc4, 0x50, 0x1d, 0xe6, 0xbd, 0x27, 0xe0, 0x79, 0x30, ]
18
+
19
+ let mappingKey : OpaquePointer = EVP_PKEY_new()
20
+ let dhKey = DH_get_2048_256()
21
+
22
+ let rc = DH_generate_key(dhKey)
23
+ EVP_PKEY_set1_DH(mappingKey, dhKey)
24
+
25
+ let pubKeyData = try! unwrapDO( tag:0x7c, wrappedData:resp)
26
+ let encodedPublicKey = try! unwrapDO(tag: 0x82, wrappedData: pubKeyData)
27
+
28
+ let piccMappingPublicKey = OpenSSLUtils.decodePublicKeyFromBytes(pubKeyData: encodedPublicKey, params: mappingKey)!
29
+ let asecret = OpenSSLUtils.computeSharedSecret(privateKeyPair: mappingKey, publicKey: piccMappingPublicKey)
30
+
31
+
32
+ let dh_mapping_key = EVP_PKEY_get1_DH(mappingKey)
33
+
34
+
35
+ print( "DONE" )
36
+
37
+ let piccNonce : [UInt8] = [0xed, 0xb6, 0xc4, 0x07, 0x04, 0xae, 0x98, 0xfd,]
38
+ let bn_nonce = BN_bin2bn(piccNonce, Int32(piccNonce.count), nil);
39
+
40
+ let bn = BN_bin2bn(encodedPublicKey, Int32(encodedPublicKey.count), nil);
41
+ var secret = [UInt8](repeating: 0, count: Int(DH_size(dh_mapping_key)))
42
+ DH_compute_key( &secret, bn, dh_mapping_key)
43
+
44
+
45
+ let bn_h = BN_bin2bn(secret, Int32(secret.count), nil);
46
+
47
+ var p : OpaquePointer? = nil
48
+ var q : OpaquePointer? = nil
49
+ var g : OpaquePointer? = nil
50
+ DH_get0_pqg(dh_mapping_key, &p, &q, &g);
51
+
52
+ // map to new generator#imageLiteral(resourceName: "simulator_screenshot_33B42CB4-EA6E-47B4-A2A2-D96CA95B0F15.png")
53
+ let bn_g = BN_new()
54
+ let new_g = BN_new()
55
+
56
+ // bn_g = g^nonce mod p
57
+ // ephemeral_key->g = bn_g mod p * h => (g^nonce mod p) * h mod p
58
+ let bn_ctx = BN_CTX_new()
59
+ let rc3 = BN_mod_exp(bn_g, g, bn_nonce, p, bn_ctx)
60
+ let rc4 = BN_mod_mul(new_g, bn_g, bn_h, p, bn_ctx)
61
+
62
+
63
+ let ephemeral_key = DHparams_dup(dh_mapping_key)
64
+ let rc5 = DH_set0_pqg(ephemeral_key, BN_dup(p), BN_dup(q), BN_dup(new_g))
65
+
66
+ BN_free( bn_nonce )
67
+ BN_free( bn )
68
+ BN_free(bn_h)
69
+ BN_free(bn_g)
70
+ BN_free(new_g)
71
+ BN_CTX_free(bn_ctx)
72
+
73
+ // Set the ephemeral params
74
+ let ephemeralParams = EVP_PKEY_new()
75
+ let rc6 = EVP_PKEY_set1_DH(ephemeralParams, ephemeral_key)
76
+
77
+ EVP_PKEY_free(mappingKey)
78
+
79
+ var ephemeralKeyPair : OpaquePointer? = nil
80
+ let pctx = EVP_PKEY_CTX_new(ephemeralParams, nil)
81
+ EVP_PKEY_keygen_init(pctx)
82
+ EVP_PKEY_keygen(pctx, &ephemeralKeyPair)
83
+ EVP_PKEY_CTX_free(pctx)
84
+
85
+ EVP_PKEY_free( ephemeralParams )
86
+
87
+ let publicKey = OpenSSLUtils.getPublicKeyData( from: ephemeralKeyPair! )
88
+ print( "Ephemeral public key - \(binToHexRep(publicKey!, asArray: true))")
89
+
90
+ return ephemeralKeyPair!
91
+ }
92
+
93
+ func doTest() {
94
+ var passportEphKey : [UInt8] = [0x01, 0xd5, 0xa8, 0xb2, 0xea, 0xb6, 0x18, 0x55, 0x34, 0x24, 0xfe, 0x25, 0x10, 0x15, 0xaf, 0xc3, 0x85, 0xda, 0x13, 0x94, 0xe7, 0x2b, 0x76, 0x81, 0x2d, 0x8c, 0xe0, 0x6f, 0x60, 0x65, 0xfb, 0x33, 0x8c, 0x5b, 0x2d, 0xc9, 0x38, 0x11, 0xb3, 0x80, 0xd7, 0x49, 0xaa, 0xeb, 0x36, 0xa5, 0xdd, 0xa0, 0x78, 0x33, 0xe0, 0xd5, 0x52, 0xd4, 0x4e, 0xaa, 0xf0, 0xa3, 0x5f, 0xd3, 0x9c, 0x89, 0x44, 0xca, 0xac, 0xf1, 0x7a, 0x1e, 0xd4, 0x61, 0x58, 0x1d, 0x81, 0x83, 0xb6, 0x98, 0x85, 0x15, 0x2d, 0xeb, 0xd7, 0xc2, 0x66, 0xe4, 0xe0, 0xd1, 0x73, 0x1c, 0x52, 0xd7, 0x3a, 0x33, 0x20, 0x1f, 0x64, 0x8b, 0x85, 0xb7, 0xe5, 0xbb, 0x09, 0xe8, 0x8a, 0xd3, 0x79, 0x8c, 0x23, 0x7a, 0x35, 0xb2, 0xc5, 0xfa, 0x42, 0xcb, 0xe4, 0xc4, 0x86, 0xa7, 0x8f, 0x96, 0x22, 0xc1, 0x2b, 0x07, 0xc6, 0x29, 0xa2, 0xfd, 0x31, 0xcb, 0xba, 0x1b, 0x05, 0xca, 0xc2, 0xaa, 0xc3, 0x6f, 0x5a, 0xa8, 0x43, 0xa1, 0x60, 0x35, 0x97, 0xda, 0x35, 0xfd, 0x76, 0x16, 0xa9, 0x32, 0x91, 0xd1, 0xd8, 0x7b, 0x0b, 0xfc, 0x30, 0x99, 0x06, 0xa7, 0x62, 0x44, 0x85, 0x2b, 0xb9, 0x9b, 0x5a, 0xfb, 0x94, 0x28, 0x47, 0x40, 0x7f, 0x7a, 0x6a, 0xb2, 0xe9, 0xcc, 0xe3, 0x13, 0x52, 0x7c, 0xc0, 0x87, 0x1d, 0x72, 0xc5, 0x4b, 0x69, 0x0a, 0x2a, 0xc7, 0x37, 0xd5, 0x17, 0xd2, 0xce, 0xd2, 0x54, 0x66, 0x92, 0x42, 0x91, 0x84, 0x24, 0xef, 0xb6, 0x98, 0x6d, 0x78, 0x95, 0x0d, 0x7e, 0x49, 0xd0, 0xee, 0xcc, 0x61, 0x5d, 0x2f, 0x5a, 0xa1, 0xb2, 0xc0, 0xa9, 0xe7, 0x30, 0x94, 0x58, 0x58, 0x7a, 0x59, 0xd7, 0x96, 0xe9, 0x8c, 0x2c, 0xfd, 0xe9, 0x58, 0xe4, 0x4b, 0xa3, 0x31, 0x47, 0x03, 0x57, 0x05, 0x84, 0x6d, 0x3c, 0x4c, 0x3a, 0xaa, ];
95
+
96
+ let ephKeyPair = testDHKeyMapping()
97
+
98
+ let passportPublicKey = OpenSSLUtils.decodePublicKeyFromBytes(pubKeyData: passportEphKey, params: ephKeyPair)
99
+
100
+ let dh = EVP_PKEY_get1_DH(ephKeyPair);
101
+
102
+ var out = [UInt8](repeating:0, count:Int(DH_size(dh)))
103
+
104
+ let dh_ppub = EVP_PKEY_get1_DH(passportPublicKey)
105
+ var bn = BN_new()
106
+ DH_get0_key( dh_ppub, &bn, nil )
107
+
108
+ let len = DH_compute_key(&out, bn, dh);
109
+
110
+ return
111
+ }
112
+ }
@@ -0,0 +1,22 @@
1
+ # Uncomment the next line to define a global platform for your project
2
+ platform :ios, '15.0'
3
+
4
+ # Disable use of input/output files here so that when we build it includes any changes to the development pod
5
+ # rather than having to manually clean and rebuuild each time
6
+ # Note this is commented out as it breaks archive project! But useful for dev
7
+ #install! 'cocoapods', :disable_input_output_paths => true
8
+
9
+ target 'NFCPassportReaderApp' do
10
+ # Comment the next line if you don't want to use dynamic frameworks
11
+ use_frameworks!
12
+
13
+ # Pods for NFCPassportReaderApp
14
+ pod 'NFCPassportReader', :path => '../..'
15
+ pod 'QKMRZScanner'
16
+
17
+ target 'NFCPassportReaderAppTests' do
18
+ inherit! :search_paths
19
+ # Pods for testing
20
+ end
21
+ end
22
+
@@ -0,0 +1,35 @@
1
+ PODS:
2
+ - NFCPassportReader (1.1.9):
3
+ - OpenSSL-Universal (= 1.1.180)
4
+ - OpenSSL-Universal (1.1.180)
5
+ - QKMRZParser (2.0.0)
6
+ - QKMRZScanner (3.0.0):
7
+ - QKMRZParser (~> 2.0.0)
8
+ - SwiftyTesseract (~> 3.1.3)
9
+ - SwiftyTesseract (3.1.3)
10
+
11
+ DEPENDENCIES:
12
+ - NFCPassportReader (from `../..`)
13
+ - QKMRZScanner
14
+
15
+ SPEC REPOS:
16
+ trunk:
17
+ - OpenSSL-Universal
18
+ - QKMRZParser
19
+ - QKMRZScanner
20
+ - SwiftyTesseract
21
+
22
+ EXTERNAL SOURCES:
23
+ NFCPassportReader:
24
+ :path: "../.."
25
+
26
+ SPEC CHECKSUMS:
27
+ NFCPassportReader: 3a4b15d28c89a1f747c957f2bce1230c268dba25
28
+ OpenSSL-Universal: 1aa4f6a6ee7256b83db99ec1ccdaa80d10f9af9b
29
+ QKMRZParser: 6b419b6f07d6bff6b50429b97de10846dc902c29
30
+ QKMRZScanner: cf2348fd6ce441e758328da4adf231ef2b51d769
31
+ SwiftyTesseract: 1f3d96668ae92dc2208d9842c8a59bea9fad2cbb
32
+
33
+ PODFILE CHECKSUM: b90c09d0214453ca8e10fa6c4bc0d09e4919d7a1
34
+
35
+ COCOAPODS: 1.11.3
@@ -0,0 +1,2 @@
1
+ The CocoaPods example is here purely informational - no real updates will be done to it.
2
+
@@ -0,0 +1,39 @@
1
+ //
2
+ // AppDelegate.swift
3
+ // NFCPassportReaderApp
4
+ //
5
+ // Created by Andy Qua on 06/06/2019.
6
+ // Copyright © 2019 Andy Qua. All rights reserved.
7
+ //
8
+
9
+ import UIKit
10
+ import CoreNFC
11
+
12
+ @UIApplicationMain
13
+ class AppDelegate: UIResponder, UIApplicationDelegate {
14
+
15
+ func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
16
+ return true
17
+ }
18
+
19
+ func applicationWillTerminate(_ application: UIApplication) {
20
+ // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
21
+ }
22
+
23
+ // MARK: UISceneSession Lifecycle
24
+
25
+ func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration {
26
+ // Called when a new scene session is being created.
27
+ // Use this method to select a configuration to create the new scene with.
28
+ return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role)
29
+ }
30
+
31
+ func application(_ application: UIApplication, didDiscardSceneSessions sceneSessions: Set<UISceneSession>) {
32
+ // Called when the user discards a scene session.
33
+ // If any sessions were discarded while the application was not running, this will be called shortly after application:didFinishLaunchingWithOptions.
34
+ // Use this method to release any resources that were specific to the discarded scenes, as they will not return.
35
+ }
36
+
37
+
38
+ }
39
+
@@ -0,0 +1,158 @@
1
+ {
2
+ "info" : {
3
+ "author" : "xcode",
4
+ "version" : 1
5
+ },
6
+ "images" : [
7
+ {
8
+ "size" : "40x40",
9
+ "filename" : "icon-40.png",
10
+ "idiom" : "ipad",
11
+ "scale" : "1x"
12
+ },
13
+ {
14
+ "size" : "40x40",
15
+ "idiom" : "ipad",
16
+ "scale" : "2x",
17
+ "filename" : "icon-40@2x.png"
18
+ },
19
+ {
20
+ "idiom" : "iphone",
21
+ "size" : "60x60",
22
+ "scale" : "2x",
23
+ "filename" : "icon-60@2x.png"
24
+ },
25
+ {
26
+ "idiom" : "ipad",
27
+ "filename" : "icon-72.png",
28
+ "size" : "72x72",
29
+ "scale" : "1x"
30
+ },
31
+ {
32
+ "scale" : "2x",
33
+ "idiom" : "ipad",
34
+ "size" : "72x72",
35
+ "filename" : "icon-72@2x.png"
36
+ },
37
+ {
38
+ "idiom" : "ipad",
39
+ "size" : "76x76",
40
+ "scale" : "1x",
41
+ "filename" : "icon-76.png"
42
+ },
43
+ {
44
+ "scale" : "2x",
45
+ "size" : "76x76",
46
+ "idiom" : "ipad",
47
+ "filename" : "icon-76@2x.png"
48
+ },
49
+ {
50
+ "idiom" : "ipad",
51
+ "size" : "50x50",
52
+ "filename" : "icon-small-50.png",
53
+ "scale" : "1x"
54
+ },
55
+ {
56
+ "scale" : "2x",
57
+ "filename" : "icon-small-50@2x.png",
58
+ "size" : "50x50",
59
+ "idiom" : "ipad"
60
+ },
61
+ {
62
+ "scale" : "1x",
63
+ "filename" : "icon-small.png",
64
+ "idiom" : "iphone",
65
+ "size" : "29x29"
66
+ },
67
+ {
68
+ "scale" : "2x",
69
+ "size" : "29x29",
70
+ "idiom" : "iphone",
71
+ "filename" : "icon-small@2x.png"
72
+ },
73
+ {
74
+ "filename" : "icon.png",
75
+ "idiom" : "iphone",
76
+ "size" : "57x57",
77
+ "scale" : "1x"
78
+ },
79
+ {
80
+ "scale" : "2x",
81
+ "size" : "57x57",
82
+ "idiom" : "iphone",
83
+ "filename" : "icon@2x.png"
84
+ },
85
+ {
86
+ "filename" : "icon-small@3x.png",
87
+ "size" : "29x29",
88
+ "idiom" : "iphone",
89
+ "scale" : "3x"
90
+ },
91
+ {
92
+ "size" : "40x40",
93
+ "scale" : "3x",
94
+ "idiom" : "iphone",
95
+ "filename" : "icon-40@3x.png"
96
+ },
97
+ {
98
+ "filename" : "icon-60@3x.png",
99
+ "scale" : "3x",
100
+ "idiom" : "iphone",
101
+ "size" : "60x60"
102
+ },
103
+ {
104
+ "size" : "40x40",
105
+ "filename" : "icon-40@2x.png",
106
+ "idiom" : "iphone",
107
+ "scale" : "2x"
108
+ },
109
+ {
110
+ "scale" : "1x",
111
+ "idiom" : "ipad",
112
+ "size" : "29x29",
113
+ "filename" : "icon-small.png"
114
+ },
115
+ {
116
+ "size" : "29x29",
117
+ "scale" : "2x",
118
+ "filename" : "icon-small@2x.png",
119
+ "idiom" : "ipad"
120
+ },
121
+ {
122
+ "idiom" : "ipad",
123
+ "filename" : "icon-83.5@2x.png",
124
+ "scale" : "2x",
125
+ "size" : "83.5x83.5"
126
+ },
127
+ {
128
+ "size" : "20x20",
129
+ "scale" : "2x",
130
+ "filename" : "notification-icon@2x.png",
131
+ "idiom" : "iphone"
132
+ },
133
+ {
134
+ "scale" : "3x",
135
+ "filename" : "notification-icon@3x.png",
136
+ "idiom" : "iphone",
137
+ "size" : "20x20"
138
+ },
139
+ {
140
+ "filename" : "notification-icon~ipad.png",
141
+ "idiom" : "ipad",
142
+ "size" : "20x20",
143
+ "scale" : "1x"
144
+ },
145
+ {
146
+ "filename" : "notification-icon~ipad@2x.png",
147
+ "size" : "20x20",
148
+ "scale" : "2x",
149
+ "idiom" : "ipad"
150
+ },
151
+ {
152
+ "filename" : "ios-marketing.png",
153
+ "size" : "1024x1024",
154
+ "idiom" : "ios-marketing",
155
+ "scale" : "1x"
156
+ }
157
+ ]
158
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "info" : {
3
+ "author" : "xcode",
4
+ "version" : 1
5
+ }
6
+ }
@@ -0,0 +1,21 @@
1
+ {
2
+ "images" : [
3
+ {
4
+ "idiom" : "universal",
5
+ "filename" : "background.png",
6
+ "scale" : "1x"
7
+ },
8
+ {
9
+ "idiom" : "universal",
10
+ "scale" : "2x"
11
+ },
12
+ {
13
+ "idiom" : "universal",
14
+ "scale" : "3x"
15
+ }
16
+ ],
17
+ "info" : {
18
+ "version" : 1,
19
+ "author" : "xcode"
20
+ }
21
+ }
@@ -0,0 +1,21 @@
1
+ {
2
+ "images" : [
3
+ {
4
+ "idiom" : "universal",
5
+ "filename" : "head.png",
6
+ "scale" : "1x"
7
+ },
8
+ {
9
+ "idiom" : "universal",
10
+ "scale" : "2x"
11
+ },
12
+ {
13
+ "idiom" : "universal",
14
+ "scale" : "3x"
15
+ }
16
+ ],
17
+ "info" : {
18
+ "version" : 1,
19
+ "author" : "xcode"
20
+ }
21
+ }
@@ -0,0 +1,25 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="13122.16" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
3
+ <dependencies>
4
+ <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="13104.12"/>
5
+ <capability name="Safe area layout guides" minToolsVersion="9.0"/>
6
+ <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
7
+ </dependencies>
8
+ <scenes>
9
+ <!--View Controller-->
10
+ <scene sceneID="EHf-IW-A2E">
11
+ <objects>
12
+ <viewController id="01J-lp-oVM" sceneMemberID="viewController">
13
+ <view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3">
14
+ <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
15
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
16
+ <color key="backgroundColor" xcode11CocoaTouchSystemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/>
17
+ <viewLayoutGuide key="safeArea" id="6Tk-OE-BBY"/>
18
+ </view>
19
+ </viewController>
20
+ <placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
21
+ </objects>
22
+ <point key="canvasLocation" x="53" y="375"/>
23
+ </scene>
24
+ </scenes>
25
+ </document>
@@ -0,0 +1,16 @@
1
+ //
2
+ // FileManagerExt.swift
3
+ // NFCPassportReaderApp
4
+ //
5
+ // Created by Andy Qua on 17/02/2021.
6
+ // Copyright © 2021 Andy Qua. All rights reserved.
7
+ //
8
+
9
+ import SwiftUI
10
+
11
+ extension FileManager {
12
+ static var cachesFolder : URL {
13
+ FileManager.default.urls(for: .cachesDirectory, in: .userDomainMask)[0]
14
+ }
15
+ }
16
+
@@ -0,0 +1,40 @@
1
+ //
2
+ // StringExt.swift
3
+ // NFCPassportReaderApp
4
+ //
5
+ // Created by Andy Qua on 30/06/2019.
6
+ // Copyright © 2019 Andy Qua. All rights reserved.
7
+ //
8
+
9
+ import Foundation
10
+
11
+ /// Some Utility methods for string - access characters by index
12
+ extension String {
13
+ subscript(_ i: Int) -> String {
14
+ let idx1 = index(startIndex, offsetBy: i)
15
+ let idx2 = index(idx1, offsetBy: 1)
16
+ return String(self[idx1..<idx2])
17
+ }
18
+
19
+ subscript (bounds: CountableRange<Int>) -> String {
20
+ let start = index(startIndex, offsetBy: bounds.lowerBound)
21
+ let end = index(startIndex, offsetBy: bounds.upperBound)
22
+ return String(self[start..<end])
23
+ }
24
+
25
+ subscript (bounds: CountableClosedRange<Int>) -> String {
26
+ let start = index(startIndex, offsetBy: bounds.lowerBound)
27
+ let end = index(startIndex, offsetBy: bounds.upperBound)
28
+ return String(self[start...end])
29
+ }
30
+
31
+ subscript (bounds: CountablePartialRangeFrom<Int>) -> String {
32
+ let start = index(startIndex, offsetBy: bounds.lowerBound)
33
+ return String(self[start...])
34
+ }
35
+
36
+ func strip() -> String {
37
+ let trimmed = self.trimmingCharacters(in: .whitespacesAndNewlines)
38
+ return trimmed
39
+ }
40
+ }
@@ -0,0 +1,21 @@
1
+ //
2
+ // UIApplicationExt.swift
3
+ // NFCPassportReaderApp
4
+ //
5
+ // Created by Andy Qua on 20/01/2021.
6
+ // Copyright © 2021 Andy Qua. All rights reserved.
7
+ //
8
+
9
+ import UIKit
10
+
11
+ extension UIApplication {
12
+ static var release: String {
13
+ return Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") as! String? ?? "x.x"
14
+ }
15
+ static var build: String {
16
+ return Bundle.main.object(forInfoDictionaryKey: "CFBundleVersion") as! String? ?? "x"
17
+ }
18
+ static var version: String {
19
+ return "\(release).\(build)"
20
+ }
21
+ }