Use correct encoding for the alg 15 DNSKEYRecord

This commit is contained in:
David Blacka 2018-07-15 12:17:12 +00:00
parent a9353b3af3
commit b291bb430b
1 changed files with 7 additions and 5 deletions

View File

@ -122,9 +122,10 @@ public class DnsKeyConverter
private PublicKey parseEdDSADNSKEYRecord(DNSKEYRecord pKeyRecord)
throws IllegalArgumentException, NoSuchAlgorithmException, InvalidKeySpecException
{
byte[] seed = pKeyRecord.getKey();
EdDSAPublicKeySpec spec = new EdDSAPublicKeySpec
(pKeyRecord.getKey(), mAlgorithms.getEdwardsCurveParams(pKeyRecord.getAlgorithm()));
(seed, mAlgorithms.getEdwardsCurveParams(pKeyRecord.getAlgorithm()));
KeyFactory factory = KeyFactory.getInstance("EdDSA");
return factory.generatePublic(spec);
@ -156,8 +157,9 @@ public class DnsKeyConverter
int flags, int alg, PublicKey key)
{
EdDSAPublicKey ed_key = (EdDSAPublicKey) key;
byte[] key_data = ed_key.getAbyte();
return new DNSKEYRecord(name, dclass, ttl, flags, DNSKEYRecord.Protocol.DNSSEC, alg,
ed_key.getEncoded());
key_data);
}
// Private Key Specific Parsing routines
@ -541,7 +543,7 @@ public class DnsKeyConverter
private PrivateKey parsePrivateEdDSA(StringTokenizer lines, int algorithm)
throws NoSuchAlgorithmException
{
BigInteger s = null;
byte[] seed = null;
while (lines.hasMoreTokens())
{
@ -557,7 +559,7 @@ public class DnsKeyConverter
if (line.startsWith("PrivateKey: "))
{
s = new BigInteger(1, data);
seed = data;
}
}
@ -572,7 +574,7 @@ public class DnsKeyConverter
" is not a recognized Edwards Curve algorithm");
}
KeySpec spec = new EdDSAPrivateKeySpec(s.toByteArray(), ed_spec);
KeySpec spec = new EdDSAPrivateKeySpec(seed, ed_spec);
try
{