]> WPIA git - cassiopeia.git/commitdiff
upd: make serial path configurable
authorFelix Dörre <felix@dogcraft.de>
Mon, 29 Dec 2014 12:34:14 +0000 (13:34 +0100)
committerBenny Baumann <BenBE@geshi.org>
Sat, 24 Jan 2015 17:25:38 +0000 (18:25 +0100)
src/apps/client.cpp
src/apps/signer.cpp
src/config.cpp
src/recordHandler.cpp
src/sslUtil.cpp
src/sslUtil.h

index be31bc2201fdac4305108b1c39298141961a0dc2..fabd221089e2d3e0a7ccad327e5c2a162ea0a66d 100644 (file)
@@ -24,6 +24,7 @@
 extern std::string keyDir;
 extern std::vector<Profile> profiles;
 extern std::string sqlHost, sqlUser, sqlPass, sqlDB;
+extern std::string serialPath;
 
 std::string writeBackFile( uint32_t serial, std::string cert ) {
     std::string filename = "keys";
@@ -38,8 +39,6 @@ std::string writeBackFile( uint32_t serial, std::string cert ) {
     return filename;
 }
 
-int handlermain( int argc, const char* argv[] );
-
 int main( int argc, const char* argv[] ) {
     ( void ) argc;
     ( void ) argv;
@@ -61,12 +60,13 @@ int main( int argc, const char* argv[] ) {
         return -1;
     }
 
-    if( argc == 0 ) {
-        return handlermain( argc, argv );
+    if( serialPath == "" ) {
+        std::cout << "Error: no serial device is given" << std::endl;
+        return -1;
     }
 
     std::shared_ptr<JobProvider> jp( new MySQLJobProvider( sqlHost, sqlUser, sqlPass, sqlDB ) );
-    std::shared_ptr<BIO> b = openSerial( "/dev/ttyUSB0" );
+    std::shared_ptr<BIO> b = openSerial( serialPath );
     std::shared_ptr<BIO> slip1( BIO_new( toBio<SlipBIO>() ), BIO_free );
     ( ( SlipBIO* )slip1->ptr )->setTarget( std::shared_ptr<OpensslBIO>( new OpensslBIOWrapper( b ) ) );
     std::shared_ptr<RemoteSigner> sign( new RemoteSigner( slip1, generateSSLContext( false ) ) );
index 551f13f7866ebed0509f73c184cfaab8fa1d5af4..1e1a5894fc59e6da66384ab1c714c7a3196100dd 100644 (file)
@@ -21,6 +21,9 @@
 
 int handlermain( int argc, const char* argv[] );
 
+extern std::string serialPath;
+extern std::vector<Profile> profiles;
+
 int main( int argc, const char* argv[] ) {
     ( void ) argc;
     ( void ) argv;
@@ -38,5 +41,26 @@ int main( int argc, const char* argv[] ) {
         return -1;
     }
 
-    return handlermain( argc, argv );
+    std::shared_ptr<int> ssl_lib = ssl_lib_ref;
+
+    if( serialPath == "" ) {
+        std::cout << "Error: no serial device is given" << std::endl;
+        return -1;
+    }
+
+    std::shared_ptr<BIO> conn = openSerial( serialPath );
+    std::shared_ptr<BIO> slip1( BIO_new( toBio<SlipBIO>() ), BIO_free );
+    ( ( SlipBIO* )slip1->ptr )->setTarget( std::shared_ptr<OpensslBIO>( new OpensslBIOWrapper( conn ) ) );
+
+    try {
+        DefaultRecordHandler* dh = new DefaultRecordHandler( std::shared_ptr<Signer>( new SimpleOpensslSigner( profiles[5] ) ), slip1 );
+
+        while( true ) {
+            dh->handle();
+        }
+    } catch( char const* ch ) {
+        std::cout << "Exception: " << ch << std::endl;
+    }
+
+    return -1;
 }
index a9407f8c163d1689431e09fb19aea7750dca14f8..5556e9331a6ad35069e08424498d5b754a59de73 100644 (file)
@@ -7,6 +7,7 @@
 std::string keyDir;
 std::vector<Profile> profiles;
 std::string sqlHost, sqlUser, sqlPass, sqlDB;
+std::string serialPath;
 
 int parseConfig( std::string path ) {
     std::ifstream config;
@@ -45,9 +46,9 @@ int parseConfig( std::string path ) {
             sqlPass = value;
         } else if( key == "sql.database" ) {
             sqlDB = value;
-        }
-
-        if( key.compare( 0, 8, "profile." ) == 0 ) {
+        } else if( key == "serialPath" ) {
+            serialPath = value;
+        } else  if( key.compare( 0, 8, "profile." ) == 0 ) {
             int numE = key.find( ".", 9 );
 
             if( numE == 0 ) {
index 7da2cda0c8d727875286e2cb6100809ac9f66004..f259fba020a15fc10bb1e657523d13172d1bae04 100644 (file)
@@ -176,71 +176,3 @@ void DefaultRecordHandler::handle() {
 
     currentSession->work();
 }
-
-int handlermain( int argc, const char* argv[] ) {
-    ( void ) argc;
-    ( void ) argv;
-
-    std::shared_ptr<OpensslBIOWrapper> bio( new OpensslBIOWrapper( std::shared_ptr<BIO>( BIO_new_fd( 0, 0 ), BIO_free ) ) );
-    std::string data =
-        "-----BEGIN CERTIFICATE REQUEST-----\n"
-        "MIIBSzCBtQIBADAMMQowCAYDVQQDDAFhMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCB\n"
-        "iQKBgQDerBEpIShJlx3zzl4AOS1NcwEg4iAWknQeTtI8B5dnk+l5HkOdTxqeehZn\n"
-        "iZnuIuYXA+JWmoECg/w69+N5zw2BabelgK3cSvRqycwPEU/gceGJZTaBfkkN0hBk\n"
-        "rpXDiLSlox5oeR150MrsHvVc+W2e+0jW1tuhz4QLzn8/uI/toQIDAQABoAAwDQYJ\n"
-        "KoZIhvcNAQELBQADgYEATQU5VrgQAkvpCvIwRUyjj9YAa9E014tNY0jMcBdv95fy\n"
-        "/f49zIcVtUJuZuEwY6uDZQqfAm+8CLNpOCICH/Qw7YOe+s/Yw7a8rk5VqLtgxR4M\n"
-        "z6DUeVL0zYFoLUxIje9yDU3pWmPvyVaBPdo0DguZwFMfiWwzhkUDeQgyeaiMvQA=\n"
-        "-----END CERTIFICATE REQUEST-----";
-
-    RecordHeader head;
-    head.flags = 0;
-    head.sessid = 13;
-
-    //---
-
-    std::shared_ptr<int> ssl_lib = ssl_lib_ref;
-
-    if( argc >= 2 ) {
-        std::shared_ptr<BIO> b = openSerial( "/dev/ttyUSB0" );
-        std::shared_ptr<BIO> slip1( BIO_new( toBio<SlipBIO>() ), BIO_free );
-        ( ( SlipBIO* )slip1->ptr )->setTarget( std::shared_ptr<OpensslBIO>( new OpensslBIOWrapper( b ) ) );
-        std::shared_ptr<RemoteSigner> sign( new RemoteSigner( slip1, generateSSLContext( false ) ) );
-
-        std::shared_ptr<TBSCertificate> cert( new TBSCertificate() );
-        cert->csr_type = "csr";
-        cert->csr_content = data;
-        cert->md = "sha256";
-        cert->profile = "1";
-        std::shared_ptr<AVA> ava( new AVA() );
-        ava->name = "CN";
-        ava->value = "Dummy user certificates";
-        cert->AVAs.push_back( ava );
-        std::shared_ptr<SAN> san( new SAN() );
-        san->type = "DNS";
-        san->content = "n42.example.com";
-        cert->SANs.push_back( san );
-
-        auto res = sign->sign( cert );
-        std::cout << "log: " << res->log << std::endl;
-        std::cout << "cert things: " << res->certificate << std::endl;
-        return 0;
-    }
-
-    std::shared_ptr<BIO> conn = openSerial( "/dev/ttyS0" );
-    std::shared_ptr<BIO> slip1( BIO_new( toBio<SlipBIO>() ), BIO_free );
-
-    ( ( SlipBIO* )slip1->ptr )->setTarget( std::shared_ptr<OpensslBIO>( new OpensslBIOWrapper( conn ) ) );
-
-    try {
-        DefaultRecordHandler* dh = new DefaultRecordHandler( std::shared_ptr<Signer>( new SimpleOpensslSigner( profiles[0] ) ), slip1 );
-
-        while( true ) {
-            dh->handle();
-        }
-    } catch( char const* ch ) {
-        std::cout << "Exception: " << ch << std::endl;
-    }
-
-    return 0;
-}
index db50f2d46918600e1a645b09aeb2588ef47ac948..414bf3a3c32faa126dc753bbc6f7b21564ed610f 100644 (file)
@@ -159,8 +159,8 @@ void setupSerial( FILE* f ) {
     }
 }
 
-std::shared_ptr<BIO> openSerial( const char* name ) {
-    FILE* f = fopen( name, "r+" );
+std::shared_ptr<BIO> openSerial( const std::string name ) {
+    FILE* f = fopen( name.c_str(), "r+" );
 
     if( !f ) {
         std::cout << "Opening serial device failed" << std::endl;
index 469197d70c7a8b9b65b7bceb34e8cf7f9b8e613b..2bffc1427a491f2bf5263156ee9f684f75e58766 100644 (file)
@@ -1,6 +1,7 @@
 #pragma once
 #include <openssl/ssl.h>
 #include <memory>
+#include <string>
 
 struct Profile {
     std::string cert;
@@ -18,4 +19,4 @@ std::shared_ptr<X509> loadX509FromFile( std::string filename );
 std::shared_ptr<EVP_PKEY> loadPkeyFromFile( std::string filename );
 
 std::shared_ptr<SSL_CTX> generateSSLContext( bool server );
-std::shared_ptr<BIO> openSerial( const char* name );
+std::shared_ptr<BIO> openSerial( const std::string name );