diff --git a/crypto_kem/saber/clean/LICENSE b/crypto_kem/saber/clean/LICENSE index cb00a6e3..1333ed77 100644 --- a/crypto_kem/saber/clean/LICENSE +++ b/crypto_kem/saber/clean/LICENSE @@ -1,8 +1 @@ -`Software implementation of Rainbow for NIST R2 submission' by Ming-Shing Chen - -To the extent possible under law, the person who associated CC0 with -`Software implementation of Rainbow for NIST R2 submission' has waived all copyright and related or neighboring rights -to `Software implementation of Rainbow for NIST R2 submission'. - -You should have received a copy of the CC0 legalcode along with this -work. If not, see . +TODO diff --git a/crypto_kem/saber/clean/SABER_indcpa.c b/crypto_kem/saber/clean/SABER_indcpa.c index 81e2b56c..c5f113a7 100644 --- a/crypto_kem/saber/clean/SABER_indcpa.c +++ b/crypto_kem/saber/clean/SABER_indcpa.c @@ -202,13 +202,7 @@ void PQCLEAN_SABER_CLEAN_indcpa_kem_enc(const unsigned char *message_received, u } - #if Saber_type == 1 - PQCLEAN_SABER_CLEAN_pack_3bit(msk_c, vprime); - #elif Saber_type == 2 PQCLEAN_SABER_CLEAN_pack_4bit(msk_c, vprime); - #elif Saber_type == 3 - PQCLEAN_SABER_CLEAN_pack_6bit(msk_c, vprime); - #endif for (j = 0; j < SABER_SCALEBYTES_KEM; j++) { @@ -258,13 +252,7 @@ void PQCLEAN_SABER_CLEAN_indcpa_kem_dec(const unsigned char *sk, const unsigned scale_ar[i] = ciphertext[SABER_POLYVECCOMPRESSEDBYTES + i]; } - #if Saber_type == 1 - PQCLEAN_SABER_CLEAN_un_pack3bit(scale_ar, op); - #elif Saber_type == 2 PQCLEAN_SABER_CLEAN_un_pack4bit(scale_ar, op); - #elif Saber_type == 3 - PQCLEAN_SABER_CLEAN_un_pack6bit(scale_ar, op); - #endif //addition of h1 diff --git a/crypto_kem/saber/clean/SABER_params.h b/crypto_kem/saber/clean/SABER_params.h index cc5ff82a..faa9f6db 100644 --- a/crypto_kem/saber/clean/SABER_params.h +++ b/crypto_kem/saber/clean/SABER_params.h @@ -1,23 +1,12 @@ -#include "api.h" - #ifndef PARAMS_H #define PARAMS_H -#if Saber_type == 1 -#define SABER_K 2 -#define SABER_MU 10 -#define SABER_ET 3 +#include "api.h" -#elif Saber_type == 2 #define SABER_K 3 #define SABER_MU 8 #define SABER_ET 4 -#elif Saber_type == 3 -#define SABER_K 4 -#define SABER_MU 6 -#define SABER_ET 6 -#endif #define SABER_EQ 13 #define SABER_EP 10 diff --git a/crypto_kem/saber/clean/api.h b/crypto_kem/saber/clean/api.h index f54078a5..66c3b8bf 100644 --- a/crypto_kem/saber/clean/api.h +++ b/crypto_kem/saber/clean/api.h @@ -7,8 +7,6 @@ #define PQCLEAN_SABER_CLEAN_CRYPTO_BYTES 32 #define PQCLEAN_SABER_CLEAN_CRYPTO_CIPHERTEXTBYTES 1088 -#define Saber_type 2 - int PQCLEAN_SABER_CLEAN_crypto_kem_keypair(unsigned char *pk, unsigned char *sk); int PQCLEAN_SABER_CLEAN_crypto_kem_enc(unsigned char *ct, unsigned char *ss, const unsigned char *pk); int PQCLEAN_SABER_CLEAN_crypto_kem_dec(unsigned char *ss, const unsigned char *ct, const unsigned char *sk); diff --git a/crypto_kem/saber/clean/cbd.c b/crypto_kem/saber/clean/cbd.c index 9fb397cb..a2d9fcdd 100644 --- a/crypto_kem/saber/clean/cbd.c +++ b/crypto_kem/saber/clean/cbd.c @@ -24,33 +24,6 @@ static uint64_t load_littleendian(const unsigned char *x, int bytes) { void PQCLEAN_SABER_CLEAN_cbd(uint16_t *r, const unsigned char *buf) { uint16_t Qmod_minus1 = SABER_Q - 1; - #if Saber_type == 3 - uint32_t t, d, a[4], b[4]; - int i, j; - - for (i = 0; i < SABER_N / 4; i++) { - t = load_littleendian(buf + 3 * i, 3); - d = 0; - for (j = 0; j < 3; j++) { - d += (t >> j) & 0x249249; - } - - a[0] = d & 0x7; - b[0] = (d >> 3) & 0x7; - a[1] = (d >> 6) & 0x7; - b[1] = (d >> 9) & 0x7; - a[2] = (d >> 12) & 0x7; - b[2] = (d >> 15) & 0x7; - a[3] = (d >> 18) & 0x7; - b[3] = (d >> 21); - - r[4 * i + 0] = (uint16_t)(a[0] - b[0]) & Qmod_minus1; - r[4 * i + 1] = (uint16_t)(a[1] - b[1]) & Qmod_minus1; - r[4 * i + 2] = (uint16_t)(a[2] - b[2]) & Qmod_minus1; - r[4 * i + 3] = (uint16_t)(a[3] - b[3]) & Qmod_minus1; - - } - #elif Saber_type == 2 uint32_t t, d, a[4], b[4]; int i, j; @@ -75,32 +48,4 @@ void PQCLEAN_SABER_CLEAN_cbd(uint16_t *r, const unsigned char *buf) { r[4 * i + 2] = (uint16_t)(a[2] - b[2]) & Qmod_minus1; r[4 * i + 3] = (uint16_t)(a[3] - b[3]) & Qmod_minus1; } - #elif Saber_type == 1 - uint64_t t, d, a[4], b[4]; - int i, j; - - for (i = 0; i < SABER_N / 4; i++) { - t = load_littleendian(buf + 5 * i, 5); - d = 0; - for (j = 0; j < 5; j++) { - d += (t >> j) & 0x0842108421UL; - } - - a[0] = d & 0x1f; - b[0] = (d >> 5) & 0x1f; - a[1] = (d >> 10) & 0x1f; - b[1] = (d >> 15) & 0x1f; - a[2] = (d >> 20) & 0x1f; - b[2] = (d >> 25) & 0x1f; - a[3] = (d >> 30) & 0x1f; - b[3] = (d >> 35); - - r[4 * i + 0] = (uint16_t)(a[0] - b[0]) & Qmod_minus1; - r[4 * i + 1] = (uint16_t)(a[1] - b[1]) & Qmod_minus1; - r[4 * i + 2] = (uint16_t)(a[2] - b[2]) & Qmod_minus1; - r[4 * i + 3] = (uint16_t)(a[3] - b[3]) & Qmod_minus1; - } - #else -#error "Unsupported SABER parameter." - #endif }