Как использовать закрытый ключ PKCS8 RSA DER в iOS?
Во время выполнения мое приложение для iOS получает файл с парой открытых и закрытых ключей RSA, созданный чужой Java:
KeyPairGenerator keygenerator;
keygenerator = KeyPairGenerator.getInstance("RSA");
keygenerator.initialize(4096);
KeyPair keypair = keygenerator.generateKeyPair();
PrivateKey privateKey = keypair.getPrivate().getEncoded();
PublicKey publicKey = keypair.getPublic().getEncoded();
Я успешно прочитал и использовалpublic ключ, используяЭтот метод, которая снимает какую-то преамбулу с ключа.
Теперь я хочу использоватьprivate ключ. Тот же самый метод не работает, я предположил, что преамбула как-то отличается. В блоге предполагается, что он импортирует PEM-ключи PKCS # 1, но затем говорится, что они двоичные, так что я думаю, что они имеют в виду только ключи DER в кодировке Base64. Я также обнаружил, что, возможно, у меня есть ключиPKCS # 8 закодировано вместо
Конечно, я могу использовать
openssl pkcs8 -nocrypt -inform der < pk8.der > pvt.pem
на пример закрытого ключа и openssl не жалуется.
Имеет ли смысл, чтобы открытым ключом был PKCS # 1, а закрытым PKCS # 8?
Но я действительно хотел бы использовать CommonCrypto и Security Framework вместо связи с OpenSSL, если яpossibly Можно. На Mac OS есть функции вlibsecurity читать PKCS # 8, но это еще не сделано для iOS. Честно говоря, я попытался прочитать исходный код, но не могу понять, где они фактически лишают ключ.
[TL; DR] Как я могу раздетьверсия и алгоритм PKCS # 8 полей из закрытого ключа DER, и просто получить простой ключ, используя либо CommonCrypto или какой-либо C / C ++ / ObjC?