Add new Windows 2008 Kerberos PAC Type 12 (apparently again undocumented).
authorGünther Deschner <gd@samba.org>
Tue, 4 Mar 2008 11:26:05 +0000 (12:26 +0100)
committerGünther Deschner <gd@samba.org>
Thu, 6 Mar 2008 16:40:05 +0000 (17:40 +0100)
We need at least to parse this in order to correctly support kerberized session
setup from w2k8 as well as local pam_winbind logons using kerberos.

Guenther
(cherry picked from commit 4ba62d49d740c43cf17ceef1534cf1c8a7e4a130)
(This used to be commit ef0971206cda598e6bfad2ff06a3d2e9e8131682)

source4/librpc/idl/krb5pac.idl

index efd4aa860ff8bda6dae9053b515632b83e69adc0..eed68e138736b48ea89804ef0cc53605bd272bf7 100644 (file)
@@ -31,6 +31,19 @@ interface krb5pac
                samr_RidWithAttributeArray res_groups;
        } PAC_LOGON_INFO;
 
+       typedef struct {
+               [value(2*strlen_m(upn_name))] uint16 upn_size;
+               uint16 unknown1; /* 0x10 */
+               [value(2*strlen_m(domain_name))] uint16 domain_size;
+               uint16 unknown2; /* 0x50 */
+               uint16 unknown3; /* 0x01 */
+               uint16 unknown4;
+               uint32 unknown5;
+               [charset(UTF16)] uint8 upn_name[upn_size+2];
+               [charset(UTF16)] uint8 domain_name[domain_size+2];
+               uint32 unknown6;
+       } PAC_UNKNOWN_12;
+
        typedef [public] struct {
                [value(0x00081001)] uint32 unknown1;
                [value(0xCCCCCCCC)] uint32 unknown2;
@@ -44,7 +57,8 @@ interface krb5pac
                PAC_TYPE_SRV_CHECKSUM = 6,
                PAC_TYPE_KDC_CHECKSUM = 7,
                PAC_TYPE_LOGON_NAME = 10,
-               PAC_TYPE_CONSTRAINED_DELEGATION = 11
+               PAC_TYPE_CONSTRAINED_DELEGATION = 11,
+               PAC_TYPE_UNKNOWN_12 = 12
        } PAC_TYPE;
 
        typedef [public,nodiscriminant,gensize] union {
@@ -52,6 +66,7 @@ interface krb5pac
                [case(PAC_TYPE_SRV_CHECKSUM)]   PAC_SIGNATURE_DATA srv_cksum;
                [case(PAC_TYPE_KDC_CHECKSUM)]   PAC_SIGNATURE_DATA kdc_cksum;
                [case(PAC_TYPE_LOGON_NAME)]     PAC_LOGON_NAME logon_name;
+               [case(PAC_TYPE_UNKNOWN_12)]     PAC_UNKNOWN_12 unknown;
        } PAC_INFO;
 
        typedef [public,nopush,nopull,noprint] struct {