org.bouncycastle.pqc.crypto.mlkem.Reduce Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of bcprov-debug-jdk15to18 Show documentation
Show all versions of bcprov-debug-jdk15to18 Show documentation
The Bouncy Castle Crypto package is a Java implementation of cryptographic algorithms. This jar contains JCE provider and lightweight API for the Bouncy Castle Cryptography APIs for JDK 1.5 to JDK 1.8.
The newest version!
package org.bouncycastle.pqc.crypto.mlkem;
class Reduce
{
public static short montgomeryReduce(int a)
{
int t;
short u;
u = (short)(a * MLKEMEngine.KyberQinv);
t = (int)(u * MLKEMEngine.KyberQ);
t = a - t;
t >>= 16;
return (short)t;
}
public static short barretReduce(short a)
{
short t;
long shift = (((long)1) << 26);
short v = (short)((shift + (MLKEMEngine.KyberQ / 2)) / MLKEMEngine.KyberQ);
t = (short)((v * a) >> 26);
t = (short)(t * MLKEMEngine.KyberQ);
return (short)(a - t);
}
public static short conditionalSubQ(short a)
{
a -= MLKEMEngine.KyberQ;
a += (a >> 15) & MLKEMEngine.KyberQ;
return a;
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy