home *** CD-ROM | disk | FTP | other *** search
/ gondwana.ecr.mu.oz.au/pub/ / Graphics.tar / Graphics / athena / eBones-p9.patch.Z / eBones-p9.patch
Text File  |  1990-10-25  |  39KB  |  1,409 lines

  1. diff -r -c ../oBones/src/Imakefile src/Imakefile
  2. *** ../oBones/src/Imakefile    Wed Nov  8 00:39:57 1989
  3. --- src/Imakefile    Tue Sep 11 10:37:28 1990
  4. ***************
  5. *** 25,31 ****
  6. --- 25,36 ----
  7.       make ${MFLAGS} regression
  8.   
  9.   # add more simple regression tests here.
  10. + #ifdef NOENCRYPTION
  11.   regression:
  12. + #else
  13. + regression:
  14. +     lib/des/destest
  15. + #endif
  16.   
  17.   
  18.   clean-imake:
  19. diff -r -c ../oBones/src/Makefile src/Makefile
  20. *** ../oBones/src/Makefile    Tue Oct  3 06:37:39 1989
  21. --- src/Makefile    Tue Sep 11 12:22:06 1990
  22. ***************
  23. *** 156,162 ****
  24.   # add more simple regression tests here.
  25.   
  26.   regression:
  27. !     lib/des/verify
  28.   
  29.   clean-imake:
  30.       cd util/imake; make clean
  31. --- 156,162 ----
  32.   # add more simple regression tests here.
  33.   
  34.   regression:
  35. !     lib/des/destest
  36.   
  37.   clean-imake:
  38.       cd util/imake; make clean
  39. diff -r -c ../oBones/src/admin/kdb_edit.c src/admin/kdb_edit.c
  40. *** ../oBones/src/admin/kdb_edit.c    Mon Sep 10 16:08:45 1990
  41. --- src/admin/kdb_edit.c    Mon Sep 10 16:31:29 1990
  42. ***************
  43. *** 242,260 ****
  44. --- 242,273 ----
  45.           }
  46.           /* password */
  47.           if (editpw) {
  48. + #ifdef NOENCRYPTION
  49.           placebo_read_pw_string(pw_str, sizeof pw_str,
  50.               "\nNew Password: ", TRUE);
  51. + #else
  52. +                 des_read_pw_string(pw_str, sizeof pw_str,
  53. +             "\nNew Password: ", TRUE);
  54. + #endif
  55.           if (!strcmp(pw_str, "RANDOM")) {
  56.               printf("\nRandom password [y] ? ");
  57.               gets(temp);
  58.               if (!strcmp("n", temp) || !strcmp("N", temp)) {
  59.               /* no, use literal */
  60. + #ifdef NOENCRYPTION
  61.               bzero(new_key, sizeof(C_Block));
  62.               new_key[0] = 127;
  63. + #else
  64. +             string_to_key(pw_str, new_key);
  65. + #endif
  66.               bzero(pw_str, sizeof pw_str);    /* "RANDOM" */
  67.               } else {
  68. + #ifdef NOENCRYPTION
  69.               bzero(new_key, sizeof(C_Block));
  70.               new_key[0] = 127;
  71. + #else
  72. +             random_key(new_key);
  73. + #endif
  74.               bzero(pw_str, sizeof pw_str);
  75.               }
  76.           } else if (!strcmp(pw_str, "NULL")) {
  77. ***************
  78. *** 262,269 ****
  79. --- 275,286 ----
  80.               gets(temp);
  81.               if (!strcmp("n", temp) || !strcmp("N", temp)) {
  82.               /* no, use literal */
  83. + #ifdef NOENCRYPTION
  84.               bzero(new_key, sizeof(C_Block));
  85.               new_key[0] = 127;
  86. + #else
  87. +             string_to_key(pw_str, new_key);
  88. + #endif
  89.               bzero(pw_str, sizeof pw_str);    /* "NULL" */
  90.               } else {
  91.   
  92. ***************
  93. *** 272,279 ****
  94. --- 289,300 ----
  95.               goto null_key;
  96.               }
  97.           } else {
  98. + #ifdef NOENCRYPTION
  99.               bzero(new_key, sizeof(C_Block));
  100.               new_key[0] = 127;
  101. + #else
  102. +             string_to_key(pw_str,new_key);
  103. + #endif
  104.               bzero(pw_str, sizeof pw_str);
  105.           }
  106.   
  107. diff -r -c ../oBones/src/admin/kdb_init.c src/admin/kdb_init.c
  108. *** ../oBones/src/admin/kdb_init.c    Wed Nov  8 00:38:33 1989
  109. --- src/admin/kdb_init.c    Mon Sep 10 16:32:17 1990
  110. ***************
  111. *** 137,144 ****
  112. --- 137,148 ----
  113.       principal.key_high = 0;
  114.       break;
  115.       case RANDOM_KEY:
  116. + #ifdef NOENCRYPTION
  117.       bzero(new_key, sizeof(C_Block));
  118.       new_key[0] = 127;
  119. + #else
  120. +     random_key(new_key);
  121. + #endif
  122.       kdb_encrypt_key (new_key, new_key, master_key, master_key_schedule,
  123.                ENCRYPT);
  124.       bcopy(new_key, &principal.key_low, 4);
  125. diff -r -c ../oBones/src/admin/kdb_util.c src/admin/kdb_util.c
  126. *** ../oBones/src/admin/kdb_util.c    Mon Sep 10 16:09:44 1990
  127. --- src/admin/kdb_util.c    Mon Sep 10 16:33:12 1990
  128. ***************
  129. *** 386,391 ****
  130. --- 386,396 ----
  131.     bcopy((char *)&(p->key_low), (char *)key, 4);
  132.     bcopy((char *)&(p->key_high), (char *)(((long *) key) + 1), 4);
  133.   
  134. + #ifndef NOENCRYPTION
  135. +   des_pcbc_encrypt((des_cblock *)key,(des_cblock *)key,
  136. +     (long)sizeof(des_cblock),master_key_schedule,
  137. +     (des_cblock *)master_key_schedule,DECRYPT);
  138. + #endif
  139.   
  140.     /* make new key, new style */
  141.     kdb_encrypt_key (key, key, master_key, master_key_schedule, ENCRYPT);
  142. ***************
  143. *** 431,436 ****
  144. --- 436,445 ----
  145.     bcopy((char *)&principal_data[0].key_low, (char *)key_from_db, 4);
  146.     bcopy((char *)&principal_data[0].key_high,
  147.       (char *)(((long *) key_from_db) + 1), 4);
  148. + #ifndef NOENCRYPTION
  149. +   des_pcbc_encrypt(key_from_db,key_from_db,(long)sizeof(key_from_db),
  150. +     master_key_schedule,(des_cblock *)master_key_schedule,DECRYPT);
  151. + #endif
  152.     /* the decrypted database key had better equal the master key */
  153.     n = bcmp((char *) master_key, (char *) key_from_db,
  154.          sizeof(master_key));
  155. diff -r -c ../oBones/src/appl/bsd/login.c src/appl/bsd/login.c
  156. *** ../oBones/src/appl/bsd/login.c    Mon Sep 10 16:06:55 1990
  157. --- src/appl/bsd/login.c    Tue Sep 11 14:02:05 1990
  158. ***************
  159. *** 333,339 ****
  160. --- 333,343 ----
  161.           int krbval;
  162.           char realm[REALM_SZ];
  163.           int kpass_ok,lpass_ok;
  164. + #ifdef NOENCRYPTION
  165.   #define read_long_pw_string placebo_read_pw_string
  166. + #else
  167. + #define read_long_pw_string des_read_pw_string
  168. + #endif
  169.           int read_long_pw_string();
  170.   #endif
  171.           ioctlval = 0;
  172. diff -r -c ../oBones/src/appl/bsd/rcp.c src/appl/bsd/rcp.c
  173. *** ../oBones/src/appl/bsd/rcp.c    Wed Nov  8 00:38:44 1989
  174. --- src/appl/bsd/rcp.c    Tue Sep 11 15:01:17 1990
  175. ***************
  176. *** 66,74 ****
  177. --- 66,82 ----
  178.   char    krb_realm[REALM_SZ];
  179.   void    try_normal();
  180.   char    **save_argv(), *strsave(), *krb_realmofhost();
  181. + #ifdef NOENCRYPTION
  182.   #define    des_read    read
  183.   #define    des_write    write
  184. + #else
  185. + int encryptflag=0;
  186. + #endif
  187. + #ifdef ultrix
  188. + #define    UCB_RCP    "/usr/ucb/rcp.ucb"
  189. + #else
  190.   #define    UCB_RCP    "/bin/rcp.ucb"
  191. + #endif
  192.   #else /* !KERBEROS */
  193.   #define    des_read    read
  194.   #define    des_write    write
  195. ***************
  196. *** 162,167 ****
  197. --- 170,180 ----
  198.                 usage();
  199.               strncpy(krb_realm,*argv,REALM_SZ);
  200.               goto next_arg;
  201. + #ifndef NOENCRYPTION
  202. +             case 'x':
  203. +             encryptflag++;
  204. +                 break;
  205. + #endif
  206.   #endif KERBEROS
  207.               /* The rest of these are not for users. */
  208.               case 'd':
  209. ***************
  210. *** 204,210 ****
  211. --- 217,227 ----
  212.   #ifdef KERBEROS
  213.       (void) sprintf(cmd, "rcp%s%s%s%s",
  214.                  iamrecursive ? " -r" : "", pflag ? " -p" : "", 
  215. + #ifdef NOENCRYPTION
  216.                  "",
  217. + #else
  218. +                encryptflag?" -x":"",
  219. + #endif
  220.                  targetshouldbedirectory ? " -d" : "");
  221.   #else /* !KERBEROS */
  222.       (void) sprintf(cmd, "rcp%s%s%s",
  223. ***************
  224. *** 322,327 ****
  225. --- 339,349 ----
  226.           (rem == -1) ? "rcmd protocol failure" : krb_err_txt[rem]);
  227.                           rem = -1;
  228.                       } else {
  229. + #ifndef NOENCRYPTION
  230. +                         if (encryptflag)
  231. +                             send_auth(host,krb_realm);
  232. + #endif
  233.                       }
  234.                       if (rem<0)
  235.                           try_normal(orig_argv);
  236. ***************
  237. *** 421,426 ****
  238. --- 443,453 ----
  239.           (rem == -1) ? "rcmd protocol failure" : krb_err_txt[rem]);
  240.                       rem = -1;
  241.                   } else {
  242. + #ifndef NOENCRYPTION
  243. +                     if (encryptflag)
  244. +                         send_auth(host,krb_realm);
  245. + #endif
  246.                   }
  247.                   if (rem<0)
  248.                       try_normal(orig_argv);
  249. ***************
  250. *** 944,950 ****
  251. --- 971,981 ----
  252.   {
  253.   #ifdef KERBEROS
  254.           fprintf(stderr,
  255. + #ifdef NOENCRYPTION
  256.   "Usage: rcp [-p] [-k realm] f1 f2; or:\n\trcp [-r] [-p] [-k realm] f1 ... fn d2\n");
  257. + #else
  258. + "Usage: rcp [-p] [-x] [-k realm] f1 f2; or:\n\trcp [-r] [-p] [-x] [-k realm] f1 ... fn d2\n");
  259. + #endif
  260.   #else /* !KERBEROS */
  261.       fputs("usage: rcp [-p] f1 f2; or: rcp [-rp] f1 ... fn d2\n", stderr);
  262.   #endif
  263. ***************
  264. *** 978,983 ****
  265. --- 1009,1018 ----
  266.   {
  267.       register int i;
  268.   
  269. + #ifndef NOENCRYPTION
  270. +         if (!encryptflag)
  271. + #endif
  272. +         {
  273.           fprintf(stderr,"trying normal rcp (%s)\n", UCB_RCP);
  274.           fflush(stderr);
  275.           /* close all but stdin, stdout, stderr */
  276. ***************
  277. *** 985,990 ****
  278. --- 1020,1026 ----
  279.               (void) close(i);
  280.           execv(UCB_RCP, argv);
  281.           perror("exec");
  282. +         }
  283.       exit(1);
  284.   }
  285.   
  286. ***************
  287. *** 1018,1022 ****
  288. --- 1054,1144 ----
  289.       return(ret);
  290.   }
  291.   
  292. + #ifndef NOENCRYPTION
  293. + int send_auth(h,r)
  294. + char *h;
  295. + char *r;
  296. +     {
  297. +     int lslen,fslen,i;
  298. +     long opts;
  299. +     lslen=sizeof(struct sockaddr_in);
  300. +     if (getsockname(sock,&local,&lslen) < 0)
  301. +         {
  302. +         perror("getsockname");
  303. +         exit(1);
  304. +         }
  305. +     fslen=sizeof(struct sockaddr_in);
  306. +     if (getpeername(sock,&foreign,&fslen) < 0)
  307. +         {
  308. +         perror("getpeername");
  309. +         exit(1);
  310. +         }
  311. +     if ((r == NULL) || (*r == '\0'))
  312. +         r=krb_realmofhost(h);
  313. +     opts=KOPT_DO_MUTUAL;
  314. +     if ((rem=krb_sendauth(opts,sock,&ticket,"rcmd",h,r,
  315. +         (unsigned long)getpid(),&msg_data,&cred,schedule,&local,
  316. +         &foreign,"KCMDV0.1")) != KSUCCESS)
  317. +         {
  318. +         fprintf(stderr,"krb_sendauth failure: %s\n",
  319. +             krb_err_txt[rem]);
  320. +         exit(1);
  321. +         }
  322. +     }
  323. + int answer_auth()
  324. +     {
  325. +     int lslen,fslen,status;
  326. +     long opts;
  327. +     char inst[INST_SZ],v[9];
  328. +     lslen=sizeof(struct sockaddr_in);
  329. +     if (getsockname(rem,&local,&lslen) < 0)
  330. +         {
  331. +         perror("getsockname");
  332. +         exit(1);
  333. +         }
  334. +     fslen=sizeof(struct sockaddr_in);
  335. +     if(getpeername(rem,&foreign,&fslen) < 0)
  336. +         {
  337. +         perror("getperrname");
  338. +         exit(1);
  339. +         }
  340. +     strcpy(inst,"*");
  341. +     opts=KOPT_DO_MUTUAL;
  342. +     if ((status=krb_recvauth(opts,rem,&ticket,"rcmd",inst,&foreign,&local,
  343. +         &kdata,"",schedule,v)) != KSUCCESS)
  344. +         {
  345. +         fprintf(stderr,"krb_recvauth failure: %s\n",
  346. +             krb_err_txt[status]);
  347. +         exit(1);
  348. +         }
  349. +     }
  350. + int des_read(fd,buf,len)
  351. + int fd;
  352. + char *buf;
  353. + int len;
  354. +         {
  355. +         if (encryptflag)
  356. +                 return(des_enc_read(fd,buf,len,schedule,
  357. +             (iamremote?kdata.session:cred.session)));
  358. +         else
  359. +                 return(read(fd,buf,len));
  360. +         }
  361. + int des_write(fd,buf,len)
  362. + int fd;
  363. + char *buf;
  364. + int len;
  365. +         {
  366. +         if (encryptflag)
  367. +                 return(des_enc_write(fd,buf,len,schedule,
  368. +             (iamremote?kdata.session:cred.session)));
  369. +         else
  370. +                 return(write(fd,buf,len));
  371. +         }
  372. + #endif
  373.   
  374.   #endif KERBEROS
  375. diff -r -c ../oBones/src/appl/bsd/rlogin.c src/appl/bsd/rlogin.c
  376. *** ../oBones/src/appl/bsd/rlogin.c    Mon Sep 10 15:42:33 1990
  377. --- src/appl/bsd/rlogin.c    Tue Sep 11 10:49:40 1990
  378. ***************
  379. *** 114,121 ****
  380. --- 114,125 ----
  381.   #ifdef KERBEROS
  382.   void try_normal();
  383.   char krb_realm[REALM_SZ];
  384. + #ifndef NOENCRYPTION
  385. + int encryptflag=0;
  386. + #else
  387.   #define des_read read
  388.   #define des_write write
  389. + #endif
  390.   CREDENTIALS cred;
  391.   Key_schedule schedule;
  392.   MSG_DAT msg_data;
  393. ***************
  394. *** 261,266 ****
  395. --- 265,279 ----
  396.           argv++, argc--;
  397.           goto another;
  398.       }
  399. + #ifndef NOENCRYPTION
  400. +     if ((argc > 0) && (strcmp(*argv,"-x") == 0))
  401. +         {
  402. +         encryptflag++;
  403. +         argv++;
  404. +         argc--;
  405. +         goto another;
  406. +         }
  407. + #endif
  408.   #endif KERBEROS
  409.       if (host == 0)
  410.           goto usage;
  411. ***************
  412. *** 277,285 ****
  413. --- 290,308 ----
  414.        * attempt to login with Kerberos. 
  415.        * If we fail at any step,  use the standard rlogin
  416.        */
  417. + #ifndef NOENCRYPTION
  418. +     if (encryptflag)
  419. +         sp=getservbyname("eklogin","tcp");
  420. +     else
  421. + #endif
  422.           sp = getservbyname("klogin","tcp");
  423.       if (sp == 0) {
  424. + #ifdef NOENCRYPTION
  425.           fprintf(stderr, "rlogin: klogin/tcp: unknown service\n");
  426. + #else
  427. +         fprintf(stderr,"rlogin: %s/tcp: unknown service\n",
  428. +             encryptflag?"eklogin":"klogin");
  429. + #endif
  430.           
  431.           try_normal(orig_argv);
  432.       }
  433. ***************
  434. *** 308,313 ****
  435. --- 331,340 ----
  436.   
  437.   #ifdef KERBEROS
  438.       rem=KSUCCESS;
  439. + #ifndef NOENCRYPTION
  440. +     if (encryptflag) authopts=KOPT_DO_MUTUAL;
  441. +     else
  442. + #endif
  443.       {
  444.   #ifdef ATHENA_COMPAT
  445.           authopts = KOPT_DO_OLDSTYLE;
  446. ***************
  447. *** 381,387 ****
  448. --- 408,418 ----
  449.   #ifdef ATHENA
  450.       fprintf (stderr,
  451.   "usage: rlogin host [-option] [-option...] [-k realm ] [-t ttytype] [-l username]\n");
  452. + #ifdef NOENCRYPTION
  453.           fprintf (stderr, "     where option is e, 7, 8, noflow, n, a, or c\n");
  454. + #else
  455. +         fprintf (stderr, "     where option is e, 7, 8, noflow, n, a, c or x\n");
  456. + #endif
  457.   #else !ATHENA
  458.       fprintf (stderr,
  459.   "usage: rlogin host [ -ex ] [-k realm ] [-l username] [ -8 ] [ -L ]\n");
  460. ***************
  461. *** 937,942 ****
  462. --- 968,976 ----
  463.   {
  464.       register char *host;
  465.   
  466. + #ifndef NOENCRYPTION
  467. +     if (encryptflag) exit(1);
  468. + #endif
  469.       fprintf(stderr,"trying normal rlogin (%s)\n",
  470.           UCB_RLOGIN);
  471.       fflush(stderr);
  472. ***************
  473. *** 962,964 ****
  474. --- 996,1022 ----
  475.       prf("\007Connection closed.");
  476.       done(1);
  477.   }
  478. + #ifndef NOENCRYPTION
  479. + int des_read(fd,buf,len)
  480. + int fd;
  481. + char *buf;
  482. + int len;
  483. +     {
  484. +     if (encryptflag)
  485. +         return(des_enc_read(fd,buf,len,schedule,cred.session));
  486. +     else
  487. +         return(read(fd,buf,len));
  488. +     }
  489. + int des_write(fd,buf,len)
  490. + int fd;
  491. + char *buf;
  492. + int len;
  493. +     {
  494. +     if (encryptflag)
  495. +         return(des_enc_write(fd,buf,len,schedule,cred.session));
  496. +     else
  497. +         return(write(fd,buf,len));
  498. +     }
  499. + #endif
  500. diff -r -c ../oBones/src/appl/bsd/rlogind.c src/appl/bsd/rlogind.c
  501. *** ../oBones/src/appl/bsd/rlogind.c    Wed Nov  8 00:38:46 1989
  502. --- src/appl/bsd/rlogind.c    Tue Sep 11 12:24:10 1990
  503. ***************
  504. *** 75,82 ****
  505. --- 75,87 ----
  506.   KTEXT        ticket;
  507.   Key_schedule    schedule;
  508.   void        do_krb_login();
  509. + #ifdef NOENCRYPTION
  510.   #define    des_read    read
  511.   #define    des_write    write
  512. + #else
  513. + #define des_read(a,b,c)        ((eklogin)?des_enc_read(a,b,c,schedule,kdata->session):read(a,b,c))
  514. + #define des_write(a,b,c)    ((eklogin)?des_enc_write(a,b,c,schedule,kdata->session):write(a,b,c))
  515. + #endif
  516.   #else /* !KERBEROS */
  517.   #define    des_read    read
  518.   #define    des_write    write
  519. ***************
  520. *** 117,124 ****
  521. --- 122,135 ----
  522.        * If the name of the program is "eklogind", all data passing over
  523.        * the network pipe are encrypted.
  524.        */
  525. + #ifdef NOENCRYPTION
  526.       klogin = (!strcmp(*argv,"eklogind") ||
  527.             !strcmp(*argv,"klogind"));    /* pass -k flag to login */
  528. + #else
  529. +     eklogin=!strcmp(*argv,"eklogind");
  530. +     klogin=!strcmp(*argv,"klogind");
  531. + #endif
  532.       Klogin = !strcmp(*argv,"Klogind");    /* pass -K flag to login */
  533.       /* 
  534.        * if klogin, Klogin, and eklogin are zero (ie, the program name was
  535. ***************
  536. *** 126,136 ****
  537. --- 137,157 ----
  538.        */
  539.   
  540.   #ifndef LOG_AUTH /* 4.2 syslog */
  541. + #ifdef NOENCRYPTION
  542.       openlog(klogin ? "klogind" : (Klogin ? "Klogind" : "rlogind"),
  543.           LOG_PID);
  544.   #else
  545. +     openlog(eklogin?"eklogind":(klogin?"klogind":
  546. +         (Klogin?"Klogind":"rlogind")),LOG_PID);
  547. + #endif
  548. + #else
  549. + #ifdef NOENCRYPTION
  550.       openlog(klogin ? "klogind" : (Klogin ? "Klogind" : "rlogind"),
  551.           LOG_PID | LOG_AUTH, LOG_AUTH);
  552. + #else
  553. +        openlog(eklogin ? "eklogind" : (klogin ? "klogind" :
  554. +            (Klogin ? "Klogind" : "rlogind")),LOG_PID|LOG_AUTH,LOG_AUTH);
  555. + #endif
  556.   #endif /* 4.2 syslog */
  557.   #else
  558.   #ifndef LOG_AUTH /* 4.2 syslog */
  559. ***************
  560. *** 187,193 ****
  561. --- 208,218 ----
  562.   #ifdef KERBEROS
  563.       /* Don't care about reserved port for kerberos logins */
  564.       if (fromp->sin_family != AF_INET ||
  565. + #ifdef NOENCRYPTION
  566.           (!klogin && !Klogin &&
  567. + #else
  568. +         (!klogin && !Klogin && !eklogin &&
  569. + #endif
  570.            (fromp->sin_port >= IPPORT_RESERVED ||
  571.            fromp->sin_port < IPPORT_RESERVED/2)))
  572.   #else /* !KERBEROS */
  573. ***************
  574. *** 279,284 ****
  575. --- 304,321 ----
  576.               execl(LOGIN_PROGRAM, "login", "-k", hp->h_name, 0);
  577.           } else if (Klogin) {
  578.               execl(LOGIN_PROGRAM, "login", "-K", hp->h_name, 0);
  579. + #ifndef NOENCRYPTION
  580. +         } else if (eklogin)
  581. +             {
  582. +             struct passwd *pw;
  583. +             pw=getpwnam(lusername);
  584. +             if ((pw != NULL) && (pw->pw_uid == 0))
  585. +                 syslog(LOG_INFO,"root login (eklogin) from %s (%s.%s@%s",
  586. +                     hp->h_name,kdata->pname,kdata->pinst,
  587. +                     kdata->prealm);
  588. +             execl(LOGIN_PROGRAM,"login","-e",lusername,0);
  589. + #endif
  590.           } else {
  591.               execl(LOGIN_PROGRAM, "login", "-r", hp->h_name, 0);
  592.           }
  593. diff -r -c ../oBones/src/appl/sample/simple_client.c src/appl/sample/simple_client.c
  594. *** ../oBones/src/appl/sample/simple_client.c    Wed Nov  8 00:38:40 1989
  595. --- src/appl/sample/simple_client.c    Mon Sep 10 17:12:27 1990
  596. ***************
  597. *** 165,171 ****
  598. --- 165,176 ----
  599.   
  600.       /* PREPARE KRB_MK_PRIV MESSAGE */
  601.   
  602. + #ifdef NOENCRYPTION
  603.       bzero((char *)sched, sizeof(sched));
  604. + #else
  605. +     /* Get key schedule for session key */
  606. +     des_key_sched(cred->session, sched);
  607. + #endif
  608.   
  609.       /* Make the encrypted message */
  610.       len = krb_mk_priv(MSG, ktxt->dat, strlen(MSG)+1,
  611. diff -r -c ../oBones/src/appl/sample/simple_server.c src/appl/sample/simple_server.c
  612. *** ../oBones/src/appl/sample/simple_server.c    Wed Nov  8 00:38:40 1989
  613. --- src/appl/sample/simple_server.c    Mon Sep 10 17:13:26 1990
  614. ***************
  615. *** 135,141 ****
  616. --- 135,146 ----
  617.       
  618.       /* NOW GET ENCRYPTED MESSAGE */
  619.   
  620. + #ifdef NOENCRYPTION
  621.       bzero((char *)sched, sizeof(sched));
  622. + #else
  623. +     /* need key schedule for session key */
  624. +     des_key_sched(ad.session, sched);
  625. + #endif
  626.   
  627.       /* use "recvfrom" so we know client's address */
  628.       i = sizeof(c_sock);
  629. diff -r -c ../oBones/src/kadmin/kadm_ser_wrap.c src/kadmin/kadm_ser_wrap.c
  630. *** ../oBones/src/kadmin/kadm_ser_wrap.c    Wed Nov  8 00:39:52 1989
  631. --- src/kadmin/kadm_ser_wrap.c    Mon Sep 10 17:18:51 1990
  632. ***************
  633. *** 136,148 ****
  634. --- 136,156 ----
  635.   #define clr_cli_secrets() {bzero((char *)sess_sched, sizeof(sess_sched)); bzero((char *)ad.session, sizeof(ad.session));}
  636.   
  637.       in_st = *dat + *dat_len - r_len;
  638. + #ifdef NOENCRYPTION
  639.       ncksum = 0;
  640. + #else
  641. +     ncksum = quad_cksum(in_st, (u_long *)0, (long) r_len, 0, ad.session);
  642. + #endif
  643.       if (ncksum!=ad.checksum) {        /* yow, are we correct yet */
  644.       clr_cli_secrets();
  645.       errpkt(dat, dat_len,KADM_BAD_CHK);
  646.       return KADM_BAD_CHK;
  647.       }
  648. + #ifdef NOENCRYPTION
  649.       bzero(sess_sched, sizeof(sess_sched));
  650. + #else
  651. +     des_key_sched(ad.session, sess_sched);
  652. + #endif
  653.       if (retc = (int) krb_rd_priv(in_st, r_len, sess_sched, ad.session, 
  654.                    &server_parm.recv_addr,
  655.                    &server_parm.admin_addr, &msg_st)) {
  656. diff -r -c ../oBones/src/kadmin/kadmin.c src/kadmin/kadmin.c
  657. *** ../oBones/src/kadmin/kadmin.c    Wed Nov  8 00:39:49 1989
  658. --- src/kadmin/kadmin.c    Tue Sep 11 12:26:45 1990
  659. ***************
  660. *** 489,495 ****
  661. --- 489,499 ----
  662.       }
  663.   }
  664.   
  665. + #ifdef NOENCRYPTION
  666.   #define read_long_pw_string placebo_read_pw_string
  667. + #else
  668. + #define read_long_pw_string des_read_pw_string
  669. + #endif
  670.   extern int read_long_pw_string();
  671.   
  672.   int
  673. ***************
  674. *** 599,605 ****
  675. --- 603,613 ----
  676.           printf("Null passwords are not allowed; try again.\n");
  677.       } while (strlen(new_passwd) == 0);
  678.   
  679. + #ifdef NOENCRYPTION
  680.       bzero((char *) newkey, sizeof(newkey));
  681. + #else
  682. +     des_string_to_key(new_passwd, newkey);
  683. + #endif
  684.       bzero(new_passwd, sizeof(new_passwd));
  685.   
  686.       bcopy((char *) newkey,(char *)low,4);
  687. ***************
  688. *** 607,613 ****
  689. --- 615,623 ----
  690.   
  691.       bzero((char *) newkey, sizeof(newkey));
  692.   
  693. + #ifdef NOENCRYPTION
  694.       *low = 1;
  695. + #endif
  696.   
  697.       if (byteswap != DONTSWAP) {
  698.       *low = htonl(*low);
  699. diff -r -c ../oBones/src/kadmin/kpasswd.c src/kadmin/kpasswd.c
  700. *** ../oBones/src/kadmin/kpasswd.c    Wed Nov  8 00:39:50 1989
  701. --- src/kadmin/kpasswd.c    Mon Sep 10 17:24:50 1990
  702. ***************
  703. *** 51,57 ****
  704. --- 51,61 ----
  705.       
  706.       void get_pw_new_key();
  707.       
  708. + #ifdef NOENCRYPTION
  709.   #define read_long_pw_string placebo_read_pw_string
  710. + #else
  711. + #define read_long_pw_string des_read_pw_string
  712. + #endif
  713.       int read_long_pw_string();
  714.       
  715.       bzero(name, sizeof(name));
  716. ***************
  717. *** 211,218 ****
  718. --- 215,226 ----
  719.           printf("Null passwords are not allowed; try again.\n");
  720.       } while (strlen(pword) == 0);
  721.       
  722. + #ifdef NOENCRYPTION
  723.       bzero((char *) new_key, sizeof(des_cblock));
  724.       new_key[0] = (unsigned char) 1;
  725. + #else
  726. +     (void) des_string_to_key(pword, new_key);
  727. + #endif
  728.       bzero(pword, sizeof(pword));
  729.   }
  730.   
  731. diff -r -c ../oBones/src/kadmin/ksrvutil.c src/kadmin/ksrvutil.c
  732. *** ../oBones/src/kadmin/ksrvutil.c    Wed Nov  8 00:39:53 1989
  733. --- src/kadmin/ksrvutil.c    Tue Sep 11 11:02:30 1990
  734. ***************
  735. *** 37,43 ****
  736. --- 37,47 ----
  737.   #include <errno.h>
  738.   #include <kadm.h>
  739.   
  740. + #ifdef NOENCRYPTION
  741.   #define read_long_pw_string placebo_read_pw_string
  742. + #else /* NOENCRYPTION */
  743. + #define read_long_pw_string des_read_pw_string
  744. + #endif /* NOENCRYPTION */
  745.   int read_long_pw_string();
  746.   
  747.   #define SRVTAB_MODE 0600    /* rw------- */
  748. ***************
  749. *** 556,563 ****
  750. --- 560,571 ----
  751.                         KADM_SINST, 1, keyfile)) == KSUCCESS) &&
  752.       ((status = kadm_init_link("changepw", KRB_MASTER, srealm)) == 
  753.        KADM_SUCCESS)) {
  754. + #ifdef NOENCRYPTION
  755.       (void) bzero((char *) new_key, sizeof(des_cblock));
  756.       new_key[0] = (unsigned char) 1;
  757. + #else /* NOENCRYPTION */
  758. +     (void) des_random_key(new_key);
  759. + #endif /* NOENCRYPTION */
  760.       return(KADM_SUCCESS);
  761.       }
  762.       
  763. ***************
  764. *** 573,580 ****
  765. --- 581,592 ----
  766.       if (read_long_pw_string(password, sizeof(password)-1, "Password: ", 1))
  767.       leave("Error reading password.", 1);
  768.   
  769. + #ifdef NOENCRYPTION
  770.       (void) bzero((char *) key, sizeof(des_cblock));
  771.       key[0] = (unsigned char) 1;
  772. + #else /* NOENCRYPTION */
  773. +     (void) des_string_to_key(password, key);
  774. + #endif /* NOENCRYPTION */
  775.       (void) bzero((char *)password, sizeof(password));
  776.   }    
  777.   
  778. diff -r -c ../oBones/src/kuser/ksu.c src/kuser/ksu.c
  779. *** ../oBones/src/kuser/ksu.c    Wed Nov  8 00:38:52 1989
  780. --- src/kuser/ksu.c    Tue Sep 11 08:39:04 1990
  781. ***************
  782. *** 89,95 ****
  783. --- 89,99 ----
  784.       char *user, *shell, *username, *cleanenv[2], *nargv[4], **np;
  785.       char namebuf[50], shellbuf[MAXPATHLEN];
  786.       char *crypt(), *getpass(), *getenv(), *getlogin(), *rindex(), *strcpy();
  787. + #ifdef NOENCRYPTION
  788.   #define read_long_pw_string placebo_read_pw_string
  789. + #else
  790. + #define read_long_pw_string des_read_pw_string
  791. + #endif
  792.       int read_long_pw_string();
  793.       char pw_buf[MAXPWSIZE];
  794.       char   *mytty;
  795. diff -r -c ../oBones/src/lib/Imakefile src/lib/Imakefile
  796. *** ../oBones/src/lib/Imakefile    Wed Nov  8 00:39:22 1989
  797. --- src/lib/Imakefile    Tue Sep 11 08:40:28 1990
  798. ***************
  799. *** 11,14 ****
  800. --- 11,18 ----
  801.   
  802.   #define have_subdirs
  803.   CODE=Imakefile
  804. + #ifdef NOENCRYPTION
  805.   SUBDIRS= krb kdb kadm knet acl
  806. + #else /* Do encryption */
  807. + SUBDIRS= des krb kdb kadm knet acl
  808. + #endif /* NOENCRYPTION */
  809. diff -r -c ../oBones/src/lib/kadm/kadm_cli_wrap.c src/lib/kadm/kadm_cli_wrap.c
  810. *** ../oBones/src/lib/kadm/kadm_cli_wrap.c    Mon Sep 10 16:00:04 1990
  811. --- src/lib/kadm/kadm_cli_wrap.c    Tue Aug  7 17:14:52 1990
  812. ***************
  813. *** 317,323 ****
  814. --- 317,328 ----
  815.        sizeof(u_long) (for the size indication) from total size */
  816.   
  817.       act_len += vts_long((u_long) priv_len, &act_st, act_len);
  818. + #ifdef NOENCRYPTION
  819.       cksum = 0;
  820. + #else
  821. +     cksum = quad_cksum(priv_pak, (u_long *)0, (long)priv_len, 0,
  822. +                sess_key);
  823. + #endif
  824.       if (retdat = krb_mk_req(&authent, client_parm.sname, client_parm.sinst,
  825.                   client_parm.krbrlm, (long)cksum)) {
  826.           /* authenticator? */
  827. ***************
  828. *** 396,402 ****
  829. --- 401,412 ----
  830.           return stat + krb_err_base;
  831.       bcopy((char *) cred.session, (char *) s_k, sizeof(des_cblock));
  832.       bzero((char *) cred.session, sizeof(des_cblock));
  833. + #ifdef NOENCRYPTION
  834.       bzero(s_s, sizeof(des_key_schedule));
  835. + #else
  836. +     if (stat = key_sched(s_k,s_s))
  837. +         return(stat+krb_err_base);
  838. + #endif
  839.       return KADM_SUCCESS;
  840.   }                       /* This code "works" */
  841.   
  842. diff -r -c ../oBones/src/lib/kdb/krb_kdb_utils.c src/lib/kdb/krb_kdb_utils.c
  843. *** ../oBones/src/lib/kdb/krb_kdb_utils.c    Wed Nov  8 00:39:19 1989
  844. --- src/lib/kdb/krb_kdb_utils.c    Tue Sep 11 08:45:25 1990
  845. ***************
  846. *** 35,42 ****
  847. --- 35,47 ----
  848.     int kfile;
  849.   
  850.     if (prompt)  {
  851. + #ifdef NOENCRYPTION
  852.         placebo_read_password(master_key,
  853.                   "\nEnter Kerberos master key: ", 0);
  854. + #else
  855. +       des_read_password(master_key,
  856. +                  "\nEnter Kerberos master key: ", 0);
  857. + #endif
  858.         printf ("\n");
  859.     }
  860.     else {
  861. ***************
  862. *** 51,56 ****
  863. --- 56,64 ----
  864.       close(kfile);
  865.     }
  866.   
  867. + #ifndef NOENCRYPTION
  868. +   key_sched(master_key,master_key_sched);
  869. + #endif
  870.     return (0);
  871.   }
  872.   
  873. ***************
  874. *** 126,130 ****
  875. --- 134,143 ----
  876.        int e_d_flag;
  877.   {
  878.   
  879. + #ifdef NOENCRYPTION
  880.     bcopy(in, out, sizeof(C_Block));
  881. + #else
  882. +   pcbc_encrypt(in,out,(long)sizeof(C_Block),master_key_sched,master_key,
  883. +      e_d_flag);
  884. + #endif
  885.   }
  886. diff -r -c ../oBones/src/lib/krb/create_ciph.c src/lib/krb/create_ciph.c
  887. *** ../oBones/src/lib/krb/create_ciph.c    Wed Nov  8 00:39:11 1989
  888. --- src/lib/krb/create_ciph.c    Tue Sep 11 12:27:50 1990
  889. ***************
  890. *** 101,106 ****
  891. --- 101,111 ----
  892.   
  893.       c->length = (((ptr - (char *) c->dat) + 7) / 8) * 8;
  894.   
  895. + #ifndef NOENCRYPTION
  896. +     key_sched(key,key_s);
  897. +     pcbc_encrypt((C_Block *)c->dat,(C_Block *)c->dat,(long) c->length,key_s,
  898. +     key,ENCRYPT);
  899. + #endif /* NOENCRYPTION */
  900.   
  901.       return(KSUCCESS);
  902.   }
  903. diff -r -c ../oBones/src/lib/krb/create_ticket.c src/lib/krb/create_ticket.c
  904. *** ../oBones/src/lib/krb/create_ticket.c    Wed Nov  8 00:38:54 1989
  905. --- src/lib/krb/create_ticket.c    Tue Sep 11 11:18:35 1990
  906. ***************
  907. *** 123,127 ****
  908. --- 123,132 ----
  909.           return KFAILURE /* XXX */;
  910.       }
  911.   
  912. + #ifndef NOENCRYPTION
  913. +     key_sched(key,key_s);
  914. +     pcbc_encrypt((C_Block *)tkt->dat,(C_Block *)tkt->dat,(long)tkt->length,
  915. +     key_s,key,ENCRYPT);
  916. + #endif
  917.       return 0;
  918.   }
  919. diff -r -c ../oBones/src/lib/krb/decomp_ticket.c src/lib/krb/decomp_ticket.c
  920. *** ../oBones/src/lib/krb/decomp_ticket.c    Wed Nov  8 00:38:55 1989
  921. --- src/lib/krb/decomp_ticket.c    Tue Sep 11 08:51:30 1990
  922. ***************
  923. *** 68,73 ****
  924. --- 68,77 ----
  925.       unsigned char *uptr;
  926.       char *ptr = (char *)tkt->dat;
  927.   
  928. + #ifndef NOENCRYPTION
  929. +     pcbc_encrypt((C_Block *)tkt->dat,(C_Block *)tkt->dat,(long)tkt->length,
  930. +     key_s,key,DECRYPT);
  931. + #endif /* ! NOENCRYPTION */
  932.   
  933.       *flags = *ptr;              /* get flags byte */
  934.       ptr += sizeof(*flags);
  935. diff -r -c ../oBones/src/lib/krb/get_ad_tkt.c src/lib/krb/get_ad_tkt.c
  936. *** ../oBones/src/lib/krb/get_ad_tkt.c    Wed Nov  8 00:38:57 1989
  937. --- src/lib/krb/get_ad_tkt.c    Tue Sep 11 13:39:33 1990
  938. ***************
  939. *** 182,187 ****
  940. --- 182,192 ----
  941.   
  942.       bcopy((char *) pkt_cipher(rpkt),(char *) (cip->dat),cip->length);
  943.   
  944. + #ifndef NOENCRYPTION
  945. +     key_sched(cr.session,key_s);
  946. +     pcbc_encrypt((C_Block *)cip->dat,(C_Block *)cip->dat,(long)cip->length,
  947. +     key_s,cr.session,DECRYPT);
  948. + #endif
  949.       /* Get rid of all traces of key */
  950.       bzero((char *) cr.session, sizeof(key));
  951.       bzero((char *) key_s, sizeof(key_s));
  952. diff -r -c ../oBones/src/lib/krb/get_in_tkt.c src/lib/krb/get_in_tkt.c
  953. *** ../oBones/src/lib/krb/get_in_tkt.c    Wed Nov  8 00:38:58 1989
  954. --- src/lib/krb/get_in_tkt.c    Tue Sep 11 11:29:40 1990
  955. ***************
  956. *** 49,56 ****
  957. --- 49,63 ----
  958.       char *user, *instance, *realm, *passwd;
  959.       C_Block key;
  960.   {
  961. + #ifdef NOENCRYPTION
  962.       if (!passwd)
  963.       placebo_read_password(key, "Password: ", 0);
  964. + #else
  965. +     if (passwd)
  966. +     string_to_key(passwd,key);
  967. +     else
  968. +     des_read_password(key,"Password: ",0);
  969. + #endif
  970.       return (0);
  971.   }
  972.   
  973. ***************
  974. *** 80,85 ****
  975. --- 87,93 ----
  976.                             passwd_to_key, NULL, password));
  977.   }
  978.   
  979. + #ifdef NOENCRYPTION
  980.   /*
  981.    * $Source: /mit/kerberos/src/lib/krb/RCS/get_in_tkt.c,v $
  982.    * $Author: jtkohl $
  983. ***************
  984. *** 280,282 ****
  985. --- 288,291 ----
  986.       longjmp(env,1);
  987.   }
  988.   #endif
  989. + #endif /* NOENCRYPTION */
  990. diff -r -c ../oBones/src/lib/krb/krb_get_in_tkt.c src/lib/krb/krb_get_in_tkt.c
  991. *** ../oBones/src/lib/krb/krb_get_in_tkt.c    Wed Nov  8 00:39:00 1989
  992. --- src/lib/krb/krb_get_in_tkt.c    Tue Sep 11 13:42:15 1990
  993. ***************
  994. *** 47,52 ****
  995. --- 47,55 ----
  996.       C_Block key;        /* Key for decrypting cipher */
  997.       Key_schedule key_s;
  998.   
  999. + #ifndef NOENCRYPTION
  1000. +     /* Attempt to decrypt it */
  1001. + #endif
  1002.       
  1003.       /* generate a key */
  1004.       
  1005. ***************
  1006. *** 57,62 ****
  1007. --- 60,70 ----
  1008.           return(rc);
  1009.       }
  1010.       
  1011. + #ifndef NOENCRYPTION
  1012. +     key_sched(key,key_s);
  1013. +     pcbc_encrypt((C_Block *)cip->dat,(C_Block *)cip->dat,
  1014. +          (long) cip->length,key_s,key,DES_DECRYPT);
  1015. + #endif /* !NOENCRYPTION */
  1016.       /* Get rid of all traces of key */
  1017.       bzero((char *)key,sizeof(key));
  1018.       bzero((char *)key_s,sizeof(key_s));
  1019. diff -r -c ../oBones/src/lib/krb/mk_priv.c src/lib/krb/mk_priv.c
  1020. *** ../oBones/src/lib/krb/mk_priv.c    Wed Nov  8 00:39:03 1989
  1021. --- src/lib/krb/mk_priv.c    Tue Sep 11 09:19:12 1990
  1022. ***************
  1023. *** 80,85 ****
  1024. --- 80,88 ----
  1025.    *            HOST_BYTE_ORDER        byte order in low bit
  1026.    *
  1027.    * 4 bytes        c_length        length of data
  1028. + #ifndef NOENCRYPT
  1029. +  * we encrypt from here with pcbc_encrypt
  1030. + #endif
  1031.    * 
  1032.    * 4 bytes        length            length of user data
  1033.    * length        in            user data
  1034. ***************
  1035. *** 133,139 ****
  1036. --- 136,146 ----
  1037.       bcopy((char *)&length,(char *)p,sizeof(length));
  1038.       p += sizeof(length);
  1039.   
  1040. + #ifdef NOENCRYPTION
  1041.       /* make all the stuff contiguous for checksum */
  1042. + #else
  1043. +     /* make all the stuff contiguous for checksum and encryption */
  1044. + #endif
  1045.       bcopy((char *)in,(char *)p,(int) length);
  1046.       p += length;
  1047.   
  1048. ***************
  1049. *** 191,196 ****
  1050. --- 198,206 ----
  1051.       /* stuff the length */
  1052.       bcopy((char *) &c_length,(char *)c_length_ptr,sizeof(c_length));
  1053.   
  1054. + #ifndef NOENCRYPTION
  1055. +     pcbc_encrypt((C_Block *)q,(C_Block *)q,(long)(p-q),schedule,key,ENCRYPT);
  1056. + #endif /* NOENCRYPTION */
  1057.   
  1058.       return (q - out + c_length);        /* resulting size */
  1059.   }
  1060. diff -r -c ../oBones/src/lib/krb/mk_req.c src/lib/krb/mk_req.c
  1061. *** ../oBones/src/lib/krb/mk_req.c    Wed Nov  8 00:39:09 1989
  1062. --- src/lib/krb/mk_req.c    Tue Sep 11 09:22:57 1990
  1063. ***************
  1064. *** 155,160 ****
  1065. --- 155,166 ----
  1066.       /* Fill to a multiple of 8 bytes for DES */
  1067.       req_id->length = ((req_id->length+7)/8)*8;
  1068.   
  1069. + #ifndef NOENCRYPTION
  1070. +     key_sched(cr.session,key_s);
  1071. +     pcbc_encrypt((C_Block *)req_id->dat,(C_Block *)req_id->dat,
  1072. +     (long)req_id->length,key_s,cr.session,ENCRYPT);
  1073. +     bzero((char *) key_s, sizeof(key_s));
  1074. + #endif /* NOENCRYPTION */
  1075.   
  1076.       /* Copy it into the authenticator */
  1077.       bcopy((char *)(req_id->dat),(char *)(authent->dat+authent->length),
  1078. diff -r -c ../oBones/src/lib/krb/mk_safe.c src/lib/krb/mk_safe.c
  1079. *** ../oBones/src/lib/krb/mk_safe.c    Wed Nov  8 00:38:59 1989
  1080. --- src/lib/krb/mk_safe.c    Tue Sep 11 09:24:51 1990
  1081. ***************
  1082. *** 153,160 ****
  1083. --- 153,164 ----
  1084.       bcopy((char *)&msg_time_sec,(char *)p,sizeof(msg_time_sec));
  1085.       p += sizeof(msg_time_sec);
  1086.   
  1087. + #ifdef NOENCRYPTION
  1088.       cksum = 0;
  1089.       bzero(big_cksum, sizeof(big_cksum));
  1090. + #else
  1091. +     cksum=quad_cksum(q,big_cksum,p-q,2,key);
  1092. + #endif
  1093.       if (krb_debug)
  1094.           printf("\ncksum = %u",cksum);
  1095.   
  1096. diff -r -c ../oBones/src/lib/krb/rd_priv.c src/lib/krb/rd_priv.c
  1097. *** ../oBones/src/lib/krb/rd_priv.c    Wed Nov  8 00:39:08 1989
  1098. --- src/lib/krb/rd_priv.c    Tue Sep 11 09:27:20 1990
  1099. ***************
  1100. *** 111,116 ****
  1101. --- 111,119 ----
  1102.   
  1103.       q = p;            /* mark start of encrypted stuff */
  1104.   
  1105. + #ifndef NOENCRYPTION
  1106. +     pcbc_encrypt((C_Block *)q,(C_Block *)q,(long)c_length,schedule,key,DECRYPT);
  1107. + #endif
  1108.   
  1109.       /* safely get application data length */
  1110.       bcopy((char *) p,(char *)&(m_data->app_length),
  1111. ***************
  1112. *** 125,130 ****
  1113. --- 128,136 ----
  1114.           > in_length)
  1115.           return RD_AP_MODIFIED;
  1116.   
  1117. + #ifndef NOENCRYPTION
  1118. +     /* we're now at the decrypted application data */
  1119. + #endif
  1120.       m_data->app_data = p;
  1121.   
  1122.       p += m_data->app_length;
  1123. diff -r -c ../oBones/src/lib/krb/rd_req.c src/lib/krb/rd_req.c
  1124. *** ../oBones/src/lib/krb/rd_req.c    Wed Nov  8 00:39:04 1989
  1125. --- src/lib/krb/rd_req.c    Tue Sep 11 09:28:09 1990
  1126. ***************
  1127. *** 71,78 ****
  1128. --- 71,86 ----
  1129.       char *key;
  1130.       int cvt;
  1131.   {
  1132. + #ifdef NOENCRYPTION
  1133.       bzero(ky, sizeof(ky));
  1134.       return KSUCCESS;
  1135. + #else
  1136. +     if (cvt)
  1137. +     string_to_key(key,ky);
  1138. +     else
  1139. +     bcopy(key,(char *)ky,8);
  1140. +     return(des_key_sched(ky,serv_key));
  1141. + #endif
  1142.   }
  1143.   
  1144.   
  1145. ***************
  1146. *** 199,204 ****
  1147. --- 207,217 ----
  1148.                  strcmp(st_rlm,realm) || (st_kvno != s_kvno))) {
  1149.           if (*fn == 0) fn = KEYFILE;
  1150.           st_kvno = s_kvno;
  1151. + #ifndef NOENCRYPTION
  1152. +     if (read_service_key(service,instance,realm,s_kvno,fn,(char *)skey))
  1153. +         return(RD_AP_UNDEC);
  1154. +     if (status=krb_set_key((char *)skey,0)) return(status);
  1155. + #endif
  1156.           (void) strcpy(st_rlm,realm);
  1157.           (void) strcpy(st_nam,service);
  1158.           (void) strcpy(st_inst,instance);
  1159. ***************
  1160. *** 213,218 ****
  1161. --- 226,234 ----
  1162.       if (krb_ap_req_debug)
  1163.           log("ticket->length: %d",tkt->length);
  1164.   
  1165. + #ifndef NOENCRYPTION
  1166. +     /* Decrypt and take apart ticket */
  1167. + #endif
  1168.   
  1169.       if (decomp_ticket(tkt,&ad->k_flags,ad->pname,ad->pinst,ad->prealm,
  1170.                         &(ad->address),ad->session, &(ad->life),
  1171. ***************
  1172. *** 233,238 ****
  1173. --- 249,259 ----
  1174.       return(RD_AP_MODIFIED);
  1175.       bcopy(ptr + tkt->length, (char *)(req_id->dat),req_id->length);
  1176.   
  1177. + #ifndef NOENCRYPTION
  1178. +     key_sched(ad->session,seskey_sched);
  1179. +     pcbc_encrypt((C_Block *)req_id->dat,(C_Block *)req_id->dat,
  1180. +     (long)req_id->length,seskey_sched,ad->session,DES_DECRYPT);
  1181. + #endif /* NOENCRYPTION */
  1182.   
  1183.   #define check_ptr() if ((ptr - (char *) req_id->dat) > req_id->length) return(RD_AP_MODIFIED);
  1184.   
  1185. diff -r -c ../oBones/src/lib/krb/rd_safe.c src/lib/krb/rd_safe.c
  1186. *** ../oBones/src/lib/krb/rd_safe.c    Wed Nov  8 00:39:06 1989
  1187. --- src/lib/krb/rd_safe.c    Tue Sep 11 09:28:34 1990
  1188. ***************
  1189. *** 167,173 ****
  1190. --- 167,177 ----
  1191.       bcopy((char *)p,(char *)big_cksum,sizeof(big_cksum));
  1192.       if (swap_bytes) swap_u_16(big_cksum);
  1193.   
  1194. + #ifdef NOENCRYPTION
  1195.       bzero(calc_cksum, sizeof(calc_cksum));
  1196. + #else
  1197. +     quad_cksum(q,calc_cksum,p-q,2,key);
  1198. + #endif
  1199.   
  1200.       if (krb_debug)
  1201.           printf("\ncalc_cksum = %u, received cksum = %u",
  1202. diff -r -c ../oBones/src/lib/krb/recvauth.c src/lib/krb/recvauth.c
  1203. *** ../oBones/src/lib/krb/recvauth.c    Mon Sep 10 16:10:56 1990
  1204. --- src/lib/krb/recvauth.c    Tue Sep 11 09:29:01 1990
  1205. ***************
  1206. *** 252,257 ****
  1207. --- 252,260 ----
  1208.          for return to the client */
  1209.       cksum = kdata->checksum + 1;
  1210.       cksum = htonl(cksum);
  1211. + #ifndef NOENCRYPTION
  1212. +     key_sched(kdata->session,schedule);
  1213. + #endif
  1214.       priv_len = krb_mk_priv((unsigned char *)&cksum,
  1215.                      tmp_buf,
  1216.                      (unsigned long) sizeof(cksum),
  1217. diff -r -c ../oBones/src/lib/krb/sendauth.c src/lib/krb/sendauth.c
  1218. *** ../oBones/src/lib/krb/sendauth.c    Mon Sep 10 16:11:24 1990
  1219. --- src/lib/krb/sendauth.c    Tue Sep 11 09:33:17 1990
  1220. ***************
  1221. *** 214,219 ****
  1222. --- 214,222 ----
  1223.           return(errno);
  1224.   
  1225.       /* ...and decrypt it */
  1226. + #ifndef NOENCRYPTION
  1227. +     key_sched(cred->session,schedule);
  1228. + #endif
  1229.       if (cc = krb_rd_priv(priv_buf,(unsigned long) tkt_len, schedule,
  1230.                    cred->session, faddr, laddr, msg_data))
  1231.           return(cc);
  1232. diff -r -c ../oBones/src/lib/krb/util.c src/lib/krb/util.c
  1233. *** ../oBones/src/lib/krb/util.c    Wed Nov  8 00:39:06 1989
  1234. --- src/lib/krb/util.c    Tue Sep 11 09:34:08 1990
  1235. ***************
  1236. *** 45,51 ****
  1237. --- 45,55 ----
  1238.              x->checksum, x->time_sec);
  1239.   #endif /* lint */
  1240.       printf("[8] =");
  1241. + #ifdef NOENCRYPTION
  1242.       placebo_cblock_print(x->session);
  1243. + #else
  1244. +     des_cblock_print_file(x->session,stdout);
  1245. + #endif
  1246.       /* skip reply for now */
  1247.   }
  1248.   
  1249. ***************
  1250. *** 55,60 ****
  1251. --- 59,65 ----
  1252.    * Printed format is:  " 0x { x, x, x, x, x, x, x, x }"
  1253.    */
  1254.   
  1255. + #ifdef NOENCRYPTION
  1256.   placebo_cblock_print(x)
  1257.       des_cblock x;
  1258.   {
  1259. ***************
  1260. *** 69,71 ****
  1261. --- 74,77 ----
  1262.       }
  1263.       printf(" }");
  1264.   }
  1265. + #endif
  1266. diff -r -c ../oBones/src/server/kerberos.c src/server/kerberos.c
  1267. *** ../oBones/src/server/kerberos.c    Mon Sep 10 15:46:07 1990
  1268. --- src/server/kerberos.c    Tue Sep 11 11:41:45 1990
  1269. ***************
  1270. *** 430,437 ****
  1271.           /* Bound requested lifetime with service and user */
  1272.           lifetime = min(req_life, ((u_long) s_name_data.max_life));
  1273.           lifetime = min(lifetime, ((u_long) a_name_data.max_life));
  1274. -         bzero(session_key, sizeof(C_Block));
  1275.   
  1276.           /* unseal server's key from master key */
  1277.           bcopy(&s_name_data.key_low, key, 4);
  1278.           bcopy(&s_name_data.key_high, ((long *) key) + 1, 4);
  1279. --- 430,441 ----
  1280.           /* Bound requested lifetime with service and user */
  1281.           lifetime = min(req_life, ((u_long) s_name_data.max_life));
  1282.           lifetime = min(lifetime, ((u_long) a_name_data.max_life));
  1283.   
  1284. + #ifdef NOENCRYPTION
  1285. +         bzero(session_key, sizeof(C_Block));
  1286. + #else
  1287. +         random_key(session_key);
  1288. + #endif
  1289.           /* unseal server's key from master key */
  1290.           bcopy(&s_name_data.key_low, key, 4);
  1291.           bcopy(&s_name_data.key_high, ((long *) key) + 1, 4);
  1292. ***************
  1293. *** 552,563 ****
  1294.           /* unseal server's key from master key */
  1295.           bcopy(&s_name_data.key_low, key, 4);
  1296.           bcopy(&s_name_data.key_high, ((long *) key) + 1, 4);
  1297. - #ifndef NOENCRYPTION
  1298.           kdb_encrypt_key(key, key, master_key,
  1299.                   master_key_schedule, DECRYPT);
  1300.           /* construct and seal the ticket */
  1301.   
  1302.           bzero(session_key, sizeof(C_Block));
  1303.   #endif
  1304.   
  1305.           krb_create_ticket(tk, k_flags, ad->pname, ad->pinst,
  1306. --- 556,569 ----
  1307.           /* unseal server's key from master key */
  1308.           bcopy(&s_name_data.key_low, key, 4);
  1309.           bcopy(&s_name_data.key_high, ((long *) key) + 1, 4);
  1310.           kdb_encrypt_key(key, key, master_key,
  1311.                   master_key_schedule, DECRYPT);
  1312.           /* construct and seal the ticket */
  1313.   
  1314. + #ifdef NOENCRYPTION
  1315.           bzero(session_key, sizeof(C_Block));
  1316. + #else
  1317. +         random_key(session_key);
  1318.   #endif
  1319.   
  1320.           krb_create_ticket(tk, k_flags, ad->pname, ad->pinst,
  1321. diff -r -c ../oBones/src/slave/kprop.c src/slave/kprop.c
  1322. *** ../oBones/src/slave/kprop.c    Mon Sep 10 16:07:02 1990
  1323. --- src/slave/kprop.c    Tue Sep 11 11:42:43 1990
  1324. ***************
  1325. *** 390,396 ****
  1326. --- 390,405 ----
  1327.               close (s);
  1328.               continue;    /*** NEXT SLAVE ***/
  1329.           }
  1330. + #ifdef NOENCRYPTION
  1331.           bzero((char *)session_sched, sizeof(session_sched));
  1332. + #else
  1333. +         if (key_sched (cred.session, session_sched)) {
  1334. +             fprintf (stderr, "%s: can't make key schedule.",
  1335. +                  cs->name);
  1336. +             close (s);
  1337. +             continue;    /*** NEXT SLAVE ***/
  1338. +         }
  1339. + #endif
  1340.           /* SAFE (quad_cksum) and CLEAR are just not good enough */
  1341.           cksum = 0;
  1342.   #ifdef not_working_yet
  1343. diff -r -c ../oBones/src/slave/kpropd.c src/slave/kpropd.c
  1344. *** ../oBones/src/slave/kpropd.c    Wed Nov  8 00:39:56 1989
  1345. --- src/slave/kpropd.c    Tue Sep 11 11:43:49 1990
  1346. ***************
  1347. *** 353,359 ****
  1348. --- 353,366 ----
  1349.         Key_schedule session_sched;
  1350.   
  1351.         if (private)
  1352. + #ifdef NOENCRYPTION
  1353.       bzero((char *)session_sched, sizeof(session_sched));
  1354. + #else
  1355. +     if (key_sched (ad->session, session_sched)) {
  1356. +       klog (L_KRB_PERR, "kpropd: can't make key schedule");
  1357. +       SlowDeath();
  1358. +     }
  1359. + #endif
  1360.   
  1361.         while (1) {
  1362.       n = krb_net_read (in, &length, sizeof length);
  1363. ***************
  1364. *** 445,450 ****
  1365. --- 452,460 ----
  1366.           klog(L_KRB_PERR, errmsg);
  1367.           SlowDeath();
  1368.           }
  1369. + #ifndef NOENCRYPTION
  1370. +         cksum += cbc_cksum(buf, obuf, n, key_sched, key_sched);
  1371. + #endif
  1372.         }
  1373.       return cksum;
  1374.   }
  1375. diff -r -c ../oBones/src/util/imake.includes/config.Imakefile src/util/imake.includes/config.Imakefile
  1376. *** ../oBones/src/util/imake.includes/config.Imakefile    Mon Sep 10 16:12:04 1990
  1377. --- src/util/imake.includes/config.Imakefile    Tue Sep 11 14:04:54 1990
  1378. ***************
  1379. *** 129,138 ****
  1380. --- 129,145 ----
  1381.   ACL_LIB=$(BUILDTOP)/lib/acl/libacl.a
  1382.   ACL_LIBDEP=$(ACL_LIB)
  1383.   
  1384. + #ifdef NOENCRYPTION
  1385.   NOENCFLAG=-DNOENCRYPTION
  1386.   DES_LIBDEP=
  1387.   DES_LIB=
  1388.   DES_LINTLIB=
  1389. + #else /* Do encryption */
  1390. + NOENCFLAG=
  1391. + DES_LIB=$(BUILDTOP)/lib/des/libdes.a
  1392. + DES_LIBDEP=$(DES_LIB)
  1393. + DES_LINTLIB=$(BUILDTOP)/lib/des/llib-ldes.ln
  1394. + #endif /* NOENCRYPTION */
  1395.   
  1396.   #ifdef NDBM
  1397.   DBMFLAG=-DNDBM
  1398.