Documentation ¶
Overview ¶
Package csidh implements cSIDH key exchange, isogeny-based scheme resulting from the group action. Implementation uses only prime field of a size 512-bits and uses Ed some performance improvements by using twisted Edwards curves in the isogeny image curve computations. This work has been described by M. Meyer and S. Reith in the ia.cr/2018/782. Original cSIDH paper can be found in the ia.cr/2018/383.
It is experimental implementation, not meant to be secure. Have fun!
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