diff options
author | Mathias Hall-Andersen <mathias@hall-andersen.dk> | 2017-05-30 22:36:49 +0200 |
---|---|---|
committer | Mathias Hall-Andersen <mathias@hall-andersen.dk> | 2017-05-30 22:36:49 +0200 |
commit | 1eebdf88a320824b8f155caa1d5c725c38d51de8 (patch) | |
tree | c405eff6416526a6627afa84291fa27660148f1a /src/noise.go | |
parent | 6bd0b2fbe220a23c2370ebda01f7968d3bea0118 (diff) | |
download | wireguard-go-1eebdf88a320824b8f155caa1d5c725c38d51de8.tar.gz wireguard-go-1eebdf88a320824b8f155caa1d5c725c38d51de8.zip |
Beginning work on UAPI and routing table
Diffstat (limited to 'src/noise.go')
-rw-r--r-- | src/noise.go | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/src/noise.go b/src/noise.go new file mode 100644 index 0000000..d13bdd6 --- /dev/null +++ b/src/noise.go @@ -0,0 +1,51 @@ +package main + +import ( + "encoding/hex" + "errors" +) + +const ( + NoisePublicKeySize = 32 + NoisePrivateKeySize = 32 + NoiseSymmetricKeySize = 32 +) + +type ( + NoisePublicKey [NoisePublicKeySize]byte + NoisePrivateKey [NoisePrivateKeySize]byte + NoiseSymmetricKey [NoiseSymmetricKeySize]byte + NoiseNonce uint64 // padded to 12-bytes +) + +func (key *NoisePrivateKey) FromHex(s string) error { + slice, err := hex.DecodeString(s) + if err != nil { + return err + } + if len(slice) != NoisePrivateKeySize { + return errors.New("Invalid length of hex string for curve25519 point") + } + copy(key[:], slice) + return nil +} + +func (key *NoisePrivateKey) ToHex() string { + return hex.EncodeToString(key[:]) +} + +func (key *NoisePublicKey) FromHex(s string) error { + slice, err := hex.DecodeString(s) + if err != nil { + return err + } + if len(slice) != NoisePublicKeySize { + return errors.New("Invalid length of hex string for curve25519 scalar") + } + copy(key[:], slice) + return nil +} + +func (key *NoisePublicKey) ToHex() string { + return hex.EncodeToString(key[:]) +} |