]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
lib:krb5_wrap: Implement smb_gss_mech_import_cred()
authorAndreas Schneider <asn@samba.org>
Fri, 26 Apr 2024 08:40:13 +0000 (10:40 +0200)
committerStefan Metzmacher <metze@samba.org>
Tue, 14 May 2024 10:18:31 +0000 (10:18 +0000)
Signed-off-by: Andreas Schneider <asn@samba.org>
Reviewed-by: Stefan Metzmacher <metze@samba.org>
lib/krb5_wrap/gss_samba.c
lib/krb5_wrap/gss_samba.h

index a5940561cdaf7cc1a209b21a0381904aa49a6850..608cb60f155e2a7ce6941a270a96cf9922fe4a98 100644 (file)
@@ -48,16 +48,35 @@ int smb_gss_oid_equal(const gss_OID first_oid, const gss_OID second_oid)
 }
 #endif /* !HAVE_GSS_OID_EQUAL */
 
-
 /* wrapper around gss_krb5_import_cred() that prefers to use gss_acquire_cred_from()
  * if this GSSAPI extension is available. gss_acquire_cred_from() is properly
  * interposed by GSSPROXY while gss_krb5_import_cred() is not.
  *
  * This wrapper requires a proper krb5_context to resolve ccache name.
  * All gss_krb5_import_cred() callers in Samba already have krb5_context available. */
-uint32_t smb_gss_krb5_import_cred(uint32_t *minor_status, krb5_context ctx,
-                                 krb5_ccache id, krb5_principal keytab_principal,
-                                 krb5_keytab keytab, gss_cred_id_t *cred)
+uint32_t smb_gss_krb5_import_cred(uint32_t *minor_status,
+                                 krb5_context ctx,
+                                 krb5_ccache id,
+                                 krb5_principal keytab_principal,
+                                 krb5_keytab keytab,
+                                 gss_cred_id_t *cred)
+{
+       return smb_gss_mech_import_cred(minor_status,
+                                       ctx,
+                                       id,
+                                       keytab_principal,
+                                       keytab,
+                                       gss_mech_krb5,
+                                       cred);
+}
+
+uint32_t smb_gss_mech_import_cred(OM_uint32 *minor_status,
+                                 krb5_context ctx,
+                                 krb5_ccache id,
+                                 krb5_principal keytab_principal,
+                                 krb5_keytab keytab,
+                                 const struct gss_OID_desc_struct *mech,
+                                 gss_cred_id_t *cred)
 {
        uint32_t major_status = 0;
 
@@ -86,7 +105,7 @@ uint32_t smb_gss_krb5_import_cred(uint32_t *minor_status, krb5_context ctx,
        gss_OID_set_desc mech_set = {
                .count = 1,
                .elements = discard_const_p(struct gss_OID_desc_struct,
-                                           gss_mech_krb5),
+                                           mech),
        };
 
        gss_cred_usage_t cred_usage = GSS_C_INITIATE;
index 89aee3479c550ccfff0a13bd993e4d0f77a6e546..9e91f21e406c98accc19f0727e6a3599421d3fb4 100644 (file)
@@ -45,5 +45,13 @@ uint32_t smb_gss_krb5_import_cred(OM_uint32 *minor_status, krb5_context ctx,
                                  krb5_ccache id, krb5_principal keytab_principal,
                                  krb5_keytab keytab, gss_cred_id_t *cred);
 
+uint32_t smb_gss_mech_import_cred(OM_uint32 *minor_status,
+                                 krb5_context ctx,
+                                 krb5_ccache id,
+                                 krb5_principal keytab_principal,
+                                 krb5_keytab keytab,
+                                 const struct gss_OID_desc_struct *mech,
+                                 gss_cred_id_t *cred);
+
 #endif /* HAVE_GSSAPI */
 #endif /* _GSS_SAMBA_H */