]> WPIA git - cassiopeia.git/blobdiff - src/io/recordHandler.cpp
fix: a bug where only serial repeated after 0xF
[cassiopeia.git] / src / io / recordHandler.cpp
index abac9a53b7ec8034f29424f0af7969c749e8110d..b79d3cc144b96d2c70d210306e989c7846e9792e 100644 (file)
@@ -167,6 +167,7 @@ public:
 
         case RecordHeader::SignerCommand::LOG_SAVED:
             if( result ) {
+                respondCommand( RecordHeader::SignerResult::SIGNING_CA, result->ca_name );
                 respondCommand( RecordHeader::SignerResult::CERTIFICATE, result->certificate );
             }
 
@@ -201,9 +202,19 @@ public:
 
             auto reqCA = CAs.at( ca );
             ( *log ) << "CA found" << std::endl;
-            std::shared_ptr<CRL> crl = signer->revoke( reqCA, serial );
+            std::shared_ptr<CRL> crl;
+            std::string date;
+            std::tie<std::shared_ptr<CRL>, std::string>( crl, date ) = signer->revoke( reqCA, serial );
 
-            respondCommand( RecordHeader::SignerResult::REVOKED, crl->toString() );
+            respondCommand( RecordHeader::SignerResult::REVOKED, date + crl->getSignature() );
+
+            break;
+        }
+
+        case RecordHeader::SignerCommand::GET_FULL_CRL: {
+            auto ca = CAs.at( data );
+            CRL c( ca->path + "/ca.crl" );
+            respondCommand( RecordHeader::SignerResult::FULL_CRL, c.toString() );
 
             if( !SSL_shutdown( ssl.get() ) && !SSL_shutdown( ssl.get() ) ) {
                 ( *log ) << "ERROR: SSL close failed" << std::endl;