aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJack Lloyd <[email protected]>2019-05-27 21:59:25 -0400
committerJack Lloyd <[email protected]>2019-05-27 23:48:13 -0400
commit5ace2aa4cf7182a5879fa4d9788a6806e86871f9 (patch)
tree9e607388462985e32c6941c7d5b65290e2c745e7
parent1d283a6f9e995d750b6d1801b5b64186d8b56f7b (diff)
Fix problem in TLS message parsing tests
This started failing due to use of store_be in Buffered_Computation::update_be in this PR. The hello request cookie generation depended on the size of size_t, however the lib code and test had the same bug so it was missed. Force the lengths to be 64 bit.
-rw-r--r--src/lib/tls/msg_hello_verify.cpp4
-rw-r--r--src/tests/test_tls_messages.cpp4
2 files changed, 4 insertions, 4 deletions
diff --git a/src/lib/tls/msg_hello_verify.cpp b/src/lib/tls/msg_hello_verify.cpp
index af5349c1c..648ca1a4e 100644
--- a/src/lib/tls/msg_hello_verify.cpp
+++ b/src/lib/tls/msg_hello_verify.cpp
@@ -38,9 +38,9 @@ Hello_Verify_Request::Hello_Verify_Request(const std::vector<uint8_t>& client_he
std::unique_ptr<MessageAuthenticationCode> hmac(MessageAuthenticationCode::create("HMAC(SHA-256)"));
hmac->set_key(secret_key);
- hmac->update_be(client_hello_bits.size());
+ hmac->update_be(static_cast<uint64_t>(client_hello_bits.size()));
hmac->update(client_hello_bits);
- hmac->update_be(client_identity.size());
+ hmac->update_be(static_cast<uint64_t>(client_identity.size()));
hmac->update(client_identity);
m_cookie = unlock(hmac->final());
diff --git a/src/tests/test_tls_messages.cpp b/src/tests/test_tls_messages.cpp
index a79f5b42e..f176839db 100644
--- a/src/tests/test_tls_messages.cpp
+++ b/src/tests/test_tls_messages.cpp
@@ -35,8 +35,8 @@ Test::Result test_hello_verify_request()
// Compute HMAC
std::unique_ptr<Botan::MessageAuthenticationCode> hmac(Botan::MessageAuthenticationCode::create("HMAC(SHA-256)"));
hmac->set_key(sk);
- hmac->update_be(size_t(0));
- hmac->update_be(size_t(0));
+ hmac->update_be(uint64_t(0)); // length of client hello
+ hmac->update_be(uint64_t(0)); // length of client identity
std::vector<uint8_t> test = unlock(hmac->final());
result.test_eq("Cookie comparison", hfr.cookie(), test);