@startuml aes_classes abstract class Cipher { encrypt(plainText: Uint8List): CipherText decrypt(cipherText: CipherText): Uint8List encryptFile(plainTextFile: Path, cipherTextFile: Path) decryptFile(cipherTextFile: Path, plainTextFile: Path) } class AES extends Cipher { key: SecretKey mode: AESMode padding: Padding chunkSize: int encrypt(plainText: Uint8List): CipherText decrypt(cipherText: CipherText): Uint8List encryptFile(plainTextFile: Path, cipherTextFile: Path) decryptFile(cipherTextFile: Path, plainTextFile: Path) encryptWithIV(plainText: Uint8List, iv: Uint8List): AESCipherChunk decryptWithIV(cipherChunk: AESCipherChunk, iv: Uint8List): Uint8List } @enduml