Generalized to support any EdDSA parameter spec

This commit is contained in:
str4d
2014-04-26 11:59:16 +00:00
parent ce397f5858
commit 02c0ddb3d3
2 changed files with 37 additions and 35 deletions

View File

@ -506,8 +506,8 @@ public class DSAEngine {
return altVerifySigSHA1(signature, data, offset, len, verifyingKey);
java.security.Signature jsig;
if (type == SigType.EdDSA_SHA512_25519)
jsig = new net.i2p.crypto.eddsa.EdDSAEngine(java.security.MessageDigest.getInstance("SHA-512"));
if (type.getBaseAlgorithm() == SigAlgo.EdDSA)
jsig = new net.i2p.crypto.eddsa.EdDSAEngine(type.getDigestInstance());
else
jsig = java.security.Signature.getInstance(type.getAlgorithmName());
PublicKey pubKey = SigUtil.toJavaKey(verifyingKey);
@ -587,8 +587,8 @@ public class DSAEngine {
return altSignSHA1(data, offset, len, privateKey);
java.security.Signature jsig;
if (type == SigType.EdDSA_SHA512_25519)
jsig = new net.i2p.crypto.eddsa.EdDSAEngine(java.security.MessageDigest.getInstance("SHA-512"));
if (type.getBaseAlgorithm() == SigAlgo.EdDSA)
jsig = new net.i2p.crypto.eddsa.EdDSAEngine(type.getDigestInstance());
else
jsig = java.security.Signature.getInstance(type.getAlgorithmName());
PrivateKey privKey = SigUtil.toJavaKey(privateKey);

View File

@ -217,8 +217,10 @@ public class KeyGenerator {
if (type == SigType.DSA_SHA1)
return generateSigningKeys();
KeyPair kp;
if (type == SigType.EdDSA_SHA512_25519) {
kp = new net.i2p.crypto.eddsa.KeyPairGenerator().generateKeyPair();
if (type.getBaseAlgorithm() == SigAlgo.EdDSA) {
net.i2p.crypto.eddsa.KeyPairGenerator kpg = new net.i2p.crypto.eddsa.KeyPairGenerator();
kpg.initialize(type.getParams(), _context.random());
kp = kpg.generateKeyPair();
} else {
KeyPairGenerator kpg = KeyPairGenerator.getInstance(type.getBaseAlgorithm().getName());
try {