2 * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
3 * Use is subject to license terms.
8 * des_cbc_cksum.c - compute an 8 byte checksum using DES in CBC mode
13 * This routine performs DES cipher-block-chaining checksum operation,
14 * a.k.a. Message Authentication Code. It ALWAYS encrypts from input
15 * to a single 64 bit output MAC checksum.
17 * The key schedule is passed as an arg, as well as the cleartext or
18 * ciphertext. The cleartext and ciphertext should be in host order.
20 * NOTE-- the output is ALWAYS 8 bytes long. If not enough space was
21 * provided, your program will get trashed.
23 * The input is null padded, at the end (highest addr), to an integral
24 * multiple of eight bytes.
27 mit_des_cbc_cksum(krb5_context context
,
28 const krb5_octet
*in
, krb5_octet
*out
,
29 unsigned long length
, krb5_keyblock
*key
,
30 const krb5_octet
*ivec
)
32 krb5_error_code ret
= 0;
37 input
.data
= (char *)in
;
38 input
.length
= length
;
39 output
.data
= (char *)out
;
40 output
.length
= MIT_DES_BLOCK_LENGTH
;
41 ivecdata
.data
= (char *)ivec
;
42 ivecdata
.length
= MIT_DES_BLOCK_LENGTH
;
44 ret
= k5_ef_mac(context
, key
, &ivecdata
,
45 (const krb5_data
*)&input
, &output
);