org.spongycastle.bcpg.MPInteger Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of scprov-jdk15 Show documentation
Show all versions of scprov-jdk15 Show documentation
Spongy Castle is a package-rename (org.bouncycastle.* to org.spongycastle.*) of Bouncy Castle intended for Android.
Android ships with a stripped-down version of Bouncy Castle - this causes classloader collisions if you try to add
an alternative (updated/complete) Bouncy Castle jar.
This jar contains JCE provider and lightweight API for the Bouncy Castle Cryptography APIs for JDK 1.5.
package org.spongycastle.bcpg;
import java.io.*;
import java.math.BigInteger;
/**
* a multiple precision integer
*/
public class MPInteger
extends BCPGObject
{
BigInteger value = null;
public MPInteger(
BCPGInputStream in)
throws IOException
{
int length = (in.read() << 8) | in.read();
byte[] bytes = new byte[(length + 7) / 8];
in.readFully(bytes);
value = new BigInteger(1, bytes);
}
public MPInteger(
BigInteger value)
{
if (value == null || value.signum() < 0)
{
throw new IllegalArgumentException("value must not be null, or negative");
}
this.value = value;
}
public BigInteger getValue()
{
return value;
}
public void encode(
BCPGOutputStream out)
throws IOException
{
int length = value.bitLength();
out.write(length >> 8);
out.write(length);
byte[] bytes = value.toByteArray();
if (bytes[0] == 0)
{
out.write(bytes, 1, bytes.length - 1);
}
else
{
out.write(bytes, 0, bytes.length);
}
}
}