home *** CD-ROM | disk | FTP | other *** search
- /*
- * $Source: /mit/kerberos/src/lib/des/RCS/key_parity.c,v $
- * $Author: jtkohl $
- *
- * Copyright 1989 by the Massachusetts Institute of Technology.
- *
- * For copying and distribution information, please see the file
- * <mit-copyright.h>.
- *
- * These routines check and fix parity of encryption keys for the DES
- * algorithm.
- *
- * Under U.S. law, this software may not be exported outside the US
- * without license from the U.S. Commerce department.
- *
- * These routines form the library interface to the DES facilities.
- *
- */
-
- #ifndef lint
- static char rcsid_key_parity_c[] =
- "$Header: key_parity.c,v 4.0 89/01/22 11:45:12 jtkohl Exp $";
- #endif lint
-
- #include <mit-copyright.h>
- #include <des.h>
- #include "des_internal.h"
-
- #include "odd.h" /* Load compile-time generated odd_parity table */
-
- /*
- * des_fixup_key_parity: Forces odd parity per byte; parity is bits
- * 8,16,...64 in des order, implies 0, 8, 16, ...
- * vax order.
- */
- void
- des_fixup_key_parity(key)
- register des_cblock key;
- {
- int i;
-
- for (i=0; i<sizeof(des_cblock); i++)
- key[i] = odd_parity[key[i]];
-
- return;
- }
-
- /*
- * des_check_key_parity: returns true iff key has the correct des parity.
- * See des_fix_key_parity for the definition of
- * correct des parity.
- */
- int
- des_check_key_parity(key)
- register des_cblock key;
- {
- int i;
-
- for (i=0; i<sizeof(des_cblock); i++)
- if (key[i] != odd_parity[key[i]])
- return(0);
-
- return(1);
- }
-