nwztools: cleanup crypto, switch MD5 to Crypto++

We already use Crypto++ for DES anyway, and using OpenSSL is not great because
of its incompatible licence.

Change-Id: I78771b84c1708795a0c0c30afa5bdfe4885dea4e
This commit is contained in:
Amaury Pouly 2017-01-04 16:55:53 +01:00
parent 92ecbd5fb8
commit dbeb6db1b5
9 changed files with 108 additions and 53 deletions

View file

@ -28,43 +28,41 @@
using namespace CryptoPP;
namespace
{
inline int dec_des_ecb(void *in, int size, void *out, uint8_t *key)
inline void dec_des_ecb(void *in, int size, void *out, uint8_t *key)
{
ECB_Mode< DES >::Decryption dec;
if(size % 8)
return 42;
abort(); /* size must be a multiple of 8 */
dec.SetKey(key, 8);
dec.ProcessData((byte*)out, (byte*)in, size);
return 0;
}
inline int enc_des_ecb(void *in, int size, void *out, uint8_t *key)
inline void enc_des_ecb(void *in, int size, void *out, uint8_t *key)
{
ECB_Mode< DES >::Encryption enc;
if(size % 8)
return 42;
abort(); /* size must be a multiple of 8 */
enc.SetKey(key, 8);
enc.ProcessData((byte*)out, (byte*)in, size);
return 0;
}
}
int mg_decrypt_fw(void *in, int size, void *out, uint8_t *key)
void mg_decrypt_fw(void *in, int size, void *out, uint8_t *key)
{
return dec_des_ecb(in, size, out, key);
dec_des_ecb(in, size, out, key);
}
int mg_encrypt_fw(void *in, int size, void *out, uint8_t *key)
void mg_encrypt_fw(void *in, int size, void *out, uint8_t *key)
{
return enc_des_ecb(in, size, out, key);
enc_des_ecb(in, size, out, key);
}
int mg_decrypt_pass(void *in, int size, void *out, uint8_t *key)
void mg_decrypt_pass(void *in, int size, void *out, uint8_t *key)
{
return dec_des_ecb(in, size, out, key);
dec_des_ecb(in, size, out, key);
}
int mg_encrypt_pass(void *in, int size, void *out, uint8_t *key)
void mg_encrypt_pass(void *in, int size, void *out, uint8_t *key)
{
return enc_des_ecb(in, size, out, key);
enc_des_ecb(in, size, out, key);
}