aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSam Hartman <hartmans@mit.edu>2009-11-24 01:13:30 +0000
committerSam Hartman <hartmans@mit.edu>2009-11-24 01:13:30 +0000
commit50d5d3e5ea78d9858f3e81f7676547f7131a492d (patch)
tree1ba7fc83e9a2889c8ea63600a72a0af1ebfc9417
parent117873bc61d5dcda8f060845cfa19ea5f4409016 (diff)
downloadkrb5-50d5d3e5ea78d9858f3e81f7676547f7131a492d.zip
krb5-50d5d3e5ea78d9858f3e81f7676547f7131a492d.tar.gz
krb5-50d5d3e5ea78d9858f3e81f7676547f7131a492d.tar.bz2
krb5_k_make_checksum: 0 cksumtype means use mandatory cksum for given enctype
git-svn-id: svn://anonsvn.mit.edu/krb5/users/hartmans/fast-negotiate@23326 dc483132-0cff-0310-8789-dd5450dbe970
-rw-r--r--src/lib/crypto/krb/make_checksum.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/lib/crypto/krb/make_checksum.c b/src/lib/crypto/krb/make_checksum.c
index 06a5247..bffc59b 100644
--- a/src/lib/crypto/krb/make_checksum.c
+++ b/src/lib/crypto/krb/make_checksum.c
@@ -29,10 +29,12 @@
#include "etypes.h"
#include "dk.h"
+/* A 0 checksum type means use the mandatory checksum*/
+
krb5_error_code KRB5_CALLCONV
krb5_k_make_checksum(krb5_context context, krb5_cksumtype cksumtype,
- krb5_key key, krb5_keyusage usage,
- const krb5_data *input, krb5_checksum *cksum)
+ krb5_key key, krb5_keyusage usage,
+ const krb5_data *input, krb5_checksum *cksum)
{
unsigned int i;
const struct krb5_cksumtypes *ctp;
@@ -43,6 +45,12 @@ krb5_k_make_checksum(krb5_context context, krb5_cksumtype cksumtype,
krb5_error_code ret;
size_t cksumlen;
+ if (cksumtype == 0) {
+ ret = krb5int_c_mandatory_cksumtype(context, krb5_k_key_enctype(context, key), &cksumtype);
+ if (ret != 0)
+ return ret;
+ }
+
for (i = 0; i < krb5int_cksumtypes_length; i++) {
if (krb5int_cksumtypes_list[i].ctype == cksumtype)
break;
@@ -57,6 +65,7 @@ krb5_k_make_checksum(krb5_context context, krb5_cksumtype cksumtype,
cksumlen = ctp->hash->hashsize;
cksum->length = cksumlen;
+ cksum->checksum_type = cksumtype;
cksum->contents = malloc(cksum->length);
if (cksum->contents == NULL)
return ENOMEM;