Skip to content

Decode does not work for CBOR produced by Kotlin serializer #20

@denisenkom

Description

@denisenkom

I used Kotlin's KotlinxSerializationCbor to generate following CBOR, encoding it in base64 urlsafe format:

v2dzdWNjZXNz9G5taXNzaW5nRmFjdG9yc5-fn2h3ZWJhdXRobr____-fn2d5dWJpb3Rwv_______

I can decode it using cbor2pretty.rb tool with the following command:

echo v2dzdWNjZXNz9G5taXNzaW5nRmFjdG9yc5-fn2h3ZWJhdXRobr____-fn2d5dWJpb3Rwv_______ \
  | basenc -d --base64url | cbor2pretty.rb

Here is the result:

bf                                 # map(*)
   67                              # text(7)
      73756363657373               # "success"
   f4                              # primitive(20)
   6e                              # text(14)
      6d697373696e67466163746f7273 # "missingFactors"
   9f                              # array(*)
      9f                           # array(*)
         9f                        # array(*)
            68                     # text(8)
               776562617574686e    # "webauthn"
            bf                     # map(*)
               ff                  # primitive(*)
            ff                     # primitive(*)
         ff                        # primitive(*)
      9f                           # array(*)
         9f                        # array(*)
            67                     # text(7)
               797562696f7470      # "yubiotp"
            bf                     # map(*)
               ff                  # primitive(*)
            ff                     # primitive(*)
         ff                        # primitive(*)
      ff                           # primitive(*)
   ff                              # primitive(*)

This indicates to me that this is a valid CBOR and that probably Kotlin serializer is not at fault.

When I try to decode this CBOR using this library using code snippet:

require 'cbor'
require 'base64'
CBOR.decode(Base64.urlsafe_decode64('v2dzdWNjZXNz9G5taXNzaW5nRmFjdG9yc5-fn2h3ZWJhdXRobr____-fn2d5dWJpb3Rwv_______'))

I get error:

in `decode': invalid byte (CBOR::MalformedFormatError)

Is this library not supporting map(*) and/or array(*) elements? If this is the case, is it possible to add support for such elements?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions