Skip to content

Commit

Permalink
x509store: refactor X509::StoreContext#chain
Browse files Browse the repository at this point in the history
Use ossl_x509_sk2ary() to create an array of OpenSSL::X509::Certificate
from STACK_OF(X509).
  • Loading branch information
rhenium committed Aug 12, 2020
1 parent d173700 commit fa1da69
Showing 1 changed file with 5 additions and 18 deletions.
23 changes: 5 additions & 18 deletions ext/openssl/ossl_x509store.c
Original file line number Diff line number Diff line change
Expand Up @@ -574,26 +574,13 @@ static VALUE
ossl_x509stctx_get_chain(VALUE self)
{
X509_STORE_CTX *ctx;
STACK_OF(X509) *chain;
X509 *x509;
int i, num;
VALUE ary;
const STACK_OF(X509) *chain;

GetX509StCtx(self, ctx);
if((chain = X509_STORE_CTX_get0_chain(ctx)) == NULL){
return Qnil;
}
if((num = sk_X509_num(chain)) < 0){
OSSL_Debug("certs in chain < 0???");
return rb_ary_new();
}
ary = rb_ary_new2(num);
for(i = 0; i < num; i++) {
x509 = sk_X509_value(chain, i);
rb_ary_push(ary, ossl_x509_new(x509));
}

return ary;
chain = X509_STORE_CTX_get0_chain(ctx);
if (!chain)
return Qnil; /* Could be an empty array instead? */
return ossl_x509_sk2ary(chain);
}

/*
Expand Down

0 comments on commit fa1da69

Please sign in to comment.