docs: def GetJson(self):
      """Returns JSON version of ClientData compatible with FIDO spec."""
  
      # The U2F Raw Messages specification specifies that the challenge is encoded
      # with URL safe Base64 without padding encoding specified in RFC 4648.
      # Python does not natively support a paddingless encoding, so we simply
      # remove the padding from the end of the string.
      server_challenge_b64 = base64.urlsafe_b64encode(
          self.raw_server_challenge).decode()
      server_challenge_b64 = server_challenge_b64.rstrip('=')
      return json.dumps({'typ': self.typ,
                         'challenge': server_challenge_b64,
                         'origin': self.origin}, sort_keys=True)