2.8 PAC_SIGNATURE_DATA

Two PAC_SIGNATURE_DATA structures are appended to the PAC which stores the server and KDC signatures. These structures are placed after the Buffers array of the topmost PACTYPE structure (section 2.3), at the offsets specified in the Offset fields in each of the corresponding PAC_INFO_BUFFER structures (section 2.4) in the Buffers array. The ulType field of the PAC_INFO_BUFFER corresponding to the server signature contains the value 0x00000006 and the ulType field of the PAC_INFO_BUFFER corresponding to the KDC signature contains the value 0x00000007. PAC signatures can be generated only when the PAC is used by the [MS-KILE] protocol because the keys used to create and verify the signatures are the keys known to the KDC. No other protocol can use these PAC signatures.

The PAC_SIGNATURE_DATA structure is defined as follows.

 typedef struct _PAC_SIGNATURE_DATA {
     ULONG SignatureType;
     UCHAR Signature[ANYSIZE_ARRAY];
 } PAC_SIGNATURE_DATA, *PPAC_SIGNATURE_DATA;

The format of the PAC_SIGNATURE_DATA structures is defined as follows.


0


1


2


3


4


5


6


7


8


9

1
0


1


2


3


4


5


6


7


8


9

2
0


1


2


3


4


5


6


7


8


9

3
0


1

SignatureType

Signature (variable)

...

RODCIdentifier

SignatureType (4 bytes): A 32-bit unsigned integer value in little-endian format that defines the cryptographic system used to calculate the checksum. This MUST be one of the values defined in the following table. The corresponding sizes of the signatures are also given. The key used with the cryptographic system corresponds to the value of the ulType field of the outer PAC_INFO_BUFFER structure. The value 0x00000006 specifies the server's key, and the value 0x00000007 specifies the KDC's key.

Value

Meaning

KERB_CHECKSUM_HMAC_MD5

0xFFFFFF76

As specified in [RFC4120] and [RFC4757] section 4. Signature size is 16 bytes. Decimal value is -138.

HMAC_SHA1_96_AES128

0x0000000F

As specified in [RFC3962] section 7. Signature size is 12 bytes. Decimal value is 15.

HMAC_SHA1_96_AES256

0x00000010

As specified in [RFC3962] section 7. Signature size is 12 bytes. Decimal value is 16.

Signature (variable): An array of 8-bit unsigned characters that contains the checksum. The KERB_CHECKSUM_HMAC_MD5 checksum (defined in the preceding table) is 16 bytes in length. The size of the signature is determined by the value of the SignatureType field, as indicated in the preceding table.

RODCIdentifier (2 bytes): A 16-bit unsigned integer value in little-endian format that contains the first 16 bits of the key version number ([MS-KILE] section 3.1.5.8) when the KDC is an RODC. When the KDC is not an RODC, this field does not exist.