summaryrefslogtreecommitdiffstats
path: root/src/lib/crypto/verify_checksum.c
diff options
context:
space:
mode:
authorSam Hartman <hartmans@mit.edu>2009-01-03 23:19:42 +0000
committerSam Hartman <hartmans@mit.edu>2009-01-03 23:19:42 +0000
commit0ba5ccd7bb3ea15e44a87f84ca6feed8890f657d (patch)
tree2049c9c2cb135fe36b14c0a171711259258d18ec /src/lib/crypto/verify_checksum.c
parentff0a6514c9f4230938c29922d69cbd4e83691adf (diff)
downloadkrb5-0ba5ccd7bb3ea15e44a87f84ca6feed8890f657d.tar.gz
krb5-0ba5ccd7bb3ea15e44a87f84ca6feed8890f657d.tar.xz
krb5-0ba5ccd7bb3ea15e44a87f84ca6feed8890f657d.zip
Merge mskrb-integ onto trunk
The mskrb-integ branch includes support for the following projects: Projects/Aliases * Projects/PAC and principal APIs * Projects/AEAD encryption API * Projects/GSSAPI DCE * Projects/RFC 3244 In addition, it includes support for enctype negotiation, and a variety of GSS-API extensions. In the KDC it includes support for protocol transition, constrained delegation and a new authorization data interface. The old authorization data interface is also supported. This commit merges the mskrb-integ branch on to the trunk. Additional review and testing is required. Merge commit 'mskrb-integ' into trunk ticket: new status: open git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@21690 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src/lib/crypto/verify_checksum.c')
-rw-r--r--src/lib/crypto/verify_checksum.c20
1 files changed, 16 insertions, 4 deletions
diff --git a/src/lib/crypto/verify_checksum.c b/src/lib/crypto/verify_checksum.c
index f531ee163..72b5595de 100644
--- a/src/lib/crypto/verify_checksum.c
+++ b/src/lib/crypto/verify_checksum.c
@@ -51,10 +51,22 @@ krb5_c_verify_checksum(krb5_context context, const krb5_keyblock *key,
indata.length = cksum->length;
indata.data = (char *) cksum->contents;
- if (krb5_cksumtypes_list[i].keyhash &&
- krb5_cksumtypes_list[i].keyhash->verify)
- return((*(krb5_cksumtypes_list[i].keyhash->verify))(key, usage, 0, data,
- &indata, valid));
+ if (krb5_cksumtypes_list[i].keyhash) {
+ const struct krb5_keyhash_provider *keyhash;
+
+ keyhash = krb5_cksumtypes_list[i].keyhash;
+
+ if (keyhash->verify == NULL && keyhash->verify_iov != NULL) {
+ krb5_crypto_iov iov[1];
+
+ iov[0].flags = KRB5_CRYPTO_TYPE_DATA;
+ iov[0].data = *data;
+
+ return (*keyhash->verify_iov)(key, usage, 0, iov, 1, &indata, valid);
+ } else if (keyhash->verify != NULL) {
+ return (*keyhash->verify)(key, usage, 0, data, &indata, valid);
+ }
+ }
/* otherwise, make the checksum again, and compare */