From 4ce78f9356cf1f6eda733ca93610db308825dd49 Mon Sep 17 00:00:00 2001 From: Martin Willi Date: Wed, 7 May 2008 11:54:30 +0000 Subject: [PATCH] fixed 3DES encryption --- src/libstrongswan/asn1/pem.c | 7 ++++++- src/libstrongswan/plugins/des/des_crypter.c | 4 ++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/libstrongswan/asn1/pem.c b/src/libstrongswan/asn1/pem.c index 63b30728c..c79e98b94 100755 --- a/src/libstrongswan/asn1/pem.c +++ b/src/libstrongswan/asn1/pem.c @@ -303,7 +303,12 @@ err_t pem_to_bin(chunk_t *blob, chunk_t *passphrase, bool *pgp) if (state != PEM_POST) return "file coded in unknown format, discarded"; - return (encrypted)? pem_decrypt(blob, alg, key_size, &iv, passphrase) : NULL; + if (!encrypted) + { + return NULL; + } + return pem_decrypt(blob, alg, key_size, &iv, passphrase); + } /* load a coded key or certificate file with autodetection diff --git a/src/libstrongswan/plugins/des/des_crypter.c b/src/libstrongswan/plugins/des/des_crypter.c index 06d497946..17defda50 100644 --- a/src/libstrongswan/plugins/des/des_crypter.c +++ b/src/libstrongswan/plugins/des/des_crypter.c @@ -1370,6 +1370,7 @@ static void decrypt(private_des_crypter_t *this, chunk_t data, chunk_t iv, if (decrypted) { *decrypted = chunk_alloc(data.len); + out = decrypted->ptr; } memcpy(&ivb, iv.ptr, sizeof(des_cblock)); des_cbc_encrypt((des_cblock*)(data.ptr), (des_cblock*)out, @@ -1390,6 +1391,7 @@ static void encrypt(private_des_crypter_t *this, chunk_t data, chunk_t iv, if (encrypted) { *encrypted = chunk_alloc(data.len); + out = encrypted->ptr; } memcpy(&ivb, iv.ptr, sizeof(des_cblock)); des_cbc_encrypt((des_cblock*)(data.ptr), (des_cblock*)out, @@ -1409,6 +1411,7 @@ static void decrypt3(private_des_crypter_t *this, chunk_t data, chunk_t iv, if (decrypted) { *decrypted = chunk_alloc(data.len); + out = decrypted->ptr; } memcpy(&ivb, iv.ptr, sizeof(des_cblock)); des_ede3_cbc_encrypt((des_cblock*)(data.ptr), (des_cblock*)out, @@ -1429,6 +1432,7 @@ static void encrypt3(private_des_crypter_t *this, chunk_t data, chunk_t iv, if (encrypted) { *encrypted = chunk_alloc(data.len); + out = encrypted->ptr; } memcpy(&ivb, iv.ptr, sizeof(des_cblock)); des_ede3_cbc_encrypt((des_cblock*)(data.ptr), (des_cblock*)out,