-callback key_decrypt(Key, {ENCModule, ENC, EncryptedKey}, ALG) -> DecryptedKey when Key :: any(), ENCModule :: module(), ENC :: any(), EncryptedKey :: iodata(), ALG :: any(), DecryptedKey :: iodata().
-callback key_encrypt(Key, DecryptedKey, ALG) -> {EncryptedKey, NewALG} when Key :: any(), DecryptedKey :: iodata(), ALG :: any(), EncryptedKey :: iodata(), NewALG :: any().
-callback next_cek(Key, {ENCModule, ENC}, ALG) -> {DecryptedKey, NewALG} when Key :: any(), ENCModule :: module(), ENC :: any(), ALG :: any(), DecryptedKey :: iodata(), NewALG :: any().