Jump to content
Sign in to follow this  
thearhar

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

Recommended Posts

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

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

Share this post


Link to post
Share on other sites

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

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') ) дают тот же результат 

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.