libwbclient: add wbcCheckTrustCredentials()
authorStefan Metzmacher <metze@samba.org>
Wed, 16 Apr 2008 21:35:12 +0000 (23:35 +0200)
committerStefan Metzmacher <metze@samba.org>
Wed, 16 Apr 2008 22:31:59 +0000 (00:31 +0200)
This only accepts NULL as domain for now,
because winbindd doesn't support checking
trust passwords as a domain controller.

metze
(This used to be commit c084ccd70f42ce29ce24565969a9f440dde254e1)

source3/nsswitch/libwbclient/wbc_pam.c
source3/nsswitch/libwbclient/wbclient.h

index 2b33f55990a15a1fa87c8250b76f2bfd279e7665..f6a355a413f9245e1283b2d9015a15f36aceda11 100644 (file)
@@ -419,3 +419,55 @@ done:
 
        return wbc_status;
 }
+
+/** @brief Trigger a verification of the trust credentials of a specific domain
+ *
+ * @param *domain      The name of the domain, only NULL for the default domain is
+ *                     supported yet. Other values than NULL will result in
+ *                     WBC_ERR_NOT_IMPLEMENTED.
+ * @param error        Output details on WBC_ERR_AUTH_ERROR
+ *
+ * @return #wbcErr
+ *
+ **/
+wbcErr wbcCheckTrustCredentials(const char *domain,
+                               struct wbcAuthErrorInfo **error)
+{
+       struct winbindd_request request;
+       struct winbindd_response response;
+       wbcErr wbc_status = WBC_ERR_UNKNOWN_FAILURE;
+       const char *name_str;
+
+       if (domain) {
+               /*
+                * the current protocol doesn't support
+                * specifying a domain
+                */
+               wbc_status = WBC_ERR_NOT_IMPLEMENTED;
+               BAIL_ON_WBC_ERROR(wbc_status);
+       }
+
+       ZERO_STRUCT(request);
+       ZERO_STRUCT(response);
+
+       /* Send request */
+
+       wbc_status = wbcRequestResponse(WINBINDD_CHECK_MACHACC,
+                                       &request,
+                                       &response);
+       if (response.data.auth.nt_status != 0) {
+               if (error) {
+                       wbc_status = wbc_create_error_info(NULL,
+                                                          &response,
+                                                          error);
+                       BAIL_ON_WBC_ERROR(wbc_status);
+               }
+
+               wbc_status = WBC_ERR_AUTH_ERROR;
+               BAIL_ON_WBC_ERROR(wbc_status);
+       }
+       BAIL_ON_WBC_ERROR(wbc_status);
+
+ done:
+       return wbc_status;
+}
index 1303057b8475870513b0b27b0161b22415514af7..b36b5bbe889b0266a65696153b6a94929ebe6cc3 100644 (file)
@@ -407,4 +407,10 @@ wbcErr wbcAuthenticateUserEx(const struct wbcAuthUserParams *params,
 wbcErr wbcResolveWinsByName(const char *name, const char **ip);
 wbcErr wbcResolveWinsByIP(const char *ip, const char **name);
 
+/*
+ * Trusted domain functions
+ */
+wbcErr wbcCheckTrustCredentials(const char *domain,
+                               struct wbcAuthErrorInfo **error);
+
 #endif      /* _WBCLIENT_H */