perlasm/x86asm.pl: recognize elf-1 denoting old ELF platforms.
[openssl.git] / crypto / des / des.c
index eebc3a71d61be660ef4a58d391cc7bcd4161cdba..343135ff9ec505e2c0865706997a44bb249b17c7 100644 (file)
@@ -88,6 +88,7 @@
 #endif
 #include <openssl/des.h>
 #include <openssl/rand.h>
+#include <openssl/ui_compat.h>
 
 void usage(void);
 void doencryption(void);
@@ -96,9 +97,9 @@ void uufwriteEnd(FILE *fp);
 int uufread(unsigned char *out,int size,unsigned int num,FILE *fp);
 int uuencode(unsigned char *in,int num,unsigned char *out);
 int uudecode(unsigned char *in,int num,unsigned char *out);
-void des_3cbc_encrypt(des_cblock *input,des_cblock *output,long length,
-       des_key_schedule sk1,des_key_schedule sk2,
-       des_cblock *ivec1,des_cblock *ivec2,int enc);
+void DES_3cbc_encrypt(DES_cblock *input,DES_cblock *output,long length,
+       DES_key_schedule sk1,DES_key_schedule sk2,
+       DES_cblock *ivec1,DES_cblock *ivec2,int enc);
 #ifdef OPENSSL_SYS_VMS
 #define EXIT(a) exit(a&0x10000000L)
 #else
@@ -119,7 +120,7 @@ int uubufnum=0;
 #define OUTUUBUF       (65*100)
 unsigned char b[OUTUUBUF];
 unsigned char bb[300];
-des_cblock cksum={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
+DES_cblock cksum={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
 char cksumname[200]="";
 
 int vflag,cflag,eflag,dflag,kflag,bflag,fflag,sflag,uflag,flag3,hflag,error;
@@ -152,12 +153,14 @@ int main(int argc, char **argv)
                                case 'c':
                                        cflag=1;
                                        strncpy(cksumname,p,200);
+                                       cksumname[sizeof(cksumname)-1]='\0';
                                        p+=strlen(cksumname);
                                        break;
                                case 'C':
                                        cflag=1;
                                        longk=1;
                                        strncpy(cksumname,p,200);
+                                       cksumname[sizeof(cksumname)-1]='\0';
                                        p+=strlen(cksumname);
                                        break;
                                case 'e':
@@ -189,6 +192,7 @@ int main(int argc, char **argv)
                                case 'u':
                                        uflag=1;
                                        strncpy(uuname,p,200);
+                                       uuname[sizeof(uuname)-1]='\0';
                                        p+=strlen(uuname);
                                        break;
                                case 'h':
@@ -360,11 +364,11 @@ void doencryption(void)
 #endif
 
        register int i;
-       des_key_schedule ks,ks2;
-       des_cblock iv,iv2;
+       DES_key_schedule ks,ks2;
+       DES_cblock iv,iv2;
        char *p;
        int num=0,j,k,l,rem,ll,len,last,ex=0;
-       des_cblock kk,k2;
+       DES_cblock kk,k2;
        FILE *O;
        int Exit=0;
 #ifndef OPENSSL_SYS_MSDOS
@@ -422,19 +426,19 @@ void doencryption(void)
                        else
                                k2[i-8]=k;
                        }
-               des_set_key_unchecked(&k2,ks2);
-               memset(k2,0,sizeof(k2));
+               DES_set_key_unchecked(&k2,&ks2);
+               OPENSSL_cleanse(k2,sizeof(k2));
                }
        else if (longk || flag3)
                {
                if (flag3)
                        {
-                       des_string_to_2keys(key,&kk,&k2);
-                       des_set_key_unchecked(&k2,ks2);
-                       memset(k2,0,sizeof(k2));
+                       DES_string_to_2keys(key,&kk,&k2);
+                       DES_set_key_unchecked(&k2,&ks2);
+                       OPENSSL_cleanse(k2,sizeof(k2));
                        }
                else
-                       des_string_to_key(key,&kk);
+                       DES_string_to_key(key,&kk);
                }
        else
                for (i=0; i<KEYSIZ; i++)
@@ -452,9 +456,9 @@ void doencryption(void)
                                kk[i]=key[i]|0x80;
                        }
 
-       des_set_key_unchecked(&kk,ks);
-       memset(key,0,sizeof(key));
-       memset(kk,0,sizeof(kk));
+       DES_set_key_unchecked(&kk,&ks);
+       OPENSSL_cleanse(key,sizeof(key));
+       OPENSSL_cleanse(kk,sizeof(kk));
        /* woops - A bug that does not showup under unix :-( */
        memset(iv,0,sizeof(iv));
        memset(iv2,0,sizeof(iv2));
@@ -491,8 +495,8 @@ void doencryption(void)
 
                        if (cflag)
                                {
-                               des_cbc_cksum(buf,&cksum,
-                                       (long)len,ks,&cksum);
+                               DES_cbc_cksum(buf,&cksum,
+                                       (long)len,&ks,&cksum);
                                if (!eflag)
                                        {
                                        if (feof(DES_IN)) break;
@@ -502,24 +506,24 @@ void doencryption(void)
 
                        if (bflag && !flag3)
                                for (i=0; i<l; i+=8)
-                                       des_ecb_encrypt(
-                                               (des_cblock *)&(buf[i]),
-                                               (des_cblock *)&(obuf[i]),
-                                               ks,do_encrypt);
+                                       DES_ecb_encrypt(
+                                               (DES_cblock *)&(buf[i]),
+                                               (DES_cblock *)&(obuf[i]),
+                                               &ks,do_encrypt);
                        else if (flag3 && bflag)
                                for (i=0; i<l; i+=8)
-                                       des_ecb2_encrypt(
-                                               (des_cblock *)&(buf[i]),
-                                               (des_cblock *)&(obuf[i]),
-                                               ks,ks2,do_encrypt);
+                                       DES_ecb2_encrypt(
+                                               (DES_cblock *)&(buf[i]),
+                                               (DES_cblock *)&(obuf[i]),
+                                               &ks,&ks2,do_encrypt);
                        else if (flag3 && !bflag)
                                {
                                char tmpbuf[8];
 
                                if (rem) memcpy(tmpbuf,&(buf[l]),
                                        (unsigned int)rem);
-                               des_3cbc_encrypt(
-                                       (des_cblock *)buf,(des_cblock *)obuf,
+                               DES_3cbc_encrypt(
+                                       (DES_cblock *)buf,(DES_cblock *)obuf,
                                        (long)l,ks,ks2,&iv,
                                        &iv2,do_encrypt);
                                if (rem) memcpy(&(buf[l]),tmpbuf,
@@ -527,9 +531,9 @@ void doencryption(void)
                                }
                        else
                                {
-                               des_cbc_encrypt(
+                               DES_cbc_encrypt(
                                        buf,obuf,
-                                       (long)l,ks,&iv,do_encrypt);
+                                       (long)l,&ks,&iv,do_encrypt);
                                if (l >= 8) memcpy(iv,&(obuf[l-8]),8);
                                }
                        if (rem) memcpy(buf,&(buf[l]),(unsigned int)rem);
@@ -581,28 +585,28 @@ void doencryption(void)
 
                        if (bflag && !flag3)
                                for (i=0; i<l; i+=8)
-                                       des_ecb_encrypt(
-                                               (des_cblock *)&(buf[i]),
-                                               (des_cblock *)&(obuf[i]),
-                                               ks,do_encrypt);
+                                       DES_ecb_encrypt(
+                                               (DES_cblock *)&(buf[i]),
+                                               (DES_cblock *)&(obuf[i]),
+                                               &ks,do_encrypt);
                        else if (flag3 && bflag)
                                for (i=0; i<l; i+=8)
-                                       des_ecb2_encrypt(
-                                               (des_cblock *)&(buf[i]),
-                                               (des_cblock *)&(obuf[i]),
-                                               ks,ks2,do_encrypt);
+                                       DES_ecb2_encrypt(
+                                               (DES_cblock *)&(buf[i]),
+                                               (DES_cblock *)&(obuf[i]),
+                                               &ks,&ks2,do_encrypt);
                        else if (flag3 && !bflag)
                                {
-                               des_3cbc_encrypt(
-                                       (des_cblock *)buf,(des_cblock *)obuf,
+                               DES_3cbc_encrypt(
+                                       (DES_cblock *)buf,(DES_cblock *)obuf,
                                        (long)l,ks,ks2,&iv,
                                        &iv2,do_encrypt);
                                }
                        else
                                {
-                               des_cbc_encrypt(
+                               DES_cbc_encrypt(
                                        buf,obuf,
-                                       (long)l,ks,&iv,do_encrypt);
+                                       (long)l,&ks,&iv,do_encrypt);
                                if (l >= 8) memcpy(iv,&(buf[l-8]),8);
                                }
 
@@ -627,9 +631,9 @@ void doencryption(void)
                                l=l-8+last;
                                }
                        i=0;
-                       if (cflag) des_cbc_cksum(obuf,
-                               (des_cblock *)cksum,(long)l/8*8,ks,
-                               (des_cblock *)cksum);
+                       if (cflag) DES_cbc_cksum(obuf,
+                               (DES_cblock *)cksum,(long)l/8*8,&ks,
+                               (DES_cblock *)cksum);
                        while (i != l)
                                {
                                j=fwrite(obuf,1,(unsigned int)l-i,DES_OUT);
@@ -662,18 +666,18 @@ void doencryption(void)
                if (l) fclose(CKSUM_OUT);
                }
 problems:
-       memset(buf,0,sizeof(buf));
-       memset(obuf,0,sizeof(obuf));
-       memset(ks,0,sizeof(ks));
-       memset(ks2,0,sizeof(ks2));
-       memset(iv,0,sizeof(iv));
-       memset(iv2,0,sizeof(iv2));
-       memset(kk,0,sizeof(kk));
-       memset(k2,0,sizeof(k2));
-       memset(uubuf,0,sizeof(uubuf));
-       memset(b,0,sizeof(b));
-       memset(bb,0,sizeof(bb));
-       memset(cksum,0,sizeof(cksum));
+       OPENSSL_cleanse(buf,sizeof(buf));
+       OPENSSL_cleanse(obuf,sizeof(obuf));
+       OPENSSL_cleanse(&ks,sizeof(ks));
+       OPENSSL_cleanse(&ks2,sizeof(ks2));
+       OPENSSL_cleanse(iv,sizeof(iv));
+       OPENSSL_cleanse(iv2,sizeof(iv2));
+       OPENSSL_cleanse(kk,sizeof(kk));
+       OPENSSL_cleanse(k2,sizeof(k2));
+       OPENSSL_cleanse(uubuf,sizeof(uubuf));
+       OPENSSL_cleanse(b,sizeof(b));
+       OPENSSL_cleanse(bb,sizeof(bb));
+       OPENSSL_cleanse(cksum,sizeof(cksum));
        if (Exit) EXIT(Exit);
        }