PolyVecMatrix
class PolyVecMatrix
namespace Org.BouncyCastle.Pqc.Crypto.Crystals.Dilithium
{
internal class PolyVecMatrix
{
private int K;
private int L;
internal PolyVec[] Matrix;
public PolyVecMatrix(DilithiumEngine engine)
{
K = engine.K;
L = engine.L;
Matrix = new PolyVec[K];
for (int i = 0; i < K; i++) {
Matrix[i] = new PolyVec(engine, L);
}
}
public void ExpandMatrix(byte[] rho)
{
for (int i = 0; i < K; i++) {
for (int j = 0; j < L; j++) {
Matrix[i].Vec[j].UniformBlocks(rho, (ushort)((ushort)(i << 8) + j));
}
}
}
public void PointwiseMontgomery(PolyVec t, PolyVec v)
{
for (int i = 0; i < K; i++) {
t.Vec[i].PointwiseAccountMontgomery(Matrix[i], v);
}
}
}
}