Сбой проверки подписи PSS с Android 2.3 - PullRequest
2 голосов
/ 29 июля 2011

В моем приложении я проверяю цифровую подпись файла, подписанного с помощью вероятностной схемы подписи (PSS), используя SHA1 и RSA. Подписи создаются в J2SE с помощью BouncyCastle.

В приложении для Android до сих пор эта проверка работала нормально (например, 2.1, 2.2). При тестировании приложения на устройствах / симуляторе Android 2.3 я получаю исключение NoSuchAlgorithmException.

NoSuchAlgorithmException: Signature SHA1withRSA/PSS implementation not found 

Соответствующий код, который я использую для проверки подписи, следующий:

Signature signature = Signature.getInstance("SHA1withRSA/PSS", "BC");
signature.setParameter(new PSSParameterSpec(64));
signature.initVerify(thePublicKey);
signature.update(theMessage.getBytes());
boolean signatureIsValid = signature.verify(theSignature);

Что произошло со времен Android 2.2, почему алгоритм «SHA1withRSA / PSS» был удален из провайдера «BC»?

У кого-нибудь есть альтернатива (которая в лучшем случае работает со всеми версиями Android)?

Спасибо!

Ответы [ 2 ]

3 голосов
/ 09 декабря 2011

Единственный способ заставить работать подписи PSS - это переключить моего провайдера подписей на Spongy Castle.

Быстрые инструкции:

  1. Загрузите файл JAR SpongyCastle и поместитеэто в вашей папке libs / project.Я использовал JAR из APG: http://code.google.com/p/android-privacy-guard/source/browse/lib/bcprov-jdk16-146.jar?name=apg_service
  2. Если вы используете Eclipse, добавьте файл в ваш проект, перейдя в его свойства -> Путь сборки Java -> Библиотеки -> Добавить JAR ... -> выберитеfile
  3. Добавьте следующую строку где-нибудь в своем классе подписи

    static {Security.addProvider (new org.spongycastle.jce.provider.BouncyCastleProvider ());}

  4. Замените свой BC на SC в getInstance ()

    Подпись подписи = Signature.getInstance ("SHA1withRSA / PSS", "SC");

Недостаток: Ваш бинарный файл будет содержать бонус 1,5 Мб.

0 голосов
/ 26 октября 2011

Я столкнулся с той же проблемой. Единственный ли способ сделать это - перенести Bouncy Castle на Android?

...