X-Git-Url: https://code.wpia.club/?a=blobdiff_plain;f=src%2FremoteSigner.cpp;fp=src%2FremoteSigner.cpp;h=3415dcf2427b23cc73edc73664c27fec432e5261;hb=83c3c046ae276506bb5236081b5d55c14e7e6938;hp=9cc3a2d858c081e8a896443663c47efe3e9fa3d7;hpb=2c79061a72b54efdcac10b6beca62bf53f7383c8;p=cassiopeia.git diff --git a/src/remoteSigner.cpp b/src/remoteSigner.cpp index 9cc3a2d..3415dcf 100644 --- a/src/remoteSigner.cpp +++ b/src/remoteSigner.cpp @@ -37,8 +37,25 @@ std::shared_ptr RemoteSigner::sign( std::shared_ptrmd ); send( conn, head, RecordHeader::SignerCommand::SET_PROFILE, cert->profile ); - send( conn, head, RecordHeader::SignerCommand::ADD_AVA, "CN,commonName" ); - send( conn, head, RecordHeader::SignerCommand::ADD_SAN, "DNS,*.example.com" ); + + for( auto ava : cert->AVAs ) { + if( ava->name.find( "," ) != std::string::npos ) { + // invalid ava + return std::shared_ptr(); + } + + send( conn, head, RecordHeader::SignerCommand::ADD_AVA, ava->name + "," + ava->value ); + } + + for( auto san : cert->SANs ) { + if( san->type.find( "," ) != std::string::npos ) { + // invalid ava + return std::shared_ptr(); + } + + send( conn, head, RecordHeader::SignerCommand::ADD_SAN, san->type + "," + san->content ); + } + send( conn, head, RecordHeader::SignerCommand::SIGN, "" ); send( conn, head, RecordHeader::SignerCommand::LOG_SAVED, "" ); std::shared_ptr result = std::shared_ptr( new SignedCertificate() ); @@ -49,7 +66,16 @@ std::shared_ptr RemoteSigner::sign( std::shared_ptrread( buffer.data(), buffer.size() ); RecordHeader head; std::string payload = parseCommand( head, std::string( buffer.data(), length ) ); - std::cout << "Data: " << std::endl << payload << std::endl; + + switch( ( RecordHeader::SignerResult ) head.command ) { + case RecordHeader::SignerResult::CERTIFICATE: + result->certificate = payload; + break; + + case RecordHeader::SignerResult::SAVE_LOG: + result->log = payload; + break; + } } catch( const char* msg ) { std::cout << msg << std::endl; return std::shared_ptr();