X-Git-Url: http://www.project-moonshot.org/gitweb/?p=mech_eap.orig;a=blobdiff_plain;f=util_cksum.c;h=cbd531d3fbdcca7ac370798d7cf691f04306f992;hp=9616e9cfbcabb8971d33f5157711fe6f6558cc33;hb=163856b1a70d7773c46d4ea5495b85c4dce0f089;hpb=5df2dcc26a31c87842368ce56caca635bcb1d435 diff --git a/util_cksum.c b/util_cksum.c index 9616e9c..cbd531d 100644 --- a/util_cksum.c +++ b/util_cksum.c @@ -61,7 +61,11 @@ static int gssEapChecksum(krb5_context context, krb5_cksumtype type, size_t rrc, - krb5_keyblock *key, +#ifdef HAVE_HEIMDAL_VERSION + krb5_crypto crypto, +#else + krb5_keyblock *crypto, +#endif krb5_keyusage sign_usage, gss_iov_buffer_desc *iov, int iov_count, @@ -74,13 +78,15 @@ gssEapChecksum(krb5_context context, krb5_crypto_iov *kiov; size_t kiov_count; int i = 0, j; - unsigned int k5_checksumlen; + size_t k5_checksumlen; +#ifdef HAVE_HEIMDAL_VERSION + krb5_cksumtype cksumtype; +#endif if (verify) *valid = FALSE; - code = krb5_c_crypto_length(context, KRB_KEY_TYPE(key), - KRB5_CRYPTO_TYPE_CHECKSUM, &k5_checksumlen); + code = krbCryptoLength(context, crypto, KRB5_CRYPTO_TYPE_CHECKSUM, &k5_checksumlen); if (code != 0) return code; @@ -130,17 +136,28 @@ gssEapChecksum(krb5_context context, } i++; +#ifdef HAVE_HEIMDAL_VERSION + if (verify) { + code = krb5_verify_checksum_iov(context, crypto, sign_usage, + kiov, kiov_count, &cksumtype); + *valid = (code == 0); + } else { + code = krb5_create_checksum_iov(context, crypto, sign_usage, + kiov, kiov_count, &cksumtype); + } +#else if (verify) { krb5_boolean kvalid = FALSE; - code = krb5_c_verify_checksum_iov(context, type, key, + code = krb5_c_verify_checksum_iov(context, type, crypto, sign_usage, kiov, kiov_count, &kvalid); *valid = kvalid; } else { - code = krb5_c_make_checksum_iov(context, type, key, + code = krb5_c_make_checksum_iov(context, type, crypto, sign_usage, kiov, kiov_count); } +#endif /* HAVE_HEIMDAL_VERSION */ GSSEAP_FREE(kiov); @@ -151,12 +168,16 @@ int gssEapSign(krb5_context context, krb5_cksumtype type, size_t rrc, - krb5_keyblock *key, +#ifdef HAVE_HEIMDAL_VERSION + krb5_crypto crypto, +#else + krb5_keyblock *crypto, +#endif krb5_keyusage sign_usage, gss_iov_buffer_desc *iov, int iov_count) { - return gssEapChecksum(context, type, rrc, key, + return gssEapChecksum(context, type, rrc, crypto, sign_usage, iov, iov_count, 0, NULL); } @@ -164,13 +185,17 @@ int gssEapVerify(krb5_context context, krb5_cksumtype type, size_t rrc, - krb5_keyblock *key, +#ifdef HAVE_HEIMDAL_VERSION + krb5_crypto crypto, +#else + krb5_keyblock *crypto, +#endif krb5_keyusage sign_usage, gss_iov_buffer_desc *iov, int iov_count, int *valid) { - return gssEapChecksum(context, type, rrc, key, + return gssEapChecksum(context, type, rrc, crypto, sign_usage, iov, iov_count, 1, valid); }