krb5_crypto_iov *kiov;
if (iv) {
- code = krb5_c_block_size(context, KRB_KEYTYPE(key), &blocksize);
+ code = krb5_c_block_size(context, KRB_KEY_TYPE(key), &blocksize);
if (code)
return(code);
}
code = mapIov(context, dce_style, ec, rrc,
- KRB_KEYTYPE(key), iov, iov_count,
+ KRB_KEY_TYPE(key), iov, iov_count,
&kiov, &kiov_count);
if (code == 0) {
code = krb5_c_encrypt_iov(context, key, usage, pivd, kiov, kiov_count);
krb5_crypto_iov *kiov;
if (iv) {
- code = krb5_c_block_size(context, KRB_KEYTYPE(key), &blocksize);
+ code = krb5_c_block_size(context, KRB_KEY_TYPE(key), &blocksize);
if (code)
return(code);
}
code = mapIov(context, dce_style, ec, rrc,
- KRB_KEYTYPE(key), iov, iov_count,
+ KRB_KEY_TYPE(key), iov, iov_count,
&kiov, &kiov_count);
if (code == 0) {
code = krb5_c_decrypt_iov(context, key, usage, pivd, kiov, kiov_count);
}
void
-gssEapIovMessageLnegth(gss_iov_buffer_desc *iov,
+gssEapIovMessageLength(gss_iov_buffer_desc *iov,
int iov_count,
size_t *data_length_p,
size_t *assoc_data_length_p)
return 0;
}
-
-static char
-keyDerivationConstant[] = "rfc4121-gss-eap";
-
-OM_uint32
-gssEapDeriveRFC3961Key(OM_uint32 *minor,
- gss_buffer_t msk,
- krb5_enctype enctype,
- krb5_keyblock *pKey)
-{
- krb5_context context;
- krb5_data data, prf;
- krb5_keyblock kd;
- krb5_error_code code;
- size_t keybytes, keylength, prflength;
-
- memset(pKey, 0, sizeof(*pKey));
-
- GSSEAP_KRB_INIT(&context);
-
- kd.contents = NULL;
- prf.data = NULL;
- KRB_KEYTYPE(&kd) = enctype;
-
- code = krb5_c_keylengths(context, enctype, &keybytes, &keylength);
- if (code != 0)
- goto cleanup;
-
- data.length = msk->length;
- data.data = (char *)msk->value;
-
- kd.contents = GSSEAP_MALLOC(keylength);
- if (kd.contents == NULL) {
- code = ENOMEM;
- goto cleanup;
- }
- kd.length = keylength;
-
- code = krb5_c_random_to_key(context, enctype, &data, &kd);
- if (code != 0)
- goto cleanup;
-
- data.length = sizeof(keyDerivationConstant) - 1;
- data.data = keyDerivationConstant;
-
- code = krb5_c_prf_length(context, enctype, &prflength);
- if (code != 0)
- goto cleanup;
-
- prf.length = prflength;
- prf.data = GSSEAP_MALLOC(prflength);
- if (data.data == NULL) {
- code = ENOMEM;
- goto cleanup;
- }
-
- code = krb5_c_prf(context, &kd, &data, &prf);
- if (code != 0)
- goto cleanup;
-
- code = krb5_c_random_to_key(context, enctype, &prf, &kd);
- if (code != 0)
- goto cleanup;
-
- *pKey = kd;
-
-cleanup:
- if (code != 0) {
- GSSEAP_FREE(kd.contents);
- }
-
- GSSEAP_FREE(prf.data);
-
- *minor = code;
- return (*minor == 0) ? GSS_S_COMPLETE : GSS_S_FAILURE;
-}