mit_samba: Add functions to generate random password and salt.
authorAndreas Schneider <asn@samba.org>
Wed, 6 Aug 2014 13:41:05 +0000 (15:41 +0200)
committerAndrew Bartlett <abartlet@samba.org>
Thu, 17 Mar 2016 03:32:28 +0000 (04:32 +0100)
Signed-off-by: Andreas Schneider <asn@samba.org>
Reviewed-by: Sumit Bose <sbose@redhat.com>
Reviewed-by: Guenther Deschner <gd@samba.org>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
source4/kdc/mit_samba.c
source4/kdc/mit_samba.h

index 0f5e1a68cd139706d6d08d8f6d6d5dd3b373b6ba..05c8061247a63834b1d05072910657f93a464e43 100644 (file)
@@ -121,6 +121,55 @@ static krb5_error_code ks_is_tgs_principal(struct mit_samba_context *ctx,
        return eq;
 }
 
+int mit_samba_generate_salt(krb5_data *salt)
+{
+       if (salt == NULL) {
+               return EINVAL;
+       }
+
+       salt->length = 16;
+       salt->data = malloc(salt->length);
+       if (salt->data == NULL) {
+               return ENOMEM;
+       }
+
+       generate_random_buffer((uint8_t *)salt->data, salt->length);
+
+       return 0;
+}
+
+int mit_samba_generate_random_password(krb5_data *pwd)
+{
+       TALLOC_CTX *tmp_ctx;
+       char *password;
+
+       if (pwd == NULL) {
+               return EINVAL;
+       }
+       pwd->length = 24;
+
+       tmp_ctx = talloc_named(NULL,
+                              0,
+                              "mit_samba_create_principal_password context");
+       if (tmp_ctx == NULL) {
+               return ENOMEM;
+       }
+
+       password = generate_random_password(tmp_ctx, pwd->length, pwd->length);
+       if (password == NULL) {
+               talloc_free(tmp_ctx);
+               return ENOMEM;
+       }
+
+       pwd->data = strdup(password);
+       talloc_free(tmp_ctx);
+       if (pwd->data == NULL) {
+               return ENOMEM;
+       }
+
+       return 0;
+}
+
 int mit_samba_get_principal(struct mit_samba_context *ctx,
                            krb5_const_principal principal,
                            unsigned int kflags,
index b7fd16062393618050337be1ffd32ab988c35269..b38bd573db460378051841cb998e19117b8e71b7 100644 (file)
@@ -32,6 +32,10 @@ int mit_samba_context_init(struct mit_samba_context **_ctx);
 
 void mit_samba_context_free(struct mit_samba_context *ctx);
 
+int mit_samba_generate_salt(krb5_data *salt);
+
+int mit_samba_generate_random_password(krb5_data *pwd);
+
 int mit_samba_get_principal(struct mit_samba_context *ctx,
                                   krb5_const_principal principal,
                                   unsigned int kflags,