Конвертировать X509 в PKCS7
Создание PKCS7 из хранилища ключей
Я попробовал оба ответа выше, но я чувствую, что они не удовлетворяют моим потребностям, поскольку, основываясь на приведенной ниже ссылке, я могу подвести итог, что PKCS7 используется для двух целей,
- Создание подписей, дайджест и т. Д. CMS (синтаксис критографических сообщений)
- Контейнер для сертификатов
Исходя из этого я обобщил
Мне нужно больше пункта №2. Я просто хочу создать файл .p7b, используя все сертификаты, которые у меня есть в объекте KeyStore. Поскольку PKCS7 не может содержать закрытый ключ. Приведенные выше два ответа генерируют подпись, а что нет. Я что-то пропустил? это путь вперед или есть другой путь?
Я могу извлечь сертификаты из файла .p7b, используя
FileInputStream is = new FileInputStream( "cert.pkcs7" );
CertificateFactory cf = CertificateFactory.getInstance( "X.509" );
Iterator i = cf.generateCertificates( is ).iterator();
while ( i.hasNext() )
{
Certificate c = (Certificate)i.next();
System.out.println(Base64.getEncoder.encodeToString(c.getEncoded());
}
Я спрашиваю, как сделать обратное, т.е. создать файл .p7b из Certificate[]
или Java KeyStore
Хорошо, я нашел решение:
Решение В этом мы можем создать то, что я просил, но я все еще получаю подписанные данные, которые генерируются. Я не хочу этого Простой пакет .p7b, который у меня уже есть, не имеет signerInfo. Будет ли он иметь .p7b, созданный этим решением?
Это правильный способ сделать это?