Я пытаюсь сгенерировать и получить информацию о паре ключей для приложения Swift iOS, и у меня возникают проблемы при установке UnsafeMutablePointer
со следующей ошибкой:
Невозможно преобразовать значение типа 'UnsafeMutablePointer <_> 'к ожидаемому типу аргумента' UnsafeMutablePointer ? (он же необязательный > ')
Я пытаюсь использовать следующее обсуждение StackOverflow, чтобы заставить его работать: Создать CSR в iOS Библиотеке?
Мой вопрос это как явно установить значение для исправления этой ошибки?
Ниже приведен следующий код, который я пытаюсь использовать:
//Locates the SecKeyRef to the key passed in and returns secKeyRef
func readSecKeyRefFromKeychain(searchKey: String) -> SecKey
{
let keyQuery: Dictionary<String, AnyObject> = [
String(kSecAttrKeyType):kSecAttrKeyTypeRSA,
String(kSecAttrKeySizeInBits):KEY_SIZE as AnyObject,
String(kSecClass):kSecClassKey,
String(kSecAttrApplicationTag):searchKey as AnyObject,
kSecReturnRef as String : kCFBooleanTrue
]
var dataTypeReference: Unmanaged<AnyObject>? = nil
var dataResult: SecKey? = nil
let status: OSStatus = withUnsafeMutablePointer(to:&dataTypeReference)
{
SecItemCopyMatching(keyQuery as NSDictionary, UnsafeMutablePointer($0))
}
NSLog("readSecKeyRefFromKeychain: SecItemCopyMatching: " + status.description)
if status == errSecSuccess{
NSLog("key debug description is: " + dataTypeReference.debugDescription)
dataResult = (dataTypeReference!.takeRetainedValue() as! SecKey)
NSLog("public or private secKeyRef is: " + dataResult.debugDescription)
return dataResult!
}else{
return dataResult!
}
}