@NonNull
	public static byte[] integerToBytes(@NonNull final BigInteger s) {
		final byte[] bytes = s.toByteArray();
		if (bytes.length == 32) {
			return bytes;
		}

		if (bytes.length < 32) {
			final byte[] tmp = new byte[32];
			System.arraycopy(bytes, 0, tmp, 32 - bytes.length, bytes.length);
			return tmp;
		}

		// Sometime, BigInteger.toByteArray return an extra 0x00
		if (bytes.length == 33 && bytes[0] == 0) {
			final byte[] tmp = new byte[32];
			System.arraycopy(bytes, 1, tmp, 0, 32);
			return tmp;
		}

		throw new IllegalArgumentException("BigInteger " + s + " too large"); //$NON-NLS-1$ //$NON-NLS-2$
	}