]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
auth/gensec: add gensec_get_unparsed_target_principal() helper
authorStefan Metzmacher <metze@samba.org>
Tue, 5 Mar 2024 14:32:59 +0000 (15:32 +0100)
committerStefan Metzmacher <metze@samba.org>
Tue, 7 May 2024 11:30:33 +0000 (11:30 +0000)
This will be useful for debugging.

Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Andreas Schneider <asn@samba.org>
auth/gensec/gensec_internal.h
auth/gensec/gensec_util.c

index bf0a158a1595a7760a1d06bcf62fccf22cb6fbb5..8454eef32a0460c64252912fba2fad1356c2a728 100644 (file)
@@ -198,6 +198,8 @@ NTSTATUS gensec_child_session_info(struct gensec_security *gensec_security,
 NTTIME gensec_child_expire_time(struct gensec_security *gensec_security);
 const char *gensec_child_final_auth_type(struct gensec_security *gensec_security);
 
+char *gensec_get_unparsed_target_principal(struct gensec_security *gensec_security,
+                                          TALLOC_CTX *mem_ctx);
 NTSTATUS gensec_kerberos_possible(struct gensec_security *gensec_security);
 
 #endif /* __GENSEC_H__ */
index 611727d2fcd6ea706fd2bd02f51636b9c1d7596e..0c7688d33d2d891df1329e9d6dff449733471fd5 100644 (file)
@@ -341,6 +341,24 @@ const char *gensec_child_final_auth_type(struct gensec_security *gensec_security
        return gensec_final_auth_type(gensec_security->child_security);
 }
 
+char *gensec_get_unparsed_target_principal(struct gensec_security *gensec_security,
+                                          TALLOC_CTX *mem_ctx)
+{
+       const char *target_principal = gensec_get_target_principal(gensec_security);
+       const char *service = gensec_get_target_service(gensec_security);
+       const char *hostname = gensec_get_target_hostname(gensec_security);
+
+       if (target_principal != NULL) {
+               return talloc_strdup(mem_ctx, target_principal);
+       } else if (service != NULL && hostname != NULL) {
+               return talloc_asprintf(mem_ctx, "%s/%s", service, hostname);
+       } else if (hostname != NULL) {
+               return talloc_strdup(mem_ctx, target_principal);
+       }
+
+       return NULL;
+}
+
 NTSTATUS gensec_kerberos_possible(struct gensec_security *gensec_security)
 {
        struct cli_credentials *creds = gensec_get_credentials(gensec_security);