+from typing import Callable
+
+
def pad_size(data_size: int, blocksize: int) -> int: ...
def pad2(data: bytes, blocksize: int) -> bytes: ...
+def unpad2(data: bytes, blocksize: int) -> bytes: ...
+
+
def pad3(data: bytes, blocksize: int) -> bytes: ...
+
+
+def ecb_encrypt(encrypter: Callable[[bytes], bytes], bs: int, pt: bytes) -> bytes: ...
+
+
+def ecb_decrypt(decrypter: Callable[[bytes], bytes], bs: int, ct: bytes) -> bytes: ...
+
+
+def ctr(encrypter: Callable[[bytes], bytes], bs: int, data: bytes, iv: bytes) -> bytes: ...
+
+
+def ofb(encrypter: Callable[[bytes], bytes], bs: int, data: bytes, iv: bytes) -> bytes: ...
+
+
+def cbc_encrypt(encrypter: Callable[[bytes], bytes], bs: int, pt: bytes, iv: bytes) -> bytes: ...
+
+
+def cbc_decrypt(decrypter: Callable[[bytes], bytes], bs: int, ct: bytes, iv: bytes) -> bytes: ...
+
+
+def cfb_encrypt(encrypter: Callable[[bytes], bytes], bs: int, pt: bytes, iv: bytes) -> bytes: ...
+
+
+def cfb_decrypt(encrypter: Callable[[bytes], bytes], bs: int, ct: bytes, iv: bytes) -> bytes: ...
+
+
+def mac(encrypter: Callable[[bytes], bytes], bs: int, data: bytes) -> bytes: ...