diff options
author | lloyd <[email protected]> | 2013-08-22 20:16:00 +0000 |
---|---|---|
committer | lloyd <[email protected]> | 2013-08-22 20:16:00 +0000 |
commit | 6ea24778e8e676a10d195c82b29c0474a9928ba5 (patch) | |
tree | a4eaf356c74b8101812bdc82367d1fbea4dc7a48 /src | |
parent | 010ef001d56011078f629cd03e59809068cb3be4 (diff) |
Expose AEAD_Mode::tag_size
Diffstat (limited to 'src')
-rw-r--r-- | src/modes/aead/aead.h | 5 | ||||
-rw-r--r-- | src/modes/aead/eax/eax.h | 4 | ||||
-rw-r--r-- | src/modes/aead/gcm/gcm.h | 4 | ||||
-rw-r--r-- | src/modes/aead/ocb/ocb.h | 4 |
4 files changed, 11 insertions, 6 deletions
diff --git a/src/modes/aead/aead.h b/src/modes/aead/aead.h index 25958a36a..d03cb295d 100644 --- a/src/modes/aead/aead.h +++ b/src/modes/aead/aead.h @@ -49,6 +49,11 @@ class BOTAN_DLL AEAD_Mode : public Cipher_Mode * modes, and large enough that random collisions are unlikely). */ size_t default_nonce_size() const override { return 12; } + + /** + * Return the size of the authentication tag used (in bytes) + */ + virtual size_t tag_size() const = 0; }; /** diff --git a/src/modes/aead/eax/eax.h b/src/modes/aead/eax/eax.h index 6815e3ce0..a4673a34f 100644 --- a/src/modes/aead/eax/eax.h +++ b/src/modes/aead/eax/eax.h @@ -35,6 +35,8 @@ class BOTAN_DLL EAX_Mode : public AEAD_Mode // EAX supports arbitrary nonce lengths bool valid_nonce_length(size_t) const override { return true; } + size_t tag_size() const { return m_tag_size; } + void clear(); protected: void key_schedule(const byte key[], size_t length) override; @@ -45,8 +47,6 @@ class BOTAN_DLL EAX_Mode : public AEAD_Mode */ EAX_Mode(BlockCipher* cipher, size_t tag_size); - size_t tag_size() const { return m_tag_size; } - size_t block_size() const { return m_cipher->block_size(); } size_t m_tag_size; diff --git a/src/modes/aead/gcm/gcm.h b/src/modes/aead/gcm/gcm.h index e1479c27f..e0789f960 100644 --- a/src/modes/aead/gcm/gcm.h +++ b/src/modes/aead/gcm/gcm.h @@ -34,14 +34,14 @@ class BOTAN_DLL GCM_Mode : public AEAD_Mode // GCM supports arbitrary nonce lengths bool valid_nonce_length(size_t) const override { return true; } + size_t tag_size() const { return m_tag_size; } + void clear(); protected: void key_schedule(const byte key[], size_t length) override; GCM_Mode(BlockCipher* cipher, size_t tag_size); - size_t tag_size() const { return m_tag_size; } - static const size_t BS = 16; const size_t m_tag_size; diff --git a/src/modes/aead/ocb/ocb.h b/src/modes/aead/ocb/ocb.h index ea7729348..c61983f44 100644 --- a/src/modes/aead/ocb/ocb.h +++ b/src/modes/aead/ocb/ocb.h @@ -42,6 +42,8 @@ class BOTAN_DLL OCB_Mode : public AEAD_Mode bool valid_nonce_length(size_t) const override; + size_t tag_size() const { return m_tag_size; } + void clear(); ~OCB_Mode(); @@ -56,8 +58,6 @@ class BOTAN_DLL OCB_Mode : public AEAD_Mode void key_schedule(const byte key[], size_t length) override; - size_t tag_size() const { return m_tag_size; } - // fixme make these private std::unique_ptr<BlockCipher> m_cipher; std::unique_ptr<L_computer> m_L; |