]> Cypherpunks repositories - gostls13.git/commitdiff
encoding/asn1: handle UTCTime before the year 2000
authorAdam Langley <agl@golang.org>
Mon, 5 Mar 2012 16:31:24 +0000 (11:31 -0500)
committerAdam Langley <agl@golang.org>
Mon, 5 Mar 2012 16:31:24 +0000 (11:31 -0500)
UTCTime only has a two digit date field and year values from 50 should
be 1950, not 2050.

R=golang-dev, r, rsc
CC=golang-dev
https://golang.org/cl/5729063

src/pkg/encoding/asn1/asn1.go

index 4d1ae38c4edaa1ce4203da112dd81aa287d92b71..3bf81a68cf4f73fdf043252ed9cc1c1f1eefa55c 100644 (file)
@@ -250,10 +250,14 @@ func parseBase128Int(bytes []byte, initOffset int) (ret, offset int, err error)
 func parseUTCTime(bytes []byte) (ret time.Time, err error) {
        s := string(bytes)
        ret, err = time.Parse("0601021504Z0700", s)
-       if err == nil {
-               return
+       if err != nil {
+               ret, err = time.Parse("060102150405Z0700", s)
        }
-       ret, err = time.Parse("060102150405Z0700", s)
+       if err == nil && ret.Year() >= 2050 {
+               // UTCTime only encodes times prior to 2050. See https://tools.ietf.org/html/rfc5280#section-4.1.2.5.1
+               ret = ret.AddDate(-100, 0, 0)
+       }
+
        return
 }