Bouncy Castle Cryptography Library 1.84

org.bouncycastle.asn1
Class ASN1Integer

java.lang.Object
  extended byorg.bouncycastle.asn1.ASN1Object
      extended byorg.bouncycastle.asn1.ASN1Primitive
          extended byorg.bouncycastle.asn1.ASN1Integer
All Implemented Interfaces:
ASN1Encodable, Encodable

public class ASN1Integer
extends ASN1Primitive

Class representing the ASN.1 INTEGER type.


Field Summary
static ASN1Integer FIVE
           
static ASN1Integer FOUR
           
static ASN1Integer ONE
           
static ASN1Integer THREE
           
static ASN1Integer TWO
           
static ASN1Integer ZERO
           
 
Constructor Summary
ASN1Integer(java.math.BigInteger value)
          Construct an INTEGER from the passed in BigInteger value.
ASN1Integer(byte[] bytes)
          Construct an INTEGER from the passed in byte array.
ASN1Integer(int value)
          Construct an INTEGER from the passed in int value.
ASN1Integer(long value)
          Construct an INTEGER from the passed in long value.
 
Method Summary
static ASN1Integer getInstance(ASN1TaggedObject taggedObject, boolean declaredExplicit)
          Return an Integer from a tagged object.
static ASN1Integer getInstance(java.lang.Object obj)
          Return an integer from the passed in object.
 java.math.BigInteger getPositiveValue()
          in some cases positive values get crammed into a space, that's not quite big enough[]
static ASN1Integer getTagged(ASN1TaggedObject taggedObject, boolean declaredExplicit)
           
 java.math.BigInteger getValue()
           
 int hashCode()
           
 boolean hasValue(java.math.BigInteger x)
           
 boolean hasValue(int x)
           
 boolean hasValue(long x)
           
 int intPositiveValueExact()
           
 int intValueExact()
           
 long longValueExact()
           
 java.lang.String toString()
           
static ASN1Integer valueOf(int value)
           
static ASN1Integer valueOf(long value)
           
 
Methods inherited from class org.bouncycastle.asn1.ASN1Primitive
encodeTo, encodeTo, equals, equals, equals, fromByteArray, toASN1Primitive
 
Methods inherited from class org.bouncycastle.asn1.ASN1Object
getEncoded, getEncoded, hasEncodedTagValue
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

ZERO

public static final ASN1Integer ZERO

ONE

public static final ASN1Integer ONE

TWO

public static final ASN1Integer TWO

THREE

public static final ASN1Integer THREE

FOUR

public static final ASN1Integer FOUR

FIVE

public static final ASN1Integer FIVE
Constructor Detail

ASN1Integer

public ASN1Integer(int value)
Construct an INTEGER from the passed in int value.

Parameters:
value - the int representing the value desired.

ASN1Integer

public ASN1Integer(long value)
Construct an INTEGER from the passed in long value.

Parameters:
value - the long representing the value desired.

ASN1Integer

public ASN1Integer(java.math.BigInteger value)
Construct an INTEGER from the passed in BigInteger value.

Parameters:
value - the BigInteger representing the value desired.

ASN1Integer

public ASN1Integer(byte[] bytes)
Construct an INTEGER from the passed in byte array.

NB: Strict Validation applied by default.

It has turned out that there are still a few applications that struggle with the ASN.1 BER encoding rules for an INTEGER as described in: https://www.itu.int/ITU-T/studygroups/com17/languages/X.690-0207.pdf Section 8.3.2.

Users can set the 'org.bouncycastle.asn1.allow_unsafe_integer' to 'true' and a looser validation will be applied. Users must recognise that this is not ideal and may pave the way for an exploit based around a faulty encoding in the future.

Parameters:
bytes - the byte array representing a 2's complement encoding of a BigInteger.
Method Detail

getInstance

public static ASN1Integer getInstance(java.lang.Object obj)
Return an integer from the passed in object.

Parameters:
obj - an ASN1Integer or an object that can be converted into one.
Returns:
an ASN1Integer instance.
Throws:
java.lang.IllegalArgumentException - if the object cannot be converted.

getInstance

public static ASN1Integer getInstance(ASN1TaggedObject taggedObject,
                                      boolean declaredExplicit)
Return an Integer from a tagged object.

Parameters:
taggedObject - the tagged object holding the object we want
declaredExplicit - true if the object is meant to be explicitly tagged false otherwise.
Returns:
an ASN1Integer instance.
Throws:
java.lang.IllegalArgumentException - if the tagged object cannot be converted.

getTagged

public static ASN1Integer getTagged(ASN1TaggedObject taggedObject,
                                    boolean declaredExplicit)

valueOf

public static ASN1Integer valueOf(int value)

valueOf

public static ASN1Integer valueOf(long value)

getPositiveValue

public java.math.BigInteger getPositiveValue()
in some cases positive values get crammed into a space, that's not quite big enough[]

Returns:
the BigInteger that results from treating this ASN.1 INTEGER as unsigned.

getValue

public java.math.BigInteger getValue()

hasValue

public boolean hasValue(int x)

hasValue

public boolean hasValue(long x)

hasValue

public boolean hasValue(java.math.BigInteger x)

intPositiveValueExact

public int intPositiveValueExact()

intValueExact

public int intValueExact()

longValueExact

public long longValueExact()

hashCode

public int hashCode()
Specified by:
hashCode in class ASN1Primitive

toString

public java.lang.String toString()

Bouncy Castle Cryptography Library 1.84