diff --git a/tea.go b/tea.go index 2754482..52bbcce 100644 --- a/tea.go +++ b/tea.go @@ -11,10 +11,10 @@ type TEA [4]uint32 //go:nosplit func NewTeaCipher(key []byte) (t TEA) { if len(key) == 16 { - t[3] = binary.BigEndian.Uint32(key[12:]) - t[2] = binary.BigEndian.Uint32(key[8:]) - t[1] = binary.BigEndian.Uint32(key[4:]) - t[0] = binary.BigEndian.Uint32(key[0:]) + t[3] = binary.BigEndian.Uint32(key[12:16]) + t[2] = binary.BigEndian.Uint32(key[8:12]) + t[1] = binary.BigEndian.Uint32(key[4:8]) + t[0] = binary.BigEndian.Uint32(key[0:4]) } return } @@ -22,10 +22,28 @@ func NewTeaCipher(key []byte) (t TEA) { //go:nosplit func NewTeaCipherLittleEndian(key []byte) (t TEA) { if len(key) == 16 { - t[3] = binary.LittleEndian.Uint32(key[12:]) - t[2] = binary.LittleEndian.Uint32(key[8:]) - t[1] = binary.LittleEndian.Uint32(key[4:]) - t[0] = binary.LittleEndian.Uint32(key[0:]) + t[3] = binary.LittleEndian.Uint32(key[12:16]) + t[2] = binary.LittleEndian.Uint32(key[8:12]) + t[1] = binary.LittleEndian.Uint32(key[4:8]) + t[0] = binary.LittleEndian.Uint32(key[0:4]) } return } + +func (t TEA) ToBytes() []byte { + var buf [16]byte + binary.BigEndian.PutUint32(buf[0:4], t[0]) + binary.BigEndian.PutUint32(buf[4:8], t[1]) + binary.BigEndian.PutUint32(buf[8:12], t[2]) + binary.BigEndian.PutUint32(buf[12:16], t[3]) + return buf[:] +} + +func (t TEA) ToBytesLittleEndian() []byte { + var buf [16]byte + binary.LittleEndian.PutUint32(buf[0:4], t[0]) + binary.LittleEndian.PutUint32(buf[4:8], t[1]) + binary.LittleEndian.PutUint32(buf[8:12], t[2]) + binary.LittleEndian.PutUint32(buf[12:16], t[3]) + return buf[:] +}