https://github.com/prongbang/signaturebiometricswift
Generate key pair and signing (NIST P-256 EC key pair using ECDSA) using Local Authentication for iOS.
https://github.com/prongbang/signaturebiometricswift
biometrics biometrics-signature sign verify
Last synced: 7 months ago
JSON representation
Generate key pair and signing (NIST P-256 EC key pair using ECDSA) using Local Authentication for iOS.
- Host: GitHub
- URL: https://github.com/prongbang/signaturebiometricswift
- Owner: prongbang
- License: mit
- Created: 2022-12-22T06:29:32.000Z (almost 3 years ago)
- Default Branch: master
- Last Pushed: 2024-10-26T05:50:05.000Z (12 months ago)
- Last Synced: 2025-03-07T20:18:50.630Z (7 months ago)
- Topics: biometrics, biometrics-signature, sign, verify
- Language: Swift
- Homepage:
- Size: 44.9 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# SignatureBiometricSwift
Generate key pair and signing (NIST P-256 EC key pair using ECDSA) using Local Authentication for iOS.
#### Android
[https://github.com/prongbang/SignatureBiometricSwift](https://github.com/prongbang/android-biometric-signature)
## CocoaPods
```shell
pod 'SignatureBiometricSwift'
```## Swift Package Manager
In your `Package.swift` file, add `SignatureBiometricSwift` dependency to corresponding targets:
```swift
let package = Package(
dependencies: [
.package(url: "https://github.com/prongbang/SignatureBiometricSwift.git", from: "1.0.10"),
],
)
```## How to use
### Privacy `info.plist`
```xml
NSFaceIDUsageDescription
This application wants to access your TouchID or FaceID```
### Initialize
```swift
import SignatureBiometricSwiftlet keyConfig = KeyConfig(name: "com.prongbang.signx.kSecAccKey")
let signatureBiometricManager = LocalSignatureBiometricManager.newInstance(
keyConfig: keyConfig
)
```### Generate KeyPair
```swift
import SignatureBiometricSwiftlet 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)")
}
}
```### Sign
```swift
import SignatureBiometricSwiftlet clearText = "Hello"
signatureBiometricManager.sign(payload: clearText) { result in
if result.status == SignatureBiometricStatus.success {
print("signature: \(result.signature)")
} else {
print("Error: \(result.status)")
}
}
```### Verify
```swift
import SignatureBiometricSwiftlet 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)")
}
}
```### Biometrics Changed
```swift
import SignatureBiometricSwiftlet changed = signatureBiometricManager.biometricsChanged()
```### Reset Biometrics Policy State
```swift
signatureBiometricManager.biometricsPolicyStateReset()
```### Documentation
#### Protecting keys with the Secure Enclave
https://developer.apple.com/documentation/security/certificate_key_and_trust_services/keys/protecting_keys_with_the_secure_enclave
#### Storing Keys in the Keychain
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/