From 656e08ce49ee25203f0641754f400731c474fe31 Mon Sep 17 00:00:00 2001 From: whyrusleeping Date: Fri, 14 Aug 2020 15:45:45 -0700 Subject: [PATCH] use unix nanoseconds for encoding Cbortime --- utils.go | 35 +++++++---------------------------- 1 file changed, 7 insertions(+), 28 deletions(-) diff --git a/utils.go b/utils.go index 0c97ce5..632f8ed 100644 --- a/utils.go +++ b/utils.go @@ -696,43 +696,22 @@ func (ci *CborInt) UnmarshalCBOR(r io.Reader) error { type CborTime time.Time func (ct *CborTime) MarshalCBOR(w io.Writer) error { - b, err := (*time.Time)(ct).MarshalBinary() - if err != nil { - return err - } + nsecs := ct.Time().UnixNano() - if err := CborWriteHeader(w, MajByteString, uint64(len(b))); err != nil { - return err - } + cbi := CborInt(nsecs) - if _, err := w.Write(b); err != nil { - return err - } - - return nil + return cbi.MarshalCBOR(w) } func (ct *CborTime) UnmarshalCBOR(r io.Reader) error { - t, l, err := CborReadHeader(r) - if err != nil { + var cbi CborInt + if err := cbi.UnmarshalCBOR(r); err != nil { return err } - if t != MajByteString { - return fmt.Errorf("CborTime expects to find a byte array (got %d)", t) - } - - buf := make([]byte, l) - if _, err := io.ReadFull(r, buf); err != nil { - return err - } - - tm := time.Time{} - if err := tm.UnmarshalBinary(buf); err != nil { - return err - } + t := time.Unix(0, int64(cbi)) - *ct = (CborTime)(tm) + *ct = (CborTime)(t) return nil } -- GitLab