perlasm/x86asm.pl: recognize elf-1 denoting old ELF platforms.
[openssl.git] / crypto / des / des.c
index 91d7153b34667f9bd35945d2d26fe891f1e46c0b..343135ff9ec505e2c0865706997a44bb249b17c7 100644 (file)
 
 #include <stdio.h>
 #include <stdlib.h>
-#ifndef MSDOS
-#ifndef VMS
+#include <string.h>
 #include <openssl/opensslconf.h>
+#ifndef OPENSSL_SYS_MSDOS
+#ifndef OPENSSL_SYS_VMS
 #include OPENSSL_UNISTD
-#else /* VMS */
+#else /* OPENSSL_SYS_VMS */
 #ifdef __DECC
 #include <unistd.h>
 #else /* not __DECC */
 #include <math.h>
 #endif /* __DECC */
-#endif /* VMS */
-#else
+#endif /* OPENSSL_SYS_VMS */
+#else /* OPENSSL_SYS_MSDOS */
 #include <io.h>
 #endif
 
 #include <time.h>
 #include "des_ver.h"
 
-#ifdef VMS
+#ifdef OPENSSL_SYS_VMS
 #include <types.h>
 #include <stat.h>
 #else
 #endif
 #include <openssl/des.h>
 #include <openssl/rand.h>
-
-#if defined(__STDC__) || defined(VMS) || defined(M_XENIX) || defined(MSDOS)
-#include <string.h>
-#endif
+#include <openssl/ui_compat.h>
 
 void usage(void);
 void doencryption(void);
@@ -99,10 +97,10 @@ 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);
-#ifdef VMS
+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
 #define EXIT(a) exit(a)
@@ -122,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;
@@ -155,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':
@@ -192,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':
@@ -261,12 +262,12 @@ int main(int argc, char **argv)
 #endif                 
        if (    (in != NULL) &&
                (out != NULL) &&
-#ifndef MSDOS
+#ifndef OPENSSL_SYS_MSDOS
                (stat(in,&ins) != -1) &&
                (stat(out,&outs) != -1) &&
                (ins.st_dev == outs.st_dev) &&
                (ins.st_ino == outs.st_ino))
-#else /* MSDOS */
+#else /* OPENSSL_SYS_MSDOS */
                (strcmp(in,out) == 0))
 #endif
                        {
@@ -301,7 +302,7 @@ int main(int argc, char **argv)
                EXIT(5);
                }
 
-#ifdef MSDOS
+#ifdef OPENSSL_SYS_MSDOS
        /* This should set the file to binary mode. */
        {
 #include <fcntl.h>
@@ -363,22 +364,22 @@ 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 MSDOS
+#ifndef OPENSSL_SYS_MSDOS
        static unsigned char buf[BUFSIZE+8],obuf[BUFSIZE+8];
 #else
        static unsigned char *buf=NULL,*obuf=NULL;
 
        if (buf == NULL)
                {
-               if (    (( buf=Malloc(BUFSIZE+8)) == NULL) ||
-                       ((obuf=Malloc(BUFSIZE+8)) == NULL))
+               if (    (( buf=OPENSSL_malloc(BUFSIZE+8)) == NULL) ||
+                       ((obuf=OPENSSL_malloc(BUFSIZE+8)) == NULL))
                        {
                        fputs("Not enough memory\n",stderr);
                        Exit=10;
@@ -425,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++)
@@ -455,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));
@@ -494,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;
@@ -505,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,
@@ -530,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);
@@ -584,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);
                                }
 
@@ -630,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);
@@ -665,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);
        }