Дешифрация письма

Рейтинг: 0Ответов: 4Опубликовано: 15.04.2015

Возникла проблема с дешифрацией письма с помощью закрытого ключа.

Вот код процедуры дешифрации:

import java.io.File;
import java.io.FileInputStream;
import java.security.Key;
import java.util.Properties;

import javax.mail.Session;
import javax.mail.internet.ContentType;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

import net.suberic.crypto.EncryptionKeyManager;
import net.suberic.crypto.EncryptionManager;
import net.suberic.crypto.EncryptionUtils;
    public  static  void main (String arg[]){
        try {

            filein= "****";
            FileInputStream fileIn = new FileInputStream(filein);

            File fin= new File (filein);

            MimeMessage message = new MimeMessage(null, fileIn);        

            String cryptotype = EncryptionManager.checkEncryptionType(message);
            if (cryptotype==null){
                errstring = "Сообщение не зашифровано";
                //удаляем файл
                if (fin.exists()){
                    fin.delete();
                };
                return;
            };
            certpassw = "****";
            certalias = "*****";
            certfilepath = "****";

            EncryptionUtils cryptoUtils = EncryptionManager.getEncryptionUtils(EncryptionManager.SMIME);

            EncryptionKeyManager keyMgr = cryptoUtils.createKeyManager();

            char[] smimePw = new String( certpassw).toCharArray();

            File _filepk12 = new File(certfilepath);
            if (_filepk12 == null) {
                errstring = "Не найден файл сертификата шифрования";
                // удаляем файл

                if (fin.exists()){
                    fin.delete();
                }
                return;
            };

            keyMgr.loadPrivateKeystore(new FileInputStream(_filepk12), smimePw);

            MimeMessage decryptedMsg = null;

            Key privateKey = keyMgr.getPrivateKey(certalias, smimePw);

            decryptedMsg = cryptoUtils.decryptMessage(null, message, privateKey);
            System.out.println(decryptedMsg.getContent().toString());

        }catch (Exception err){
            errstring = err.getMessage();
            err.printStackTrace();
        }
    }

На строке:

decryptedMsg = cryptoUtils.decryptMessage(null, message, privateKey);

возникает следующая ошибка:

Exception in thread "AgentThread: JavaAgent" java.lang.InstantiationError: org.bouncycastle.cms.RecipientId at net.suberic.crypto.bouncycastle.SMIMEEncryptionUtils.decryptMessage(SMIMEEncryptionUtils.java:111)

Версия java: 1.6. Используем следующие библиотеки:

bcmail-jdk16-146.jar
bcprov-jdk16-146.jar
javamail-crypto_060622.jar
mail-1.4.1.jar
javamail-crypto-bouncycastle-smime_060622.jar

На локале код работает работает корректно, а вот на сервере (ОС - Linux) возникает указанная выше ошибка.

полный лог ошибки:

Exception in thread "AgentThread: JavaAgent" java.lang.InstantiationError: org.bouncycastle.cms.RecipientId at net.suberic.crypto.bouncycastle.SMIMEEncryptionUtils.decryptMessage(SMIMEEncryptionUtils.java:111) at ReadMessage_Class.main(Unknown Source) at JavaAgent.NotesMain(Unknown Source) at lotus.domino.AgentBase.runNotes(Unknown Source) at lotus.domino.NotesThread.run(Unknown Source)

Подскажите пожалуйста в чем может быть проблема.


Данная процедура вызывается из шедульного агента Notes/Domino. Указанные выше библиотеки мы вложили в директорию /jvm/lib/ext на сервере Domino. Также в java.security добавили провайдер BouncyCastle. У агента проставлены полномочия Allow Restricted operations.

Ответы

Ответов пока нет.