diff --git a/pkg/ueps/packet.go b/pkg/ueps/packet.go index c3a0241..243f8c4 100644 --- a/pkg/ueps/packet.go +++ b/pkg/ueps/packet.go @@ -20,7 +20,7 @@ const ( TagPayload = 0xFF // The Data ) -// h := ueps.UEPSHeader{Version: 0x09, CurrentLayer: 5, TargetLayer: 3, IntentID: 0x01, ThreatScore: 0} +// header := ueps.UEPSHeader{Version: 0x09, CurrentLayer: 5, TargetLayer: 3, IntentID: 0x01, ThreatScore: 0} type UEPSHeader struct { Version uint8 // 0x09 = IPv9 CurrentLayer uint8 // OSI layer of the sender (5 = Application) @@ -52,27 +52,27 @@ func NewBuilder(intentID uint8, payload []byte) *PacketBuilder { } // frame, err := builder.MarshalAndSign([]byte("my-shared-secret")) -func (p *PacketBuilder) MarshalAndSign(sharedSecret []byte) ([]byte, error) { +func (builder *PacketBuilder) MarshalAndSign(sharedSecret []byte) ([]byte, error) { buffer := new(bytes.Buffer) // 1. Write Standard Header Tags (0x01 - 0x05) // We write these first because they are part of what we sign. - if err := writeTLV(buffer, TagVersion, []byte{p.Header.Version}); err != nil { + if err := writeTLV(buffer, TagVersion, []byte{builder.Header.Version}); err != nil { return nil, err } - if err := writeTLV(buffer, TagCurrentLayer, []byte{p.Header.CurrentLayer}); err != nil { + if err := writeTLV(buffer, TagCurrentLayer, []byte{builder.Header.CurrentLayer}); err != nil { return nil, err } - if err := writeTLV(buffer, TagTargetLayer, []byte{p.Header.TargetLayer}); err != nil { + if err := writeTLV(buffer, TagTargetLayer, []byte{builder.Header.TargetLayer}); err != nil { return nil, err } - if err := writeTLV(buffer, TagIntent, []byte{p.Header.IntentID}); err != nil { + if err := writeTLV(buffer, TagIntent, []byte{builder.Header.IntentID}); err != nil { return nil, err } // Threat Score is uint16, needs binary packing threatScoreBytes := make([]byte, 2) - binary.BigEndian.PutUint16(threatScoreBytes, p.Header.ThreatScore) + binary.BigEndian.PutUint16(threatScoreBytes, builder.Header.ThreatScore) if err := writeTLV(buffer, TagThreatScore, threatScoreBytes); err != nil { return nil, err } @@ -81,8 +81,8 @@ func (p *PacketBuilder) MarshalAndSign(sharedSecret []byte) ([]byte, error) { // The signature covers: Existing Header TLVs + The Payload // It does NOT cover the HMAC TLV tag itself (obviously) messageAuthCode := hmac.New(sha256.New, sharedSecret) - messageAuthCode.Write(buffer.Bytes()) // The headers so far - messageAuthCode.Write(p.Payload) // The data + messageAuthCode.Write(buffer.Bytes()) // The headers so far + messageAuthCode.Write(builder.Payload) // The data signature := messageAuthCode.Sum(nil) // 3. Write HMAC TLV (0x06) @@ -101,7 +101,7 @@ func (p *PacketBuilder) MarshalAndSign(sharedSecret []byte) ([]byte, error) { // We don't write a 1-byte length for payload here assuming stream mode, // but if strict TLV, we'd need a multi-byte length protocol. // For this snippet, simply appending data: - buffer.Write(p.Payload) + buffer.Write(builder.Payload) return buffer.Bytes(), nil } diff --git a/pkg/ueps/reader.go b/pkg/ueps/reader.go index 8530b66..5c8b1d5 100644 --- a/pkg/ueps/reader.go +++ b/pkg/ueps/reader.go @@ -10,7 +10,7 @@ import ( "io" ) -// packet, err := ueps.ReadAndVerify(r, secret) +// packet, err := ueps.ReadAndVerify(r, sharedSecret) // if err == nil { _ = packet.Header.IntentID; _ = packet.Header.ThreatScore; _ = packet.Payload } type ParsedPacket struct { Header UEPSHeader