]> Cypherpunks.ru repositories - gogost.git/blobdiff - gost34112012256/kdf.go
Panic on all possible hash write errors
[gogost.git] / gost34112012256 / kdf.go
index eab8edc8ee33f777ad68894a8704446e0e578ec7..d818fb287102b403cb2cf8e7c05fdb9a40368b68 100644 (file)
@@ -1,5 +1,5 @@
 // GoGOST -- Pure Go GOST cryptographic functions library
-// Copyright (C) 2015-2019 Sergey Matveev <stargrave@stargrave.org>
+// Copyright (C) 2015-2020 Sergey Matveev <stargrave@stargrave.org>
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
@@ -29,12 +29,24 @@ func NewKDF(key []byte) *KDF {
 }
 
 func (kdf *KDF) Derive(dst, label, seed []byte) (r []byte) {
-       kdf.h.Write([]byte{0x01})
-       kdf.h.Write(label)
-       kdf.h.Write([]byte{0x00})
-       kdf.h.Write(seed)
-       kdf.h.Write([]byte{0x01})
-       kdf.h.Write([]byte{0x00})
+       if _, err := kdf.h.Write([]byte{0x01}); err != nil {
+               panic(err)
+       }
+       if _, err := kdf.h.Write(label); err != nil {
+               panic(err)
+       }
+       if _, err := kdf.h.Write([]byte{0x00}); err != nil {
+               panic(err)
+       }
+       if _, err := kdf.h.Write(seed); err != nil {
+               panic(err)
+       }
+       if _, err := kdf.h.Write([]byte{0x01}); err != nil {
+               panic(err)
+       }
+       if _, err := kdf.h.Write([]byte{0x00}); err != nil {
+               panic(err)
+       }
        r = kdf.h.Sum(dst)
        kdf.h.Reset()
        return r