}
void CRL::sign( std::shared_ptr<CAConfig> ca ) {
+ if(!ca->caKey){
+ throw new std::invalid_argument("Cannot sign CRL with CA " + ca->name + " because it has no private key.");
+ }
+
// Updating necessary CRL props
std::shared_ptr<ASN1_TIME> tmptm( ASN1_TIME_new(), ASN1_TIME_free );
ASN1_BIT_STRING *sig = d2i_ASN1_BIT_STRING( NULL, &buffer, signature.size() + data - buffer );
ASN1_TIME *a1 = d2i_ASN1_TIME( NULL, &buffer, signature.size() + data - buffer );
ASN1_TIME *a2 = d2i_ASN1_TIME( NULL, &buffer, signature.size() + data - buffer );
- auto tmp = *palg;
- *palg = *alg;
- *alg = tmp;
- auto tmp2 = *psig;
- *psig = *sig;
- *sig = tmp2;
+ std::swap(*palg, *alg);
+ std::swap(*psig, *sig);
X509_CRL_set1_lastUpdate( crl.get(), a1);
X509_CRL_set1_nextUpdate( crl.get(), a2);