3.2.5.1 BringUpStartRequest

When the server is in the IDLE state and receives a BringUpStartRequest message (section 2.2.3.1), the server MUST check that the client is trusted.

If there is no pairing relationship between the client and the server, the BringUpStartRequest sent by the client MUST include the HMAC and Timestamp. The server MUST validate that the timestamp is within some allowable skew (recommended 5 minutes). If it is not, the server MUST reply with a BringupFailureResponse with TimestampOutOfSync (9) error (section 2.2.1.2). It MUST also validate that the HMAC is as expected. The HMAC MUST be computed using SHA-256 and a 32-byte pre-shared key (K1). If the HMAC is not as expected, the server should reply with a BringupFailureResponse with the SecurityFailure (10) error (section 2.2.1.2).

If the HMAC and Timestamp match the expected values, or there is a pairing relationship between the client and server, then the server enters the STARTING state and indicates to the higher layer that tethering has to be started.

When the server is in the STARTING state, it MUST NOT process messages.