BinaryTime: An Alternate Format for Representing Date and Time in ASN.1
RFC 4049

Document Type RFC - Experimental (April 2005; No errata)
Obsoleted by RFC 6019
Was draft-housley-binarytime (individual in gen area)
Author Russ Housley 
Last updated 2015-10-14
Stream IETF
Formats plain text html pdf htmlized bibtex
Stream WG state (None)
Document shepherd No shepherd assigned
This information refers to IESG processing after the RFC was initially published:
IESG IESG state RFC 4049 (Experimental)
Action Holders
Consensus Boilerplate Unknown
Telechat date
Responsible AD Alexey Melnikov
Send notices to (None)
Network Working Group                                        R. Housley
Request for Comments: 4049                               Vigil Security
Category: Experimental                                       April 2005

      An Alternate Format for Representing Date and Time in ASN.1

Status of This Memo

   This memo defines an Experimental Protocol for the Internet
   community.  It does not specify an Internet standard of any kind.
   Discussion and suggestions for improvement are requested.
   Distribution of this memo is unlimited.

Copyright Notice

   Copyright (C) The Internet Society (2005).


   This document specifies a new ASN.1 type for representing time:
   BinaryTime.  This document also specifies an alternate to the
   signing-time attribute for use with the Cryptographic Message Syntax
   (CMS) SignedData and AuthenticatedData content types; the binary-
   signing-time attribute uses BinaryTime.  CMS and the signing-time
   attribute are defined in RFC 3852.

1.  Introduction

   This document specifies a new ASN.1 [ASN1] type for representing
   time:  BinaryTime.  This ASN.1 type can be used to represent date and
   time values.

   This document also specifies an alternative to the signing-time
   attribute used with the Cryptographic Message Syntax (CMS) [CMS]
   SignedData and AuthenticatedData content types, allowing the
   BinaryTime type to be used instead of the traditional UTCTime and
   GeneralizedTime types.

1.1.  BinaryTime

   Many operating systems represent date and time as an integer.  This
   document specifies an ASN.1 type for representing date and time in a
   manner that is also an integer.  Although some conversion may be
   necessary due to the selection of a different epoch or a different
   granularity, an integer representation has several advantages over
   the UTCTime and GeneralizedTime types.

Housley                       Experimental                      [Page 1]
RFC 4049                       BinaryTime                     April 2005

   First, a BinaryTime value is smaller than either a UTCTime or a
   GeneralizedTime value.

   Second, in some operating systems, the value can be used with little
   or no conversion.  Conversion, when it is needed, requires only
   straightforward computation.  If the endian ordering is different
   from the ASN.1 representation of an INTEGER, then straightforward
   manipulation is needed to obtain an equivalent integer value.  If the
   epoch is different than the one chosen for BinaryTime, addition or
   subtraction is needed to compensate.  If the granularity is something
   other than seconds, then multiplication or division is needed to
   compensate.  Also, padding may be needed to convert the variable-
   length ASN.1 encoding of INTEGER to a fixed-length value used in the
   operating system.

   Third, date comparison is very easy with BinaryTime.  Integer
   comparison is easy, even when multi-precision integers are involved.
   Date comparison with UTCTime or GeneralizedTime can be complex when
   the two values to be compared are provided in different time zones.

   This is a rare instance which both memory and processor cycles can be

1.2.  Binary Signing Time Attribute

   The signing-time attribute is defined in [CMS].  The alternative
   binary-signing-time attribute is defined in this document in order to
   obtain the benefits of the BinaryTime type.

1.3.  Terminology

   In this document, the key words MUST, MUST NOT, REQUIRED, SHOULD,
   SHOULD NOT, RECOMMENDED, MAY, and OPTIONAL are to be interpreted as
   described in [STDWORDS].

2.  BinaryTime Definition

   The BinaryTime ASN.1 type is used to represent an absolute time and
   date.  A positive integer value is used to represent time values
   based on coordinated universal time (UTC), which is also called
   Greenwich Mean Time (GMT) and ZULU clock time.

   The syntax for BinaryTime is:

      BinaryTime ::= INTEGER (0..MAX)

Housley                       Experimental                      [Page 2]
RFC 4049                       BinaryTime                     April 2005

   The integer value is the number of seconds, excluding leap seconds,
   after midnight UTC, January 1, 1970.  This time format cannot
   represent time values prior to January 1, 1970.  The latest UTC time
   value that can be represented by a four-octet integer value is
   03:14:07 on January 19, 2038, which is represented by the hexadecimal
   value 7FFFFFFF.  Time values beyond 03:14:07 on January 19, 2038, are
   represented by integer values that are longer than four octets, and a
   five-octet integer value is sufficient to represent dates covering
   the next seventeen millennia.

   This specification uses a variable-length encoding of INTEGER.  This
   permits any time value after midnight UTC, January 1, 1970, to be

   When encoding an integer value that consists of more than one octet,
Show full document text