guess that this is how arcfour prf works
This commit is contained in:
@@ -309,6 +309,30 @@ ARCFOUR_encrypt(krb5_context context,
|
|||||||
return ARCFOUR_subdecrypt (context, key, data, len, keyusage, ivec);
|
return ARCFOUR_subdecrypt (context, key, data, len, keyusage, ivec);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static krb5_error_code
|
||||||
|
ARCFOUR_prf(krb5_context context,
|
||||||
|
krb5_crypto crypto,
|
||||||
|
const krb5_data *in,
|
||||||
|
krb5_data *out)
|
||||||
|
{
|
||||||
|
struct _krb5_checksum_type *c = _krb5_find_checksum(CKSUMTYPE_SHA1);
|
||||||
|
krb5_error_code ret;
|
||||||
|
Checksum res;
|
||||||
|
|
||||||
|
ret = krb5_data_alloc(out, c->checksumsize);
|
||||||
|
if (ret)
|
||||||
|
return ret;
|
||||||
|
|
||||||
|
res.checksum.data = out->data;
|
||||||
|
res.checksum.length = out->length;
|
||||||
|
|
||||||
|
ret = _krb5_internal_hmac(context, c, in->data, in->length, 0, &crypto->key, &res);
|
||||||
|
if (ret)
|
||||||
|
krb5_data_free(out);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
struct _krb5_encryption_type _krb5_enctype_arcfour_hmac_md5 = {
|
struct _krb5_encryption_type _krb5_enctype_arcfour_hmac_md5 = {
|
||||||
ETYPE_ARCFOUR_HMAC_MD5,
|
ETYPE_ARCFOUR_HMAC_MD5,
|
||||||
"arcfour-hmac-md5",
|
"arcfour-hmac-md5",
|
||||||
@@ -322,5 +346,5 @@ struct _krb5_encryption_type _krb5_enctype_arcfour_hmac_md5 = {
|
|||||||
F_SPECIAL,
|
F_SPECIAL,
|
||||||
ARCFOUR_encrypt,
|
ARCFOUR_encrypt,
|
||||||
0,
|
0,
|
||||||
NULL
|
ARCFOUR_prf
|
||||||
};
|
};
|
||||||
|
Reference in New Issue
Block a user