From c37285527eee8fe73095b85347c86bd6bd5214bc Mon Sep 17 00:00:00 2001 From: Mat Trudel Date: Mon, 27 Jul 2026 12:40:05 -0400 Subject: [PATCH] Use properly-sized 32-byte keys in HAPSessionTransport tests chacha20_poly1305 requires 256-bit keys, but the tests were passing 1-byte stand-ins (<<1>>, <<2>>). OTP 26's :crypto NIF tolerated the undersized key; OTP 27+ validates AEAD key length strictly and raises {:badarg, {"aead.c", 90}, "Unknown cipher or invalid key size"}, failing these tests on every OTP 27.x/28.x CI job. Co-Authored-By: Claude Sonnet 5 --- test/hap/hap_session_transport_test.exs | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/test/hap/hap_session_transport_test.exs b/test/hap/hap_session_transport_test.exs index ba50af8..6ebf4cb 100644 --- a/test/hap/hap_session_transport_test.exs +++ b/test/hap/hap_session_transport_test.exs @@ -12,8 +12,8 @@ defmodule HAP.HAPSessionTransportTest do {:ok, data} = HAP.HAPSessionTransport.recv(server_socket, 0, :infinity) HAP.HAPSessionTransport.send(server_socket, data) - HAP.HAPSessionTransport.put_send_key(<<1>>) - HAP.HAPSessionTransport.put_recv_key(<<2>>) + HAP.HAPSessionTransport.put_send_key(:binary.copy(<<1>>, 32)) + HAP.HAPSessionTransport.put_recv_key(:binary.copy(<<2>>, 32)) {:ok, data} = HAP.HAPSessionTransport.recv(server_socket, 0, :infinity) HAP.HAPSessionTransport.send(server_socket, data) @@ -32,8 +32,8 @@ defmodule HAP.HAPSessionTransportTest do refute HAP.HAPSessionTransport.encrypted_session?() # Note that these are reversed since we're acting as the controller here - HAP.HAPSessionTransport.put_send_key(<<2>>) - HAP.HAPSessionTransport.put_recv_key(<<1>>) + HAP.HAPSessionTransport.put_send_key(:binary.copy(<<2>>, 32)) + HAP.HAPSessionTransport.put_recv_key(:binary.copy(<<1>>, 32)) assert HAP.HAPSessionTransport.encrypted_session?() @@ -54,8 +54,8 @@ defmodule HAP.HAPSessionTransportTest do Task.async(fn -> {:ok, server_socket} = HAP.HAPSessionTransport.accept(listener_socket) - HAP.HAPSessionTransport.put_send_key(<<1>>) - HAP.HAPSessionTransport.put_recv_key(<<2>>) + HAP.HAPSessionTransport.put_send_key(:binary.copy(<<1>>, 32)) + HAP.HAPSessionTransport.put_recv_key(:binary.copy(<<2>>, 32)) HAP.HAPSessionTransport.send(server_socket, <<1, 2, 3>>) @@ -68,7 +68,7 @@ defmodule HAP.HAPSessionTransportTest do {encrypted_data, auth_tag} = :crypto.crypto_one_time_aead( :chacha20_poly1305, - <<1>>, + :binary.copy(<<1>>, 32), <<0::32, 0::integer-size(64)-little>>, <<1, 2, 3>>, <<3::integer-size(16)-little>>,