Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // generate a fresh key each session
- pk, err := ecdsa.GenerateKey(ed448.Curve448(), rand.Reader)
- // ...
- // derive a shared secret for signed hashing
- // and a shared key for aes-256
- func deriveShared(pk *ecdsa.PrivateKey, pub ecdsa.PublicKey) (secret [64]byte, key [32]byte) {
- s := func() [64]byte {
- x, y := ed448.Curve448().ScalarMult(pub.X, pub.Y, pk.D.Bytes())
- return sha3.Sum512(append(x.Bytes(), y.Bytes()...))
- }()
- k := func() [32]byte {
- return sha3.Sum256(s[:])
- }()
- return s, k
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement