Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/quite/humla-spongycastle.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Dettman <peter.dettman@bouncycastle.org>2013-12-27 12:18:22 +0400
committerPeter Dettman <peter.dettman@bouncycastle.org>2013-12-27 12:18:22 +0400
commit1c25d76301aae49f03038bf3608b18d6f4a90edb (patch)
treeec93e5d71ddbfa8ed2bc34fc5a121af3eb0c10a1 /core/src/main/java/org/bouncycastle/crypto/signers
parentea5552a8026eb0077c9ffa122e970a20c44521fc (diff)
Use utility method to reverse bytes
Use more efficient BigInteger truncation
Diffstat (limited to 'core/src/main/java/org/bouncycastle/crypto/signers')
-rw-r--r--core/src/main/java/org/bouncycastle/crypto/signers/DSTU4145Signer.java36
1 files changed, 10 insertions, 26 deletions
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<bytes.length/2; i++)
- {
- tmp=bytes[i];
- bytes[i]=bytes[bytes.length-1-i];
- bytes[bytes.length-1-i]=tmp;
- }
- }
private static ECFieldElement hash2FieldElement(ECCurve curve, byte[] hash)
{
- byte[] data = Arrays.clone(hash);
- reverseBytes(data);
- BigInteger num = new BigInteger(1, data);
- while (num.bitLength() > 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;
}
}