Expand description

This is documentation for the rust-sike crate.

Introduction

rust-sike is an implementation of the supersingular isogeny primitives for SIKE, a post-quantum candidate submitted to NIST for standardization.

This crate provides public-key encryption (PKE) and key encapsulation (KEM).

Examples

use rust_sike::{self, KEM};
let params = rust_sike::sike_p434_params(None, None);

let kem = KEM::setup(params);

// Alice runs keygen, publishes pk3. Values s and sk3 are secret
let (s, sk3, pk3) = kem.keygen();

// Bob uses pk3 to derive a key k and encapsulation c
let (c, k) = kem.encaps(&pk3);

// Bob sends c to Alice
// Alice uses s, c, sk3 and pk3 to recover k
let k_recovered = kem.decaps(&s, &sk3, &pk3, c);

assert_eq!(k, k_recovered);

Re-exports

pub use kem::KEM;
pub use pke::PKE;

Modules

Key encapsulation mechanism

Public-key cryptosystem:

Utils for tree traversal strategies

Constants

3-torsion reference strategy for SIKEp434 (ref C.1.2.)

2-torsion reference strategy for SIKEp434 (ref C.1.1.)

3-torsion reference strategy for SIKEp503 (ref C.2.2.)

2-torsion reference strategy for SIKEp503 (ref C.2.1.)

3-torsion reference strategy for SIKEp610 (ref C.3.2.)

2-torsion reference strategy for SIKEp610 (ref C.3.1.)

3-torsion reference strategy for SIKEp751 (ref C.4.2.)

2-torsion reference strategy for SIKEp751 (ref C.4.1.)

Functions

Computing optimised strategy (ref compute_strategy, Algorithm 46 p. 75).

Load params for SIKE_p434

Load params for SIKE_p503

Load params for SIKE_p610

Load params for SIKE_p751