lux/crypto/lux_key.go
2024-12-29 13:27:06 +02:00

47 lines
733 B
Go

package crypto
import (
"crypto/rand"
"lux/proto"
)
type LuxKey struct {
Type proto.LuxType
Id proto.LuxID
Key []byte
}
func (key *LuxKey) NewLuxKey(keyType proto.LuxType) error {
key.Type = keyType
key.Id = proto.NewLuxID()
key.Key = make([]byte, 32)
if _, err := rand.Read(key.Key); err != nil {
return err
} else {
return nil
}
}
func (key *LuxKey) Read(rd *proto.LuxBuffer) error {
if err := key.Type.Read(rd); err != nil {
return err
}
if err := key.Id.Read(rd); err != nil {
return err
}
_key, err := rd.ReadNext(32)
if err != nil {
return err
}
key.Key = _key
return nil
}
func (key *LuxKey) Write(wd *proto.LuxBuffer) {
key.Type.Write(wd)
key.Id.Write(wd)
wd.WriteBytes(key.Key)
}