code: def key(self, identifier):
          
          if isinstance(identifier, PGPMessage):
              for issuer in identifier.issuers:
                  if issuer in self:
                      identifier = issuer
                      break
  
          if isinstance(identifier, PGPSignature):
              identifier = identifier.signer
  
          yield self._get_key(identifier)
docs: A context-manager method. Yields the first :py:obj:`PGPKey` object that matches the provided identifier.
  
          :param identifier: The identifier to use to select a loaded key.
          :type identifier: :py:exc:`PGPMessage`, :py:exc:`PGPSignature`, ``str``
          :raises: :py:exc:`KeyError` if there is no loaded key that satisfies the identifier.