38 explicit AesCryptor(ConstantIvFlag constant_iv_flag);
44 const std::vector<uint8_t>&
iv) = 0;
46 virtual size_t RequiredOutputSize(
size_t plaintext_size) {
47 return plaintext_size;
55 bool Crypt(
const std::vector<uint8_t>& text,
56 std::vector<uint8_t>* crypt_text);
57 bool Crypt(
const std::string& text, std::string* crypt_text);
59 bool Crypt(
const uint8_t* text,
size_t text_size, uint8_t* crypt_text) {
60 size_t crypt_text_size = text_size;
61 return Crypt(text, text_size, crypt_text, &crypt_text_size);
63 bool Crypt(
const uint8_t* text,
66 size_t* crypt_text_size) {
67 if (constant_iv_flag_ == kUseConstantIv)
70 num_crypt_bytes_ += text_size;
71 return CryptInternal(text, text_size, crypt_text, crypt_text_size);
78 bool SetIv(
const std::vector<uint8_t>&
iv);
86 const std::vector<uint8_t>&
iv()
const {
return iv_; }
96 std::vector<uint8_t>*
iv);
105 mbedtls_cipher_context_t cipher_ctx_;
107 bool SetupCipher(
size_t key_size, CipherMode mode);
120 virtual bool CryptInternal(
const uint8_t* text,
123 size_t* crypt_text_size) = 0;
126 virtual void SetIvInternal() = 0;
131 virtual size_t NumPaddingBytes(
size_t size)
const;
135 const ConstantIvFlag constant_iv_flag_;
138 std::vector<uint8_t> iv_;
141 size_t num_crypt_bytes_;
143 DISALLOW_COPY_AND_ASSIGN(AesCryptor);