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

标签 ios swift rsa keychain

我正在尝试生成 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/

相关文章:

c - EVP_PKEY_sign 和 EVP_DigestSignInit 之间的区别?

php - 使用私钥进行RSA解密

ios - 在 iOS 10.3 发行版中无法下载内部使用的 iOS 应用程序

ios - 再次调用 viewdidload 和 viewdidappear

ios - 如何更改 Xcode 界面生成器中的默认色调颜色?

ios - UICollectionViewCell 远程图像在滚动时消失

ios - Swift - 在点击按钮时添加和删除 UILabel

java - 无法在JAVA中生成RSAPublicKey

ios - NSGradient drawInBezierPath iOS等效

ios - 在已发布/可用的 iOS 应用程序的苹果商店中更改应用程序名称