Fixed diffie-hellman shared key computation
This commit is contained in:
parent
ccc213b72d
commit
f0dfc64261
2 changed files with 9 additions and 8 deletions
|
|
@ -69,8 +69,12 @@ namespace fc {
|
|||
|
||||
ssl_bignum pk;
|
||||
BN_bin2bn( (unsigned char*)buf, s, pk );
|
||||
shared_key.resize( DH_size(dh) );
|
||||
DH_compute_key( (unsigned char*)&shared_key.front(), pk, dh );
|
||||
int est_size = DH_size(dh);
|
||||
shared_key.resize( est_size );
|
||||
int actual_size = DH_compute_key( (unsigned char*)&shared_key.front(), pk, dh );
|
||||
if ( actual_size < 0 ) return false;
|
||||
if ( actual_size != est_size )
|
||||
shared_key.resize( actual_size );
|
||||
|
||||
return true;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -41,14 +41,11 @@ BOOST_AUTO_TEST_CASE(dh_test)
|
|||
BOOST_CHECK( !memcmp( charlie.shared_key.data(), bob.shared_key.data(), bob.shared_key.size() ) );
|
||||
std::vector<char> bob_charlie = charlie.shared_key;
|
||||
|
||||
BOOST_CHECK_EQUAL( alice_bob.size(), alice_charlie.size() );
|
||||
BOOST_CHECK( memcmp( alice_bob.data(), alice_charlie.data(), alice_bob.size() ) );
|
||||
BOOST_CHECK( alice_bob.size() != alice_charlie.size() || memcmp( alice_bob.data(), alice_charlie.data(), alice_bob.size() ) );
|
||||
|
||||
BOOST_CHECK_EQUAL( alice_bob.size(), bob_charlie.size() );
|
||||
BOOST_CHECK( memcmp( alice_bob.data(), bob_charlie.data(), alice_bob.size() ) );
|
||||
BOOST_CHECK( alice_bob.size() != bob_charlie.size() || memcmp( alice_bob.data(), bob_charlie.data(), alice_bob.size() ) );
|
||||
|
||||
BOOST_CHECK_EQUAL( alice_charlie.size(), bob_charlie.size() );
|
||||
BOOST_CHECK( memcmp( alice_charlie.data(), bob_charlie.data(), alice_charlie.size() ) );
|
||||
BOOST_CHECK( alice_charlie.size() != bob_charlie.size() || memcmp( alice_charlie.data(), bob_charlie.data(), alice_charlie.size() ) );
|
||||
|
||||
alice.p.clear(); alice.p.push_back(100); alice.p.push_back(2);
|
||||
BOOST_CHECK( !alice.validate() );
|
||||
|
|
|
|||
Loading…
Reference in a new issue