2.2.8.1.1 Cryptobinding TLV

The cryptobinding TLV is a TLV, as specified in section 2.2.4. It is used to ensure that the EAP peer and the EAP server participated in both the inner and the outer EAP authentications of a PEAP authentication.

The cryptobinding TLV is carried in the Type-data field of the EAP TLV Extensions Method (section 2.2.8.1).

The fields of the cryptobinding TLV MUST be set 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

M

R

TLV_Type

Length

Value (56 bytes)

...

...

M (1 bit): The M bit MUST be set to 0.

R (1 bit): The R bit is reserved and MUST be set to zero when sent and MUST be ignored on receipt.

TLV_Type (14 bits): A 14-bit unsigned integer in network byte order that indicates the type of data in the Value field. The TLV_Type MUST be set to 12 (0x0C) for the cryptobinding TLV.

Length (2 bytes): A 16-bit unsigned integer in network byte order that indicates the length, in bytes, of the Value field. The value of this field MUST be 56 (0x38).

Value (56 bytes): The Value field of the cryptobinding TLV MUST be formatted 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

Reserved

Version

RecvVersion

SubType

Nonce (32 bytes)

...

...

Compound_MAC (20 bytes)

...

...

Reserved (1 byte): An 8-bit unsigned integer that is reserved and MUST be set to zero when sent and MUST be ignored on receipt.

Version (1 byte): An 8-bit unsigned integer that indicates the version of the cryptobinding TLV and MUST be set to 0.

RecvVersion (1 byte): An 8-bit unsigned integer field that MUST be set to 0.

SubType (1 byte): An 8-bit unsigned integer that indicates whether the cryptobinding TLV is a request or a response. Its value MUST be one of the following.

Value

Meaning

0

This cryptobinding TLV represents a request.

1

This cryptobinding TLV represents a response.

Nonce (32 bytes): A 256-bit unsigned integer containing a temporally unique (random) value. For more information, see [RFC1750].

Compound_MAC (20 bytes): A 160-bit unsigned integer containing the value used to cryptographically associate the phase 1 and phase 2 authentications of PEAP. For more information, see section 3.1.5.5.