Я хотел бы поделиться открытым ключом, сгенерированным на iPhone/iPad, с сервером на базе Java или устройством Android. На стороне Java (сервер или Android) я хотел бы использовать java.security
и libcommonCrypto
(материал SecKeyRef) на iOS.
У меня все работает, кроме обмена открытыми ключами между этими двумя платформами. Используя SecItemCopyMatching
, я могу экспортировать открытый ключ только в какой-то формат, который не поддерживается ничем другим, кроме Apple. С Java я могу загружать открытые ключи как сертификат X509 (через java.security.X509EncodedKeySpec
) или как модуль и экспоненту (через java.security.RSAPublicKeySpec
).
Теперь мне нужно знать, как экспортировать сертификат SecKeyRef
как X509 или (я думаю, это более простое решение) получить из него модуль и экспоненту. А еще мне нужен путь назад.
Вот пример открытого ключа, загруженного из SecKeyRef
и закодированного в BASE64:
MIGJAoGBAMYgXP6rvD/Y8F0VQE0HvxpVnnOxXYl5TDlOfW/leyrCLWGWg9Jp+Tl9dYvK/zWgNpoEfFzMVRpUk9UHcIaDWHW3g0BpS2MVC3Vs/0e2eu6S2WMGHpzqcJB51jJRbnqXQ23nVKC2YE520Po3EvFyTr8MlFJqTCJrovgc7fze4RI5AgMBAAE=