diff options
Diffstat (limited to 'usr.bin/bdes')
-rw-r--r-- | usr.bin/bdes/bdes.c | 67 |
1 files changed, 45 insertions, 22 deletions
diff --git a/usr.bin/bdes/bdes.c b/usr.bin/bdes/bdes.c index 9b8c5b491d6..af26b6ebda1 100644 --- a/usr.bin/bdes/bdes.c +++ b/usr.bin/bdes/bdes.c @@ -1,4 +1,4 @@ -/* $OpenBSD: bdes.c,v 1.4 1998/05/07 19:12:17 deraadt Exp $ */ +/* $OpenBSD: bdes.c,v 1.5 2001/02/05 08:38:23 deraadt Exp $ */ /* $NetBSD: bdes.c,v 1.2 1995/03/26 03:33:19 glass Exp $ */ /*- @@ -51,7 +51,7 @@ static char copyright[] = #if 0 static char sccsid[] = "@(#)bdes.c 8.1 (Berkeley) 6/6/93"; #else -static char rcsid[] = "$OpenBSD: bdes.c,v 1.4 1998/05/07 19:12:17 deraadt Exp $"; +static char rcsid[] = "$OpenBSD: bdes.c,v 1.5 2001/02/05 08:38:23 deraadt Exp $"; #endif #endif /* not lint */ @@ -85,6 +85,7 @@ static char rcsid[] = "$OpenBSD: bdes.c,v 1.4 1998/05/07 19:12:17 deraadt Exp $" * or the technical report for a complete reference). */ +#include <err.h> #include <errno.h> #include <unistd.h> #include <stdio.h> @@ -92,6 +93,25 @@ static char rcsid[] = "$OpenBSD: bdes.c,v 1.4 1998/05/07 19:12:17 deraadt Exp $" #include <stdlib.h> #include <string.h> +typedef char Desbuf[8]; +int tobinhexi __P((char, int)); +void cvtkey __P((char *, char *)); +int setbits __P((char *, int)); +void makekey __P((Desbuf)); +void ecbenc __P((void)); +void ecbdec __P((void)); +void cbcenc __P((void)); +void cbcdec __P((void)); +void cbcauth __P((void)); +void cfbenc __P((void)); +void cfbdec __P((void)); +void cfbaenc __P((void)); +void cfbadec __P((void)); +void cfbauth __P((void)); +void ofbdec __P((void)); +void ofbenc __P((void)); +void usage __P((void)); + /* * BSD and System V systems offer special library calls that do * block moves and fills, so if possible we take advantage of them @@ -104,22 +124,22 @@ static char rcsid[] = "$OpenBSD: bdes.c,v 1.4 1998/05/07 19:12:17 deraadt Exp $" #ifdef FASTWAY #define DES_KEY(buf) \ if (des_setkey(buf)) \ - err("des_setkey", 0); + err(1, "des_setkey"); #define DES_XFORM(buf) \ if (des_cipher(buf, buf, 0L, (inverse ? -1 : 1))) \ - err("des_cipher", 0); + err(1, "des_cipher"); #else #define DES_KEY(buf) { \ char bits1[64]; /* bits of key */ \ expand(buf, bits1); \ if (setkey(bits1)) \ - err("setkey", 0); \ + err(1, "setkey"); \ } #define DES_XFORM(buf) { \ char bits1[64]; /* bits of message */ \ expand(buf, bits1); \ if (encrypt(bits1, inverse)) \ - err("encrypt", 0); \ + err(1, "encrypt"); \ compress(bits1, buf); \ } #endif @@ -135,7 +155,6 @@ static char rcsid[] = "$OpenBSD: bdes.c,v 1.4 1998/05/07 19:12:17 deraadt Exp $" /* * some things to make references easier */ -typedef char Desbuf[8]; #define CHAR(x,i) (x[i]) #define UCHAR(x,i) (x[i]) #define BUFFER(x) (x) @@ -164,6 +183,8 @@ int macbits = -1; /* number of bits in authentication */ int fbbits = -1; /* number of feedback bits */ int pflag; /* 1 to preserve parity bits */ + +int main(ac, av) int ac; /* arg count */ char **av; /* arg vector */ @@ -335,23 +356,9 @@ main(ac, av) } /* - * print a warning message and, possibly, terminate - */ -err(n, s) - int n; /* offending block number */ - char *s; /* the message */ -{ - if (n > 0) - (void)fprintf(stderr, "bdes (block %d): ", n); - else - (void)fprintf(stderr, "bdes: "); - (void)fprintf(stderr, "%s\n", s ? s : strerror(errno)); - exit(1); -} - -/* * map a hex character to an integer */ +int tobinhex(c, radix) char c; /* char to be converted */ int radix; /* base (2 to 16) */ @@ -383,6 +390,7 @@ tobinhex(c, radix) /* * convert the key to a bit pattern */ +void cvtkey(obuf, ibuf) char *obuf; /* bit pattern */ char *ibuf; /* the key itself */ @@ -451,6 +459,7 @@ cvtkey(obuf, ibuf) * 2. must be a valid decimal number * 3. must be a multiple of mult */ +int setbits(s, mult) char *s; /* the ASCII string */ int mult; /* what it must be a multiple of */ @@ -493,6 +502,7 @@ setbits(s, mult) * systems set the parity (high) bit of each character to 0, and the * DES ignores the low order bit of each character. */ +void makekey(buf) Desbuf buf; /* key block */ { @@ -521,6 +531,7 @@ makekey(buf) /* * This encrypts using the Electronic Code Book mode of DES */ +void ecbenc() { register int n; /* number of bytes actually read */ @@ -549,6 +560,7 @@ ecbenc() /* * This decrypts using the Electronic Code Book mode of DES */ +void ecbdec() { register int n; /* number of bytes actually read */ @@ -580,6 +592,7 @@ ecbdec() /* * This encrypts using the Cipher Block Chaining mode of DES */ +void cbcenc() { register int n; /* number of bytes actually read */ @@ -613,6 +626,7 @@ cbcenc() /* * This decrypts using the Cipher Block Chaining mode of DES */ +void cbcdec() { register int n; /* number of bytes actually read */ @@ -649,6 +663,7 @@ cbcdec() /* * This authenticates using the Cipher Block Chaining mode of DES */ +void cbcauth() { register int n, j; /* number of bytes actually read */ @@ -693,6 +708,7 @@ cbcauth() /* * This encrypts using the Cipher FeedBack mode of DES */ +void cfbenc() { register int n; /* number of bytes actually read */ @@ -734,6 +750,7 @@ cfbenc() /* * This decrypts using the Cipher Block Chaining mode of DES */ +void cfbdec() { register int n; /* number of bytes actually read */ @@ -779,6 +796,7 @@ cfbdec() /* * This encrypts using the alternative Cipher FeedBack mode of DES */ +void cfbaenc() { register int n; /* number of bytes actually read */ @@ -824,6 +842,7 @@ cfbaenc() /* * This decrypts using the alternative Cipher Block Chaining mode of DES */ +void cfbadec() { register int n; /* number of bytes actually read */ @@ -870,6 +889,7 @@ cfbadec() /* * This encrypts using the Output FeedBack mode of DES */ +void ofbenc() { register int n; /* number of bytes actually read */ @@ -915,6 +935,7 @@ ofbenc() /* * This decrypts using the Output Block Chaining mode of DES */ +void ofbdec() { register int n; /* number of bytes actually read */ @@ -963,6 +984,7 @@ ofbdec() /* * This authenticates using the Cipher FeedBack mode of DES */ +void cfbauth() { register int n, j; /* number of bytes actually read */ @@ -1045,6 +1067,7 @@ compress(from, to) /* * message about usage */ +void usage() { (void)fprintf(stderr, "%s\n", |