|
@@ -6,11 +6,20 @@ import (
|
|
|
"hash"
|
|
"hash"
|
|
|
)
|
|
)
|
|
|
|
|
|
|
|
|
|
+type hash2 struct {
|
|
|
|
|
+ hash.Hash
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
func KDF(key []byte, path ...string) []byte {
|
|
func KDF(key []byte, path ...string) []byte {
|
|
|
hmacf := hmac.New(sha256.New, []byte(KDFSaltConstVMessAEADKDF))
|
|
hmacf := hmac.New(sha256.New, []byte(KDFSaltConstVMessAEADKDF))
|
|
|
|
|
|
|
|
for _, v := range path {
|
|
for _, v := range path {
|
|
|
|
|
+ first := true
|
|
|
hmacf = hmac.New(func() hash.Hash {
|
|
hmacf = hmac.New(func() hash.Hash {
|
|
|
|
|
+ if first {
|
|
|
|
|
+ first = false
|
|
|
|
|
+ return hash2{hmacf}
|
|
|
|
|
+ }
|
|
|
return hmacf
|
|
return hmacf
|
|
|
}, []byte(v))
|
|
}, []byte(v))
|
|
|
}
|
|
}
|