4.4BSD/usr/src/kerberosIV/des/key_parity.c

Compare this file to the similar file:
Show the results in this format:

/*
 * $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);
}