Documentation ¶
Overview ¶
Package csidh implements commutative supersingular isogeny-based Diffie-Hellman key exchange algorithm (CSIDH) resulting from the group action. Implementation uses prime field of a size 512-bits. This implementation is highly experimental work and currently it is not suitable for securing systems.
References:
- cSIDH: ia.cr/2018/383
- Faster cSIDH: ia.cr/2018/782
Index ¶
- Constants
- func DeriveSecret(out *[64]byte, pub *PublicKey, prv *PrivateKey, rng io.Reader) bool
- func GeneratePrivateKey(key *PrivateKey, rng io.Reader) error
- func GeneratePublicKey(pub *PublicKey, prv *PrivateKey, rng io.Reader)
- func Validate(pub *PublicKey, rng io.Reader) bool
- type PrivateKey
- type PublicKey
Constants ¶
const ( // PrivateKeySize is a size of cSIDH/512 private key in bytes. PrivateKeySize = 37 // PublicKeySize is a size of cSIDH/512 public key in bytes. PublicKeySize = 64 SharedSecretSize = 64 )
Variables ¶
This section is empty.
Functions ¶
func DeriveSecret ¶
DeriveSecret computes a cSIDH shared secret. If successful, returns true and fills 'out' with shared secret. Function returns false in case 'pub' is invalid. More precisely, shared secret is a Montgomery coefficient A of a secret curve y^2 = x^3 + Ax^2 + x, computed by applying action of a prv.e on a curve represented by pub.a.
func GeneratePrivateKey ¶
func GeneratePrivateKey(key *PrivateKey, rng io.Reader) error
func GeneratePublicKey ¶
func GeneratePublicKey(pub *PublicKey, prv *PrivateKey, rng io.Reader)
Types ¶
type PrivateKey ¶
type PrivateKey struct {
// contains filtered or unexported fields
}
Defines operations on private key
func (PrivateKey) Export ¶
func (c PrivateKey) Export(out []byte) bool
func (*PrivateKey) Import ¶
func (c *PrivateKey) Import(key []byte) bool