17c478bd9Sstevel@tonic-gate /*
27c478bd9Sstevel@tonic-gate  * Copyright (C) 1998 by the FundsXpress, INC.
3*55fea89dSDan Cross  *
47c478bd9Sstevel@tonic-gate  * All rights reserved.
5*55fea89dSDan Cross  *
67c478bd9Sstevel@tonic-gate  * Export of this software from the United States of America may require
77c478bd9Sstevel@tonic-gate  * a specific license from the United States Government.  It is the
87c478bd9Sstevel@tonic-gate  * responsibility of any person or organization contemplating export to
97c478bd9Sstevel@tonic-gate  * obtain such a license before exporting.
10*55fea89dSDan Cross  *
117c478bd9Sstevel@tonic-gate  * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and
127c478bd9Sstevel@tonic-gate  * distribute this software and its documentation for any purpose and
137c478bd9Sstevel@tonic-gate  * without fee is hereby granted, provided that the above copyright
147c478bd9Sstevel@tonic-gate  * notice appear in all copies and that both that copyright notice and
157c478bd9Sstevel@tonic-gate  * this permission notice appear in supporting documentation, and that
167c478bd9Sstevel@tonic-gate  * the name of FundsXpress. not be used in advertising or publicity pertaining
177c478bd9Sstevel@tonic-gate  * to distribution of the software without specific, written prior
187c478bd9Sstevel@tonic-gate  * permission.  FundsXpress makes no representations about the suitability of
197c478bd9Sstevel@tonic-gate  * this software for any purpose.  It is provided "as is" without express
207c478bd9Sstevel@tonic-gate  * or implied warranty.
21*55fea89dSDan Cross  *
227c478bd9Sstevel@tonic-gate  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
237c478bd9Sstevel@tonic-gate  * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
247c478bd9Sstevel@tonic-gate  * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
257c478bd9Sstevel@tonic-gate  */
267c478bd9Sstevel@tonic-gate 
27159d09a2SMark Phalan #include "k5-int.h"
287c478bd9Sstevel@tonic-gate 
29159d09a2SMark Phalan void krb5_dk_encrypt_length
30159d09a2SMark Phalan (const struct krb5_enc_provider *enc,
31159d09a2SMark Phalan 		const struct krb5_hash_provider *hash,
32159d09a2SMark Phalan 		size_t input, size_t *length);
337c478bd9Sstevel@tonic-gate 
34159d09a2SMark Phalan krb5_error_code krb5_dk_encrypt
357c478bd9Sstevel@tonic-gate (
36159d09a2SMark Phalan 		krb5_context context,
37159d09a2SMark Phalan 		const struct krb5_enc_provider *enc,
38159d09a2SMark Phalan 		const struct krb5_hash_provider *hash,
39159d09a2SMark Phalan 		const krb5_keyblock *key, krb5_keyusage usage,
40159d09a2SMark Phalan 		const krb5_data *ivec,
41159d09a2SMark Phalan 		const krb5_data *input, krb5_data *output);
427c478bd9Sstevel@tonic-gate 
437c478bd9Sstevel@tonic-gate extern krb5_error_code krb5_dk_decrypt
447c478bd9Sstevel@tonic-gate (krb5_context context,
457c478bd9Sstevel@tonic-gate 	krb5_const struct krb5_enc_provider *enc,
467c478bd9Sstevel@tonic-gate 	krb5_const struct krb5_hash_provider *hash,
477c478bd9Sstevel@tonic-gate 	krb5_const krb5_keyblock *key, krb5_keyusage usage,
487c478bd9Sstevel@tonic-gate 	krb5_const krb5_data *ivec, krb5_const krb5_data *input,
497c478bd9Sstevel@tonic-gate 	krb5_data *arg_output);
507c478bd9Sstevel@tonic-gate 
517c478bd9Sstevel@tonic-gate extern krb5_error_code krb5_derive_key
527c478bd9Sstevel@tonic-gate (krb5_context context,
537c478bd9Sstevel@tonic-gate 	krb5_const struct krb5_enc_provider *enc,
547c478bd9Sstevel@tonic-gate 	krb5_const krb5_keyblock *inkey,
557c478bd9Sstevel@tonic-gate 	krb5_keyblock *outkey, krb5_const krb5_data *in_constant);
567c478bd9Sstevel@tonic-gate 
577c478bd9Sstevel@tonic-gate extern krb5_error_code krb5_dk_make_checksum
587c478bd9Sstevel@tonic-gate (krb5_context context,
597c478bd9Sstevel@tonic-gate 	krb5_const struct krb5_hash_provider *hash,
607c478bd9Sstevel@tonic-gate 	krb5_const krb5_keyblock *key, krb5_keyusage usage,
617c478bd9Sstevel@tonic-gate 	krb5_const krb5_data *input, krb5_data *output);
627c478bd9Sstevel@tonic-gate 
637c478bd9Sstevel@tonic-gate 
647c478bd9Sstevel@tonic-gate #ifndef _KERNEL
65159d09a2SMark Phalan extern krb5_error_code krb5int_dk_string_to_key
667c478bd9Sstevel@tonic-gate (krb5_context context,
67*55fea89dSDan Cross 	krb5_const struct krb5_enc_provider *enc,
687c478bd9Sstevel@tonic-gate 	krb5_const krb5_data *string,
697c478bd9Sstevel@tonic-gate 	krb5_const krb5_data *salt,
707c478bd9Sstevel@tonic-gate 	krb5_const krb5_data *params,
717c478bd9Sstevel@tonic-gate 	krb5_keyblock *key);
727c478bd9Sstevel@tonic-gate #endif
737c478bd9Sstevel@tonic-gate 
747c478bd9Sstevel@tonic-gate void krb5int_aes_encrypt_length
75159d09a2SMark Phalan (const struct krb5_enc_provider *enc,
767c478bd9Sstevel@tonic-gate 		const struct krb5_hash_provider *hash,
777c478bd9Sstevel@tonic-gate 		size_t input, size_t *length);
787c478bd9Sstevel@tonic-gate 
797c478bd9Sstevel@tonic-gate krb5_error_code krb5int_aes_dk_encrypt
807c478bd9Sstevel@tonic-gate (		krb5_context context,
817c478bd9Sstevel@tonic-gate 		const struct krb5_enc_provider *enc,
827c478bd9Sstevel@tonic-gate 		const struct krb5_hash_provider *hash,
837c478bd9Sstevel@tonic-gate 		const krb5_keyblock *key, krb5_keyusage usage,
847c478bd9Sstevel@tonic-gate 		const krb5_data *ivec,
857c478bd9Sstevel@tonic-gate 		const krb5_data *input, krb5_data *output);
867c478bd9Sstevel@tonic-gate 
877c478bd9Sstevel@tonic-gate krb5_error_code krb5int_aes_dk_decrypt
887c478bd9Sstevel@tonic-gate (		krb5_context context,
897c478bd9Sstevel@tonic-gate 		const struct krb5_enc_provider *enc,
907c478bd9Sstevel@tonic-gate 		const struct krb5_hash_provider *hash,
917c478bd9Sstevel@tonic-gate 		const krb5_keyblock *key, krb5_keyusage usage,
927c478bd9Sstevel@tonic-gate 		const krb5_data *ivec, const krb5_data *input,
937c478bd9Sstevel@tonic-gate 		krb5_data *arg_output);
947c478bd9Sstevel@tonic-gate 
957c478bd9Sstevel@tonic-gate extern krb5_error_code
967c478bd9Sstevel@tonic-gate krb5int_aes_string_to_key (krb5_context context,
977c478bd9Sstevel@tonic-gate 			const struct krb5_enc_provider *,
987c478bd9Sstevel@tonic-gate                            const krb5_data *, const krb5_data *,
997c478bd9Sstevel@tonic-gate                            const krb5_data *, krb5_keyblock *key);
100