]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
s4:kdc: Add function to get device PAC entry from Heimdal request structure
authorJoseph Sutton <josephsutton@catalyst.net.nz>
Fri, 29 Sep 2023 00:53:24 +0000 (13:53 +1300)
committerJoseph Sutton <jsutton@samba.org>
Sun, 1 Oct 2023 22:45:38 +0000 (22:45 +0000)
Signed-off-by: Joseph Sutton <josephsutton@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
source4/kdc/kdc-glue.c
source4/kdc/kdc-glue.h

index 86c1eb5395f36b4bb1fa02194f580aa8dacb9a81..8b98d0f8f7ef74f0e951be466c6402270ac1dfc2 100644 (file)
@@ -66,3 +66,27 @@ int kdc_check_pac(krb5_context context,
        return check_pac_checksum(srv_sig, kdc_sig,
                                 context, &keyblock);
 }
+
+struct samba_kdc_entry_pac samba_kdc_get_device_pac(const astgs_request_t r)
+{
+       const hdb_entry *device = kdc_request_get_armor_client(r);
+       struct samba_kdc_entry *device_skdc_entry = NULL;
+       const hdb_entry *device_krbtgt = NULL;
+       const struct samba_kdc_entry *device_krbtgt_skdc_entry = NULL;
+       const krb5_const_pac device_pac = kdc_request_get_armor_pac(r);
+
+       if (device != NULL) {
+               device_skdc_entry = talloc_get_type_abort(device->context,
+                                                         struct samba_kdc_entry);
+
+               device_krbtgt = kdc_request_get_armor_server(r);
+               if (device_krbtgt != NULL) {
+                       device_krbtgt_skdc_entry = talloc_get_type_abort(device_krbtgt->context,
+                                                                        struct samba_kdc_entry);
+               }
+       }
+
+       return samba_kdc_entry_pac(device_pac,
+                                  device_skdc_entry,
+                                  samba_kdc_entry_is_trust(device_krbtgt_skdc_entry));
+}
index f32973e0bc18fc76894fa0d556819aaa19d3a6c6..9497d0622e605e8b5749c195c8d7dc7091c3a9d3 100644 (file)
@@ -56,4 +56,7 @@ int kdc_check_pac(krb5_context krb5_context,
                  DATA_BLOB server_sig,
                  struct PAC_SIGNATURE_DATA *kdc_sig,
                  hdb_entry *ent);
+
+struct samba_kdc_entry_pac samba_kdc_get_device_pac(const astgs_request_t r);
+
 #endif