view usr/src/uts/common/gssapi/mechs/krb5/crypto/des/f_cksum.c @ 14097:9a220e49d686

3882 Remove xmod & friends Reviewed by: Dan McDonald <danmcd@nexenta.com> Reviewed by: Richard Lowe <richlowe@richlowe.net> Approved by: Richard Lowe <richlowe@richlowe.net>
author Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
date Mon, 29 Jul 2013 16:16:59 -0400
parents 6aeeafc994de
children
line wrap: on
line source

/*
 * Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
 * Use is subject to license terms.
 */


/*
 * des_cbc_cksum.c - compute an 8 byte checksum using DES in CBC mode
 */
#include "des_int.h"

/*
 * This routine performs DES cipher-block-chaining checksum operation,
 * a.k.a.  Message Authentication Code.  It ALWAYS encrypts from input
 * to a single 64 bit output MAC checksum.
 *
 * The key schedule is passed as an arg, as well as the cleartext or
 * ciphertext. The cleartext and ciphertext should be in host order.
 *
 * NOTE-- the output is ALWAYS 8 bytes long.  If not enough space was
 * provided, your program will get trashed.
 *
 * The input is null padded, at the end (highest addr), to an integral
 * multiple of eight bytes.
 */
unsigned long
mit_des_cbc_cksum(krb5_context context,
	const krb5_octet *in, krb5_octet *out,
	unsigned long length, krb5_keyblock *key,
	const krb5_octet  *ivec)
{
	krb5_error_code ret = 0;
	krb5_data input;
	krb5_data output;
	krb5_data ivecdata;

	input.data = (char *)in;
	input.length = length;
	output.data = (char *)out;
	output.length = MIT_DES_BLOCK_LENGTH;
	ivecdata.data = (char *)ivec;
	ivecdata.length = MIT_DES_BLOCK_LENGTH;

	ret = k5_ef_mac(context, key, &ivecdata,
		(const krb5_data *)&input, &output);

	return (ret);
}