package noise
import (
"crypto/hmac"
"hash"
)
func hkdf(h func () hash .Hash , outputs int , out1 , out2 , out3 , chainingKey , inputKeyMaterial []byte ) ([]byte , []byte , []byte ) {
if len (out1 ) > 0 {
panic ("len(out1) > 0" )
}
if len (out2 ) > 0 {
panic ("len(out2) > 0" )
}
if len (out3 ) > 0 {
panic ("len(out3) > 0" )
}
if outputs > 3 {
panic ("outputs > 3" )
}
tempMAC := hmac .New (h , chainingKey )
tempMAC .Write (inputKeyMaterial )
tempKey := tempMAC .Sum (out2 )
out1MAC := hmac .New (h , tempKey )
out1MAC .Write ([]byte {0x01 })
out1 = out1MAC .Sum (out1 )
if outputs == 1 {
return out1 , nil , nil
}
out2MAC := hmac .New (h , tempKey )
out2MAC .Write (out1 )
out2MAC .Write ([]byte {0x02 })
out2 = out2MAC .Sum (out2 )
if outputs == 2 {
return out1 , out2 , nil
}
out3MAC := hmac .New (h , tempKey )
out3MAC .Write (out2 )
out3MAC .Write ([]byte {0x03 })
out3 = out3MAC .Sum (out3 )
return out1 , out2 , out3
}
The pages are generated with Golds v0.8.2 . (GOOS=linux GOARCH=amd64)
Golds is a Go 101 project developed by Tapir Liu .
PR and bug reports are welcome and can be submitted to the issue list .
Please follow @zigo_101 (reachable from the left QR code) to get the latest news of Golds .