go-noise/curve25519.go

37 lines
777 B
Go
Raw Normal View History

2022-12-20 21:33:09 -04:00
package noise
import (
"crypto/rand"
"io"
"golang.org/x/crypto/curve25519"
)
type dh25519 struct {
DHKey
}
func (d dh25519) GenerateKeypair() (Keypair, error) {
privkey := make([]byte, DH25519.DHLen())
if _, err := io.ReadFull(rand.Reader, privkey); err != nil {
return Keypair{}, err
}
return d.GenerateKeyPairFromPrivateKey(privkey)
}
func (d dh25519) DH(privkey, pubkey []byte) ([]byte, error) {
return curve25519.X25519(privkey, pubkey)
}
func (d dh25519) DHLen() int { return 32 }
func (d dh25519) GenerateKeyPairFromPrivateKey(privkey []byte) (Keypair, error) {
pubkey, err := curve25519.X25519(privkey, curve25519.Basepoint)
if err != nil {
return Keypair{}, err
}
return Keypair{Private: privkey, Public: pubkey}, nil
}
var DH25519 = dh25519{}