[ruby/openssl] x509store: refactor X509::StoreContext#chain
Use ossl_x509_sk2ary() to create an array of OpenSSL::X509::Certificate from STACK_OF(X509). https://github.com/ruby/openssl/commit/fa1da69f92
This commit is contained in:
parent
08c99a4208
commit
be3ba2ee4d
Notes:
git
2021-03-16 20:38:46 +09:00
@ -574,26 +574,13 @@ static VALUE
|
|||||||
ossl_x509stctx_get_chain(VALUE self)
|
ossl_x509stctx_get_chain(VALUE self)
|
||||||
{
|
{
|
||||||
X509_STORE_CTX *ctx;
|
X509_STORE_CTX *ctx;
|
||||||
STACK_OF(X509) *chain;
|
const STACK_OF(X509) *chain;
|
||||||
X509 *x509;
|
|
||||||
int i, num;
|
|
||||||
VALUE ary;
|
|
||||||
|
|
||||||
GetX509StCtx(self, ctx);
|
GetX509StCtx(self, ctx);
|
||||||
if((chain = X509_STORE_CTX_get0_chain(ctx)) == NULL){
|
chain = X509_STORE_CTX_get0_chain(ctx);
|
||||||
return Qnil;
|
if (!chain)
|
||||||
}
|
return Qnil; /* Could be an empty array instead? */
|
||||||
if((num = sk_X509_num(chain)) < 0){
|
return ossl_x509_sk2ary(chain);
|
||||||
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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
Loading…
x
Reference in New Issue
Block a user