2013-02-13 5 views
0

Итак, у меня есть цепочка сертификатов, хранящаяся в STACK_OF (X509). Это то, что я сделал с ним:Проверьте цепочку сертификатов в STACK_OF (X509)

STACK_OF(X509) *chain = SSL_get_peer_cert_chain(ssl); 

X509_STORE_CTX* newCert = X509_STORE_CTX_new(); 
if(newCert){ 
    X509_STORE_CTX_set_chain(newCert, chain); 
    std::cout << X509_verify_cert(newCert) << std::endl; 
} 
std::cout << "ERROR : " << X509_STORE_CTX_get_error(newCert) << std::endl; 

Вопрос заключается в том, что X509_verify_cert(newCert) возвращает -1 означает инициализацию X509_STORE_CTX не вниз должным образом. Что мне не хватает?

ответ

2

Я думаю, это связано с Use of STACK_OF(X509).

Вы не должны копировать только половину исходного кода на apps/verify.c. Если вы посмотрите глубже, вы найдете, среди прочего,

286   if(!X509_STORE_CTX_init(csc,ctx,x,uchain)) 
+0

Что делает X509_STORE * магазин делать? как инициализировать это? И если у меня есть цепочка, должен ли я использовать третий параметр, X509 *? –

+0

Мне нужно инициализировать все сертификаты в ssl/certs в x509_store, а затем использовать его для проверки сертификатов в стеке (x509)? –

+0

@PrasanthMadhavan Я не знаком с openssl, но быстрый взгляд на вызывающих «проверок» приводит к «X509_STORE_new», и это приводит к http://stackoverflow.com/q/6646841/1741542 и http: // stackoverflow.com/q/2756553/1741542. Я думаю, что это не тривиальная задача. Вам нужно немного поискать и поэкспериментировать с источником verify.c. –

Смежные вопросы