From 04bf8dc51861bab37d6260de8b318dc71ea4bba7 Mon Sep 17 00:00:00 2001 From: Jack Lloyd Date: Thu, 15 Sep 2016 09:16:46 -0400 Subject: Add T::provider() to allow user to inquire about implementation used For block ciphers, stream ciphers, hashes, MACs, and cipher modes. Cipher_Mode already had it, with a slightly different usage. --- src/lib/modes/aead/gcm/gcm.cpp | 10 ++++++++++ src/lib/modes/aead/gcm/gcm.h | 2 ++ 2 files changed, 12 insertions(+) (limited to 'src/lib/modes/aead/gcm') diff --git a/src/lib/modes/aead/gcm/gcm.cpp b/src/lib/modes/aead/gcm/gcm.cpp index e23551cb4..590c0d0ce 100644 --- a/src/lib/modes/aead/gcm/gcm.cpp +++ b/src/lib/modes/aead/gcm/gcm.cpp @@ -185,6 +185,16 @@ std::string GCM_Mode::name() const return (m_cipher_name + "/GCM"); } +const char* GCM_Mode::provider() const + { +#if defined(BOTAN_HAS_GCM_CLMUL) + if(CPUID::has_clmul()) + return "clmul"; +#endif + + return "base"; + } + size_t GCM_Mode::update_granularity() const { return m_BS; diff --git a/src/lib/modes/aead/gcm/gcm.h b/src/lib/modes/aead/gcm/gcm.h index ba0d6cad8..f0176f36a 100644 --- a/src/lib/modes/aead/gcm/gcm.h +++ b/src/lib/modes/aead/gcm/gcm.h @@ -36,6 +36,8 @@ class BOTAN_DLL GCM_Mode : public AEAD_Mode size_t tag_size() const override { return m_tag_size; } void clear() override; + + const char* provider() const override; protected: GCM_Mode(BlockCipher* cipher, size_t tag_size); -- cgit v1.2.3