summaryrefslogtreecommitdiffhomepage
path: root/src/noise_helpers.go
diff options
context:
space:
mode:
authorMathias Hall-Andersen <mathias@hall-andersen.dk>2018-02-04 16:08:26 +0100
committerMathias Hall-Andersen <mathias@hall-andersen.dk>2018-02-04 16:08:26 +0100
commita0f54cbe5ac2cd8b8296c2c57c30029dd349cff0 (patch)
tree64574090d79ff3899c5c18e5268e450028e4656b /src/noise_helpers.go
parent5871ec04deb8f4715cab37146940baa35c08cbee (diff)
Align with go library layout
Diffstat (limited to 'src/noise_helpers.go')
-rw-r--r--src/noise_helpers.go98
1 files changed, 0 insertions, 98 deletions
diff --git a/src/noise_helpers.go b/src/noise_helpers.go
deleted file mode 100644
index 1e2de5f..0000000
--- a/src/noise_helpers.go
+++ /dev/null
@@ -1,98 +0,0 @@
-package main
-
-import (
- "crypto/hmac"
- "crypto/rand"
- "crypto/subtle"
- "golang.org/x/crypto/blake2s"
- "golang.org/x/crypto/curve25519"
- "hash"
-)
-
-/* KDF related functions.
- * HMAC-based Key Derivation Function (HKDF)
- * https://tools.ietf.org/html/rfc5869
- */
-
-func HMAC1(sum *[blake2s.Size]byte, key, in0 []byte) {
- mac := hmac.New(func() hash.Hash {
- h, _ := blake2s.New256(nil)
- return h
- }, key)
- mac.Write(in0)
- mac.Sum(sum[:0])
-}
-
-func HMAC2(sum *[blake2s.Size]byte, key, in0, in1 []byte) {
- mac := hmac.New(func() hash.Hash {
- h, _ := blake2s.New256(nil)
- return h
- }, key)
- mac.Write(in0)
- mac.Write(in1)
- mac.Sum(sum[:0])
-}
-
-func KDF1(t0 *[blake2s.Size]byte, key, input []byte) {
- HMAC1(t0, key, input)
- HMAC1(t0, t0[:], []byte{0x1})
- return
-}
-
-func KDF2(t0, t1 *[blake2s.Size]byte, key, input []byte) {
- var prk [blake2s.Size]byte
- HMAC1(&prk, key, input)
- HMAC1(t0, prk[:], []byte{0x1})
- HMAC2(t1, prk[:], t0[:], []byte{0x2})
- setZero(prk[:])
- return
-}
-
-func KDF3(t0, t1, t2 *[blake2s.Size]byte, key, input []byte) {
- var prk [blake2s.Size]byte
- HMAC1(&prk, key, input)
- HMAC1(t0, prk[:], []byte{0x1})
- HMAC2(t1, prk[:], t0[:], []byte{0x2})
- HMAC2(t2, prk[:], t1[:], []byte{0x3})
- setZero(prk[:])
- return
-}
-
-func isZero(val []byte) bool {
- acc := 1
- for _, b := range val {
- acc &= subtle.ConstantTimeByteEq(b, 0)
- }
- return acc == 1
-}
-
-func setZero(arr []byte) {
- for i := range arr {
- arr[i] = 0
- }
-}
-
-/* curve25519 wrappers */
-
-func newPrivateKey() (sk NoisePrivateKey, err error) {
- // clamping: https://cr.yp.to/ecdh.html
- _, err = rand.Read(sk[:])
- sk[0] &= 248
- sk[31] &= 127
- sk[31] |= 64
- return
-}
-
-func (sk *NoisePrivateKey) publicKey() (pk NoisePublicKey) {
- apk := (*[NoisePublicKeySize]byte)(&pk)
- ask := (*[NoisePrivateKeySize]byte)(sk)
- curve25519.ScalarBaseMult(apk, ask)
- return
-}
-
-func (sk *NoisePrivateKey) sharedSecret(pk NoisePublicKey) (ss [NoisePublicKeySize]byte) {
- apk := (*[NoisePublicKeySize]byte)(&pk)
- ask := (*[NoisePrivateKeySize]byte)(sk)
- curve25519.ScalarMult(&ss, ask, apk)
- return ss
-}