]> WPIA git - cassiopeia.git/blobdiff - src/crypto/CRL.cpp
chg: rename package name and all references to it
[cassiopeia.git] / src / crypto / CRL.cpp
index a26c7862d00d192ba61a9f8cd170f1767f02b508..01f8af5320b73def166310920010e24362458b1a 100644 (file)
@@ -58,6 +58,10 @@ std::string CRL::revoke( std::string serial, std::string time ) {
 }
 
 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 );
 
@@ -139,12 +143,8 @@ void CRL::setSignature( std::string signature ) {
     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);