我有一个项目,我从服务器那里收到用户的加密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
变量指示“无错误”。我不知所措。我需要怎么做才能使私钥成功加载到钥匙串(keychain)中?
最佳答案
关于这个确切主题的Official response from Apple是不受支持的。将私钥放入“钥匙串(keychain)”的唯一受支持方法是通过PKCS#12文件。