]> WPIA git - cassiopeia.git/blobdiff - src/slipBio.cpp
chg: Tamper with the signature more efficiently
[cassiopeia.git] / src / slipBio.cpp
index 5baae773cb55f084e3a9d99b414b83489031961c..da1253a6b1aa04695f8a297f6f447a337ff63077 100644 (file)
@@ -1,8 +1,10 @@
 #include "slipBio.h"
 
+#include <unistd.h>
+
 #include <iostream>
 
-#include <unistd.h>
+#define BUFFER_SIZE 8192
 
 char hexDigit( char c ) {
     if( c < 0 ) {
@@ -21,27 +23,23 @@ char hexDigit( char c ) {
 }
 
 std::string toHex( const char* buf, int len ) {
-    char* c = ( char* ) malloc( len * 2 );
-
-    if( !c ) {
-        return "<malloc fail>";
-    }
-
-    std::shared_ptr<char> mem = std::shared_ptr<char>( c, free );
+    std::string data = "000000";
 
     for( int i = 0; i < len; i++ ) {
-        c[i * 2] = hexDigit( ( buf[i] >> 4 ) & 0xF );
-        c[i * 2 + 1] = hexDigit( buf[i] & 0xF );
+        data.append( 1, ' ' );
+        data.append( 1, hexDigit( ( buf[i] >> 4 ) & 0xF ) );
+        data.append( 1, hexDigit( buf[i] & 0xF ) );
     }
 
-    return std::string( mem.get(), len * 2 );
+    return data;
 }
 
 SlipBIO::SlipBIO() {
-    this->buffer = std::vector<char>( 4096 );
+    this->buffer = std::vector<char>( BUFFER_SIZE );
     this->decodeTarget = 0;
     this->decodePos = 0;
     this->rawPos = 0;
+    this->failed = false;
 }
 
 void SlipBIO::setTarget( std::shared_ptr<OpensslBIO> target ) {
@@ -50,7 +48,8 @@ void SlipBIO::setTarget( std::shared_ptr<OpensslBIO> target ) {
 
 SlipBIO::SlipBIO( std::shared_ptr<OpensslBIO> target ) {
     this->target = target;
-    this->buffer = std::vector<char>( 4096 );
+
+    this->buffer = std::vector<char>( BUFFER_SIZE );
     this->decodeTarget = 0;
     this->decodePos = 0;
     this->rawPos = 0;
@@ -61,6 +60,7 @@ SlipBIO::SlipBIO( std::shared_ptr<OpensslBIO> target ) {
 SlipBIO::~SlipBIO() {}
 
 int SlipBIO::write( const char* buf, int num ) {
+    std::cout << "Out: " << toHex( buf, num ) << std::endl;
     int badOnes = 0;
 
     for( int i = 0; i < num; i++ ) {