Bouncy Castle Cryptography Library 1.77.0

org.bouncycastle.asn1
Class ASN1Integer

java.lang.Object
  |
  +--org.bouncycastle.asn1.ASN1Object
        |
        +--org.bouncycastle.asn1.ASN1Primitive
              |
              +--org.bouncycastle.asn1.ASN1Integer
All Implemented Interfaces:
ASN1Encodable, Encodable
Direct Known Subclasses:
SubsequentMessage

public class ASN1Integer
extends ASN1Primitive

Class representing the ASN.1 INTEGER type.


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(long value)
          Construct an INTEGER from the passed in long value.
 
Method Summary
static ASN1Integer getInstance(ASN1TaggedObject taggedObject, boolean explicit)
          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[]
 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()
           
 
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
 

Constructor Detail

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 explicit)
Return an Integer from a tagged object.
Parameters:
taggedObject - the tagged object holding the object we want
explicit - 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.

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()
Overrides:
hashCode in class ASN1Primitive

toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Object

Bouncy Castle Cryptography Library 1.77.0