@Override public int hashCode() { return Arrays.hashCode(this.toByteArray()); }
public EdDSAPublicKey(EdDSAPublicKeySpec spec) { this.A = spec.getA(); this.Abyte = this.A.toByteArray(); this.edDsaSpec = spec.getParams(); }
/** * Tests {@link GroupElement#GroupElement(Curve, byte[])} and * {@link GroupElement#toByteArray()} against valid public keys. */ @Test public void testToAndFromByteArray() { GroupElement t; for (Ed25519TestVectors.TestTuple testCase : Ed25519TestVectors.testCases) { t = new GroupElement(curve, testCase.pk); assertThat("Test case " + testCase.caseNum + " failed", t.toByteArray(), is(equalTo(testCase.pk))); } }
public EdDSAPrivateKey(EdDSAPrivateKeySpec spec) { this.seed = spec.getSeed(); this.h = spec.getH(); this.a = spec.geta(); this.A = spec.getA(); this.Abyte = this.A.toByteArray(); this.edDsaSpec = spec.getParams(); }
byte[] Rbyte = R.toByteArray();
/** * Test method for {@link net.i2p.crypto.eddsa.spec.EdDSAPrivateKeySpec#EdDSAPrivateKeySpec(byte[], net.i2p.crypto.eddsa.spec.EdDSAParameterSpec)}. */ @Test public void testEdDSAPrivateKeySpecFromSeed() { EdDSAPrivateKeySpec key = new EdDSAPrivateKeySpec(ZERO_SEED, ed25519); assertThat(key.getSeed(), is(equalTo(ZERO_SEED))); assertThat(key.getH(), is(equalTo(ZERO_H))); assertThat(key.getA().toByteArray(), is(equalTo(ZERO_PK))); }
/** * Test method for {@link GroupElement#toByteArray()}. * <p> * TODO 20141001 BR: why test with points which are not on the curve? */ @Test public void testToByteArray() { byte[] zerozero = GroupElement.p2(curve, ZERO, ZERO, ONE).toByteArray(); assertThat(zerozero.length, is(equalTo(BYTES_ZEROZERO.length))); assertThat(zerozero, is(equalTo(BYTES_ZEROZERO))); byte[] oneone = GroupElement.p2(curve, ONE, ONE, ONE).toByteArray(); assertThat(oneone.length, is(equalTo(BYTES_ONEONE.length))); assertThat(oneone, is(equalTo(BYTES_ONEONE))); byte[] tenzero = GroupElement.p2(curve, TEN, ZERO, ONE).toByteArray(); assertThat(tenzero.length, is(equalTo(BYTES_TENZERO.length))); assertThat(tenzero, is(equalTo(BYTES_TENZERO))); byte[] oneten = GroupElement.p2(curve, ONE, TEN, ONE).toByteArray(); assertThat(oneten.length, is(equalTo(BYTES_ONETEN.length))); assertThat(oneten, is(equalTo(BYTES_ONETEN))); byte[] pkr = GroupElement.p2(curve, PKR[0], PKR[1], ONE).toByteArray(); assertThat(pkr.length, is(equalTo(BYTES_PKR.length))); assertThat(pkr, is(equalTo(BYTES_PKR))); }
/** * Test method for {@link net.i2p.crypto.eddsa.spec.EdDSAPrivateKeySpec#EdDSAPrivateKeySpec(net.i2p.crypto.eddsa.spec.EdDSAParameterSpec, byte[])}. */ @Test public void testEdDSAPrivateKeySpecFromH() { EdDSAPrivateKeySpec key = new EdDSAPrivateKeySpec(ed25519, ZERO_H); assertThat(key.getSeed(), is(nullValue())); assertThat(key.getH(), is(equalTo(ZERO_H))); assertThat(key.getA().toByteArray(), is(equalTo(ZERO_PK))); }
byte[] Rcalc = R.toByteArray(); for (int i = 0; i < Rcalc.length; i++) { if (Rcalc[i] != sigBytes[i])
@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)); } }
/** * Converts the group element to an encoded point on the curve. * * @return The encoded point as byte array. */ public byte[] toByteArray() { switch (this.repr) { case P2: case P3: FieldElement recip = Z.invert(); FieldElement x = X.multiply(recip); FieldElement y = Y.multiply(recip); byte[] s = y.toByteArray(); s[s.length-1] |= (x.isNegative() ? (byte) 0x80 : 0); return s; default: return toP2().toByteArray(); } }
@Test public void constructorUsingByteArrayReturnsExpectedResult() { for (int i=0; i<100; i++) { // Arrange: final GroupElement g = MathUtils.getRandomGroupElement(); final byte[] bytes = g.toByteArray(); // Act: final GroupElement h1 = new GroupElement(curve, bytes); final GroupElement h2 = MathUtils.toGroupElement(bytes); // Assert: Assert.assertThat(h1, IsEqual.equalTo(h2)); } }
@Override public int hashCode() { return Arrays.hashCode(this.toByteArray()); }
private byte[] pubBytes_() { return keySpec.getA().toByteArray(); }
public EdDSAPublicKey(EdDSAPublicKeySpec spec) { this.A = spec.getA(); this.Abyte = this.A.toByteArray(); this.edDsaSpec = spec.getParams(); }
protected byte[] computePublicSignatureKey(byte[] privateKey) { EdDSAPrivateKeySpec edDSAPrivateKeySpec = new EdDSAPrivateKeySpec(privateKey, EdDSANamedCurveTable.getByName("ed25519-sha-512")); return edDSAPrivateKeySpec.getA().toByteArray(); }
public static StorageItem buildMutable(Object data, EdDSAPrivateKey key, byte[] salt, long sequenceNumber) throws InvalidKeyException, SignatureException { ByteBuffer raw = new BEncoder().encode(data, 1000); Signature sig = new EdDSAEngine(); sig.initSign(key); Map<String, Object> p = new TreeMap<>(); if(salt != null) p.put("salt", salt); p.put("seq", sequenceNumber); p.put("v", new BEncoder.RawData(raw)); ByteBuffer buf = new BEncoder().encode(p, 1500); // trim d ... e buf.position(buf.position() + 1); buf.limit(buf.limit() - 1); sig.update(buf.duplicate()); byte[] signature = sig.sign(); byte[] pubkey = new EdDSAPublicKey(new EdDSAPublicKeySpec(key.getA(), StorageItem.spec)).getA().toByteArray(); return new StorageItem(buf2ary(raw), pubkey, signature, salt, sequenceNumber); }
public EdDSAPrivateKey(EdDSAPrivateKeySpec spec) { this.seed = spec.getSeed(); this.h = spec.getH(); this.a = spec.geta(); this.A = spec.getA(); this.Abyte = this.A.toByteArray(); this.edDsaSpec = spec.getParams(); }
byte[] Rcalc = R.toByteArray(); for (int i = 0; i < Rcalc.length; i++) { if (Rcalc[i] != sigBytes[i])
/** * Converts the group element to an encoded point on the curve. * * @return The encoded point as byte array. */ public byte[] toByteArray() { switch (this.repr) { case P2: case P3: FieldElement recip = Z.invert(); FieldElement x = X.multiply(recip); FieldElement y = Y.multiply(recip); byte[] s = y.toByteArray(); s[s.length-1] |= (x.isNegative() ? (byte) 0x80 : 0); return s; default: return toP2().toByteArray(); } }