]> git.feebdaed.xyz Git - 0xmirror/liboqs.git/commitdiff
Add Classic McEliece sanitization patch (#2218)
authorAiden Fox Ivey <aiden@aidenfoxivey.com>
Mon, 18 Aug 2025 14:04:23 +0000 (10:04 -0400)
committerGitHub <noreply@github.com>
Mon, 18 Aug 2025 14:04:23 +0000 (10:04 -0400)
* Add patches

Signed-off-by: Aiden Fox Ivey <aiden@aidenfoxivey.com>
* Add Classic McEliece sanitization patch

Signed-off-by: Aiden Fox Ivey <aiden@aidenfoxivey.com>
---------

Signed-off-by: Aiden Fox Ivey <aiden@aidenfoxivey.com>
44 files changed:
docs/algorithms/kem/classic_mceliece.md
docs/algorithms/kem/classic_mceliece.yml
scripts/copy_from_upstream/copy_from_upstream.yml
scripts/copy_from_upstream/patches/classic_mceliece_memset.patch [new file with mode: 0644]
src/kem/classic_mceliece/pqclean_mceliece348864_avx2/controlbits.c
src/kem/classic_mceliece/pqclean_mceliece348864_avx2/controlbits.h
src/kem/classic_mceliece/pqclean_mceliece348864_clean/controlbits.c
src/kem/classic_mceliece/pqclean_mceliece348864_clean/controlbits.h
src/kem/classic_mceliece/pqclean_mceliece348864f_avx2/controlbits.c
src/kem/classic_mceliece/pqclean_mceliece348864f_avx2/controlbits.h
src/kem/classic_mceliece/pqclean_mceliece348864f_clean/controlbits.c
src/kem/classic_mceliece/pqclean_mceliece348864f_clean/controlbits.h
src/kem/classic_mceliece/pqclean_mceliece460896_avx2/controlbits.c
src/kem/classic_mceliece/pqclean_mceliece460896_avx2/controlbits.h
src/kem/classic_mceliece/pqclean_mceliece460896_clean/controlbits.c
src/kem/classic_mceliece/pqclean_mceliece460896_clean/controlbits.h
src/kem/classic_mceliece/pqclean_mceliece460896f_avx2/controlbits.c
src/kem/classic_mceliece/pqclean_mceliece460896f_avx2/controlbits.h
src/kem/classic_mceliece/pqclean_mceliece460896f_clean/controlbits.c
src/kem/classic_mceliece/pqclean_mceliece460896f_clean/controlbits.h
src/kem/classic_mceliece/pqclean_mceliece6688128_avx2/controlbits.c
src/kem/classic_mceliece/pqclean_mceliece6688128_avx2/controlbits.h
src/kem/classic_mceliece/pqclean_mceliece6688128_clean/controlbits.c
src/kem/classic_mceliece/pqclean_mceliece6688128_clean/controlbits.h
src/kem/classic_mceliece/pqclean_mceliece6688128f_avx2/controlbits.c
src/kem/classic_mceliece/pqclean_mceliece6688128f_avx2/controlbits.h
src/kem/classic_mceliece/pqclean_mceliece6688128f_clean/controlbits.c
src/kem/classic_mceliece/pqclean_mceliece6688128f_clean/controlbits.h
src/kem/classic_mceliece/pqclean_mceliece6960119_avx2/controlbits.c
src/kem/classic_mceliece/pqclean_mceliece6960119_avx2/controlbits.h
src/kem/classic_mceliece/pqclean_mceliece6960119_clean/controlbits.c
src/kem/classic_mceliece/pqclean_mceliece6960119_clean/controlbits.h
src/kem/classic_mceliece/pqclean_mceliece6960119f_avx2/controlbits.c
src/kem/classic_mceliece/pqclean_mceliece6960119f_avx2/controlbits.h
src/kem/classic_mceliece/pqclean_mceliece6960119f_clean/controlbits.c
src/kem/classic_mceliece/pqclean_mceliece6960119f_clean/controlbits.h
src/kem/classic_mceliece/pqclean_mceliece8192128_avx2/controlbits.c
src/kem/classic_mceliece/pqclean_mceliece8192128_avx2/controlbits.h
src/kem/classic_mceliece/pqclean_mceliece8192128_clean/controlbits.c
src/kem/classic_mceliece/pqclean_mceliece8192128_clean/controlbits.h
src/kem/classic_mceliece/pqclean_mceliece8192128f_avx2/controlbits.c
src/kem/classic_mceliece/pqclean_mceliece8192128f_avx2/controlbits.h
src/kem/classic_mceliece/pqclean_mceliece8192128f_clean/controlbits.c
src/kem/classic_mceliece/pqclean_mceliece8192128f_clean/controlbits.h

index c6607e82f58b82aefd5c0c9924d9ce2ff71e1200..9caeff6adbcb6b81464f10d4fc0b95cb4d49523f 100644 (file)
@@ -6,7 +6,7 @@
 - **Authors' website**: https://classic.mceliece.org
 - **Specification version**: SUPERCOP-20221025.
 - **Primary Source**<a name="primary-source"></a>:
-  - **Source**: https://github.com/PQClean/PQClean/commit/1eacfdafc15ddc5d5759d0b85b4cef26627df181
+  - **Source**: https://github.com/PQClean/PQClean/commit/1eacfdafc15ddc5d5759d0b85b4cef26627df181 with copy_from_upstream patches
   - **Implementation license (SPDX-Identifier)**: Public domain
 - **Ancestors of primary source**:
   - SUPERCOP-20221025 "clean" and "avx2" implementations
index 385e6e08702b4b187e1944e78d2a37ea3ac334b1..bbc2483e4e91f338dde00d85e125904239238f22 100644 (file)
@@ -379,3 +379,4 @@ auxiliary-submitters: []
 primary-upstream:
   spdx-license-identifier: Public domain
   source: https://github.com/PQClean/PQClean/commit/1eacfdafc15ddc5d5759d0b85b4cef26627df181
+    with copy_from_upstream patches
index 80e333fd36eecf1624fd489e77f3acbbcea56ee5..4d9bf5823fa262788a2ed045faba33565c16c623 100644 (file)
@@ -20,7 +20,7 @@ upstreams:
     sig_meta_path: 'crypto_sign/{pqclean_scheme}/META.yml'
     kem_scheme_path: 'crypto_kem/{pqclean_scheme}'
     sig_scheme_path: 'crypto_sign/{pqclean_scheme}'
-    patches: [pqclean-sphincs.patch]
+    patches: [pqclean-sphincs.patch, classic_mceliece_memset.patch]
     ignore: pqclean_sphincs-shake-256s-simple_aarch64, pqclean_sphincs-shake-256s-simple_aarch64, pqclean_sphincs-shake-256f-simple_aarch64, pqclean_sphincs-shake-192s-simple_aarch64, pqclean_sphincs-shake-192f-simple_aarch64, pqclean_sphincs-shake-128s-simple_aarch64, pqclean_sphincs-shake-128f-simple_aarch64, pqclean_kyber512_aarch64, pqclean_kyber1024_aarch64, pqclean_kyber768_aarch64, pqclean_dilithium2_aarch64, pqclean_dilithium3_aarch64, pqclean_dilithium5_aarch64
   -
     name: pqcrystals-kyber
diff --git a/scripts/copy_from_upstream/patches/classic_mceliece_memset.patch b/scripts/copy_from_upstream/patches/classic_mceliece_memset.patch
new file mode 100644 (file)
index 0000000..e277a6e
--- /dev/null
@@ -0,0 +1,620 @@
+diff --git c/crypto_kem/mceliece348864/avx2/controlbits.c i/crypto_kem/mceliece348864/avx2/controlbits.c
+index ab32b1df..e14b5a8d 100644
+--- c/crypto_kem/mceliece348864/avx2/controlbits.c
++++ i/crypto_kem/mceliece348864/avx2/controlbits.c
+@@ -209,11 +209,11 @@ void controlbitsfrompermutation(unsigned char *out, const int16 *pi, long long w
+     int i;
+     unsigned char *ptr;
+-    memset(temp, 0, (size_t)n * 2);
+-    memset(pi_test, 0, (size_t)n);
++    OQS_MEM_cleanse(temp, (size_t)n * 2);
++    OQS_MEM_cleanse(pi_test, (size_t)n);
+     while (1) {
+-        memset(out, 0, (size_t)((((2 * w - 1)*n / 2) + 7) / 8));
++        OQS_MEM_cleanse(out, (size_t)((((2 * w - 1)*n / 2) + 7) / 8));
+         cbrecursion(out, 0, 1, pi, w, n, temp);
+         // check for correctness
+diff --git c/crypto_kem/mceliece348864/avx2/controlbits.h i/crypto_kem/mceliece348864/avx2/controlbits.h
+index d3d8227c..6996b5be 100644
+--- c/crypto_kem/mceliece348864/avx2/controlbits.h
++++ i/crypto_kem/mceliece348864/avx2/controlbits.h
+@@ -5,6 +5,7 @@
+ /* See also https://cr.yp.to/papers/controlbits-20200923.pdf */
+ #include "namespace.h"
++#include <oqs/common.h>
+ #define controlbitsfrompermutation CRYPTO_NAMESPACE(controlbitsfrompermutation)
+diff --git c/crypto_kem/mceliece348864/clean/controlbits.c i/crypto_kem/mceliece348864/clean/controlbits.c
+index ab32b1df..e14b5a8d 100644
+--- c/crypto_kem/mceliece348864/clean/controlbits.c
++++ i/crypto_kem/mceliece348864/clean/controlbits.c
+@@ -209,11 +209,11 @@ void controlbitsfrompermutation(unsigned char *out, const int16 *pi, long long w
+     int i;
+     unsigned char *ptr;
+-    memset(temp, 0, (size_t)n * 2);
+-    memset(pi_test, 0, (size_t)n);
++    OQS_MEM_cleanse(temp, (size_t)n * 2);
++    OQS_MEM_cleanse(pi_test, (size_t)n);
+     while (1) {
+-        memset(out, 0, (size_t)((((2 * w - 1)*n / 2) + 7) / 8));
++        OQS_MEM_cleanse(out, (size_t)((((2 * w - 1)*n / 2) + 7) / 8));
+         cbrecursion(out, 0, 1, pi, w, n, temp);
+         // check for correctness
+diff --git c/crypto_kem/mceliece348864/clean/controlbits.h i/crypto_kem/mceliece348864/clean/controlbits.h
+index d3d8227c..6996b5be 100644
+--- c/crypto_kem/mceliece348864/clean/controlbits.h
++++ i/crypto_kem/mceliece348864/clean/controlbits.h
+@@ -5,6 +5,7 @@
+ /* See also https://cr.yp.to/papers/controlbits-20200923.pdf */
+ #include "namespace.h"
++#include <oqs/common.h>
+ #define controlbitsfrompermutation CRYPTO_NAMESPACE(controlbitsfrompermutation)
+diff --git c/crypto_kem/mceliece348864f/avx2/controlbits.c i/crypto_kem/mceliece348864f/avx2/controlbits.c
+index ab32b1df..e14b5a8d 100644
+--- c/crypto_kem/mceliece348864f/avx2/controlbits.c
++++ i/crypto_kem/mceliece348864f/avx2/controlbits.c
+@@ -209,11 +209,11 @@ void controlbitsfrompermutation(unsigned char *out, const int16 *pi, long long w
+     int i;
+     unsigned char *ptr;
+-    memset(temp, 0, (size_t)n * 2);
+-    memset(pi_test, 0, (size_t)n);
++    OQS_MEM_cleanse(temp, (size_t)n * 2);
++    OQS_MEM_cleanse(pi_test, (size_t)n);
+     while (1) {
+-        memset(out, 0, (size_t)((((2 * w - 1)*n / 2) + 7) / 8));
++        OQS_MEM_cleanse(out, (size_t)((((2 * w - 1)*n / 2) + 7) / 8));
+         cbrecursion(out, 0, 1, pi, w, n, temp);
+         // check for correctness
+diff --git c/crypto_kem/mceliece348864f/avx2/controlbits.h i/crypto_kem/mceliece348864f/avx2/controlbits.h
+index d3d8227c..6996b5be 100644
+--- c/crypto_kem/mceliece348864f/avx2/controlbits.h
++++ i/crypto_kem/mceliece348864f/avx2/controlbits.h
+@@ -5,6 +5,7 @@
+ /* See also https://cr.yp.to/papers/controlbits-20200923.pdf */
+ #include "namespace.h"
++#include <oqs/common.h>
+ #define controlbitsfrompermutation CRYPTO_NAMESPACE(controlbitsfrompermutation)
+diff --git c/crypto_kem/mceliece348864f/clean/controlbits.c i/crypto_kem/mceliece348864f/clean/controlbits.c
+index ab32b1df..e14b5a8d 100644
+--- c/crypto_kem/mceliece348864f/clean/controlbits.c
++++ i/crypto_kem/mceliece348864f/clean/controlbits.c
+@@ -209,11 +209,11 @@ void controlbitsfrompermutation(unsigned char *out, const int16 *pi, long long w
+     int i;
+     unsigned char *ptr;
+-    memset(temp, 0, (size_t)n * 2);
+-    memset(pi_test, 0, (size_t)n);
++    OQS_MEM_cleanse(temp, (size_t)n * 2);
++    OQS_MEM_cleanse(pi_test, (size_t)n);
+     while (1) {
+-        memset(out, 0, (size_t)((((2 * w - 1)*n / 2) + 7) / 8));
++        OQS_MEM_cleanse(out, (size_t)((((2 * w - 1)*n / 2) + 7) / 8));
+         cbrecursion(out, 0, 1, pi, w, n, temp);
+         // check for correctness
+diff --git c/crypto_kem/mceliece348864f/clean/controlbits.h i/crypto_kem/mceliece348864f/clean/controlbits.h
+index d3d8227c..6996b5be 100644
+--- c/crypto_kem/mceliece348864f/clean/controlbits.h
++++ i/crypto_kem/mceliece348864f/clean/controlbits.h
+@@ -5,6 +5,7 @@
+ /* See also https://cr.yp.to/papers/controlbits-20200923.pdf */
+ #include "namespace.h"
++#include <oqs/common.h>
+ #define controlbitsfrompermutation CRYPTO_NAMESPACE(controlbitsfrompermutation)
+diff --git c/crypto_kem/mceliece460896/avx2/controlbits.c i/crypto_kem/mceliece460896/avx2/controlbits.c
+index ab32b1df..e14b5a8d 100644
+--- c/crypto_kem/mceliece460896/avx2/controlbits.c
++++ i/crypto_kem/mceliece460896/avx2/controlbits.c
+@@ -209,11 +209,11 @@ void controlbitsfrompermutation(unsigned char *out, const int16 *pi, long long w
+     int i;
+     unsigned char *ptr;
+-    memset(temp, 0, (size_t)n * 2);
+-    memset(pi_test, 0, (size_t)n);
++    OQS_MEM_cleanse(temp, (size_t)n * 2);
++    OQS_MEM_cleanse(pi_test, (size_t)n);
+     while (1) {
+-        memset(out, 0, (size_t)((((2 * w - 1)*n / 2) + 7) / 8));
++        OQS_MEM_cleanse(out, (size_t)((((2 * w - 1)*n / 2) + 7) / 8));
+         cbrecursion(out, 0, 1, pi, w, n, temp);
+         // check for correctness
+diff --git c/crypto_kem/mceliece460896/avx2/controlbits.h i/crypto_kem/mceliece460896/avx2/controlbits.h
+index d3d8227c..6996b5be 100644
+--- c/crypto_kem/mceliece460896/avx2/controlbits.h
++++ i/crypto_kem/mceliece460896/avx2/controlbits.h
+@@ -5,6 +5,7 @@
+ /* See also https://cr.yp.to/papers/controlbits-20200923.pdf */
+ #include "namespace.h"
++#include <oqs/common.h>
+ #define controlbitsfrompermutation CRYPTO_NAMESPACE(controlbitsfrompermutation)
+diff --git c/crypto_kem/mceliece460896/clean/controlbits.c i/crypto_kem/mceliece460896/clean/controlbits.c
+index ab32b1df..e14b5a8d 100644
+--- c/crypto_kem/mceliece460896/clean/controlbits.c
++++ i/crypto_kem/mceliece460896/clean/controlbits.c
+@@ -209,11 +209,11 @@ void controlbitsfrompermutation(unsigned char *out, const int16 *pi, long long w
+     int i;
+     unsigned char *ptr;
+-    memset(temp, 0, (size_t)n * 2);
+-    memset(pi_test, 0, (size_t)n);
++    OQS_MEM_cleanse(temp, (size_t)n * 2);
++    OQS_MEM_cleanse(pi_test, (size_t)n);
+     while (1) {
+-        memset(out, 0, (size_t)((((2 * w - 1)*n / 2) + 7) / 8));
++        OQS_MEM_cleanse(out, (size_t)((((2 * w - 1)*n / 2) + 7) / 8));
+         cbrecursion(out, 0, 1, pi, w, n, temp);
+         // check for correctness
+diff --git c/crypto_kem/mceliece460896/clean/controlbits.h i/crypto_kem/mceliece460896/clean/controlbits.h
+index d3d8227c..6996b5be 100644
+--- c/crypto_kem/mceliece460896/clean/controlbits.h
++++ i/crypto_kem/mceliece460896/clean/controlbits.h
+@@ -5,6 +5,7 @@
+ /* See also https://cr.yp.to/papers/controlbits-20200923.pdf */
+ #include "namespace.h"
++#include <oqs/common.h>
+ #define controlbitsfrompermutation CRYPTO_NAMESPACE(controlbitsfrompermutation)
+diff --git c/crypto_kem/mceliece460896f/avx2/controlbits.c i/crypto_kem/mceliece460896f/avx2/controlbits.c
+index ab32b1df..e14b5a8d 100644
+--- c/crypto_kem/mceliece460896f/avx2/controlbits.c
++++ i/crypto_kem/mceliece460896f/avx2/controlbits.c
+@@ -209,11 +209,11 @@ void controlbitsfrompermutation(unsigned char *out, const int16 *pi, long long w
+     int i;
+     unsigned char *ptr;
+-    memset(temp, 0, (size_t)n * 2);
+-    memset(pi_test, 0, (size_t)n);
++    OQS_MEM_cleanse(temp, (size_t)n * 2);
++    OQS_MEM_cleanse(pi_test, (size_t)n);
+     while (1) {
+-        memset(out, 0, (size_t)((((2 * w - 1)*n / 2) + 7) / 8));
++        OQS_MEM_cleanse(out, (size_t)((((2 * w - 1)*n / 2) + 7) / 8));
+         cbrecursion(out, 0, 1, pi, w, n, temp);
+         // check for correctness
+diff --git c/crypto_kem/mceliece460896f/avx2/controlbits.h i/crypto_kem/mceliece460896f/avx2/controlbits.h
+index d3d8227c..6996b5be 100644
+--- c/crypto_kem/mceliece460896f/avx2/controlbits.h
++++ i/crypto_kem/mceliece460896f/avx2/controlbits.h
+@@ -5,6 +5,7 @@
+ /* See also https://cr.yp.to/papers/controlbits-20200923.pdf */
+ #include "namespace.h"
++#include <oqs/common.h>
+ #define controlbitsfrompermutation CRYPTO_NAMESPACE(controlbitsfrompermutation)
+diff --git c/crypto_kem/mceliece460896f/clean/controlbits.c i/crypto_kem/mceliece460896f/clean/controlbits.c
+index ab32b1df..e14b5a8d 100644
+--- c/crypto_kem/mceliece460896f/clean/controlbits.c
++++ i/crypto_kem/mceliece460896f/clean/controlbits.c
+@@ -209,11 +209,11 @@ void controlbitsfrompermutation(unsigned char *out, const int16 *pi, long long w
+     int i;
+     unsigned char *ptr;
+-    memset(temp, 0, (size_t)n * 2);
+-    memset(pi_test, 0, (size_t)n);
++    OQS_MEM_cleanse(temp, (size_t)n * 2);
++    OQS_MEM_cleanse(pi_test, (size_t)n);
+     while (1) {
+-        memset(out, 0, (size_t)((((2 * w - 1)*n / 2) + 7) / 8));
++        OQS_MEM_cleanse(out, (size_t)((((2 * w - 1)*n / 2) + 7) / 8));
+         cbrecursion(out, 0, 1, pi, w, n, temp);
+         // check for correctness
+diff --git c/crypto_kem/mceliece460896f/clean/controlbits.h i/crypto_kem/mceliece460896f/clean/controlbits.h
+index d3d8227c..6996b5be 100644
+--- c/crypto_kem/mceliece460896f/clean/controlbits.h
++++ i/crypto_kem/mceliece460896f/clean/controlbits.h
+@@ -5,6 +5,7 @@
+ /* See also https://cr.yp.to/papers/controlbits-20200923.pdf */
+ #include "namespace.h"
++#include <oqs/common.h>
+ #define controlbitsfrompermutation CRYPTO_NAMESPACE(controlbitsfrompermutation)
+diff --git c/crypto_kem/mceliece6688128/avx2/controlbits.c i/crypto_kem/mceliece6688128/avx2/controlbits.c
+index ab32b1df..e14b5a8d 100644
+--- c/crypto_kem/mceliece6688128/avx2/controlbits.c
++++ i/crypto_kem/mceliece6688128/avx2/controlbits.c
+@@ -209,11 +209,11 @@ void controlbitsfrompermutation(unsigned char *out, const int16 *pi, long long w
+     int i;
+     unsigned char *ptr;
+-    memset(temp, 0, (size_t)n * 2);
+-    memset(pi_test, 0, (size_t)n);
++    OQS_MEM_cleanse(temp, (size_t)n * 2);
++    OQS_MEM_cleanse(pi_test, (size_t)n);
+     while (1) {
+-        memset(out, 0, (size_t)((((2 * w - 1)*n / 2) + 7) / 8));
++        OQS_MEM_cleanse(out, (size_t)((((2 * w - 1)*n / 2) + 7) / 8));
+         cbrecursion(out, 0, 1, pi, w, n, temp);
+         // check for correctness
+diff --git c/crypto_kem/mceliece6688128/avx2/controlbits.h i/crypto_kem/mceliece6688128/avx2/controlbits.h
+index d3d8227c..6996b5be 100644
+--- c/crypto_kem/mceliece6688128/avx2/controlbits.h
++++ i/crypto_kem/mceliece6688128/avx2/controlbits.h
+@@ -5,6 +5,7 @@
+ /* See also https://cr.yp.to/papers/controlbits-20200923.pdf */
+ #include "namespace.h"
++#include <oqs/common.h>
+ #define controlbitsfrompermutation CRYPTO_NAMESPACE(controlbitsfrompermutation)
+diff --git c/crypto_kem/mceliece6688128/clean/controlbits.c i/crypto_kem/mceliece6688128/clean/controlbits.c
+index ab32b1df..e14b5a8d 100644
+--- c/crypto_kem/mceliece6688128/clean/controlbits.c
++++ i/crypto_kem/mceliece6688128/clean/controlbits.c
+@@ -209,11 +209,11 @@ void controlbitsfrompermutation(unsigned char *out, const int16 *pi, long long w
+     int i;
+     unsigned char *ptr;
+-    memset(temp, 0, (size_t)n * 2);
+-    memset(pi_test, 0, (size_t)n);
++    OQS_MEM_cleanse(temp, (size_t)n * 2);
++    OQS_MEM_cleanse(pi_test, (size_t)n);
+     while (1) {
+-        memset(out, 0, (size_t)((((2 * w - 1)*n / 2) + 7) / 8));
++        OQS_MEM_cleanse(out, (size_t)((((2 * w - 1)*n / 2) + 7) / 8));
+         cbrecursion(out, 0, 1, pi, w, n, temp);
+         // check for correctness
+diff --git c/crypto_kem/mceliece6688128/clean/controlbits.h i/crypto_kem/mceliece6688128/clean/controlbits.h
+index d3d8227c..6996b5be 100644
+--- c/crypto_kem/mceliece6688128/clean/controlbits.h
++++ i/crypto_kem/mceliece6688128/clean/controlbits.h
+@@ -5,6 +5,7 @@
+ /* See also https://cr.yp.to/papers/controlbits-20200923.pdf */
+ #include "namespace.h"
++#include <oqs/common.h>
+ #define controlbitsfrompermutation CRYPTO_NAMESPACE(controlbitsfrompermutation)
+diff --git c/crypto_kem/mceliece6688128f/avx2/controlbits.c i/crypto_kem/mceliece6688128f/avx2/controlbits.c
+index ab32b1df..e14b5a8d 100644
+--- c/crypto_kem/mceliece6688128f/avx2/controlbits.c
++++ i/crypto_kem/mceliece6688128f/avx2/controlbits.c
+@@ -209,11 +209,11 @@ void controlbitsfrompermutation(unsigned char *out, const int16 *pi, long long w
+     int i;
+     unsigned char *ptr;
+-    memset(temp, 0, (size_t)n * 2);
+-    memset(pi_test, 0, (size_t)n);
++    OQS_MEM_cleanse(temp, (size_t)n * 2);
++    OQS_MEM_cleanse(pi_test, (size_t)n);
+     while (1) {
+-        memset(out, 0, (size_t)((((2 * w - 1)*n / 2) + 7) / 8));
++        OQS_MEM_cleanse(out, (size_t)((((2 * w - 1)*n / 2) + 7) / 8));
+         cbrecursion(out, 0, 1, pi, w, n, temp);
+         // check for correctness
+diff --git c/crypto_kem/mceliece6688128f/avx2/controlbits.h i/crypto_kem/mceliece6688128f/avx2/controlbits.h
+index d3d8227c..6996b5be 100644
+--- c/crypto_kem/mceliece6688128f/avx2/controlbits.h
++++ i/crypto_kem/mceliece6688128f/avx2/controlbits.h
+@@ -5,6 +5,7 @@
+ /* See also https://cr.yp.to/papers/controlbits-20200923.pdf */
+ #include "namespace.h"
++#include <oqs/common.h>
+ #define controlbitsfrompermutation CRYPTO_NAMESPACE(controlbitsfrompermutation)
+diff --git c/crypto_kem/mceliece6688128f/clean/controlbits.c i/crypto_kem/mceliece6688128f/clean/controlbits.c
+index ab32b1df..e14b5a8d 100644
+--- c/crypto_kem/mceliece6688128f/clean/controlbits.c
++++ i/crypto_kem/mceliece6688128f/clean/controlbits.c
+@@ -209,11 +209,11 @@ void controlbitsfrompermutation(unsigned char *out, const int16 *pi, long long w
+     int i;
+     unsigned char *ptr;
+-    memset(temp, 0, (size_t)n * 2);
+-    memset(pi_test, 0, (size_t)n);
++    OQS_MEM_cleanse(temp, (size_t)n * 2);
++    OQS_MEM_cleanse(pi_test, (size_t)n);
+     while (1) {
+-        memset(out, 0, (size_t)((((2 * w - 1)*n / 2) + 7) / 8));
++        OQS_MEM_cleanse(out, (size_t)((((2 * w - 1)*n / 2) + 7) / 8));
+         cbrecursion(out, 0, 1, pi, w, n, temp);
+         // check for correctness
+diff --git c/crypto_kem/mceliece6688128f/clean/controlbits.h i/crypto_kem/mceliece6688128f/clean/controlbits.h
+index d3d8227c..6996b5be 100644
+--- c/crypto_kem/mceliece6688128f/clean/controlbits.h
++++ i/crypto_kem/mceliece6688128f/clean/controlbits.h
+@@ -5,6 +5,7 @@
+ /* See also https://cr.yp.to/papers/controlbits-20200923.pdf */
+ #include "namespace.h"
++#include <oqs/common.h>
+ #define controlbitsfrompermutation CRYPTO_NAMESPACE(controlbitsfrompermutation)
+diff --git c/crypto_kem/mceliece6960119/avx2/controlbits.c i/crypto_kem/mceliece6960119/avx2/controlbits.c
+index ab32b1df..e14b5a8d 100644
+--- c/crypto_kem/mceliece6960119/avx2/controlbits.c
++++ i/crypto_kem/mceliece6960119/avx2/controlbits.c
+@@ -209,11 +209,11 @@ void controlbitsfrompermutation(unsigned char *out, const int16 *pi, long long w
+     int i;
+     unsigned char *ptr;
+-    memset(temp, 0, (size_t)n * 2);
+-    memset(pi_test, 0, (size_t)n);
++    OQS_MEM_cleanse(temp, (size_t)n * 2);
++    OQS_MEM_cleanse(pi_test, (size_t)n);
+     while (1) {
+-        memset(out, 0, (size_t)((((2 * w - 1)*n / 2) + 7) / 8));
++        OQS_MEM_cleanse(out, (size_t)((((2 * w - 1)*n / 2) + 7) / 8));
+         cbrecursion(out, 0, 1, pi, w, n, temp);
+         // check for correctness
+diff --git c/crypto_kem/mceliece6960119/avx2/controlbits.h i/crypto_kem/mceliece6960119/avx2/controlbits.h
+index d3d8227c..6996b5be 100644
+--- c/crypto_kem/mceliece6960119/avx2/controlbits.h
++++ i/crypto_kem/mceliece6960119/avx2/controlbits.h
+@@ -5,6 +5,7 @@
+ /* See also https://cr.yp.to/papers/controlbits-20200923.pdf */
+ #include "namespace.h"
++#include <oqs/common.h>
+ #define controlbitsfrompermutation CRYPTO_NAMESPACE(controlbitsfrompermutation)
+diff --git c/crypto_kem/mceliece6960119/clean/controlbits.c i/crypto_kem/mceliece6960119/clean/controlbits.c
+index ab32b1df..e14b5a8d 100644
+--- c/crypto_kem/mceliece6960119/clean/controlbits.c
++++ i/crypto_kem/mceliece6960119/clean/controlbits.c
+@@ -209,11 +209,11 @@ void controlbitsfrompermutation(unsigned char *out, const int16 *pi, long long w
+     int i;
+     unsigned char *ptr;
+-    memset(temp, 0, (size_t)n * 2);
+-    memset(pi_test, 0, (size_t)n);
++    OQS_MEM_cleanse(temp, (size_t)n * 2);
++    OQS_MEM_cleanse(pi_test, (size_t)n);
+     while (1) {
+-        memset(out, 0, (size_t)((((2 * w - 1)*n / 2) + 7) / 8));
++        OQS_MEM_cleanse(out, (size_t)((((2 * w - 1)*n / 2) + 7) / 8));
+         cbrecursion(out, 0, 1, pi, w, n, temp);
+         // check for correctness
+diff --git c/crypto_kem/mceliece6960119/clean/controlbits.h i/crypto_kem/mceliece6960119/clean/controlbits.h
+index d3d8227c..6996b5be 100644
+--- c/crypto_kem/mceliece6960119/clean/controlbits.h
++++ i/crypto_kem/mceliece6960119/clean/controlbits.h
+@@ -5,6 +5,7 @@
+ /* See also https://cr.yp.to/papers/controlbits-20200923.pdf */
+ #include "namespace.h"
++#include <oqs/common.h>
+ #define controlbitsfrompermutation CRYPTO_NAMESPACE(controlbitsfrompermutation)
+diff --git c/crypto_kem/mceliece6960119f/avx2/controlbits.c i/crypto_kem/mceliece6960119f/avx2/controlbits.c
+index ab32b1df..e14b5a8d 100644
+--- c/crypto_kem/mceliece6960119f/avx2/controlbits.c
++++ i/crypto_kem/mceliece6960119f/avx2/controlbits.c
+@@ -209,11 +209,11 @@ void controlbitsfrompermutation(unsigned char *out, const int16 *pi, long long w
+     int i;
+     unsigned char *ptr;
+-    memset(temp, 0, (size_t)n * 2);
+-    memset(pi_test, 0, (size_t)n);
++    OQS_MEM_cleanse(temp, (size_t)n * 2);
++    OQS_MEM_cleanse(pi_test, (size_t)n);
+     while (1) {
+-        memset(out, 0, (size_t)((((2 * w - 1)*n / 2) + 7) / 8));
++        OQS_MEM_cleanse(out, (size_t)((((2 * w - 1)*n / 2) + 7) / 8));
+         cbrecursion(out, 0, 1, pi, w, n, temp);
+         // check for correctness
+diff --git c/crypto_kem/mceliece6960119f/avx2/controlbits.h i/crypto_kem/mceliece6960119f/avx2/controlbits.h
+index d3d8227c..6996b5be 100644
+--- c/crypto_kem/mceliece6960119f/avx2/controlbits.h
++++ i/crypto_kem/mceliece6960119f/avx2/controlbits.h
+@@ -5,6 +5,7 @@
+ /* See also https://cr.yp.to/papers/controlbits-20200923.pdf */
+ #include "namespace.h"
++#include <oqs/common.h>
+ #define controlbitsfrompermutation CRYPTO_NAMESPACE(controlbitsfrompermutation)
+diff --git c/crypto_kem/mceliece6960119f/clean/controlbits.c i/crypto_kem/mceliece6960119f/clean/controlbits.c
+index ab32b1df..e14b5a8d 100644
+--- c/crypto_kem/mceliece6960119f/clean/controlbits.c
++++ i/crypto_kem/mceliece6960119f/clean/controlbits.c
+@@ -209,11 +209,11 @@ void controlbitsfrompermutation(unsigned char *out, const int16 *pi, long long w
+     int i;
+     unsigned char *ptr;
+-    memset(temp, 0, (size_t)n * 2);
+-    memset(pi_test, 0, (size_t)n);
++    OQS_MEM_cleanse(temp, (size_t)n * 2);
++    OQS_MEM_cleanse(pi_test, (size_t)n);
+     while (1) {
+-        memset(out, 0, (size_t)((((2 * w - 1)*n / 2) + 7) / 8));
++        OQS_MEM_cleanse(out, (size_t)((((2 * w - 1)*n / 2) + 7) / 8));
+         cbrecursion(out, 0, 1, pi, w, n, temp);
+         // check for correctness
+diff --git c/crypto_kem/mceliece6960119f/clean/controlbits.h i/crypto_kem/mceliece6960119f/clean/controlbits.h
+index d3d8227c..6996b5be 100644
+--- c/crypto_kem/mceliece6960119f/clean/controlbits.h
++++ i/crypto_kem/mceliece6960119f/clean/controlbits.h
+@@ -5,6 +5,7 @@
+ /* See also https://cr.yp.to/papers/controlbits-20200923.pdf */
+ #include "namespace.h"
++#include <oqs/common.h>
+ #define controlbitsfrompermutation CRYPTO_NAMESPACE(controlbitsfrompermutation)
+diff --git c/crypto_kem/mceliece8192128/avx2/controlbits.c i/crypto_kem/mceliece8192128/avx2/controlbits.c
+index ab32b1df..e14b5a8d 100644
+--- c/crypto_kem/mceliece8192128/avx2/controlbits.c
++++ i/crypto_kem/mceliece8192128/avx2/controlbits.c
+@@ -209,11 +209,11 @@ void controlbitsfrompermutation(unsigned char *out, const int16 *pi, long long w
+     int i;
+     unsigned char *ptr;
+-    memset(temp, 0, (size_t)n * 2);
+-    memset(pi_test, 0, (size_t)n);
++    OQS_MEM_cleanse(temp, (size_t)n * 2);
++    OQS_MEM_cleanse(pi_test, (size_t)n);
+     while (1) {
+-        memset(out, 0, (size_t)((((2 * w - 1)*n / 2) + 7) / 8));
++        OQS_MEM_cleanse(out, (size_t)((((2 * w - 1)*n / 2) + 7) / 8));
+         cbrecursion(out, 0, 1, pi, w, n, temp);
+         // check for correctness
+diff --git c/crypto_kem/mceliece8192128/avx2/controlbits.h i/crypto_kem/mceliece8192128/avx2/controlbits.h
+index d3d8227c..6996b5be 100644
+--- c/crypto_kem/mceliece8192128/avx2/controlbits.h
++++ i/crypto_kem/mceliece8192128/avx2/controlbits.h
+@@ -5,6 +5,7 @@
+ /* See also https://cr.yp.to/papers/controlbits-20200923.pdf */
+ #include "namespace.h"
++#include <oqs/common.h>
+ #define controlbitsfrompermutation CRYPTO_NAMESPACE(controlbitsfrompermutation)
+diff --git c/crypto_kem/mceliece8192128/clean/controlbits.c i/crypto_kem/mceliece8192128/clean/controlbits.c
+index ab32b1df..e14b5a8d 100644
+--- c/crypto_kem/mceliece8192128/clean/controlbits.c
++++ i/crypto_kem/mceliece8192128/clean/controlbits.c
+@@ -209,11 +209,11 @@ void controlbitsfrompermutation(unsigned char *out, const int16 *pi, long long w
+     int i;
+     unsigned char *ptr;
+-    memset(temp, 0, (size_t)n * 2);
+-    memset(pi_test, 0, (size_t)n);
++    OQS_MEM_cleanse(temp, (size_t)n * 2);
++    OQS_MEM_cleanse(pi_test, (size_t)n);
+     while (1) {
+-        memset(out, 0, (size_t)((((2 * w - 1)*n / 2) + 7) / 8));
++        OQS_MEM_cleanse(out, (size_t)((((2 * w - 1)*n / 2) + 7) / 8));
+         cbrecursion(out, 0, 1, pi, w, n, temp);
+         // check for correctness
+diff --git c/crypto_kem/mceliece8192128/clean/controlbits.h i/crypto_kem/mceliece8192128/clean/controlbits.h
+index d3d8227c..6996b5be 100644
+--- c/crypto_kem/mceliece8192128/clean/controlbits.h
++++ i/crypto_kem/mceliece8192128/clean/controlbits.h
+@@ -5,6 +5,7 @@
+ /* See also https://cr.yp.to/papers/controlbits-20200923.pdf */
+ #include "namespace.h"
++#include <oqs/common.h>
+ #define controlbitsfrompermutation CRYPTO_NAMESPACE(controlbitsfrompermutation)
+diff --git c/crypto_kem/mceliece8192128f/avx2/controlbits.c i/crypto_kem/mceliece8192128f/avx2/controlbits.c
+index ab32b1df..e14b5a8d 100644
+--- c/crypto_kem/mceliece8192128f/avx2/controlbits.c
++++ i/crypto_kem/mceliece8192128f/avx2/controlbits.c
+@@ -209,11 +209,11 @@ void controlbitsfrompermutation(unsigned char *out, const int16 *pi, long long w
+     int i;
+     unsigned char *ptr;
+-    memset(temp, 0, (size_t)n * 2);
+-    memset(pi_test, 0, (size_t)n);
++    OQS_MEM_cleanse(temp, (size_t)n * 2);
++    OQS_MEM_cleanse(pi_test, (size_t)n);
+     while (1) {
+-        memset(out, 0, (size_t)((((2 * w - 1)*n / 2) + 7) / 8));
++        OQS_MEM_cleanse(out, (size_t)((((2 * w - 1)*n / 2) + 7) / 8));
+         cbrecursion(out, 0, 1, pi, w, n, temp);
+         // check for correctness
+diff --git c/crypto_kem/mceliece8192128f/avx2/controlbits.h i/crypto_kem/mceliece8192128f/avx2/controlbits.h
+index d3d8227c..6996b5be 100644
+--- c/crypto_kem/mceliece8192128f/avx2/controlbits.h
++++ i/crypto_kem/mceliece8192128f/avx2/controlbits.h
+@@ -5,6 +5,7 @@
+ /* See also https://cr.yp.to/papers/controlbits-20200923.pdf */
+ #include "namespace.h"
++#include <oqs/common.h>
+ #define controlbitsfrompermutation CRYPTO_NAMESPACE(controlbitsfrompermutation)
+diff --git c/crypto_kem/mceliece8192128f/clean/controlbits.c i/crypto_kem/mceliece8192128f/clean/controlbits.c
+index ab32b1df..e14b5a8d 100644
+--- c/crypto_kem/mceliece8192128f/clean/controlbits.c
++++ i/crypto_kem/mceliece8192128f/clean/controlbits.c
+@@ -209,11 +209,11 @@ void controlbitsfrompermutation(unsigned char *out, const int16 *pi, long long w
+     int i;
+     unsigned char *ptr;
+-    memset(temp, 0, (size_t)n * 2);
+-    memset(pi_test, 0, (size_t)n);
++    OQS_MEM_cleanse(temp, (size_t)n * 2);
++    OQS_MEM_cleanse(pi_test, (size_t)n);
+     while (1) {
+-        memset(out, 0, (size_t)((((2 * w - 1)*n / 2) + 7) / 8));
++        OQS_MEM_cleanse(out, (size_t)((((2 * w - 1)*n / 2) + 7) / 8));
+         cbrecursion(out, 0, 1, pi, w, n, temp);
+         // check for correctness
+diff --git c/crypto_kem/mceliece8192128f/clean/controlbits.h i/crypto_kem/mceliece8192128f/clean/controlbits.h
+index d3d8227c..6996b5be 100644
+--- c/crypto_kem/mceliece8192128f/clean/controlbits.h
++++ i/crypto_kem/mceliece8192128f/clean/controlbits.h
+@@ -5,6 +5,7 @@
+ /* See also https://cr.yp.to/papers/controlbits-20200923.pdf */
+ #include "namespace.h"
++#include <oqs/common.h>
+ #define controlbitsfrompermutation CRYPTO_NAMESPACE(controlbitsfrompermutation)
index ab32b1df381c9ce24592f6a079c35f7534975ea4..e14b5a8d9a727101750dd3a4d80e1cda4c789bf8 100644 (file)
@@ -209,11 +209,11 @@ void controlbitsfrompermutation(unsigned char *out, const int16 *pi, long long w
     int i;
     unsigned char *ptr;
 
-    memset(temp, 0, (size_t)n * 2);
-    memset(pi_test, 0, (size_t)n);
+    OQS_MEM_cleanse(temp, (size_t)n * 2);
+    OQS_MEM_cleanse(pi_test, (size_t)n);
 
     while (1) {
-        memset(out, 0, (size_t)((((2 * w - 1)*n / 2) + 7) / 8));
+        OQS_MEM_cleanse(out, (size_t)((((2 * w - 1)*n / 2) + 7) / 8));
         cbrecursion(out, 0, 1, pi, w, n, temp);
 
         // check for correctness
index d3d8227cdbf7a49f9b0638fe6b21967026ada457..6996b5beabe10c6c78219017413f37505b161c2c 100644 (file)
@@ -5,6 +5,7 @@
 /* See also https://cr.yp.to/papers/controlbits-20200923.pdf */
 
 #include "namespace.h"
+#include <oqs/common.h>
 
 #define controlbitsfrompermutation CRYPTO_NAMESPACE(controlbitsfrompermutation)
 
index ab32b1df381c9ce24592f6a079c35f7534975ea4..e14b5a8d9a727101750dd3a4d80e1cda4c789bf8 100644 (file)
@@ -209,11 +209,11 @@ void controlbitsfrompermutation(unsigned char *out, const int16 *pi, long long w
     int i;
     unsigned char *ptr;
 
-    memset(temp, 0, (size_t)n * 2);
-    memset(pi_test, 0, (size_t)n);
+    OQS_MEM_cleanse(temp, (size_t)n * 2);
+    OQS_MEM_cleanse(pi_test, (size_t)n);
 
     while (1) {
-        memset(out, 0, (size_t)((((2 * w - 1)*n / 2) + 7) / 8));
+        OQS_MEM_cleanse(out, (size_t)((((2 * w - 1)*n / 2) + 7) / 8));
         cbrecursion(out, 0, 1, pi, w, n, temp);
 
         // check for correctness
index d3d8227cdbf7a49f9b0638fe6b21967026ada457..6996b5beabe10c6c78219017413f37505b161c2c 100644 (file)
@@ -5,6 +5,7 @@
 /* See also https://cr.yp.to/papers/controlbits-20200923.pdf */
 
 #include "namespace.h"
+#include <oqs/common.h>
 
 #define controlbitsfrompermutation CRYPTO_NAMESPACE(controlbitsfrompermutation)
 
index ab32b1df381c9ce24592f6a079c35f7534975ea4..e14b5a8d9a727101750dd3a4d80e1cda4c789bf8 100644 (file)
@@ -209,11 +209,11 @@ void controlbitsfrompermutation(unsigned char *out, const int16 *pi, long long w
     int i;
     unsigned char *ptr;
 
-    memset(temp, 0, (size_t)n * 2);
-    memset(pi_test, 0, (size_t)n);
+    OQS_MEM_cleanse(temp, (size_t)n * 2);
+    OQS_MEM_cleanse(pi_test, (size_t)n);
 
     while (1) {
-        memset(out, 0, (size_t)((((2 * w - 1)*n / 2) + 7) / 8));
+        OQS_MEM_cleanse(out, (size_t)((((2 * w - 1)*n / 2) + 7) / 8));
         cbrecursion(out, 0, 1, pi, w, n, temp);
 
         // check for correctness
index d3d8227cdbf7a49f9b0638fe6b21967026ada457..6996b5beabe10c6c78219017413f37505b161c2c 100644 (file)
@@ -5,6 +5,7 @@
 /* See also https://cr.yp.to/papers/controlbits-20200923.pdf */
 
 #include "namespace.h"
+#include <oqs/common.h>
 
 #define controlbitsfrompermutation CRYPTO_NAMESPACE(controlbitsfrompermutation)
 
index ab32b1df381c9ce24592f6a079c35f7534975ea4..e14b5a8d9a727101750dd3a4d80e1cda4c789bf8 100644 (file)
@@ -209,11 +209,11 @@ void controlbitsfrompermutation(unsigned char *out, const int16 *pi, long long w
     int i;
     unsigned char *ptr;
 
-    memset(temp, 0, (size_t)n * 2);
-    memset(pi_test, 0, (size_t)n);
+    OQS_MEM_cleanse(temp, (size_t)n * 2);
+    OQS_MEM_cleanse(pi_test, (size_t)n);
 
     while (1) {
-        memset(out, 0, (size_t)((((2 * w - 1)*n / 2) + 7) / 8));
+        OQS_MEM_cleanse(out, (size_t)((((2 * w - 1)*n / 2) + 7) / 8));
         cbrecursion(out, 0, 1, pi, w, n, temp);
 
         // check for correctness
index d3d8227cdbf7a49f9b0638fe6b21967026ada457..6996b5beabe10c6c78219017413f37505b161c2c 100644 (file)
@@ -5,6 +5,7 @@
 /* See also https://cr.yp.to/papers/controlbits-20200923.pdf */
 
 #include "namespace.h"
+#include <oqs/common.h>
 
 #define controlbitsfrompermutation CRYPTO_NAMESPACE(controlbitsfrompermutation)
 
index ab32b1df381c9ce24592f6a079c35f7534975ea4..e14b5a8d9a727101750dd3a4d80e1cda4c789bf8 100644 (file)
@@ -209,11 +209,11 @@ void controlbitsfrompermutation(unsigned char *out, const int16 *pi, long long w
     int i;
     unsigned char *ptr;
 
-    memset(temp, 0, (size_t)n * 2);
-    memset(pi_test, 0, (size_t)n);
+    OQS_MEM_cleanse(temp, (size_t)n * 2);
+    OQS_MEM_cleanse(pi_test, (size_t)n);
 
     while (1) {
-        memset(out, 0, (size_t)((((2 * w - 1)*n / 2) + 7) / 8));
+        OQS_MEM_cleanse(out, (size_t)((((2 * w - 1)*n / 2) + 7) / 8));
         cbrecursion(out, 0, 1, pi, w, n, temp);
 
         // check for correctness
index d3d8227cdbf7a49f9b0638fe6b21967026ada457..6996b5beabe10c6c78219017413f37505b161c2c 100644 (file)
@@ -5,6 +5,7 @@
 /* See also https://cr.yp.to/papers/controlbits-20200923.pdf */
 
 #include "namespace.h"
+#include <oqs/common.h>
 
 #define controlbitsfrompermutation CRYPTO_NAMESPACE(controlbitsfrompermutation)
 
index ab32b1df381c9ce24592f6a079c35f7534975ea4..e14b5a8d9a727101750dd3a4d80e1cda4c789bf8 100644 (file)
@@ -209,11 +209,11 @@ void controlbitsfrompermutation(unsigned char *out, const int16 *pi, long long w
     int i;
     unsigned char *ptr;
 
-    memset(temp, 0, (size_t)n * 2);
-    memset(pi_test, 0, (size_t)n);
+    OQS_MEM_cleanse(temp, (size_t)n * 2);
+    OQS_MEM_cleanse(pi_test, (size_t)n);
 
     while (1) {
-        memset(out, 0, (size_t)((((2 * w - 1)*n / 2) + 7) / 8));
+        OQS_MEM_cleanse(out, (size_t)((((2 * w - 1)*n / 2) + 7) / 8));
         cbrecursion(out, 0, 1, pi, w, n, temp);
 
         // check for correctness
index d3d8227cdbf7a49f9b0638fe6b21967026ada457..6996b5beabe10c6c78219017413f37505b161c2c 100644 (file)
@@ -5,6 +5,7 @@
 /* See also https://cr.yp.to/papers/controlbits-20200923.pdf */
 
 #include "namespace.h"
+#include <oqs/common.h>
 
 #define controlbitsfrompermutation CRYPTO_NAMESPACE(controlbitsfrompermutation)
 
index ab32b1df381c9ce24592f6a079c35f7534975ea4..e14b5a8d9a727101750dd3a4d80e1cda4c789bf8 100644 (file)
@@ -209,11 +209,11 @@ void controlbitsfrompermutation(unsigned char *out, const int16 *pi, long long w
     int i;
     unsigned char *ptr;
 
-    memset(temp, 0, (size_t)n * 2);
-    memset(pi_test, 0, (size_t)n);
+    OQS_MEM_cleanse(temp, (size_t)n * 2);
+    OQS_MEM_cleanse(pi_test, (size_t)n);
 
     while (1) {
-        memset(out, 0, (size_t)((((2 * w - 1)*n / 2) + 7) / 8));
+        OQS_MEM_cleanse(out, (size_t)((((2 * w - 1)*n / 2) + 7) / 8));
         cbrecursion(out, 0, 1, pi, w, n, temp);
 
         // check for correctness
index d3d8227cdbf7a49f9b0638fe6b21967026ada457..6996b5beabe10c6c78219017413f37505b161c2c 100644 (file)
@@ -5,6 +5,7 @@
 /* See also https://cr.yp.to/papers/controlbits-20200923.pdf */
 
 #include "namespace.h"
+#include <oqs/common.h>
 
 #define controlbitsfrompermutation CRYPTO_NAMESPACE(controlbitsfrompermutation)
 
index ab32b1df381c9ce24592f6a079c35f7534975ea4..e14b5a8d9a727101750dd3a4d80e1cda4c789bf8 100644 (file)
@@ -209,11 +209,11 @@ void controlbitsfrompermutation(unsigned char *out, const int16 *pi, long long w
     int i;
     unsigned char *ptr;
 
-    memset(temp, 0, (size_t)n * 2);
-    memset(pi_test, 0, (size_t)n);
+    OQS_MEM_cleanse(temp, (size_t)n * 2);
+    OQS_MEM_cleanse(pi_test, (size_t)n);
 
     while (1) {
-        memset(out, 0, (size_t)((((2 * w - 1)*n / 2) + 7) / 8));
+        OQS_MEM_cleanse(out, (size_t)((((2 * w - 1)*n / 2) + 7) / 8));
         cbrecursion(out, 0, 1, pi, w, n, temp);
 
         // check for correctness
index d3d8227cdbf7a49f9b0638fe6b21967026ada457..6996b5beabe10c6c78219017413f37505b161c2c 100644 (file)
@@ -5,6 +5,7 @@
 /* See also https://cr.yp.to/papers/controlbits-20200923.pdf */
 
 #include "namespace.h"
+#include <oqs/common.h>
 
 #define controlbitsfrompermutation CRYPTO_NAMESPACE(controlbitsfrompermutation)
 
index ab32b1df381c9ce24592f6a079c35f7534975ea4..e14b5a8d9a727101750dd3a4d80e1cda4c789bf8 100644 (file)
@@ -209,11 +209,11 @@ void controlbitsfrompermutation(unsigned char *out, const int16 *pi, long long w
     int i;
     unsigned char *ptr;
 
-    memset(temp, 0, (size_t)n * 2);
-    memset(pi_test, 0, (size_t)n);
+    OQS_MEM_cleanse(temp, (size_t)n * 2);
+    OQS_MEM_cleanse(pi_test, (size_t)n);
 
     while (1) {
-        memset(out, 0, (size_t)((((2 * w - 1)*n / 2) + 7) / 8));
+        OQS_MEM_cleanse(out, (size_t)((((2 * w - 1)*n / 2) + 7) / 8));
         cbrecursion(out, 0, 1, pi, w, n, temp);
 
         // check for correctness
index d3d8227cdbf7a49f9b0638fe6b21967026ada457..6996b5beabe10c6c78219017413f37505b161c2c 100644 (file)
@@ -5,6 +5,7 @@
 /* See also https://cr.yp.to/papers/controlbits-20200923.pdf */
 
 #include "namespace.h"
+#include <oqs/common.h>
 
 #define controlbitsfrompermutation CRYPTO_NAMESPACE(controlbitsfrompermutation)
 
index ab32b1df381c9ce24592f6a079c35f7534975ea4..e14b5a8d9a727101750dd3a4d80e1cda4c789bf8 100644 (file)
@@ -209,11 +209,11 @@ void controlbitsfrompermutation(unsigned char *out, const int16 *pi, long long w
     int i;
     unsigned char *ptr;
 
-    memset(temp, 0, (size_t)n * 2);
-    memset(pi_test, 0, (size_t)n);
+    OQS_MEM_cleanse(temp, (size_t)n * 2);
+    OQS_MEM_cleanse(pi_test, (size_t)n);
 
     while (1) {
-        memset(out, 0, (size_t)((((2 * w - 1)*n / 2) + 7) / 8));
+        OQS_MEM_cleanse(out, (size_t)((((2 * w - 1)*n / 2) + 7) / 8));
         cbrecursion(out, 0, 1, pi, w, n, temp);
 
         // check for correctness
index d3d8227cdbf7a49f9b0638fe6b21967026ada457..6996b5beabe10c6c78219017413f37505b161c2c 100644 (file)
@@ -5,6 +5,7 @@
 /* See also https://cr.yp.to/papers/controlbits-20200923.pdf */
 
 #include "namespace.h"
+#include <oqs/common.h>
 
 #define controlbitsfrompermutation CRYPTO_NAMESPACE(controlbitsfrompermutation)
 
index ab32b1df381c9ce24592f6a079c35f7534975ea4..e14b5a8d9a727101750dd3a4d80e1cda4c789bf8 100644 (file)
@@ -209,11 +209,11 @@ void controlbitsfrompermutation(unsigned char *out, const int16 *pi, long long w
     int i;
     unsigned char *ptr;
 
-    memset(temp, 0, (size_t)n * 2);
-    memset(pi_test, 0, (size_t)n);
+    OQS_MEM_cleanse(temp, (size_t)n * 2);
+    OQS_MEM_cleanse(pi_test, (size_t)n);
 
     while (1) {
-        memset(out, 0, (size_t)((((2 * w - 1)*n / 2) + 7) / 8));
+        OQS_MEM_cleanse(out, (size_t)((((2 * w - 1)*n / 2) + 7) / 8));
         cbrecursion(out, 0, 1, pi, w, n, temp);
 
         // check for correctness
index d3d8227cdbf7a49f9b0638fe6b21967026ada457..6996b5beabe10c6c78219017413f37505b161c2c 100644 (file)
@@ -5,6 +5,7 @@
 /* See also https://cr.yp.to/papers/controlbits-20200923.pdf */
 
 #include "namespace.h"
+#include <oqs/common.h>
 
 #define controlbitsfrompermutation CRYPTO_NAMESPACE(controlbitsfrompermutation)
 
index ab32b1df381c9ce24592f6a079c35f7534975ea4..e14b5a8d9a727101750dd3a4d80e1cda4c789bf8 100644 (file)
@@ -209,11 +209,11 @@ void controlbitsfrompermutation(unsigned char *out, const int16 *pi, long long w
     int i;
     unsigned char *ptr;
 
-    memset(temp, 0, (size_t)n * 2);
-    memset(pi_test, 0, (size_t)n);
+    OQS_MEM_cleanse(temp, (size_t)n * 2);
+    OQS_MEM_cleanse(pi_test, (size_t)n);
 
     while (1) {
-        memset(out, 0, (size_t)((((2 * w - 1)*n / 2) + 7) / 8));
+        OQS_MEM_cleanse(out, (size_t)((((2 * w - 1)*n / 2) + 7) / 8));
         cbrecursion(out, 0, 1, pi, w, n, temp);
 
         // check for correctness
index d3d8227cdbf7a49f9b0638fe6b21967026ada457..6996b5beabe10c6c78219017413f37505b161c2c 100644 (file)
@@ -5,6 +5,7 @@
 /* See also https://cr.yp.to/papers/controlbits-20200923.pdf */
 
 #include "namespace.h"
+#include <oqs/common.h>
 
 #define controlbitsfrompermutation CRYPTO_NAMESPACE(controlbitsfrompermutation)
 
index ab32b1df381c9ce24592f6a079c35f7534975ea4..e14b5a8d9a727101750dd3a4d80e1cda4c789bf8 100644 (file)
@@ -209,11 +209,11 @@ void controlbitsfrompermutation(unsigned char *out, const int16 *pi, long long w
     int i;
     unsigned char *ptr;
 
-    memset(temp, 0, (size_t)n * 2);
-    memset(pi_test, 0, (size_t)n);
+    OQS_MEM_cleanse(temp, (size_t)n * 2);
+    OQS_MEM_cleanse(pi_test, (size_t)n);
 
     while (1) {
-        memset(out, 0, (size_t)((((2 * w - 1)*n / 2) + 7) / 8));
+        OQS_MEM_cleanse(out, (size_t)((((2 * w - 1)*n / 2) + 7) / 8));
         cbrecursion(out, 0, 1, pi, w, n, temp);
 
         // check for correctness
index d3d8227cdbf7a49f9b0638fe6b21967026ada457..6996b5beabe10c6c78219017413f37505b161c2c 100644 (file)
@@ -5,6 +5,7 @@
 /* See also https://cr.yp.to/papers/controlbits-20200923.pdf */
 
 #include "namespace.h"
+#include <oqs/common.h>
 
 #define controlbitsfrompermutation CRYPTO_NAMESPACE(controlbitsfrompermutation)
 
index ab32b1df381c9ce24592f6a079c35f7534975ea4..e14b5a8d9a727101750dd3a4d80e1cda4c789bf8 100644 (file)
@@ -209,11 +209,11 @@ void controlbitsfrompermutation(unsigned char *out, const int16 *pi, long long w
     int i;
     unsigned char *ptr;
 
-    memset(temp, 0, (size_t)n * 2);
-    memset(pi_test, 0, (size_t)n);
+    OQS_MEM_cleanse(temp, (size_t)n * 2);
+    OQS_MEM_cleanse(pi_test, (size_t)n);
 
     while (1) {
-        memset(out, 0, (size_t)((((2 * w - 1)*n / 2) + 7) / 8));
+        OQS_MEM_cleanse(out, (size_t)((((2 * w - 1)*n / 2) + 7) / 8));
         cbrecursion(out, 0, 1, pi, w, n, temp);
 
         // check for correctness
index d3d8227cdbf7a49f9b0638fe6b21967026ada457..6996b5beabe10c6c78219017413f37505b161c2c 100644 (file)
@@ -5,6 +5,7 @@
 /* See also https://cr.yp.to/papers/controlbits-20200923.pdf */
 
 #include "namespace.h"
+#include <oqs/common.h>
 
 #define controlbitsfrompermutation CRYPTO_NAMESPACE(controlbitsfrompermutation)
 
index ab32b1df381c9ce24592f6a079c35f7534975ea4..e14b5a8d9a727101750dd3a4d80e1cda4c789bf8 100644 (file)
@@ -209,11 +209,11 @@ void controlbitsfrompermutation(unsigned char *out, const int16 *pi, long long w
     int i;
     unsigned char *ptr;
 
-    memset(temp, 0, (size_t)n * 2);
-    memset(pi_test, 0, (size_t)n);
+    OQS_MEM_cleanse(temp, (size_t)n * 2);
+    OQS_MEM_cleanse(pi_test, (size_t)n);
 
     while (1) {
-        memset(out, 0, (size_t)((((2 * w - 1)*n / 2) + 7) / 8));
+        OQS_MEM_cleanse(out, (size_t)((((2 * w - 1)*n / 2) + 7) / 8));
         cbrecursion(out, 0, 1, pi, w, n, temp);
 
         // check for correctness
index d3d8227cdbf7a49f9b0638fe6b21967026ada457..6996b5beabe10c6c78219017413f37505b161c2c 100644 (file)
@@ -5,6 +5,7 @@
 /* See also https://cr.yp.to/papers/controlbits-20200923.pdf */
 
 #include "namespace.h"
+#include <oqs/common.h>
 
 #define controlbitsfrompermutation CRYPTO_NAMESPACE(controlbitsfrompermutation)
 
index ab32b1df381c9ce24592f6a079c35f7534975ea4..e14b5a8d9a727101750dd3a4d80e1cda4c789bf8 100644 (file)
@@ -209,11 +209,11 @@ void controlbitsfrompermutation(unsigned char *out, const int16 *pi, long long w
     int i;
     unsigned char *ptr;
 
-    memset(temp, 0, (size_t)n * 2);
-    memset(pi_test, 0, (size_t)n);
+    OQS_MEM_cleanse(temp, (size_t)n * 2);
+    OQS_MEM_cleanse(pi_test, (size_t)n);
 
     while (1) {
-        memset(out, 0, (size_t)((((2 * w - 1)*n / 2) + 7) / 8));
+        OQS_MEM_cleanse(out, (size_t)((((2 * w - 1)*n / 2) + 7) / 8));
         cbrecursion(out, 0, 1, pi, w, n, temp);
 
         // check for correctness
index d3d8227cdbf7a49f9b0638fe6b21967026ada457..6996b5beabe10c6c78219017413f37505b161c2c 100644 (file)
@@ -5,6 +5,7 @@
 /* See also https://cr.yp.to/papers/controlbits-20200923.pdf */
 
 #include "namespace.h"
+#include <oqs/common.h>
 
 #define controlbitsfrompermutation CRYPTO_NAMESPACE(controlbitsfrompermutation)
 
index ab32b1df381c9ce24592f6a079c35f7534975ea4..e14b5a8d9a727101750dd3a4d80e1cda4c789bf8 100644 (file)
@@ -209,11 +209,11 @@ void controlbitsfrompermutation(unsigned char *out, const int16 *pi, long long w
     int i;
     unsigned char *ptr;
 
-    memset(temp, 0, (size_t)n * 2);
-    memset(pi_test, 0, (size_t)n);
+    OQS_MEM_cleanse(temp, (size_t)n * 2);
+    OQS_MEM_cleanse(pi_test, (size_t)n);
 
     while (1) {
-        memset(out, 0, (size_t)((((2 * w - 1)*n / 2) + 7) / 8));
+        OQS_MEM_cleanse(out, (size_t)((((2 * w - 1)*n / 2) + 7) / 8));
         cbrecursion(out, 0, 1, pi, w, n, temp);
 
         // check for correctness
index d3d8227cdbf7a49f9b0638fe6b21967026ada457..6996b5beabe10c6c78219017413f37505b161c2c 100644 (file)
@@ -5,6 +5,7 @@
 /* See also https://cr.yp.to/papers/controlbits-20200923.pdf */
 
 #include "namespace.h"
+#include <oqs/common.h>
 
 #define controlbitsfrompermutation CRYPTO_NAMESPACE(controlbitsfrompermutation)
 
index ab32b1df381c9ce24592f6a079c35f7534975ea4..e14b5a8d9a727101750dd3a4d80e1cda4c789bf8 100644 (file)
@@ -209,11 +209,11 @@ void controlbitsfrompermutation(unsigned char *out, const int16 *pi, long long w
     int i;
     unsigned char *ptr;
 
-    memset(temp, 0, (size_t)n * 2);
-    memset(pi_test, 0, (size_t)n);
+    OQS_MEM_cleanse(temp, (size_t)n * 2);
+    OQS_MEM_cleanse(pi_test, (size_t)n);
 
     while (1) {
-        memset(out, 0, (size_t)((((2 * w - 1)*n / 2) + 7) / 8));
+        OQS_MEM_cleanse(out, (size_t)((((2 * w - 1)*n / 2) + 7) / 8));
         cbrecursion(out, 0, 1, pi, w, n, temp);
 
         // check for correctness
index d3d8227cdbf7a49f9b0638fe6b21967026ada457..6996b5beabe10c6c78219017413f37505b161c2c 100644 (file)
@@ -5,6 +5,7 @@
 /* See also https://cr.yp.to/papers/controlbits-20200923.pdf */
 
 #include "namespace.h"
+#include <oqs/common.h>
 
 #define controlbitsfrompermutation CRYPTO_NAMESPACE(controlbitsfrompermutation)
 
index ab32b1df381c9ce24592f6a079c35f7534975ea4..e14b5a8d9a727101750dd3a4d80e1cda4c789bf8 100644 (file)
@@ -209,11 +209,11 @@ void controlbitsfrompermutation(unsigned char *out, const int16 *pi, long long w
     int i;
     unsigned char *ptr;
 
-    memset(temp, 0, (size_t)n * 2);
-    memset(pi_test, 0, (size_t)n);
+    OQS_MEM_cleanse(temp, (size_t)n * 2);
+    OQS_MEM_cleanse(pi_test, (size_t)n);
 
     while (1) {
-        memset(out, 0, (size_t)((((2 * w - 1)*n / 2) + 7) / 8));
+        OQS_MEM_cleanse(out, (size_t)((((2 * w - 1)*n / 2) + 7) / 8));
         cbrecursion(out, 0, 1, pi, w, n, temp);
 
         // check for correctness
index d3d8227cdbf7a49f9b0638fe6b21967026ada457..6996b5beabe10c6c78219017413f37505b161c2c 100644 (file)
@@ -5,6 +5,7 @@
 /* See also https://cr.yp.to/papers/controlbits-20200923.pdf */
 
 #include "namespace.h"
+#include <oqs/common.h>
 
 #define controlbitsfrompermutation CRYPTO_NAMESPACE(controlbitsfrompermutation)
 
index ab32b1df381c9ce24592f6a079c35f7534975ea4..e14b5a8d9a727101750dd3a4d80e1cda4c789bf8 100644 (file)
@@ -209,11 +209,11 @@ void controlbitsfrompermutation(unsigned char *out, const int16 *pi, long long w
     int i;
     unsigned char *ptr;
 
-    memset(temp, 0, (size_t)n * 2);
-    memset(pi_test, 0, (size_t)n);
+    OQS_MEM_cleanse(temp, (size_t)n * 2);
+    OQS_MEM_cleanse(pi_test, (size_t)n);
 
     while (1) {
-        memset(out, 0, (size_t)((((2 * w - 1)*n / 2) + 7) / 8));
+        OQS_MEM_cleanse(out, (size_t)((((2 * w - 1)*n / 2) + 7) / 8));
         cbrecursion(out, 0, 1, pi, w, n, temp);
 
         // check for correctness
index d3d8227cdbf7a49f9b0638fe6b21967026ada457..6996b5beabe10c6c78219017413f37505b161c2c 100644 (file)
@@ -5,6 +5,7 @@
 /* See also https://cr.yp.to/papers/controlbits-20200923.pdf */
 
 #include "namespace.h"
+#include <oqs/common.h>
 
 #define controlbitsfrompermutation CRYPTO_NAMESPACE(controlbitsfrompermutation)