gpt4 book ai didi

ios - 是否可以将多个公钥保存到 ios 中的钥匙串(keychain),swift

转载 作者:行者123 更新时间:2023-11-28 08:03:33 26 4
gpt4 key购买 nike

我正在尝试生成 RSA key 并将其保存到钥匙串(keychain)中。我生成了两把公钥和一把私钥。

public key one -> generated using SecKeyGeneratePair & 
private key one -> generated using SecKeyGeneratePair

public key two -> generated using SecKeyCreateWithData

将所有三个键的 kSecAttrIsPermanent 属性设置为 true

然后我用下面的方法检索 key

func GetKeysfromKeyChain(tag: String) -> SecKey? {



let query : [String: Any] = [
String(kSecClass) : kSecClassKey,
String(kSecAttrKeyType): kSecAttrKeyTypeRSA,
String(kSecAttrApplicationTag): tag,
String(kSecReturnRef): true
]


var result: AnyObject?
let status = SecItemCopyMatching(query as CFDictionary, &result)


if status == errSecSuccess {
print("key existed :")
return result as! SecKey?
}

return nil
}

通过以上方法,可以成功得到公钥1私钥1。但是对于 public key two 它总是返回一个 nil 值。不知道。希望您对此有所帮助。

这就是我生成公钥二的方法

let data2 = Data.init(base64Encoded: serverPublicKey)


let keyDict:[NSObject:NSObject] = [
kSecAttrIsPermanent: true as NSObject,
kSecAttrApplicationTag: "com.marlonbrand.serverpublic".data(using: String.Encoding.utf8)! as NSObject,
kSecAttrKeyType: kSecAttrKeyTypeRSA,
kSecAttrKeySizeInBits: 2048 as NSObject,
kSecAttrKeyClass: kSecAttrKeyClassPublic
]


let publickeysi = SecKeyCreateWithData(data2! as CFData, keyDict as CFDictionary, nil)

最佳答案

您是否尝试过将 keyDict 的类型设置为 [String : Any] 并在需要时进行适当的转换?如果非要我猜的话,对 NSObject 的强制转换可能会把事情搞砸。

关于ios - 是否可以将多个公钥保存到 ios 中的钥匙串(keychain),swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45854150/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com