4f5955d
From c9136272512a6158d77e74035d52869443403a10 Mon Sep 17 00:00:00 2001
4f5955d
From: Andreas Schneider <asn@samba.org>
4f5955d
Date: Wed, 7 Sep 2016 18:33:43 +0200
4f5955d
Subject: [PATCH] Add krb5_db_register_keytab()
4f5955d
4f5955d
Add a public libkdb5 function to register the KDB keytab type.  This
4f5955d
functionality is needed for out-of-tree KDC servers such as the Samba
4f5955d
kpasswd service.
4f5955d
4f5955d
[ghudson@mit.edu: edited comments, whitespace, commit message]
4f5955d
4f5955d
ticket: 8494 (new)
4f5955d
(cherry picked from commit 2e99582062d9d6a70f2adb00fd8fe58a1f95b9b7)
4f5955d
---
4f5955d
 src/include/kdb.h           | 7 +++++++
4f5955d
 src/lib/kdb/keytab.c        | 6 ++++++
4f5955d
 src/lib/kdb/libkdb5.exports | 1 +
4f5955d
 3 files changed, 14 insertions(+)
4f5955d
4f5955d
diff --git a/src/include/kdb.h b/src/include/kdb.h
4f5955d
index 9d3bf9d..048327c 100644
4f5955d
--- a/src/include/kdb.h
4f5955d
+++ b/src/include/kdb.h
4f5955d
@@ -797,6 +797,13 @@ krb5_dbe_free_strings(krb5_context, krb5_string_attr *, int count);
4f5955d
 void
4f5955d
 krb5_dbe_free_string(krb5_context, char *);
4f5955d
 
4f5955d
+/*
4f5955d
+ * Register the KDB keytab type, allowing "KDB:" to be used as a keytab name.
4f5955d
+ * For this type to work, the context used for keytab operations must have an
4f5955d
+ * associated database handle (via krb5_db_open()).
4f5955d
+ */
4f5955d
+krb5_error_code krb5_db_register_keytab(krb5_context context);
4f5955d
+
4f5955d
 #define KRB5_KDB_DEF_FLAGS      0
4f5955d
 
4f5955d
 #define KDB_MAX_DB_NAME                 128
4f5955d
diff --git a/src/lib/kdb/keytab.c b/src/lib/kdb/keytab.c
4f5955d
index b85b67d..c6aa100 100644
4f5955d
--- a/src/lib/kdb/keytab.c
4f5955d
+++ b/src/lib/kdb/keytab.c
4f5955d
@@ -66,6 +66,12 @@ typedef struct krb5_ktkdb_data {
4f5955d
 } krb5_ktkdb_data;
4f5955d
 
4f5955d
 krb5_error_code
4f5955d
+krb5_db_register_keytab(krb5_context context)
4f5955d
+{
4f5955d
+    return krb5_kt_register(context, &krb5_kt_kdb_ops);
4f5955d
+}
4f5955d
+
4f5955d
+krb5_error_code
4f5955d
 krb5_ktkdb_resolve(context, name, id)
4f5955d
     krb5_context          context;
4f5955d
     const char          * name;
4f5955d
diff --git a/src/lib/kdb/libkdb5.exports b/src/lib/kdb/libkdb5.exports
4f5955d
index cb4c3df..e5d1045 100644
4f5955d
--- a/src/lib/kdb/libkdb5.exports
4f5955d
+++ b/src/lib/kdb/libkdb5.exports
4f5955d
@@ -85,6 +85,7 @@ krb5_db_delete_policy
4f5955d
 krb5_db_free_policy
4f5955d
 krb5_def_store_mkey_list
4f5955d
 krb5_db_promote
4f5955d
+krb5_db_register_keytab
4f5955d
 ulog_add_update
4f5955d
 ulog_init_header
4f5955d
 ulog_map
4f5955d
-- 
4f5955d
2.9.3
4f5955d