package org.bouncycastle.pqc.math.ntru.util.test; import java.security.SecureRandom; import java.util.Random; import junit.framework.TestCase; import org.bouncycastle.pqc.math.ntru.polynomial.DenseTernaryPolynomial; import org.bouncycastle.pqc.math.ntru.polynomial.test.PolynomialGenerator; import org.bouncycastle.pqc.math.ntru.util.ArrayEncoder; import org.bouncycastle.util.Arrays; public class ArrayEncoderTest extends TestCase { public void testEncodeDecodeModQ() { int[] coeffs = PolynomialGenerator.generateRandom(1000, 2048).coeffs; byte[] data = ArrayEncoder.encodeModQ(coeffs, 2048); int[] coeffs2 = ArrayEncoder.decodeModQ(data, 1000, 2048); assertTrue(Arrays.areEqual(coeffs, coeffs2)); } public void testEncodeDecodeMod3Sves() { Random rng = new Random(); byte[] data = new byte[180]; rng.nextBytes(data); int[] coeffs = ArrayEncoder.decodeMod3Sves(data, 960); byte[] data2 = ArrayEncoder.encodeMod3Sves(coeffs); assertTrue(Arrays.areEqual(data, data2)); } public void testEncodeDecodeMod3Tight() { SecureRandom random = new SecureRandom(); int[] coeffs = DenseTernaryPolynomial.generateRandom(1000, random).coeffs; byte[] data = ArrayEncoder.encodeMod3Tight(coeffs); int[] coeffs2 = ArrayEncoder.decodeMod3Tight(data, 1000); assertTrue(Arrays.areEqual(coeffs, coeffs2)); } }