8 #include "authcmdlib.h"
10 char authkey[DESKEYLEN];
14 int convert(char*, char*, int);
15 int dofcrypt(int, char*, char*, int);
19 main(int argc, char *argv[])
22 char *p, *file, key[DESKEYLEN];
40 /* get original key */
42 print("enter password file is encoded with\n");
43 getpass(authkey, nil, 0, 1);
47 print("enter password to reencode with\n");
48 getpass(key, nil, 0, 1);
51 fd = open(file, ORDWR);
53 error("can't open %s: %r\n", file);
56 error("can't stat %s: %r\n", file);
60 error("out of memory");
61 if(read(fd, p, len) != len)
62 error("can't read key file: %r\n");
63 len = convert(p, key, len);
66 if(pwrite(fd, p, len, 0) != len)
67 error("can't write key file: %r\n");
73 randombytes(uchar *p, int len)
77 fd = open("/dev/random", OREAD);
79 fprint(2, "convkeys: can't open /dev/random, using rand()\n");
81 for(i = 0; i < len; i++)
90 oldCBCencrypt(char *key7, char *p, int len)
97 des56to64((uchar*)key7, key);
98 setupDESstate(&s, key, ivec);
99 desCBCencrypt((uchar*)p, len, &s);
103 oldCBCdecrypt(char *key7, char *p, int len)
110 des56to64((uchar*)key7, key);
111 setupDESstate(&s, key, ivec);
112 desCBCdecrypt((uchar*)p, len, &s);
122 for (; *s != '\0'; s += n) {
123 n = chartorune(&r, s);
124 if (n == 1 && r == Runeerror)
131 convert(char *p, char *key, int len)
137 fprint(2, "convkeys: file odd length; not converting %d bytes\n",
139 len -= len % KEYDBLEN;
142 oldCBCdecrypt(authkey, p, len);
143 for(i = KEYDBOFF; i < len; i += KEYDBLEN)
144 if (badname(&p[i])) {
145 print("bad name %.30s... - aborting\n", &p[i]);
149 for(i = KEYDBOFF; i < len; i += KEYDBLEN)
150 print("%s\n", &p[i]);
152 randombytes((uchar*)p, 8);
153 oldCBCencrypt(key, p, len);
160 fprint(2, "usage: convkeys keyfile\n");