diff options
Diffstat (limited to 'crypto/openssl/crypto/des/des.c')
-rw-r--r-- | crypto/openssl/crypto/des/des.c | 140 |
1 files changed, 72 insertions, 68 deletions
diff --git a/crypto/openssl/crypto/des/des.c b/crypto/openssl/crypto/des/des.c index 215d741..343135f 100644 --- a/crypto/openssl/crypto/des/des.c +++ b/crypto/openssl/crypto/des/des.c @@ -59,25 +59,25 @@ #include <stdio.h> #include <stdlib.h> #include <string.h> -#ifndef MSDOS -#ifndef VMS #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 /* MSDOS */ +#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 @@ -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,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) @@ -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': @@ -258,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 { @@ -298,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> @@ -360,14 +364,14 @@ 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; @@ -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); } |