Skip to content

Commit 0c5b1b6

Browse files
author
Ross Nicoll
committed
Add test case for parsing X509Key
1 parent a176c92 commit 0c5b1b6

File tree

1 file changed

+20
-0
lines changed

1 file changed

+20
-0
lines changed

test/net/i2p/crypto/eddsa/EdDSAEngineTest.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import java.security.PublicKey;
2222
import java.security.Signature;
2323
import java.security.SignatureException;
24+
import java.security.cert.X509Certificate;
2425

2526
import net.i2p.crypto.eddsa.spec.EdDSANamedCurveTable;
2627
import net.i2p.crypto.eddsa.spec.EdDSAParameterSpec;
@@ -30,6 +31,8 @@
3031
import org.junit.Rule;
3132
import org.junit.Test;
3233
import org.junit.rules.ExpectedException;
34+
import sun.security.util.DerValue;
35+
import sun.security.x509.X509Key;
3336

3437
/**
3538
* @author str4d
@@ -213,4 +216,21 @@ public void testVerifyOneShot() throws Exception {
213216

214217
assertThat("verifyOneShot() failed", sgr.verifyOneShot(TEST_MSG, TEST_MSG_SIG), is(true));
215218
}
219+
220+
@Test
221+
public void testVerifyX509PublicKeyInfo() throws Exception {
222+
EdDSAParameterSpec spec = EdDSANamedCurveTable.getByName("Ed25519");
223+
Signature sgr = new EdDSAEngine(MessageDigest.getInstance(spec.getHashAlgorithm()));
224+
for (Ed25519TestVectors.TestTuple testCase : Ed25519TestVectors.testCases) {
225+
EdDSAPublicKeySpec pubKey = new EdDSAPublicKeySpec(testCase.pk, spec);
226+
PublicKey vKey = new EdDSAPublicKey(pubKey);
227+
PublicKey x509Key = X509Key.parse(new DerValue(vKey.getEncoded()));
228+
sgr.initVerify(x509Key);
229+
230+
sgr.update(testCase.message);
231+
232+
assertThat("Test case " + testCase.caseNum + " failed",
233+
sgr.verify(testCase.sig), is(true));
234+
}
235+
}
216236
}

0 commit comments

Comments
 (0)