=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/skey/skey.c,v retrieving revision 1.2 retrieving revision 1.3 diff -c -r1.2 -r1.3 *** src/usr.bin/skey/skey.c 1996/06/26 05:39:20 1.2 --- src/usr.bin/skey/skey.c 1996/09/27 15:41:36 1.3 *************** *** 1,4 **** ! /* * $OpenBSD: skey.c,v 1.2 1996/06/26 05:39:20 deraadt Exp $*/ /* * S/KEY v1.1b (skey.c) * --- 1,4 ---- ! /* * $OpenBSD: skey.c,v 1.3 1996/09/27 15:41:36 millert Exp $*/ /* * S/KEY v1.1b (skey.c) * *************** *** 21,34 **** * */ - #include #include #include #include ! #include ! #include ! #include "md4.h" ! #include "skey.h" void usage __P((char *)); --- 21,32 ---- * */ #include #include #include ! #include ! #include ! #include void usage __P((char *)); *************** *** 37,50 **** int argc; char *argv[]; { ! int n, cnt, i, pass = 0; char passwd[256], key[8], buf[33], *seed, *slash; - extern int optind; - extern char *optarg; ! cnt = 1; ! ! while ((i = getopt(argc, argv, "n:p:")) != EOF) { switch (i) { case 'n': cnt = atoi(optarg); --- 35,44 ---- int argc; char *argv[]; { ! int n, i, cnt = 1, pass = 0, hexmode = 0; char passwd[256], key[8], buf[33], *seed, *slash; ! while ((i = getopt(argc, argv, "n:p:x45")) != EOF) { switch (i) { case 'n': cnt = atoi(optarg); *************** *** 53,58 **** --- 47,61 ---- strcpy(passwd, optarg); pass = 1; break; + case 'x': + hexmode = 1; + break; + case '4': + skey_set_MDX(4); + break; + case '5': + skey_set_MDX(5); + break; } } *************** *** 69,81 **** seed = slash; if ((n = atoi(argv[optind])) < 0) { ! fprintf(stderr, "%s not positive\n", argv[optind]); usage(argv[0]); } } else { - if ((n = atoi(argv[optind])) < 0) { ! fprintf(stderr, "%s not positive\n", argv[optind]); usage(argv[0]); } seed = argv[++optind]; --- 72,83 ---- seed = slash; if ((n = atoi(argv[optind])) < 0) { ! warnx("%s not positive", argv[optind]); usage(argv[0]); } } else { if ((n = atoi(argv[optind])) < 0) { ! warnx("%s not positive", argv[optind]); usage(argv[0]); } seed = argv[++optind]; *************** *** 83,114 **** /* Get user's secret password */ if (!pass) { ! fprintf(stderr, "Enter secret password: "); readpass(passwd, sizeof(passwd)); } rip(passwd); /* Crunch seed and password into starting key */ ! if (keycrunch(key, seed, passwd) != 0) { ! fprintf(stderr, "%s: key crunch failed\n", argv[0]); ! exit(1); ! } if (cnt == 1) { while (n-- != 0) f(key); ! printf("%s\n", btoe(buf, key)); ! #ifdef HEXIN ! printf("%s\n", put8(buf, key)); ! #endif } else { for (i = 0; i <= n - cnt; i++) f(key); for (; i <= n; i++) { ! #ifdef HEXIN ! printf("%d: %-29s %s\n", i, btoe(buf, key), put8(buf, key)); ! #else ! printf("%d: %-29s\n", i, btoe(buf, key)); ! #endif f(key); } } --- 85,113 ---- /* Get user's secret password */ if (!pass) { ! (void)fputs("Reminder - Do not use this program while logged in via telnet or rlogin.\n", stderr); ! (void)fputs("Enter secret password: ", stderr); readpass(passwd, sizeof(passwd)); } rip(passwd); /* Crunch seed and password into starting key */ ! if (keycrunch(key, seed, passwd) != 0) ! errx(1, "key crunch failed"); ! if (cnt == 1) { while (n-- != 0) f(key); ! (void)puts(hexmode ? put8(buf, key) : btoe(buf, key)); } else { for (i = 0; i <= n - cnt; i++) f(key); for (; i <= n; i++) { ! if (hexmode) ! (void)printf("%d: %-29s %s\n", i, ! btoe(buf, key), put8(buf, key)); ! else ! (void)printf("%d: %-29s\n", i, btoe(buf, key)); f(key); } } *************** *** 119,126 **** usage(s) char *s; { ! ! fprintf(stderr, ! "Usage: %s [-n count] [-p password ] sequence# [/] key\n", s); exit(1); } --- 118,123 ---- usage(s) char *s; { ! (void)fprintf(stderr, "Usage: %s [-x] [-4|-5] [-n count] [-p password ] sequence# [/] key", s); exit(1); }