19 lines
653 B
Python
19 lines
653 B
Python
import importlib
|
|
|
|
from ._ciphers import CIPHERS, CipherName
|
|
from ._typing import Cipher
|
|
|
|
__all__ = ["cipher", "CIPHERS", "Cipher", "CipherName"]
|
|
|
|
|
|
def cipher(alg: CipherName) -> Cipher:
|
|
"""Acquire a cipher module by name."""
|
|
name = alg.lower().replace("-", "")
|
|
if name == "aegis128":
|
|
name = "aegis128l" # AEGIS-128 is dead, the user meant AEGIS-128L
|
|
if not name.startswith("aegis"):
|
|
name = "aegis" + name
|
|
if name in CIPHERS.values():
|
|
return importlib.import_module(f".{name}", __package__) # type: ignore[return-value]
|
|
raise ValueError(f"Unknown algorithm {alg!r}. Valid options: {', '.join(CIPHERS)}")
|