Fixed diffie-hellman shared key computation

This commit is contained in:
Peter Conrad 2018-05-10 15:24:04 +02:00
parent ccc213b72d
commit f0dfc64261
2 changed files with 9 additions and 8 deletions

View file

@ -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;
}

View file

@ -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() );