mirror of
https://github.com/open-quantum-safe/liboqs.git
synced 2025-10-04 00:02:01 -04:00
Add FrodoKEM-976 and 1344 to build system
This commit is contained in:
parent
c8626abc77
commit
8fe4928dd6
@ -82,6 +82,10 @@ AC_DEFUN([CONFIG_FEATURES],
|
||||
AM_COND_IF([ENABLE_KEM_FRODOKEM], [
|
||||
AC_DEFINE(OQS_ENABLE_KEM_frodokem_640_aes, 1, "Define to 1 when FrodoKEM-640-AES enabled")
|
||||
AC_DEFINE(OQS_ENABLE_KEM_frodokem_640_shake, 1, "Define to 1 when FrodoKEM-640-SHAKE enabled")
|
||||
AC_DEFINE(OQS_ENABLE_KEM_frodokem_976_aes, 1, "Define to 1 when FrodoKEM-976-AES enabled")
|
||||
AC_DEFINE(OQS_ENABLE_KEM_frodokem_976_shake, 1, "Define to 1 when FrodoKEM-976-SHAKE enabled")
|
||||
AC_DEFINE(OQS_ENABLE_KEM_frodokem_1344_aes, 1, "Define to 1 when FrodoKEM-1344-AES enabled")
|
||||
AC_DEFINE(OQS_ENABLE_KEM_frodokem_1344_shake, 1, "Define to 1 when FrodoKEM-1344-SHAKE enabled")
|
||||
])
|
||||
|
||||
AM_COND_IF([ENABLE_KEM_SIKE], [
|
||||
|
@ -10,22 +10,25 @@ Summary
|
||||
- **Scheme authors**: Michael Naehrig, Erdem Alkim, Joppe Bos, Léo Ducas, Karen Easterbrook, Brian LaMacchia, Patrick Longa, Ilya Mironov, Valeria Nikolaenko, Christopher Peikert, Ananth Raghunathan, Douglas Stebila
|
||||
- **Authors' website**: https://frodokem.org/
|
||||
- **Added to liboqs by**: Douglas Stebila
|
||||
- **NIST Round 2 submission**
|
||||
|
||||
Parameter sets
|
||||
--------------
|
||||
|
||||
| Parameter set | Security model | Claimed NIST security level | Public key size (bytes) | Secret key size (bytes) | Ciphertext size (bytes) | Shared secret size (bytes) |
|
||||
|---------------------|:--------------:|:---------------------------:|:-----------------------:|:-----------------------:|:-----------------------:|:--------------------------:|
|
||||
| FrodoKEM-640-AES | IND-CCA | 1 | 9616 | 19872 | 9736 | 16 |
|
||||
| FrodoKEM-640-cSHAKE | IND-CCA | 1 | 9616 | 19872 | 9736 | 16 |
|
||||
| FrodoKEM-976-AES | IND-CCA | 3 | 15632 | 31272 | 15768 | 24 |
|
||||
| FrodoKEM-976-cSHAKE | IND-CCA | 3 | 15632 | 31272 | 15768 | 24 |
|
||||
| FrodoKEM-640-AES | IND-CCA | 1 | 9616 | 19888 | 9720 | 16 |
|
||||
| FrodoKEM-640-SHAKE | IND-CCA | 1 | 9616 | 19888 | 9720 | 16 |
|
||||
| FrodoKEM-976-AES | IND-CCA | 3 | 15632 | 31296 | 15744 | 24 |
|
||||
| FrodoKEM-976-SHAKE | IND-CCA | 3 | 15632 | 31296 | 15744 | 24 |
|
||||
| FrodoKEM-1344-AES | IND-CCA | 5 | 21520 | 43088 | 21632 | 32 |
|
||||
| FrodoKEM-1344-SHAKE | IND-CCA | 5 | 15632 | 43088 | 21632 | 32 |
|
||||
|
||||
Implementation
|
||||
--------------
|
||||
|
||||
- **Source of implementation:** https://github.com/Microsoft/PQCrypto-LWEKE
|
||||
- **Implementation version:** https://github.com/Microsoft/PQCrypto-LWEKE/commit/47da00a91270b6f103232314eef0b891b83bfd3b
|
||||
- **Source of implementation:** https://github.com/Microsoft/PQCrypto-LWEKE/
|
||||
- **Implementation version:** https://github.com/PQClean/PQClean/commit/e72fd489baaef597715aa4335ceeea4362301b55
|
||||
- **License:** MIT License
|
||||
- **Language:** C
|
||||
- **Constant-time:** Yes
|
||||
|
6
src/kem/frodokem/FrodoKEM-1344-AES.kat
Normal file
6
src/kem/frodokem/FrodoKEM-1344-AES.kat
Normal file
File diff suppressed because one or more lines are too long
6
src/kem/frodokem/FrodoKEM-1344-SHAKE.kat
Normal file
6
src/kem/frodokem/FrodoKEM-1344-SHAKE.kat
Normal file
File diff suppressed because one or more lines are too long
6
src/kem/frodokem/FrodoKEM-976-AES.kat
Normal file
6
src/kem/frodokem/FrodoKEM-976-AES.kat
Normal file
File diff suppressed because one or more lines are too long
6
src/kem/frodokem/FrodoKEM-976-SHAKE.kat
Normal file
6
src/kem/frodokem/FrodoKEM-976-SHAKE.kat
Normal file
File diff suppressed because one or more lines are too long
@ -1,8 +1,8 @@
|
||||
AUTOMAKE_OPTIONS = foreign
|
||||
noinst_LTLIBRARIES = libkemfrodokem.la
|
||||
noinst_LTLIBRARIES += libkemfrodokem640aes.la libkemfrodokem640shake.la
|
||||
noinst_LTLIBRARIES += libkemfrodokem640aes.la libkemfrodokem640shake.la libkemfrodokem976aes.la libkemfrodokem976shake.la libkemfrodokem1344aes.la libkemfrodokem1344shake.la
|
||||
|
||||
libkemfrodokem_la_LIBADD = libkemfrodokem640aes.la libkemfrodokem640shake.la
|
||||
libkemfrodokem_la_LIBADD = libkemfrodokem640aes.la libkemfrodokem640shake.la libkemfrodokem976aes.la libkemfrodokem976shake.la libkemfrodokem1344aes.la libkemfrodokem1344shake.la
|
||||
libkemfrodokem_la_SOURCES =
|
||||
|
||||
libkemfrodokem640aes_la_SOURCES = kem_frodokem640aes.c pqclean_frodokem640aes_clean/kem.c pqclean_frodokem640aes_clean/matrix_aes.c pqclean_frodokem640aes_clean/noise.c pqclean_frodokem640aes_clean/util.c
|
||||
@ -10,3 +10,15 @@ libkemfrodokem640aes_la_CFLAGS = $(AM_CFLAGS) -I../../common/pqclean_shims
|
||||
|
||||
libkemfrodokem640shake_la_SOURCES = kem_frodokem640shake.c pqclean_frodokem640shake_clean/kem.c pqclean_frodokem640shake_clean/matrix_shake.c pqclean_frodokem640shake_clean/noise.c pqclean_frodokem640shake_clean/util.c
|
||||
libkemfrodokem640shake_la_CFLAGS = $(AM_CFLAGS) -I../../common/pqclean_shims
|
||||
|
||||
libkemfrodokem976aes_la_SOURCES = kem_frodokem976aes.c pqclean_frodokem976aes_clean/kem.c pqclean_frodokem976aes_clean/matrix_aes.c pqclean_frodokem976aes_clean/noise.c pqclean_frodokem976aes_clean/util.c
|
||||
libkemfrodokem976aes_la_CFLAGS = $(AM_CFLAGS) -I../../common/pqclean_shims
|
||||
|
||||
libkemfrodokem976shake_la_SOURCES = kem_frodokem976shake.c pqclean_frodokem976shake_clean/kem.c pqclean_frodokem976shake_clean/matrix_shake.c pqclean_frodokem976shake_clean/noise.c pqclean_frodokem976shake_clean/util.c
|
||||
libkemfrodokem976shake_la_CFLAGS = $(AM_CFLAGS) -I../../common/pqclean_shims
|
||||
|
||||
libkemfrodokem1344aes_la_SOURCES = kem_frodokem1344aes.c pqclean_frodokem1344aes_clean/kem.c pqclean_frodokem1344aes_clean/matrix_aes.c pqclean_frodokem1344aes_clean/noise.c pqclean_frodokem1344aes_clean/util.c
|
||||
libkemfrodokem1344aes_la_CFLAGS = $(AM_CFLAGS) -I../../common/pqclean_shims
|
||||
|
||||
libkemfrodokem1344shake_la_SOURCES = kem_frodokem1344shake.c pqclean_frodokem1344shake_clean/kem.c pqclean_frodokem1344shake_clean/matrix_shake.c pqclean_frodokem1344shake_clean/noise.c pqclean_frodokem1344shake_clean/util.c
|
||||
libkemfrodokem1344shake_la_CFLAGS = $(AM_CFLAGS) -I../../common/pqclean_shims
|
||||
|
@ -25,4 +25,48 @@ OQS_API OQS_STATUS OQS_KEM_frodokem_640_shake_encaps(uint8_t *ciphertext, uint8_
|
||||
OQS_API OQS_STATUS OQS_KEM_frodokem_640_shake_decaps(uint8_t *shared_secret, const unsigned char *ciphertext, const uint8_t *secret_key);
|
||||
#endif
|
||||
|
||||
#ifdef OQS_ENABLE_KEM_frodokem_976_aes
|
||||
#define OQS_KEM_frodokem_976_aes_length_public_key 15632
|
||||
#define OQS_KEM_frodokem_976_aes_length_secret_key 31296
|
||||
#define OQS_KEM_frodokem_976_aes_length_ciphertext 15744
|
||||
#define OQS_KEM_frodokem_976_aes_length_shared_secret 24
|
||||
OQS_KEM *OQS_KEM_frodokem_976_aes_new();
|
||||
OQS_API OQS_STATUS OQS_KEM_frodokem_976_aes_keypair(uint8_t *public_key, uint8_t *secret_key);
|
||||
OQS_API OQS_STATUS OQS_KEM_frodokem_976_aes_encaps(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key);
|
||||
OQS_API OQS_STATUS OQS_KEM_frodokem_976_aes_decaps(uint8_t *shared_secret, const unsigned char *ciphertext, const uint8_t *secret_key);
|
||||
#endif
|
||||
|
||||
#ifdef OQS_ENABLE_KEM_frodokem_976_shake
|
||||
#define OQS_KEM_frodokem_976_shake_length_public_key 15632
|
||||
#define OQS_KEM_frodokem_976_shake_length_secret_key 31296
|
||||
#define OQS_KEM_frodokem_976_shake_length_ciphertext 15744
|
||||
#define OQS_KEM_frodokem_976_shake_length_shared_secret 24
|
||||
OQS_KEM *OQS_KEM_frodokem_976_shake_new();
|
||||
OQS_API OQS_STATUS OQS_KEM_frodokem_976_shake_keypair(uint8_t *public_key, uint8_t *secret_key);
|
||||
OQS_API OQS_STATUS OQS_KEM_frodokem_976_shake_encaps(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key);
|
||||
OQS_API OQS_STATUS OQS_KEM_frodokem_976_shake_decaps(uint8_t *shared_secret, const unsigned char *ciphertext, const uint8_t *secret_key);
|
||||
#endif
|
||||
|
||||
#ifdef OQS_ENABLE_KEM_frodokem_1344_aes
|
||||
#define OQS_KEM_frodokem_1344_aes_length_public_key 21520
|
||||
#define OQS_KEM_frodokem_1344_aes_length_secret_key 43088
|
||||
#define OQS_KEM_frodokem_1344_aes_length_ciphertext 21632
|
||||
#define OQS_KEM_frodokem_1344_aes_length_shared_secret 32
|
||||
OQS_KEM *OQS_KEM_frodokem_1344_aes_new();
|
||||
OQS_API OQS_STATUS OQS_KEM_frodokem_1344_aes_keypair(uint8_t *public_key, uint8_t *secret_key);
|
||||
OQS_API OQS_STATUS OQS_KEM_frodokem_1344_aes_encaps(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key);
|
||||
OQS_API OQS_STATUS OQS_KEM_frodokem_1344_aes_decaps(uint8_t *shared_secret, const unsigned char *ciphertext, const uint8_t *secret_key);
|
||||
#endif
|
||||
|
||||
#ifdef OQS_ENABLE_KEM_frodokem_1344_shake
|
||||
#define OQS_KEM_frodokem_1344_shake_length_public_key 21520
|
||||
#define OQS_KEM_frodokem_1344_shake_length_secret_key 43088
|
||||
#define OQS_KEM_frodokem_1344_shake_length_ciphertext 21632
|
||||
#define OQS_KEM_frodokem_1344_shake_length_shared_secret 32
|
||||
OQS_KEM *OQS_KEM_frodokem_1344_shake_new();
|
||||
OQS_API OQS_STATUS OQS_KEM_frodokem_1344_shake_keypair(uint8_t *public_key, uint8_t *secret_key);
|
||||
OQS_API OQS_STATUS OQS_KEM_frodokem_1344_shake_encaps(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key);
|
||||
OQS_API OQS_STATUS OQS_KEM_frodokem_1344_shake_decaps(uint8_t *shared_secret, const unsigned char *ciphertext, const uint8_t *secret_key);
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
50
src/kem/frodokem/kem_frodokem1344aes.c
Normal file
50
src/kem/frodokem/kem_frodokem1344aes.c
Normal file
@ -0,0 +1,50 @@
|
||||
#include <stdlib.h>
|
||||
|
||||
#include <oqs/kem_frodokem.h>
|
||||
|
||||
#ifdef OQS_ENABLE_KEM_frodokem_1344_aes
|
||||
|
||||
OQS_KEM *OQS_KEM_frodokem_1344_aes_new() {
|
||||
|
||||
OQS_KEM *kem = malloc(sizeof(OQS_KEM));
|
||||
if (kem == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
kem->method_name = OQS_KEM_alg_frodokem_1344_aes;
|
||||
kem->alg_version = "https://github.com/PQClean/PQClean/commit/e72fd489baaef597715aa4335ceeea4362301b55";
|
||||
|
||||
kem->claimed_nist_level = 5;
|
||||
kem->ind_cca = true;
|
||||
|
||||
kem->length_public_key = OQS_KEM_frodokem_1344_aes_length_public_key;
|
||||
kem->length_secret_key = OQS_KEM_frodokem_1344_aes_length_secret_key;
|
||||
kem->length_ciphertext = OQS_KEM_frodokem_1344_aes_length_ciphertext;
|
||||
kem->length_shared_secret = OQS_KEM_frodokem_1344_aes_length_shared_secret;
|
||||
|
||||
kem->keypair = OQS_KEM_frodokem_1344_aes_keypair;
|
||||
kem->encaps = OQS_KEM_frodokem_1344_aes_encaps;
|
||||
kem->decaps = OQS_KEM_frodokem_1344_aes_decaps;
|
||||
|
||||
return kem;
|
||||
}
|
||||
|
||||
int PQCLEAN_FRODOKEM1344AES_CLEAN_crypto_kem_keypair(unsigned char *pk, unsigned char *sk);
|
||||
int PQCLEAN_FRODOKEM1344AES_CLEAN_crypto_kem_enc(unsigned char *ct, unsigned char *ss, const unsigned char *pk);
|
||||
int PQCLEAN_FRODOKEM1344AES_CLEAN_crypto_kem_dec(unsigned char *ss, const unsigned char *ct, const unsigned char *sk);
|
||||
|
||||
OQS_API OQS_STATUS OQS_KEM_frodokem_1344_aes_keypair(uint8_t *public_key,
|
||||
uint8_t *secret_key) {
|
||||
return (OQS_STATUS) PQCLEAN_FRODOKEM1344AES_CLEAN_crypto_kem_keypair(public_key, secret_key);
|
||||
}
|
||||
OQS_API OQS_STATUS OQS_KEM_frodokem_1344_aes_encaps(uint8_t *ciphertext,
|
||||
uint8_t *shared_secret,
|
||||
const uint8_t *public_key) {
|
||||
return (OQS_STATUS) PQCLEAN_FRODOKEM1344AES_CLEAN_crypto_kem_enc(ciphertext, shared_secret, public_key);
|
||||
}
|
||||
OQS_API OQS_STATUS OQS_KEM_frodokem_1344_aes_decaps(uint8_t *shared_secret,
|
||||
const unsigned char *ciphertext,
|
||||
const uint8_t *secret_key) {
|
||||
return (OQS_STATUS) PQCLEAN_FRODOKEM1344AES_CLEAN_crypto_kem_dec(shared_secret, ciphertext, secret_key);
|
||||
}
|
||||
|
||||
#endif
|
50
src/kem/frodokem/kem_frodokem1344shake.c
Normal file
50
src/kem/frodokem/kem_frodokem1344shake.c
Normal file
@ -0,0 +1,50 @@
|
||||
#include <stdlib.h>
|
||||
|
||||
#include <oqs/kem_frodokem.h>
|
||||
|
||||
#ifdef OQS_ENABLE_KEM_frodokem_1344_shake
|
||||
|
||||
OQS_KEM *OQS_KEM_frodokem_1344_shake_new() {
|
||||
|
||||
OQS_KEM *kem = malloc(sizeof(OQS_KEM));
|
||||
if (kem == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
kem->method_name = OQS_KEM_alg_frodokem_1344_shake;
|
||||
kem->alg_version = "https://github.com/PQClean/PQClean/commit/e72fd489baaef597715aa4335ceeea4362301b55";
|
||||
|
||||
kem->claimed_nist_level = 5;
|
||||
kem->ind_cca = true;
|
||||
|
||||
kem->length_public_key = OQS_KEM_frodokem_1344_shake_length_public_key;
|
||||
kem->length_secret_key = OQS_KEM_frodokem_1344_shake_length_secret_key;
|
||||
kem->length_ciphertext = OQS_KEM_frodokem_1344_shake_length_ciphertext;
|
||||
kem->length_shared_secret = OQS_KEM_frodokem_1344_shake_length_shared_secret;
|
||||
|
||||
kem->keypair = OQS_KEM_frodokem_1344_shake_keypair;
|
||||
kem->encaps = OQS_KEM_frodokem_1344_shake_encaps;
|
||||
kem->decaps = OQS_KEM_frodokem_1344_shake_decaps;
|
||||
|
||||
return kem;
|
||||
}
|
||||
|
||||
int PQCLEAN_FRODOKEM1344SHAKE_CLEAN_crypto_kem_keypair(unsigned char *pk, unsigned char *sk);
|
||||
int PQCLEAN_FRODOKEM1344SHAKE_CLEAN_crypto_kem_enc(unsigned char *ct, unsigned char *ss, const unsigned char *pk);
|
||||
int PQCLEAN_FRODOKEM1344SHAKE_CLEAN_crypto_kem_dec(unsigned char *ss, const unsigned char *ct, const unsigned char *sk);
|
||||
|
||||
OQS_API OQS_STATUS OQS_KEM_frodokem_1344_shake_keypair(uint8_t *public_key,
|
||||
uint8_t *secret_key) {
|
||||
return (OQS_STATUS) PQCLEAN_FRODOKEM1344SHAKE_CLEAN_crypto_kem_keypair(public_key, secret_key);
|
||||
}
|
||||
OQS_API OQS_STATUS OQS_KEM_frodokem_1344_shake_encaps(uint8_t *ciphertext,
|
||||
uint8_t *shared_secret,
|
||||
const uint8_t *public_key) {
|
||||
return (OQS_STATUS) PQCLEAN_FRODOKEM1344SHAKE_CLEAN_crypto_kem_enc(ciphertext, shared_secret, public_key);
|
||||
}
|
||||
OQS_API OQS_STATUS OQS_KEM_frodokem_1344_shake_decaps(uint8_t *shared_secret,
|
||||
const unsigned char *ciphertext,
|
||||
const uint8_t *secret_key) {
|
||||
return (OQS_STATUS) PQCLEAN_FRODOKEM1344SHAKE_CLEAN_crypto_kem_dec(shared_secret, ciphertext, secret_key);
|
||||
}
|
||||
|
||||
#endif
|
50
src/kem/frodokem/kem_frodokem976aes.c
Normal file
50
src/kem/frodokem/kem_frodokem976aes.c
Normal file
@ -0,0 +1,50 @@
|
||||
#include <stdlib.h>
|
||||
|
||||
#include <oqs/kem_frodokem.h>
|
||||
|
||||
#ifdef OQS_ENABLE_KEM_frodokem_976_aes
|
||||
|
||||
OQS_KEM *OQS_KEM_frodokem_976_aes_new() {
|
||||
|
||||
OQS_KEM *kem = malloc(sizeof(OQS_KEM));
|
||||
if (kem == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
kem->method_name = OQS_KEM_alg_frodokem_976_aes;
|
||||
kem->alg_version = "https://github.com/PQClean/PQClean/commit/e72fd489baaef597715aa4335ceeea4362301b55";
|
||||
|
||||
kem->claimed_nist_level = 3;
|
||||
kem->ind_cca = true;
|
||||
|
||||
kem->length_public_key = OQS_KEM_frodokem_976_aes_length_public_key;
|
||||
kem->length_secret_key = OQS_KEM_frodokem_976_aes_length_secret_key;
|
||||
kem->length_ciphertext = OQS_KEM_frodokem_976_aes_length_ciphertext;
|
||||
kem->length_shared_secret = OQS_KEM_frodokem_976_aes_length_shared_secret;
|
||||
|
||||
kem->keypair = OQS_KEM_frodokem_976_aes_keypair;
|
||||
kem->encaps = OQS_KEM_frodokem_976_aes_encaps;
|
||||
kem->decaps = OQS_KEM_frodokem_976_aes_decaps;
|
||||
|
||||
return kem;
|
||||
}
|
||||
|
||||
int PQCLEAN_FRODOKEM976AES_CLEAN_crypto_kem_keypair(unsigned char *pk, unsigned char *sk);
|
||||
int PQCLEAN_FRODOKEM976AES_CLEAN_crypto_kem_enc(unsigned char *ct, unsigned char *ss, const unsigned char *pk);
|
||||
int PQCLEAN_FRODOKEM976AES_CLEAN_crypto_kem_dec(unsigned char *ss, const unsigned char *ct, const unsigned char *sk);
|
||||
|
||||
OQS_API OQS_STATUS OQS_KEM_frodokem_976_aes_keypair(uint8_t *public_key,
|
||||
uint8_t *secret_key) {
|
||||
return (OQS_STATUS) PQCLEAN_FRODOKEM976AES_CLEAN_crypto_kem_keypair(public_key, secret_key);
|
||||
}
|
||||
OQS_API OQS_STATUS OQS_KEM_frodokem_976_aes_encaps(uint8_t *ciphertext,
|
||||
uint8_t *shared_secret,
|
||||
const uint8_t *public_key) {
|
||||
return (OQS_STATUS) PQCLEAN_FRODOKEM976AES_CLEAN_crypto_kem_enc(ciphertext, shared_secret, public_key);
|
||||
}
|
||||
OQS_API OQS_STATUS OQS_KEM_frodokem_976_aes_decaps(uint8_t *shared_secret,
|
||||
const unsigned char *ciphertext,
|
||||
const uint8_t *secret_key) {
|
||||
return (OQS_STATUS) PQCLEAN_FRODOKEM976AES_CLEAN_crypto_kem_dec(shared_secret, ciphertext, secret_key);
|
||||
}
|
||||
|
||||
#endif
|
50
src/kem/frodokem/kem_frodokem976shake.c
Normal file
50
src/kem/frodokem/kem_frodokem976shake.c
Normal file
@ -0,0 +1,50 @@
|
||||
#include <stdlib.h>
|
||||
|
||||
#include <oqs/kem_frodokem.h>
|
||||
|
||||
#ifdef OQS_ENABLE_KEM_frodokem_976_shake
|
||||
|
||||
OQS_KEM *OQS_KEM_frodokem_976_shake_new() {
|
||||
|
||||
OQS_KEM *kem = malloc(sizeof(OQS_KEM));
|
||||
if (kem == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
kem->method_name = OQS_KEM_alg_frodokem_976_shake;
|
||||
kem->alg_version = "https://github.com/PQClean/PQClean/commit/e72fd489baaef597715aa4335ceeea4362301b55";
|
||||
|
||||
kem->claimed_nist_level = 3;
|
||||
kem->ind_cca = true;
|
||||
|
||||
kem->length_public_key = OQS_KEM_frodokem_976_shake_length_public_key;
|
||||
kem->length_secret_key = OQS_KEM_frodokem_976_shake_length_secret_key;
|
||||
kem->length_ciphertext = OQS_KEM_frodokem_976_shake_length_ciphertext;
|
||||
kem->length_shared_secret = OQS_KEM_frodokem_976_shake_length_shared_secret;
|
||||
|
||||
kem->keypair = OQS_KEM_frodokem_976_shake_keypair;
|
||||
kem->encaps = OQS_KEM_frodokem_976_shake_encaps;
|
||||
kem->decaps = OQS_KEM_frodokem_976_shake_decaps;
|
||||
|
||||
return kem;
|
||||
}
|
||||
|
||||
int PQCLEAN_FRODOKEM976SHAKE_CLEAN_crypto_kem_keypair(unsigned char *pk, unsigned char *sk);
|
||||
int PQCLEAN_FRODOKEM976SHAKE_CLEAN_crypto_kem_enc(unsigned char *ct, unsigned char *ss, const unsigned char *pk);
|
||||
int PQCLEAN_FRODOKEM976SHAKE_CLEAN_crypto_kem_dec(unsigned char *ss, const unsigned char *ct, const unsigned char *sk);
|
||||
|
||||
OQS_API OQS_STATUS OQS_KEM_frodokem_976_shake_keypair(uint8_t *public_key,
|
||||
uint8_t *secret_key) {
|
||||
return (OQS_STATUS) PQCLEAN_FRODOKEM976SHAKE_CLEAN_crypto_kem_keypair(public_key, secret_key);
|
||||
}
|
||||
OQS_API OQS_STATUS OQS_KEM_frodokem_976_shake_encaps(uint8_t *ciphertext,
|
||||
uint8_t *shared_secret,
|
||||
const uint8_t *public_key) {
|
||||
return (OQS_STATUS) PQCLEAN_FRODOKEM976SHAKE_CLEAN_crypto_kem_enc(ciphertext, shared_secret, public_key);
|
||||
}
|
||||
OQS_API OQS_STATUS OQS_KEM_frodokem_976_shake_decaps(uint8_t *shared_secret,
|
||||
const unsigned char *ciphertext,
|
||||
const uint8_t *secret_key) {
|
||||
return (OQS_STATUS) PQCLEAN_FRODOKEM976SHAKE_CLEAN_crypto_kem_dec(shared_secret, ciphertext, secret_key);
|
||||
}
|
||||
|
||||
#endif
|
@ -13,7 +13,7 @@ OQS_API const char *OQS_KEM_alg_identifier(size_t i) {
|
||||
const char *a[OQS_KEM_algs_length] = {
|
||||
OQS_KEM_alg_default,
|
||||
OQS_KEM_alg_bike1_l1, OQS_KEM_alg_bike1_l3, OQS_KEM_alg_bike1_l5, OQS_KEM_alg_bike2_l1, OQS_KEM_alg_bike2_l3, OQS_KEM_alg_bike2_l5, OQS_KEM_alg_bike3_l1, OQS_KEM_alg_bike3_l3, OQS_KEM_alg_bike3_l5,
|
||||
OQS_KEM_alg_frodokem_640_aes, OQS_KEM_alg_frodokem_640_shake,
|
||||
OQS_KEM_alg_frodokem_640_aes, OQS_KEM_alg_frodokem_640_shake, OQS_KEM_alg_frodokem_976_aes, OQS_KEM_alg_frodokem_976_shake, OQS_KEM_alg_frodokem_1344_aes, OQS_KEM_alg_frodokem_1344_shake,
|
||||
OQS_KEM_alg_newhope_512_cca_kem, OQS_KEM_alg_newhope_1024_cca_kem,
|
||||
OQS_KEM_alg_kyber_512_cca_kem, OQS_KEM_alg_kyber_768_cca_kem, OQS_KEM_alg_kyber_1024_cca_kem,
|
||||
OQS_KEM_alg_sidh_p503, OQS_KEM_alg_sidh_p751,
|
||||
@ -97,6 +97,30 @@ OQS_API OQS_KEM *OQS_KEM_new(const char *method_name) {
|
||||
return OQS_KEM_frodokem_640_shake_new();
|
||||
#else
|
||||
return NULL;
|
||||
#endif
|
||||
} else if (0 == strcasecmp(method_name, OQS_KEM_alg_frodokem_976_aes)) {
|
||||
#ifdef OQS_ENABLE_KEM_frodokem_976_aes
|
||||
return OQS_KEM_frodokem_976_aes_new();
|
||||
#else
|
||||
return NULL;
|
||||
#endif
|
||||
} else if (0 == strcasecmp(method_name, OQS_KEM_alg_frodokem_976_shake)) {
|
||||
#ifdef OQS_ENABLE_KEM_frodokem_976_shake
|
||||
return OQS_KEM_frodokem_976_shake_new();
|
||||
#else
|
||||
return NULL;
|
||||
#endif
|
||||
} else if (0 == strcasecmp(method_name, OQS_KEM_alg_frodokem_1344_aes)) {
|
||||
#ifdef OQS_ENABLE_KEM_frodokem_1344_aes
|
||||
return OQS_KEM_frodokem_1344_aes_new();
|
||||
#else
|
||||
return NULL;
|
||||
#endif
|
||||
} else if (0 == strcasecmp(method_name, OQS_KEM_alg_frodokem_1344_shake)) {
|
||||
#ifdef OQS_ENABLE_KEM_frodokem_1344_shake
|
||||
return OQS_KEM_frodokem_1344_shake_new();
|
||||
#else
|
||||
return NULL;
|
||||
#endif
|
||||
} else if (0 == strcasecmp(method_name, OQS_KEM_alg_newhope_512_cca_kem)) {
|
||||
#ifdef OQS_ENABLE_KEM_newhope_512_cca_kem
|
||||
|
@ -49,6 +49,14 @@
|
||||
#define OQS_KEM_alg_frodokem_640_aes "FrodoKEM-640-AES"
|
||||
/** Algorithm identifier for FrodoKEM-640-SHAKE KEM. */
|
||||
#define OQS_KEM_alg_frodokem_640_shake "FrodoKEM-640-SHAKE"
|
||||
/** Algorithm identifier for FrodoKEM-976-AES KEM. */
|
||||
#define OQS_KEM_alg_frodokem_976_aes "FrodoKEM-976-AES"
|
||||
/** Algorithm identifier for FrodoKEM-976-SHAKE KEM. */
|
||||
#define OQS_KEM_alg_frodokem_976_shake "FrodoKEM-976-SHAKE"
|
||||
/** Algorithm identifier for FrodoKEM-1344-AES KEM. */
|
||||
#define OQS_KEM_alg_frodokem_1344_aes "FrodoKEM-1344-AES"
|
||||
/** Algorithm identifier for FrodoKEM-1344-SHAKE KEM. */
|
||||
#define OQS_KEM_alg_frodokem_1344_shake "FrodoKEM-1344-SHAKE"
|
||||
/** Algorithm identifier for NewHope-512-CCA-KEM KEM. */
|
||||
#define OQS_KEM_alg_newhope_512_cca_kem "NewHope-512-CCA-KEM"
|
||||
/** Algorithm identifier for NewHope-1024-CCA-KEM KEM. */
|
||||
@ -69,7 +77,7 @@
|
||||
#define OQS_KEM_alg_sike_p751 "Sike-p751"
|
||||
// EDIT-WHEN-ADDING-KEM
|
||||
/** Number of algorithm identifiers above. */
|
||||
#define OQS_KEM_algs_length 21
|
||||
#define OQS_KEM_algs_length 25
|
||||
/** The default KEM. */
|
||||
#define OQS_KEM_DEFAULT OQS_KEM_alg_sike_p503
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user