@Test public void toByteArrayReturnsExpectedResult() { for (int i = 0; i < 100; i++) { // Arrange: final GroupElement g = MathUtils.getRandomGroupElement(); // Act: final byte[] gBytes = g.toByteArray(); final byte[] bytes = MathUtils.toByteArray(MathUtils.toBigInteger(g.getY())); if (MathUtils.toBigInteger(g.getX()).mod(new BigInteger("2")).equals(BigInteger.ONE)) { bytes[31] |= 0x80; } // Assert: Assert.assertThat(Arrays.equals(gBytes, bytes), IsEqual.equalTo(true)); } }
@Test public void dTimesTwoIsAsExpected() { // Arrange: final BigInteger DTimesTwo = new BigInteger( "16295367250680780974490674513165176452449235426866156013048779062215315747161"); // Assert: Assert.assertThat(DTimesTwo, IsEqual.equalTo(MathUtils.toBigInteger(Ed25519Field.D_Times_TWO))); }
@Test public void dIsAsExpected() { // Arrange: final BigInteger D = new BigInteger( "37095705934669439343138083508754565189542113879843219016388785533085940283555"); // Assert: Assert.assertThat(D, IsEqual.equalTo(MathUtils.toBigInteger(Ed25519Field.D))); }
@Test public void iIsAsExpected() { // Arrange: final BigInteger I = new BigInteger( "19681161376707505956807079304988542015446066515923890162744021073123829784752"); // Assert (i^2 == -1): Assert.assertThat(I, IsEqual.equalTo(MathUtils.toBigInteger(Ed25519Field.I))); Assert.assertThat( I.multiply(I).mod(Ed25519Field.P), IsEqual.equalTo(BigInteger.ONE.shiftLeft(255).subtract(new BigInteger("20")))); }
@Test public void twoIsAsExpected() { // Assert: Assert.assertThat( new BigInteger("2"), IsEqual.equalTo(MathUtils.toBigInteger(Ed25519Field.TWO))); }
@Test public void oneIsAsExpected() { // Assert: Assert.assertThat(BigInteger.ONE, IsEqual.equalTo(MathUtils.toBigInteger(Ed25519Field.ONE))); }
@Test public void zeroIsAsExpected() { // Assert: Assert.assertThat(BigInteger.ZERO, IsEqual.equalTo(MathUtils.toBigInteger(Ed25519Field.ZERO))); }