@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.
- package/LICENSE +20 -0
- package/NFCSDK.podspec +40 -0
- package/android/build.gradle +85 -0
- package/android/gradle.properties +5 -0
- package/android/src/main/AndroidManifest.xml +31 -0
- package/android/src/main/AndroidManifestNew.xml +30 -0
- package/android/src/main/java/com/nfcsdk/ChipReader.kt +237 -0
- package/android/src/main/java/com/nfcsdk/NFCSDKModule.kt +78 -0
- package/android/src/main/java/com/nfcsdk/NFCSDKPackage.kt +17 -0
- package/android/src/main/java/com/nfcsdk/NFCScanActivity.kt +299 -0
- package/android/src/main/java/com/nfcsdk/utils/Dg13Parser.kt +278 -0
- package/android/src/main/java/com/nfcsdk/utils/FaceExtractor.kt +40 -0
- package/android/src/main/java/com/nfcsdk/utils/MrzUtils.kt +75 -0
- package/android/src/main/res/drawable/bg_nfc_bottom_sheet.xml +13 -0
- package/android/src/main/res/drawable/bg_nfc_sheet_handle.xml +9 -0
- package/android/src/main/res/layout/activity_nfc.xml +110 -0
- package/android/src/main/res/values/styles.xml +10 -0
- package/android/src/main/res/xml/nfc_tech_filter.xml +8 -0
- package/ios/ChipReader.swift +258 -0
- package/ios/NFCSDK-Bridging-Header.h +2 -0
- package/ios/NFCSDK.mm +9 -0
- package/ios/NFCSDK.swift +112 -0
- package/ios/NFCSDKSession.swift +5 -0
- package/ios/utils/DG13Parser.swift +302 -0
- package/ios/utils/MrzUtils.swift +49 -0
- package/lib/module/errors.js +9 -0
- package/lib/module/errors.js.map +1 -0
- package/lib/module/index.js +118 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/package.json +1 -0
- package/lib/module/types.js +2 -0
- package/lib/module/types.js.map +1 -0
- package/lib/typescript/package.json +1 -0
- package/lib/typescript/src/errors.d.ts +4 -0
- package/lib/typescript/src/errors.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +80 -0
- package/lib/typescript/src/index.d.ts.map +1 -0
- package/lib/typescript/src/types.d.ts +45 -0
- package/lib/typescript/src/types.d.ts.map +1 -0
- package/package.json +155 -0
- package/src/errors.ts +6 -0
- package/src/index.tsx +141 -0
- package/src/types.ts +45 -0
- package/vendor/ios-passport-reader/CHANGELOG +362 -0
- package/vendor/ios-passport-reader/CODE_OF_CONDUCT.md +77 -0
- package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp/AppDelegate.swift +39 -0
- package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp/Assets.xcassets/AppIcon.appiconset/Contents.json +158 -0
- package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp/Assets.xcassets/AppIcon.appiconset/icon-40.png +0 -0
- package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp/Assets.xcassets/AppIcon.appiconset/icon-40@2x.png +0 -0
- package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp/Assets.xcassets/AppIcon.appiconset/icon-40@3x.png +0 -0
- package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp/Assets.xcassets/AppIcon.appiconset/icon-60@2x.png +0 -0
- package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp/Assets.xcassets/AppIcon.appiconset/icon-60@3x.png +0 -0
- package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp/Assets.xcassets/AppIcon.appiconset/icon-72.png +0 -0
- package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp/Assets.xcassets/AppIcon.appiconset/icon-72@2x.png +0 -0
- package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp/Assets.xcassets/AppIcon.appiconset/icon-76.png +0 -0
- package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp/Assets.xcassets/AppIcon.appiconset/icon-76@2x.png +0 -0
- package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp/Assets.xcassets/AppIcon.appiconset/icon-83.5@2x.png +0 -0
- package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp/Assets.xcassets/AppIcon.appiconset/icon-small-50.png +0 -0
- package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp/Assets.xcassets/AppIcon.appiconset/icon-small-50@2x.png +0 -0
- package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp/Assets.xcassets/AppIcon.appiconset/icon-small.png +0 -0
- package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp/Assets.xcassets/AppIcon.appiconset/icon-small@2x.png +0 -0
- package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp/Assets.xcassets/AppIcon.appiconset/icon-small@3x.png +0 -0
- package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp/Assets.xcassets/AppIcon.appiconset/icon.png +0 -0
- package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp/Assets.xcassets/AppIcon.appiconset/icon@2x.png +0 -0
- package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp/Assets.xcassets/AppIcon.appiconset/ios-marketing.png +0 -0
- package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp/Assets.xcassets/AppIcon.appiconset/notification-icon@2x.png +0 -0
- package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp/Assets.xcassets/AppIcon.appiconset/notification-icon@3x.png +0 -0
- package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp/Assets.xcassets/AppIcon.appiconset/notification-icon~ipad.png +0 -0
- package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp/Assets.xcassets/AppIcon.appiconset/notification-icon~ipad@2x.png +0 -0
- package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp/Assets.xcassets/Contents.json +6 -0
- package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp/Assets.xcassets/background.imageset/Contents.json +21 -0
- package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp/Assets.xcassets/background.imageset/background.png +0 -0
- package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp/Assets.xcassets/head.imageset/Contents.json +21 -0
- package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp/Assets.xcassets/head.imageset/head.png +0 -0
- package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp/Base.lproj/LaunchScreen.storyboard +25 -0
- package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp/Extensions/FileManagerExt.swift +16 -0
- package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp/Extensions/StringExt.swift +40 -0
- package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp/Extensions/UIApplicationExt.swift +21 -0
- package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp/Info.plist +77 -0
- package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp/Model/PassportUtils.swift +76 -0
- package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp/Model/SettingsStore.swift +107 -0
- package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp/NFCPassportReader.entitlements +10 -0
- package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp/SceneDelegate.swift +57 -0
- package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp/Views/DetailsView.swift +197 -0
- package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp/Views/ExportPassportView.swift +164 -0
- package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp/Views/HelperViews/CheckBoxView.swift +48 -0
- package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp/Views/HelperViews/ViewExt.swift +20 -0
- package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp/Views/HelperViews/ViewModifiers.swift +41 -0
- package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp/Views/MRZEntryView.swift +125 -0
- package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp/Views/MRZScannerViewController.swift +90 -0
- package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp/Views/MainView.swift +214 -0
- package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp/Views/PassportSummaryView.swift +111 -0
- package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp/Views/PassportView.swift +73 -0
- package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp/Views/SettingsView.swift +63 -0
- package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp/Views/StoredPassportView.swift +152 -0
- package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp/masterList.pem +32 -0
- package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp/readme.md +10 -0
- package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp.xcodeproj/project.pbxproj +695 -0
- package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp.xcodeproj/xcshareddata/xcschemes/NFCPassportReader.xcscheme +106 -0
- package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp.xcworkspace/contents.xcworkspacedata +10 -0
- package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
- package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderApp.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings +8 -0
- package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderAppTests/DataGroupParsingTests.swift +189 -0
- package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderAppTests/Info.plist +22 -0
- package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderAppTests/NFCPassportReaderTests.swift +260 -0
- package/vendor/ios-passport-reader/Examples/Example_CocoaPods/NFCPassportReaderAppTests/PACETests.swift +112 -0
- package/vendor/ios-passport-reader/Examples/Example_CocoaPods/Podfile +22 -0
- package/vendor/ios-passport-reader/Examples/Example_CocoaPods/Podfile.lock +35 -0
- package/vendor/ios-passport-reader/Examples/Example_CocoaPods/README.md +2 -0
- package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/AppDelegate.swift +39 -0
- package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/Assets.xcassets/AppIcon.appiconset/Contents.json +158 -0
- package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/Assets.xcassets/AppIcon.appiconset/icon-40.png +0 -0
- package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/Assets.xcassets/AppIcon.appiconset/icon-40@2x.png +0 -0
- package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/Assets.xcassets/AppIcon.appiconset/icon-40@3x.png +0 -0
- package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/Assets.xcassets/AppIcon.appiconset/icon-60@2x.png +0 -0
- package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/Assets.xcassets/AppIcon.appiconset/icon-60@3x.png +0 -0
- package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/Assets.xcassets/AppIcon.appiconset/icon-72.png +0 -0
- package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/Assets.xcassets/AppIcon.appiconset/icon-72@2x.png +0 -0
- package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/Assets.xcassets/AppIcon.appiconset/icon-76.png +0 -0
- package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/Assets.xcassets/AppIcon.appiconset/icon-76@2x.png +0 -0
- package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/Assets.xcassets/AppIcon.appiconset/icon-83.5@2x.png +0 -0
- package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/Assets.xcassets/AppIcon.appiconset/icon-small-50.png +0 -0
- package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/Assets.xcassets/AppIcon.appiconset/icon-small-50@2x.png +0 -0
- package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/Assets.xcassets/AppIcon.appiconset/icon-small.png +0 -0
- package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/Assets.xcassets/AppIcon.appiconset/icon-small@2x.png +0 -0
- package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/Assets.xcassets/AppIcon.appiconset/icon-small@3x.png +0 -0
- package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/Assets.xcassets/AppIcon.appiconset/icon.png +0 -0
- package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/Assets.xcassets/AppIcon.appiconset/icon@2x.png +0 -0
- package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/Assets.xcassets/AppIcon.appiconset/ios-marketing.png +0 -0
- package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/Assets.xcassets/AppIcon.appiconset/notification-icon@2x.png +0 -0
- package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/Assets.xcassets/AppIcon.appiconset/notification-icon@3x.png +0 -0
- package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/Assets.xcassets/AppIcon.appiconset/notification-icon~ipad.png +0 -0
- package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/Assets.xcassets/AppIcon.appiconset/notification-icon~ipad@2x.png +0 -0
- package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/Assets.xcassets/Contents.json +6 -0
- package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/Assets.xcassets/background.imageset/Contents.json +21 -0
- package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/Assets.xcassets/background.imageset/background.png +0 -0
- package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/Assets.xcassets/head.imageset/Contents.json +21 -0
- package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/Assets.xcassets/head.imageset/head.png +0 -0
- package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/Base.lproj/LaunchScreen.storyboard +25 -0
- package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/Extensions/FileManagerExt.swift +16 -0
- package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/Extensions/StringExt.swift +40 -0
- package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/Extensions/UIApplicationExt.swift +21 -0
- package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/Info.plist +79 -0
- package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/Model/PassportUtils.swift +99 -0
- package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/Model/SettingsStore.swift +98 -0
- package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/Model/SettingsStoreCAN.swift +75 -0
- package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/MrzScanner/LICENSE +21 -0
- package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/MrzScanner/PreviewView.swift +34 -0
- package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/MrzScanner/StringUtils.swift +160 -0
- package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/MrzScanner/ViewController.swift +320 -0
- package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/MrzScanner/VisionViewController.swift +163 -0
- package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/NFCPassportReader.entitlements +10 -0
- package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/SceneDelegate.swift +58 -0
- package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/Views/CANViews/CanKeyView.swift +251 -0
- package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/Views/CANViews/MRZEntryViewCanKey.swift +65 -0
- package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/Views/CANViews/PassportViewCAN.swift +73 -0
- package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/Views/DetailsView.swift +193 -0
- package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/Views/ExportPassportView.swift +164 -0
- package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/Views/HelperViews/CheckBoxView.swift +48 -0
- package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/Views/HelperViews/ViewExt.swift +20 -0
- package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/Views/HelperViews/ViewModifiers.swift +41 -0
- package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/Views/MRZEntryView.swift +125 -0
- package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/Views/MRZScannerViewController.swift +90 -0
- package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/Views/MainView.swift +264 -0
- package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/Views/PassportSummaryView.swift +111 -0
- package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/Views/PassportView.swift +73 -0
- package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/Views/SettingsView.swift +47 -0
- package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/Views/StoredPassportView.swift +149 -0
- package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/masterList.pem +32 -0
- package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp/readme.md +10 -0
- package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp.xcodeproj/project.pbxproj +683 -0
- package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
- package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +25 -0
- package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderApp.xcodeproj/xcshareddata/xcschemes/NFCPassportReader.xcscheme +106 -0
- package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderAppTests/DataGroupParsingTests.swift +190 -0
- package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderAppTests/Info.plist +22 -0
- package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderAppTests/NFCPassportReaderTests.swift +260 -0
- package/vendor/ios-passport-reader/Examples/Example_SPM/NFCPassportReaderAppTests/PACETests.swift +112 -0
- package/vendor/ios-passport-reader/LICENSE +21 -0
- package/vendor/ios-passport-reader/NFCPassportReader.podspec +27 -0
- package/vendor/ios-passport-reader/Package.swift +29 -0
- package/vendor/ios-passport-reader/README.md +141 -0
- package/vendor/ios-passport-reader/Sources/NFCPassportReader/AES_3DES_DESEncryption.swift +377 -0
- package/vendor/ios-passport-reader/Sources/NFCPassportReader/BACHandler.swift +194 -0
- package/vendor/ios-passport-reader/Sources/NFCPassportReader/ChipAuthenticationHandler.swift +224 -0
- package/vendor/ios-passport-reader/Sources/NFCPassportReader/DataGroupHash.swift +16 -0
- package/vendor/ios-passport-reader/Sources/NFCPassportReader/DataGroupParser.swift +36 -0
- package/vendor/ios-passport-reader/Sources/NFCPassportReader/DataGroups/ActiveAuthenticationInfo.swift +69 -0
- package/vendor/ios-passport-reader/Sources/NFCPassportReader/DataGroups/COM.swift +61 -0
- package/vendor/ios-passport-reader/Sources/NFCPassportReader/DataGroups/CardAccess.swift +38 -0
- package/vendor/ios-passport-reader/Sources/NFCPassportReader/DataGroups/ChipAuthenticationInfo.swift +135 -0
- package/vendor/ios-passport-reader/Sources/NFCPassportReader/DataGroups/ChipAuthenticationPublicKeyInfo.swift +53 -0
- package/vendor/ios-passport-reader/Sources/NFCPassportReader/DataGroups/DataGroup.swift +103 -0
- package/vendor/ios-passport-reader/Sources/NFCPassportReader/DataGroups/DataGroup1.swift +111 -0
- package/vendor/ios-passport-reader/Sources/NFCPassportReader/DataGroups/DataGroup11.swift +66 -0
- package/vendor/ios-passport-reader/Sources/NFCPassportReader/DataGroups/DataGroup12.swift +75 -0
- package/vendor/ios-passport-reader/Sources/NFCPassportReader/DataGroups/DataGroup14.swift +37 -0
- package/vendor/ios-passport-reader/Sources/NFCPassportReader/DataGroups/DataGroup15.swift +46 -0
- package/vendor/ios-passport-reader/Sources/NFCPassportReader/DataGroups/DataGroup2.swift +163 -0
- package/vendor/ios-passport-reader/Sources/NFCPassportReader/DataGroups/DataGroup7.swift +46 -0
- package/vendor/ios-passport-reader/Sources/NFCPassportReader/DataGroups/DataGroupId.swift +105 -0
- package/vendor/ios-passport-reader/Sources/NFCPassportReader/DataGroups/NotImplementedDG.swift +16 -0
- package/vendor/ios-passport-reader/Sources/NFCPassportReader/DataGroups/PACEInfo.swift +415 -0
- package/vendor/ios-passport-reader/Sources/NFCPassportReader/DataGroups/SOD.swift +240 -0
- package/vendor/ios-passport-reader/Sources/NFCPassportReader/DataGroups/SecurityInfo.swift +136 -0
- package/vendor/ios-passport-reader/Sources/NFCPassportReader/Errors.swift +148 -0
- package/vendor/ios-passport-reader/Sources/NFCPassportReader/Logging.swift +32 -0
- package/vendor/ios-passport-reader/Sources/NFCPassportReader/Models/FaceImageInfo.swift +161 -0
- package/vendor/ios-passport-reader/Sources/NFCPassportReader/NFCPassportModel.swift +540 -0
- package/vendor/ios-passport-reader/Sources/NFCPassportReader/NFCViewDisplayMessage.swift +60 -0
- package/vendor/ios-passport-reader/Sources/NFCPassportReader/OpenSSLUtils.swift +705 -0
- package/vendor/ios-passport-reader/Sources/NFCPassportReader/PACEHandler.swift +627 -0
- package/vendor/ios-passport-reader/Sources/NFCPassportReader/PassportReader.swift +387 -0
- package/vendor/ios-passport-reader/Sources/NFCPassportReader/Resources/PrivacyInfo.xcprivacy +14 -0
- package/vendor/ios-passport-reader/Sources/NFCPassportReader/ResponseAPDU.swift +25 -0
- package/vendor/ios-passport-reader/Sources/NFCPassportReader/SecureMessaging.swift +301 -0
- package/vendor/ios-passport-reader/Sources/NFCPassportReader/SecureMessagingSessionKeyGenerator.swift +156 -0
- package/vendor/ios-passport-reader/Sources/NFCPassportReader/SimpleASN1DumpParser.swift +173 -0
- package/vendor/ios-passport-reader/Sources/NFCPassportReader/TagReader.swift +374 -0
- package/vendor/ios-passport-reader/Sources/NFCPassportReader/Utils.swift +430 -0
- package/vendor/ios-passport-reader/Sources/NFCPassportReader/X509Wrapper.swift +168 -0
- package/vendor/ios-passport-reader/scripts/README.md +45 -0
- 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
|
+
|
package/vendor/ios-passport-reader/Sources/NFCPassportReader/DataGroups/NotImplementedDG.swift
ADDED
|
@@ -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
|
+
}
|