Дешифрация письма
Возникла проблема с дешифрацией письма с помощью закрытого ключа.
Вот код процедуры дешифрации:
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.