]> WPIA git - cassiopeia.git/blobdiff - src/io/record.h
fix: use correct prepared statement for writing logs
[cassiopeia.git] / src / io / record.h
index 88576651ea574c25c2c7f2ebf83ad44e8ec6d5f1..6c2df6590683d8f480fb286c95a715de90a63251 100644 (file)
@@ -4,8 +4,9 @@
 
 #include <memory>
 #include <string>
-
+#include <exception>
 #include "bios.h"
+#include "io/opensslBIO.h"
 
 #define RECORD_HEADER_SIZE 17
 
@@ -18,6 +19,7 @@ public:
         SET_PROFILE = 0x11,
         SET_WISH_FROM = 0x12,
         SET_WISH_TO = 0x13,
+        SET_OCSP_TARGET_CA = 0x14,
         ADD_SAN = 0x18,
         ADD_AVA = 0x19,
         ADD_PROOF_LINE = 0x40,
@@ -53,16 +55,16 @@ public:
 
     template <class T>
     static void append( std::string& str, T val ) {
-        str.append( ( char* ) &val, sizeof( T ) );
+        str.append( ( char * ) &val, sizeof( T ) );
     }
 
     template <class T>
     static void read( std::string::const_iterator& it, T& val ) {
         union typeConversion {
-            char buf[sizeof(T)];
+            char buf[sizeof( T )];
             T value;
 
-            typeConversion(const T& v) : value(v) {}
+            typeConversion( const T& v ) : value( v ) {}
         };
 
         typeConversion data( 0 );
@@ -89,7 +91,7 @@ public:
 
     void unpackFromString( const std::string& str ) {
         if( str.size() != RECORD_HEADER_SIZE ) {
-            throw "Invalid string length";
+            throw std::runtime_error( "Invalid string length" );
         }
 
         auto it =  str.cbegin();
@@ -101,9 +103,12 @@ public:
         read( it, offset );
         read( it, payloadLength );
     }
-
+    bool isFollowupOf( const RecordHeader& head ) {
+        return head.command == command && head.flags == flags && head.sessid == sessid && head.command_count == command_count && head.totalLength == totalLength && head.offset + 1 == offset;
+    }
 };
 
-std::string parseCommand( RecordHeader& head, const std::string& input, std::shared_ptr<std::ostream> log );
+std::string parseCommand( RecordHeader& head, const std::string& input );
+std::string parseCommandChunked( RecordHeader& head, std::shared_ptr<OpensslBIOWrapper> conn );
 
-void sendCommand( RecordHeader& head, const std::string& data, std::shared_ptr<OpensslBIO> bio, std::shared_ptr<std::ostream> log );
+void sendCommand( RecordHeader& head, const std::string& data, std::shared_ptr<OpensslBIO> bio );