summaryrefslogtreecommitdiff
path: root/source4
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@samba.org>2024-03-15 19:19:20 +0100
committerAndrew Bartlett <abartlet@samba.org>2024-05-22 03:04:34 +0000
commit8cfebc36edcf5a4ba259d11c6e319aba303ea8ff (patch)
tree056b69a9c8d40b8dc21d99a58633f1111884fa2d /source4
parent83f03513fd5221cb3bf914bd996c86f0840f34dd (diff)
downloadsamba-8cfebc36edcf5a4ba259d11c6e319aba303ea8ff.tar.gz
samba-8cfebc36edcf5a4ba259d11c6e319aba303ea8ff.tar.bz2
samba-8cfebc36edcf5a4ba259d11c6e319aba303ea8ff.zip
s4:kdc: split out samba_kdc_fill_trust_keys() helper
Let samba_kdc_trust_message2entry() also fill in the salt used by the key. This is not strictly needed, but it's better to be consistent. Signed-off-by: Stefan Metzmacher <metze@samba.org> Reviewed-by: Andrew Bartlett <abartlet@samba.org>
Diffstat (limited to 'source4')
-rw-r--r--source4/kdc/db-glue.c42
1 files changed, 42 insertions, 0 deletions
diff --git a/source4/kdc/db-glue.c b/source4/kdc/db-glue.c
index 1c00527d481..2ab3155dffb 100644
--- a/source4/kdc/db-glue.c
+++ b/source4/kdc/db-glue.c
@@ -2179,6 +2179,25 @@ static krb5_error_code samba_kdc_trust_message2entry(krb5_context context,
}
if (supported_enctypes & ENC_HMAC_SHA1_96_AES256) {
+ key.salt = calloc(1, sizeof(*key.salt));
+ if (key.salt == NULL) {
+ smb_krb5_free_data_contents(context, &salt);
+ ret = ENOMEM;
+ goto out;
+ }
+
+ key.salt->type = KRB5_PW_SALT;
+
+ ret = smb_krb5_copy_data_contents(&key.salt->salt,
+ salt.data,
+ salt.length);
+ if (ret) {
+ *key.salt = (struct sdb_salt) {};
+ sdb_key_free(&key);
+ smb_krb5_free_data_contents(context, &salt);
+ goto out;
+ }
+
ret = smb_krb5_create_key_from_string(context,
salt_principal,
&salt,
@@ -2186,6 +2205,8 @@ static krb5_error_code samba_kdc_trust_message2entry(krb5_context context,
ENCTYPE_AES256_CTS_HMAC_SHA1_96,
&key.key);
if (ret != 0) {
+ ZERO_STRUCT(key.key);
+ sdb_key_free(&key);
smb_krb5_free_data_contents(context, &salt);
goto out;
}
@@ -2195,6 +2216,25 @@ static krb5_error_code samba_kdc_trust_message2entry(krb5_context context,
}
if (supported_enctypes & ENC_HMAC_SHA1_96_AES128) {
+ key.salt = calloc(1, sizeof(*key.salt));
+ if (key.salt == NULL) {
+ smb_krb5_free_data_contents(context, &salt);
+ ret = ENOMEM;
+ goto out;
+ }
+
+ key.salt->type = KRB5_PW_SALT;
+
+ ret = smb_krb5_copy_data_contents(&key.salt->salt,
+ salt.data,
+ salt.length);
+ if (ret) {
+ *key.salt = (struct sdb_salt) {};
+ sdb_key_free(&key);
+ smb_krb5_free_data_contents(context, &salt);
+ goto out;
+ }
+
ret = smb_krb5_create_key_from_string(context,
salt_principal,
&salt,
@@ -2202,6 +2242,8 @@ static krb5_error_code samba_kdc_trust_message2entry(krb5_context context,
ENCTYPE_AES128_CTS_HMAC_SHA1_96,
&key.key);
if (ret != 0) {
+ ZERO_STRUCT(key.key);
+ sdb_key_free(&key);
smb_krb5_free_data_contents(context, &salt);
goto out;
}