Ошибка безопасности Android. Ни один установленный поставщик не поддерживаетAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Ошибка безопасности Android. Ни один установленный поставщик не поддерживает

Сообщение Anonymous »

Я использую сертификат для сетевых запросов.

Код: Выделить всё

val keyStore = KeyStore.getInstance("PKCS12")
keyStore.load(caFileInputStream, certPassword.toCharArray())
Когда я запускаю приложение с обфускацией на некоторых устройствах, я получаю исключение

Код: Выделить всё

error constructing MAC: java.security.InvalidKeyException: No installed provider supports this key: com.android.org.bouncycastle.jcajce.PKCS12Key
Я проверил, есть ли в системе такой провайдер:

Код: Выделить всё

Security.getProviders()
и я вижу поставщика
name =BC;
info = BouncyCastle Security Provider v1.68 ;
class = com.android.org.bouncycastle.jce.provider.BouncyCastleProvider
Моя системная среда:
compileSdk 34
targetSdkVersion 34
sourceCompatibility JavaVersion.VERSION_17
targetCompatibility JavaVersion.VERSION_17
Я пытался добавить классы для proguard вот так

Код: Выделить всё

-keep class java.security.**{ *; }
#-keep class com.android.org.bouncycastle.jcajce.PKCS12Key
-keep class com.android.org.bouncycastle.** { *; }
Все еще не работает. Я вижу одну странную вещь. Ошибка говорит о том, что у меня нет поставщика
com.android.org.bouncycastle.jcajce.PKCS12Key
но у существующего поставщика есть путь к классу
p>
com.android.org.bouncycastle.jce.provider.BuncyCastleProvider
Это системная ошибка? Можно ли это исправить с моей стороны?
Я знаю, как заставить это работать, но не уверен, что это решение не создаст новых проблемЯ добавил в проект ссылку на библиотеку Bounce

Код: Выделить всё

implementation("org.bouncycastle:bcprov-jdk15to18:1.74")
Теперь у меня есть два BouncyCastleProvider. один встроен
***com.android.***org.bouncycastle.jce.provider.BuncyCastleProvider
и еще один из библиотеки
***org.bouncycastle.***jce.provider.BouncyCastleProvider
поскольку я вижу различия между ними:
встроено — поставщик безопасности BouncyCastle v1.68
lib — поставщик безопасности BouncyCastle v1.74
когда я использую BouncyCastleProvider из библиотеки все работает без исключения
Примечание:
Если используете обфускацию, придется добавить-сохранить класс org.bouncycastle.jce.**{*;
для продолжения.

Подробнее здесь: https://stackoverflow.com/questions/783 ... r-supports
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»