Skip to content

Module gnupg.handlers.sign_handler

View Source
from __future__ import annotations

from typing import TYPE_CHECKING

from gnupg.helper import _get_logger

from .helper import _determine_invalid_recipient_or_signer

from .status_handler import StatusHandler

from .text_handler import TextHandler

if TYPE_CHECKING:

    from gnupg.gnupg import GPG

logger = _get_logger(__name__)

class SignHandler(StatusHandler, TextHandler):

    """

    This class handles status messages during signing.

    """

    returncode = None

    def __init__(self, gpg: GPG) -> None:

        StatusHandler.__init__(self, gpg)

        self.type = None

        self.hash_algo = None

        self.fingerprint = None

        self.status = None

        self.status_detail = None

        self.key_id = None

        self.username = None

    def __nonzero__(self) -> bool:

        return self.fingerprint is not None

    __bool__ = __nonzero__

    def handle_status(self, key: str, value: str) -> None:

        if key in ("WARNING", "ERROR", "FAILURE"):  # pragma: no cover

            logger.warning("potential problem: %s: %s", key, value)

        elif key in ("KEYEXPIRED", "SIGEXPIRED"):  # pragma: no cover

            self.status = "key expired"

        elif key == "KEYREVOKED":  # pragma: no cover

            self.status = "key revoked"

        elif key == "SIG_CREATED":

            (self.type, algo, self.hash_algo, cls, self.timestamp, self.fingerprint) = value.split()

            self.status = "signature created"

        elif key == "USERID_HINT":  # pragma: no cover

            self.key_id, self.username = value.split(" ", 1)

        elif key == "BAD_PASSPHRASE":  # pragma: no cover

            self.status = "bad passphrase"

        elif key in ("INV_SGNR", "INV_RECP"):  # pragma: no cover

            # INV_RECP is returned in older versions

            if not self.status:

                self.status = "invalid signer"

            else:

                self.status = f"invalid signer: {self.status}"

            self.status_detail = _determine_invalid_recipient_or_signer(value)

        elif key in ("NEED_PASSPHRASE", "GOOD_PASSPHRASE", "BEGIN_SIGNING"):

            pass

        else:  # pragma: no cover

            logger.debug("message ignored: %s, %s", key, value)

Variables

TYPE_CHECKING
logger

Classes

SignHandler

class SignHandler(
    gpg: 'GPG'
)

This class handles status messages during signing.

View Source
class SignHandler(StatusHandler, TextHandler):

    """

    This class handles status messages during signing.

    """

    returncode = None

    def __init__(self, gpg: GPG) -> None:

        StatusHandler.__init__(self, gpg)

        self.type = None

        self.hash_algo = None

        self.fingerprint = None

        self.status = None

        self.status_detail = None

        self.key_id = None

        self.username = None

    def __nonzero__(self) -> bool:

        return self.fingerprint is not None

    __bool__ = __nonzero__

    def handle_status(self, key: str, value: str) -> None:

        if key in ("WARNING", "ERROR", "FAILURE"):  # pragma: no cover

            logger.warning("potential problem: %s: %s", key, value)

        elif key in ("KEYEXPIRED", "SIGEXPIRED"):  # pragma: no cover

            self.status = "key expired"

        elif key == "KEYREVOKED":  # pragma: no cover

            self.status = "key revoked"

        elif key == "SIG_CREATED":

            (self.type, algo, self.hash_algo, cls, self.timestamp, self.fingerprint) = value.split()

            self.status = "signature created"

        elif key == "USERID_HINT":  # pragma: no cover

            self.key_id, self.username = value.split(" ", 1)

        elif key == "BAD_PASSPHRASE":  # pragma: no cover

            self.status = "bad passphrase"

        elif key in ("INV_SGNR", "INV_RECP"):  # pragma: no cover

            # INV_RECP is returned in older versions

            if not self.status:

                self.status = "invalid signer"

            else:

                self.status = f"invalid signer: {self.status}"

            self.status_detail = _determine_invalid_recipient_or_signer(value)

        elif key in ("NEED_PASSPHRASE", "GOOD_PASSPHRASE", "BEGIN_SIGNING"):

            pass

        else:  # pragma: no cover

            logger.debug("message ignored: %s, %s", key, value)

Ancestors (in MRO)

  • gnupg.handlers.status_handler.StatusHandler
  • gnupg.handlers.text_handler.TextHandler

Class variables

returncode

Methods

handle_status

def handle_status(
    self,
    key: 'str',
    value: 'str'
) -> 'None'

Handle status messages from the gpg child process. These are lines of the format

[GNUPG:]

Parameters:

Name Type Description Default
key str Identifies what the status message is. None
value str Identifies additional data, which differs depending on the key. None
View Source
    def handle_status(self, key: str, value: str) -> None:

        if key in ("WARNING", "ERROR", "FAILURE"):  # pragma: no cover

            logger.warning("potential problem: %s: %s", key, value)

        elif key in ("KEYEXPIRED", "SIGEXPIRED"):  # pragma: no cover

            self.status = "key expired"

        elif key == "KEYREVOKED":  # pragma: no cover

            self.status = "key revoked"

        elif key == "SIG_CREATED":

            (self.type, algo, self.hash_algo, cls, self.timestamp, self.fingerprint) = value.split()

            self.status = "signature created"

        elif key == "USERID_HINT":  # pragma: no cover

            self.key_id, self.username = value.split(" ", 1)

        elif key == "BAD_PASSPHRASE":  # pragma: no cover

            self.status = "bad passphrase"

        elif key in ("INV_SGNR", "INV_RECP"):  # pragma: no cover

            # INV_RECP is returned in older versions

            if not self.status:

                self.status = "invalid signer"

            else:

                self.status = f"invalid signer: {self.status}"

            self.status_detail = _determine_invalid_recipient_or_signer(value)

        elif key in ("NEED_PASSPHRASE", "GOOD_PASSPHRASE", "BEGIN_SIGNING"):

            pass

        else:  # pragma: no cover

            logger.debug("message ignored: %s, %s", key, value)