<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def unsign(self, b64msg):
 """ Retrieves data from signed token. :param b64msg: Token to unsign :type b64msg: str """

        msg = self._b64decode(b64msg)
        try:
            body, signature = msg.rsplit('.', 1)

        except ValueError as e:
            raise MalformedSigendMessage(e.args[0])

        else:
            if signature == self._create_signature(body):
                try:
                    return json.loads(body)

                except ValueError as e:
                    raise MalformedSigendMessage(e.args[0])

            else:
                raise BadSignature()