summaryrefslogtreecommitdiff
path: root/server/bdump.c
diff options
context:
space:
mode:
authorGravatar Karl Ramm <kcr@mit.edu>2008-12-25 21:00:13 +0000
committerGravatar Karl Ramm <kcr@mit.edu>2008-12-25 21:00:13 +0000
commit0e27b06f717da888f7959d9f44e940f646e9551c (patch)
tree7411d058bf3e2396fa04d8f4fdb4fb530d091cbd /server/bdump.c
parent1e7536c431c7915086bad850b3dc78f0e6ee8ff8 (diff)
hack at traditional heimdal crypto
Diffstat (limited to 'server/bdump.c')
-rw-r--r--server/bdump.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/server/bdump.c b/server/bdump.c
index 8df2e87..76f83e6 100644
--- a/server/bdump.c
+++ b/server/bdump.c
@@ -1677,6 +1677,7 @@ setup_file_pointers (void)
static int des_service_decrypt(unsigned char *in, unsigned char *out) {
#ifndef HAVE_KRB4
krb5_data dout;
+#ifdef HAS_KRB5_C_DECRYPT
krb5_enc_data din;
dout.length = 8;
@@ -1691,6 +1692,23 @@ static int des_service_decrypt(unsigned char *in, unsigned char *out) {
#else
return krb5_c_decrypt(Z_krb5_ctx, server_key, 0, 0, &din, &dout);
#endif
+#elif defined(HAVE_KRB5_CRYPTO_INIT)
+ int ret;
+ krb5_crypto crypto;
+
+ dout.length = 8;
+ dout.data = out;
+
+ ret = krb5_crypto_init(Z_krb5_ctx, server_key, Z_enctype(server_key), &crypto);
+ if (ret)
+ return ret;
+
+ ret = krb5_decrypt_ivec(Z_krb5_ctx, crypto, 0, in, 8, &dout, NULL);
+
+ krb5_crypto_destroy(Z_krb5_ctx, crypto);
+
+ return ret;
+#endif
#else
des_ecb_encrypt((C_Block *)in, (C_Block *)out, serv_ksched.s, DES_DECRYPT);
return 0; /* sigh */