diff options
Diffstat (limited to 'src/noise_types.go')
-rw-r--r-- | src/noise_types.go | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/src/noise_types.go b/src/noise_types.go new file mode 100644 index 0000000..6dae6b2 --- /dev/null +++ b/src/noise_types.go @@ -0,0 +1,53 @@ +package main + +import ( + "encoding/hex" + "errors" +) + +const ( + NoisePublicKeySize = 32 + NoisePrivateKeySize = 32 + NoiseSymmetricKeySize = 32 +) + +type ( + NoisePublicKey [NoisePublicKeySize]byte + NoisePrivateKey [NoisePrivateKeySize]byte +) + +func loadExactHex(dst []byte, src string) error { + slice, err := hex.DecodeString(src) + if err != nil { + return err + } + if len(slice) != len(dst) { + return errors.New("Hex string does not fit the slice") + } + copy(dst, slice) + return nil +} + +func (key *NoisePrivateKey) FromHex(src string) error { + return loadExactHex(key[:], src) +} + +func (key NoisePrivateKey) ToHex() string { + return hex.EncodeToString(key[:]) +} + +func (key *NoisePublicKey) FromHex(src string) error { + return loadExactHex(key[:], src) +} + +func (key NoisePublicKey) ToHex() string { + return hex.EncodeToString(key[:]) +} + +func (key *NoiseSymmetricKey) FromHex(src string) error { + return loadExactHex(key[:], src) +} + +func (key NoiseSymmetricKey) ToHex() string { + return hex.EncodeToString(key[:]) +} |