@@ -224,6 +224,10 @@ ossl_x509store_initialize(int argc, VALUE *argv, VALUE self)
224
224
rb_iv_set (self , "@error_string" , Qnil );
225
225
rb_iv_set (self , "@chain" , Qnil );
226
226
227
+ /* added certificate/CRL references */
228
+ rb_iv_set (self , "@certificates" , rb_ary_new ());
229
+ rb_iv_set (self , "@crls" , rb_ary_new ());
230
+
227
231
return self ;
228
232
}
229
233
@@ -449,13 +453,20 @@ ossl_x509store_add_cert(VALUE self, VALUE arg)
449
453
{
450
454
X509_STORE * store ;
451
455
X509 * cert ;
456
+ VALUE certificates ;
452
457
453
458
rb_check_frozen (self );
459
+
454
460
cert = GetX509CertPtr (arg ); /* NO NEED TO DUP */
455
461
GetX509Store (self , store );
456
462
if (X509_STORE_add_cert (store , cert ) != 1 )
457
463
ossl_raise (eX509StoreError , "X509_STORE_add_cert" );
458
464
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
+
459
470
return self ;
460
471
}
461
472
@@ -472,13 +483,20 @@ ossl_x509store_add_crl(VALUE self, VALUE arg)
472
483
{
473
484
X509_STORE * store ;
474
485
X509_CRL * crl ;
486
+ VALUE crls ;
475
487
476
488
rb_check_frozen (self );
489
+
477
490
crl = GetX509CRLPtr (arg ); /* NO NEED TO DUP */
478
491
GetX509Store (self , store );
479
492
if (X509_STORE_add_crl (store , crl ) != 1 )
480
493
ossl_raise (eX509StoreError , "X509_STORE_add_crl" );
481
494
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
+
482
500
return self ;
483
501
}
484
502
0 commit comments