Мне нужно сгенерировать цепочку сертификатов p7b, используя надувной замок 1.58.
В более старой версии, которую мы использовали (1.46), этот код работал:
CMSSignedDataGenerator gen = new CMSSignedDataGenerator();
Certificate [] chain = certificate.getCertificateChain();
CertStore certStore;
try {
certStore = CertStore.getInstance("Collection", new CollectionCertStoreParameters(Arrays.asList(chain)));
gen.addCertificatesAndCRLs(certStore);
CMSSignedData signedData = gen.generate(null,(Provider)null);
return signedData.getEncoded();
} catch (Exception ex) {
logger.error("Failed to construct P7B response",ex);
throw new RuntimeException(ex);
}
Однако в новой версии Bouncy Castle есть некоторые изменения CMSSignedDataGenerator, поэтому я изменил свой код следующим образом:
CMSSignedDataGenerator gen = new CMSSignedDataGenerator();
Certificate [] chain = certificate.getCertificateChain();
try {
JcaCertStore store = new JcaCertStore(Arrays.asList(chain));
gen.addCertificates(store);
CMSSignedData signedData = gen.generate(null);
return signedData.getEncoded();
} catch (Exception ex) {
logger.error("Failed to construct P7B response",ex);
throw new RuntimeException(ex);
}
Однако я получаю исключение нулевого указателя в этой строке внутри генерации:
CMSSignedData signedData = gen.generate(null);
Я попытался выполнить отладку и проверил, что сертификаты загружены в JcaCertStore, так что с этой частью все в порядке.
Однако, когда я пытаюсь отладить библиотеку надувного замка, отладчик не может найти номера строк класса CMSSignedDataGenerator.
Я использую Wildfly для развертывания своего проекта, и я прикрепил банку с источниками к отладчику, однако я вижу код, но рядом с именем класса я получаю строка недоступна, поэтому я не может увидеть, где возникает исключение нулевого указателя.
Также интересно то, что я вижу в этом классе пустой значок Java: