@animo-id/expo-mdoc-data-transfer 0.2.0-alpha.2 → 0.2.0-alpha.4
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/build/MdocDataTransfer.js +1 -1
- package/build/MdocDataTransfer.js.map +1 -1
- package/build/NativeMdocDataTransfer.d.ts +1 -1
- package/build/NativeMdocDataTransfer.d.ts.map +1 -1
- package/build/NativeMdocDataTransfer.js.map +1 -1
- package/expo-module.config.json +1 -1
- package/{MdocDataTransfer.podspec → ios/MdocDataTransfer.podspec} +2 -3
- package/ios/MdocDataTransferModule.swift +29 -10
- package/ios/eudi/BLETransfer/MdocGATTServer.swift +36 -22
- package/ios/eudi/BLETransfer/MdocOfflineDelegate.swift +1 -4
- package/ios/eudi/MdocHelpers.swift +18 -0
- package/package.json +1 -1
- package/src/MdocDataTransfer.ts +3 -3
- package/src/NativeMdocDataTransfer.ts +1 -1
- package/android/build/.transforms/1b8378295914042bd56f454fccadf450/results.bin +0 -1
- package/android/build/.transforms/1b8378295914042bd56f454fccadf450/transformed/classes/classes_dex/classes.dex +0 -0
- package/android/build/.transforms/b1c7825c26ef74820bf1a2f9b0863b9c/results.bin +0 -1
- package/android/build/.transforms/b1c7825c26ef74820bf1a2f9b0863b9c/transformed/classes/classes_dex/classes.dex +0 -0
- package/android/build/.transforms/bd47d41628a1234539d52fed18dc00d8/results.bin +0 -1
- package/android/build/.transforms/bd47d41628a1234539d52fed18dc00d8/transformed/classes/classes_dex/classes.dex +0 -0
- package/android/build/.transforms/ca70f32e4c31dcc1e27ce5e573009a23/results.bin +0 -1
- package/android/build/.transforms/ca70f32e4c31dcc1e27ce5e573009a23/transformed/classes/classes_dex/classes.dex +0 -0
- package/android/build/generated/source/buildConfig/debug/id/animo/mdoc/datatransfer/BuildConfig.java +0 -10
- package/android/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/AndroidManifest.xml +0 -7
- package/android/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/output-metadata.json +0 -18
- package/android/build/intermediates/aar_metadata/debug/writeDebugAarMetadata/aar-metadata.properties +0 -6
- package/android/build/intermediates/annotation_processor_list/debug/javaPreCompileDebug/annotationProcessors.json +0 -1
- package/android/build/intermediates/compile_library_classes_jar/debug/bundleLibCompileToJarDebug/classes.jar +0 -0
- package/android/build/intermediates/compile_r_class_jar/debug/generateDebugRFile/R.jar +0 -0
- package/android/build/intermediates/compile_symbol_list/debug/generateDebugRFile/R.txt +0 -3
- package/android/build/intermediates/compiled_local_resources/debug/compileDebugLibraryResources/out/xml_nfc_engagement_apdu_service.xml.flat +0 -0
- package/android/build/intermediates/incremental/debug/packageDebugResources/compile-file-map.properties +0 -2
- package/android/build/intermediates/incremental/debug/packageDebugResources/merged.dir/values/values.xml +0 -5
- package/android/build/intermediates/incremental/debug/packageDebugResources/merger.xml +0 -2
- package/android/build/intermediates/incremental/mergeDebugAssets/merger.xml +0 -2
- package/android/build/intermediates/incremental/mergeDebugJniLibFolders/merger.xml +0 -2
- package/android/build/intermediates/incremental/mergeDebugShaders/merger.xml +0 -2
- package/android/build/intermediates/java_res/debug/processDebugJavaRes/out/META-INF/animo-id-expo-mdoc-data-transfer_debug.kotlin_module +0 -0
- package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/id/animo/mdoc/datatransfer/BuildConfig.class +0 -0
- package/android/build/intermediates/local_only_symbol_list/debug/parseDebugLocalResources/R-def.txt +0 -5
- package/android/build/intermediates/manifest_merge_blame_file/debug/processDebugManifest/manifest-merger-blame-debug-report.txt +0 -7
- package/android/build/intermediates/merged_manifest/debug/processDebugManifest/AndroidManifest.xml +0 -7
- package/android/build/intermediates/navigation_json/debug/extractDeepLinksDebug/navigation.json +0 -1
- package/android/build/intermediates/nested_resources_validation_report/debug/generateDebugResources/nestedResourcesValidationReport.txt +0 -1
- package/android/build/intermediates/packaged_res/debug/packageDebugResources/values/values.xml +0 -5
- package/android/build/intermediates/packaged_res/debug/packageDebugResources/xml/nfc_engagement_apdu_service.xml +0 -30
- package/android/build/intermediates/runtime_library_classes_jar/debug/bundleLibRuntimeToJarDebug/classes.jar +0 -0
- package/android/build/intermediates/symbol_list_with_package_name/debug/generateDebugRFile/package-aware-r.txt +0 -4
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/counters.tab +0 -2
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/last-build.bin +0 -0
- package/android/build/kotlin/compileDebugKotlin/classpath-snapshot/shrunk-classpath-snapshot.bin +0 -0
- package/android/build/outputs/logs/manifest-merger-debug-report.txt +0 -14
- package/android/build/tmp/compileDebugJavaWithJavac/previous-compilation-data.bin +0 -0
- package/android/build/tmp/kotlin-classes/debug/META-INF/animo-id-expo-mdoc-data-transfer_debug.kotlin_module +0 -0
- package/android/build/tmp/kotlin-classes/debug/eu/europa/ec/eudi/iso18013/transfer/TransferEvent$Connected.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/eu/europa/ec/eudi/iso18013/transfer/TransferEvent$Connecting.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/eu/europa/ec/eudi/iso18013/transfer/TransferEvent$Disconnected.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/eu/europa/ec/eudi/iso18013/transfer/TransferEvent$Error.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/eu/europa/ec/eudi/iso18013/transfer/TransferEvent$IntentToSend.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/eu/europa/ec/eudi/iso18013/transfer/TransferEvent$Listenable.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/eu/europa/ec/eudi/iso18013/transfer/TransferEvent$Listener.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/eu/europa/ec/eudi/iso18013/transfer/TransferEvent$QrEngagementReady.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/eu/europa/ec/eudi/iso18013/transfer/TransferEvent$Redirect.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/eu/europa/ec/eudi/iso18013/transfer/TransferEvent$RequestReceived.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/eu/europa/ec/eudi/iso18013/transfer/TransferEvent$ResponseSent.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/eu/europa/ec/eudi/iso18013/transfer/TransferEvent.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/eu/europa/ec/eudi/iso18013/transfer/TransferManager$Companion.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/eu/europa/ec/eudi/iso18013/transfer/TransferManager$DefaultImpls.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/eu/europa/ec/eudi/iso18013/transfer/TransferManager.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/eu/europa/ec/eudi/iso18013/transfer/TransferManagerImpl$Builder.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/eu/europa/ec/eudi/iso18013/transfer/TransferManagerImpl$Companion.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/eu/europa/ec/eudi/iso18013/transfer/TransferManagerImpl.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/eu/europa/ec/eudi/iso18013/transfer/engagement/BleRetrievalMethod.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/eu/europa/ec/eudi/iso18013/transfer/engagement/DeviceRetrievalMethod.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/eu/europa/ec/eudi/iso18013/transfer/engagement/NfcEngagementService$Companion.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/eu/europa/ec/eudi/iso18013/transfer/engagement/NfcEngagementService$deviceRetrievalHelperListener$1.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/eu/europa/ec/eudi/iso18013/transfer/engagement/NfcEngagementService$nfcEngagementListener$1.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/eu/europa/ec/eudi/iso18013/transfer/engagement/NfcEngagementService.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/eu/europa/ec/eudi/iso18013/transfer/engagement/RetrievalMethod.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/eu/europa/ec/eudi/iso18013/transfer/internal/DeviceRetrievalHelperExtKt.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/eu/europa/ec/eudi/iso18013/transfer/internal/DeviceRetrievalMethodExtKt.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/eu/europa/ec/eudi/iso18013/transfer/internal/EngagementToApp$presentationListener$1.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/eu/europa/ec/eudi/iso18013/transfer/internal/EngagementToApp.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/eu/europa/ec/eudi/iso18013/transfer/internal/ExtensionsKt.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/eu/europa/ec/eudi/iso18013/transfer/internal/QrEngagement$deviceRetrievalHelperListener$1.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/eu/europa/ec/eudi/iso18013/transfer/internal/QrEngagement$qrEngagementListener$1.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/eu/europa/ec/eudi/iso18013/transfer/internal/QrEngagement.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/id/animo/mdoc/datatransfer/MdocDataTransfer$Companion.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/id/animo/mdoc/datatransfer/MdocDataTransfer.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/id/animo/mdoc/datatransfer/MdocDataTransferEvent.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/id/animo/mdoc/datatransfer/MdocDataTransferException$NotInitialized.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/id/animo/mdoc/datatransfer/MdocDataTransferException.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/id/animo/mdoc/datatransfer/MdocDataTransferManager.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/id/animo/mdoc/datatransfer/MdocDataTransferModule$definition$1$1$1.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/id/animo/mdoc/datatransfer/MdocDataTransferModule$definition$1$2$1$1.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/id/animo/mdoc/datatransfer/MdocDataTransferModule$definition$lambda$6$$inlined$AsyncFunction$1.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/id/animo/mdoc/datatransfer/MdocDataTransferModule$definition$lambda$6$$inlined$AsyncFunction$2.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/id/animo/mdoc/datatransfer/MdocDataTransferModule$definition$lambda$6$$inlined$AsyncFunction$3.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/id/animo/mdoc/datatransfer/MdocDataTransferModule$definition$lambda$6$$inlined$Function$1.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/id/animo/mdoc/datatransfer/MdocDataTransferModule$definition$lambda$6$$inlined$Function$2.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/id/animo/mdoc/datatransfer/MdocDataTransferModule$definition$lambda$6$$inlined$FunctionWithoutArgs$1.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/id/animo/mdoc/datatransfer/MdocDataTransferModule$definition$lambda$6$$inlined$FunctionWithoutArgs$2.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/id/animo/mdoc/datatransfer/MdocDataTransferModule$definition$lambda$6$$inlined$FunctionWithoutArgs$3.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/id/animo/mdoc/datatransfer/MdocDataTransferModule.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/id/animo/mdoc/datatransfer/NfcEngagementServiceImpl.class +0 -0
- package/ios/MdocDataTransfer-Bridging-Header.h +0 -1
- package/ios/MdocDataTransfer.swift +0 -186
|
@@ -42,7 +42,7 @@ class MdocDataTransfer {
|
|
|
42
42
|
}
|
|
43
43
|
async sendDeviceResponse(deviceResponse) {
|
|
44
44
|
const p = new Promise((resolve) => NativeMdocDataTransfer.addListener(MdocDataTransferEvent.OnResponseSent, resolve));
|
|
45
|
-
MdocDataTransfer.handleError(() => NativeMdocDataTransfer.sendDeviceResponse(Buffer.from(deviceResponse).toString('base64')));
|
|
45
|
+
MdocDataTransfer.handleError(async () => await NativeMdocDataTransfer.sendDeviceResponse(Buffer.from(deviceResponse).toString('base64')));
|
|
46
46
|
await p;
|
|
47
47
|
}
|
|
48
48
|
shutdown() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MdocDataTransfer.js","sourceRoot":"","sources":["../src/MdocDataTransfer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/B,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAA;AAC/D,OAAO,EACL,qBAAqB,GAItB,MAAM,yBAAyB,CAAA;AAChC,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAA;AAEjE,MAAM,CAAC,IAAI,QAAQ,GAAiC,SAAS,CAAA;AAC7D,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,QAAQ,EAAE,GAAG,EAAE;QACb,IAAI,QAAQ;YAAE,OAAO,QAAQ,CAAA;QAC7B,OAAO,gBAAgB,CAAC,UAAU,EAAE,CAAA;IACtC,CAAC;IACD,aAAa,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,QAAQ;CAChC,CAAA;AAED,MAAM,gBAAgB;IACb,YAAY,GAAG,KAAK,CAAA;IAEnB,MAAM,CAAC,WAAW,CAAC,
|
|
1
|
+
{"version":3,"file":"MdocDataTransfer.js","sourceRoot":"","sources":["../src/MdocDataTransfer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/B,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAA;AAC/D,OAAO,EACL,qBAAqB,GAItB,MAAM,yBAAyB,CAAA;AAChC,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAA;AAEjE,MAAM,CAAC,IAAI,QAAQ,GAAiC,SAAS,CAAA;AAC7D,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,QAAQ,EAAE,GAAG,EAAE;QACb,IAAI,QAAQ;YAAE,OAAO,QAAQ,CAAA;QAC7B,OAAO,gBAAgB,CAAC,UAAU,EAAE,CAAA;IACtC,CAAC;IACD,aAAa,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,QAAQ;CAChC,CAAA;AAED,MAAM,gBAAgB;IACb,YAAY,GAAG,KAAK,CAAA;IAEnB,MAAM,CAAC,WAAW,CAAC,UAAsC;QAC/D,IAAI,KAAyB,CAAA;QAC7B,MAAM,YAAY,GAAG,sBAAsB,CAAC,WAAW,CACrD,qBAAqB,CAAC,OAAO,EAC7B,CAAC,OAAuB,EAAE,EAAE;YAC1B,KAAK,GAAG,OAAO,CAAC,KAAK,CAAA;QACvB,CAAC,CACF,CAAA;QAED,UAAU,EAAE,CAAA;QAEZ,YAAY,CAAC,MAAM,EAAE,CAAA;QAErB,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,IAAI,qBAAqB,CAAC,KAAK,CAAC,CAAA;QACxC,CAAC;IACH,CAAC;IAEM,MAAM,CAAC,UAAU;QACtB,gBAAgB,CAAC,WAAW,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAA;QAE/D,QAAQ,GAAG,IAAI,gBAAgB,EAAE,CAAA;QACjC,OAAO,QAAQ,CAAA;IACjB,CAAC;IAEM,KAAK,CAAC,iBAAiB;QAC5B,OAAO,MAAM,sBAAsB,CAAC,iBAAiB,EAAE,CAAA;IACzD,CAAC;IAEM,KAAK,CAAC,oBAAoB;QAC/B,OAAO,MAAM,IAAI,OAAO,CAA+D,CAAC,OAAO,EAAE,EAAE,CACjG,sBAAsB,CAAC,WAAW,CAChC,qBAAqB,CAAC,iBAAiB,EACvC,CAAC,OAAsC,EAAE,EAAE;YACzC,OAAO,CAAC;gBACN,aAAa,EAAE,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;gBAC3E,iBAAiB,EAAE,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;aACpF,CAAC,CAAA;QACJ,CAAC,CACF,CACF,CAAA;IACH,CAAC;IAEM,KAAK,CAAC,kBAAkB,CAAC,cAA0B;QACxD,MAAM,CAAC,GAAG,IAAI,OAAO,CAAwB,CAAC,OAAO,EAAE,EAAE,CACvD,sBAAsB,CAAC,WAAW,CAAC,qBAAqB,CAAC,cAAc,EAAE,OAAO,CAAC,CAClF,CAAA;QAED,gBAAgB,CAAC,WAAW,CAC1B,KAAK,IAAI,EAAE,CAAC,MAAM,sBAAsB,CAAC,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAC5G,CAAA;QAED,MAAM,CAAC,CAAA;IACT,CAAC;IAEM,QAAQ;QACb,IAAI,CAAC,YAAY,GAAG,KAAK,CAAA;QACzB,gBAAgB,CAAC,WAAW,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAA;QAC7D,QAAQ,GAAG,SAAS,CAAA;IACtB,CAAC;IAEM,SAAS;QACd,IAAI,IAAI,CAAC,YAAY;YAAE,OAAM;QAC7B,sBAAsB,CAAC,SAAS,EAAE,CAAA;QAClC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAA;IAC1B,CAAC;CACF","sourcesContent":["import { Buffer } from 'buffer'\nimport { MdocDataTransferError } from './MdocDataTransferError'\nimport {\n MdocDataTransferEvent,\n type OnErrorPayload,\n type OnRequestReceivedEventPayload,\n type OnResponseSentPayload,\n} from './MdocDataTransferEvent'\nimport { NativeMdocDataTransfer } from './NativeMdocDataTransfer'\n\nexport let instance: MdocDataTransfer | undefined = undefined\nexport const mdocDataTransfer = {\n instance: () => {\n if (instance) return instance\n return MdocDataTransfer.initialize()\n },\n isInitialized: () => !!instance,\n}\n\nclass MdocDataTransfer {\n public isNfcEnabled = false\n\n private static handleError(nativeCall: () => void | Promise<void>) {\n let error: string | undefined\n const subscription = NativeMdocDataTransfer.addListener(\n MdocDataTransferEvent.OnError,\n (payload: OnErrorPayload) => {\n error = payload.error\n }\n )\n\n nativeCall()\n\n subscription.remove()\n\n if (error) {\n throw new MdocDataTransferError(error)\n }\n }\n\n public static initialize() {\n MdocDataTransfer.handleError(NativeMdocDataTransfer.initialize)\n\n instance = new MdocDataTransfer()\n return instance\n }\n\n public async startQrEngagement() {\n return await NativeMdocDataTransfer.startQrEngagement()\n }\n\n public async waitForDeviceRequest() {\n return await new Promise<{ deviceRequest: Uint8Array; sessionTranscript: Uint8Array }>((resolve) =>\n NativeMdocDataTransfer.addListener(\n MdocDataTransferEvent.OnRequestReceived,\n (payload: OnRequestReceivedEventPayload) => {\n resolve({\n deviceRequest: new Uint8Array(Buffer.from(payload.deviceRequest, 'base64')),\n sessionTranscript: new Uint8Array(Buffer.from(payload.sessionTranscript, 'base64')),\n })\n }\n )\n )\n }\n\n public async sendDeviceResponse(deviceResponse: Uint8Array) {\n const p = new Promise<OnResponseSentPayload>((resolve) =>\n NativeMdocDataTransfer.addListener(MdocDataTransferEvent.OnResponseSent, resolve)\n )\n\n MdocDataTransfer.handleError(\n async () => await NativeMdocDataTransfer.sendDeviceResponse(Buffer.from(deviceResponse).toString('base64'))\n )\n\n await p\n }\n\n public shutdown() {\n this.isNfcEnabled = false\n MdocDataTransfer.handleError(NativeMdocDataTransfer.shutdown)\n instance = undefined\n }\n\n public enableNfc() {\n if (this.isNfcEnabled) return\n NativeMdocDataTransfer.enableNfc()\n this.isNfcEnabled = true\n }\n}\n"]}
|
|
@@ -8,7 +8,7 @@ export type MdocDataTransferEvents = {
|
|
|
8
8
|
declare class MdocDataTransferModule extends NativeModule<MdocDataTransferEvents> {
|
|
9
9
|
initialize: () => void;
|
|
10
10
|
startQrEngagement: () => Promise<string>;
|
|
11
|
-
sendDeviceResponse: (devceResponse: string) => void
|
|
11
|
+
sendDeviceResponse: (devceResponse: string) => Promise<void>;
|
|
12
12
|
shutdown: () => void;
|
|
13
13
|
enableNfc: () => void;
|
|
14
14
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NativeMdocDataTransfer.d.ts","sourceRoot":"","sources":["../src/NativeMdocDataTransfer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAuB,MAAM,MAAM,CAAA;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,6BAA6B,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAA;AAEnH,MAAM,MAAM,sBAAsB,GAAG;IACnC,iBAAiB,EAAE,CAAC,OAAO,EAAE,6BAA6B,KAAK,IAAI,CAAA;IACnE,cAAc,EAAE,CAAC,OAAO,EAAE,qBAAqB,KAAK,IAAI,CAAA;IACxD,OAAO,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,CAAA;CAC3C,CAAA;AAED,OAAO,OAAO,sBAAuB,SAAQ,YAAY,CAAC,sBAAsB,CAAC;IAC/E,UAAU,EAAE,MAAM,IAAI,CAAA;IACtB,iBAAiB,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAA;IACxC,kBAAkB,EAAE,CAAC,aAAa,EAAE,MAAM,KAAK,IAAI,CAAA;
|
|
1
|
+
{"version":3,"file":"NativeMdocDataTransfer.d.ts","sourceRoot":"","sources":["../src/NativeMdocDataTransfer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAuB,MAAM,MAAM,CAAA;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,6BAA6B,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAA;AAEnH,MAAM,MAAM,sBAAsB,GAAG;IACnC,iBAAiB,EAAE,CAAC,OAAO,EAAE,6BAA6B,KAAK,IAAI,CAAA;IACnE,cAAc,EAAE,CAAC,OAAO,EAAE,qBAAqB,KAAK,IAAI,CAAA;IACxD,OAAO,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,CAAA;CAC3C,CAAA;AAED,OAAO,OAAO,sBAAuB,SAAQ,YAAY,CAAC,sBAAsB,CAAC;IAC/E,UAAU,EAAE,MAAM,IAAI,CAAA;IACtB,iBAAiB,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAA;IACxC,kBAAkB,EAAE,CAAC,aAAa,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAC5D,QAAQ,EAAE,MAAM,IAAI,CAAA;IACpB,SAAS,EAAE,MAAM,IAAI,CAAA;CACtB;AAED,eAAO,MAAM,sBAAsB,wBAAkE,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NativeMdocDataTransfer.js","sourceRoot":"","sources":["../src/NativeMdocDataTransfer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,mBAAmB,EAAE,MAAM,MAAM,CAAA;AAiBxD,MAAM,CAAC,MAAM,sBAAsB,GAAG,mBAAmB,CAAyB,kBAAkB,CAAC,CAAA","sourcesContent":["import { NativeModule, requireNativeModule } from 'expo'\nimport type { OnErrorPayload, OnRequestReceivedEventPayload, OnResponseSentPayload } from './MdocDataTransferEvent'\n\nexport type MdocDataTransferEvents = {\n onRequestReceived: (payload: OnRequestReceivedEventPayload) => void\n onResponseSent: (payload: OnResponseSentPayload) => void\n onError: (payload: OnErrorPayload) => void\n}\n\ndeclare class MdocDataTransferModule extends NativeModule<MdocDataTransferEvents> {\n initialize: () => void\n startQrEngagement: () => Promise<string>\n sendDeviceResponse: (devceResponse: string) => void
|
|
1
|
+
{"version":3,"file":"NativeMdocDataTransfer.js","sourceRoot":"","sources":["../src/NativeMdocDataTransfer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,mBAAmB,EAAE,MAAM,MAAM,CAAA;AAiBxD,MAAM,CAAC,MAAM,sBAAsB,GAAG,mBAAmB,CAAyB,kBAAkB,CAAC,CAAA","sourcesContent":["import { NativeModule, requireNativeModule } from 'expo'\nimport type { OnErrorPayload, OnRequestReceivedEventPayload, OnResponseSentPayload } from './MdocDataTransferEvent'\n\nexport type MdocDataTransferEvents = {\n onRequestReceived: (payload: OnRequestReceivedEventPayload) => void\n onResponseSent: (payload: OnResponseSentPayload) => void\n onError: (payload: OnErrorPayload) => void\n}\n\ndeclare class MdocDataTransferModule extends NativeModule<MdocDataTransferEvents> {\n initialize: () => void\n startQrEngagement: () => Promise<string>\n sendDeviceResponse: (devceResponse: string) => Promise<void>\n shutdown: () => void\n enableNfc: () => void\n}\n\nexport const NativeMdocDataTransfer = requireNativeModule<MdocDataTransferModule>('MdocDataTransfer')\n"]}
|
package/expo-module.config.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
require 'json'
|
|
2
2
|
|
|
3
|
-
package = JSON.parse(File.read(File.join(__dir__, 'package.json')))
|
|
3
|
+
package = JSON.parse(File.read(File.join(__dir__, '../package.json')))
|
|
4
4
|
|
|
5
5
|
Pod::Spec.new do |s|
|
|
6
6
|
s.name = 'MdocDataTransfer'
|
|
@@ -17,10 +17,9 @@ Pod::Spec.new do |s|
|
|
|
17
17
|
|
|
18
18
|
s.pod_target_xcconfig = {
|
|
19
19
|
'DEFINES_MODULE' => 'YES',
|
|
20
|
-
'SWIFT_COMPILATION_MODE' => 'wholemodule'
|
|
21
20
|
}
|
|
22
21
|
|
|
23
|
-
s.source_files = "
|
|
22
|
+
s.source_files = "**/*.{h,m,mm,swift,hpp,cpp}"
|
|
24
23
|
|
|
25
24
|
s.dependency 'ExpoModulesCore'
|
|
26
25
|
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import ExpoModulesCore
|
|
2
|
+
import MdocDataModel18013
|
|
3
|
+
import SwiftCBOR
|
|
2
4
|
|
|
3
5
|
public class MdocDataTransferModule: Module {
|
|
4
6
|
public func definition() -> ModuleDefinition {
|
|
5
7
|
Name("MdocDataTransfer")
|
|
6
8
|
|
|
7
|
-
let bleServerTransfer: MdocGattServer = MdocGattServer()
|
|
9
|
+
let bleServerTransfer: MdocGattServer = MdocGattServer(self)
|
|
8
10
|
|
|
9
11
|
Events(
|
|
10
12
|
MdocDataTransferEvent.ON_REQUEST_RECEIVED.description,
|
|
@@ -15,17 +17,13 @@ public class MdocDataTransferModule: Module {
|
|
|
15
17
|
// no-op
|
|
16
18
|
}
|
|
17
19
|
|
|
18
|
-
AsyncFunction("startQrEngagement") {
|
|
19
|
-
|
|
20
|
-
let qrCode = try await bleServerTransfer.performDeviceEngagement()
|
|
21
|
-
promise.resolve(qrCode)
|
|
22
|
-
} catch {
|
|
23
|
-
promise.reject(error)
|
|
24
|
-
}
|
|
20
|
+
AsyncFunction("startQrEngagement") {
|
|
21
|
+
try await bleServerTransfer.performDeviceEngagement()
|
|
25
22
|
}
|
|
26
23
|
|
|
27
|
-
|
|
28
|
-
bleServerTransfer.sendDeviceResponse(deviceResponse: Data(base64Encoded: deviceResponse.data(using: .utf8)!)!)
|
|
24
|
+
AsyncFunction("sendDeviceResponse") { (deviceResponse: String) in
|
|
25
|
+
try await bleServerTransfer.sendDeviceResponse(deviceResponse: Data(base64Encoded: deviceResponse.data(using: .utf8)!)!)
|
|
26
|
+
sendEvent(MdocDataTransferEvent.ON_RESPONSE_SENT.description)
|
|
29
27
|
}
|
|
30
28
|
|
|
31
29
|
Function("shutdown") {
|
|
@@ -37,3 +35,24 @@ public class MdocDataTransferModule: Module {
|
|
|
37
35
|
}
|
|
38
36
|
}
|
|
39
37
|
}
|
|
38
|
+
|
|
39
|
+
extension MdocDataTransferModule : MdocOfflineDelegate {
|
|
40
|
+
public func didChangeStatus(_ newStatus: TransferStatus) {
|
|
41
|
+
// no-op
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
public func didFinishedWithError(_ error: any Error) {
|
|
45
|
+
// no-op
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
public func didReceiveRequest(_ deviceRequest: Data, _ sessionTranscript: Data) {
|
|
49
|
+
do {
|
|
50
|
+
let dr = try DeviceRequest(data: deviceRequest.bytes).encode(options: CBOROptions())
|
|
51
|
+
sendEvent(MdocDataTransferEvent.ON_REQUEST_RECEIVED.description, ["deviceRequest": Data(dr).base64EncodedString(),"sessionTranscript": sessionTranscript.base64EncodedString() ])
|
|
52
|
+
} catch {
|
|
53
|
+
logger.error("\(error.localizedDescription)")
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
}
|
|
@@ -31,9 +31,10 @@ public class MdocGattServer: @unchecked Sendable, ObservableObject {
|
|
|
31
31
|
var remoteCentral: CBCentral!
|
|
32
32
|
var stateCharacteristic: CBMutableCharacteristic!
|
|
33
33
|
var server2ClientCharacteristic: CBMutableCharacteristic!
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
34
|
+
var deviceEngagement: DeviceEngagement?
|
|
35
|
+
var sessionEncryption: SessionEncryption?
|
|
36
|
+
var qrCodePayload: String?
|
|
37
|
+
public var delegate: any MdocOfflineDelegate
|
|
37
38
|
var continuationQrCodeReady: CheckedContinuation<Void, Error>?
|
|
38
39
|
public var advertising: Bool = false
|
|
39
40
|
public var error: Error? = nil {
|
|
@@ -49,16 +50,17 @@ public class MdocGattServer: @unchecked Sendable, ObservableObject {
|
|
|
49
50
|
}
|
|
50
51
|
}
|
|
51
52
|
public var unlockData: [String: Data]!
|
|
52
|
-
|
|
53
|
+
|
|
53
54
|
var readBuffer = Data()
|
|
54
55
|
var sendBuffer = [Data]()
|
|
55
56
|
var numBlocks: Int = 0
|
|
56
57
|
var subscribeCount: Int = 0
|
|
57
58
|
var initSuccess:Bool = false
|
|
58
59
|
|
|
59
|
-
|
|
60
|
+
public init(_ delegate: any MdocOfflineDelegate) {
|
|
60
61
|
secureArea = SecureEnclaveSecureArea.create(storage: KeyChainSecureKeyStorage(serviceName: "TODO_SERVICE_NAME", accessGroup: nil))
|
|
61
62
|
status = .initialized
|
|
63
|
+
self.delegate = delegate
|
|
62
64
|
initPeripheralManager()
|
|
63
65
|
initSuccess = true
|
|
64
66
|
}
|
|
@@ -243,20 +245,29 @@ public class MdocGattServer: @unchecked Sendable, ObservableObject {
|
|
|
243
245
|
}
|
|
244
246
|
|
|
245
247
|
func handleStatusChange(_ newValue: TransferStatus) async {
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
248
|
+
do {
|
|
249
|
+
guard !isPreview && !isInErrorState else {
|
|
250
|
+
return
|
|
251
|
+
}
|
|
252
|
+
guard let deviceEngagement else {
|
|
253
|
+
return
|
|
254
|
+
}
|
|
255
|
+
logger.log(level: .info, "Transfer status will change to \(newValue)")
|
|
256
|
+
delegate.didChangeStatus(newValue)
|
|
257
|
+
if newValue == .requestReceived {
|
|
258
|
+
peripheralManager.stopAdvertising()
|
|
259
|
+
let (dr, se) = try await MdocHelpers.decodeDeviceRequestIntoSessionTranscript(deviceEngagement, BleTransferMode.QRHandover, readBuffer)
|
|
260
|
+
sessionEncryption = se
|
|
261
|
+
delegate.didReceiveRequest(dr, Data(se.sessionTranscriptBytes))
|
|
262
|
+
}
|
|
263
|
+
else if newValue == .initialized {
|
|
264
|
+
initPeripheralManager()
|
|
265
|
+
} else if newValue == .disconnected && status != .disconnected {
|
|
266
|
+
stop()
|
|
267
|
+
}
|
|
268
|
+
} catch {
|
|
269
|
+
logger.log(level: .error, "\(error.localizedDescription)")
|
|
270
|
+
}
|
|
260
271
|
}
|
|
261
272
|
|
|
262
273
|
var isPreview: Bool {
|
|
@@ -270,7 +281,7 @@ public class MdocGattServer: @unchecked Sendable, ObservableObject {
|
|
|
270
281
|
return
|
|
271
282
|
}
|
|
272
283
|
status = .error
|
|
273
|
-
delegate
|
|
284
|
+
delegate.didFinishedWithError(newValue)
|
|
274
285
|
logger.log(level: .error, "Transfer error \(newValue) (\(newValue.localizedDescription)")
|
|
275
286
|
}
|
|
276
287
|
|
|
@@ -307,8 +318,11 @@ public class MdocGattServer: @unchecked Sendable, ObservableObject {
|
|
|
307
318
|
}
|
|
308
319
|
}
|
|
309
320
|
|
|
310
|
-
func sendDeviceResponse(deviceResponse: Data) {
|
|
311
|
-
|
|
321
|
+
func sendDeviceResponse(deviceResponse: Data) async throws {
|
|
322
|
+
guard let sessionEncryption else { throw MdocHelpers.makeError(code: .unexpected_error, str: error?.localizedDescription ?? "session encryption not found") }
|
|
323
|
+
let encryptedDeviceResponse = try await MdocHelpers.encryptDeviceResponse(deviceResponse, sessionEncryption)
|
|
324
|
+
guard let encryptedDeviceResponse else { throw MdocHelpers.makeError(code: .unexpected_error, str: error?.localizedDescription ?? "Could not encrypt device response") }
|
|
325
|
+
self.prepareDataToSend(encryptedDeviceResponse)
|
|
312
326
|
self.sendDataWithUpdates()
|
|
313
327
|
}
|
|
314
328
|
}
|
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
//
|
|
2
|
-
// MdocOfflineHandler.swift
|
|
3
|
-
|
|
4
1
|
import Foundation
|
|
5
2
|
import MdocDataModel18013
|
|
6
3
|
import MdocSecurity18013
|
|
@@ -9,7 +6,7 @@ import MdocSecurity18013
|
|
|
9
6
|
public protocol MdocOfflineDelegate: AnyObject {
|
|
10
7
|
func didChangeStatus(_ newStatus: TransferStatus)
|
|
11
8
|
func didFinishedWithError(_ error: Error)
|
|
12
|
-
|
|
9
|
+
func didReceiveRequest(_ deviceRequest: Data, _ sessionTranscript: Data)
|
|
13
10
|
}
|
|
14
11
|
|
|
15
12
|
|
|
@@ -91,4 +91,22 @@ public class MdocHelpers {
|
|
|
91
91
|
}
|
|
92
92
|
return numBlocks
|
|
93
93
|
}
|
|
94
|
+
|
|
95
|
+
public static func decodeDeviceRequestIntoSessionTranscript(_ deviceEngagement: DeviceEngagement, _ handOver: CBOR, _ sessionEstablishmentBytes: Data) async throws -> (Data, SessionEncryption) {
|
|
96
|
+
guard let seCbor = try CBOR.decode([UInt8](sessionEstablishmentBytes)) else { logger.error("Request Data is not Cbor"); throw Self.makeError(code: .requestDecodeError) }
|
|
97
|
+
let se = try SessionEstablishment(cbor: seCbor)
|
|
98
|
+
let sessionEncryption = SessionEncryption(se: se, de: deviceEngagement, handOver: handOver)
|
|
99
|
+
guard var sessionEncryption else { logger.error("Session Encryption not initialized"); throw Self.makeError(code: .sessionEncryptionNotInitialized) }
|
|
100
|
+
let requestData = try await sessionEncryption.decrypt(se.data)
|
|
101
|
+
let deviceRequest = try DeviceRequest(data: requestData)
|
|
102
|
+
return (Data(deviceRequest.encode(options: CBOROptions())), sessionEncryption)
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
public static func encryptDeviceResponse(_ deviceResponseBytes: Data, _ sessionEncryption: SessionEncryption) async throws -> Data? {
|
|
106
|
+
var se = sessionEncryption
|
|
107
|
+
let cipherData = try await se.encrypt([UInt8](deviceResponseBytes))
|
|
108
|
+
guard let cipherData else { return nil }
|
|
109
|
+
let sd = SessionData(cipher_data: cipherData, status: 20)
|
|
110
|
+
return Data(sd.encode(options: CBOROptions()))
|
|
111
|
+
}
|
|
94
112
|
}
|
package/package.json
CHANGED
package/src/MdocDataTransfer.ts
CHANGED
|
@@ -20,7 +20,7 @@ export const mdocDataTransfer = {
|
|
|
20
20
|
class MdocDataTransfer {
|
|
21
21
|
public isNfcEnabled = false
|
|
22
22
|
|
|
23
|
-
private static handleError(nativeCall: () => void) {
|
|
23
|
+
private static handleError(nativeCall: () => void | Promise<void>) {
|
|
24
24
|
let error: string | undefined
|
|
25
25
|
const subscription = NativeMdocDataTransfer.addListener(
|
|
26
26
|
MdocDataTransferEvent.OnError,
|
|
@@ -68,8 +68,8 @@ class MdocDataTransfer {
|
|
|
68
68
|
NativeMdocDataTransfer.addListener(MdocDataTransferEvent.OnResponseSent, resolve)
|
|
69
69
|
)
|
|
70
70
|
|
|
71
|
-
MdocDataTransfer.handleError(
|
|
72
|
-
NativeMdocDataTransfer.sendDeviceResponse(Buffer.from(deviceResponse).toString('base64'))
|
|
71
|
+
MdocDataTransfer.handleError(
|
|
72
|
+
async () => await NativeMdocDataTransfer.sendDeviceResponse(Buffer.from(deviceResponse).toString('base64'))
|
|
73
73
|
)
|
|
74
74
|
|
|
75
75
|
await p
|
|
@@ -10,7 +10,7 @@ export type MdocDataTransferEvents = {
|
|
|
10
10
|
declare class MdocDataTransferModule extends NativeModule<MdocDataTransferEvents> {
|
|
11
11
|
initialize: () => void
|
|
12
12
|
startQrEngagement: () => Promise<string>
|
|
13
|
-
sendDeviceResponse: (devceResponse: string) => void
|
|
13
|
+
sendDeviceResponse: (devceResponse: string) => Promise<void>
|
|
14
14
|
shutdown: () => void
|
|
15
15
|
enableNfc: () => void
|
|
16
16
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
o/classes
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
o/classes
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
o/classes
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
o/classes
|
|
Binary file
|
package/android/build/generated/source/buildConfig/debug/id/animo/mdoc/datatransfer/BuildConfig.java
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Automatically generated file. DO NOT MODIFY
|
|
3
|
-
*/
|
|
4
|
-
package id.animo.mdoc.datatransfer;
|
|
5
|
-
|
|
6
|
-
public final class BuildConfig {
|
|
7
|
-
public static final boolean DEBUG = Boolean.parseBoolean("true");
|
|
8
|
-
public static final String LIBRARY_PACKAGE_NAME = "id.animo.mdoc.datatransfer";
|
|
9
|
-
public static final String BUILD_TYPE = "debug";
|
|
10
|
-
}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"artifactType": {
|
|
4
|
-
"type": "AAPT_FRIENDLY_MERGED_MANIFESTS",
|
|
5
|
-
"kind": "Directory"
|
|
6
|
-
},
|
|
7
|
-
"applicationId": "id.animo.mdoc.datatransfer",
|
|
8
|
-
"variantName": "debug",
|
|
9
|
-
"elements": [
|
|
10
|
-
{
|
|
11
|
-
"type": "SINGLE",
|
|
12
|
-
"filters": [],
|
|
13
|
-
"attributes": [],
|
|
14
|
-
"outputFile": "AndroidManifest.xml"
|
|
15
|
-
}
|
|
16
|
-
],
|
|
17
|
-
"elementType": "File"
|
|
18
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{}
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
#Thu Feb 19 12:04:51 CET 2026
|
|
2
|
-
id.animo.mdoc.datatransfer.animo-id-expo-mdoc-data-transfer-main-6\:/xml/nfc_engagement_apdu_service.xml=/Users/beri/Developer/work/animo/expo-mdoc-data-transfer/android/build/intermediates/packaged_res/debug/packageDebugResources/xml/nfc_engagement_apdu_service.xml
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="utf-8"?>
|
|
2
|
-
<merger version="3"><dataSet aapt-namespace="http://schemas.android.com/apk/res-auto" config="main$Generated" generated="true" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:<dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/beri/Developer/work/animo/expo-mdoc-data-transfer/android/src/main/res"/></dataSet><dataSet aapt-namespace="http://schemas.android.com/apk/res-auto" config="main" generated-set="main$Generated" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:<dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/beri/Developer/work/animo/expo-mdoc-data-transfer/android/src/main/res"><file path="/Users/beri/Developer/work/animo/expo-mdoc-data-transfer/android/src/main/res/values/strings.xml" qualifiers=""><string name="nfc_engagement_service_desc">NFC Device Engagement</string><string name="engagement_aid_group_desc">mDL Nfc</string></file><file name="nfc_engagement_apdu_service" path="/Users/beri/Developer/work/animo/expo-mdoc-data-transfer/android/src/main/res/xml/nfc_engagement_apdu_service.xml" qualifiers="" type="xml"/></source></dataSet><dataSet aapt-namespace="http://schemas.android.com/apk/res-auto" config="debug$Generated" generated="true" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:<dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/beri/Developer/work/animo/expo-mdoc-data-transfer/android/src/debug/res"/></dataSet><dataSet aapt-namespace="http://schemas.android.com/apk/res-auto" config="debug" generated-set="debug$Generated" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:<dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/beri/Developer/work/animo/expo-mdoc-data-transfer/android/src/debug/res"/></dataSet><dataSet aapt-namespace="http://schemas.android.com/apk/res-auto" config="generated$Generated" generated="true" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:<dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/beri/Developer/work/animo/expo-mdoc-data-transfer/android/build/generated/res/resValues/debug"/></dataSet><dataSet aapt-namespace="http://schemas.android.com/apk/res-auto" config="generated" generated-set="generated$Generated" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:<dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/beri/Developer/work/animo/expo-mdoc-data-transfer/android/build/generated/res/resValues/debug"/></dataSet><mergedItems/></merger>
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="utf-8"?>
|
|
2
|
-
<merger version="3"><dataSet config="main" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:<dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/beri/Developer/work/animo/expo-mdoc-data-transfer/expo-sdk/android/src/main/assets"/></dataSet><dataSet config="debug" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:<dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/beri/Developer/work/animo/expo-mdoc-data-transfer/expo-sdk/android/src/debug/assets"/></dataSet><dataSet config="generated" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:<dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/beri/Developer/work/animo/expo-mdoc-data-transfer/expo-sdk/android/build/intermediates/shader_assets/debug/compileDebugShaders/out"/></dataSet></merger>
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="utf-8"?>
|
|
2
|
-
<merger version="3"><dataSet config="main" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:<dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/beri/Developer/work/animo/expo-mdoc-data-transfer/expo-sdk/android/src/main/jniLibs"/></dataSet><dataSet config="debug" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:<dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/beri/Developer/work/animo/expo-mdoc-data-transfer/expo-sdk/android/src/debug/jniLibs"/></dataSet></merger>
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="utf-8"?>
|
|
2
|
-
<merger version="3"><dataSet config="main" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:<dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/beri/Developer/work/animo/expo-mdoc-data-transfer/expo-sdk/android/src/main/shaders"/></dataSet><dataSet config="debug" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:<dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/beri/Developer/work/animo/expo-mdoc-data-transfer/expo-sdk/android/src/debug/shaders"/></dataSet></merger>
|
|
Binary file
|
|
Binary file
|
package/android/build/intermediates/navigation_json/debug/extractDeepLinksDebug/navigation.json
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
[]
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
0 Warning/Error
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="utf-8"?>
|
|
2
|
-
|
|
3
|
-
<!--
|
|
4
|
-
~ Copyright (c) 2024 European Commission
|
|
5
|
-
~
|
|
6
|
-
~ Licensed under the Apache License, Version 2.0 (the "License");
|
|
7
|
-
~ you may not use this file except in compliance with the License.
|
|
8
|
-
~ You may obtain a copy of the License at
|
|
9
|
-
~
|
|
10
|
-
~ http://www.apache.org/licenses/LICENSE-2.0
|
|
11
|
-
~
|
|
12
|
-
~ Unless required by applicable law or agreed to in writing, software
|
|
13
|
-
~ distributed under the License is distributed on an "AS IS" BASIS,
|
|
14
|
-
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
15
|
-
~ See the License for the specific language governing permissions and
|
|
16
|
-
~ limitations under the License.
|
|
17
|
-
-->
|
|
18
|
-
|
|
19
|
-
<host-apdu-service xmlns:android="http://schemas.android.com/apk/res/android"
|
|
20
|
-
android:description="@string/nfc_engagement_service_desc"
|
|
21
|
-
android:requireDeviceUnlock="true">
|
|
22
|
-
|
|
23
|
-
<aid-group
|
|
24
|
-
android:description="@string/engagement_aid_group_desc"
|
|
25
|
-
android:category="other">
|
|
26
|
-
<!-- NFC Type 4 Tag -->
|
|
27
|
-
<aid-filter android:name="D2760000850101" />
|
|
28
|
-
</aid-group>
|
|
29
|
-
|
|
30
|
-
</host-apdu-service>
|
|
Binary file
|
package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab
DELETED
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.len
DELETED
|
Binary file
|
|
Binary file
|
package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i
DELETED
|
Binary file
|
|
Binary file
|
package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab
DELETED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab
DELETED
|
Binary file
|
|
Binary file
|
|
Binary file
|