aboutsummaryrefslogtreecommitdiffstats
path: root/src/modes/aead
diff options
context:
space:
mode:
authorlloyd <[email protected]>2013-08-22 20:16:00 +0000
committerlloyd <[email protected]>2013-08-22 20:16:00 +0000
commit6ea24778e8e676a10d195c82b29c0474a9928ba5 (patch)
treea4eaf356c74b8101812bdc82367d1fbea4dc7a48 /src/modes/aead
parent010ef001d56011078f629cd03e59809068cb3be4 (diff)
Expose AEAD_Mode::tag_size
Diffstat (limited to 'src/modes/aead')
-rw-r--r--src/modes/aead/aead.h5
-rw-r--r--src/modes/aead/eax/eax.h4
-rw-r--r--src/modes/aead/gcm/gcm.h4
-rw-r--r--src/modes/aead/ocb/ocb.h4
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;