From 1bb57c4103cb3075ac2547b2edb13b1dd5b46af5 Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Tue, 29 Jan 2019 13:51:42 +0000 Subject: [PATCH] EdDSA minor cleanup --- .../eddsa/spec/EdDSAPrivateKeySpec.java | 21 ++++++++++--------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/core/java/src/net/i2p/crypto/eddsa/spec/EdDSAPrivateKeySpec.java b/core/java/src/net/i2p/crypto/eddsa/spec/EdDSAPrivateKeySpec.java index e74f58dbeb..2143eeab2e 100644 --- a/core/java/src/net/i2p/crypto/eddsa/spec/EdDSAPrivateKeySpec.java +++ b/core/java/src/net/i2p/crypto/eddsa/spec/EdDSAPrivateKeySpec.java @@ -26,7 +26,8 @@ public class EdDSAPrivateKeySpec implements KeySpec { * @throws IllegalArgumentException if seed length is wrong or hash algorithm is unsupported */ public EdDSAPrivateKeySpec(byte[] seed, EdDSAParameterSpec spec) { - if (seed.length != spec.getCurve().getField().getb()/8) + int bd8 = spec.getCurve().getField().getb() / 8; + if (seed.length != bd8) throw new IllegalArgumentException("seed length is wrong"); this.spec = spec; @@ -34,7 +35,6 @@ public class EdDSAPrivateKeySpec implements KeySpec { try { MessageDigest hash = MessageDigest.getInstance(spec.getHashAlgorithm()); - int b = spec.getCurve().getField().getb(); // H(k) h = hash.digest(seed); @@ -46,9 +46,9 @@ public class EdDSAPrivateKeySpec implements KeySpec { // Saves ~0.4ms per key when running signing tests. // TODO: are these bitflips the same for any hash function? h[0] &= 248; - h[(b/8)-1] &= 63; - h[(b/8)-1] |= 64; - a = Arrays.copyOfRange(h, 0, b/8); + h[bd8 - 1] &= 63; + h[bd8 - 1] |= 64; + a = Arrays.copyOfRange(h, 0, bd8); A = spec.getB().scalarMultiply(a); } catch (NoSuchAlgorithmException e) { @@ -66,18 +66,19 @@ public class EdDSAPrivateKeySpec implements KeySpec { * @since 0.9.27 (GitHub issue #17) */ public EdDSAPrivateKeySpec(EdDSAParameterSpec spec, byte[] h) { - if (h.length != spec.getCurve().getField().getb()/4) + int bd4 = spec.getCurve().getField().getb() / 4; + if (h.length != bd4) throw new IllegalArgumentException("hash length is wrong"); + int bd8 = bd4 / 2; this.seed = null; this.h = h; this.spec = spec; - int b = spec.getCurve().getField().getb(); h[0] &= 248; - h[(b/8)-1] &= 63; - h[(b/8)-1] |= 64; - a = Arrays.copyOfRange(h, 0, b/8); + h[bd8 - 1] &= 63; + h[bd8 - 1] |= 64; + a = Arrays.copyOfRange(h, 0, bd8); A = spec.getB().scalarMultiply(a); } -- GitLab