X-Git-Url: https://code.wpia.club/?p=cassiopeia.git;a=blobdiff_plain;f=src%2Fio%2FrecordHandler.cpp;fp=src%2Fio%2FrecordHandler.cpp;h=8dc105ee737f7ee0a1cb8c14c6ab87476e4636b8;hp=2eb8358a567c55f19c117c231f6fc8ca8c1c28c3;hb=da9f337a893bd317460118f89efa83a3427f797f;hpb=23987db96db7962a6ee58d1aeda2bd87780ca579 diff --git a/src/io/recordHandler.cpp b/src/io/recordHandler.cpp index 2eb8358..8dc105e 100644 --- a/src/io/recordHandler.cpp +++ b/src/io/recordHandler.cpp @@ -34,7 +34,7 @@ public: std::shared_ptr ssl; std::shared_ptr io; - DefaultRecordHandler* parent; + DefaultRecordHandler *parent; std::shared_ptr signer; std::unique_ptr logFile; @@ -43,7 +43,7 @@ public: logger::logger_set logger; - RecordHandlerSession( DefaultRecordHandler* parent, std::shared_ptr signer, std::shared_ptr ctx, std::shared_ptr output ) : + RecordHandlerSession( DefaultRecordHandler *parent, std::shared_ptr signer, std::shared_ptr ctx, std::shared_ptr output ) : tbs( std::make_shared() ), logFile( openLogfile( "logs/log_" + timestamp() ) ), logger{ std::cout, *logFile } { @@ -113,35 +113,33 @@ public: tbs->wishTo = data; break; - case RecordHeader::SignerCommand::ADD_SAN: - { - size_t pos = data.find( "," ); - - if( pos == std::string::npos ) { - // error - } else { - auto san = std::make_shared(); - san->type = data.substr( 0, pos ); - san->content = data.substr( pos + 1 ); - tbs->SANs.push_back( san ); - } - } - break; + case RecordHeader::SignerCommand::ADD_SAN: { + size_t pos = data.find( "," ); - case RecordHeader::SignerCommand::ADD_AVA: - { - size_t pos = data.find( "," ); - - if( pos == std::string::npos ) { - // error - } else { - auto ava = std::make_shared(); - ava->name = data.substr( 0, pos ); - ava->value = data.substr( pos + 1 ); - tbs->AVAs.push_back( ava ); - } + if( pos == std::string::npos ) { + // error + } else { + auto san = std::make_shared(); + san->type = data.substr( 0, pos ); + san->content = data.substr( pos + 1 ); + tbs->SANs.push_back( san ); } - break; + } + break; + + case RecordHeader::SignerCommand::ADD_AVA: { + size_t pos = data.find( "," ); + + if( pos == std::string::npos ) { + // error + } else { + auto ava = std::make_shared(); + ava->name = data.substr( 0, pos ); + ava->value = data.substr( pos + 1 ); + tbs->AVAs.push_back( ava ); + } + } + break; case RecordHeader::SignerCommand::ADD_PROOF_LINE: break; @@ -176,37 +174,37 @@ public: serials.push_back( data ); break; - case RecordHeader::SignerCommand::REVOKE: - { - logger::note("Revoking: ", data); - std::string ca = data; - auto reqCA = CAs.at( ca ); - logger::note( "CA found in recordHandler" ); - std::shared_ptr crl; - std::string date; - std::tie( crl, date ) = signer->revoke( reqCA, serials ); - - respondCommand( RecordHeader::SignerResult::REVOKED, date + crl->getSignature() ); - } - break; + case RecordHeader::SignerCommand::REVOKE: { + logger::note( "Revoking: ", data ); + std::string ca = data; + auto reqCA = CAs.at( ca ); + logger::note( "CA found in recordHandler" ); + std::shared_ptr crl; + std::string date; + std::tie( crl, date ) = signer->revoke( reqCA, serials ); + + respondCommand( RecordHeader::SignerResult::REVOKED, date + crl->getSignature() ); + } + break; + + case RecordHeader::SignerCommand::GET_FULL_CRL: { + logger::note( "Requesting full CRL: ", data ); + auto ca = CAs.at( data ); + CRL c( ca->path + "/ca.crl" ); + respondCommand( RecordHeader::SignerResult::FULL_CRL, c.toString() ); - case RecordHeader::SignerCommand::GET_FULL_CRL: - { - logger::note("Requesting full CRL: ", data); - auto ca = CAs.at( data ); - CRL c( ca->path + "/ca.crl" ); - respondCommand( RecordHeader::SignerResult::FULL_CRL, c.toString() ); - - logger::note( "Shutting down SSL" ); - if( !SSL_shutdown( ssl.get() ) && !SSL_shutdown( ssl.get() ) ) { - logger::error( "ERROR: SSL shutdown failed." ); - } - io->ctrl( BIO_CTRL_FLUSH, 0, NULL ); - logger::note( "Shutted down SSL" ); - - parent->reset(); // Connection ended + logger::note( "Shutting down SSL" ); + + if( !SSL_shutdown( ssl.get() ) && !SSL_shutdown( ssl.get() ) ) { + logger::error( "ERROR: SSL shutdown failed." ); } - break; + + io->ctrl( BIO_CTRL_FLUSH, 0, NULL ); + logger::note( "Shutted down SSL" ); + + parent->reset(); // Connection ended + } + break; default: throw std::runtime_error( "Unimplemented" );