我有一个项目,我从服务器接收用户的加密RSA私钥。使用用户提供的信息,我能够将数据解密回预期的格式。但是,我无法弄清楚如何将私钥加载到iOS Keychain中以用于RSA加密函数。
目前,我有以下代码,我从各种示例拼凑而成。此代码适用于添加公钥,但似乎根本不用于添加私钥。
[peerPublicKeyAttr setObject:(__bridge id)kSecClassKey forKey:(__bridge id)kSecClass];
[peerPublicKeyAttr setObject:(__bridge id)kSecAttrKeyTypeRSA forKey:(__bridge id)kSecAttrKeyType];
[peerPublicKeyAttr setObject:peerTag forKey:(__bridge id)kSecAttrApplicationTag];
[peerPublicKeyAttr setObject:privateKeyData forKey:(__bridge id)kSecValueData];
[peerPublicKeyAttr setObject:[NSNumber numberWithBool:YES] forKey:(__bridge id)kSecReturnRef];
sanityCheck = SecItemDelete((__bridge CFDictionaryRef) peerPublicKeyAttr) ;
sanityCheck = SecItemAdd((__bridge CFDictionaryRef) peerPublicKeyAttr, (CFTypeRef *)&privateKey);
当我使用私钥数据(解码为DER格式)运行此代码时,privateKey
调用将SecItemAdd()
变量设置为NULL。但是,sanityCheck
变量表示“无错误”。我因为缺少的东西而感到茫然。
我需要做些什么才能成功将私钥加载到钥匙串中?
答案 0 :(得分:2)
Official response from Apple是它没有得到支持。将私钥加入Keychain的唯一支持方式是通过PKCS#12文件。
答案 1 :(得分:0)
我现在无法测试这个...有一些链接有更详细的信息/样本来源等: