From 125842d80dee1e16b9d6b7ebe8c05c2ec89d4b3f Mon Sep 17 00:00:00 2001 From: Lucas Clemente Date: Sat, 6 Aug 2016 17:54:11 +0200 Subject: [PATCH] simplify key derivation --- crypto/key_derivation.go | 21 ++++++--------------- 1 file changed, 6 insertions(+), 15 deletions(-) diff --git a/crypto/key_derivation.go b/crypto/key_derivation.go index 37c98ddc3..cbd487758 100644 --- a/crypto/key_derivation.go +++ b/crypto/key_derivation.go @@ -43,23 +43,14 @@ func deriveKeys(version protocol.VersionNumber, forwardSecure bool, sharedSecret r := hkdf.New(sha256.New, sharedSecret, nonces, info.Bytes()) - otherKey := make([]byte, keyLen) - myKey := make([]byte, keyLen) - otherIV := make([]byte, 4) - myIV := make([]byte, 4) - - if _, err := io.ReadFull(r, otherKey); err != nil { - return nil, nil, nil, nil, err - } - if _, err := io.ReadFull(r, myKey); err != nil { - return nil, nil, nil, nil, err - } - if _, err := io.ReadFull(r, otherIV); err != nil { - return nil, nil, nil, nil, err - } - if _, err := io.ReadFull(r, myIV); err != nil { + s := make([]byte, 2*keyLen+2*4) + if _, err := io.ReadFull(r, s); err != nil { return nil, nil, nil, nil, err } + otherKey := s[:keyLen] + myKey := s[keyLen : 2*keyLen] + otherIV := s[2*keyLen : 2*keyLen+4] + myIV := s[2*keyLen+4:] if !forwardSecure && version >= protocol.Version33 { if err := diversify(myKey, myIV, divNonce); err != nil {