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.

    • Field Detail

      • time

        protected byte[] time
    • Constructor Detail

      • ASN1GeneralizedTime

        public ASN1GeneralizedTime​(java.lang.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:
        java.lang.IllegalArgumentException - if String is an illegal format.
      • ASN1GeneralizedTime

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

        public ASN1GeneralizedTime​(java.util.Date time,
                                   java.util.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 Detail

      • getInstance

        public static ASN1GeneralizedTime getInstance​(java.lang.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:
        java.lang.IllegalArgumentException - if the object cannot be converted.
      • getInstance

        public static ASN1GeneralizedTime getInstance​(ASN1TaggedObject obj,
                                                      boolean explicit)
        return a Generalized Time object from a tagged object.
        Parameters:
        obj - 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:
        java.lang.IllegalArgumentException - if the tagged object cannot be converted.
      • getTimeString

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

        public java.lang.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 java.util.Date getDate()
                               throws java.text.ParseException
        Throws:
        java.text.ParseException
      • hasFractionalSeconds

        protected boolean hasFractionalSeconds()
      • hasSeconds

        protected boolean hasSeconds()
      • hasMinutes

        protected boolean hasMinutes()