adding aes exception
This commit is contained in:
parent
a254e5ff28
commit
3ccbe26dd5
3 changed files with 23 additions and 19 deletions
|
|
@ -32,7 +32,8 @@ namespace fc
|
||||||
invalid_operation_exception_code = 14,
|
invalid_operation_exception_code = 14,
|
||||||
unknown_host_exception_code = 15,
|
unknown_host_exception_code = 15,
|
||||||
null_optional_code = 16,
|
null_optional_code = 16,
|
||||||
udt_error_code = 17
|
udt_error_code = 17,
|
||||||
|
aes_error_code = 18
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -283,6 +284,7 @@ namespace fc
|
||||||
FC_DECLARE_EXCEPTION( eof_exception, eof_exception_code, "End Of File" );
|
FC_DECLARE_EXCEPTION( eof_exception, eof_exception_code, "End Of File" );
|
||||||
FC_DECLARE_EXCEPTION( null_optional, null_optional_code, "null optional" );
|
FC_DECLARE_EXCEPTION( null_optional, null_optional_code, "null optional" );
|
||||||
FC_DECLARE_EXCEPTION( udt_exception, udt_error_code, "UDT error" );
|
FC_DECLARE_EXCEPTION( udt_exception, udt_error_code, "UDT error" );
|
||||||
|
FC_DECLARE_EXCEPTION( aes_exception, aes_error_code, "AES error" );
|
||||||
|
|
||||||
std::string except_str();
|
std::string except_str();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -42,7 +42,7 @@ void aes_encoder::init( const fc::sha256& key, const fc::uint128& init_value )
|
||||||
/* Create and initialise the context */
|
/* Create and initialise the context */
|
||||||
if(!my->ctx)
|
if(!my->ctx)
|
||||||
{
|
{
|
||||||
FC_THROW_EXCEPTION( exception, "error allocating evp cipher context",
|
FC_THROW_EXCEPTION( aes_exception, "error allocating evp cipher context",
|
||||||
("s", ERR_error_string( ERR_get_error(), nullptr) ) );
|
("s", ERR_error_string( ERR_get_error(), nullptr) ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -53,7 +53,7 @@ void aes_encoder::init( const fc::sha256& key, const fc::uint128& init_value )
|
||||||
* is 128 bits */
|
* is 128 bits */
|
||||||
if(1 != EVP_EncryptInit_ex(my->ctx, EVP_aes_256_cbc(), NULL, (unsigned char*)&key, (unsigned char*)&init_value))
|
if(1 != EVP_EncryptInit_ex(my->ctx, EVP_aes_256_cbc(), NULL, (unsigned char*)&key, (unsigned char*)&init_value))
|
||||||
{
|
{
|
||||||
FC_THROW_EXCEPTION( exception, "error during aes 256 cbc encryption init",
|
FC_THROW_EXCEPTION( aes_exception, "error during aes 256 cbc encryption init",
|
||||||
("s", ERR_error_string( ERR_get_error(), nullptr) ) );
|
("s", ERR_error_string( ERR_get_error(), nullptr) ) );
|
||||||
}
|
}
|
||||||
EVP_CIPHER_CTX_set_padding( my->ctx, 0 );
|
EVP_CIPHER_CTX_set_padding( my->ctx, 0 );
|
||||||
|
|
@ -67,7 +67,7 @@ uint32_t aes_encoder::encode( const char* plaintxt, uint32_t plaintext_len, char
|
||||||
* */
|
* */
|
||||||
if(1 != EVP_EncryptUpdate(my->ctx, (unsigned char*)ciphertxt, &ciphertext_len, (const unsigned char*)plaintxt, plaintext_len))
|
if(1 != EVP_EncryptUpdate(my->ctx, (unsigned char*)ciphertxt, &ciphertext_len, (const unsigned char*)plaintxt, plaintext_len))
|
||||||
{
|
{
|
||||||
FC_THROW_EXCEPTION( exception, "error during aes 256 cbc encryption update",
|
FC_THROW_EXCEPTION( aes_exception, "error during aes 256 cbc encryption update",
|
||||||
("s", ERR_error_string( ERR_get_error(), nullptr) ) );
|
("s", ERR_error_string( ERR_get_error(), nullptr) ) );
|
||||||
}
|
}
|
||||||
FC_ASSERT( ciphertext_len == plaintext_len, "", ("ciphertext_len",ciphertext_len)("plaintext_len",plaintext_len) );
|
FC_ASSERT( ciphertext_len == plaintext_len, "", ("ciphertext_len",ciphertext_len)("plaintext_len",plaintext_len) );
|
||||||
|
|
@ -106,7 +106,7 @@ void aes_decoder::init( const fc::sha256& key, const fc::uint128& init_value )
|
||||||
/* Create and initialise the context */
|
/* Create and initialise the context */
|
||||||
if(!my->ctx)
|
if(!my->ctx)
|
||||||
{
|
{
|
||||||
FC_THROW_EXCEPTION( exception, "error allocating evp cipher context",
|
FC_THROW_EXCEPTION( aes_exception, "error allocating evp cipher context",
|
||||||
("s", ERR_error_string( ERR_get_error(), nullptr) ) );
|
("s", ERR_error_string( ERR_get_error(), nullptr) ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -117,7 +117,7 @@ void aes_decoder::init( const fc::sha256& key, const fc::uint128& init_value )
|
||||||
* is 128 bits */
|
* is 128 bits */
|
||||||
if(1 != EVP_DecryptInit_ex(my->ctx, EVP_aes_256_cbc(), NULL, (unsigned char*)&key, (unsigned char*)&init_value))
|
if(1 != EVP_DecryptInit_ex(my->ctx, EVP_aes_256_cbc(), NULL, (unsigned char*)&key, (unsigned char*)&init_value))
|
||||||
{
|
{
|
||||||
FC_THROW_EXCEPTION( exception, "error during aes 256 cbc encryption init",
|
FC_THROW_EXCEPTION( aes_exception, "error during aes 256 cbc encryption init",
|
||||||
("s", ERR_error_string( ERR_get_error(), nullptr) ) );
|
("s", ERR_error_string( ERR_get_error(), nullptr) ) );
|
||||||
}
|
}
|
||||||
EVP_CIPHER_CTX_set_padding( my->ctx, 0 );
|
EVP_CIPHER_CTX_set_padding( my->ctx, 0 );
|
||||||
|
|
@ -134,7 +134,7 @@ uint32_t aes_decoder::decode( const char* ciphertxt, uint32_t ciphertxt_len, cha
|
||||||
* */
|
* */
|
||||||
if (1 != EVP_DecryptUpdate(my->ctx, (unsigned char*)plaintext, &plaintext_len, (const unsigned char*)ciphertxt, ciphertxt_len))
|
if (1 != EVP_DecryptUpdate(my->ctx, (unsigned char*)plaintext, &plaintext_len, (const unsigned char*)ciphertxt, ciphertxt_len))
|
||||||
{
|
{
|
||||||
FC_THROW_EXCEPTION( exception, "error during aes 256 cbc decryption update",
|
FC_THROW_EXCEPTION( aes_exception, "error during aes 256 cbc decryption update",
|
||||||
("s", ERR_error_string( ERR_get_error(), nullptr) ) );
|
("s", ERR_error_string( ERR_get_error(), nullptr) ) );
|
||||||
}
|
}
|
||||||
FC_ASSERT( ciphertxt_len == plaintext_len, "", ("ciphertxt_len",ciphertxt_len)("plaintext_len",plaintext_len) );
|
FC_ASSERT( ciphertxt_len == plaintext_len, "", ("ciphertxt_len",ciphertxt_len)("plaintext_len",plaintext_len) );
|
||||||
|
|
@ -180,7 +180,7 @@ unsigned aes_encrypt(unsigned char *plaintext, int plaintext_len, unsigned char
|
||||||
/* Create and initialise the context */
|
/* Create and initialise the context */
|
||||||
if(!ctx)
|
if(!ctx)
|
||||||
{
|
{
|
||||||
FC_THROW_EXCEPTION( exception, "error allocating evp cipher context",
|
FC_THROW_EXCEPTION( aes_exception, "error allocating evp cipher context",
|
||||||
("s", ERR_error_string( ERR_get_error(), nullptr) ) );
|
("s", ERR_error_string( ERR_get_error(), nullptr) ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -191,7 +191,7 @@ unsigned aes_encrypt(unsigned char *plaintext, int plaintext_len, unsigned char
|
||||||
* is 128 bits */
|
* is 128 bits */
|
||||||
if(1 != EVP_EncryptInit_ex(ctx, EVP_aes_256_cbc(), NULL, key, iv))
|
if(1 != EVP_EncryptInit_ex(ctx, EVP_aes_256_cbc(), NULL, key, iv))
|
||||||
{
|
{
|
||||||
FC_THROW_EXCEPTION( exception, "error during aes 256 cbc encryption init",
|
FC_THROW_EXCEPTION( aes_exception, "error during aes 256 cbc encryption init",
|
||||||
("s", ERR_error_string( ERR_get_error(), nullptr) ) );
|
("s", ERR_error_string( ERR_get_error(), nullptr) ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -200,7 +200,7 @@ unsigned aes_encrypt(unsigned char *plaintext, int plaintext_len, unsigned char
|
||||||
* */
|
* */
|
||||||
if(1 != EVP_EncryptUpdate(ctx, ciphertext, &len, plaintext, plaintext_len))
|
if(1 != EVP_EncryptUpdate(ctx, ciphertext, &len, plaintext, plaintext_len))
|
||||||
{
|
{
|
||||||
FC_THROW_EXCEPTION( exception, "error during aes 256 cbc encryption update",
|
FC_THROW_EXCEPTION( aes_exception, "error during aes 256 cbc encryption update",
|
||||||
("s", ERR_error_string( ERR_get_error(), nullptr) ) );
|
("s", ERR_error_string( ERR_get_error(), nullptr) ) );
|
||||||
}
|
}
|
||||||
ciphertext_len = len;
|
ciphertext_len = len;
|
||||||
|
|
@ -210,7 +210,7 @@ unsigned aes_encrypt(unsigned char *plaintext, int plaintext_len, unsigned char
|
||||||
* */
|
* */
|
||||||
if(1 != EVP_EncryptFinal_ex(ctx, ciphertext + len, &len))
|
if(1 != EVP_EncryptFinal_ex(ctx, ciphertext + len, &len))
|
||||||
{
|
{
|
||||||
FC_THROW_EXCEPTION( exception, "error during aes 256 cbc encryption final",
|
FC_THROW_EXCEPTION( aes_exception, "error during aes 256 cbc encryption final",
|
||||||
("s", ERR_error_string( ERR_get_error(), nullptr) ) );
|
("s", ERR_error_string( ERR_get_error(), nullptr) ) );
|
||||||
}
|
}
|
||||||
ciphertext_len += len;
|
ciphertext_len += len;
|
||||||
|
|
@ -228,7 +228,7 @@ unsigned aes_decrypt(unsigned char *ciphertext, int ciphertext_len, unsigned cha
|
||||||
/* Create and initialise the context */
|
/* Create and initialise the context */
|
||||||
if(!ctx)
|
if(!ctx)
|
||||||
{
|
{
|
||||||
FC_THROW_EXCEPTION( exception, "error allocating evp cipher context",
|
FC_THROW_EXCEPTION( aes_exception, "error allocating evp cipher context",
|
||||||
("s", ERR_error_string( ERR_get_error(), nullptr) ) );
|
("s", ERR_error_string( ERR_get_error(), nullptr) ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -239,7 +239,7 @@ unsigned aes_decrypt(unsigned char *ciphertext, int ciphertext_len, unsigned cha
|
||||||
* * is 128 bits */
|
* * is 128 bits */
|
||||||
if(1 != EVP_DecryptInit_ex(ctx, EVP_aes_256_cbc(), NULL, key, iv))
|
if(1 != EVP_DecryptInit_ex(ctx, EVP_aes_256_cbc(), NULL, key, iv))
|
||||||
{
|
{
|
||||||
FC_THROW_EXCEPTION( exception, "error during aes 256 cbc decrypt init",
|
FC_THROW_EXCEPTION( aes_exception, "error during aes 256 cbc decrypt init",
|
||||||
("s", ERR_error_string( ERR_get_error(), nullptr) ) );
|
("s", ERR_error_string( ERR_get_error(), nullptr) ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -248,7 +248,7 @@ unsigned aes_decrypt(unsigned char *ciphertext, int ciphertext_len, unsigned cha
|
||||||
* */
|
* */
|
||||||
if(1 != EVP_DecryptUpdate(ctx, plaintext, &len, ciphertext, ciphertext_len))
|
if(1 != EVP_DecryptUpdate(ctx, plaintext, &len, ciphertext, ciphertext_len))
|
||||||
{
|
{
|
||||||
FC_THROW_EXCEPTION( exception, "error during aes 256 cbc decrypt update",
|
FC_THROW_EXCEPTION( aes_exception, "error during aes 256 cbc decrypt update",
|
||||||
("s", ERR_error_string( ERR_get_error(), nullptr) ) );
|
("s", ERR_error_string( ERR_get_error(), nullptr) ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -259,7 +259,7 @@ unsigned aes_decrypt(unsigned char *ciphertext, int ciphertext_len, unsigned cha
|
||||||
* */
|
* */
|
||||||
if(1 != EVP_DecryptFinal_ex(ctx, plaintext + len, &len))
|
if(1 != EVP_DecryptFinal_ex(ctx, plaintext + len, &len))
|
||||||
{
|
{
|
||||||
FC_THROW_EXCEPTION( exception, "error during aes 256 cbc decrypt final",
|
FC_THROW_EXCEPTION( aes_exception, "error during aes 256 cbc decrypt final",
|
||||||
("s", ERR_error_string( ERR_get_error(), nullptr) ) );
|
("s", ERR_error_string( ERR_get_error(), nullptr) ) );
|
||||||
}
|
}
|
||||||
plaintext_len += len;
|
plaintext_len += len;
|
||||||
|
|
@ -277,7 +277,7 @@ unsigned aes_cfb_decrypt(unsigned char *ciphertext, int ciphertext_len, unsigned
|
||||||
/* Create and initialise the context */
|
/* Create and initialise the context */
|
||||||
if(!ctx)
|
if(!ctx)
|
||||||
{
|
{
|
||||||
FC_THROW_EXCEPTION( exception, "error allocating evp cipher context",
|
FC_THROW_EXCEPTION( aes_exception, "error allocating evp cipher context",
|
||||||
("s", ERR_error_string( ERR_get_error(), nullptr) ) );
|
("s", ERR_error_string( ERR_get_error(), nullptr) ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -288,7 +288,7 @@ unsigned aes_cfb_decrypt(unsigned char *ciphertext, int ciphertext_len, unsigned
|
||||||
* * is 128 bits */
|
* * is 128 bits */
|
||||||
if(1 != EVP_DecryptInit_ex(ctx, EVP_aes_256_cfb128(), NULL, key, iv))
|
if(1 != EVP_DecryptInit_ex(ctx, EVP_aes_256_cfb128(), NULL, key, iv))
|
||||||
{
|
{
|
||||||
FC_THROW_EXCEPTION( exception, "error during aes 256 cbc decrypt init",
|
FC_THROW_EXCEPTION( aes_exception, "error during aes 256 cbc decrypt init",
|
||||||
("s", ERR_error_string( ERR_get_error(), nullptr) ) );
|
("s", ERR_error_string( ERR_get_error(), nullptr) ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -297,7 +297,7 @@ unsigned aes_cfb_decrypt(unsigned char *ciphertext, int ciphertext_len, unsigned
|
||||||
* */
|
* */
|
||||||
if(1 != EVP_DecryptUpdate(ctx, plaintext, &len, ciphertext, ciphertext_len))
|
if(1 != EVP_DecryptUpdate(ctx, plaintext, &len, ciphertext, ciphertext_len))
|
||||||
{
|
{
|
||||||
FC_THROW_EXCEPTION( exception, "error during aes 256 cbc decrypt update",
|
FC_THROW_EXCEPTION( aes_exception, "error during aes 256 cbc decrypt update",
|
||||||
("s", ERR_error_string( ERR_get_error(), nullptr) ) );
|
("s", ERR_error_string( ERR_get_error(), nullptr) ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -308,7 +308,7 @@ unsigned aes_cfb_decrypt(unsigned char *ciphertext, int ciphertext_len, unsigned
|
||||||
* */
|
* */
|
||||||
if(1 != EVP_DecryptFinal_ex(ctx, plaintext + len, &len))
|
if(1 != EVP_DecryptFinal_ex(ctx, plaintext + len, &len))
|
||||||
{
|
{
|
||||||
FC_THROW_EXCEPTION( exception, "error during aes 256 cbc decrypt final",
|
FC_THROW_EXCEPTION( aes_exception, "error during aes 256 cbc decrypt final",
|
||||||
("s", ERR_error_string( ERR_get_error(), nullptr) ) );
|
("s", ERR_error_string( ERR_get_error(), nullptr) ) );
|
||||||
}
|
}
|
||||||
plaintext_len += len;
|
plaintext_len += len;
|
||||||
|
|
|
||||||
|
|
@ -19,6 +19,8 @@ namespace fc
|
||||||
(eof_exception)
|
(eof_exception)
|
||||||
(unknown_host_exception)
|
(unknown_host_exception)
|
||||||
(null_optional)
|
(null_optional)
|
||||||
|
(udt_exception)
|
||||||
|
(aes_exception)
|
||||||
)
|
)
|
||||||
|
|
||||||
namespace detail
|
namespace detail
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue