From 59d274df751544c59e57b6aa4f5aa1e92cf13a84 Mon Sep 17 00:00:00 2001 From: isrand Date: Thu, 6 Mar 2025 10:49:20 +0100 Subject: [PATCH] Fix KyberSlash Issue --- kyber1024.js | 7 ++++++- kyber512.js | 7 ++++++- kyber768.js | 7 ++++++- 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/kyber1024.js b/kyber1024.js index 920c27e..aab0b54 100644 --- a/kyber1024.js +++ b/kyber1024.js @@ -457,7 +457,12 @@ function polyToMsg(a) { for (let i = 0; i < paramsN / 8; i++) { msg[i] = 0; for (let j = 0; j < 8; j++) { - t = (((uint16(a2[8 * i + j]) << 1) + uint16(paramsQ / 2)) / uint16(paramsQ)) & 1; + t = uint32(a2[8 * i + j]); + t <<= 1; + t += 1665; + t *= 80635; + t >>= 28; + t &= 1; msg[i] |= byte(t << j); } } diff --git a/kyber512.js b/kyber512.js index 3ec8c55..2728780 100644 --- a/kyber512.js +++ b/kyber512.js @@ -458,7 +458,12 @@ function polyToMsg(a) { for (let i = 0; i < paramsN / 8; i++) { msg[i] = 0; for (let j = 0; j < 8; j++) { - t = (((uint16(a2[8 * i + j]) << 1) + uint16(paramsQ / 2)) / uint16(paramsQ)) & 1; + t = uint32(a2[8 * i + j]); + t <<= 1; + t += 1665; + t *= 80635; + t >>= 28; + t &= 1; msg[i] |= byte(t << j); } } diff --git a/kyber768.js b/kyber768.js index d0a5ef1..2d92ae0 100644 --- a/kyber768.js +++ b/kyber768.js @@ -458,7 +458,12 @@ function polyToMsg(a) { for (let i = 0; i < paramsN / 8; i++) { msg[i] = 0; for (let j = 0; j < 8; j++) { - t = (((uint16(a2[8 * i + j]) << 1) + uint16(paramsQ / 2)) / uint16(paramsQ)) & 1; + t = uint32(a2[8 * i + j]); + t <<= 1; + t += 1665; + t *= 80635; + t >>= 28; + t &= 1; msg[i] |= byte(t << j); } }