Source code for pdfnaut.security.providers

from typing_extensions import TypeAlias

from .base import CryptProvider, IdentityProvider

ProviderMap: TypeAlias = "dict[str, type[CryptProvider] | None]"


def _get_dome_providers() -> ProviderMap:
    from ._cryptodome import DomeAES128Provider, DomeARC4Provider

    return {"ARC4": DomeARC4Provider, "AESV2": DomeAES128Provider, "Identity": IdentityProvider}


def _get_pyca_providers() -> ProviderMap:
    from ._pyca import PycaAES128Provider, PycaARC4Provider

    return {"ARC4": PycaARC4Provider, "AESV2": PycaAES128Provider, "Identity": IdentityProvider}


[docs] def load_providers() -> ProviderMap: provider_functions = [_get_pyca_providers, _get_dome_providers] for function in provider_functions: try: return function() except ImportError: pass return {"ARC4": None, "AESV2": None, "Identity": IdentityProvider}
CRYPT_PROVIDERS = load_providers()