Figured out how to prompt!

kSecUseOperationPrompt, your docs are bad.
This commit is contained in:
Max Goedjen 2020-09-23 21:22:41 -07:00
parent 331e4ed0d6
commit d68479cf10
No known key found for this signature in database
GPG Key ID: E58C21DD77B9B8E8

View File

@ -1,6 +1,7 @@
import Foundation import Foundation
import Security import Security
import CryptoTokenKit import CryptoTokenKit
import LocalAuthentication
extension SecureEnclave { extension SecureEnclave {
@ -76,6 +77,9 @@ extension SecureEnclave {
} }
public func sign(data: Data, with secret: SecretType) throws -> Data { public func sign(data: Data, with secret: SecretType) throws -> Data {
let context = LAContext()
context.localizedReason = "sign a request from Terminal using secret \"\(secret.name)\""
context.localizedCancelTitle = "Deny"
let attributes = [ let attributes = [
kSecClass: kSecClassKey, kSecClass: kSecClassKey,
kSecAttrKeyClass: kSecAttrKeyClassPrivate, kSecAttrKeyClass: kSecAttrKeyClassPrivate,
@ -83,6 +87,7 @@ extension SecureEnclave {
kSecAttrKeyType: Constants.keyType, kSecAttrKeyType: Constants.keyType,
kSecAttrTokenID: kSecAttrTokenIDSecureEnclave, kSecAttrTokenID: kSecAttrTokenIDSecureEnclave,
kSecAttrApplicationTag: Constants.keyTag, kSecAttrApplicationTag: Constants.keyTag,
kSecUseAuthenticationContext: context,
kSecReturnRef: true kSecReturnRef: true
] as CFDictionary ] as CFDictionary
var untyped: CFTypeRef? var untyped: CFTypeRef?