From 1c25d76301aae49f03038bf3608b18d6f4a90edb Mon Sep 17 00:00:00 2001 From: Peter Dettman Date: Fri, 27 Dec 2013 15:18:22 +0700 Subject: Use utility method to reverse bytes Use more efficient BigInteger truncation --- .../crypto/signers/DSTU4145Signer.java | 36 ++++++---------------- 1 file changed, 10 insertions(+), 26 deletions(-) (limited to 'core/src/main/java/org/bouncycastle/crypto/signers') diff --git a/core/src/main/java/org/bouncycastle/crypto/signers/DSTU4145Signer.java b/core/src/main/java/org/bouncycastle/crypto/signers/DSTU4145Signer.java index 0e769509..bcc4edf2 100644 --- a/core/src/main/java/org/bouncycastle/crypto/signers/DSTU4145Signer.java +++ b/core/src/main/java/org/bouncycastle/crypto/signers/DSTU4145Signer.java @@ -136,40 +136,24 @@ public class DSTU4145Signer { return new BigInteger(n.bitLength() - 1, random); } - - private static void reverseBytes(byte[] bytes) - { - byte tmp; - - for (int i=0; i curve.getFieldSize()) - { - num = num.clearBit(num.bitLength() - 1); - } + byte[] data = Arrays.reverse(hash); + return curve.fromBigInteger(truncate(new BigInteger(1, data), curve.getFieldSize())); + } - return curve.fromBigInteger(num); + private static BigInteger fieldElement2Integer(BigInteger n, ECFieldElement fe) + { + return truncate(fe.toBigInteger(), n.bitLength() - 1); } - private static BigInteger fieldElement2Integer(BigInteger n, ECFieldElement fieldElement) + private static BigInteger truncate(BigInteger x, int bitLength) { - BigInteger num = fieldElement.toBigInteger(); - while (num.bitLength() >= n.bitLength()) + if (x.bitLength() > bitLength) { - num = num.clearBit(num.bitLength() - 1); + x = x.mod(BigInteger.ONE.shiftLeft(bitLength)); } - - return num; + return x; } } -- cgit v1.2.3