Class BigIntegers
-
Nested Class Summary
Nested Classes -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final BigIntegerstatic final BigIntegerstatic final BigInteger -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic booleanareSecretValuesEqual(int maxLen, BigInteger a, BigInteger b) Compare two non-negative values for equality without an early exit.static byte[]asUnsignedByteArray(int length, BigInteger value) Return the passed in value as an unsigned byte array of the specified length, padded with leading zeros as necessary..static byte[]asUnsignedByteArray(BigInteger value) Return the passed in value as an unsigned byte array.static voidasUnsignedByteArray(BigInteger value, byte[] buf, int off, int len) Write the passed in value as unsigned bytes to the specified buffer range, padded with leading zeros as necessary.static bytestatic BigIntegercreateRandomBigInteger(int bitLength, SecureRandom random) Return a positive BigInteger in the range of 0 to 2**bitLength - 1.static BigIntegercreateRandomInRange(BigInteger min, BigInteger max, SecureRandom random) Return a random BigInteger not less than 'min' and not greater than 'max'static BigIntegercreateRandomPrime(int bitLength, int certainty, SecureRandom random) Return a prime number candidate of the specified bit length.static BigIntegerfromUnsignedByteArray(byte[] buf) static BigIntegerfromUnsignedByteArray(byte[] buf, int off, int length) static intstatic booleanstatic intstatic longstatic BigIntegerstatic BigIntegerstatic booleanstatic booleanstatic shortstatic void
-
Field Details
-
ZERO
-
ONE
-
TWO
-
-
Constructor Details
-
BigIntegers
public BigIntegers()
-
-
Method Details
-
asUnsignedByteArray
Return the passed in value as an unsigned byte array.- Parameters:
value- the value to be converted.- Returns:
- a byte array without a leading zero byte if present in the signed encoding.
-
asUnsignedByteArray
Return the passed in value as an unsigned byte array of the specified length, padded with leading zeros as necessary..- Parameters:
length- the fixed length of the resultvalue- the value to be converted.- Returns:
- a byte array padded to a fixed length with leading zeros.
-
asUnsignedByteArray
Write the passed in value as unsigned bytes to the specified buffer range, padded with leading zeros as necessary.- Parameters:
value- the value to be converted.buf- the buffer to which the value is written.off- the start offset in arraybufat which the data is written.len- the fixed length of data written (possibly padded with leading zeros).
-
createRandomInRange
Return a random BigInteger not less than 'min' and not greater than 'max'- Parameters:
min- the least value that may be generatedmax- the greatest value that may be generatedrandom- the source of randomness- Returns:
- a random BigInteger value in the range [min,max]
-
fromUnsignedByteArray
-
fromUnsignedByteArray
-
byteValueExact
-
shortValueExact
-
intValueExact
-
longValueExact
-
areSecretValuesEqual
Compare two non-negative values for equality without an early exit. Both are laid out as unsigned big-endian byte arrays of the fixed public lengthmaxLenbefore the comparison, so the comparison itself is length-uniform.Fixed-width encoding drops the two's-complement sign byte that
BigInteger.toByteArray()prepends when the most-significant bit is set: without that, two values could serialise to different lengths (e.g. 256 vs 257 bytes for a 2048-bit value) purely according to that high bit, and the variable-time comparison would leak it. This is not perfectly constant-time —java.math.BigIntegerhas no constant-time serialisation, so the underlyingtoByteArray()still runs in time proportional to each value's magnitude — but the comparison no longer differs in length on the value's high bit. Intended for secret key material (RSAdand the CRT factors, DSA/DH/ElGamal/GOSTx, ECd), which are all non-negative; the temporary unsigned encodings holding that secret material are zeroed before returning.Both arguments must be non-null and non-negative; a negative value does not produce a meaningful result (and may throw
IllegalArgumentException), and a null value throwsNullPointerException.- Parameters:
maxLen- the public unsigned byte length both values are encoded to (e.g. from a group order or modulus).a- the first value, non-null and non-negative.b- the second value, non-null and non-negative.- Returns:
- true if
aandbare numerically equal, false otherwise.
-
hasAnySmallFactors
-
modOddInverse
-
modOddInverseVar
-
modOddIsCoprime
-
modOddIsCoprimeVar
-
getUnsignedByteLength
-
createRandomBigInteger
Return a positive BigInteger in the range of 0 to 2**bitLength - 1.- Parameters:
bitLength- maximum bit length for the generated BigInteger.random- a source of randomness.- Returns:
- a positive BigInteger
-
createRandomPrime
Return a prime number candidate of the specified bit length.- Parameters:
bitLength- bit length for the generated BigInteger.random- a source of randomness.- Returns:
- a positive BigInteger of numBits length
-
writeUnsignedByteArray
- Throws:
IOException
-