48 lines
1.5 KiB
Go
48 lines
1.5 KiB
Go
package protocol
|
|
|
|
import "testing"
|
|
|
|
func TestSignMessageHMACVector(t *testing.T) {
|
|
// Standard HMAC-SHA256 sanity vector. Anchors that SignMessage matches
|
|
// the canonical RFC 4231 algorithm so signatures stay interoperable
|
|
// with peers that compute the same digest.
|
|
got := SignMessage("key", []byte("hello"))
|
|
want := "9307b3b915efb5171ff14d8cb55fbcc798c6c0ef1456d66ded1a6aa723a58b7b"
|
|
if got != want {
|
|
t.Fatalf("SignMessage(key, hello) = %s, want %s", got, want)
|
|
}
|
|
}
|
|
|
|
func TestSignMessageDeterministic(t *testing.T) {
|
|
a := SignMessage("test-key", []byte("2026-01-01 12:00:00|123456789"))
|
|
b := SignMessage("test-key", []byte("2026-01-01 12:00:00|123456789"))
|
|
if a != b {
|
|
t.Fatalf("non-deterministic: %s != %s", a, b)
|
|
}
|
|
if len(a) != 64 {
|
|
t.Fatalf("expected 64 hex chars, got %d (%s)", len(a), a)
|
|
}
|
|
}
|
|
|
|
func TestIsH264KeyframeBasic(t *testing.T) {
|
|
// 4-byte start code + IDR (NAL type 5)
|
|
idr := []byte{0x00, 0x00, 0x00, 0x01, 0x65, 0x88}
|
|
if !IsH264Keyframe(idr) {
|
|
t.Fatal("IDR should be detected as keyframe")
|
|
}
|
|
// 3-byte start code + SPS (NAL type 7)
|
|
sps := []byte{0x00, 0x00, 0x01, 0x67, 0x42}
|
|
if !IsH264Keyframe(sps) {
|
|
t.Fatal("SPS should be detected as keyframe")
|
|
}
|
|
// 4-byte start code + non-IDR slice (NAL type 1)
|
|
pframe := []byte{0x00, 0x00, 0x00, 0x01, 0x41, 0x9b}
|
|
if IsH264Keyframe(pframe) {
|
|
t.Fatal("non-IDR slice should not be detected as keyframe")
|
|
}
|
|
// Garbage
|
|
if IsH264Keyframe([]byte{0xde, 0xad, 0xbe, 0xef}) {
|
|
t.Fatal("non-H264 bytes should not match")
|
|
}
|
|
}
|