static VALUE ossl_x509crl_set_revoked(VALUE self, VALUE ary) { X509_CRL *crl; X509_REVOKED *rev; STACK_OF(X509_REVOKED) *sk; long i; Check_Type(ary, T_ARRAY); /* All ary members should be X509 Revoked */ for (i=0; i<RARRAY_LEN(ary); i++) { OSSL_Check_Kind(RARRAY_AREF(ary, i), cX509Rev); } GetX509CRL(self, crl); if ((sk = X509_CRL_get_REVOKED(crl))) { while ((rev = sk_X509_REVOKED_pop(sk))) X509_REVOKED_free(rev); } for (i=0; i<RARRAY_LEN(ary); i++) { rev = DupX509RevokedPtr(RARRAY_AREF(ary, i)); if (!X509_CRL_add0_revoked(crl, rev)) { /* NO DUP - don't free! */ X509_REVOKED_free(rev); ossl_raise(eX509CRLError, "X509_CRL_add0_revoked"); } } X509_CRL_sort(crl); return ary; }
void CA_LIST_ENTRY_free ( CA_LIST_ENTRY *ca ) { if ( !ca ) return; if ( ca->ca_id ) { PKI_log(PKI_LOG_INFO, "MEM::Freeing %s CA config", ca->ca_id ); PKI_Free ( ca->ca_id ); } if ( ca->ca_cert ) PKI_X509_CERT_free ( ca->ca_cert ); if ( ca->cid ) CA_ENTRY_CERTID_free ( ca->cid ); if ( ca->ca_url ) URL_free ( ca->ca_url ); if ( ca->crl_url ) URL_free ( ca->crl_url ); if ( ca->crl_list ) { X509_REVOKED *r = NULL; while ((r = sk_X509_REVOKED_pop ( ca->crl_list )) != NULL) { X509_REVOKED_free ( r ); } } if ( ca->nextUpdate ) PKI_TIME_free ( ca->nextUpdate ); if ( ca->lastUpdate ) PKI_TIME_free ( ca->lastUpdate ); if ( ca->token_name ) PKI_Free ( ca->token_name ); if ( ca->token ) PKI_TOKEN_free ( ca->token ); PKI_Free ( ca ); return; }