remove pre-processor conditionals

Этот коммит содержится в:
Matthias J. Kannwischer 2019-06-18 16:08:32 +02:00
родитель 510a7baee8
Коммит 15a9e77b4c
5 изменённых файлов: 2 добавлений и 89 удалений

Просмотреть файл

@ -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 <http://creativecommons.org/publicdomain/zero/1.0/>.
TODO

Просмотреть файл

@ -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

Просмотреть файл

@ -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

Просмотреть файл

@ -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);

Просмотреть файл

@ -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
}