Add dep
This commit is contained in:
44
vendor/github.com/Rhymen/go-whatsapp/crypto/curve25519/curve.go
generated
vendored
Normal file
44
vendor/github.com/Rhymen/go-whatsapp/crypto/curve25519/curve.go
generated
vendored
Normal file
@ -0,0 +1,44 @@
|
||||
/*
|
||||
In cryptography, Curve25519 is an elliptic curve offering 128 bits of security and designed for use with the elliptic
|
||||
curve Diffie–Hellman (ECDH) key agreement scheme. It is one of the fastest ECC curves and is not covered by any known
|
||||
patents. The reference implementation is public domain software. The original Curve25519 paper defined it
|
||||
as a Diffie–Hellman (DH) function.
|
||||
*/
|
||||
package curve25519
|
||||
|
||||
import (
|
||||
"crypto/rand"
|
||||
"golang.org/x/crypto/curve25519"
|
||||
"io"
|
||||
)
|
||||
|
||||
/*
|
||||
GenerateKey generates a public private key pair using Curve25519.
|
||||
*/
|
||||
func GenerateKey() (privateKey *[32]byte, publicKey *[32]byte, err error) {
|
||||
var pub, priv [32]byte
|
||||
|
||||
_, err = io.ReadFull(rand.Reader, priv[:])
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
priv[0] &= 248
|
||||
priv[31] &= 127
|
||||
priv[31] |= 64
|
||||
|
||||
curve25519.ScalarBaseMult(&pub, &priv)
|
||||
|
||||
return &priv, &pub, nil
|
||||
}
|
||||
|
||||
/*
|
||||
GenerateSharedSecret generates the shared secret with a given public private key pair.
|
||||
*/
|
||||
func GenerateSharedSecret(priv, pub [32]byte) []byte {
|
||||
var secret [32]byte
|
||||
|
||||
curve25519.ScalarMult(&secret, &priv, &pub)
|
||||
|
||||
return secret[:]
|
||||
}
|
Reference in New Issue
Block a user