summaryrefslogtreecommitdiff
path: root/server/bdump.c
diff options
context:
space:
mode:
authorGravatar Karl Ramm <kcr@mit.edu>2008-12-24 23:52:23 +0000
committerGravatar Karl Ramm <kcr@mit.edu>2008-12-24 23:52:23 +0000
commitd44cdd8600187a9c000d1e036c7dd8721c941caf (patch)
treefb4a4262d802dff06ee1c03a3c6e67d047310ac7 /server/bdump.c
parentb1aa1f99237b8743dc10defbbc14a8fa359a6c9f (diff)
make this work^H^H^H^Hcompile with Heimdal
Diffstat (limited to 'server/bdump.c')
-rw-r--r--server/bdump.c15
1 files changed, 13 insertions, 2 deletions
diff --git a/server/bdump.c b/server/bdump.c
index 1b40336..8df2e87 100644
--- a/server/bdump.c
+++ b/server/bdump.c
@@ -103,7 +103,7 @@ static void shutdown_file_pointers(void);
static void cleanup(Server *server);
#if defined(HAVE_KRB4) || defined(HAVE_KRB5)
-static int des_service_decrypt(char *in, char *out);
+static int des_service_decrypt(unsigned char *in, unsigned char *out);
#endif
#ifdef HAVE_KRB5
static long ticket5_time;
@@ -1003,7 +1003,9 @@ int got_des = 0;
unsigned int enctypes[] = {ENCTYPE_DES_CBC_CRC,
ENCTYPE_DES_CBC_MD4,
ENCTYPE_DES_CBC_MD5,
+#ifdef ENCTYPE_DES_CBC_RAW
ENCTYPE_DES_CBC_RAW,
+#endif
0};
#endif
@@ -1101,7 +1103,12 @@ get_tgt(void)
break;
}
if (!retval) {
+#ifdef HAVE_KRB5_CRYPTO_INIT
+ retval = krb5_copy_keyblock(Z_krb5_ctx, &kt_ent.keyblock,
+ &server_key);
+#else
retval = krb5_copy_keyblock(Z_krb5_ctx, &kt_ent.key, &server_key);
+#endif
if (retval) {
krb5_free_principal(Z_krb5_ctx, principal);
krb5_kt_close(Z_krb5_ctx, kt);
@@ -1667,7 +1674,7 @@ setup_file_pointers (void)
}
#ifdef HAVE_KRB5
-static int des_service_decrypt(char *in, char *out) {
+static int des_service_decrypt(unsigned char *in, unsigned char *out) {
#ifndef HAVE_KRB4
krb5_data dout;
krb5_enc_data din;
@@ -1679,7 +1686,11 @@ static int des_service_decrypt(char *in, char *out) {
din.ciphertext.data = in;
din.enctype = Z_enctype(server_key);
+#ifdef HAVE_KRB5_CRYPTO_INIT
+ return krb5_c_decrypt(Z_krb5_ctx, *server_key, 0, 0, &din, &dout);
+#else
return krb5_c_decrypt(Z_krb5_ctx, server_key, 0, 0, &din, &dout);
+#endif
#else
des_ecb_encrypt((C_Block *)in, (C_Block *)out, serv_ksched.s, DES_DECRYPT);
return 0; /* sigh */