/* Get the valid time quantisation for our hmac,
* we divide time by handwindow/2 and allow the previous
* and future session time if specified by offset */
- uint32_t session_id_time = now/((handwindow+1)/2) + offset;
+ uint32_t session_id_time = ntohl(now/((handwindow+1)/2) + offset);
hmac_ctx_reset(hmac);
/* We do not care about endian here since it does not need to be
sizeof(session_id_time));
/* add client IP and port */
- switch (af_addr_size(from->addr.sa.sa_family))
+ switch (from->addr.sa.sa_family)
{
case AF_INET:
hmac_ctx_update(hmac, (const uint8_t *) &from->addr.in4, sizeof(struct sockaddr_in));
hmac_ctx_t *hmac = session_id_hmac_init();
struct link_socket_actual from = { 0 };
+ from.dest.addr.sa.sa_family = AF_INET;
+
struct tls_auth_standalone tas = { 0 };
struct tls_pre_decrypt_state state = { 0 };
ASSERT(md_valid("SHA256"));
hmac_ctx_t *hmac_ctx = hmac_ctx_new();
- uint8_t key[SHA256_DIGEST_LENGTH] = {1, 2, 3};
+ uint8_t key[SHA256_DIGEST_LENGTH] = {1, 2, 3, 0};
hmac_ctx_init(hmac_ctx, key, "SHA256");
return hmac_ctx;
hmac_ctx_t *hmac = init_static_hmac();
static const int handwindow = 100;
- struct openvpn_sockaddr addr = {0 };
+ struct openvpn_sockaddr addr = { 0 };
- /* we do not use htons functions here since the hmac calculate function
- * also does not care about the endianness of the data but just assumes
- * the endianness doesn't change between calls */
addr.addr.in4.sin_family = AF_INET;
- addr.addr.in4.sin_addr.s_addr = 0xff000ff;
- addr.addr.in4.sin_port = 1194;
-
+ addr.addr.in4.sin_addr.s_addr = ntohl(0xff000ff);
+ addr.addr.in4.sin_port = ntohs(1195);
struct session_id client_id = { {0, 1, 2, 3, 4, 5, 6, 7}};
now = 1005;
struct session_id server_id = calculate_session_id_hmac(client_id, &addr, hmac, handwindow, 0);
- struct session_id expected_server_id = { {0xba, 0x83, 0xa9, 0x00, 0x72, 0xbd, 0x93, 0xba }};
+ struct session_id expected_server_id = { {0x84, 0x73, 0x52, 0x2b, 0x5b, 0xa9, 0x2a, 0x70 }};
assert_memory_equal(expected_server_id.id, server_id.id, SID_SIZE);
struct session_id server_id_m1 = calculate_session_id_hmac(client_id, &addr, hmac, handwindow, -1);