ax(ueps): rename NewBuilder to NewPacketBuilder for AX Principle 1 compliance
Some checks are pending
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run

Ambiguous constructor name required reading the return type to know what
it builds. NewPacketBuilder is self-documenting without context.

Co-Authored-By: Charon <charon@lethean.io>
This commit is contained in:
Claude 2026-04-02 09:45:23 +01:00
parent a1939ff5f7
commit 840418c33e
No known key found for this signature in database
GPG key ID: AF404715446AEB41
3 changed files with 18 additions and 18 deletions

View file

@ -37,16 +37,16 @@ type UEPSHeader struct {
ThreatScore uint16 // 065535; elevated by integrity violations
}
// builder := ueps.NewBuilder(intentID, payload); frame, _ := builder.MarshalAndSign(secret)
// builder := ueps.NewPacketBuilder(intentID, payload); frame, _ := builder.MarshalAndSign(secret)
type PacketBuilder struct {
Header UEPSHeader
Payload []byte
}
// builder := ueps.NewBuilder(0x01, []byte("hello"))
// builder := ueps.NewPacketBuilder(0x01, []byte("hello"))
// builder.Header.ThreatScore = 100
// frame, err := builder.MarshalAndSign(sharedSecret)
func NewBuilder(intentID uint8, payload []byte) *PacketBuilder {
func NewPacketBuilder(intentID uint8, payload []byte) *PacketBuilder {
return &PacketBuilder{
Header: UEPSHeader{
Version: 0x09, // IPv9

View file

@ -6,16 +6,16 @@ import (
"testing"
)
// builder := NewBuilder(0x01, []byte("hello"))
// builder := NewPacketBuilder(0x01, []byte("hello"))
// // builder.Header.Version == 0x09; builder.Header.CurrentLayer == 5
func TestPacket_NewBuilder_Good(t *testing.T) {
intentID := uint8(0x01)
payload := []byte("hello")
builder := NewBuilder(intentID, payload)
builder := NewPacketBuilder(intentID, payload)
if builder == nil {
t.Fatal("NewBuilder returned nil")
t.Fatal("NewPacketBuilder returned nil")
}
if builder.Header.Version != 0x09 {
t.Errorf("expected Version 0x09, got 0x%02x", builder.Header.Version)
@ -37,13 +37,13 @@ func TestPacket_NewBuilder_Good(t *testing.T) {
}
}
// builder := NewBuilder(0x04, nil)
// builder := NewPacketBuilder(0x04, nil)
// frame, err := builder.MarshalAndSign(secret) // succeeds with zero-length payload
func TestPacket_NewBuilder_Bad(t *testing.T) {
builder := NewBuilder(0x04, nil)
builder := NewPacketBuilder(0x04, nil)
if builder == nil {
t.Fatal("NewBuilder returned nil for nil payload")
t.Fatal("NewPacketBuilder returned nil for nil payload")
}
if builder.Payload != nil {
t.Errorf("expected nil Payload, got %v", builder.Payload)
@ -58,11 +58,11 @@ func TestPacket_NewBuilder_Bad(t *testing.T) {
}
}
// builder := NewBuilder(0x00, largePayload)
// builder := NewPacketBuilder(0x00, largePayload)
// frame, err := builder.MarshalAndSign(secret) // succeeds; 0xFF tag appended without length prefix
func TestPacket_NewBuilder_Ugly(t *testing.T) {
largePayload := bytes.Repeat([]byte("x"), 300)
builder := NewBuilder(0x00, largePayload)
builder := NewPacketBuilder(0x00, largePayload)
if builder.Header.IntentID != 0x00 {
t.Errorf("expected IntentID 0x00, got 0x%02x", builder.Header.IntentID)
@ -77,10 +77,10 @@ func TestPacket_NewBuilder_Ugly(t *testing.T) {
}
}
// builder := NewBuilder(0x01, []byte("ping"))
// builder := NewPacketBuilder(0x01, []byte("ping"))
// frame, err := builder.MarshalAndSign([]byte("my-shared-secret"))
func TestPacket_MarshalAndSign_Good(t *testing.T) {
builder := NewBuilder(0x01, []byte("ping"))
builder := NewPacketBuilder(0x01, []byte("ping"))
sharedSecret := []byte("my-shared-secret")
frame, err := builder.MarshalAndSign(sharedSecret)
@ -104,7 +104,7 @@ func TestPacket_MarshalAndSign_Good(t *testing.T) {
// frameWithSecretB, _ := builder.MarshalAndSign([]byte("secret-b"))
// // frameWithSecretA != frameWithSecretB (HMAC tag differs)
func TestPacket_MarshalAndSign_Bad(t *testing.T) {
builder := NewBuilder(0x02, []byte("data"))
builder := NewPacketBuilder(0x02, []byte("data"))
frameWithSecretA, err := builder.MarshalAndSign([]byte("secret-a"))
if err != nil {
@ -126,7 +126,7 @@ func TestPacket_MarshalAndSign_Bad(t *testing.T) {
// _, err := ReadAndVerify(bufio.NewReader(bytes.NewReader(corrupted)), secret)
// // err == errIntegrityViolation (HMAC mismatch detected)
func TestPacket_MarshalAndSign_Ugly(t *testing.T) {
builder := NewBuilder(0x03, []byte("sensitive"))
builder := NewPacketBuilder(0x03, []byte("sensitive"))
sharedSecret := []byte("my-secret")
frame, err := builder.MarshalAndSign(sharedSecret)

View file

@ -6,7 +6,7 @@ import (
"testing"
)
// builder := NewBuilder(0x01, []byte("hello")); frame, _ := builder.MarshalAndSign(secret)
// builder := NewPacketBuilder(0x01, []byte("hello")); frame, _ := builder.MarshalAndSign(secret)
// packet, err := ReadAndVerify(bufio.NewReader(bytes.NewReader(frame)), secret)
// // packet.Header.IntentID == 0x01; packet.Payload == []byte("hello")
func TestReader_ReadAndVerify_Good(t *testing.T) {
@ -14,7 +14,7 @@ func TestReader_ReadAndVerify_Good(t *testing.T) {
payload := []byte("hello world")
intentID := uint8(0x01)
builder := NewBuilder(intentID, payload)
builder := NewPacketBuilder(intentID, payload)
frame, err := builder.MarshalAndSign(sharedSecret)
if err != nil {
t.Fatalf("MarshalAndSign failed: %v", err)
@ -46,7 +46,7 @@ func TestReader_ReadAndVerify_Good(t *testing.T) {
func TestReader_ReadAndVerify_Bad(t *testing.T) {
sharedSecret := []byte("test-shared-secret")
builder := NewBuilder(0x02, []byte("sensitive data"))
builder := NewPacketBuilder(0x02, []byte("sensitive data"))
frame, err := builder.MarshalAndSign(sharedSecret)
if err != nil {
t.Fatalf("MarshalAndSign failed: %v", err)