fixing DES ECB decryption
authorTobias Brunner <tobias@strongswan.org>
Thu, 12 Mar 2009 18:38:13 +0000 (18:38 -0000)
committerTobias Brunner <tobias@strongswan.org>
Thu, 12 Mar 2009 18:38:13 +0000 (18:38 -0000)
src/libstrongswan/plugins/des/des_crypter.c

index 6709b7a..51b65a7 100644 (file)
@@ -1128,10 +1128,8 @@ static void des_ecb_encrypt(des_cblock *input, des_cblock *output, long length,
        {
                for (l-=8; l>=0; l-=8)
                {
-                       c2l(in,tin0);
-                       c2l(in,tin1);
-                       tin[0]=tin0;
-                       tin[1]=tin1;
+                       c2l(in,tin0); tin[0]=tin0;
+                       c2l(in,tin1); tin[1]=tin1;
                        des_encrypt((DES_LONG *)tin,schedule,DES_ENCRYPT);
                        tout0=tin[0]; l2c(tout0,out);
                        tout1=tin[1]; l2c(tout1,out);
@@ -1153,14 +1151,16 @@ static void des_ecb_encrypt(des_cblock *input, des_cblock *output, long length,
                        c2l(in,tin0); tin[0]=tin0;
                        c2l(in,tin1); tin[1]=tin1;
                        des_encrypt((DES_LONG *)tin,schedule,DES_DECRYPT);
-                       l2c(tout0,out);
-                       l2c(tout1,out);
+                       tout0=tin[0]; l2c(tout0,out);
+                       tout1=tin[1]; l2c(tout1,out);
                }
                if (l != -8)
                {
                        c2l(in,tin0); tin[0]=tin0;
                        c2l(in,tin1); tin[1]=tin1;
                        des_encrypt((DES_LONG *)tin,schedule,DES_DECRYPT);
+                       tout0=tin[0];
+                       tout1=tin[1];
                        l2cn(tout0,tout1,out,l+8);
                }
        }