]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
s3:passdb: Add secrets_store_creds()
authorAndreas Schneider <asn@samba.org>
Wed, 24 Mar 2021 09:06:18 +0000 (10:06 +0100)
committerRalph Boehme <slow@samba.org>
Tue, 30 Mar 2021 05:48:37 +0000 (05:48 +0000)
Signed-off-by: Andreas Schneider <asn@samba.org>
Reviewed-by: Ralph Boehme <slow@samba.org>
source3/include/secrets.h
source3/passdb/secrets.c
source3/wscript_build

index 24ae5bd06643bd869de6103f03d3e61f07733c93..2478561cee7d20b828406ee4fc5a38769c390996 100644 (file)
@@ -56,6 +56,8 @@
 #define SECRETS_AUTH_DOMAIN      "SECRETS/AUTH_DOMAIN"
 #define SECRETS_AUTH_PASSWORD  "SECRETS/AUTH_PASSWORD"
 
+struct cli_credentials;
+
 /* structure for storing machine account password
    (ie. when samba server is member of a domain */
 struct machine_acct_pass {
@@ -89,6 +91,7 @@ struct db_context *secrets_db_ctx(void);
 void secrets_shutdown(void);
 void *secrets_fetch(const char *key, size_t *size);
 bool secrets_store(const char *key, const void *data, size_t size);
+bool secrets_store_creds(struct cli_credentials *creds);
 bool secrets_delete_entry(const char *key);
 bool secrets_delete(const char *key);
 
index 2b2206070e25b6f8ba3f10b1312be702e2bd4ba5..be9cc0039d36d076012fca5cda054f1aef9d54f6 100644 (file)
@@ -31,6 +31,7 @@
 #include "dbwrap/dbwrap_open.h"
 #include "../libcli/security/security.h"
 #include "util_tdb.h"
+#include "auth/credentials/credentials.h"
 
 #undef DBGC_CLASS
 #define DBGC_CLASS DBGC_PASSDB
@@ -143,6 +144,49 @@ bool secrets_store(const char *key, const void *data, size_t size)
        return NT_STATUS_IS_OK(status);
 }
 
+bool secrets_store_creds(struct cli_credentials *creds)
+{
+       const char *p = NULL;
+       bool ok;
+
+       p = cli_credentials_get_username(creds);
+       if (p == NULL) {
+               return false;
+       }
+
+       ok = secrets_store(SECRETS_AUTH_USER, p, strlen(p) + 1);
+       if (!ok) {
+               DBG_ERR("Failed storing auth user name\n");
+               return false;
+       }
+
+
+       p = cli_credentials_get_domain(creds);
+       if (p == NULL) {
+               return false;
+       }
+
+       ok = secrets_store(SECRETS_AUTH_DOMAIN, p, strlen(p) + 1);
+       if (!ok) {
+               DBG_ERR("Failed storing auth domain name\n");
+               return 1;
+       }
+
+
+       p = cli_credentials_get_password(creds);
+       if (p == NULL) {
+               return false;
+       }
+
+       ok = secrets_store(SECRETS_AUTH_PASSWORD, p, strlen(p) + 1);
+       if (!ok) {
+               DBG_ERR("Failed storing auth password\n");
+               return false;
+       }
+
+       return true;
+}
+
 
 /* delete a secets database entry
  */
index 9cd351b2b5d2592fa0b812897fbd86cd3371d30c..ff7bfdfd5e7275fc1a6bb2daff45c02c4bfff6ea 100644 (file)
@@ -490,6 +490,7 @@ bld.SAMBA3_LIBRARY('secrets3',
                         dbwrap
                         krb5samba
                         LIBCLI_AUTH
+                        samba-credentials
                         ''',
                    private_library=True)