aboutsummaryrefslogtreecommitdiffstats
path: root/libraries/spongycastle/core/src/main/java/org/spongycastle/util/BigIntegers.java
diff options
context:
space:
mode:
Diffstat (limited to 'libraries/spongycastle/core/src/main/java/org/spongycastle/util/BigIntegers.java')
-rw-r--r--libraries/spongycastle/core/src/main/java/org/spongycastle/util/BigIntegers.java121
1 files changed, 0 insertions, 121 deletions
diff --git a/libraries/spongycastle/core/src/main/java/org/spongycastle/util/BigIntegers.java b/libraries/spongycastle/core/src/main/java/org/spongycastle/util/BigIntegers.java
deleted file mode 100644
index 93c113476..000000000
--- a/libraries/spongycastle/core/src/main/java/org/spongycastle/util/BigIntegers.java
+++ /dev/null
@@ -1,121 +0,0 @@
-package org.spongycastle.util;
-
-import java.math.BigInteger;
-import java.security.SecureRandom;
-
-/**
- * BigInteger utilities.
- */
-public final class BigIntegers
-{
- private static final int MAX_ITERATIONS = 1000;
- private static final BigInteger ZERO = BigInteger.valueOf(0);
-
- /**
- * Return the passed in value as an unsigned byte array.
- *
- * @param value value to be converted.
- * @return a byte array without a leading zero byte if present in the signed encoding.
- */
- public static byte[] asUnsignedByteArray(
- BigInteger value)
- {
- byte[] bytes = value.toByteArray();
-
- if (bytes[0] == 0)
- {
- byte[] tmp = new byte[bytes.length - 1];
-
- System.arraycopy(bytes, 1, tmp, 0, tmp.length);
-
- return tmp;
- }
-
- return bytes;
- }
-
- /**
- * Return the passed in value as an unsigned byte array.
- *
- * @param value value to be converted.
- * @return a byte array without a leading zero byte if present in the signed encoding.
- */
- public static byte[] asUnsignedByteArray(int length, BigInteger value)
- {
- byte[] bytes = value.toByteArray();
- if (bytes.length == length)
- {
- return bytes;
- }
-
- int start = bytes[0] == 0 ? 1 : 0;
- int count = bytes.length - start;
-
- if (count > length)
- {
- throw new IllegalArgumentException("standard length exceeded for value");
- }
-
- byte[] tmp = new byte[length];
- System.arraycopy(bytes, start, tmp, tmp.length - count, count);
- return tmp;
- }
-
- /**
- * Return a random BigInteger not less than 'min' and not greater than 'max'
- *
- * @param min the least value that may be generated
- * @param max the greatest value that may be generated
- * @param random the source of randomness
- * @return a random BigInteger value in the range [min,max]
- */
- public static BigInteger createRandomInRange(
- BigInteger min,
- BigInteger max,
- SecureRandom random)
- {
- int cmp = min.compareTo(max);
- if (cmp >= 0)
- {
- if (cmp > 0)
- {
- throw new IllegalArgumentException("'min' may not be greater than 'max'");
- }
-
- return min;
- }
-
- if (min.bitLength() > max.bitLength() / 2)
- {
- return createRandomInRange(ZERO, max.subtract(min), random).add(min);
- }
-
- for (int i = 0; i < MAX_ITERATIONS; ++i)
- {
- BigInteger x = new BigInteger(max.bitLength(), random);
- if (x.compareTo(min) >= 0 && x.compareTo(max) <= 0)
- {
- return x;
- }
- }
-
- // fall back to a faster (restricted) method
- return new BigInteger(max.subtract(min).bitLength() - 1, random).add(min);
- }
-
- public static BigInteger fromUnsignedByteArray(byte[] buf)
- {
- return new BigInteger(1, buf);
- }
-
- public static BigInteger fromUnsignedByteArray(byte[] buf, int off, int length)
- {
- byte[] mag = buf;
- if (off != 0 || length != buf.length)
- {
- mag = new byte[length];
- System.arraycopy(buf, off, mag, 0, length);
- }
- return new BigInteger(1, mag);
- }
-}