@@ -224,6 +224,10 @@ ossl_x509store_initialize(int argc, VALUE *argv, VALUE self)
224224    rb_iv_set (self , "@error_string" , Qnil );
225225    rb_iv_set (self , "@chain" , Qnil );
226226
227+     /* added certificate/CRL references */ 
228+     rb_iv_set (self , "@certificates" , rb_ary_new ());
229+     rb_iv_set (self , "@crls" , rb_ary_new ());
230+ 
227231    return  self ;
228232}
229233
@@ -449,13 +453,20 @@ ossl_x509store_add_cert(VALUE self, VALUE arg)
449453{
450454    X509_STORE  * store ;
451455    X509  * cert ;
456+     VALUE  certificates ;
452457
453458    rb_check_frozen (self );
459+ 
454460    cert  =  GetX509CertPtr (arg ); /* NO NEED TO DUP */ 
455461    GetX509Store (self , store );
456462    if  (X509_STORE_add_cert (store , cert ) !=  1 )
457463        ossl_raise (eX509StoreError , "X509_STORE_add_cert" );
458464
465+     certificates  =  rb_iv_get (self , "@certificates" );
466+ 
467+     if (!RTEST (rb_funcall (certificates , rb_intern ("include?" ), 1 , arg )))
468+         rb_ary_push (certificates , arg );
469+ 
459470    return  self ;
460471}
461472
@@ -472,13 +483,20 @@ ossl_x509store_add_crl(VALUE self, VALUE arg)
472483{
473484    X509_STORE  * store ;
474485    X509_CRL  * crl ;
486+     VALUE  crls ;
475487
476488    rb_check_frozen (self );
489+ 
477490    crl  =  GetX509CRLPtr (arg ); /* NO NEED TO DUP */ 
478491    GetX509Store (self , store );
479492    if  (X509_STORE_add_crl (store , crl ) !=  1 )
480493        ossl_raise (eX509StoreError , "X509_STORE_add_crl" );
481494
495+     crls  =  rb_iv_get (self , "@crls" );
496+ 
497+     if (!RTEST (rb_funcall (crls , rb_intern ("include?" ), 1 , arg )))
498+         rb_ary_push (crls , arg );
499+ 
482500    return  self ;
483501}
484502
0 commit comments