diff options
Diffstat (limited to 'src/lib/libcrypto/des/des.c')
-rw-r--r-- | src/lib/libcrypto/des/des.c | 112 |
1 files changed, 58 insertions, 54 deletions
diff --git a/src/lib/libcrypto/des/des.c b/src/lib/libcrypto/des/des.c index 215d7413c0..d8c846b23d 100644 --- a/src/lib/libcrypto/des/des.c +++ b/src/lib/libcrypto/des/des.c | |||
@@ -59,25 +59,25 @@ | |||
59 | #include <stdio.h> | 59 | #include <stdio.h> |
60 | #include <stdlib.h> | 60 | #include <stdlib.h> |
61 | #include <string.h> | 61 | #include <string.h> |
62 | #ifndef MSDOS | ||
63 | #ifndef VMS | ||
64 | #include <openssl/opensslconf.h> | 62 | #include <openssl/opensslconf.h> |
63 | #ifndef OPENSSL_SYS_MSDOS | ||
64 | #ifndef OPENSSL_SYS_VMS | ||
65 | #include OPENSSL_UNISTD | 65 | #include OPENSSL_UNISTD |
66 | #else /* VMS */ | 66 | #else /* OPENSSL_SYS_VMS */ |
67 | #ifdef __DECC | 67 | #ifdef __DECC |
68 | #include <unistd.h> | 68 | #include <unistd.h> |
69 | #else /* not __DECC */ | 69 | #else /* not __DECC */ |
70 | #include <math.h> | 70 | #include <math.h> |
71 | #endif /* __DECC */ | 71 | #endif /* __DECC */ |
72 | #endif /* VMS */ | 72 | #endif /* OPENSSL_SYS_VMS */ |
73 | #else /* MSDOS */ | 73 | #else /* OPENSSL_SYS_MSDOS */ |
74 | #include <io.h> | 74 | #include <io.h> |
75 | #endif | 75 | #endif |
76 | 76 | ||
77 | #include <time.h> | 77 | #include <time.h> |
78 | #include "des_ver.h" | 78 | #include "des_ver.h" |
79 | 79 | ||
80 | #ifdef VMS | 80 | #ifdef OPENSSL_SYS_VMS |
81 | #include <types.h> | 81 | #include <types.h> |
82 | #include <stat.h> | 82 | #include <stat.h> |
83 | #else | 83 | #else |
@@ -88,6 +88,7 @@ | |||
88 | #endif | 88 | #endif |
89 | #include <openssl/des.h> | 89 | #include <openssl/des.h> |
90 | #include <openssl/rand.h> | 90 | #include <openssl/rand.h> |
91 | #include <openssl/ui_compat.h> | ||
91 | 92 | ||
92 | void usage(void); | 93 | void usage(void); |
93 | void doencryption(void); | 94 | void doencryption(void); |
@@ -96,10 +97,10 @@ void uufwriteEnd(FILE *fp); | |||
96 | int uufread(unsigned char *out,int size,unsigned int num,FILE *fp); | 97 | int uufread(unsigned char *out,int size,unsigned int num,FILE *fp); |
97 | int uuencode(unsigned char *in,int num,unsigned char *out); | 98 | int uuencode(unsigned char *in,int num,unsigned char *out); |
98 | int uudecode(unsigned char *in,int num,unsigned char *out); | 99 | int uudecode(unsigned char *in,int num,unsigned char *out); |
99 | void des_3cbc_encrypt(des_cblock *input,des_cblock *output,long length, | 100 | void DES_3cbc_encrypt(DES_cblock *input,DES_cblock *output,long length, |
100 | des_key_schedule sk1,des_key_schedule sk2, | 101 | DES_key_schedule sk1,DES_key_schedule sk2, |
101 | des_cblock *ivec1,des_cblock *ivec2,int enc); | 102 | DES_cblock *ivec1,DES_cblock *ivec2,int enc); |
102 | #ifdef VMS | 103 | #ifdef OPENSSL_SYS_VMS |
103 | #define EXIT(a) exit(a&0x10000000L) | 104 | #define EXIT(a) exit(a&0x10000000L) |
104 | #else | 105 | #else |
105 | #define EXIT(a) exit(a) | 106 | #define EXIT(a) exit(a) |
@@ -119,7 +120,7 @@ int uubufnum=0; | |||
119 | #define OUTUUBUF (65*100) | 120 | #define OUTUUBUF (65*100) |
120 | unsigned char b[OUTUUBUF]; | 121 | unsigned char b[OUTUUBUF]; |
121 | unsigned char bb[300]; | 122 | unsigned char bb[300]; |
122 | des_cblock cksum={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; | 123 | DES_cblock cksum={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; |
123 | char cksumname[200]=""; | 124 | char cksumname[200]=""; |
124 | 125 | ||
125 | int vflag,cflag,eflag,dflag,kflag,bflag,fflag,sflag,uflag,flag3,hflag,error; | 126 | int vflag,cflag,eflag,dflag,kflag,bflag,fflag,sflag,uflag,flag3,hflag,error; |
@@ -152,12 +153,14 @@ int main(int argc, char **argv) | |||
152 | case 'c': | 153 | case 'c': |
153 | cflag=1; | 154 | cflag=1; |
154 | strncpy(cksumname,p,200); | 155 | strncpy(cksumname,p,200); |
156 | cksumname[sizeof(cksumname)-1]='\0'; | ||
155 | p+=strlen(cksumname); | 157 | p+=strlen(cksumname); |
156 | break; | 158 | break; |
157 | case 'C': | 159 | case 'C': |
158 | cflag=1; | 160 | cflag=1; |
159 | longk=1; | 161 | longk=1; |
160 | strncpy(cksumname,p,200); | 162 | strncpy(cksumname,p,200); |
163 | cksumname[sizeof(cksumname)-1]='\0'; | ||
161 | p+=strlen(cksumname); | 164 | p+=strlen(cksumname); |
162 | break; | 165 | break; |
163 | case 'e': | 166 | case 'e': |
@@ -189,6 +192,7 @@ int main(int argc, char **argv) | |||
189 | case 'u': | 192 | case 'u': |
190 | uflag=1; | 193 | uflag=1; |
191 | strncpy(uuname,p,200); | 194 | strncpy(uuname,p,200); |
195 | uuname[sizeof(uuname)-1]='\0'; | ||
192 | p+=strlen(uuname); | 196 | p+=strlen(uuname); |
193 | break; | 197 | break; |
194 | case 'h': | 198 | case 'h': |
@@ -258,12 +262,12 @@ int main(int argc, char **argv) | |||
258 | #endif | 262 | #endif |
259 | if ( (in != NULL) && | 263 | if ( (in != NULL) && |
260 | (out != NULL) && | 264 | (out != NULL) && |
261 | #ifndef MSDOS | 265 | #ifndef OPENSSL_SYS_MSDOS |
262 | (stat(in,&ins) != -1) && | 266 | (stat(in,&ins) != -1) && |
263 | (stat(out,&outs) != -1) && | 267 | (stat(out,&outs) != -1) && |
264 | (ins.st_dev == outs.st_dev) && | 268 | (ins.st_dev == outs.st_dev) && |
265 | (ins.st_ino == outs.st_ino)) | 269 | (ins.st_ino == outs.st_ino)) |
266 | #else /* MSDOS */ | 270 | #else /* OPENSSL_SYS_MSDOS */ |
267 | (strcmp(in,out) == 0)) | 271 | (strcmp(in,out) == 0)) |
268 | #endif | 272 | #endif |
269 | { | 273 | { |
@@ -298,7 +302,7 @@ int main(int argc, char **argv) | |||
298 | EXIT(5); | 302 | EXIT(5); |
299 | } | 303 | } |
300 | 304 | ||
301 | #ifdef MSDOS | 305 | #ifdef OPENSSL_SYS_MSDOS |
302 | /* This should set the file to binary mode. */ | 306 | /* This should set the file to binary mode. */ |
303 | { | 307 | { |
304 | #include <fcntl.h> | 308 | #include <fcntl.h> |
@@ -360,14 +364,14 @@ void doencryption(void) | |||
360 | #endif | 364 | #endif |
361 | 365 | ||
362 | register int i; | 366 | register int i; |
363 | des_key_schedule ks,ks2; | 367 | DES_key_schedule ks,ks2; |
364 | des_cblock iv,iv2; | 368 | DES_cblock iv,iv2; |
365 | char *p; | 369 | char *p; |
366 | int num=0,j,k,l,rem,ll,len,last,ex=0; | 370 | int num=0,j,k,l,rem,ll,len,last,ex=0; |
367 | des_cblock kk,k2; | 371 | DES_cblock kk,k2; |
368 | FILE *O; | 372 | FILE *O; |
369 | int Exit=0; | 373 | int Exit=0; |
370 | #ifndef MSDOS | 374 | #ifndef OPENSSL_SYS_MSDOS |
371 | static unsigned char buf[BUFSIZE+8],obuf[BUFSIZE+8]; | 375 | static unsigned char buf[BUFSIZE+8],obuf[BUFSIZE+8]; |
372 | #else | 376 | #else |
373 | static unsigned char *buf=NULL,*obuf=NULL; | 377 | static unsigned char *buf=NULL,*obuf=NULL; |
@@ -422,19 +426,19 @@ void doencryption(void) | |||
422 | else | 426 | else |
423 | k2[i-8]=k; | 427 | k2[i-8]=k; |
424 | } | 428 | } |
425 | des_set_key_unchecked(&k2,ks2); | 429 | DES_set_key_unchecked(&k2,&ks2); |
426 | memset(k2,0,sizeof(k2)); | 430 | memset(k2,0,sizeof(k2)); |
427 | } | 431 | } |
428 | else if (longk || flag3) | 432 | else if (longk || flag3) |
429 | { | 433 | { |
430 | if (flag3) | 434 | if (flag3) |
431 | { | 435 | { |
432 | des_string_to_2keys(key,&kk,&k2); | 436 | DES_string_to_2keys(key,&kk,&k2); |
433 | des_set_key_unchecked(&k2,ks2); | 437 | DES_set_key_unchecked(&k2,&ks2); |
434 | memset(k2,0,sizeof(k2)); | 438 | memset(k2,0,sizeof(k2)); |
435 | } | 439 | } |
436 | else | 440 | else |
437 | des_string_to_key(key,&kk); | 441 | DES_string_to_key(key,&kk); |
438 | } | 442 | } |
439 | else | 443 | else |
440 | for (i=0; i<KEYSIZ; i++) | 444 | for (i=0; i<KEYSIZ; i++) |
@@ -452,7 +456,7 @@ void doencryption(void) | |||
452 | kk[i]=key[i]|0x80; | 456 | kk[i]=key[i]|0x80; |
453 | } | 457 | } |
454 | 458 | ||
455 | des_set_key_unchecked(&kk,ks); | 459 | DES_set_key_unchecked(&kk,&ks); |
456 | memset(key,0,sizeof(key)); | 460 | memset(key,0,sizeof(key)); |
457 | memset(kk,0,sizeof(kk)); | 461 | memset(kk,0,sizeof(kk)); |
458 | /* woops - A bug that does not showup under unix :-( */ | 462 | /* woops - A bug that does not showup under unix :-( */ |
@@ -491,8 +495,8 @@ void doencryption(void) | |||
491 | 495 | ||
492 | if (cflag) | 496 | if (cflag) |
493 | { | 497 | { |
494 | des_cbc_cksum(buf,&cksum, | 498 | DES_cbc_cksum(buf,&cksum, |
495 | (long)len,ks,&cksum); | 499 | (long)len,&ks,&cksum); |
496 | if (!eflag) | 500 | if (!eflag) |
497 | { | 501 | { |
498 | if (feof(DES_IN)) break; | 502 | if (feof(DES_IN)) break; |
@@ -502,24 +506,24 @@ void doencryption(void) | |||
502 | 506 | ||
503 | if (bflag && !flag3) | 507 | if (bflag && !flag3) |
504 | for (i=0; i<l; i+=8) | 508 | for (i=0; i<l; i+=8) |
505 | des_ecb_encrypt( | 509 | DES_ecb_encrypt( |
506 | (des_cblock *)&(buf[i]), | 510 | (DES_cblock *)&(buf[i]), |
507 | (des_cblock *)&(obuf[i]), | 511 | (DES_cblock *)&(obuf[i]), |
508 | ks,do_encrypt); | 512 | &ks,do_encrypt); |
509 | else if (flag3 && bflag) | 513 | else if (flag3 && bflag) |
510 | for (i=0; i<l; i+=8) | 514 | for (i=0; i<l; i+=8) |
511 | des_ecb2_encrypt( | 515 | DES_ecb2_encrypt( |
512 | (des_cblock *)&(buf[i]), | 516 | (DES_cblock *)&(buf[i]), |
513 | (des_cblock *)&(obuf[i]), | 517 | (DES_cblock *)&(obuf[i]), |
514 | ks,ks2,do_encrypt); | 518 | &ks,&ks2,do_encrypt); |
515 | else if (flag3 && !bflag) | 519 | else if (flag3 && !bflag) |
516 | { | 520 | { |
517 | char tmpbuf[8]; | 521 | char tmpbuf[8]; |
518 | 522 | ||
519 | if (rem) memcpy(tmpbuf,&(buf[l]), | 523 | if (rem) memcpy(tmpbuf,&(buf[l]), |
520 | (unsigned int)rem); | 524 | (unsigned int)rem); |
521 | des_3cbc_encrypt( | 525 | DES_3cbc_encrypt( |
522 | (des_cblock *)buf,(des_cblock *)obuf, | 526 | (DES_cblock *)buf,(DES_cblock *)obuf, |
523 | (long)l,ks,ks2,&iv, | 527 | (long)l,ks,ks2,&iv, |
524 | &iv2,do_encrypt); | 528 | &iv2,do_encrypt); |
525 | if (rem) memcpy(&(buf[l]),tmpbuf, | 529 | if (rem) memcpy(&(buf[l]),tmpbuf, |
@@ -527,9 +531,9 @@ void doencryption(void) | |||
527 | } | 531 | } |
528 | else | 532 | else |
529 | { | 533 | { |
530 | des_cbc_encrypt( | 534 | DES_cbc_encrypt( |
531 | buf,obuf, | 535 | buf,obuf, |
532 | (long)l,ks,&iv,do_encrypt); | 536 | (long)l,&ks,&iv,do_encrypt); |
533 | if (l >= 8) memcpy(iv,&(obuf[l-8]),8); | 537 | if (l >= 8) memcpy(iv,&(obuf[l-8]),8); |
534 | } | 538 | } |
535 | if (rem) memcpy(buf,&(buf[l]),(unsigned int)rem); | 539 | if (rem) memcpy(buf,&(buf[l]),(unsigned int)rem); |
@@ -581,28 +585,28 @@ void doencryption(void) | |||
581 | 585 | ||
582 | if (bflag && !flag3) | 586 | if (bflag && !flag3) |
583 | for (i=0; i<l; i+=8) | 587 | for (i=0; i<l; i+=8) |
584 | des_ecb_encrypt( | 588 | DES_ecb_encrypt( |
585 | (des_cblock *)&(buf[i]), | 589 | (DES_cblock *)&(buf[i]), |
586 | (des_cblock *)&(obuf[i]), | 590 | (DES_cblock *)&(obuf[i]), |
587 | ks,do_encrypt); | 591 | &ks,do_encrypt); |
588 | else if (flag3 && bflag) | 592 | else if (flag3 && bflag) |
589 | for (i=0; i<l; i+=8) | 593 | for (i=0; i<l; i+=8) |
590 | des_ecb2_encrypt( | 594 | DES_ecb2_encrypt( |
591 | (des_cblock *)&(buf[i]), | 595 | (DES_cblock *)&(buf[i]), |
592 | (des_cblock *)&(obuf[i]), | 596 | (DES_cblock *)&(obuf[i]), |
593 | ks,ks2,do_encrypt); | 597 | &ks,&ks2,do_encrypt); |
594 | else if (flag3 && !bflag) | 598 | else if (flag3 && !bflag) |
595 | { | 599 | { |
596 | des_3cbc_encrypt( | 600 | DES_3cbc_encrypt( |
597 | (des_cblock *)buf,(des_cblock *)obuf, | 601 | (DES_cblock *)buf,(DES_cblock *)obuf, |
598 | (long)l,ks,ks2,&iv, | 602 | (long)l,ks,ks2,&iv, |
599 | &iv2,do_encrypt); | 603 | &iv2,do_encrypt); |
600 | } | 604 | } |
601 | else | 605 | else |
602 | { | 606 | { |
603 | des_cbc_encrypt( | 607 | DES_cbc_encrypt( |
604 | buf,obuf, | 608 | buf,obuf, |
605 | (long)l,ks,&iv,do_encrypt); | 609 | (long)l,&ks,&iv,do_encrypt); |
606 | if (l >= 8) memcpy(iv,&(buf[l-8]),8); | 610 | if (l >= 8) memcpy(iv,&(buf[l-8]),8); |
607 | } | 611 | } |
608 | 612 | ||
@@ -627,9 +631,9 @@ void doencryption(void) | |||
627 | l=l-8+last; | 631 | l=l-8+last; |
628 | } | 632 | } |
629 | i=0; | 633 | i=0; |
630 | if (cflag) des_cbc_cksum(obuf, | 634 | if (cflag) DES_cbc_cksum(obuf, |
631 | (des_cblock *)cksum,(long)l/8*8,ks, | 635 | (DES_cblock *)cksum,(long)l/8*8,&ks, |
632 | (des_cblock *)cksum); | 636 | (DES_cblock *)cksum); |
633 | while (i != l) | 637 | while (i != l) |
634 | { | 638 | { |
635 | j=fwrite(obuf,1,(unsigned int)l-i,DES_OUT); | 639 | j=fwrite(obuf,1,(unsigned int)l-i,DES_OUT); |
@@ -664,8 +668,8 @@ void doencryption(void) | |||
664 | problems: | 668 | problems: |
665 | memset(buf,0,sizeof(buf)); | 669 | memset(buf,0,sizeof(buf)); |
666 | memset(obuf,0,sizeof(obuf)); | 670 | memset(obuf,0,sizeof(obuf)); |
667 | memset(ks,0,sizeof(ks)); | 671 | memset(&ks,0,sizeof(ks)); |
668 | memset(ks2,0,sizeof(ks2)); | 672 | memset(&ks2,0,sizeof(ks2)); |
669 | memset(iv,0,sizeof(iv)); | 673 | memset(iv,0,sizeof(iv)); |
670 | memset(iv2,0,sizeof(iv2)); | 674 | memset(iv2,0,sizeof(iv2)); |
671 | memset(kk,0,sizeof(kk)); | 675 | memset(kk,0,sizeof(kk)); |