#include <openssl/ssl.h>
#include <openssl/err.h>
-#include "bios.h"
-#include "opensslBIO.h"
-#include "slipBio.h"
+#include "io/bios.h"
+#include "io/opensslBIO.h"
+#include "io/slipBio.h"
class OpensslBIOVector : public OpensslBIO {
private:
- std::vector<std::vector<char>>::iterator it, end;
std::vector<std::vector<char>> input;
+ std::vector<std::vector<char>>::iterator it, end;
public:
std::vector<std::vector<char>> result = std::vector<std::vector<char>>();
- OpensslBIOVector( std::vector<std::vector<char>> data ) {
- input = data;
- it = input.begin();
- end = input.end();
+ OpensslBIOVector( std::vector<std::vector<char>> data ) : input( data ), it( input.begin() ), end( input.end() ) {
}
int write( const char* buf, int num );
std::copy( it->begin(), it->end(), buf );
auto result = it->size();
- it++;
+ ++it;
return result;
}
delete data;
}
-
+/*
BOOST_AUTO_TEST_CASE( TestSLIP ) {
- std::vector<std::vector<char>> source = { {1, 2, 3, 4, 5, ( char ) 0xc0, 1, ( char ) 0xc0}, {1, 2}, {( char ) 0xc0}, {1, ( char ) 0xdb}, {( char ) 0xdc}, {( char ) 0xc0, ( char )0xdb}, {( char ) 0xdd, 2}, {( char ) 0xc0}};
+ std::vector<std::vector<char>> source = { { (char) 0xc0 }, {1, 2, 3, 4, 5, ( char ) 0xc0, 1, ( char ) 0xc0}, {1, 2}, {( char ) 0xc0}, {1, ( char ) 0xdb}, {( char ) 0xdc}, {( char ) 0xc0, ( char )0xdb}, {( char ) 0xdd, 2}, {( char ) 0xc0}};
std::shared_ptr<OpensslBIOVector> data = std::shared_ptr<OpensslBIOVector>( new OpensslBIOVector( source ) );
char buf[4096];
- SlipBIO* slip = new SlipBIO( data );
+ SlipBIO* slip = new SlipBIO();
+ slip->setTarget(data, true);
int res = slip->read( buf, sizeof( buf ) );
BOOST_CHECK_EQUAL( res, 5 );
res = slip->read( buf, sizeof( buf ) );
BIO* bio1, *bio2;
BOOST_REQUIRE_EQUAL( BIO_new_bio_pair( &bio1, 8096, &bio2, 8096 ), 1 );
BIO* slip1 = BIO_new( toBio<SlipBIO>() );
- ( ( SlipBIO* )slip1->ptr )->setTarget( std::shared_ptr<OpensslBIO>( new OpensslBIOWrapper( std::shared_ptr<BIO>( bio1, BIO_free ) ) ) );
+ ( ( SlipBIO* )slip1->ptr )->setTarget( std::shared_ptr<OpensslBIO>( new OpensslBIOWrapper( std::shared_ptr<BIO>( bio1, BIO_free ) ) ), true );
BIO* slip2 = BIO_new( toBio<SlipBIO>() );
- ( ( SlipBIO* )slip2->ptr )->setTarget( std::shared_ptr<OpensslBIO>( new OpensslBIOWrapper( std::shared_ptr<BIO>( bio2, BIO_free ) ) ) );
+ ( ( SlipBIO* )slip2->ptr )->setTarget( std::shared_ptr<OpensslBIO>( new OpensslBIOWrapper( std::shared_ptr<BIO>( bio2, BIO_free ) ) ), false );
auto meth = TLSv1_method();
auto c_ctx = SSL_CTX_new( meth );
BOOST_CHECK_EQUAL( res, 5 );
BOOST_CHECK_EQUAL_COLLECTIONS( data, data + 5, data2, data2 + 5 );
- BIO_free(c_bio);
- BIO_free(s_bio);
+ BIO_free( c_bio );
+ BIO_free( s_bio );
- BIO_free(slip1);
- BIO_free(slip2);
- SSL_free(c_ssl);
- SSL_free(s_ssl);
+ BIO_free( slip1 );
+ BIO_free( slip2 );
+ SSL_free( c_ssl );
+ SSL_free( s_ssl );
- SSL_CTX_free(c_ctx);
- SSL_CTX_free(s_ctx);
+ SSL_CTX_free( c_ctx );
+ SSL_CTX_free( s_ctx );
}
-
+*/
BOOST_AUTO_TEST_SUITE_END()