Как использовать закрытый ключ 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?

Ответы на вопрос(2)

Ваш ответ на вопрос