TALLOC_CTX *tmp_ctx = NULL;
krb5_error_code code;
struct samba_kdc_entry *client_skdc_entry = NULL;
+ krb5_const_principal client_principal = NULL;
struct samba_kdc_entry *server_skdc_entry = NULL;
struct samba_kdc_entry *krbtgt_skdc_entry = NULL;
struct samba_kdc_entry_pac client_pac_entry = {};
return ENOMEM;
}
+ /*
+ * TODO: pass client_principal from the caller
+ *
+ * While krb5_db_entry for 'client' is optional,
+ * the caller should pass client_principal,
+ * for cross realm clients.
+ */
if (client != NULL) {
client_skdc_entry =
talloc_get_type_abort(client->e_data,
struct samba_kdc_entry);
+ client_principal = client->princ;
}
if (krbtgt == NULL) {
}
client_pac_entry = samba_kdc_entry_pac_from_trusted(old_pac,
+ client_principal,
client_skdc_entry,
krbtgt_skdc_entry,
is_trusted);
}
client_pac_entry = samba_kdc_entry_pac_from_trusted(header_pac,
+ client_principal,
NULL, /* client_skdc_entry */
krbtgt_sentry.skdc_entry,
true); /* is_trusted */
}
#else /* MIT */
struct samba_kdc_entry_pac samba_kdc_entry_pac_from_trusted(krb5_const_pac pac,
+ krb5_const_principal pac_princ,
struct samba_kdc_entry *entry,
const struct samba_kdc_entry *krbtgt,
bool is_trusted)
const struct samba_kdc_entry *krbtgt_entry);
#else /* MIT */
struct samba_kdc_entry_pac samba_kdc_entry_pac_from_trusted(krb5_const_pac pac,
+ krb5_const_principal pac_princ,
struct samba_kdc_entry *entry,
const struct samba_kdc_entry *krbtgt_entry,
bool is_trusted);