.\" Automatically generated by Pandoc 2.17.1.1 .\" .\" Define V font for inline verbatim, using C font in formats .\" that render this, and otherwise B font. .ie "\f[CB]x\f[]"x" \{\ . ftr V B . ftr VI BI . ftr VB B . ftr VBI BI .\} .el \{\ . ftr V CR . ftr VI CI . ftr VB CB . ftr VBI CBI .\} .TH "sntrup" "3" "" "" "" .hy .SS NAME .PP sntrup - C API for the libntruprime implementation of the Streamlined NTRU Prime cryptosystem .SS SYNOPSIS .PP Using libntruprime: .IP .nf \f[C] #include \f[R] .fi .PP Link with \f[V]-lntruprime\f[R]. .PP Key generation (for, e.g., \f[V]sntrup1277\f[R]): .IP .nf \f[C] unsigned char pk[sntrup1277_PUBLICKEYBYTES]; unsigned char sk[sntrup1277_SECRETKEYBYTES]; sntrup1277_keypair(pk,sk); \f[R] .fi .PP Encapsulation (for, e.g., \f[V]sntrup1277\f[R]): .IP .nf \f[C] unsigned char ct[sntrup1277_CIPHERTEXTBYTES]; unsigned char k[sntrup1277_BYTES]; const unsigned char pk[sntrup1277_PUBLICKEYBYTES]; sntrup1277_enc(ct,k,pk); \f[R] .fi .PP Decapsulation (for, e.g., \f[V]sntrup1277\f[R]): .IP .nf \f[C] unsigned char k[sntrup1277_BYTES]; const unsigned char ct[sntrup1277_CIPHERTEXTBYTES]; const unsigned char sk[sntrup1277_SECRETKEYBYTES]; sntrup1277_dec(k,ct,sk); \f[R] .fi .SS DESCRIPTION .PP libntruprime is an implementation of the Streamlined NTRU Prime (https://ntruprime.cr.yp.to) cryptosystem. The C API for libntruprime provides the following functions: .IP .nf \f[C] sntrup{653,761,857,953,1013,1277}_keypair sntrup{653,761,857,953,1013,1277}_enc sntrup{653,761,857,953,1013,1277}_dec \f[R] .fi .PP All of these functions follow the SUPERCOP API for KEMs (https://bench.cr.yp.to/call-kem.html) except that .IP \[bu] 2 the function names are libntruprime-specific instead of \f[V]crypto_kem_*\f[R], .IP \[bu] 2 message lengths are \f[V]long long\f[R] instead of \f[V]unsigned long long\f[R], and .IP \[bu] 2 the functions return \f[V]void\f[R] instead of \f[V]int\f[R]. .PP The details below use \f[V]sntrup1277\f[R] as an example. .SS KEY GENERATION .PP The \f[V]sntrup1277_keypair\f[R] function randomly generates Alice\[cq]s secret key \f[V]sk[0]\f[R], \f[V]sk[1]\f[R], \&..., \f[V]sk[sntrup1277_SECRETKEYBYTES-1]\f[R] and Alice\[cq]s corresponding public key \f[V]pk[0]\f[R], \f[V]pk[1]\f[R], \&..., \f[V]pk[sntrup1277_PUBLICKEYBYTES-1]\f[R]. .SS ENCAPSULATION .PP The \f[V]sntrup1277_enc\f[R] function randomly generates a ciphertext \f[V]ct[0]\f[R], \f[V]ct[1]\f[R], \&..., \f[V]ct[sntrup1277_CIPHERTEXTBYTES-1]\f[R] and the corresponding session key \f[V]k[0]\f[R], \f[V]k[1]\f[R], \&..., \f[V]k[sntrup1277_BYTES-1]\f[R] given Alice\[cq]s public key \f[V]pk[0]\f[R], \f[V]pk[1]\f[R], \&..., \f[V]pk[sntrup1277_PUBLICKEYBYTES-1]\f[R]. .SS DECAPSULATION .PP The \f[V]sntrup1277_dec\f[R] function, given Alice\[cq]s secret key \f[V]sk[0]\f[R], \f[V]sk[1]\f[R], \&..., \f[V]sk[sntrup1277_SECRETKEYBYTES-1]\f[R], computes the session key \f[V]k[0]\f[R], \f[V]k[1]\f[R], \&..., \f[V]k[sntrup1277_BYTES-1]\f[R] corresponding to a ciphertext \f[V]ct[0]\f[R], \f[V]ct[1]\f[R], \&..., \f[V]ct[sntrup1277_CIPHERTEXTBYTES-1]\f[R] that was encapsulated to Alice. .SS SEE ALSO .PP \f[B]sntrup\f[R](1), \f[B]randombytes\f[R](3)