summaryrefslogtreecommitdiffstats
path: root/usr.bin/enigma/enigma.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr.bin/enigma/enigma.c')
-rw-r--r--usr.bin/enigma/enigma.c62
1 files changed, 36 insertions, 26 deletions
diff --git a/usr.bin/enigma/enigma.c b/usr.bin/enigma/enigma.c
index 3808cc7..3b1560c 100644
--- a/usr.bin/enigma/enigma.c
+++ b/usr.bin/enigma/enigma.c
@@ -10,23 +10,30 @@
* Upgraded to function properly on 64-bit machines.
*/
-#define ECHO 010
+#include <sys/types.h>
+#include <sys/wait.h>
+
#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#define MINUSKVAR "CrYpTkEy"
+
+#define ECHO 010
#define ROTORSZ 256
#define MASK 0377
char t1[ROTORSZ];
char t2[ROTORSZ];
char t3[ROTORSZ];
char deck[ROTORSZ];
-char *getpass();
char buf[13];
-void shuffle();
-void puth();
+void shuffle(char *);
void
setup(pw)
-char *pw;
+ char *pw;
{
int ic, i, k, temp, pf[2], pid;
unsigned random;
@@ -97,18 +104,32 @@ char *pw;
t2[t1[i]&MASK] = i;
}
+int
main(argc, argv)
-char *argv[];
+ char *argv[];
{
register int i, n1, n2, nr1, nr2;
- int secureflg = 0;
+ int secureflg = 0, kflag = 0;
+ char *cp;
- if (argc > 1 && argv[1][0] == '-' && argv[1][1] == 's') {
- argc--;
- argv++;
- secureflg = 1;
+ if (argc > 1 && argv[1][0] == '-') {
+ if (argv[1][1] == 's') {
+ argc--;
+ argv++;
+ secureflg = 1;
+ } else if (argv[1][1] == 'k') {
+ argc--;
+ argv++;
+ kflag = 1;
+ }
}
- if (argc != 2){
+ if (kflag) {
+ if ((cp = getenv(MINUSKVAR)) == NULL) {
+ fprintf(stderr, "%s not set\n", MINUSKVAR);
+ exit(1);
+ }
+ setup(cp);
+ } else if (argc != 2) {
setup(getpass("Enter key:"));
}
else
@@ -117,7 +138,7 @@ char *argv[];
n2 = 0;
nr2 = 0;
- while((i=getchar()) >=0) {
+ while((i=getchar()) != -1) {
if (secureflg) {
nr1 = deck[n1]&MASK;
nr2 = deck[nr1]&MASK;
@@ -138,6 +159,8 @@ char *argv[];
}
}
}
+
+ return 0;
}
void
@@ -158,16 +181,3 @@ shuffle(deck)
deck[ic] = temp;
}
}
-
-void
-puth( title, cp, len )
-char *title;
-char *cp;
-int len;
-{
- fprintf( stderr, "%s = ", title);
- while( len-- > 0 ) {
- fprintf(stderr, "%2.2x ", (*cp++) & 0xFF );
- }
- fprintf(stderr,"\n");
-}
OpenPOWER on IntegriCloud