У меня возникает проблема, которая с моей стороны не имеет большого количества описания в документации на яблоки.Знак NSData с закрытым ключом RSA
Мне нужно подписать NSData с секретным ключом RSA, который предоставляется от backoffice. Закрытый ключ получен в виде строки.
Как достичь этого? Я не хочу создавать свои собственные пары ключей, я просто хочу использовать этот единственный ключ PRIVATE для подписи NSData.
Я нашел несколько решений с помощью OPENSSL, но ни один из них не работает, и я не могу найти подходящего решения для своей проблемы с собственной библиотекой CommonCrypto.
На самом деле, это часть Android кода мне нужно повторить:
public static PrivateKey getPrivateKey() throws Exception {
String key = ContentHolder.getInstance(context).getClientPrivateKey();
PKCS8EncodedKeySpec spec = new PKCS8EncodedKeySpec(android.util.Base64.decode(key, android.util.Base64.NO_WRAP));
KeyFactory kf = KeyFactory.getInstance("RSA");
return kf.generatePrivate(spec);
- это один возвращается Закрытый ключ, который генерируется из строки хранятся в базе данных приложения
public String sign(byte[] array) throws SignatureException {
try {
Signature sign = Signature.getInstance("SHA1withRSA");
sign.initSign(privateKey);
sign.update(array);
return android.util.Base64.encodeToString(sign.sign(), android.util.Base64.NO_WRAP);
} catch (Exception ex) {
throw new SignatureException(ex);
}
}
- это возвращает подписанный массив байтов в виде base64 строки
How для достижения этого в iOS? Я много часов искал в Интернете и пробовал несколько подходов, ни один из них не был успешным.
Я был бы очень благодарен за любые фрагменты кода, поскольку такие подсказки, как «CommonCrypto, должны это сделать», не работают для меня.
Большое спасибо
может быть, это поможет вам: https://github.com/nicklockwood/CryptoCoding –
@DavidKaszas Это не похоже на покрытие RSA, только AES. – zaph