From: leslie Date: Mon, 21 Dec 2009 13:49:54 +0000 (+0100) Subject: extend IDEA crypto API X-Git-Tag: upstream/620~127 X-Git-Url: http://www.vanbest.org/gitweb/?a=commitdiff_plain;h=4fa50a0c49ff5248de303ee83f09388920dcfa30;p=sasc-ng.git extend IDEA crypto API --- diff --git a/crypto.c b/crypto.c index a19ce8b..b5d9248 100644 --- a/crypto.c +++ b/crypto.c @@ -102,6 +102,15 @@ void cIDEA::Decrypt(unsigned char *data, int len, const unsigned char *key, unsi idea_cbc_encrypt(data,data,len&~7,&ks,iv,IDEA_DECRYPT); } +void cIDEA::Decrypt(const unsigned char *data, int len, unsigned char *decrypt, const unsigned char *key, unsigned char *iv) const +{ + unsigned char v[8]; + if(!iv) { memset(v,0,sizeof(v)); iv=v; } + IDEA_KEY_SCHEDULE ks; + idea_set_encrypt_key(key,&ks); + idea_cbc_encrypt(data,decrypt,len&~7,&ks,iv,IDEA_DECRYPT); +} + int cIDEA::Encrypt(const unsigned char *data, int len, unsigned char *crypt, const unsigned char *key, unsigned char *iv) const { unsigned char v[8]; diff --git a/crypto.h b/crypto.h index 8e056af..1f618a6 100644 --- a/crypto.h +++ b/crypto.h @@ -113,6 +113,7 @@ class cIDEA { public: // single shot API void Decrypt(unsigned char *data, int len, const unsigned char *key, unsigned char *iv) const; + void Decrypt(const unsigned char *data, int len, unsigned char *decrypt, const unsigned char *key, unsigned char *iv) const; int Encrypt(const unsigned char *data, int len, unsigned char *crypt, const unsigned char *key, unsigned char *iv) const; // multi shot API void SetEncKey(const unsigned char *key, IdeaKS *ks) const;