home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / misc / volume29 / libdes / part01 / random_key.c < prev    next >
Encoding:
C/C++ Source or Header  |  1992-04-04  |  849 b   |  35 lines

  1. /* random_key.c */
  2. /* Copyright (C) 1992 Eric Young - see COPYING for more details */
  3. #include "des_local.h"
  4.  
  5. int des_random_key(ret)
  6. des_cblock ret;
  7.     {
  8.     des_key_schedule ks;
  9.     static ulong c=0;
  10.     static ushort pid=0;
  11.     static des_cblock data={0x01,0x23,0x45,0x67,0x89,0xab,0xcd,0xef};
  12.     des_cblock key;
  13.  
  14. #ifdef MSDOS
  15.     pid=1;
  16. #else
  17.     if (!pid) pid=getpid();
  18. #endif
  19.     ((ulong *)key)[0]=(ulong)time(NULL);
  20.     ((ulong *)key)[1]=(ulong)((pid)|((c++)<<16));
  21.  
  22.     des_set_odd_parity((des_cblock *)data);
  23.     des_set_key((des_cblock *)data,ks);
  24.     des_cbc_cksum((des_cblock *)key,(des_cblock *)key,
  25.         (long)sizeof(key),ks,(des_cblock *)data);
  26.     des_set_odd_parity((des_cblock *)key);
  27.     des_cbc_cksum((des_cblock *)key,(des_cblock *)key,
  28.         (long)sizeof(key),ks,(des_cblock *)data);
  29.  
  30.     bcopy(key,ret,sizeof(key));
  31.     bzero(key,sizeof(key));
  32.     bzero(ks,sizeof(ks));
  33.     return(0);
  34.     }
  35.