"""
This package houses the part of pyHanko that produces digital signatures.
It contains modules for creating ``SignedData`` CMS objects, embedding them
in PDF files, and for handling PDF-specific document signing needs.
"""

from .pdf_cms import Signer, SimpleSigner, ExternalSigner
from .pdf_byterange import (
    PdfByteRangeDigest, PdfSignedData, SignatureObject, DocumentTimestamp,
)
from .pdf_signer import PdfSignatureMetadata, PdfTimeStamper, PdfSigner
from .functions import sign_pdf, embed_payload_with_cms

# reexport this for backwards compatibility
from pyhanko.sign.general import load_certs_from_pemder

from .constants import (
    DEFAULT_MD, DEFAULT_SIGNING_STAMP_STYLE, DEFAULT_SIG_SUBFILTER,
    DEFAULT_SIGNER_KEY_USAGE
)


__all__ = [
    'PdfSignatureMetadata', 'Signer', 'SimpleSigner', 'ExternalSigner',
    'PdfSigner', 'PdfTimeStamper',
    'PdfByteRangeDigest', 'PdfSignedData',
    'SignatureObject', 'DocumentTimestamp',
    'sign_pdf', 'load_certs_from_pemder',
    'DEFAULT_MD', 'DEFAULT_SIGNING_STAMP_STYLE', 'DEFAULT_SIG_SUBFILTER',
    'DEFAULT_SIGNER_KEY_USAGE'
]
