Class ASN1GeneralizedTime

All Implemented Interfaces:
ASN1Encodable, Encodable
Direct Known Subclasses:
DERGeneralizedTime

public class ASN1GeneralizedTime extends ASN1Primitive
Base class representing the ASN.1 GeneralizedTime type.

The main difference between these and UTC time is a 4 digit year.

One second resolution date+time on UTC timezone (Z) with 4 digit year (valid from 0001 to 9999).

Timestamp format is: yyyymmddHHMMSS'Z'

X.690

This is what is called "restricted string", and it uses ASCII characters to encode digits and supplemental data.

11: Restrictions on BER employed by both CER and DER

11.7 GeneralizedTime

11.7.1 The encoding shall terminate with a "Z", as described in the ITU-T Rec. X.680 | ISO/IEC 8824-1 clause on GeneralizedTime.

11.7.2 The seconds element shall always be present.

11.7.3 The fractional-seconds elements, if present, shall omit all trailing zeros; if the elements correspond to 0, they shall be wholly omitted, and the decimal point element also shall be omitted.

  • Constructor Details

    • ASN1GeneralizedTime

      public ASN1GeneralizedTime(String time)
      The correct format for this is YYYYMMDDHHMMSS[.f]Z, or without the Z for local time, or Z+-HHMM on the end, for difference between local time and UTC time. The fractional second amount f must consist of at least one number with trailing zeroes removed.
      Parameters:
      time - the time string.
      Throws:
      IllegalArgumentException - if String is an illegal format.
    • ASN1GeneralizedTime

      public ASN1GeneralizedTime(Date time)
      Base constructor from a java.util.date object
      Parameters:
      time - a date object representing the time of interest.
    • ASN1GeneralizedTime

      public ASN1GeneralizedTime(Date time, Locale locale)
      Base constructor from a java.util.date and Locale - you may need to use this if the default locale doesn't use a Gregorian calender so that the GeneralizedTime produced is compatible with other ASN.1 implementations.
      Parameters:
      time - a date object representing the time of interest.
      locale - an appropriate Locale for producing an ASN.1 GeneralizedTime value.
  • Method Details

    • getInstance

      public static ASN1GeneralizedTime getInstance(Object obj)
      return a generalized time from the passed in object
      Parameters:
      obj - an ASN1GeneralizedTime or an object that can be converted into one.
      Returns:
      an ASN1GeneralizedTime instance, or null.
      Throws:
      IllegalArgumentException - if the object cannot be converted.
    • getInstance

      public static ASN1GeneralizedTime getInstance(ASN1TaggedObject taggedObject, boolean explicit)
      return a Generalized Time object 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 ASN1GeneralizedTime instance.
      Throws:
      IllegalArgumentException - if the tagged object cannot be converted.
    • getTimeString

      public String getTimeString()
      Return the time.
      Returns:
      The time string as it appeared in the encoded object.
    • getTime

      public String getTime()
      return the time - always in the form of YYYYMMDDhhmmssGMT(+hh:mm|-hh:mm).

      Normally in a certificate we would expect "Z" rather than "GMT", however adding the "GMT" means we can just use:

           dateF = new SimpleDateFormat("yyyyMMddHHmmssz");
       
      To read in the time and get a date which is compatible with our local time zone.
      Returns:
      a String representation of the time.
    • getDate

      public Date getDate() throws ParseException
      Throws:
      ParseException
    • hasFractionalSeconds

      protected boolean hasFractionalSeconds()
    • hasSeconds

      protected boolean hasSeconds()
    • hasMinutes

      protected boolean hasMinutes()
    • hashCode

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