@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,105 @@
1
+ //
2
+ // DataGroupId.swift
3
+ // NFCPassportReader
4
+ //
5
+ // Created by Andy Qua on 09/02/2021.
6
+ // Copyright © 2021 Andy Qua. All rights reserved.
7
+ //
8
+
9
+ import Foundation
10
+
11
+ @available(iOS 13, macOS 10.15, *)
12
+ public enum DataGroupId : Int, CaseIterable {
13
+ case COM = 0x60
14
+ case DG1 = 0x61
15
+ case DG2 = 0x75
16
+ case DG3 = 0x63
17
+ case DG4 = 0x76
18
+ case DG5 = 0x65
19
+ case DG6 = 0x66
20
+ case DG7 = 0x67
21
+ case DG8 = 0x68
22
+ case DG9 = 0x69
23
+ case DG10 = 0x6A
24
+ case DG11 = 0x6B
25
+ case DG12 = 0x6C
26
+ case DG13 = 0x6D
27
+ case DG14 = 0x6E
28
+ case DG15 = 0x6F
29
+ case DG16 = 0x70
30
+ case SOD = 0x77
31
+ case Unknown = 0x00
32
+
33
+ public func getName() -> String {
34
+ switch( self ) {
35
+ case .COM: return "COM"
36
+ case .DG1: return "DG1"
37
+ case .DG2: return "DG2"
38
+ case .DG3: return "DG3"
39
+ case .DG4: return "DG4"
40
+ case .DG5: return "DG5"
41
+ case .DG6: return "DG6"
42
+ case .DG7: return "DG7"
43
+ case .DG8: return "DG8"
44
+ case .DG9: return "DG9"
45
+ case .DG10: return "DG10"
46
+ case .DG11: return "DG11"
47
+ case .DG12: return "DG12"
48
+ case .DG13: return "DG13"
49
+ case .DG14: return "DG14"
50
+ case .DG15: return "DG15"
51
+ case .DG16: return "DG16"
52
+ case .SOD: return "SOD"
53
+ case .Unknown: return "Unknown"
54
+ }
55
+ }
56
+
57
+ static public func getIDFromName( name: String ) -> DataGroupId {
58
+ switch( name ) {
59
+ case "COM": return .COM
60
+ case "DG1": return .DG1
61
+ case "DG2": return .DG2
62
+ case "DG3": return .DG3
63
+ case "DG4": return .DG4
64
+ case "DG5": return .DG5
65
+ case "DG6": return .DG6
66
+ case "DG7": return .DG7
67
+ case "DG8": return .DG8
68
+ case "DG9": return .DG9
69
+ case "DG10": return .DG10
70
+ case "DG11": return .DG11
71
+ case "DG12": return .DG12
72
+ case "DG13": return .DG13
73
+ case "DG14": return .DG14
74
+ case "DG15": return .DG15
75
+ case "DG16": return .DG16
76
+ case "SOD": return .SOD
77
+ default: return .Unknown
78
+ }
79
+ }
80
+
81
+ func getFileIDTag() -> [UInt8]? {
82
+ switch( self ) {
83
+ case .COM: return [0x01,0x1E]
84
+ case .DG1: return [0x01,0x01]
85
+ case .DG2: return [0x01,0x02]
86
+ case .DG3: return [0x01,0x03]
87
+ case .DG4: return [0x01,0x04]
88
+ case .DG5: return [0x01,0x05]
89
+ case .DG6: return [0x01,0x06]
90
+ case .DG7: return [0x01,0x07]
91
+ case .DG8: return [0x01,0x08]
92
+ case .DG9: return [0x01,0x09]
93
+ case .DG10: return [0x01,0x0A]
94
+ case .DG11: return [0x01,0x0B]
95
+ case .DG12: return [0x01,0x0C]
96
+ case .DG13: return [0x01,0x0D]
97
+ case .DG14: return [0x01,0x0E]
98
+ case .DG15: return [0x01,0x0F]
99
+ case .DG16: return [0x01,0x10]
100
+ case .SOD: return [0x01,0x1D]
101
+ case .Unknown: return nil
102
+ }
103
+ }
104
+ }
105
+
@@ -0,0 +1,16 @@
1
+ //
2
+ // NotImplementedDG.swift
3
+ //
4
+ // Created by Andy Qua on 01/02/2021.
5
+ //
6
+
7
+ import Foundation
8
+
9
+ @available(iOS 13, macOS 10.15, *)
10
+ public class NotImplementedDG: DataGroup {
11
+ override public var datagroupType: DataGroupId { .Unknown }
12
+
13
+ required init(_ data: [UInt8]) throws {
14
+ try super.init(data)
15
+ }
16
+ }
@@ -0,0 +1,415 @@
1
+ //
2
+ // PaceInfo.swift
3
+ // NFCPassportReader
4
+ //
5
+ // Created by Andy Qua on 03/03/2021.
6
+ //
7
+
8
+ import Foundation
9
+ import OSLog
10
+ import OpenSSL
11
+
12
+ public enum PACEMappingType {
13
+ case GM // Generic Mapping
14
+ case IM // Integrated Mapping
15
+ case CAM // Chip Authentication Mapping
16
+
17
+ func description () -> String {
18
+ switch self {
19
+ case .GM:
20
+ return "Generic Mapping"
21
+ case .IM:
22
+ return "Integrated Mapping"
23
+ case .CAM:
24
+ return "Chip Authentication Mapping"
25
+ }
26
+ }
27
+ }
28
+
29
+ @available(iOS 13, macOS 10.15, *)
30
+ public class PACEInfo : SecurityInfo {
31
+
32
+ // Standardized domain parameters. Based on Table 6.
33
+ public static let PARAM_ID_GFP_1024_160 = 0
34
+ public static let PARAM_ID_GFP_2048_224 = 1
35
+ public static let PARAM_ID_GFP_2048_256 = 2
36
+ public static let PARAM_ID_ECP_NIST_P192_R1 = 8
37
+ public static let PARAM_ID_ECP_BRAINPOOL_P192_R1 = 9
38
+ public static let PARAM_ID_ECP_NIST_P224_R1 = 10
39
+ public static let PARAM_ID_ECP_BRAINPOOL_P224_R1 = 11
40
+ public static let PARAM_ID_ECP_NIST_P256_R1 = 12
41
+ public static let PARAM_ID_ECP_BRAINPOOL_P256_R1 = 13
42
+ public static let PARAM_ID_ECP_BRAINPOOL_P320_R1 = 14
43
+ public static let PARAM_ID_ECP_NIST_P384_R1 = 15
44
+ public static let PARAM_ID_ECP_BRAINPOOL_P384_R1 = 16
45
+ public static let PARAM_ID_ECP_BRAINPOOL_P512_R1 = 17
46
+ public static let PARAM_ID_ECP_NIST_P521_R1 = 18
47
+
48
+ static let allowedIdentifiers = [
49
+ ID_PACE_DH_GM_3DES_CBC_CBC,
50
+ ID_PACE_DH_GM_AES_CBC_CMAC_128,
51
+ ID_PACE_DH_GM_AES_CBC_CMAC_192,
52
+ ID_PACE_DH_GM_AES_CBC_CMAC_256,
53
+ ID_PACE_DH_IM_3DES_CBC_CBC,
54
+ ID_PACE_DH_IM_AES_CBC_CMAC_128,
55
+ ID_PACE_DH_IM_AES_CBC_CMAC_192,
56
+ ID_PACE_DH_IM_AES_CBC_CMAC_256,
57
+ ID_PACE_ECDH_GM_3DES_CBC_CBC,
58
+ ID_PACE_ECDH_GM_AES_CBC_CMAC_128,
59
+ ID_PACE_ECDH_GM_AES_CBC_CMAC_192,
60
+ ID_PACE_ECDH_GM_AES_CBC_CMAC_256,
61
+ ID_PACE_ECDH_IM_3DES_CBC_CBC,
62
+ ID_PACE_ECDH_IM_AES_CBC_CMAC_128,
63
+ ID_PACE_ECDH_IM_AES_CBC_CMAC_192,
64
+ ID_PACE_ECDH_IM_AES_CBC_CMAC_256,
65
+ ID_PACE_ECDH_CAM_AES_CBC_CMAC_128,
66
+ ID_PACE_ECDH_CAM_AES_CBC_CMAC_192,
67
+ ID_PACE_ECDH_CAM_AES_CBC_CMAC_256]
68
+
69
+ var oid : String
70
+ var version : Int
71
+ var parameterId : Int?
72
+
73
+ static func checkRequiredIdentifier(_ oid : String) -> Bool {
74
+ return allowedIdentifiers.contains( oid )
75
+ }
76
+
77
+ init(oid: String, version: Int, parameterId: Int?) {
78
+ self.oid = oid
79
+ self.version = version
80
+ self.parameterId = parameterId
81
+ }
82
+
83
+ public override func getObjectIdentifier() -> String {
84
+ return oid
85
+ }
86
+
87
+ public override func getProtocolOIDString() -> String {
88
+ return PACEInfo.toProtocolOIDString(oid:oid)
89
+ }
90
+
91
+ public func getVersion() -> Int {
92
+ return version
93
+ }
94
+
95
+ public func getParameterId() -> Int? {
96
+ return parameterId
97
+ }
98
+
99
+ public func getParameterSpec() throws -> Int32 {
100
+ return try PACEInfo.getParameterSpec(stdDomainParam: self.parameterId ?? -1 )
101
+ }
102
+
103
+ public func getMappingType() throws -> PACEMappingType {
104
+ return try PACEInfo.toMappingType(oid: oid); // Either GM, CAM, or IM.
105
+ }
106
+
107
+ public func getKeyAgreementAlgorithm() throws -> String {
108
+ return try PACEInfo.toKeyAgreementAlgorithm(oid: oid); // Either DH or ECDH.
109
+ }
110
+
111
+ public func getCipherAlgorithm() throws -> String {
112
+ return try PACEInfo.toCipherAlgorithm(oid: oid); // Either DESede or AES.
113
+ }
114
+
115
+ public func getDigestAlgorithm() throws -> String {
116
+ return try PACEInfo.toDigestAlgorithm(oid: oid); // Either SHA-1 or SHA-256.
117
+ }
118
+
119
+ public func getKeyLength() throws -> Int {
120
+ return try PACEInfo.toKeyLength(oid: oid); // Of the enc cipher. Either 128, 192, or 256.
121
+ }
122
+
123
+ /// Caller is required to free the returned EVP_PKEY value
124
+ public func createMappingKey( ) throws -> OpaquePointer {
125
+ // This will get freed later
126
+ let mappingKey : OpaquePointer = EVP_PKEY_new()
127
+
128
+ switch try getKeyAgreementAlgorithm() {
129
+ case "DH":
130
+ Logger.pace.debug( "Generating DH mapping keys")
131
+ //The EVP_PKEY_CTX_set_dh_rfc5114() and EVP_PKEY_CTX_set_dhx_rfc5114() macros are synonymous. They set the DH parameters to the values defined in RFC5114. The rfc5114 parameter must be 1, 2 or 3 corresponding to RFC5114 sections 2.1, 2.2 and 2.3. or 0 to clear the stored value. This macro can be called during parameter generation. The ctx must have a key type of EVP_PKEY_DHX. The rfc5114 parameter and the nid parameter are mutually exclusive.
132
+ var dhKey : OpaquePointer? = nil
133
+ switch try getParameterSpec() {
134
+ case 0:
135
+ Logger.pace.debug( "Using DH_get_1024_160" )
136
+ dhKey = DH_get_1024_160()
137
+ case 1:
138
+ Logger.pace.debug( "Using DH_get_2048_224" )
139
+ dhKey = DH_get_2048_224()
140
+ case 2:
141
+ Logger.pace.debug( "Using DH_get_2048_256" )
142
+ dhKey = DH_get_2048_256()
143
+ default:
144
+ // Error
145
+ break
146
+ }
147
+ guard dhKey != nil else {
148
+ throw NFCPassportReaderError.InvalidDataPassed("Unable to create DH mapping key")
149
+ }
150
+ defer{ DH_free( dhKey ) }
151
+
152
+ DH_generate_key(dhKey)
153
+ EVP_PKEY_set1_DH(mappingKey, dhKey)
154
+
155
+ case "ECDH":
156
+ let parameterSpec = try getParameterSpec()
157
+ Logger.pace.debug( "Generating ECDH mapping keys from parameterSpec - \(parameterSpec)")
158
+ guard let ecKey = EC_KEY_new_by_curve_name(parameterSpec) else {
159
+ throw NFCPassportReaderError.InvalidDataPassed("Unable to create EC mapping key")
160
+ }
161
+ defer{ EC_KEY_free( ecKey ) }
162
+
163
+ EC_KEY_generate_key(ecKey)
164
+ EVP_PKEY_set1_EC_KEY(mappingKey, ecKey)
165
+ default:
166
+ throw NFCPassportReaderError.InvalidDataPassed("Unsupported agreement algorithm")
167
+ }
168
+
169
+ return mappingKey
170
+ }
171
+
172
+ public static func getParameterSpec(stdDomainParam : Int) throws -> Int32 {
173
+ switch (stdDomainParam) {
174
+ case PARAM_ID_GFP_1024_160:
175
+ return 0 // "rfc5114_1024_160";
176
+ case PARAM_ID_GFP_2048_224:
177
+ return 1 // "rfc5114_2048_224";
178
+ case PARAM_ID_GFP_2048_256:
179
+ return 2 // "rfc5114_2048_256";
180
+ case PARAM_ID_ECP_NIST_P192_R1:
181
+ return NID_X9_62_prime192v1 // "secp192r1";
182
+ case PARAM_ID_ECP_NIST_P224_R1:
183
+ return NID_secp224r1 // "secp224r1";
184
+ case PARAM_ID_ECP_NIST_P256_R1:
185
+ return NID_X9_62_prime256v1 //"secp256r1";
186
+ case PARAM_ID_ECP_NIST_P384_R1:
187
+ return NID_secp384r1 // "secp384r1";
188
+ case PARAM_ID_ECP_BRAINPOOL_P192_R1:
189
+ return NID_brainpoolP192r1 //"brainpoolp192r1";
190
+ case PARAM_ID_ECP_BRAINPOOL_P224_R1:
191
+ return NID_brainpoolP224r1 // "brainpoolp224r1";
192
+ case PARAM_ID_ECP_BRAINPOOL_P256_R1:
193
+ return NID_brainpoolP256r1 // "brainpoolp256r1";
194
+ case PARAM_ID_ECP_BRAINPOOL_P320_R1:
195
+ return NID_brainpoolP320r1 //"brainpoolp320r1";
196
+ case PARAM_ID_ECP_BRAINPOOL_P384_R1:
197
+ return NID_brainpoolP384r1 //"brainpoolp384r1";
198
+ case PARAM_ID_ECP_BRAINPOOL_P512_R1:
199
+ return NID_brainpoolP512r1 //"";
200
+ case PARAM_ID_ECP_NIST_P521_R1:
201
+ return NID_secp521r1 //"secp224r1";
202
+ default:
203
+ throw NFCPassportReaderError.InvalidDataPassed( "Unable to lookup p arameterSpec - invalid oid" )
204
+ }
205
+ }
206
+
207
+ public static func toMappingType( oid : String ) throws -> PACEMappingType {
208
+ if ID_PACE_DH_GM_3DES_CBC_CBC == oid
209
+ || ID_PACE_DH_GM_AES_CBC_CMAC_128 == oid
210
+ || ID_PACE_DH_GM_AES_CBC_CMAC_192 == oid
211
+ || ID_PACE_DH_GM_AES_CBC_CMAC_256 == oid
212
+ || ID_PACE_ECDH_GM_3DES_CBC_CBC == oid
213
+ || ID_PACE_ECDH_GM_AES_CBC_CMAC_128 == oid
214
+ || ID_PACE_ECDH_GM_AES_CBC_CMAC_192 == oid
215
+ || ID_PACE_ECDH_GM_AES_CBC_CMAC_256 == oid {
216
+ return PACEMappingType.GM
217
+ } else if ID_PACE_DH_IM_3DES_CBC_CBC == oid
218
+ || ID_PACE_DH_IM_AES_CBC_CMAC_128 == oid
219
+ || ID_PACE_DH_IM_AES_CBC_CMAC_192 == oid
220
+ || ID_PACE_DH_IM_AES_CBC_CMAC_256 == oid
221
+ || ID_PACE_ECDH_IM_3DES_CBC_CBC == oid
222
+ || ID_PACE_ECDH_IM_AES_CBC_CMAC_128 == oid
223
+ || ID_PACE_ECDH_IM_AES_CBC_CMAC_192 == oid
224
+ || ID_PACE_ECDH_IM_AES_CBC_CMAC_256 == oid {
225
+ return PACEMappingType.IM
226
+ } else if ID_PACE_ECDH_CAM_AES_CBC_CMAC_128 == oid
227
+ || ID_PACE_ECDH_CAM_AES_CBC_CMAC_192 == oid
228
+ || ID_PACE_ECDH_CAM_AES_CBC_CMAC_256 == oid {
229
+ return PACEMappingType.CAM
230
+ }
231
+
232
+ throw NFCPassportReaderError.InvalidDataPassed( "Unable to lookup mapping type - invalid oid" )
233
+ }
234
+
235
+
236
+ /// Returns the key agreement algorithm - DH or ECDH for the given Chip Authentication oid
237
+ /// - Parameter oid: the object identifier
238
+ /// - Returns: key agreement algorithm
239
+ /// - Throws: InvalidDataPassed error if invalid oid specified
240
+ public static func toKeyAgreementAlgorithm( oid : String ) throws -> String {
241
+ if ID_PACE_DH_GM_3DES_CBC_CBC == oid
242
+ || ID_PACE_DH_GM_AES_CBC_CMAC_128 == oid
243
+ || ID_PACE_DH_GM_AES_CBC_CMAC_192 == oid
244
+ || ID_PACE_DH_GM_AES_CBC_CMAC_256 == oid
245
+ || ID_PACE_DH_IM_3DES_CBC_CBC == oid
246
+ || ID_PACE_DH_IM_AES_CBC_CMAC_128 == oid
247
+ || ID_PACE_DH_IM_AES_CBC_CMAC_192 == oid
248
+ || ID_PACE_DH_IM_AES_CBC_CMAC_256 == oid {
249
+ return "DH"
250
+ } else if ID_PACE_ECDH_GM_3DES_CBC_CBC == oid
251
+ || ID_PACE_ECDH_GM_AES_CBC_CMAC_128 == oid
252
+ || ID_PACE_ECDH_GM_AES_CBC_CMAC_192 == oid
253
+ || ID_PACE_ECDH_GM_AES_CBC_CMAC_256 == oid
254
+ || ID_PACE_ECDH_IM_3DES_CBC_CBC == oid
255
+ || ID_PACE_ECDH_IM_AES_CBC_CMAC_128 == oid
256
+ || ID_PACE_ECDH_IM_AES_CBC_CMAC_192 == oid
257
+ || ID_PACE_ECDH_IM_AES_CBC_CMAC_256 == oid
258
+ || ID_PACE_ECDH_CAM_AES_CBC_CMAC_128 == oid
259
+ || ID_PACE_ECDH_CAM_AES_CBC_CMAC_192 == oid
260
+ || ID_PACE_ECDH_CAM_AES_CBC_CMAC_256 == oid {
261
+ return "ECDH"
262
+ }
263
+ throw NFCPassportReaderError.InvalidDataPassed( "Unable to lookup key agreement algorithm - invalid oid" )
264
+ }
265
+
266
+ /// Returns the cipher algorithm - DESede or AES for the given Chip Authentication oid
267
+ /// - Parameter oid: the object identifier
268
+ /// - Returns: the cipher algorithm type
269
+ /// - Throws: InvalidDataPassed error if invalid oid specified
270
+ public static func toCipherAlgorithm( oid : String ) throws -> String {
271
+ if ID_PACE_DH_GM_3DES_CBC_CBC == oid
272
+ || ID_PACE_DH_IM_3DES_CBC_CBC == oid
273
+ || ID_PACE_ECDH_GM_3DES_CBC_CBC == oid
274
+ || ID_PACE_ECDH_IM_3DES_CBC_CBC == oid {
275
+ return "DESede"
276
+ } else if ID_PACE_DH_GM_AES_CBC_CMAC_128 == oid
277
+ || ID_PACE_DH_GM_AES_CBC_CMAC_192 == oid
278
+ || ID_PACE_DH_GM_AES_CBC_CMAC_256 == oid
279
+ || ID_PACE_DH_IM_AES_CBC_CMAC_128 == oid
280
+ || ID_PACE_DH_IM_AES_CBC_CMAC_192 == oid
281
+ || ID_PACE_DH_IM_AES_CBC_CMAC_256 == oid
282
+ || ID_PACE_ECDH_GM_AES_CBC_CMAC_128 == oid
283
+ || ID_PACE_ECDH_GM_AES_CBC_CMAC_192 == oid
284
+ || ID_PACE_ECDH_GM_AES_CBC_CMAC_256 == oid
285
+ || ID_PACE_ECDH_IM_AES_CBC_CMAC_128 == oid
286
+ || ID_PACE_ECDH_IM_AES_CBC_CMAC_192 == oid
287
+ || ID_PACE_ECDH_IM_AES_CBC_CMAC_256 == oid
288
+ || ID_PACE_ECDH_CAM_AES_CBC_CMAC_128 == oid
289
+ || ID_PACE_ECDH_CAM_AES_CBC_CMAC_192 == oid
290
+ || ID_PACE_ECDH_CAM_AES_CBC_CMAC_256 == oid {
291
+ return "AES"
292
+ }
293
+ throw NFCPassportReaderError.InvalidDataPassed( "Unable to lookup cipher algorithm - invalid oid" )
294
+ }
295
+
296
+ public static func toDigestAlgorithm( oid : String ) throws -> String {
297
+ if ID_PACE_DH_GM_3DES_CBC_CBC == oid
298
+ || ID_PACE_DH_IM_3DES_CBC_CBC == oid
299
+ || ID_PACE_ECDH_GM_3DES_CBC_CBC == oid
300
+ || ID_PACE_ECDH_IM_3DES_CBC_CBC == oid
301
+ || ID_PACE_DH_GM_AES_CBC_CMAC_128 == oid
302
+ || ID_PACE_DH_IM_AES_CBC_CMAC_128 == oid
303
+ || ID_PACE_ECDH_GM_AES_CBC_CMAC_128 == oid
304
+ || ID_PACE_ECDH_IM_AES_CBC_CMAC_128 == oid
305
+ || ID_PACE_ECDH_CAM_AES_CBC_CMAC_128 == oid {
306
+ return "SHA-1"
307
+ } else if ID_PACE_DH_GM_AES_CBC_CMAC_192 == oid
308
+ || ID_PACE_DH_IM_AES_CBC_CMAC_192 == oid
309
+ || ID_PACE_ECDH_GM_AES_CBC_CMAC_192 == oid
310
+ || ID_PACE_ECDH_IM_AES_CBC_CMAC_192 == oid
311
+ || ID_PACE_ECDH_CAM_AES_CBC_CMAC_192 == oid
312
+ || ID_PACE_DH_GM_AES_CBC_CMAC_256 == oid
313
+ || ID_PACE_DH_IM_AES_CBC_CMAC_256 == oid
314
+ || ID_PACE_ECDH_GM_AES_CBC_CMAC_256 == oid
315
+ || ID_PACE_ECDH_IM_AES_CBC_CMAC_256 == oid
316
+ || ID_PACE_ECDH_CAM_AES_CBC_CMAC_256 == oid {
317
+ return "SHA-256"
318
+ }
319
+
320
+ throw NFCPassportReaderError.InvalidDataPassed( "Unable to lookup digest algorithm - invalid oid" )
321
+
322
+ }
323
+ /// Returns the key length in bits (128, 192, or 256) for the given Chip Authentication oid
324
+ /// - Parameter oid: the object identifier
325
+ /// - Returns: the key length in bits
326
+ /// - Throws: InvalidDataPassed error if invalid oid specified
327
+ public static func toKeyLength( oid : String ) throws -> Int {
328
+ if ID_PACE_DH_GM_3DES_CBC_CBC == oid
329
+ || ID_PACE_DH_IM_3DES_CBC_CBC == oid
330
+ || ID_PACE_ECDH_GM_3DES_CBC_CBC == oid
331
+ || ID_PACE_ECDH_IM_3DES_CBC_CBC == oid
332
+ || ID_PACE_DH_GM_AES_CBC_CMAC_128 == oid
333
+ || ID_PACE_DH_IM_AES_CBC_CMAC_128 == oid
334
+ || ID_PACE_ECDH_GM_AES_CBC_CMAC_128 == oid
335
+ || ID_PACE_ECDH_IM_AES_CBC_CMAC_128 == oid
336
+ || ID_PACE_ECDH_CAM_AES_CBC_CMAC_128 == oid {
337
+ return 128
338
+ } else if ID_PACE_DH_GM_AES_CBC_CMAC_192 == oid
339
+ || ID_PACE_ECDH_GM_AES_CBC_CMAC_192 == oid
340
+ || ID_PACE_DH_IM_AES_CBC_CMAC_192 == oid
341
+ || ID_PACE_ECDH_IM_AES_CBC_CMAC_192 == oid
342
+ || ID_PACE_ECDH_CAM_AES_CBC_CMAC_192 == oid {
343
+ return 192
344
+ } else if ID_PACE_DH_GM_AES_CBC_CMAC_256 == oid
345
+ || ID_PACE_DH_IM_AES_CBC_CMAC_256 == oid
346
+ || ID_PACE_ECDH_GM_AES_CBC_CMAC_256 == oid
347
+ || ID_PACE_ECDH_IM_AES_CBC_CMAC_256 == oid
348
+ || ID_PACE_ECDH_CAM_AES_CBC_CMAC_256 == oid {
349
+ return 256
350
+ }
351
+ throw NFCPassportReaderError.InvalidDataPassed( "Unable to get key length - invalid oid" )
352
+ }
353
+
354
+ private static func toProtocolOIDString(oid : String) -> String {
355
+ if ID_PACE_DH_GM_3DES_CBC_CBC == oid {
356
+ return "id-PACE-DH-GM-3DES-CBC-CBC"
357
+ }
358
+ if ID_PACE_DH_GM_AES_CBC_CMAC_128 == oid {
359
+ return "id-PACE-DH-GM-AES-CBC-CMAC-128"
360
+ }
361
+ if ID_PACE_DH_GM_AES_CBC_CMAC_192 == oid {
362
+ return "id-PACE-DH-GM-AES-CBC-CMAC-192"
363
+ }
364
+ if ID_PACE_DH_GM_AES_CBC_CMAC_256 == oid {
365
+ return "id-PACE-DH-GM-AES-CBC-CMAC-256"
366
+ }
367
+ if ID_PACE_DH_IM_3DES_CBC_CBC == oid {
368
+ return "id-PACE-DH-IM-3DES-CBC-CBC"
369
+ }
370
+ if ID_PACE_DH_IM_AES_CBC_CMAC_128 == oid {
371
+ return "id-PACE-DH-IM-AES-CBC-CMAC-128"
372
+ }
373
+ if ID_PACE_DH_IM_AES_CBC_CMAC_192 == oid {
374
+ return "id-PACE-DH-IM-AES-CBC-CMAC-192"
375
+ }
376
+ if ID_PACE_DH_IM_AES_CBC_CMAC_256 == oid {
377
+ return "id-PACE_DH-IM-AES-CBC-CMAC-256"
378
+ }
379
+ if ID_PACE_ECDH_GM_3DES_CBC_CBC == oid {
380
+ return "id-PACE-ECDH-GM-3DES-CBC-CBC"
381
+ }
382
+ if ID_PACE_ECDH_GM_AES_CBC_CMAC_128 == oid {
383
+ return "id-PACE-ECDH-GM-AES-CBC-CMAC-128"
384
+ }
385
+ if ID_PACE_ECDH_GM_AES_CBC_CMAC_192 == oid {
386
+ return "id-PACE-ECDH-GM-AES-CBC-CMAC-192"
387
+ }
388
+ if ID_PACE_ECDH_GM_AES_CBC_CMAC_256 == oid {
389
+ return "id-PACE-ECDH-GM-AES-CBC-CMAC-256"
390
+ }
391
+ if ID_PACE_ECDH_IM_3DES_CBC_CBC == oid {
392
+ return "id-PACE-ECDH-IM_3DES-CBC-CBC"
393
+ }
394
+ if ID_PACE_ECDH_IM_AES_CBC_CMAC_128 == oid {
395
+ return "id-PACE-ECDH-IM-AES-CBC-CMAC-128"
396
+ }
397
+ if ID_PACE_ECDH_IM_AES_CBC_CMAC_192 == oid {
398
+ return "id-PACE-ECDH-IM-AES-CBC-CMAC-192"
399
+ }
400
+ if ID_PACE_ECDH_IM_AES_CBC_CMAC_256 == oid {
401
+ return "id-PACE-ECDH-IM-AES-CBC-CMAC-256"
402
+ }
403
+ if ID_PACE_ECDH_CAM_AES_CBC_CMAC_128 == oid {
404
+ return "id-PACE-ECDH-CAM-AES-CBC-CMAC-128"
405
+ }
406
+ if ID_PACE_ECDH_CAM_AES_CBC_CMAC_192 == oid {
407
+ return "id-PACE-ECDH-CAM-AES-CBC-CMAC-192"
408
+ }
409
+ if ID_PACE_ECDH_CAM_AES_CBC_CMAC_256 == oid {
410
+ return "id-PACE-ECDH-CAM-AES-CBC-CMAC-256"
411
+ }
412
+
413
+ return oid
414
+ }
415
+ }