* @param[in] deleg_blob Fill the delegation info PAC buffer with the given
* blob, use NULL to ignore it.
*
+ * @param[in] client_claims_blob Fill the client claims info PAC buffer with the
+ * given blob, use NULL to ignore it.
+ *
+ * @param[in] device_info_blob Fill the device info PAC buffer with the given
+ * blob, use NULL to ignore it.
+ *
+ * @param[in] device_claims_blob Fill the device claims info PAC buffer with the given
+ * blob, use NULL to ignore it.
+ *
* @param[in] pac The pac buffer to fill. This should be allocated with
* krb5_pac_init() already.
*
const DATA_BLOB *pac_attrs_blob,
const DATA_BLOB *requester_sid_blob,
const DATA_BLOB *deleg_blob,
+ const DATA_BLOB *client_claims_blob,
+ const DATA_BLOB *device_info_blob,
+ const DATA_BLOB *device_claims_blob,
krb5_pac pac)
{
krb5_data logon_data;
return ret;
}
+ if (device_info_blob != NULL) {
+ krb5_data device_info_data = smb_krb5_data_from_blob(*device_info_blob);
+ ret = krb5_pac_add_buffer(context, pac,
+ PAC_TYPE_DEVICE_INFO,
+ &device_info_data);
+ if (ret != 0) {
+ return ret;
+ }
+ }
+
+ if (client_claims_blob != NULL) {
+ krb5_data client_claims_data = smb_krb5_data_from_blob(*client_claims_blob);
+ ret = krb5_pac_add_buffer(context, pac,
+ PAC_TYPE_CLIENT_CLAIMS_INFO,
+ &client_claims_data);
+ if (ret != 0) {
+ return ret;
+ }
+ }
+
+ if (device_claims_blob != NULL) {
+ krb5_data device_claims_data = smb_krb5_data_from_blob(*device_claims_blob);
+ ret = krb5_pac_add_buffer(context, pac,
+ PAC_TYPE_DEVICE_CLAIMS_INFO,
+ &device_claims_data);
+ if (ret != 0) {
+ return ret;
+ }
+ }
+
if (cred_blob != NULL) {
krb5_data cred_data = smb_krb5_data_from_blob(*cred_blob);
ret = krb5_pac_add_buffer(context, pac,
const DATA_BLOB *pac_attrs_blob,
const DATA_BLOB *requester_sid_blob,
const DATA_BLOB *deleg_blob,
+ const DATA_BLOB *client_claims_blob,
+ const DATA_BLOB *device_info_blob,
+ const DATA_BLOB *device_claims_blob,
krb5_pac pac);
bool samba_princ_needs_pac(struct samba_kdc_entry *skdc_entry);
ret = samba_make_krb5_pac(context, logon_blob, cred_blob,
upn_blob, pac_attrs_blob,
- requester_sid_blob, NULL, *pac);
+ requester_sid_blob, NULL,
+ NULL, NULL, NULL,
+ *pac);
talloc_free(mem_ctx);
return ret;