diff --git a/crypto_kem/hqc-128/clean/repetition.c b/crypto_kem/hqc-128/clean/repetition.c index 72b81030..f2beab0b 100644 --- a/crypto_kem/hqc-128/clean/repetition.c +++ b/crypto_kem/hqc-128/clean/repetition.c @@ -26,7 +26,7 @@ void PQCLEAN_HQC128_CLEAN_repetition_code_encode(uint64_t *em, const uint64_t *m pos_r = 0; for (size_t i = 0; i < VEC_N1_SIZE_64; i++) { for (size_t j = 0; j < 64 && pos_r < PARAM_N1N2; j++) { - bit = -((m[i] >> j) & 1); + bit = (uint64_t) (-(int64_t) ((m[i] >> j) & 1)); idx_r = (pos_r & 0x3f); em[(pos_r >> 6) + 0] ^= (bit & 0x7FFFFFFFUL) << idx_r; em[(pos_r >> 6) + 1] ^= (bit & 0x3FFFFFFFUL) >> ((63 - idx_r)); diff --git a/crypto_kem/hqc-192/clean/repetition.c b/crypto_kem/hqc-192/clean/repetition.c index 8caadd6d..13ad16a5 100644 --- a/crypto_kem/hqc-192/clean/repetition.c +++ b/crypto_kem/hqc-192/clean/repetition.c @@ -26,7 +26,7 @@ void PQCLEAN_HQC192_CLEAN_repetition_code_encode(uint64_t *em, const uint64_t *m pos_r = 0; for (size_t i = 0; i < VEC_N1_SIZE_64; i++) { for (size_t j = 0; j < 64 && pos_r < PARAM_N1N2; j++) { - bit = -((m[i] >> j) & 1); + bit = (uint64_t) (-(int64_t) ((m[i] >> j) & 1)); idx_r = (pos_r & 0x3f); em[(pos_r >> 6) + 0] ^= (bit & 0x7FFFFFFFFFFFFFFUL) << idx_r; em[(pos_r >> 6) + 1] ^= (bit & 0x3FFFFFFFFFFFFFFUL) >> ((63 - idx_r)); diff --git a/crypto_kem/hqc-256/clean/repetition.c b/crypto_kem/hqc-256/clean/repetition.c index b251f034..eb12e933 100644 --- a/crypto_kem/hqc-256/clean/repetition.c +++ b/crypto_kem/hqc-256/clean/repetition.c @@ -24,7 +24,7 @@ void PQCLEAN_HQC256_CLEAN_repetition_code_encode(uint64_t *em, const uint64_t *m pos_r = 0; for (size_t i = 0; i < VEC_N1_SIZE_64; i++) { for (size_t j = 0; j < 64 && pos_r < PARAM_N1N2; j++) { - bit = -((m[i] >> j) & 1); + bit = (uint64_t) (-(int64_t) ((m[i] >> j) & 1)); idx_r = (pos_r & 0x3f); idx2 = 41 - idx_r; idx2 &= (uint64_t) (-((int64_t)idx2) >> 63);