SignatureBiometricSwift 1.0.9

SignatureBiometricSwift 1.0.9

prongbang 维护。



SignatureBiometricSwift

使用 iOS 本地认证生成密钥对和签名(使用 ECDSA 的 NIST P-256 EC 密钥对)。

https://developer.apple.com/documentation/security/certificate_key_and_trust_services/keys/protecting_keys_with_the_secure_enclave

密钥链

https://developer.apple.com/documentation/security/certificate_key_and_trust_services/keys/storing_keys_in_the_keychain

SecKeyAlgorithm

https://developer.apple.com/documentation/security/seckeyalgorithm/

Android

https://github.com/prongbang/SignatureBiometricSwift

CocoaPods

pod 'SignatureBiometricSwift'

Swift Package 管理器

在您的 Package.swift 文件中,将 SignatureBiometricSwift 依赖项添加到相应的目标中。

let package = Package(
  dependencies: [
    .package(url: "https://github.com/prongbang/SignatureBiometricSwift.git", from: "1.0.7"),
  ],
)

如何使用

隐私 info.plist

<dict>
  <key>NSFaceIDUsageDescription</key>
  <string>This application wants to access your TouchID or FaceID</string>
</dict>

初始化

import SignatureBiometricSwift

let keyConfig = KeyConfig(name: "com.prongbang.signx.kSecAccKey")
let signatureBiometricManager = LocalSignatureBiometricManager.newInstance(
    keyConfig: keyConfig
)

生成密钥对

import SignatureBiometricSwift

let reason = "Please scan your fingerprint (or face) to authenticate"
signatureBiometricManager.createKeyPair(reason: reason) { result in
    if result.status == SignatureBiometricStatus.success {
        let publicKey = result.publicKey ?? ""
        print("publicKey: \(publicKey)")
    } else {
        print("Error: \(result.status)")
    }
}

签名

import SignatureBiometricSwift

let clearText = "Hello"
signatureBiometricManager.sign(payload: clearText) { result in
    if result.status == SignatureBiometricStatus.success {
        print("signature: \(result.signature)")    
    } else {
        print("Error: \(result.status)")
    }
}

验证

import SignatureBiometricSwift

let clearText = "Hello"
let reason = "Please scan your fingerprint (or face) to authenticate"
signatureBiometricManager.verify(reason: reason, payload: clearText, signature: signed) { result in
    if result.status == SignatureBiometricStatus.success {
        print("verified: \(result.verified)")
    } else {
        print("Error: \(result.status)")
    }
}