BinaryTime (Bouncy Castle Library 1.85 API Specification)
Date: 2026-07-12

org.bouncycastle.asn1.cms

## Class BinaryTime

- java.lang.Object
- - org.bouncycastle.asn1.ASN1Object
  - - org.bouncycastle.asn1.cms.BinaryTime

- All Implemented Interfaces:
    ASN1Encodable, Encodable

      public class BinaryTime
      extends ASN1Object

  RFC 6019 `BinaryTime` type — the unsigned integer count of seconds since 1970-01-01T00:00:00Z (UTC).

       BinaryTime ::= INTEGER (0..MAX)

  Used by other LAMPS specifications that need a compact, monotonically increasing time value as part of an ASN.1 structure (e.g. RFC 9763 `RequesterCertificate.requestTime`). The companion `id-aa-binarySigningTime` CMS signed attribute OID is available as `PKCSObjectIdentifiers.pkcs_9_at_binarySigningTime`.

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `BinaryTime(ASN1Integer time)`
    `BinaryTime(java.util.Date date)` Construct a BinaryTime carrying the seconds-since-epoch of the supplied `Date`.
    `BinaryTime(long seconds)` Construct a BinaryTime carrying the supplied count of seconds since 1970-01-01T00:00:00Z (UTC).

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `static BinaryTime` | `getInstance(java.lang.Object obj)`
    `ASN1Integer` | `getTime()`
    `ASN1Primitive` | `toASN1Primitive()` Method providing a primitive representation of this object suitable for encoding.
    `java.util.Date` | `toDate()` Convert the encoded value to a `Date`.

    - ### Methods inherited from class org.bouncycastle.asn1.ASN1Object

      `encodeTo, encodeTo, equals, getEncoded, getEncoded, hasEncodedTagValue, hashCode`

    - ### Methods inherited from class java.lang.Object

      `clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### BinaryTime

          public BinaryTime(java.util.Date date)

      Construct a BinaryTime carrying the seconds-since-epoch of the supplied `Date`. Sub-second components are discarded by truncation toward negative infinity (consistent with `Date.getTime()` / 1000).
      Throws:
        `java.lang.IllegalArgumentException` - if `date` is before the epoch (RFC 6019 prohibits negative values).

    - #### BinaryTime

          public BinaryTime(long seconds)

      Construct a BinaryTime carrying the supplied count of seconds since 1970-01-01T00:00:00Z (UTC).
      Throws:
        `java.lang.IllegalArgumentException` - if `seconds` is negative.

    - #### BinaryTime

          public BinaryTime(ASN1Integer time)

  - ### Method Detail

    - #### getInstance

          public static BinaryTime getInstance(java.lang.Object obj)

    - #### getTime

          public ASN1Integer getTime()

      Returns:
        the encoded value as a count of seconds since the Unix epoch. May exceed `Long.MAX_VALUE` on a wildly out-of-range encoding; callers that only need a Date may prefer `toDate()` which rejects unrepresentable values.

    - #### toDate

          public java.util.Date toDate()

      Convert the encoded value to a `Date`.
      Throws:
        `java.lang.ArithmeticException` - if the seconds value does not fit in a `long` after multiplication by 1000.

    - #### toASN1Primitive

          public ASN1Primitive toASN1Primitive()

      Description copied from class: `ASN1Object`
      Method providing a primitive representation of this object suitable for encoding.
      Specified by:
        `toASN1Primitive` in interface `ASN1Encodable`
      Specified by:
        `toASN1Primitive` in class `ASN1Object`
      Returns:
        a primitive representation of this object.