krb5_key key,
const krb5_data *in, krb5_data *out);
-typedef krb5_error_code (*init_state_func)(const struct krb5_keytypes *ktp,
- const krb5_keyblock *key,
- krb5_keyusage keyusage,
- krb5_data *out_state);
-
-typedef void (*free_state_func)(const struct krb5_keytypes *ktp,
- krb5_data *state);
-
struct krb5_keytypes {
krb5_enctype etype;
char *name;
str2key_func str2key;
rand2key_func rand2key;
prf_func prf;
- init_state_func init_state;
- free_state_func free_state;
krb5_cksumtype required_ctype;
krb5_flags flags;
};
krb5_key key, const krb5_data *in,
krb5_data *out);
-/* State initialization/cleanup handlers */
-krb5_error_code krb5int_init_state_enc(const struct krb5_keytypes *ktp,
- const krb5_keyblock *key,
- krb5_keyusage keyusage,
- krb5_data *out_state);
-void krb5int_free_state_enc(const struct krb5_keytypes *ktp,
- krb5_data *state);
-
/*** Prototypes for cksumtype handler functions ***/
krb5_error_code krb5int_unkeyed_checksum(const struct krb5_cksumtypes *ctp,
krb5int_old_crypto_length, krb5int_old_encrypt, krb5int_old_decrypt,
krb5int_des_string_to_key, k5_rand2key_des,
krb5int_des_prf,
- krb5int_init_state_enc, krb5int_free_state_enc,
CKSUMTYPE_RSA_MD5_DES,
ETYPE_WEAK },
{ ENCTYPE_DES_CBC_MD4,
krb5int_old_crypto_length, krb5int_old_encrypt, krb5int_old_decrypt,
krb5int_des_string_to_key, k5_rand2key_des,
krb5int_des_prf,
- krb5int_init_state_enc, krb5int_free_state_enc,
CKSUMTYPE_RSA_MD4_DES,
ETYPE_WEAK },
{ ENCTYPE_DES_CBC_MD5,
krb5int_old_crypto_length, krb5int_old_encrypt, krb5int_old_decrypt,
krb5int_des_string_to_key, k5_rand2key_des,
krb5int_des_prf,
- krb5int_init_state_enc, krb5int_free_state_enc,
CKSUMTYPE_RSA_MD5_DES,
ETYPE_WEAK },
{ ENCTYPE_DES_CBC_RAW,
krb5int_raw_crypto_length, krb5int_raw_encrypt, krb5int_raw_decrypt,
krb5int_des_string_to_key, k5_rand2key_des,
krb5int_des_prf,
- krb5int_init_state_enc, krb5int_free_state_enc,
0,
ETYPE_WEAK },
{ ENCTYPE_DES3_CBC_RAW,
krb5int_raw_crypto_length, krb5int_raw_encrypt, krb5int_raw_decrypt,
krb5int_dk_string_to_key, k5_rand2key_des3,
NULL, /*PRF*/
- krb5int_init_state_enc, krb5int_free_state_enc,
0,
ETYPE_WEAK },
krb5int_dk_crypto_length, krb5int_dk_encrypt, krb5int_dk_decrypt,
krb5int_dk_string_to_key, k5_rand2key_des3,
krb5int_dk_prf,
- krb5int_init_state_enc, krb5int_free_state_enc,
CKSUMTYPE_HMAC_SHA1_DES3,
0 /*flags*/ },
krb5int_dk_crypto_length, krb5int_dk_encrypt, krb5int_dk_decrypt,
krb5int_dk_string_to_key, k5_rand2key_des,
NULL, /*PRF*/
- krb5int_init_state_enc, krb5int_free_state_enc,
0,
ETYPE_WEAK },
{ ENCTYPE_ARCFOUR_HMAC,
krb5int_arcfour_crypto_length, krb5int_arcfour_encrypt,
krb5int_arcfour_decrypt, krb5int_arcfour_string_to_key,
k5_rand2key_direct, krb5int_arcfour_prf,
- krb5int_init_state_enc, krb5int_free_state_enc,
CKSUMTYPE_HMAC_MD5_ARCFOUR,
0 /*flags*/ },
{ ENCTYPE_ARCFOUR_HMAC_EXP,
krb5int_arcfour_crypto_length, krb5int_arcfour_encrypt,
krb5int_arcfour_decrypt, krb5int_arcfour_string_to_key,
k5_rand2key_direct, krb5int_arcfour_prf,
- krb5int_init_state_enc, krb5int_free_state_enc,
CKSUMTYPE_HMAC_MD5_ARCFOUR,
ETYPE_WEAK
},
krb5int_aes_crypto_length, krb5int_dk_encrypt, krb5int_dk_decrypt,
krb5int_aes_string_to_key, k5_rand2key_direct,
krb5int_dk_prf,
- krb5int_init_state_enc, krb5int_free_state_enc,
CKSUMTYPE_HMAC_SHA1_96_AES128,
0 /*flags*/ },
{ ENCTYPE_AES256_CTS_HMAC_SHA1_96,
krb5int_aes_crypto_length, krb5int_dk_encrypt, krb5int_dk_decrypt,
krb5int_aes_string_to_key, k5_rand2key_direct,
krb5int_dk_prf,
- krb5int_init_state_enc, krb5int_free_state_enc,
CKSUMTYPE_HMAC_SHA1_96_AES256,
0 /*flags*/ },
#ifdef CAMELLIA
krb5int_dk_cmac_encrypt, krb5int_dk_cmac_decrypt,
krb5int_camellia_string_to_key, k5_rand2key_direct,
krb5int_dk_cmac_prf,
- krb5int_init_state_enc, krb5int_free_state_enc,
CKSUMTYPE_CMAC_CAMELLIA128,
0 /*flags*/ },
{ ENCTYPE_CAMELLIA256_CTS_CMAC,
krb5int_dk_cmac_encrypt, krb5int_dk_cmac_decrypt,
krb5int_camellia_string_to_key, k5_rand2key_direct,
krb5int_dk_cmac_prf,
- krb5int_init_state_enc, krb5int_free_state_enc,
CKSUMTYPE_CMAC_CAMELLIA256,
0 /*flags */ },
#endif /* CAMELLIA */
*/
#include "crypto_int.h"
-/* Most enctypes delegate cipher state handling to the enc provider by using
- * this function as their init_state methods. */
-krb5_error_code
-krb5int_init_state_enc(const struct krb5_keytypes *ktp,
- const krb5_keyblock *key, krb5_keyusage keyusage,
- krb5_data *out_state)
-{
- return ktp->enc->init_state(key, keyusage, out_state);
-}
-
-void
-krb5int_free_state_enc(const struct krb5_keytypes *ktp, krb5_data *state)
-{
- (void)ktp->enc->free_state(state);
-}
-
krb5_error_code KRB5_CALLCONV
krb5_c_init_state (krb5_context context, const krb5_keyblock *key,
krb5_keyusage keyusage, krb5_data *new_state)
ktp = find_enctype(key->enctype);
if (ktp == NULL)
return KRB5_BAD_ENCTYPE;
- return ktp->init_state(ktp, key, keyusage, new_state);
+ return ktp->enc->init_state(key, keyusage, new_state);
}
krb5_error_code KRB5_CALLCONV
ktp = find_enctype(key->enctype);
if (ktp == NULL)
return KRB5_BAD_ENCTYPE;
- ktp->free_state(ktp, state);
+ ktp->enc->free_state(state);
return 0;
}