2016-07-29 20 views
2

Ich versuche, openssl für die Überprüfung der Zertifikatskette mit X509_verify_cert zu verwenden. Ich erhalte alle Zertifikate - Stammzertifikat, Zwischenzertifikat und Kindzertifikat, die tatsächlich verifiziert werden müssen. Mit openssl kann ich das Zertifikat im X509-Format konvertieren.Wie man Kettenparameter in X509_STORE_CTX_init einstellt?

X509_STORE_CTX *ctx; 
ctx = X509_STORE_CTX_new(); 
X509_STORE *store = X509_STORE_new(); 
X509_STORE_CTX_init(ctx, store, certificateX509, ?); 

int status = X509_verify_cert(ctx); 

während Dokumentation über X509_STORE_CTX_init und X509_verify_cert lesen, müssen wir Zertifikatskette zu übergeben? im Code. In der Dokumentation wird X509_STORE_CTX_init Methode wie folgt definiert:

int X509_STORE_CTX_init(X509_STORE_CTX *ctx, X509_STORE *store, 
         X509 *x509, STACK_OF(X509) *chain); 
# define STACK_OF(type) struct stack_st_##type 

Wie Zertifikatskette zu übergeben, wenn ich alle Zertifikate im X.509-Format haben? Jedes Code-Snippet kann mehr helfen.

Vielen Dank im Voraus!

Antwort

0

Dies scheint zu funktionieren: -

STACK_OF(X509) *chain = sk_X509_new_null(); 
sk_X509_push(chain, x509); 
X509_STORE_CTX_init(x509_ctx, x509_trusted, x509, chain); 
sk_X509_pop_free(obj->chain, X509_free);