X-Git-Url: https://code.wpia.club/?a=blobdiff_plain;f=src%2Fio%2FrecordHandler.cpp;h=b79d3cc144b96d2c70d210306e989c7846e9792e;hb=7f424efc9d4ebbb89ce4e6bee10ca8ec839f29d8;hp=93990b0c1d6f447d2696140c97f7f09bb7bc019b;hpb=9e866a1a2facc8cb1565cd660c6b6d482f18ecb1;p=cassiopeia.git diff --git a/src/io/recordHandler.cpp b/src/io/recordHandler.cpp index 93990b0..b79d3cc 100644 --- a/src/io/recordHandler.cpp +++ b/src/io/recordHandler.cpp @@ -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,16 +202,19 @@ public: auto reqCA = CAs.at( ca ); ( *log ) << "CA found" << std::endl; - std::shared_ptr crl = signer->revoke( reqCA, serial ); + std::shared_ptr crl; + std::string date; + std::tie, std::string>( crl, date ) = signer->revoke( reqCA, serial ); - std::shared_ptr mem( BIO_new( BIO_s_mem() ), BIO_free ); + respondCommand( RecordHeader::SignerResult::REVOKED, date + crl->getSignature() ); - PEM_write_bio_X509_CRL( mem.get(), crl.get() ); - BUF_MEM* bptr; - BIO_get_mem_ptr( mem.get(), &bptr ); + break; + } - std::string newCRL( bptr->data, bptr->length ); - respondCommand( RecordHeader::SignerResult::REVOKED, newCRL ); + 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;