krb5_context context,
struct samba_kdc_db_context *kdc_db_ctx,
struct samba_kdc_entry_pac entry,
- struct claims_data **claims_data_out);
+ struct claims_data **claims_data_out,
+ bool *_need_regeneration);
krb5_error_code samba_kdc_get_pac(TALLOC_CTX *mem_ctx,
krb5_context context,
context,
kdc_db_ctx,
device,
- &auth_claims.device_claims);
+ &auth_claims.device_claims,
+ NULL); /* _need_regeneration */
if (ret) {
TALLOC_FREE(frame);
return ret;
context,
kdc_db_ctx,
client,
- &pac_claims.user_claims);
+ &pac_claims.user_claims,
+ NULL); /* _need_regeneration */
if (code) {
goto done;
}
context,
kdc_db_ctx,
device,
- &pac_claims.device_claims);
+ &pac_claims.device_claims,
+ NULL); /* _need_regeneration */
if (code) {
goto done;
}
context,
kdc_db_ctx,
auth_entry,
- &auth_claims.user_claims);
+ &auth_claims.user_claims,
+ NULL); /* _need_regeneration */
if (code) {
goto done;
}
krb5_context context,
struct samba_kdc_db_context *kdc_db_ctx,
struct samba_kdc_entry_pac entry,
- struct claims_data **claims_data_out)
+ struct claims_data **claims_data_out,
+ bool *_need_regeneration)
{
bool was_found = false;
krb5_error_code code;
+ if (_need_regeneration != NULL) {
+ *_need_regeneration = false;
+ }
+
if (!samba_krb5_pac_is_trusted(entry)) {
+ if (_need_regeneration != NULL) {
+ *_need_regeneration = true;
+ }
+
return samba_kdc_get_claims_data_from_db(kdc_db_ctx->samdb,
entry.entry,
claims_data_out);
}
}
+ if (_need_regeneration != NULL) {
+ *_need_regeneration = was_found;
+ }
+
return 0;
}
context,
kdc_db_ctx,
device,
- &auth_claims.user_claims);
+ &auth_claims.user_claims,
+ NULL); /* _need_regeneration */
if (code) {
goto out;
}
context,
kdc_db_ctx,
client,
- &auth_claims.user_claims);
+ &auth_claims.user_claims,
+ NULL); /* _need_regeneration */
if (code) {
goto out;
}
context,
kdc_db_ctx,
device,
- &auth_claims.device_claims);
+ &auth_claims.device_claims,
+ NULL); /* _need_regeneration */
if (code) {
goto out;
}