diff options
Diffstat (limited to 'envelope.cpp')
-rw-r--r-- | envelope.cpp | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/envelope.cpp b/envelope.cpp index c881815..33ac8c4 100644 --- a/envelope.cpp +++ b/envelope.cpp @@ -105,7 +105,9 @@ namespace Envelope{ bytes.push_back(res.lowdigits()&0xff); res>>=8; } - assert(res==0); + if(res!=0){ + throw invalid_argument("Envelope RSA private key incorrect"); + } string decrkey(bytes.size(),'\0'); for(int i=0;i<(int)bytes.size();i++)decrkey[bytes.size()-1-i]=bytes[i]; #ifdef DEBUG @@ -115,7 +117,11 @@ namespace Envelope{ #ifdef DEBUG cerr<<"payload="<<Base64::encode(data.substr(0,data.size()-2-encrkeylen))<<endl; #endif - return AES::decrypt(data.substr(0,data.size()-2-encrkeylen),decrkey,AES::AES_256_CBC); + try { + return AES::decrypt(data.substr(0,data.size()-2-encrkeylen),decrkey,AES::AES_256_CBC); + } catch(invalid_argument){ + throw invalid_argument("Envelope RSA private key incorrect"); + } } } |