/** * Encode a FieldElement in its (b-1)-bit encoding. * @return the (b-1)-bit encoding of this FieldElement. */ public byte[] toByteArray() { return f.getEncoding().encode(this); }
@Test public void encodeReturnsCorrectByteArray() { for (int i=0; i<10000; i++){ // Arrange: final int[] t = new int[10]; for (int j=0; j<10; j++) { t[j] = random.nextInt(1 << 28) - (1 << 27); } final FieldElement fieldElement1 = new Ed25519FieldElement(MathUtils.getField(), t); final BigInteger b = MathUtils.toBigInteger(t); // Act: final byte[] bytes = MathUtils.getField().getEncoding().encode(fieldElement1); // Assert: Assert.assertThat(bytes, IsEqual.equalTo(MathUtils.toByteArray(b.mod(MathUtils.getQ())))); } }
@Test public void encodeReturnsCorrectByteArrayForSimpleFieldElements() { // Arrange: final int[] t1 = new int[10]; final int[] t2 = new int[10]; t2[0] = 1; final FieldElement fieldElement1 = new Ed25519FieldElement(MathUtils.getField(), t1); final FieldElement fieldElement2 = new Ed25519FieldElement(MathUtils.getField(), t2); // Act: final byte[] bytes1 = MathUtils.getField().getEncoding().encode(fieldElement1); final byte[] bytes2 = MathUtils.getField().getEncoding().encode(fieldElement2); // Assert: Assert.assertThat(bytes1, IsEqual.equalTo(MathUtils.toByteArray(BigInteger.ZERO))); Assert.assertThat(bytes2, IsEqual.equalTo(MathUtils.toByteArray(BigInteger.ONE))); }
/** * Encode a FieldElement in its $(b-1)$-bit encoding. * @return the $(b-1)$-bit encoding of this FieldElement. */ public byte[] toByteArray() { return f.getEncoding().encode(this); }