Я разрабатывал некоторую логику для получения сертификатов и списка отзыва в данных с подписью cms. Формат сертификатов — X509v3, а список отзыва — ответы OCSP.
В соответствии с RFC 5652: «Ответы OCSP могут поддерживаться с помощью OtherRevocationInfoFormat».
Так что я #include <openssl/cms.h>
и получить сертификаты x509v3 через:
STACK_OF(X509) *CMS_get1_certs(CMS_ContentInfo *cms);
(Увидеть: https://www.openssl.org/docs/man1.1.0/crypto/CMS_get1_certs.html)
Но я не знаю, как получить ответы OCSP через openssl в C ++. Есть только:
STACK_OF(X509_CRL) *CMS_get1_crls(CMS_ContentInfo *cms);
Но это получает список информации об аннулировании как crls, а не как ответ OCSP.
Я обнаружил, что в cms_lcl.h
, информация об аннулировании включена в CMS_RevocationInfoChoice
как тип объединения:
struct CMS_RevocationInfoChoice_st {
int type;
union {
X509_CRL *crl;
CMS_OtherRevocationInfoFormat *other;
} d;
};
Но я не могу найти способ получить это. Нужно ли импортировать другие библиотеки?
Задача ещё не решена.
Других решений пока нет …