From 83c3c046ae276506bb5236081b5d55c14e7e6938 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Felix=20D=C3=B6rre?= Date: Tue, 23 Dec 2014 13:47:05 +0100 Subject: [PATCH] upd: move more code to remoteSigner --- src/recordHandler.cpp | 16 ++++++++++++++-- src/remoteSigner.cpp | 32 +++++++++++++++++++++++++++++--- test/src/slipBioTest.cpp | 16 ++++++++-------- 3 files changed, 51 insertions(+), 13 deletions(-) diff --git a/src/recordHandler.cpp b/src/recordHandler.cpp index ab9c322..7c633d7 100644 --- a/src/recordHandler.cpp +++ b/src/recordHandler.cpp @@ -14,6 +14,7 @@ #include "database.h" #include "record.h" #include "opensslBIO.h" +#include "remoteSigner.h" #include "simpleOpensslSigner.h" #include "slipBio.h" @@ -47,7 +48,6 @@ std::shared_ptr generateSSLContext( bool server ) { std::shared_ptr cert_names( SSL_load_client_CA_file( "testdata/server.crt" ), []( STACK_OF( X509_NAME ) *st ) { - std::cout << "freeing" << std::endl; sk_X509_NAME_free( st ); } ); @@ -266,6 +266,9 @@ void setupSerial( FILE* f ) { attr.c_cflag &= ~( CSIZE | PARENB ); attr.c_cflag |= CS8; + cfsetispeed( &attr, B115200 ); + cfsetospeed( &attr, B115200 ); + if( tcsetattr( fileno( f ), TCSANOW, &attr ) ) { throw "failed to get attrs"; } @@ -316,9 +319,18 @@ int handlermain( int argc, const char* argv[] ) { cert->csr_content = data; cert->md = "sha256"; cert->profile = "1"; + std::shared_ptr ava( new AVA() ); + ava->name = "CN"; + ava->value = "Dummy user certificates"; + cert->AVAs.push_back( ava ); + std::shared_ptr san( new SAN() ); + san->type = "DNS"; + san->content = "n42.example.com"; + cert->SANs.push_back( san ); auto res = sign->sign( cert ); - std::cout << "sent things" << std::endl; + std::cout << "log: " << res->log << std::endl; + std::cout << "cert things: " << res->certificate << std::endl; return 0; } 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(); diff --git a/test/src/slipBioTest.cpp b/test/src/slipBioTest.cpp index 48578c4..eef8fbb 100644 --- a/test/src/slipBioTest.cpp +++ b/test/src/slipBioTest.cpp @@ -158,16 +158,16 @@ BOOST_AUTO_TEST_CASE( TestSSLThroughSLIP ) { BOOST_CHECK_EQUAL( res, 5 ); BOOST_CHECK_EQUAL_COLLECTIONS( data, data + 5, data2, data2 + 5 ); - BIO_free(c_bio); - BIO_free(s_bio); + BIO_free( c_bio ); + BIO_free( s_bio ); - BIO_free(slip1); - BIO_free(slip2); - SSL_free(c_ssl); - SSL_free(s_ssl); + BIO_free( slip1 ); + BIO_free( slip2 ); + SSL_free( c_ssl ); + SSL_free( s_ssl ); - SSL_CTX_free(c_ctx); - SSL_CTX_free(s_ctx); + SSL_CTX_free( c_ctx ); + SSL_CTX_free( s_ctx ); } BOOST_AUTO_TEST_SUITE_END() -- 2.47.3