summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/des/des.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libcrypto/des/des.c')
-rw-r--r--src/lib/libcrypto/des/des.c112
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
92void usage(void); 93void usage(void);
93void doencryption(void); 94void doencryption(void);
@@ -96,10 +97,10 @@ void uufwriteEnd(FILE *fp);
96int uufread(unsigned char *out,int size,unsigned int num,FILE *fp); 97int uufread(unsigned char *out,int size,unsigned int num,FILE *fp);
97int uuencode(unsigned char *in,int num,unsigned char *out); 98int uuencode(unsigned char *in,int num,unsigned char *out);
98int uudecode(unsigned char *in,int num,unsigned char *out); 99int uudecode(unsigned char *in,int num,unsigned char *out);
99void des_3cbc_encrypt(des_cblock *input,des_cblock *output,long length, 100void 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)
120unsigned char b[OUTUUBUF]; 121unsigned char b[OUTUUBUF];
121unsigned char bb[300]; 122unsigned char bb[300];
122des_cblock cksum={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; 123DES_cblock cksum={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
123char cksumname[200]=""; 124char cksumname[200]="";
124 125
125int vflag,cflag,eflag,dflag,kflag,bflag,fflag,sflag,uflag,flag3,hflag,error; 126int 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)
664problems: 668problems:
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));