Я экспериментирую с компонентом pgp, используя Camel 2.12.1. В конечном итоге я хочу SFTP зашифровать файл pgp и позволить Camel расшифровать файл перед обработкой.
Мой маршрут:
from("direct:decrypt").unmarshal().pgp("file:///home/cps/.gnupg/secring.gpg", "developer", "xxx")
.to("log:decrypt");
Мой маршрут приводит к следующему исключению:
java.lang.NoSuchMethodError: org.bouncycastle.openpgp.PGPSecretKey.extractPrivateKey(Lorg/bouncycastle/openpgp/operator/PBESecretKeyDecryptor;)Lorg/bouncycastle/openpgp/PGPPrivateKey;
at org.apache.camel.converter.crypto.PGPDataFormatUtil.findPrivateKey(PGPDataFormatUtil.java:164)
at org.apache.camel.converter.crypto.PGPDataFormatUtil.findPrivateKey(PGPDataFormatUtil.java:139)
Мой файл pom.xml добавляет следующую зависимость:
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-crypto</artifactId>
</dependency>
Есть ли какая-то другая библиотека, которую нужно включить?
Обновление Комментарий Скайра ниже напомнил мне, что у нас была установлена другая версия банок bouncycastle в нашем каталоге jre/lib/ext. Когда я удаляю эти файлы, вместо этого я получаю другое исключение.
java.lang.SecurityException: class "org.bouncycastle.asn1.DEREncodable"'s signer information does not match signer information of other classes in the same package
at java.lang.ClassLoader.checkCerts(ClassLoader.java:807)
at java.lang.ClassLoader.preDefineClass(ClassLoader.java:488)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:626)
Я добавил старый файл bcpg-jdk16.jar обратно в jre/lib/ext, и все заработало!? На данный момент я озадачен тем, почему это сработало, но я ценю прогресс и предложенную помощь.
file:///home/cps/.gnupg/secring.gpg? Разве это не тот файл, который вы хотите расшифровать? Содержит ли ваш закрытый ключ идентификатор пользователяdeveloper, чаще всего этоUser <[email protected]>, а пароль необязателен. - person Milan Baran   schedule 19.12.2013