summaryrefslogtreecommitdiff
path: root/lib/krb5_wrap
diff options
context:
space:
mode:
authorJoseph Sutton <josephsutton@catalyst.net.nz>2022-09-24 12:36:25 +1200
committerAndrew Bartlett <abartlet@samba.org>2022-10-05 04:23:33 +0000
commit84796220965527a56ac492d04f220b39ce279cf4 (patch)
treecfb7778bf757335132757af02baebef43a7e914b /lib/krb5_wrap
parent27a2ee0d1d9a7f3360537a0a806e827272242823 (diff)
downloadsamba-84796220965527a56ac492d04f220b39ce279cf4.tar.gz
lib:krb5_wrap: Add helper functions to make krb5_data structure
These will be used in following commits. Signed-off-by: Joseph Sutton <josephsutton@catalyst.net.nz> Reviewed-by: Andrew Bartlett <abartlet@samba.org>
Diffstat (limited to 'lib/krb5_wrap')
-rw-r--r--lib/krb5_wrap/krb5_samba.c30
-rw-r--r--lib/krb5_wrap/krb5_samba.h5
2 files changed, 35 insertions, 0 deletions
diff --git a/lib/krb5_wrap/krb5_samba.c b/lib/krb5_wrap/krb5_samba.c
index ec7c905ab00..4afec815b0d 100644
--- a/lib/krb5_wrap/krb5_samba.c
+++ b/lib/krb5_wrap/krb5_samba.c
@@ -938,6 +938,36 @@ krb5_error_code smb_krb5_copy_data_contents(krb5_data *p,
#endif
}
+/*
+ * @brief put a buffer reference into a krb5_data struct
+ *
+ * @param[in] data The data to reference
+ * @param[in] length The length of the data to reference
+ * @return krb5_data
+ *
+ * Caller should not free krb5_data.
+ */
+krb5_data smb_krb5_make_data(void *data,
+ size_t len)
+{
+ krb5_data d;
+
+#ifdef SAMBA4_USES_HEIMDAL
+ d.data = (uint8_t *)data;
+ d.length = len;
+#else
+ d.magic = KV5M_DATA;
+ d.data = data;
+ d.length = len;
+#endif
+ return d;
+}
+
+krb5_data smb_krb5_data_from_blob(DATA_BLOB blob)
+{
+ return smb_krb5_make_data(blob.data, blob.length);
+}
+
bool smb_krb5_get_smb_session_key(TALLOC_CTX *mem_ctx,
krb5_context context,
krb5_auth_context auth_context,
diff --git a/lib/krb5_wrap/krb5_samba.h b/lib/krb5_wrap/krb5_samba.h
index 942f787d12a..2bb04ba5a46 100644
--- a/lib/krb5_wrap/krb5_samba.h
+++ b/lib/krb5_wrap/krb5_samba.h
@@ -383,6 +383,11 @@ krb5_error_code smb_krb5_copy_data_contents(krb5_data *p,
const void *data,
size_t len);
+krb5_data smb_krb5_make_data(void *data,
+ size_t len);
+
+krb5_data smb_krb5_data_from_blob(DATA_BLOB blob);
+
int smb_krb5_principal_get_type(krb5_context context,
krb5_const_principal principal);