Перейти к контенту
thearhar

Unable to find class:ru.infotecs.cms.output.CMSEnvelopedDataOutputStream

Рекомендуемые сообщения

Пытаюсь сделать приложение на андроид - обмен зашифрованными сообщениями с помощью ассимитричного ГОСТа, использую следующий код для шифрования:

byte[] bmessage = message.getBytes();
InputStream crtstream = ctx.getAssets().open("user.crt");
int size = crtstream.available();
byte[] buffer = new byte[size];
crtstream.read(buffer);
crtstream.close();
CertificateFactory factory = CertificateFactory.getInstance("X509");
Certificate certificate = factory.generateCertificate(new ByteArrayInputStream(buffer));
ByteArrayOutputStream cryptData = new ByteArrayOutputStream();
CMSEnvelopedDataOutputStreamR streamEncrypt = new CMSEnvelopedDataOutputStreamR(cryptData);
streamEncrypt.init("GOST28147-89");
streamEncrypt.addRecipient((X509Certificate) certificate);
streamEncrypt.write(bmessage, 0, bmessage.length);
streamEncrypt.close();
return cryptData.toString();

message - String перед этим

Получаю следующий exception

java.lang.ClassNotFoundException: Unable to find class:ru.infotecs.cms.output.CMSEnvelopedDataOutputStream
                                                                    at ru.infotecs.crypto.proxy.Proxy.getClass(Proxy.java:240)
                                                                    at ru.infotecs.crypto.proxy.Proxy.<init>(Proxy.java:68)
                                                                    at ru.infotecs.cms.output.CMSEnvelopedDataOutputStreamR.<init>(CMSEnvelopedDataOutputStreamR.java:28) 
                                                                    at me.sign.signme.Crypto.EncryptPKCS(Crypto.java:198) 
                                                                    at me.sign.signme.MainActivity.testCrypto(MainActivity.java:50) 
                                                                    at me.sign.signme.MainActivity.onCreate(MainActivity.java:73) 
                                                                    at android.app.Activity.performCreate(Activity.java:6876) 
                                                                    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1135) 
                                                                    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3207) 
                                                                    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3350) 
                                                                    at android.app.ActivityThread.access$1100(ActivityThread.java:222) 
                                                                    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1795) 
                                                                    at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                    at android.os.Looper.loop(Looper.java:158) 
                                                                    at android.app.ActivityThread.main(ActivityThread.java:7229) 
                                                                    at java.lang.reflect.Method.invoke(Native Method) 
                                                                    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230) 
                                                                    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120) 
                                                                    at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:134)

я так понимаю, библиотека, предоставленная на https://infotecs.ru/downloads/all/vipnet-jcrypto-sdk.html не полная?

в проект я подключил jcrypto-jca-android-2.6.1-R363770 и jcrypto-pkcs7-android-2.6.1-R363770

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах

подключаю следующим образом:

allprojects {
    repositories {
        jcenter()
        google()
        flatDir {
            dirs 'libs'
        }
    }
}
implementation 'ru.infotecs:jcrypto-jca-android-2.6.1-R363770@aar'
implementation 'ru.infotecs:jcrypto-pkcs7-android-2.6.1-R363770@aar'

файлы библиотек лежат в app/libs

 

импорт средствами студии (и в результате compile project(':jcrypto-pkcs7-android-2.6.1-R363770') ) дают тот же результат 

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах

Чтобы решить проблему, необходимо в коде Android-приложения в методе onCreate сделать вызов DexLoader.load(context, “jcrypto-pkcs7.jar”);

Из приведенного фрагмента кода не вполне ясно, где именно сделать этот вызов. Скорее всего здесь: me.sign.signme.MainActivity.onCreate.

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

Войти

×

Важная информация

By using this site, you agree to our Условия использования.