]> git.ipfire.org Git - thirdparty/strongswan.git/commitdiff
ntru: Define small modulus p = 3 for trits as a constant ntru-ng
authorAndreas Steffen <andreas.steffen@strongswan.org>
Thu, 3 Sep 2015 11:24:08 +0000 (13:24 +0200)
committerAndreas Steffen <andreas.steffen@strongswan.org>
Thu, 3 Sep 2015 11:24:08 +0000 (13:24 +0200)
src/libstrongswan/plugins/ntru/ntru_convert.c
src/libstrongswan/plugins/ntru/ntru_convert.h
src/libstrongswan/plugins/ntru/ntru_private_key.c
src/libstrongswan/plugins/ntru/ntru_public_key.c

index 6330b2e39f33453a765b7ffb807578edae331b81..ffdd5c6d5cbe21d452ecfedde0d7128c793e234c 100644 (file)
@@ -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;
        }
 }
 
index 31594b1f6c7a76ceca419d8a3495e72d499dd972..84139d92d43139190e104dfc22ae5bcadfc073dd 100644 (file)
@@ -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
 
 #include <library.h>
 
+/**
+ * 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.
index fa87fe9c31aa15a78eb32ef806714cb90ff83ff6..b0dab1146e29c6856429d2d779a146e33349a3ad 100644 (file)
@@ -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 */
index a2ff1b2b04b99c4b5c0e25c87fccb75e6f5b1b4a..ac15d2305b4bbf90e27e6ad722ca8c5937ddfc39 100644 (file)
@@ -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;
                                }
                        }
                }