diff options
author | Jose Pereira <[email protected]> | 2018-09-06 23:18:45 -0700 |
---|---|---|
committer | Jose Pereira <[email protected]> | 2018-09-09 14:04:13 -0700 |
commit | 77e5fed44b3e24445b06ed80eaa31978081469b5 (patch) | |
tree | 9edf0c3e13980937395f1d96587fc28496f6dd78 /src/lib/modes | |
parent | d3b55672f63621c82d5a9d5b7be2e6af319006d6 (diff) |
Add CommonCrypto cipher modes support
Diffstat (limited to 'src/lib/modes')
-rw-r--r-- | src/lib/modes/cipher_mode.cpp | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/src/lib/modes/cipher_mode.cpp b/src/lib/modes/cipher_mode.cpp index 00d7a4db0..710f16ba2 100644 --- a/src/lib/modes/cipher_mode.cpp +++ b/src/lib/modes/cipher_mode.cpp @@ -35,6 +35,10 @@ #include <botan/internal/openssl.h> #endif +#if defined(BOTAN_HAS_COMMONCRYPTO) + #include <botan/internal/commoncrypto.h> +#endif + namespace Botan { std::unique_ptr<Cipher_Mode> Cipher_Mode::create_or_throw(const std::string& algo, @@ -51,6 +55,19 @@ std::unique_ptr<Cipher_Mode> Cipher_Mode::create(const std::string& algo, Cipher_Dir direction, const std::string& provider) { +#if defined(BOTAN_HAS_COMMONCRYPTO) + if(provider.empty() || provider == "commoncrypto") + { + std::unique_ptr<Cipher_Mode> commoncrypto_cipher(make_commoncrypto_cipher_mode(algo, direction)); + + if(commoncrypto_cipher) + return commoncrypto_cipher; + + if(!provider.empty()) + return std::unique_ptr<Cipher_Mode>(); + } +#endif + #if defined(BOTAN_HAS_OPENSSL) if(provider.empty() || provider == "openssl") { @@ -172,7 +189,7 @@ std::unique_ptr<Cipher_Mode> Cipher_Mode::create(const std::string& algo, //static std::vector<std::string> Cipher_Mode::providers(const std::string& algo_spec) { - const std::vector<std::string>& possible = { "base", "openssl" }; + const std::vector<std::string>& possible = { "base", "openssl", "commoncrypto" }; std::vector<std::string> providers; for(auto&& prov : possible) { |