docs: def sign(self, identity, blob):
          """Sign given blob and return the signature (as bytes)."""
          curve_name = identity.get_curve_name(ecdh=False)
          log.debug('"%s" signing %r (%s) on %s',
                    identity.to_string(), blob, curve_name, self)
          try:
              result = self._defs.sign_identity(
                  self.conn,
                  identity=self._identity_proto(identity),
                  challenge_hidden=blob,
                  challenge_visual='',
                  ecdsa_curve_name=curve_name)
              log.debug('result: %s', result)
              assert len(result.signature) == 65
              assert result.signature[:1] == b'\x00'
              return bytes(result.signature[1:])
          except self._defs.TrezorFailure as e:
              msg = '{} error: {}'.format(self, e)
              log.debug(msg, exc_info=True)
              raise interface.DeviceError(msg)