]> WPIA git - cassiopeia.git/blobdiff - src/apps/client.cpp
add: Full CRL tranfer (non-chunked)
[cassiopeia.git] / src / apps / client.cpp
index 6e21d6e7f8e18742871cd03249547a58b7149e23..2f0480f7f8a59669f019d717b48022df580ed40a 100644 (file)
@@ -4,15 +4,16 @@
 #include <iostream>
 #include <fstream>
 #include <streambuf>
+#include <unordered_map>
 
-#include "database.h"
-#include "mysql.h"
-#include "simpleOpensslSigner.h"
+#include "db/database.h"
+#include "db/mysql.h"
+#include "crypto/simpleOpensslSigner.h"
+#include "crypto/remoteSigner.h"
+#include "crypto/sslUtil.h"
 #include "util.h"
-#include "bios.h"
-#include "slipBio.h"
-#include "remoteSigner.h"
-#include "sslUtil.h"
+#include "io/bios.h"
+#include "io/slipBio.h"
 #include "config.h"
 
 #ifdef NO_DAEMON
 #endif
 
 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 = keyDir;
-    mkdir( filename.c_str(), 0755 );
-    filename += "/crt";
-    mkdir( filename.c_str(), 0755 );
-    filename += "/" + std::to_string( serial / 1000 );
-    mkdir( filename.c_str(), 0755 );
-    filename += "/" + std::to_string( serial ) + ".crt";
-    writeFile( filename, cert );
-    std::cout << "wrote to " << filename << std::endl;
-    return filename;
-}
+extern std::unordered_map<std::string, std::shared_ptr<CAConfig>> CAs;
 
 int main( int argc, const char* argv[] ) {
     ( void ) argc;
@@ -130,7 +118,7 @@ int main( int argc, const char* argv[] ) {
 
                 log << "FINE: CERTIFICATE LOG: " << res->log << std::endl;
                 log << "FINE: CERTIFICATE:" << std::endl << res->certificate << std::endl;
-                std::string fn = writeBackFile( atoi( job->target.c_str() ), res->certificate );
+                std::string fn = writeBackFile( job->target.c_str(), res->certificate, keyDir );
                 res->crt_name = fn;
                 jp->writeBack( job, res );
                 log << "FINE: signing done." << std::endl;
@@ -153,8 +141,18 @@ int main( int argc, const char* argv[] ) {
             } catch( std::string c ) {
                 log << "ERROR: " << c << std::endl;
             }
+        } else if( job->task == "revoke" ) {
+            std::cout << "Revoking!" << std::endl;
+
+            for( auto& x : CAs ) {
+                std::cout << " [" << x.first << ']' << std::endl;
+            }
+
+            sign->revoke( CAs.at( "unassured" ), "12345" );
+            jp->finishJob( job );
         } else {
             log << "Unknown job type" << job->task << std::endl;
+            jp->failJob( job );
         }
 
         if( !DAEMON || once ) {