aboutsummaryrefslogtreecommitdiffstats
path: root/src/noise.go
diff options
context:
space:
mode:
authorMathias Hall-Andersen <mathias@hall-andersen.dk>2017-05-30 22:36:49 +0200
committerMathias Hall-Andersen <mathias@hall-andersen.dk>2017-05-30 22:36:49 +0200
commit1eebdf88a320824b8f155caa1d5c725c38d51de8 (patch)
treec405eff6416526a6627afa84291fa27660148f1a /src/noise.go
parentInitial scaffolding (diff)
downloadwireguard-go-1eebdf88a320824b8f155caa1d5c725c38d51de8.tar.xz
wireguard-go-1eebdf88a320824b8f155caa1d5c725c38d51de8.zip
Beginning work on UAPI and routing table
Diffstat (limited to '')
-rw-r--r--src/noise.go51
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[:])
+}