From: Andreas Steffen Date: Thu, 3 Sep 2015 11:24:08 +0000 (+0200) Subject: ntru: Define small modulus p = 3 for trits as a constant X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=refs%2Fheads%2Fntru-ng;p=thirdparty%2Fstrongswan.git ntru: Define small modulus p = 3 for trits as a constant --- diff --git a/src/libstrongswan/plugins/ntru/ntru_convert.c b/src/libstrongswan/plugins/ntru/ntru_convert.c index 6330b2e39f..ffdd5c6d5c 100644 --- a/src/libstrongswan/plugins/ntru/ntru_convert.c +++ b/src/libstrongswan/plugins/ntru/ntru_convert.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2014 Andreas Steffen + * Copyright (C) 2014-2015 Andreas Steffen * HSR Hochschule fuer Technik Rapperswil * * Copyright (C) 2009-2013 Security Innovation @@ -269,8 +269,8 @@ void ntru_octet_2_trits(uint8_t octet, uint8_t *trits) for (i = 0; i < 5; i++) { - trits[i] = octet % 3; - octet = (octet - trits[i]) / 3; + trits[i] = octet % p; + octet = (octet - trits[i]) / p; } } diff --git a/src/libstrongswan/plugins/ntru/ntru_convert.h b/src/libstrongswan/plugins/ntru/ntru_convert.h index 31594b1f6c..84139d92d4 100644 --- a/src/libstrongswan/plugins/ntru/ntru_convert.h +++ b/src/libstrongswan/plugins/ntru/ntru_convert.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2014 Andreas Steffen + * Copyright (C) 2014-2015 Andreas Steffen * HSR Hochschule fuer Technik Rapperswil * * Copyright (C) 2009-2013 Security Innovation @@ -25,6 +25,11 @@ #include +/** + * Define small modulus p = 3 used for trits + */ +#define p 3 + /** * Each 3 bits in an array of octets is converted to 2 trits in an array * of trits. diff --git a/src/libstrongswan/plugins/ntru/ntru_private_key.c b/src/libstrongswan/plugins/ntru/ntru_private_key.c index fa87fe9c31..b0dab1146e 100644 --- a/src/libstrongswan/plugins/ntru/ntru_private_key.c +++ b/src/libstrongswan/plugins/ntru/ntru_private_key.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2014 Andreas Steffen + * Copyright (C) 2014-2015 Andreas Steffen * HSR Hochschule fuer Technik Rapperswil * * Copyright (C) 2009-2013 Security Innovation @@ -212,7 +212,7 @@ METHOD(ntru_private_key_t, decrypt, bool, /* set constants */ mod_q_mask = this->params->q - 1; - q_mod_p = this->params->q % 3; + q_mod_p = this->params->q % p; /* unpack the ciphertext */ ntru_octets_2_elements(ciphertext.len, ciphertext.ptr, @@ -232,12 +232,12 @@ METHOD(ntru_private_key_t, decrypt, bool, --cmprime_len; for (i = 0; i < cmprime_len; i++) { - t1[i] = (t2[i] + 3 * t1[i]) & mod_q_mask; + t1[i] = (t2[i] + p * t1[i]) & mod_q_mask; if (t1[i] >= (this->params->q / 2)) { t1[i] -= q_mod_p; } - Mtrin[i] = (uint8_t)(t1[i] % 3); + Mtrin[i] = (uint8_t)(t1[i] % p); if (Mtrin[i] == 1) { ++m1; @@ -252,12 +252,12 @@ METHOD(ntru_private_key_t, decrypt, bool, { for (i = 0; i < cmprime_len; i++) { - t1[i] = (t2[i] + 3 * t1[i]) & mod_q_mask; + t1[i] = (t2[i] + p * t1[i]) & mod_q_mask; if (t1[i] >= (this->params->q / 2)) { t1[i] -= q_mod_p; } - Mtrin[i] = (uint8_t)(t1[i] % 3); + Mtrin[i] = (uint8_t)(t1[i] % p); } } @@ -321,9 +321,9 @@ METHOD(ntru_private_key_t, decrypt, bool, for (i = 0; i < cmprime_len; i++) { Mtrin[i] -= mask_trits[i]; - if (Mtrin[i] >= 3) + if (Mtrin[i] >= p) { - Mtrin[i] += 3; + Mtrin[i] += p; } } mask->destroy(mask); @@ -708,7 +708,7 @@ ntru_private_key_t *ntru_private_key_create(ntru_drbg_t *drbg, /* form f = 1 + pF */ for (i = 0; i < params->N; i++) { - t1[i] = (t1[i] * 3) & mod_q_mask; + t1[i] = (p * t1[i]) & mod_q_mask; } t1[0] = (t1[0] + 1) & mod_q_mask; @@ -743,7 +743,7 @@ ntru_private_key_t *ntru_private_key_create(ntru_drbg_t *drbg, for (i = 0; i < params->N; i++) { - this->pubkey[i] = (t2[i] * 3) & mod_q_mask; + this->pubkey[i] = (p * t2[i]) & mod_q_mask; } /* cleanup temporary storage */ diff --git a/src/libstrongswan/plugins/ntru/ntru_public_key.c b/src/libstrongswan/plugins/ntru/ntru_public_key.c index a2ff1b2b04..ac15d2305b 100644 --- a/src/libstrongswan/plugins/ntru/ntru_public_key.c +++ b/src/libstrongswan/plugins/ntru/ntru_public_key.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2014 Andreas Steffen + * Copyright (C) 2014-2015 Andreas Steffen * HSR Hochschule fuer Technik Rapperswil * * Copyright (C) 2009-2013 Security Innovation @@ -233,9 +233,9 @@ METHOD(ntru_public_key_t, encrypt, bool, for (i = 0; i < mprime_len; i++) { t2[i] = mask_trits[i] + Mtrin[i]; - if (t2[i] >= 3) + if (t2[i] >= p) { - t2[i] -= 3; + t2[i] -= p; } if (t2[i] == 1) { @@ -252,9 +252,9 @@ METHOD(ntru_public_key_t, encrypt, bool, for (i = 0; i < mprime_len; i++) { t2[i] = mask_trits[i] + Mtrin[i]; - if (t2[i] >= 3) + if (t2[i] >= p) { - t2[i] -= 3; + t2[i] -= p; } } }