aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib/modes
diff options
context:
space:
mode:
authorJack Lloyd <lloyd@randombit.net>2015-12-11 09:42:06 -0500
committerJack Lloyd <lloyd@randombit.net>2015-12-11 09:42:06 -0500
commit6b9a3a534071ef84c121c406559f8fc7ad546104 (patch)
treec11480ad1f07e443ba4e992fefcd618b532c2e93 /src/lib/modes
parent79a51627ee11f4d7f55d589751b30463d1f02a76 (diff)
Reroot the exception hierarchy into a toplevel Exception class
As the alternatives are unfortunate for applications trying to catch all library errors, and it seems deriving from std::runtime_error causes problems with MSVC DLLs (GH #340) Effectively reverts 2837e915d82e43
Diffstat (limited to 'src/lib/modes')
-rw-r--r--src/lib/modes/aead/ccm/ccm.cpp6
-rw-r--r--src/lib/modes/aead/chacha20poly1305/chacha20poly1305.cpp2
-rw-r--r--src/lib/modes/aead/gcm/gcm.cpp2
-rw-r--r--src/lib/modes/aead/ocb/ocb.cpp4
-rw-r--r--src/lib/modes/cbc/cbc.cpp4
-rw-r--r--src/lib/modes/cfb/cfb.cpp2
-rw-r--r--src/lib/modes/ecb/ecb.cpp4
-rw-r--r--src/lib/modes/xts/xts.cpp2
8 files changed, 13 insertions, 13 deletions
diff --git a/src/lib/modes/aead/ccm/ccm.cpp b/src/lib/modes/aead/ccm/ccm.cpp
index bd4e0f4be..df33685f3 100644
--- a/src/lib/modes/aead/ccm/ccm.cpp
+++ b/src/lib/modes/aead/ccm/ccm.cpp
@@ -20,13 +20,13 @@ CCM_Mode::CCM_Mode(BlockCipher* cipher, size_t tag_size, size_t L) :
m_cipher(cipher)
{
if(m_cipher->block_size() != BS)
- throw std::invalid_argument(m_cipher->name() + " cannot be used with CCM mode");
+ throw Invalid_Argument(m_cipher->name() + " cannot be used with CCM mode");
if(L < 2 || L > 8)
- throw std::invalid_argument("Invalid CCM L value " + std::to_string(L));
+ throw Invalid_Argument("Invalid CCM L value " + std::to_string(L));
if(tag_size < 4 || tag_size > 16 || tag_size % 2 != 0)
- throw std::invalid_argument("invalid CCM tag length " + std::to_string(tag_size));
+ throw Invalid_Argument("invalid CCM tag length " + std::to_string(tag_size));
}
void CCM_Mode::clear()
diff --git a/src/lib/modes/aead/chacha20poly1305/chacha20poly1305.cpp b/src/lib/modes/aead/chacha20poly1305/chacha20poly1305.cpp
index 0aef6a747..2350e2e6a 100644
--- a/src/lib/modes/aead/chacha20poly1305/chacha20poly1305.cpp
+++ b/src/lib/modes/aead/chacha20poly1305/chacha20poly1305.cpp
@@ -39,7 +39,7 @@ void ChaCha20Poly1305_Mode::key_schedule(const byte key[], size_t length)
void ChaCha20Poly1305_Mode::set_associated_data(const byte ad[], size_t length)
{
if(m_ctext_len)
- throw std::runtime_error("Too late to set AD for ChaCha20Poly1305");
+ throw Exception("Too late to set AD for ChaCha20Poly1305");
m_ad.assign(ad, ad + length);
}
diff --git a/src/lib/modes/aead/gcm/gcm.cpp b/src/lib/modes/aead/gcm/gcm.cpp
index 15820069d..a77c3e4d4 100644
--- a/src/lib/modes/aead/gcm/gcm.cpp
+++ b/src/lib/modes/aead/gcm/gcm.cpp
@@ -163,7 +163,7 @@ GCM_Mode::GCM_Mode(BlockCipher* cipher, size_t tag_size) :
m_cipher_name(cipher->name())
{
if(cipher->block_size() != BS)
- throw std::invalid_argument("GCM requires a 128 bit cipher so cannot be used with " +
+ throw Invalid_Argument("GCM requires a 128 bit cipher so cannot be used with " +
cipher->name());
m_ghash.reset(new GHASH);
diff --git a/src/lib/modes/aead/ocb/ocb.cpp b/src/lib/modes/aead/ocb/ocb.cpp
index ff3317dd9..08157cd47 100644
--- a/src/lib/modes/aead/ocb/ocb.cpp
+++ b/src/lib/modes/aead/ocb/ocb.cpp
@@ -123,10 +123,10 @@ OCB_Mode::OCB_Mode(BlockCipher* cipher, size_t tag_size) :
m_tag_size(tag_size)
{
if(BS() != 16)
- throw std::invalid_argument("OCB is not compatible with " + m_cipher->name());
+ throw Invalid_Argument("OCB is not compatible with " + m_cipher->name());
if(m_tag_size % 4 != 0 || m_tag_size < 8 || m_tag_size > BS())
- throw std::invalid_argument("OCB cannot produce a " + std::to_string(m_tag_size) +
+ throw Invalid_Argument("OCB cannot produce a " + std::to_string(m_tag_size) +
" byte tag");
}
diff --git a/src/lib/modes/cbc/cbc.cpp b/src/lib/modes/cbc/cbc.cpp
index 1e3c6d6e3..fedeaf20d 100644
--- a/src/lib/modes/cbc/cbc.cpp
+++ b/src/lib/modes/cbc/cbc.cpp
@@ -17,7 +17,7 @@ CBC_Mode::CBC_Mode(BlockCipher* cipher, BlockCipherModePaddingMethod* padding) :
m_state(m_cipher->block_size())
{
if(m_padding && !m_padding->valid_blocksize(cipher->block_size()))
- throw std::invalid_argument("Padding " + m_padding->name() +
+ throw Invalid_Argument("Padding " + m_padding->name() +
" cannot be used with " +
cipher->name() + "/CBC");
}
@@ -127,7 +127,7 @@ void CBC_Encryption::finish(secure_vector<byte>& buffer, size_t offset)
padding().add_padding(buffer, bytes_in_final_block, BS);
if((buffer.size()-offset) % BS)
- throw std::runtime_error("Did not pad to full block size in " + name());
+ throw Exception("Did not pad to full block size in " + name());
update(buffer, offset);
}
diff --git a/src/lib/modes/cfb/cfb.cpp b/src/lib/modes/cfb/cfb.cpp
index 7c7ed1865..6c9239e73 100644
--- a/src/lib/modes/cfb/cfb.cpp
+++ b/src/lib/modes/cfb/cfb.cpp
@@ -16,7 +16,7 @@ CFB_Mode::CFB_Mode(BlockCipher* cipher, size_t feedback_bits) :
m_feedback_bytes(feedback_bits ? feedback_bits / 8 : cipher->block_size())
{
if(feedback_bits % 8 || feedback() > cipher->block_size())
- throw std::invalid_argument(name() + ": feedback bits " +
+ throw Invalid_Argument(name() + ": feedback bits " +
std::to_string(feedback_bits) + " not supported");
}
diff --git a/src/lib/modes/ecb/ecb.cpp b/src/lib/modes/ecb/ecb.cpp
index 14e72e20b..407b5c582 100644
--- a/src/lib/modes/ecb/ecb.cpp
+++ b/src/lib/modes/ecb/ecb.cpp
@@ -15,7 +15,7 @@ ECB_Mode::ECB_Mode(BlockCipher* cipher, BlockCipherModePaddingMethod* padding) :
m_padding(padding)
{
if(!m_padding->valid_blocksize(cipher->block_size()))
- throw std::invalid_argument("Padding " + m_padding->name() +
+ throw Invalid_Argument("Padding " + m_padding->name() +
" cannot be used with " +
cipher->name() + "/ECB");
}
@@ -102,7 +102,7 @@ void ECB_Encryption::finish(secure_vector<byte>& buffer, size_t offset)
padding().add_padding(buffer, bytes_in_final_block, BS);
if(buffer.size() % BS)
- throw std::runtime_error("Did not pad to full block size in " + name());
+ throw Exception("Did not pad to full block size in " + name());
update(buffer, offset);
}
diff --git a/src/lib/modes/xts/xts.cpp b/src/lib/modes/xts/xts.cpp
index c42988d10..b369fde29 100644
--- a/src/lib/modes/xts/xts.cpp
+++ b/src/lib/modes/xts/xts.cpp
@@ -51,7 +51,7 @@ inline void poly_double(byte out[], const byte in[], size_t size)
XTS_Mode::XTS_Mode(BlockCipher* cipher) : m_cipher(cipher)
{
if(m_cipher->block_size() != 8 && m_cipher->block_size() != 16)
- throw std::invalid_argument("Bad cipher for XTS: " + cipher->name());
+ throw Invalid_Argument("Bad cipher for XTS: " + cipher->name());
m_tweak_cipher.reset(m_cipher->clone());
m_tweak.resize(update_granularity());