From 84dcbce9f55af140b904869b644e9ddc835511d5 Mon Sep 17 00:00:00 2001 From: vysion <77179954+vysiondev@users.noreply.github.com> Date: Wed, 30 Mar 2022 12:16:16 -0700 Subject: [PATCH] Add DeriveKey func --- encryption/derive_key.go | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/encryption/derive_key.go b/encryption/derive_key.go index 909a131..741baf7 100644 --- a/encryption/derive_key.go +++ b/encryption/derive_key.go @@ -1 +1,36 @@ package encryption + +import ( + "crypto/sha512" + "golang.org/x/crypto/hkdf" + "io" +) + +func DeriveKey(k []byte, nonce []byte) ([32]byte, error) { + var key [32]byte + + // TODO: remove experiment + //d := sha3.NewShake256() + //_, err := d.Write(k) + //if err != nil { + // return [64]byte{}, err + //} + //_, err = d.Write(nonce) + //if err != nil { + // return [64]byte{}, err + //} + // + //_, err = d.Read(key[:]) + //if err != nil { + // return [64]byte{}, err + //} + + // SHA2-512 related code + kdf := hkdf.New(sha512.New, k, nonce, nil) + _, err := io.ReadFull(kdf, key[:]) + if err != nil { + return [32]byte{}, err + } + + return key, nil +}