home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Source Code 1993 July / THE_SOURCE_CODE_CD_ROM.iso / bsd_srcs / kerberosIV / des / key_parity.c < prev    next >
Encoding:
C/C++ Source or Header  |  1989-01-21  |  1.5 KB  |  65 lines

  1. /*
  2.  * $Source: /mit/kerberos/src/lib/des/RCS/key_parity.c,v $
  3.  * $Author: jtkohl $
  4.  *
  5.  * Copyright 1989 by the Massachusetts Institute of Technology.
  6.  *
  7.  * For copying and distribution information, please see the file
  8.  * <mit-copyright.h>.
  9.  *
  10.  * These routines check and fix parity of encryption keys for the DES
  11.  * algorithm.
  12.  *
  13.  * Under U.S. law, this software may not be exported outside the US
  14.  * without license from the U.S. Commerce department.
  15.  *
  16.  * These routines form the library interface to the DES facilities.
  17.  *
  18.  */
  19.  
  20. #ifndef    lint
  21. static char rcsid_key_parity_c[] =
  22. "$Header: key_parity.c,v 4.0 89/01/22 11:45:12 jtkohl Exp $";
  23. #endif    lint
  24.  
  25. #include <mit-copyright.h>
  26. #include <des.h>
  27. #include "des_internal.h"
  28.  
  29. #include "odd.h"          /* Load compile-time generated odd_parity table */
  30.  
  31. /*
  32.  * des_fixup_key_parity: Forces odd parity per byte; parity is bits
  33.  *                       8,16,...64 in des order, implies 0, 8, 16, ...
  34.  *                       vax order.
  35.  */
  36. void
  37. des_fixup_key_parity(key)
  38.      register des_cblock key;
  39. {
  40.     int i;
  41.  
  42.     for (i=0; i<sizeof(des_cblock); i++)
  43.       key[i] = odd_parity[key[i]];
  44.  
  45.     return;
  46. }
  47.  
  48. /*
  49.  * des_check_key_parity: returns true iff key has the correct des parity.
  50.  *                       See des_fix_key_parity for the definition of
  51.  *                       correct des parity.
  52.  */
  53. int
  54. des_check_key_parity(key)
  55.      register des_cblock key;
  56. {
  57.     int i;
  58.  
  59.     for (i=0; i<sizeof(des_cblock); i++)
  60.       if (key[i] != odd_parity[key[i]])
  61.     return(0);
  62.  
  63.     return(1);
  64. }
  65.