diff options
author | Jack Lloyd <[email protected]> | 2016-09-01 13:40:26 -0400 |
---|---|---|
committer | Jack Lloyd <[email protected]> | 2016-09-01 14:16:38 -0400 |
commit | 507d926da825fbc1d9d74b4517dbab47702c66b9 (patch) | |
tree | 22ac0e4a9c85fb3583d478a41ba1c46aeced5ec3 /src/lib/modes/ecb/ecb.h | |
parent | e4656be6a8e601b64c759906bacf543388b3cf22 (diff) |
Cipher_Mode API improvements
The Cipher_Mode::update API is more general than needed to just
support ciphers (this is due to it previously being an API of
Transform which before 8b85b780515 was Cipher_Mode's base class)
Define a less general interface `process` which either processes the
blocks in-place, producing exactly as much output as there was input,
or (SIV/CCM case) saves the entire message for processing in `finish`.
These two uses cover all current or anticipated cipher modes.
Leaves `update` for compatability with existing callers; all that is
needed is an inline function forwarding to `process`.
Removes the return type from `start` - in all cipher implementations,
this always returned an empty vector.
Adds BOTAN_ARG_CHECK macro; right now BOTAN_ASSERT is being used
for argument checking in some places, which is not right at all.
Diffstat (limited to 'src/lib/modes/ecb/ecb.h')
-rw-r--r-- | src/lib/modes/ecb/ecb.h | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/src/lib/modes/ecb/ecb.h b/src/lib/modes/ecb/ecb.h index aebd4c1a5..9ebbf76a4 100644 --- a/src/lib/modes/ecb/ecb.h +++ b/src/lib/modes/ecb/ecb.h @@ -39,7 +39,7 @@ class BOTAN_DLL ECB_Mode : public Cipher_Mode const BlockCipherModePaddingMethod& padding() const { return *m_padding; } private: - secure_vector<byte> start_raw(const byte nonce[], size_t nonce_len) override; + void start_msg(const byte nonce[], size_t nonce_len) override; void key_schedule(const byte key[], size_t length) override; std::unique_ptr<BlockCipher> m_cipher; @@ -55,7 +55,7 @@ class BOTAN_DLL ECB_Encryption final : public ECB_Mode ECB_Encryption(BlockCipher* cipher, BlockCipherModePaddingMethod* padding) : ECB_Mode(cipher, padding) {} - void update(secure_vector<byte>& blocks, size_t offset = 0) override; + size_t process(uint8_t buf[], size_t size) override; void finish(secure_vector<byte>& final_block, size_t offset = 0) override; @@ -73,7 +73,7 @@ class BOTAN_DLL ECB_Decryption final : public ECB_Mode ECB_Decryption(BlockCipher* cipher, BlockCipherModePaddingMethod* padding) : ECB_Mode(cipher, padding) {} - void update(secure_vector<byte>& blocks, size_t offset = 0) override; + size_t process(uint8_t buf[], size_t size) override; void finish(secure_vector<byte>& final_block, size_t offset = 0) override; |