[英]SecKeyRef to base64 and back in swift
我正在嘗試在設備上生成一對公鑰/私鑰,並將其存儲在鑰匙串中。
由於我使用的是Swift,因此我將使用一個庫與鑰匙串進行交互。 這是我為https://github.com/matthewpalmer/Locksmith找到的那個。
生成密鑰后,我需要做的是將它們都轉換為base64,然后將它們存儲在密鑰鏈中,然后使用來自密鑰鏈的base64字符串重新創建兩個密鑰。
使用Locksmith庫應該是這樣的。
Locksmith.saveData(["publicKeyKey": "publicKeyBase64data"], forUserAccount: "myUserAccount")
要生成密鑰,我使用以下代碼
public func GenerateKeys() -> [SecKeyRef]{
let keySize = 2048;
var publicKeyPtr, privateKeyPtr: Unmanaged<SecKeyRef>?
let publicKeyParameters: [String: AnyObject] = [
kSecAttrIsPermanent as String: true,
kSecAttrApplicationTag as String: "com.site.key.public"
]
let privateKeyParameters: [String: AnyObject] = [
kSecAttrIsPermanent as String: true,
kSecAttrApplicationTag as String: "com.site.key.private"
]
let parameters: [String: AnyObject] = [
kSecAttrKeyType as! String: kSecAttrKeyTypeRSA,
kSecAttrKeySizeInBits as! String: keySize,
kSecPublicKeyAttrs.takeUnretainedValue() as! String: publicKeyParameters,
kSecPrivateKeyAttrs.takeUnretainedValue() as! String: privateKeyParameters
]
let result = SecKeyGeneratePair(parameters, &publicKeyPtr, &privateKeyPtr)
let publicKey = publicKeyPtr!.takeRetainedValue()
let privateKey = privateKeyPtr!.takeRetainedValue()
let blockSize = SecKeyGetBlockSize(publicKey)
return [publicKey, privateKey];
}
我能夠成功生成密鑰,但是我不知道如何將它們轉換為base64並返回。 所以我有SecKeyRef對象,但真的不知道要繼續。
我發現的大多數代碼都在我不太熟悉的Objective-C中。
任何幫助都將受到贊賞。
謝謝
您確實不需要其他鑰匙串提供程序。 您已將kSecAttrIsPermanent參數設置為true,因此根據Apple doc,keyPair已存儲在默認鑰匙串中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.