diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..7280d06 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,21 @@ +# SPDX-FileCopyrightText: Estonian Information System Authority +# SPDX-License-Identifier: LGPL-2.1-or-later + +name: Build NFC library + +on: + push: + pull_request: + +permissions: + contents: read + +jobs: + build: + runs-on: macos-26 + steps: + - uses: actions/checkout@v6 + - name: Build for iOS device + run: swift build --triple arm64-apple-ios18.0 --sdk "$(xcrun --sdk iphoneos --show-sdk-path)" + - name: Build for iOS simulator + run: swift build --triple arm64-apple-ios18.0-simulator --sdk "$(xcrun --sdk iphonesimulator --show-sdk-path)" diff --git a/mvtng-nfc-demo.xcworkspace/xcshareddata/swiftpm/Package.resolved b/Package.resolved similarity index 87% rename from mvtng-nfc-demo.xcworkspace/xcshareddata/swiftpm/Package.resolved rename to Package.resolved index aae8132..09cfd04 100644 --- a/mvtng-nfc-demo.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/Package.resolved @@ -1,5 +1,5 @@ { - "originHash" : "f1e8ca0c57a6ae02490b3eacdbd9acabefd510614f20e1d560dce4d07b522a65", + "originHash" : "bc89f156c9f6a24605f3088abb263f456c9f350521b3db1933b90747f54f3e20", "pins" : [ { "identity" : "asn1", @@ -13,7 +13,7 @@ { "identity" : "bigint", "kind" : "remoteSourceControl", - "location" : "https://github.com/leif-ibsen/BigInt", + "location" : "https://github.com/leif-ibsen/BigInt.git", "state" : { "revision" : "7c7b1be2f6714ce03833879b0aab4b20293c0207", "version" : "1.24.0" diff --git a/Package.swift b/Package.swift new file mode 100644 index 0000000..69432d4 --- /dev/null +++ b/Package.swift @@ -0,0 +1,27 @@ +// swift-tools-version: 6.0 +// SPDX-FileCopyrightText: Estonian Information System Authority +// SPDX-License-Identifier: LGPL-2.1-or-later + +import PackageDescription + +let package = Package( + name: "IdCardLib", + platforms: [.iOS(.v18)], + products: [ + .library(name: "IdCardLib", targets: ["nfclib"]) + ], + dependencies: [ + .package(url: "https://github.com/leif-ibsen/BigInt.git", from: "1.15.0"), + .package(url: "https://github.com/leif-ibsen/SwiftECC", from: "5.1.0") + ], + targets: [ + .target( + name: "nfclib", + dependencies: [ + .product(name: "BigInt", package: "BigInt"), + .product(name: "SwiftECC", package: "SwiftECC") + ] + ) + ], + swiftLanguageModes: [.v5] +) diff --git a/README.md b/README.md index b837363..a6e2d3c 100644 --- a/README.md +++ b/README.md @@ -4,8 +4,7 @@ - [Application Requirements](#application-requirements) - [Enable NFC Capability](#enable-nfc-capability) - [Update Info.plist](#update-infoplist) - - [Build the Library](#build-the-library) - - [Add the Library to the Application](#add-the-library-to-the-application) + - [Add the Library as a Swift Package](#add-the-library-as-a-swift-package) - [Library Interfaces for ID Card Communication](#library-interfaces-for-id-card-communication) - [Logging](#logging) - [Enabling Sensitive Logs (Debug Only)](#enabling-sensitive-logs-debug-only) @@ -19,7 +18,7 @@ The NFC-ID library is not intended for public use. It is a low-level technical l The NFC-ID library was originally developed within the m-valimiste project, based on the need to use the ID card inside the m-Voting client application. # Demo Application Run Guide -- Open **mvtng-nfc-demo.xcworkspace**. This workspace includes both the demo app and the `nfclib` library. +- Open **mvoting-nfc/nfc-demo.xcodeproj**. The demo app uses the Swift package at the repository root. - Wait until **Swift Package Manager** dependencies are fully downloaded. - Select **Product → Run**. @@ -43,27 +42,10 @@ You must declare NFC usage in your **Info.plist** file to explain why the applic - Add a new key: **Privacy – NFC Scan Usage Description** (`NFCReaderUsageDescription`). - Set its value to a string explaining why the app requires NFC access. This text will be displayed to the user the first time the app attempts to use NFC. -### Build the Library -The goal is to build an `.xcframework` bundle that can be added as a dependency to other projects. - -- Run the script `build_xcframework.sh`, located at `nfc-lib/nfc-lib/build_xcframework.sh`. It takes two optional arguments – the build configuration (`Debug` or `Release`, default `Release`) and whether to compile in sensitive logging (`YES` or `NO`, default `NO`): - - ```sh - ./build_xcframework.sh # Release, no sensitive logging – for production / App Store - ./build_xcframework.sh Release YES # Release with sensitive logging - ./build_xcframework.sh Debug YES # Debug with sensitive logging – for local debugging - ``` - - - After execution, the **build** folder will contain **nfclib.xcframework** in a `-universal` subfolder. - - Pass `YES` only for builds where you need sensitive logs. The production framework must be built with the default `NO`, which strips the sensitive-logging code from the binary. - -### Add the Library to the Application -- Open the project where you want to integrate the `nfclib` library. -- Select the project, then under **TARGETS**, choose the correct target. -- In the **General** tab of the target, find the **Frameworks and Libraries** section. -- Click **+ → Add Other… → Add Files… → Select nfclib.xcframework**. - -The NFC library is now integrated into your application. +### Add the Library as a Swift Package +- In Xcode, choose **File → Add Package Dependencies… → Add Local…** and select this repository's root directory. For a remote dependency, use the repository URL and select a revision containing `Package.swift`. +- Add the `IdCardLib` product to your app target. Import the library in Swift with `import nfclib`. +- Set the app's minimum deployment target to iOS 18 or later. # Library Interfaces for ID Card Communication The library provides the following operation classes for ID card communication: @@ -134,6 +116,6 @@ NFCLibLogging.isEnabled = true // Default is false Set it back to `false` to turn them off again. The demo already wires this up in `nfc_demoApp.swift` (`mvoting-nfc/nfc-demo`), so the quickest way to try it is to switch that line to `true`. -This only has an effect when the library was built with sensitive logging compiled in. For a framework built via the script, that's the `YES` argument (see [Build the Library](#build-the-library)); if you build the library from source instead (for example the demo workspace), add `-D ENABLE_LOGGING` to the `nfclib` target's **Other Swift Flags** (`OTHER_SWIFT_FLAGS`). Both default to off, so a production build has the code stripped and cannot log it regardless of this flag – but your app should still never set it to `true` in production. +This only has an effect when the library was built with sensitive logging compiled in. For local package debugging, add `.define("ENABLE_LOGGING")` to the `nfclib` target's `swiftSettings` in `Package.swift`. Remove it before a production build so the sensitive logging code is stripped from the binary. Your app should also leave `NFCLibLogging.isEnabled` set to `false` in production. Once enabled, the sensitive logs appear under the same subsystem as everything else. diff --git a/nfc-lib/nfc-lib/nfclib/CardActions/CardCommands.swift b/Sources/nfclib/CardActions/CardCommands.swift similarity index 100% rename from nfc-lib/nfc-lib/nfclib/CardActions/CardCommands.swift rename to Sources/nfclib/CardActions/CardCommands.swift diff --git a/nfc-lib/nfc-lib/nfclib/CardActions/CardCommandsInternal.swift b/Sources/nfclib/CardActions/CardCommandsInternal.swift similarity index 100% rename from nfc-lib/nfc-lib/nfclib/CardActions/CardCommandsInternal.swift rename to Sources/nfclib/CardActions/CardCommandsInternal.swift diff --git a/nfc-lib/nfc-lib/nfclib/CardActions/CardInfo.swift b/Sources/nfclib/CardActions/CardInfo.swift similarity index 100% rename from nfc-lib/nfc-lib/nfclib/CardActions/CardInfo.swift rename to Sources/nfclib/CardActions/CardInfo.swift diff --git a/nfc-lib/nfc-lib/nfclib/CardActions/CardReader.swift b/Sources/nfclib/CardActions/CardReader.swift similarity index 100% rename from nfc-lib/nfc-lib/nfclib/CardActions/CardReader.swift rename to Sources/nfclib/CardActions/CardReader.swift diff --git a/nfc-lib/nfc-lib/nfclib/CardActions/CardReaderNFC.swift b/Sources/nfclib/CardActions/CardReaderNFC.swift similarity index 100% rename from nfc-lib/nfc-lib/nfclib/CardActions/CardReaderNFC.swift rename to Sources/nfclib/CardActions/CardReaderNFC.swift diff --git a/nfc-lib/nfc-lib/nfclib/CardActions/IDCardError.swift b/Sources/nfclib/CardActions/IDCardError.swift similarity index 100% rename from nfc-lib/nfc-lib/nfclib/CardActions/IDCardError.swift rename to Sources/nfclib/CardActions/IDCardError.swift diff --git a/nfc-lib/nfc-lib/nfclib/CardActions/Idemia.swift b/Sources/nfclib/CardActions/Idemia.swift similarity index 100% rename from nfc-lib/nfc-lib/nfclib/CardActions/Idemia.swift rename to Sources/nfclib/CardActions/Idemia.swift diff --git a/nfc-lib/nfc-lib/nfclib/CardActions/Thales.swift b/Sources/nfclib/CardActions/Thales.swift similarity index 100% rename from nfc-lib/nfc-lib/nfclib/CardActions/Thales.swift rename to Sources/nfclib/CardActions/Thales.swift diff --git a/nfc-lib/nfc-lib/nfclib/Extensions/DataProtocol+Extension.swift b/Sources/nfclib/Extensions/DataProtocol+Extension.swift similarity index 100% rename from nfc-lib/nfc-lib/nfclib/Extensions/DataProtocol+Extension.swift rename to Sources/nfclib/Extensions/DataProtocol+Extension.swift diff --git a/nfc-lib/nfc-lib/nfclib/Extensions/ECpublicKey+Extensions.swift b/Sources/nfclib/Extensions/ECpublicKey+Extensions.swift similarity index 100% rename from nfc-lib/nfc-lib/nfclib/Extensions/ECpublicKey+Extensions.swift rename to Sources/nfclib/Extensions/ECpublicKey+Extensions.swift diff --git a/nfc-lib/nfc-lib/nfclib/Extensions/Logger+Extensions.swift b/Sources/nfclib/Extensions/Logger+Extensions.swift similarity index 100% rename from nfc-lib/nfc-lib/nfclib/Extensions/Logger+Extensions.swift rename to Sources/nfclib/Extensions/Logger+Extensions.swift diff --git a/nfc-lib/nfc-lib/nfclib/Extensions/NFCISO7816Tag+Extensions.swift b/Sources/nfclib/Extensions/NFCISO7816Tag+Extensions.swift similarity index 100% rename from nfc-lib/nfc-lib/nfclib/Extensions/NFCISO7816Tag+Extensions.swift rename to Sources/nfclib/Extensions/NFCISO7816Tag+Extensions.swift diff --git a/nfc-lib/nfc-lib/nfclib/Extensions/TKBERTLVRecord+Extensions.swift b/Sources/nfclib/Extensions/TKBERTLVRecord+Extensions.swift similarity index 100% rename from nfc-lib/nfc-lib/nfclib/Extensions/TKBERTLVRecord+Extensions.swift rename to Sources/nfclib/Extensions/TKBERTLVRecord+Extensions.swift diff --git a/nfc-lib/nfc-lib/nfclib/Operations/NFCConnection.swift b/Sources/nfclib/Operations/NFCConnection.swift similarity index 100% rename from nfc-lib/nfc-lib/nfclib/Operations/NFCConnection.swift rename to Sources/nfclib/Operations/NFCConnection.swift diff --git a/nfc-lib/nfc-lib/nfclib/Operations/OperationReadCertificate.swift b/Sources/nfclib/Operations/OperationReadCertificate.swift similarity index 100% rename from nfc-lib/nfc-lib/nfclib/Operations/OperationReadCertificate.swift rename to Sources/nfclib/Operations/OperationReadCertificate.swift diff --git a/nfc-lib/nfc-lib/nfclib/Operations/OperationReadPublicData.swift b/Sources/nfclib/Operations/OperationReadPublicData.swift similarity index 100% rename from nfc-lib/nfc-lib/nfclib/Operations/OperationReadPublicData.swift rename to Sources/nfclib/Operations/OperationReadPublicData.swift diff --git a/nfc-lib/nfc-lib/nfclib/Operations/OperationSignHash.swift b/Sources/nfclib/Operations/OperationSignHash.swift similarity index 100% rename from nfc-lib/nfc-lib/nfclib/Operations/OperationSignHash.swift rename to Sources/nfclib/Operations/OperationSignHash.swift diff --git a/nfc-lib/nfc-lib/nfclib/Operations/OperationUnblockPin.swift b/Sources/nfclib/Operations/OperationUnblockPin.swift similarity index 100% rename from nfc-lib/nfc-lib/nfclib/Operations/OperationUnblockPin.swift rename to Sources/nfclib/Operations/OperationUnblockPin.swift diff --git a/nfc-lib/nfc-lib/nfclib/Utilities/AES.swift b/Sources/nfclib/Utilities/AES.swift similarity index 100% rename from nfc-lib/nfc-lib/nfclib/Utilities/AES.swift rename to Sources/nfclib/Utilities/AES.swift diff --git a/nfc-lib/nfc-lib/nfclib/Utilities/ProgressBar.swift b/Sources/nfclib/Utilities/ProgressBar.swift similarity index 100% rename from nfc-lib/nfc-lib/nfclib/Utilities/ProgressBar.swift rename to Sources/nfclib/Utilities/ProgressBar.swift diff --git a/nfc-lib/nfc-lib/nfclib/Utilities/SecureData.swift b/Sources/nfclib/Utilities/SecureData.swift similarity index 100% rename from nfc-lib/nfc-lib/nfclib/Utilities/SecureData.swift rename to Sources/nfclib/Utilities/SecureData.swift diff --git a/nfc-lib/nfc-lib/nfclib/Utilities/Utilities.swift b/Sources/nfclib/Utilities/Utilities.swift similarity index 100% rename from nfc-lib/nfc-lib/nfclib/Utilities/Utilities.swift rename to Sources/nfclib/Utilities/Utilities.swift diff --git a/nfc-lib/nfc-lib/nfclib/WebEID/OperationAuthenticateWithWebEID.swift b/Sources/nfclib/WebEID/OperationAuthenticateWithWebEID.swift similarity index 100% rename from nfc-lib/nfc-lib/nfclib/WebEID/OperationAuthenticateWithWebEID.swift rename to Sources/nfclib/WebEID/OperationAuthenticateWithWebEID.swift diff --git a/nfc-lib/nfc-lib/nfclib/WebEID/WebEIDHash.swift b/Sources/nfclib/WebEID/WebEIDHash.swift similarity index 100% rename from nfc-lib/nfc-lib/nfclib/WebEID/WebEIDHash.swift rename to Sources/nfclib/WebEID/WebEIDHash.swift diff --git a/nfc-lib/nfc-lib/nfclib/WebEID/WebEidData.swift b/Sources/nfclib/WebEID/WebEidData.swift similarity index 100% rename from nfc-lib/nfc-lib/nfclib/WebEID/WebEidData.swift rename to Sources/nfclib/WebEID/WebEidData.swift diff --git a/mvoting-nfc/nfc-demo.xcodeproj/project.pbxproj b/mvoting-nfc/nfc-demo.xcodeproj/project.pbxproj index a37fc13..711b41a 100644 --- a/mvoting-nfc/nfc-demo.xcodeproj/project.pbxproj +++ b/mvoting-nfc/nfc-demo.xcodeproj/project.pbxproj @@ -3,57 +3,37 @@ archiveVersion = 1; classes = { }; - objectVersion = 56; + objectVersion = 70; objects = { /* Begin PBXBuildFile section */ - 13176D752B3193F70093D806 /* CardInfoView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13176D742B3193F70093D806 /* CardInfoView.swift */; }; - 1319EBC32B330BB500F69C0E /* nfclib.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1319EBC22B330BB500F69C0E /* nfclib.framework */; }; - 1319EBC42B330BB500F69C0E /* nfclib.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 1319EBC22B330BB500F69C0E /* nfclib.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; - 139195AC2AFA29CC00EDA022 /* nfc_demoApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 139195AB2AFA29CC00EDA022 /* nfc_demoApp.swift */; }; - 139195AE2AFA29CC00EDA022 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 139195AD2AFA29CC00EDA022 /* ContentView.swift */; }; - 139195B02AFA29CD00EDA022 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 139195AF2AFA29CD00EDA022 /* Assets.xcassets */; }; - 139195B32AFA29CD00EDA022 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 139195B22AFA29CD00EDA022 /* Preview Assets.xcassets */; }; - 1A0AA6F32E8EB4D2000B11FA /* CardOperations.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A0AA6F22E8EB4D2000B11FA /* CardOperations.swift */; }; - 1A0AA6F42E8EB4D2000B11FA /* Operator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A0AA6F12E8EB4D2000B11FA /* Operator.swift */; }; + B73A95A32F7C4F59A4123720 /* IdCardLib in Frameworks */ = {isa = PBXBuildFile; productRef = B73A95A22F7C4F59A4123720 /* IdCardLib */; }; /* End PBXBuildFile section */ -/* Begin PBXCopyFilesBuildPhase section */ - 1319EBC52B330BB500F69C0E /* Embed Frameworks */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = ""; - dstSubfolderSpec = 10; - files = ( - 1319EBC42B330BB500F69C0E /* nfclib.framework in Embed Frameworks */, - ); - name = "Embed Frameworks"; - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXCopyFilesBuildPhase section */ - /* Begin PBXFileReference section */ - 13176D742B3193F70093D806 /* CardInfoView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CardInfoView.swift; sourceTree = ""; }; - 1319EBC22B330BB500F69C0E /* nfclib.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = nfclib.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 137E71132B04FAC90065282B /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 139195A82AFA29CC00EDA022 /* nfc-demo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "nfc-demo.app"; sourceTree = BUILT_PRODUCTS_DIR; }; - 139195AB2AFA29CC00EDA022 /* nfc_demoApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = nfc_demoApp.swift; sourceTree = ""; }; - 139195AD2AFA29CC00EDA022 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = ""; }; - 139195AF2AFA29CD00EDA022 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; - 139195B22AFA29CD00EDA022 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; }; - 1392583F2B04B06A00AD38EA /* nfc-demo.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = "nfc-demo.entitlements"; sourceTree = ""; }; - 1A0AA6F12E8EB4D2000B11FA /* Operator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Operator.swift; sourceTree = ""; }; - 1A0AA6F22E8EB4D2000B11FA /* CardOperations.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CardOperations.swift; sourceTree = ""; }; - 5A2C028B2B060E9D00C6D249 /* SkSigningLib.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = SkSigningLib.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 5A9969882B03B9A4002A1060 /* nfc_lib.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = nfc_lib.framework; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ +/* Begin PBXFileSystemSynchronizedBuildFileExceptionSet section */ + 4E7CD94E306AF90B009D43BD /* PBXFileSystemSynchronizedBuildFileExceptionSet */ = { + isa = PBXFileSystemSynchronizedBuildFileExceptionSet; + membershipExceptions = ( + Info.plist, + ); + target = 139195A72AFA29CC00EDA022 /* nfc-demo */; + }; +/* End PBXFileSystemSynchronizedBuildFileExceptionSet section */ + +/* Begin PBXFileSystemSynchronizedRootGroup section */ + 4E7CD944306AF90A009D43BD /* nfc-demo */ = {isa = PBXFileSystemSynchronizedRootGroup; exceptions = (4E7CD94E306AF90B009D43BD /* PBXFileSystemSynchronizedBuildFileExceptionSet */, ); explicitFileTypes = {}; explicitFolders = (); path = "nfc-demo"; sourceTree = ""; }; +/* End PBXFileSystemSynchronizedRootGroup section */ + /* Begin PBXFrameworksBuildPhase section */ 139195A52AFA29CC00EDA022 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 1319EBC32B330BB500F69C0E /* nfclib.framework in Frameworks */, + B73A95A32F7C4F59A4123720 /* IdCardLib in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -63,9 +43,8 @@ 1391959F2AFA29CC00EDA022 = { isa = PBXGroup; children = ( - 139195AA2AFA29CC00EDA022 /* nfc-demo */, 139195A92AFA29CC00EDA022 /* Products */, - 5A9969872B03B9A4002A1060 /* Frameworks */, + 4E7CD944306AF90A009D43BD /* nfc-demo */, ); sourceTree = ""; }; @@ -77,40 +56,6 @@ name = Products; sourceTree = ""; }; - 139195AA2AFA29CC00EDA022 /* nfc-demo */ = { - isa = PBXGroup; - children = ( - 137E71132B04FAC90065282B /* Info.plist */, - 1392583F2B04B06A00AD38EA /* nfc-demo.entitlements */, - 139195AB2AFA29CC00EDA022 /* nfc_demoApp.swift */, - 139195AD2AFA29CC00EDA022 /* ContentView.swift */, - 13176D742B3193F70093D806 /* CardInfoView.swift */, - 139195AF2AFA29CD00EDA022 /* Assets.xcassets */, - 139195B12AFA29CD00EDA022 /* Preview Content */, - 1A0AA6F12E8EB4D2000B11FA /* Operator.swift */, - 1A0AA6F22E8EB4D2000B11FA /* CardOperations.swift */, - ); - path = "nfc-demo"; - sourceTree = ""; - }; - 139195B12AFA29CD00EDA022 /* Preview Content */ = { - isa = PBXGroup; - children = ( - 139195B22AFA29CD00EDA022 /* Preview Assets.xcassets */, - ); - path = "Preview Content"; - sourceTree = ""; - }; - 5A9969872B03B9A4002A1060 /* Frameworks */ = { - isa = PBXGroup; - children = ( - 1319EBC22B330BB500F69C0E /* nfclib.framework */, - 5A2C028B2B060E9D00C6D249 /* SkSigningLib.framework */, - 5A9969882B03B9A4002A1060 /* nfc_lib.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -121,14 +66,17 @@ 139195A42AFA29CC00EDA022 /* Sources */, 139195A52AFA29CC00EDA022 /* Frameworks */, 139195A62AFA29CC00EDA022 /* Resources */, - 1319EBC52B330BB500F69C0E /* Embed Frameworks */, ); buildRules = ( ); dependencies = ( ); + fileSystemSynchronizedGroups = ( + 4E7CD944306AF90A009D43BD /* nfc-demo */, + ); name = "nfc-demo"; packageProductDependencies = ( + B73A95A22F7C4F59A4123720 /* IdCardLib */, ); productName = "mvoting-nfc"; productReference = 139195A82AFA29CC00EDA022 /* nfc-demo.app */; @@ -150,7 +98,7 @@ }; }; buildConfigurationList = 139195A32AFA29CC00EDA022 /* Build configuration list for PBXProject "nfc-demo" */; - compatibilityVersion = "Xcode 14.0"; + compatibilityVersion = "Xcode 15.0"; developmentRegion = en; hasScannedForEncodings = 0; knownRegions = ( @@ -159,6 +107,7 @@ ); mainGroup = 1391959F2AFA29CC00EDA022; packageReferences = ( + B73A95A12F7C4F59A4123720 /* XCLocalSwiftPackageReference ".." */, ); productRefGroup = 139195A92AFA29CC00EDA022 /* Products */; projectDirPath = ""; @@ -174,8 +123,6 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 139195B32AFA29CD00EDA022 /* Preview Assets.xcassets in Resources */, - 139195B02AFA29CD00EDA022 /* Assets.xcassets in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -186,11 +133,6 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 139195AE2AFA29CC00EDA022 /* ContentView.swift in Sources */, - 139195AC2AFA29CC00EDA022 /* nfc_demoApp.swift in Sources */, - 1A0AA6F32E8EB4D2000B11FA /* CardOperations.swift in Sources */, - 1A0AA6F42E8EB4D2000B11FA /* Operator.swift in Sources */, - 13176D752B3193F70093D806 /* CardInfoView.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -335,7 +277,6 @@ INFOPLIST_KEY_UILaunchScreen_Generation = YES; INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; - IPHONEOS_DEPLOYMENT_TARGET = 18.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -368,7 +309,6 @@ INFOPLIST_KEY_UILaunchScreen_Generation = YES; INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; - IPHONEOS_DEPLOYMENT_TARGET = 18.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -404,6 +344,20 @@ defaultConfigurationName = Release; }; /* End XCConfigurationList section */ + +/* Begin XCLocalSwiftPackageReference section */ + B73A95A12F7C4F59A4123720 /* XCLocalSwiftPackageReference ".." */ = { + isa = XCLocalSwiftPackageReference; + relativePath = ..; + }; +/* End XCLocalSwiftPackageReference section */ + +/* Begin XCSwiftPackageProductDependency section */ + B73A95A22F7C4F59A4123720 /* IdCardLib */ = { + isa = XCSwiftPackageProductDependency; + productName = IdCardLib; + }; +/* End XCSwiftPackageProductDependency section */ }; rootObject = 139195A02AFA29CC00EDA022 /* Project object */; } diff --git a/nfc-lib/nfc-lib/nfclib.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/mvoting-nfc/nfc-demo.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved similarity index 92% rename from nfc-lib/nfc-lib/nfclib.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved rename to mvoting-nfc/nfc-demo.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved index aae8132..194fd90 100644 --- a/nfc-lib/nfc-lib/nfclib.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/mvoting-nfc/nfc-demo.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -1,5 +1,5 @@ { - "originHash" : "f1e8ca0c57a6ae02490b3eacdbd9acabefd510614f20e1d560dce4d07b522a65", + "originHash" : "7153459f0a1112e1f7634999eb6485142a7245314e985988b3037c0818a7faa5", "pins" : [ { "identity" : "asn1", diff --git a/mvoting-nfc/nfc-demo/CardOperations.swift b/mvoting-nfc/nfc-demo/CardOperations.swift index e5d2484..ce2a575 100644 --- a/mvoting-nfc/nfc-demo/CardOperations.swift +++ b/mvoting-nfc/nfc-demo/CardOperations.swift @@ -6,6 +6,8 @@ /// This protocol defines a set of operations for interacting with a card, /// including NFC support checking, reading card information, and performing /// authentication and signing operations. +import Foundation +import Security import nfclib public protocol CardOperations { diff --git a/mvoting-nfc/nfc-demo/nfc_demoApp.swift b/mvoting-nfc/nfc-demo/nfc_demoApp.swift index c1a846f..d1bf70e 100644 --- a/mvoting-nfc/nfc-demo/nfc_demoApp.swift +++ b/mvoting-nfc/nfc-demo/nfc_demoApp.swift @@ -7,7 +7,7 @@ import nfclib @main struct mvoting_nfcApp: App { init() { - // Set to true (and add -D ENABLE_LOGGING to the nfclib target's Other Swift Flags) to see sensitive logs. + // Set to true (and enable ENABLE_LOGGING in the nfclib package target) to see sensitive logs. NFCLibLogging.isEnabled = false } diff --git a/mvtng-nfc-demo.xcworkspace/contents.xcworkspacedata b/mvtng-nfc-demo.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 6a6d445..0000000 --- a/mvtng-nfc-demo.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - diff --git a/mvtng-nfc-demo.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/mvtng-nfc-demo.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist deleted file mode 100644 index 18d9810..0000000 --- a/mvtng-nfc-demo.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - IDEDidComputeMac32BitWarning - - - diff --git a/mvtng-nfc-demo.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/mvtng-nfc-demo.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings deleted file mode 100644 index 0c67376..0000000 --- a/mvtng-nfc-demo.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/nfc-lib/nfc-lib/build_xcframework.sh b/nfc-lib/nfc-lib/build_xcframework.sh deleted file mode 100755 index 21c12e7..0000000 --- a/nfc-lib/nfc-lib/build_xcframework.sh +++ /dev/null @@ -1,68 +0,0 @@ -#!/bin/bash -# SPDX-FileCopyrightText: Estonian Information System Authority -# SPDX-License-Identifier: LGPL-2.1-or-later - -set -e -set -o pipefail - -# Variables - Customize these based on your project -PROJECT_NAME="nfclib" -SCHEME_NAME="nfclib" # Replace with your scheme name -OUTPUT_DIR="${PWD}/build" # Output directory -CONFIGURATION="${1:-Release}" # Build configuration: Debug or Release (default Release) -ENABLE_LOGGING="${2:-NO}" # YES compiles in sensitive logging (-DENABLE_LOGGING); default NO -PROJECT_PATH="${PWD}/${PROJECT_NAME}.xcodeproj" -BUILD_DIR="${HOME}/Library/Developer/Xcode/DerivedData/${PROJECT_NAME}/Build/Products" # Add BUILD_DIR definition - -if [[ "$CONFIGURATION" != "Debug" && "$CONFIGURATION" != "Release" ]]; then - echo "Invalid configuration: '$CONFIGURATION'. Use 'Debug' or 'Release'." - exit 1 -fi - -SWIFT_LOGGING_FLAG="" -case "$ENABLE_LOGGING" in - YES) SWIFT_LOGGING_FLAG="-DENABLE_LOGGING" ;; - NO) ;; - *) echo "Invalid ENABLE_LOGGING value: '$ENABLE_LOGGING'. Use 'YES' or 'NO'."; exit 1 ;; -esac - -# Define universal output folder -UNIVERSAL_OUTPUTFOLDER="${OUTPUT_DIR}/${CONFIGURATION}-universal" - -# Clean previous builds -echo "Cleaning previous builds..." -rm -rf "$UNIVERSAL_OUTPUTFOLDER" "$BUILD_DIR/${CONFIGURATION}-iphoneos" "$BUILD_DIR/${CONFIGURATION}-iphonesimulator" - -# Step 1: Build for iOS devices and simulators -echo "Building for iOS devices and simulators..." -for destination in "generic/platform=iOS" "generic/platform=iOS Simulator"; do - xcodebuild ONLY_ACTIVE_ARCH=NO \ - -project "${PROJECT_PATH}" \ - -scheme "${SCHEME_NAME}" \ - -configuration "${CONFIGURATION}" \ - -destination "${destination}" \ - -derivedDataPath "${HOME}/Library/Developer/Xcode/DerivedData/nfclib" \ - SKIP_INSTALL=NO \ - OTHER_SWIFT_FLAGS="${SWIFT_LOGGING_FLAG}" -done - -# Make sure the output directory exists -mkdir -p "${UNIVERSAL_OUTPUTFOLDER}" - -# Ensure the documentation directory exists before copying -DOCS_DIR="$(cd "${PWD}/../.." && pwd)/docs" -if [ -d "${DOCS_DIR}" ]; then - cp -R "${DOCS_DIR}" "${UNIVERSAL_OUTPUTFOLDER}/" -else - echo "Documentation directory not found: ${DOCS_DIR}" -fi - -# Step 2. Create multiplatform binary framework bundle -echo "Creating .xcframework..." -xcodebuild -create-xcframework \ - -framework "${BUILD_DIR}/${CONFIGURATION}-iphoneos/${PROJECT_NAME}.framework" \ - -framework "${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/${PROJECT_NAME}.framework" \ - -output "${UNIVERSAL_OUTPUTFOLDER}/${PROJECT_NAME}.xcframework" - -# Step 3: Output the result -echo "Created ${PROJECT_NAME}.xcframework at ${UNIVERSAL_OUTPUTFOLDER}" diff --git a/nfc-lib/nfc-lib/nfclib.xcodeproj/project.pbxproj b/nfc-lib/nfc-lib/nfclib.xcodeproj/project.pbxproj deleted file mode 100644 index 0094f77..0000000 --- a/nfc-lib/nfc-lib/nfclib.xcodeproj/project.pbxproj +++ /dev/null @@ -1,561 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 70; - objects = { - -/* Begin PBXBuildFile section */ - 1319EBCB2B33209400F69C0E /* NFCConnection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1319EBCA2B33209400F69C0E /* NFCConnection.swift */; }; - 133C3AC22B4D95A9006F9DBD /* SwiftECC in Frameworks */ = {isa = PBXBuildFile; productRef = 133C3AC12B4D95A9006F9DBD /* SwiftECC */; settings = {ATTRIBUTES = (Required, ); }; }; - 137957B82B0329890065716E /* nfclib.h in Headers */ = {isa = PBXBuildFile; fileRef = 137957B72B0329890065716E /* nfclib.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 139965AB2B182C6F00D632C8 /* DataProtocol+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 139965AA2B182C6F00D632C8 /* DataProtocol+Extension.swift */; }; - 139965AD2B182C9F00D632C8 /* ECpublicKey+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 139965AC2B182C9F00D632C8 /* ECpublicKey+Extensions.swift */; }; - 139965AF2B182EA900D632C8 /* NFCISO7816Tag+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 139965AE2B182EA900D632C8 /* NFCISO7816Tag+Extensions.swift */; }; - 139965B12B182EF700D632C8 /* TKBERTLVRecord+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 139965B02B182EF700D632C8 /* TKBERTLVRecord+Extensions.swift */; }; - 139965B32B182F4E00D632C8 /* AES.swift in Sources */ = {isa = PBXBuildFile; fileRef = 139965B22B182F4E00D632C8 /* AES.swift */; }; - 139965BA2B18351400D632C8 /* OperationReadPublicData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 139965B92B18351400D632C8 /* OperationReadPublicData.swift */; }; - 139965BE2B18365F00D632C8 /* Utilities.swift in Sources */ = {isa = PBXBuildFile; fileRef = 139965BD2B18365F00D632C8 /* Utilities.swift */; }; - 13B8B8532B1D0D5D0017AA26 /* OperationSignHash.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13B8B8522B1D0D5D0017AA26 /* OperationSignHash.swift */; }; - 1A56CB312EA7BB0500D00BFA /* SecureData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A56CB302EA7BB0500D00BFA /* SecureData.swift */; }; - 5A2CA6642B2C53AD00A0EA34 /* WebEidData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5A2CA6632B2C53AD00A0EA34 /* WebEidData.swift */; }; - 5A61B2882B288C3100694DA5 /* OperationAuthenticateWithWebEID.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5A61B2872B288C3100694DA5 /* OperationAuthenticateWithWebEID.swift */; }; - 5A61B28C2B2895ED00694DA5 /* WebEIDHash.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5A61B28B2B2895ED00694DA5 /* WebEIDHash.swift */; }; - 5AD523BC2B2214B10033B88A /* OperationReadCertificate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5AD523BB2B2214B10033B88A /* OperationReadCertificate.swift */; }; - 5EEC1BB92CEBB06C0022D377 /* BigInt in Frameworks */ = {isa = PBXBuildFile; productRef = 5EEC1BB82CEBB06C0022D377 /* BigInt */; }; - 7D8E1EE22D01C6CE00F13D71 /* ProgressBar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7D8E1EE12D01C6CA00F13D71 /* ProgressBar.swift */; }; - DF3EE1702FE2B272004D6CF5 /* Logger+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF3EE16F2FE2B272004D6CF5 /* Logger+Extensions.swift */; }; - FA0F6E2E2E30EA0400E8D99C /* IDCardError.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA0F6E2D2E30EA0200E8D99C /* IDCardError.swift */; }; - FA0F6E302E30EA3800E8D99C /* CardInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA0F6E2F2E30EA3800E8D99C /* CardInfo.swift */; }; - FA0F6E392E31041400E8D99C /* CardCommands.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA0F6E382E31041400E8D99C /* CardCommands.swift */; }; - FA0F6E3B2E31044600E8D99C /* CardReader.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA0F6E3A2E31044600E8D99C /* CardReader.swift */; }; - FA0F6E3D2E31049400E8D99C /* CardReaderNFC.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA0F6E3C2E31049400E8D99C /* CardReaderNFC.swift */; }; - FA0F6E3F2E3112DC00E8D99C /* Idemia.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA0F6E3E2E3112DC00E8D99C /* Idemia.swift */; }; - FA0F6E412E3113D600E8D99C /* Thales.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA0F6E402E3113D600E8D99C /* Thales.swift */; }; - FA2204802E45DC790055EEB2 /* CardCommandsInternal.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA22047F2E45DC790055EEB2 /* CardCommandsInternal.swift */; }; - FAFB85EE2E3CACC5002BCEAC /* OperationUnblockPin.swift in Sources */ = {isa = PBXBuildFile; fileRef = FAFB85ED2E3CACB7002BCEAC /* OperationUnblockPin.swift */; }; -/* End PBXBuildFile section */ - -/* Begin PBXFileReference section */ - 1319EBCA2B33209400F69C0E /* NFCConnection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NFCConnection.swift; sourceTree = ""; }; - 137957B42B0329890065716E /* nfclib.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = nfclib.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 137957B72B0329890065716E /* nfclib.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = nfclib.h; sourceTree = ""; }; - 139965AA2B182C6F00D632C8 /* DataProtocol+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "DataProtocol+Extension.swift"; sourceTree = ""; }; - 139965AC2B182C9F00D632C8 /* ECpublicKey+Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "ECpublicKey+Extensions.swift"; sourceTree = ""; }; - 139965AE2B182EA900D632C8 /* NFCISO7816Tag+Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NFCISO7816Tag+Extensions.swift"; sourceTree = ""; }; - 139965B02B182EF700D632C8 /* TKBERTLVRecord+Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "TKBERTLVRecord+Extensions.swift"; sourceTree = ""; }; - 139965B22B182F4E00D632C8 /* AES.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AES.swift; sourceTree = ""; }; - 139965B92B18351400D632C8 /* OperationReadPublicData.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OperationReadPublicData.swift; sourceTree = ""; }; - 139965BD2B18365F00D632C8 /* Utilities.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Utilities.swift; sourceTree = ""; }; - 13B8B8522B1D0D5D0017AA26 /* OperationSignHash.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OperationSignHash.swift; sourceTree = ""; }; - 1A56CB302EA7BB0500D00BFA /* SecureData.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SecureData.swift; sourceTree = ""; }; - 5A2CA6632B2C53AD00A0EA34 /* WebEidData.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WebEidData.swift; sourceTree = ""; }; - 5A61B2872B288C3100694DA5 /* OperationAuthenticateWithWebEID.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OperationAuthenticateWithWebEID.swift; sourceTree = ""; }; - 5A61B28B2B2895ED00694DA5 /* WebEIDHash.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WebEIDHash.swift; sourceTree = ""; }; - 5AD523BB2B2214B10033B88A /* OperationReadCertificate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OperationReadCertificate.swift; sourceTree = ""; }; - 7D8E1EE12D01C6CA00F13D71 /* ProgressBar.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProgressBar.swift; sourceTree = ""; }; - DF3EE16F2FE2B272004D6CF5 /* Logger+Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Logger+Extensions.swift"; sourceTree = ""; }; - FA0F6E2D2E30EA0200E8D99C /* IDCardError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IDCardError.swift; sourceTree = ""; }; - FA0F6E2F2E30EA3800E8D99C /* CardInfo.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CardInfo.swift; sourceTree = ""; }; - FA0F6E382E31041400E8D99C /* CardCommands.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CardCommands.swift; sourceTree = ""; }; - FA0F6E3A2E31044600E8D99C /* CardReader.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CardReader.swift; sourceTree = ""; }; - FA0F6E3C2E31049400E8D99C /* CardReaderNFC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CardReaderNFC.swift; sourceTree = ""; }; - FA0F6E3E2E3112DC00E8D99C /* Idemia.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Idemia.swift; sourceTree = ""; }; - FA0F6E402E3113D600E8D99C /* Thales.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Thales.swift; sourceTree = ""; }; - FA22047F2E45DC790055EEB2 /* CardCommandsInternal.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CardCommandsInternal.swift; sourceTree = ""; }; - FAFB85ED2E3CACB7002BCEAC /* OperationUnblockPin.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OperationUnblockPin.swift; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 137957B12B0329890065716E /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 5EEC1BB92CEBB06C0022D377 /* BigInt in Frameworks */, - 133C3AC22B4D95A9006F9DBD /* SwiftECC in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 1319EBC12B330AB000F69C0E /* Operations */ = { - isa = PBXGroup; - children = ( - 1319EBCA2B33209400F69C0E /* NFCConnection.swift */, - 5AD523BB2B2214B10033B88A /* OperationReadCertificate.swift */, - 139965B92B18351400D632C8 /* OperationReadPublicData.swift */, - 13B8B8522B1D0D5D0017AA26 /* OperationSignHash.swift */, - FAFB85ED2E3CACB7002BCEAC /* OperationUnblockPin.swift */, - ); - path = Operations; - sourceTree = ""; - }; - 137957AA2B0329890065716E = { - isa = PBXGroup; - children = ( - 137957B62B0329890065716E /* nfclib */, - 137957B52B0329890065716E /* Products */, - 5A9969822B03B56B002A1060 /* Frameworks */, - ); - sourceTree = ""; - }; - 137957B52B0329890065716E /* Products */ = { - isa = PBXGroup; - children = ( - 137957B42B0329890065716E /* nfclib.framework */, - ); - name = Products; - sourceTree = ""; - }; - 137957B62B0329890065716E /* nfclib */ = { - isa = PBXGroup; - children = ( - FA0F6E372E31040F00E8D99C /* CardActions */, - 1319EBC12B330AB000F69C0E /* Operations */, - 5A61B2862B285B8500694DA5 /* WebEID */, - 137957B72B0329890065716E /* nfclib.h */, - 139965B52B182FAA00D632C8 /* Utilities */, - 139965B42B182F9D00D632C8 /* Extensions */, - ); - path = nfclib; - sourceTree = ""; - }; - 139965B42B182F9D00D632C8 /* Extensions */ = { - isa = PBXGroup; - children = ( - DF3EE16F2FE2B272004D6CF5 /* Logger+Extensions.swift */, - 139965AE2B182EA900D632C8 /* NFCISO7816Tag+Extensions.swift */, - 139965B02B182EF700D632C8 /* TKBERTLVRecord+Extensions.swift */, - 139965AC2B182C9F00D632C8 /* ECpublicKey+Extensions.swift */, - 139965AA2B182C6F00D632C8 /* DataProtocol+Extension.swift */, - ); - path = Extensions; - sourceTree = ""; - }; - 139965B52B182FAA00D632C8 /* Utilities */ = { - isa = PBXGroup; - children = ( - 7D8E1EE12D01C6CA00F13D71 /* ProgressBar.swift */, - 139965B22B182F4E00D632C8 /* AES.swift */, - 139965BD2B18365F00D632C8 /* Utilities.swift */, - 1A56CB302EA7BB0500D00BFA /* SecureData.swift */, - ); - path = Utilities; - sourceTree = ""; - }; - 5A61B2862B285B8500694DA5 /* WebEID */ = { - isa = PBXGroup; - children = ( - 5A61B2872B288C3100694DA5 /* OperationAuthenticateWithWebEID.swift */, - 5A61B28B2B2895ED00694DA5 /* WebEIDHash.swift */, - 5A2CA6632B2C53AD00A0EA34 /* WebEidData.swift */, - ); - path = WebEID; - sourceTree = ""; - }; - 5A9969822B03B56B002A1060 /* Frameworks */ = { - isa = PBXGroup; - children = ( - ); - name = Frameworks; - sourceTree = ""; - }; - FA0F6E372E31040F00E8D99C /* CardActions */ = { - isa = PBXGroup; - children = ( - FA0F6E382E31041400E8D99C /* CardCommands.swift */, - FA22047F2E45DC790055EEB2 /* CardCommandsInternal.swift */, - FA0F6E2F2E30EA3800E8D99C /* CardInfo.swift */, - FA0F6E2D2E30EA0200E8D99C /* IDCardError.swift */, - FA0F6E402E3113D600E8D99C /* Thales.swift */, - FA0F6E3E2E3112DC00E8D99C /* Idemia.swift */, - FA0F6E3C2E31049400E8D99C /* CardReaderNFC.swift */, - FA0F6E3A2E31044600E8D99C /* CardReader.swift */, - ); - path = CardActions; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXHeadersBuildPhase section */ - 137957AF2B0329890065716E /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 137957B82B0329890065716E /* nfclib.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXHeadersBuildPhase section */ - -/* Begin PBXNativeTarget section */ - 137957B32B0329890065716E /* nfclib */ = { - isa = PBXNativeTarget; - buildConfigurationList = 137957BB2B0329890065716E /* Build configuration list for PBXNativeTarget "nfclib" */; - buildPhases = ( - 137957AF2B0329890065716E /* Headers */, - 137957B02B0329890065716E /* Sources */, - 137957B12B0329890065716E /* Frameworks */, - 137957B22B0329890065716E /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = nfclib; - packageProductDependencies = ( - 133C3AC12B4D95A9006F9DBD /* SwiftECC */, - 5EEC1BB82CEBB06C0022D377 /* BigInt */, - ); - productName = "nfc-lib"; - productReference = 137957B42B0329890065716E /* nfclib.framework */; - productType = "com.apple.product-type.framework"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 137957AB2B0329890065716E /* Project object */ = { - isa = PBXProject; - attributes = { - BuildIndependentTargetsInParallel = 1; - LastUpgradeCheck = 1500; - TargetAttributes = { - 137957B32B0329890065716E = { - CreatedOnToolsVersion = 15.0.1; - LastSwiftMigration = 1500; - }; - }; - }; - buildConfigurationList = 137957AE2B0329890065716E /* Build configuration list for PBXProject "nfclib" */; - compatibilityVersion = "Xcode 14.0"; - developmentRegion = en; - hasScannedForEncodings = 0; - knownRegions = ( - en, - Base, - ); - mainGroup = 137957AA2B0329890065716E; - packageReferences = ( - 133C3AC02B4D95A9006F9DBD /* XCRemoteSwiftPackageReference "SwiftECC" */, - 5EEC1BB72CEBB06C0022D377 /* XCRemoteSwiftPackageReference "BigInt" */, - ); - productRefGroup = 137957B52B0329890065716E /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 137957B32B0329890065716E /* nfclib */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 137957B22B0329890065716E /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 137957B02B0329890065716E /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 13B8B8532B1D0D5D0017AA26 /* OperationSignHash.swift in Sources */, - 5A2CA6642B2C53AD00A0EA34 /* WebEidData.swift in Sources */, - 1A56CB312EA7BB0500D00BFA /* SecureData.swift in Sources */, - 139965BE2B18365F00D632C8 /* Utilities.swift in Sources */, - 5A61B2882B288C3100694DA5 /* OperationAuthenticateWithWebEID.swift in Sources */, - 139965B12B182EF700D632C8 /* TKBERTLVRecord+Extensions.swift in Sources */, - FA0F6E3D2E31049400E8D99C /* CardReaderNFC.swift in Sources */, - FA0F6E3F2E3112DC00E8D99C /* Idemia.swift in Sources */, - FA2204802E45DC790055EEB2 /* CardCommandsInternal.swift in Sources */, - 5AD523BC2B2214B10033B88A /* OperationReadCertificate.swift in Sources */, - 139965AD2B182C9F00D632C8 /* ECpublicKey+Extensions.swift in Sources */, - FA0F6E412E3113D600E8D99C /* Thales.swift in Sources */, - 139965AF2B182EA900D632C8 /* NFCISO7816Tag+Extensions.swift in Sources */, - FAFB85EE2E3CACC5002BCEAC /* OperationUnblockPin.swift in Sources */, - 1319EBCB2B33209400F69C0E /* NFCConnection.swift in Sources */, - 7D8E1EE22D01C6CE00F13D71 /* ProgressBar.swift in Sources */, - 139965B32B182F4E00D632C8 /* AES.swift in Sources */, - 5A61B28C2B2895ED00694DA5 /* WebEIDHash.swift in Sources */, - FA0F6E2E2E30EA0400E8D99C /* IDCardError.swift in Sources */, - DF3EE1702FE2B272004D6CF5 /* Logger+Extensions.swift in Sources */, - FA0F6E302E30EA3800E8D99C /* CardInfo.swift in Sources */, - 139965BA2B18351400D632C8 /* OperationReadPublicData.swift in Sources */, - FA0F6E3B2E31044600E8D99C /* CardReader.swift in Sources */, - FA0F6E392E31041400E8D99C /* CardCommands.swift in Sources */, - 139965AB2B182C6F00D632C8 /* DataProtocol+Extension.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin XCBuildConfiguration section */ - 137957B92B0329890065716E /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; - BUILD_LIBRARY_FOR_DISTRIBUTION = YES; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = dwarf; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - ENABLE_USER_SCRIPT_SANDBOXING = YES; - GCC_C_LANGUAGE_STANDARD = gnu17; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 18.0; - LOCALIZATION_PREFERS_STRING_CATALOGS = YES; - MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; - MTL_FAST_MATH = YES; - ONLY_ACTIVE_ARCH = YES; - OTHER_SWIFT_FLAGS = "-no-verify-emitted-module-interface"; - SDKROOT = iphoneos; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited)"; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - 137957BA2B0329890065716E /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; - BUILD_LIBRARY_FOR_DISTRIBUTION = YES; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_USER_SCRIPT_SANDBOXING = YES; - GCC_C_LANGUAGE_STANDARD = gnu17; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 18.0; - LOCALIZATION_PREFERS_STRING_CATALOGS = YES; - MTL_ENABLE_DEBUG_INFO = NO; - MTL_FAST_MATH = YES; - OTHER_SWIFT_FLAGS = "-no-verify-emitted-module-interface"; - SDKROOT = iphoneos; - SWIFT_COMPILATION_MODE = wholemodule; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - 137957BC2B0329890065716E /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - BUILD_LIBRARY_FOR_DISTRIBUTION = YES; - CLANG_ENABLE_MODULES = YES; - CODE_SIGN_IDENTITY = "Apple Development"; - CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = ""; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_MODULE_VERIFIER = NO; - GENERATE_INFOPLIST_FILE = YES; - INFOPLIST_KEY_NSHumanReadableCopyright = ""; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 18.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MARKETING_VERSION = 1.0; - MODULE_VERIFIER_SUPPORTED_LANGUAGES = "objective-c objective-c++"; - MODULE_VERIFIER_SUPPORTED_LANGUAGE_STANDARDS = "gnu17 gnu++20"; - ONLY_ACTIVE_ARCH = NO; - OTHER_SWIFT_FLAGS = ""; - PRODUCT_BUNDLE_IDENTIFIER = "ee.eesti.rvt.mvoting.nfc-lib"; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; - PROVISIONING_PROFILE_SPECIFIER = ""; - SKIP_INSTALL = YES; - SWIFT_EMIT_LOC_STRINGS = YES; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 6.0; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - 137957BD2B0329890065716E /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - BUILD_LIBRARY_FOR_DISTRIBUTION = YES; - CLANG_ENABLE_MODULES = YES; - CODE_SIGN_IDENTITY = "Apple Development"; - CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = ""; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_MODULE_VERIFIER = NO; - GENERATE_INFOPLIST_FILE = YES; - INFOPLIST_KEY_NSHumanReadableCopyright = ""; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 18.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MARKETING_VERSION = 1.0; - MODULE_VERIFIER_SUPPORTED_LANGUAGES = "objective-c objective-c++"; - MODULE_VERIFIER_SUPPORTED_LANGUAGE_STANDARDS = "gnu17 gnu++20"; - ONLY_ACTIVE_ARCH = NO; - OTHER_SWIFT_FLAGS = ""; - PRODUCT_BUNDLE_IDENTIFIER = "ee.eesti.rvt.mvoting.nfc-lib"; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; - PROVISIONING_PROFILE_SPECIFIER = ""; - SKIP_INSTALL = YES; - SWIFT_EMIT_LOC_STRINGS = YES; - SWIFT_VERSION = 6.0; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 137957AE2B0329890065716E /* Build configuration list for PBXProject "nfclib" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 137957B92B0329890065716E /* Debug */, - 137957BA2B0329890065716E /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 137957BB2B0329890065716E /* Build configuration list for PBXNativeTarget "nfclib" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 137957BC2B0329890065716E /* Debug */, - 137957BD2B0329890065716E /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - -/* Begin XCRemoteSwiftPackageReference section */ - 133C3AC02B4D95A9006F9DBD /* XCRemoteSwiftPackageReference "SwiftECC" */ = { - isa = XCRemoteSwiftPackageReference; - repositoryURL = "https://github.com/leif-ibsen/SwiftECC"; - requirement = { - kind = upToNextMajorVersion; - minimumVersion = 5.5.0; - }; - }; - 5EEC1BB72CEBB06C0022D377 /* XCRemoteSwiftPackageReference "BigInt" */ = { - isa = XCRemoteSwiftPackageReference; - repositoryURL = "https://github.com/leif-ibsen/BigInt"; - requirement = { - kind = upToNextMajorVersion; - minimumVersion = 1.24.0; - }; - }; -/* End XCRemoteSwiftPackageReference section */ - -/* Begin XCSwiftPackageProductDependency section */ - 133C3AC12B4D95A9006F9DBD /* SwiftECC */ = { - isa = XCSwiftPackageProductDependency; - package = 133C3AC02B4D95A9006F9DBD /* XCRemoteSwiftPackageReference "SwiftECC" */; - productName = SwiftECC; - }; - 5EEC1BB82CEBB06C0022D377 /* BigInt */ = { - isa = XCSwiftPackageProductDependency; - package = 5EEC1BB72CEBB06C0022D377 /* XCRemoteSwiftPackageReference "BigInt" */; - productName = BigInt; - }; -/* End XCSwiftPackageProductDependency section */ - }; - rootObject = 137957AB2B0329890065716E /* Project object */; -} diff --git a/nfc-lib/nfc-lib/nfclib.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/nfc-lib/nfc-lib/nfclib.xcodeproj/project.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 919434a..0000000 --- a/nfc-lib/nfc-lib/nfclib.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/nfc-lib/nfc-lib/nfclib.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/nfc-lib/nfc-lib/nfclib.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist deleted file mode 100644 index 18d9810..0000000 --- a/nfc-lib/nfc-lib/nfclib.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - IDEDidComputeMac32BitWarning - - - diff --git a/nfc-lib/nfc-lib/nfclib.xcodeproj/xcshareddata/xcschemes/nfclib.xcscheme b/nfc-lib/nfc-lib/nfclib.xcodeproj/xcshareddata/xcschemes/nfclib.xcscheme deleted file mode 100644 index a5c4c3c..0000000 --- a/nfc-lib/nfc-lib/nfclib.xcodeproj/xcshareddata/xcschemes/nfclib.xcscheme +++ /dev/null @@ -1,66 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/nfc-lib/nfc-lib/nfclib/nfclib.h b/nfc-lib/nfc-lib/nfclib/nfclib.h deleted file mode 100644 index b629406..0000000 --- a/nfc-lib/nfc-lib/nfclib/nfclib.h +++ /dev/null @@ -1,12 +0,0 @@ -// SPDX-FileCopyrightText: Estonian Information System Authority -// SPDX-License-Identifier: LGPL-2.1-or-later - -#import - -//! Project version number for nfc_lib. -FOUNDATION_EXPORT double nfc_libVersionNumber; - -//! Project version string for nfc_lib. -FOUNDATION_EXPORT const unsigned char nfc_libVersionString[]; - -// In this header, you should import all the public headers of your framework using statements like #import