diff --git a/cbor/cbor.go b/cbor/cbor.go index 35079dca..c9e109de 100644 --- a/cbor/cbor.go +++ b/cbor/cbor.go @@ -32,8 +32,9 @@ const ( CBOR_MAX_UINT_SIMPLE uint8 = 0x17 // Useful tag numbers - CborTagSet = 258 - CborTagMap = 259 + CborTagRational = 30 + CborTagSet = 258 + CborTagMap = 259 ) // Create an alias for RawMessage for convenience diff --git a/cbor/value.go b/cbor/value.go index 23330910..f5946218 100644 --- a/cbor/value.go +++ b/cbor/value.go @@ -60,6 +60,12 @@ func (v *Value) UnmarshalCBOR(data []byte) error { return err } switch tmpTag.Number { + case CborTagRational: + var tmpRat []int64 + if _, err := Decode(tmpTag.Content, &tmpRat); err != nil { + return err + } + v.value = big.NewRat(tmpRat[0], tmpRat[1]) case CborTagSet: return v.processArray(tmpTag.Content) case CborTagMap: