X-Git-Url: https://code.wpia.club/?a=blobdiff_plain;f=src%2Fio%2Frecord.h;h=6c2df6590683d8f480fb286c95a715de90a63251;hb=HEAD;hp=88576651ea574c25c2c7f2ebf83ad44e8ec6d5f1;hpb=f69f31caeda734d6d9c8ab00e693671ac7512bea;p=cassiopeia.git diff --git a/src/io/record.h b/src/io/record.h index 8857665..6c2df65 100644 --- a/src/io/record.h +++ b/src/io/record.h @@ -4,8 +4,9 @@ #include #include - +#include #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 static void append( std::string& str, T val ) { - str.append( ( char* ) &val, sizeof( T ) ); + str.append( ( char * ) &val, sizeof( T ) ); } template 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 log ); +std::string parseCommand( RecordHeader& head, const std::string& input ); +std::string parseCommandChunked( RecordHeader& head, std::shared_ptr conn ); -void sendCommand( RecordHeader& head, const std::string& data, std::shared_ptr bio, std::shared_ptr log ); +void sendCommand( RecordHeader& head, const std::string& data, std::shared_ptr bio );