93 lines
2.4 KiB
Python
93 lines
2.4 KiB
Python
from dataclasses import dataclass, field
|
|
from typing import Optional
|
|
|
|
from pyhanko.cli.config import CLIConfig
|
|
from pyhanko.sign import PdfSignatureMetadata
|
|
from pyhanko.sign.fields import SigFieldSpec
|
|
from pyhanko.stamp import BaseStampStyle
|
|
|
|
|
|
@dataclass
|
|
class UXContext:
|
|
"""
|
|
Context object to track information that affects the UX, e.g. user intent
|
|
as inferred from certain argument combinations that are otherwise difficult
|
|
to wire throughout the UI code.
|
|
"""
|
|
|
|
visible_signature_desired: bool = False
|
|
"""
|
|
Set to `True` if the user explicitly specifies `--field` with a bounding box
|
|
or passes `--style-name` explicitly.
|
|
"""
|
|
|
|
|
|
@dataclass
|
|
class CLIContext:
|
|
"""
|
|
Context object that cobbles together various CLI settings values that were
|
|
gathered by various subcommands during the lifetime of a CLI invocation,
|
|
either from configuration or from command line arguments.
|
|
This object is passed around as a ``click`` context object.
|
|
|
|
Not all settings are applicable to all subcommands, so all values are
|
|
optional.
|
|
"""
|
|
|
|
sig_settings: Optional[PdfSignatureMetadata] = None
|
|
"""
|
|
The settings that will be used to produce a new signature.
|
|
"""
|
|
|
|
config: Optional[CLIConfig] = None
|
|
"""
|
|
Values for CLI configuration settings.
|
|
"""
|
|
|
|
existing_fields_only: bool = False
|
|
"""
|
|
Whether signing operations should use existing fields only.
|
|
"""
|
|
|
|
timestamp_url: Optional[str] = None
|
|
"""
|
|
Endpoint URL for the timestamping service to use.
|
|
"""
|
|
|
|
stamp_style: Optional[BaseStampStyle] = None
|
|
"""
|
|
Stamp style to use for generating visual signature appearances, if
|
|
applicable.
|
|
"""
|
|
|
|
stamp_url: Optional[str] = None
|
|
"""
|
|
For QR stamp styles, defines the URL used to generate the QR code.
|
|
"""
|
|
|
|
new_field_spec: Optional[SigFieldSpec] = None
|
|
"""
|
|
Field spec used to generate new signature fields, if applicable.
|
|
"""
|
|
|
|
prefer_pss: bool = False
|
|
"""
|
|
When working with RSA keys, prefer RSASSA-PSS signing if available.
|
|
"""
|
|
|
|
detach_pem: bool = False
|
|
"""
|
|
When producing detached signature payloads (i.e. non-PDF CMS), save the
|
|
result in a PEM file instead of in a DER file.
|
|
"""
|
|
|
|
lenient: bool = False
|
|
"""
|
|
Process PDF files in nonstrict mode.
|
|
"""
|
|
|
|
ux: UXContext = field(default_factory=UXContext)
|
|
"""
|
|
UX information.
|
|
"""
|