summaryrefslogtreecommitdiffstats
path: root/src/lib/crypto/old/old_decrypt.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/crypto/old/old_decrypt.c')
-rw-r--r--src/lib/crypto/old/old_decrypt.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/lib/crypto/old/old_decrypt.c b/src/lib/crypto/old/old_decrypt.c
index ad0b39ebf..26019e164 100644
--- a/src/lib/crypto/old/old_decrypt.c
+++ b/src/lib/crypto/old/old_decrypt.c
@@ -40,7 +40,7 @@ krb5_old_decrypt(enc, hash, key, usage, ivec, input, arg_output)
krb5_error_code ret;
size_t blocksize, hashsize, plainsize;
unsigned char *plaintext, *cksumdata;
- krb5_data output, cksum;
+ krb5_data output, cksum, crcivec;
int alloced;
(*(enc->block_size))(&blocksize);
@@ -76,6 +76,13 @@ krb5_old_decrypt(enc, hash, key, usage, ivec, input, arg_output)
/* decrypt it */
+ /* XXX this is gross, but I don't have much choice */
+ if ((key->enctype == ENCTYPE_DES_CBC_CRC) && (ivec == 0)) {
+ crcivec.length = key->length;
+ crcivec.data = key->contents;
+ ivec = &crcivec;
+ }
+
if (ret = ((*(enc->decrypt))(key, ivec, input, &output)))
goto cleanup;