# # A block cipher is instantiated as a combination of: # 1. A base cipher (such as AES) # 2. A mode of operation (such as CBC) # # Both items are implemented as C modules. # # The API of #1 is (replace "AES" with the name of the actual cipher): # - AES_start_operaion(key) --> base_cipher_state # - AES_encrypt(base_cipher_state, in, out, length) # - AES_decrypt(base_cipher_state, in, out, length) # - AES_stop_operation(base_cipher_state) # # Where base_cipher_state is AES_State, a struct with BlockBase (set of # pointers to encrypt/decrypt/stop) followed by cipher-specific data. # # The API of #2 is (replace "CBC" with the name of the actual mode): # - CBC_start_operation(base_cipher_state) --> mode_state # - CBC_encrypt(mode_state, in, out, length) # - CBC_decrypt(mode_state, in, out, length) # - CBC_stop_operation(mode_state) # # where mode_state is a a pointer to base_cipher_state plus mode-specific data. import os from Crypto.Cipher._mode_ecb import _create_ecb_cipher from Crypto.Cipher._mode_cbc import _create_cbc_cipher from Crypto.Cipher._mode_cfb import _create_cfb_cipher from Crypto.Cipher._mode_ofb import _create_ofb_cipher from Crypto.Cipher._mode_ctr import _create_ctr_cipher from Crypto.Cipher._mode_openpgp import _create_openpgp_cipher from Crypto.Cipher._mode_ccm import _create_ccm_cipher from Crypto.Cipher._mode_eax import _create_eax_cipher from Crypto.Cipher._mode_siv import _create_siv_cipher from Crypto.Cipher._mode_gcm import _create_gcm_cipher from Crypto.Cipher._mode_ocb import _create_ocb_cipher _modes = { 1:_create_ecb_cipher, 2:_create_cbc_cipher, 3:_create_cfb_cipher, 5:_create_ofb_cipher, 6:_create_ctr_cipher, 7:_create_openpgp_cipher, 9:_create_eax_cipher } _extra_modes = { 8:_create_ccm_cipher, 10:_create_siv_cipher, 11:_create_gcm_cipher, 12:_create_ocb_cipher } def _create_cipher(factory, key, mode, *args, **kwargs): kwargs["key"] = key modes = dict(_modes) if kwargs.pop("add_aes_modes", False): modes.update(_extra_modes) if not mode in modes: raise ValueError("Mode not supported") if args: if mode in (8, 9, 10, 11, 12): if len(args) > 1: raise TypeError("Too many arguments for this mode") kwargs["nonce"] = args[0] elif mode in (2, 3, 5, 7): if len(args) > 1: raise TypeError("Too many arguments for this mode") kwargs["IV"] = args[0] elif mode == 6: if len(args) > 0: raise TypeError("Too many arguments for this mode") elif mode == 1: raise TypeError("IV is not meaningful for the ECB mode") return modes[mode](factory, **kwargs)
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
__pycache__ | Folder | 0755 |
|
|
AES.py | File | 8.71 KB | 0644 |
|
AES.pyi | File | 3.63 KB | 0644 |
|
ARC2.py | File | 6.85 KB | 0644 |
|
ARC2.pyi | File | 980 B | 0644 |
|
ARC4.py | File | 5 KB | 0644 |
|
ARC4.pyi | File | 413 B | 0644 |
|
Blowfish.py | File | 5.82 KB | 0644 |
|
Blowfish.pyi | File | 1016 B | 0644 |
|
CAST.py | File | 5.93 KB | 0644 |
|
CAST.pyi | File | 981 B | 0644 |
|
ChaCha20.py | File | 10.48 KB | 0644 |
|
ChaCha20.pyi | File | 788 B | 0644 |
|
ChaCha20_Poly1305.py | File | 11.29 KB | 0644 |
|
ChaCha20_Poly1305.pyi | File | 1.08 KB | 0644 |
|
DES.py | File | 5.81 KB | 0644 |
|
DES.pyi | File | 961 B | 0644 |
|
DES3.py | File | 6.76 KB | 0644 |
|
DES3.pyi | File | 1.01 KB | 0644 |
|
PKCS1_OAEP.py | File | 8.62 KB | 0644 |
|
PKCS1_OAEP.pyi | File | 1.15 KB | 0644 |
|
PKCS1_v1_5.py | File | 7.95 KB | 0644 |
|
PKCS1_v1_5.pyi | File | 686 B | 0644 |
|
Salsa20.py | File | 6.2 KB | 0644 |
|
Salsa20.pyi | File | 751 B | 0644 |
|
_ARC4.abi3.so | File | 20.52 KB | 0755 |
|
_EKSBlowfish.py | File | 5.08 KB | 0644 |
|
_EKSBlowfish.pyi | File | 266 B | 0644 |
|
_Salsa20.abi3.so | File | 26.38 KB | 0755 |
|
__init__.py | File | 2.78 KB | 0644 |
|
__init__.pyi | File | 0 B | 0644 |
|
_chacha20.abi3.so | File | 29.91 KB | 0755 |
|
_mode_cbc.py | File | 10.63 KB | 0644 |
|
_mode_cbc.pyi | File | 687 B | 0644 |
|
_mode_ccm.py | File | 23.8 KB | 0644 |
|
_mode_ccm.pyi | File | 1.56 KB | 0644 |
|
_mode_cfb.py | File | 10.47 KB | 0644 |
|
_mode_cfb.pyi | File | 727 B | 0644 |
|
_mode_ctr.py | File | 15.44 KB | 0644 |
|
_mode_ctr.pyi | File | 800 B | 0644 |
|
_mode_eax.py | File | 14.11 KB | 0644 |
|
_mode_eax.pyi | File | 1.51 KB | 0644 |
|
_mode_ecb.py | File | 8.11 KB | 0644 |
|
_mode_ecb.pyi | File | 592 B | 0644 |
|
_mode_gcm.py | File | 20.8 KB | 0644 |
|
_mode_gcm.pyi | File | 1.5 KB | 0644 |
|
_mode_ocb.py | File | 19.47 KB | 0644 |
|
_mode_ocb.pyi | File | 1.2 KB | 0644 |
|
_mode_ofb.py | File | 9.97 KB | 0644 |
|
_mode_ofb.pyi | File | 691 B | 0644 |
|
_mode_openpgp.py | File | 6.89 KB | 0644 |
|
_mode_openpgp.pyi | File | 556 B | 0644 |
|
_mode_siv.py | File | 13.65 KB | 0644 |
|
_mode_siv.pyi | File | 1.23 KB | 0644 |
|
_pkcs1_decode.abi3.so | File | 34.85 KB | 0755 |
|
_raw_aes.abi3.so | File | 104.3 KB | 0755 |
|
_raw_aesni.abi3.so | File | 103.89 KB | 0755 |
|
_raw_arc2.abi3.so | File | 45.38 KB | 0755 |
|
_raw_blowfish.abi3.so | File | 76.8 KB | 0755 |
|
_raw_cast.abi3.so | File | 56.06 KB | 0755 |
|
_raw_cbc.abi3.so | File | 22.46 KB | 0755 |
|
_raw_cfb.abi3.so | File | 26.23 KB | 0755 |
|
_raw_ctr.abi3.so | File | 30.6 KB | 0755 |
|
_raw_des.abi3.so | File | 69.88 KB | 0755 |
|
_raw_des3.abi3.so | File | 70.82 KB | 0755 |
|
_raw_ecb.abi3.so | File | 18.57 KB | 0755 |
|
_raw_eksblowfish.abi3.so | File | 176.95 KB | 0755 |
|
_raw_ocb.abi3.so | File | 44.78 KB | 0755 |
|
_raw_ofb.abi3.so | File | 21.61 KB | 0755 |
|