Class ASN1Integer

All Implemented Interfaces:
ASN1Encodable, Encodable

public class ASN1Integer extends ASN1Primitive
Class representing the ASN.1 INTEGER type.
  • Constructor Details

    • 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(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 Details

    • getInstance

      public static ASN1Integer getInstance(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:
      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:
      IllegalArgumentException - if the tagged object cannot be converted.
    • getPositiveValue

      public 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 BigInteger getValue()
    • hasValue

      public boolean hasValue(int x)
    • hasValue

      public boolean hasValue(long x)
    • hasValue

      public boolean hasValue(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 String toString()
      Overrides:
      toString in class Object