summaryrefslogtreecommitdiffstats
path: root/comm/third_party/botan/src/lib/utils/exceptn.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'comm/third_party/botan/src/lib/utils/exceptn.cpp')
-rw-r--r--comm/third_party/botan/src/lib/utils/exceptn.cpp183
1 files changed, 183 insertions, 0 deletions
diff --git a/comm/third_party/botan/src/lib/utils/exceptn.cpp b/comm/third_party/botan/src/lib/utils/exceptn.cpp
new file mode 100644
index 0000000000..e6d067f348
--- /dev/null
+++ b/comm/third_party/botan/src/lib/utils/exceptn.cpp
@@ -0,0 +1,183 @@
+/*
+* (C) 2017 Jack Lloyd
+*
+* Botan is released under the Simplified BSD License (see license.txt)
+*/
+
+#include <botan/exceptn.h>
+
+namespace Botan {
+
+std::string to_string(ErrorType type)
+ {
+ switch(type)
+ {
+ case ErrorType::Unknown:
+ return "Unknown";
+ case ErrorType::SystemError:
+ return "SystemError";
+ case ErrorType::NotImplemented:
+ return "NotImplemented";
+ case ErrorType::OutOfMemory:
+ return "OutOfMemory";
+ case ErrorType::InternalError:
+ return "InternalError";
+ case ErrorType::IoError:
+ return "IoError";
+ case ErrorType::InvalidObjectState :
+ return "InvalidObjectState";
+ case ErrorType::KeyNotSet:
+ return "KeyNotSet";
+ case ErrorType::InvalidArgument:
+ return "InvalidArgument";
+ case ErrorType::InvalidKeyLength:
+ return "InvalidKeyLength";
+ case ErrorType::InvalidNonceLength:
+ return "InvalidNonceLength";
+ case ErrorType::LookupError:
+ return "LookupError";
+ case ErrorType::EncodingFailure:
+ return "EncodingFailure";
+ case ErrorType::DecodingFailure:
+ return "DecodingFailure";
+ case ErrorType::TLSError:
+ return "TLSError";
+ case ErrorType::HttpError:
+ return "HttpError";
+ case ErrorType::InvalidTag:
+ return "InvalidTag";
+ case ErrorType::RoughtimeError:
+ return "RoughtimeError";
+ case ErrorType::OpenSSLError :
+ return "OpenSSLError";
+ case ErrorType::CommonCryptoError:
+ return "CommonCryptoError";
+ case ErrorType::Pkcs11Error:
+ return "Pkcs11Error";
+ case ErrorType::TPMError:
+ return "TPMError";
+ case ErrorType::DatabaseError:
+ return "DatabaseError";
+ case ErrorType::ZlibError :
+ return "ZlibError";
+ case ErrorType::Bzip2Error:
+ return "Bzip2Error" ;
+ case ErrorType::LzmaError:
+ return "LzmaError";
+ }
+
+ // No default case in above switch so compiler warns
+ return "Unrecognized Botan error";
+ }
+
+Exception::Exception(const std::string& msg) : m_msg(msg)
+ {}
+
+Exception::Exception(const std::string& msg, const std::exception& e) :
+ m_msg(msg + " failed with " + std::string(e.what()))
+ {}
+
+Exception::Exception(const char* prefix, const std::string& msg) :
+ m_msg(std::string(prefix) + " " + msg)
+ {}
+
+Invalid_Argument::Invalid_Argument(const std::string& msg) :
+ Exception(msg)
+ {}
+
+Invalid_Argument::Invalid_Argument(const std::string& msg, const std::string& where) :
+ Exception(msg + " in " + where)
+ {}
+
+Invalid_Argument::Invalid_Argument(const std::string& msg, const std::exception& e) :
+ Exception(msg, e) {}
+
+Lookup_Error::Lookup_Error(const std::string& type,
+ const std::string& algo,
+ const std::string& provider) :
+ Exception("Unavailable " + type + " " + algo +
+ (provider.empty() ? std::string("") : (" for provider " + provider)))
+ {}
+
+Internal_Error::Internal_Error(const std::string& err) :
+ Exception("Internal error: " + err)
+ {}
+
+Invalid_Key_Length::Invalid_Key_Length(const std::string& name, size_t length) :
+ Invalid_Argument(name + " cannot accept a key of length " +
+ std::to_string(length))
+ {}
+
+Invalid_IV_Length::Invalid_IV_Length(const std::string& mode, size_t bad_len) :
+ Invalid_Argument("IV length " + std::to_string(bad_len) +
+ " is invalid for " + mode)
+ {}
+
+Key_Not_Set::Key_Not_Set(const std::string& algo) :
+ Invalid_State("Key not set in " + algo)
+ {}
+
+Policy_Violation::Policy_Violation(const std::string& err) :
+ Invalid_State("Policy violation: " + err) {}
+
+PRNG_Unseeded::PRNG_Unseeded(const std::string& algo) :
+ Invalid_State("PRNG not seeded: " + algo)
+ {}
+
+Algorithm_Not_Found::Algorithm_Not_Found(const std::string& name) :
+ Lookup_Error("Could not find any algorithm named \"" + name + "\"")
+ {}
+
+No_Provider_Found::No_Provider_Found(const std::string& name) :
+ Exception("Could not find any provider for algorithm named \"" + name + "\"")
+ {}
+
+Provider_Not_Found::Provider_Not_Found(const std::string& algo, const std::string& provider) :
+ Lookup_Error("Could not find provider '" + provider + "' for " + algo)
+ {}
+
+Invalid_Algorithm_Name::Invalid_Algorithm_Name(const std::string& name):
+ Invalid_Argument("Invalid algorithm name: " + name)
+ {}
+
+Encoding_Error::Encoding_Error(const std::string& name) :
+ Invalid_Argument("Encoding error: " + name)
+ {}
+
+Decoding_Error::Decoding_Error(const std::string& name) :
+ Invalid_Argument(name)
+ {}
+
+Decoding_Error::Decoding_Error(const std::string& msg, const std::exception& e) :
+ Invalid_Argument(msg, e)
+ {}
+
+Decoding_Error::Decoding_Error(const std::string& name, const char* exception_message) :
+ Invalid_Argument(name + " failed with exception " + exception_message) {}
+
+Invalid_Authentication_Tag::Invalid_Authentication_Tag(const std::string& msg) :
+ Exception("Invalid authentication tag: " + msg)
+ {}
+
+Invalid_OID::Invalid_OID(const std::string& oid) :
+ Decoding_Error("Invalid ASN.1 OID: " + oid)
+ {}
+
+Stream_IO_Error::Stream_IO_Error(const std::string& err) :
+ Exception("I/O error: " + err)
+ {}
+
+System_Error::System_Error(const std::string& msg, int err_code) :
+ Exception(msg + " error code " + std::to_string(err_code)),
+ m_error_code(err_code)
+ {}
+
+Self_Test_Failure::Self_Test_Failure(const std::string& err) :
+ Internal_Error("Self test failed: " + err)
+ {}
+
+Not_Implemented::Not_Implemented(const std::string& err) :
+ Exception("Not implemented", err)
+ {}
+
+}