def signature(self):
        """The 32-byte ECC tag signature programmed at chip production. The
        signature is provided as a string and can only be read.

        The signature attribute is always loaded from the tag when it
        is accessed, i.e. it is not cached. If communication with the
        tag fails for some reason the signature attribute is set to a
        32-byte string of all zeros.

        """
        log.debug("read tag signature")
        try:
            return bytes(self.transceive(b"\x3C\x00"))
        except tt2.Type2TagCommandError:
            return 32 * b"\0"
The 32-byte ECC tag signature programmed at chip production. The
        signature is provided as a string and can only be read.

        The signature attribute is always loaded from the tag when it
        is accessed, i.e. it is not cached. If communication with the
        tag fails for some reason the signature attribute is set to a
        32-byte string of all zeros.