1sequence! { procedure, context,
2    // ACL Connection Established
3    Upper Tester -> IUT: AuthenticationRequested {
4        connection_handle: context.peer_handle()
5    }
6    IUT -> Upper Tester: AuthenticationRequestedStatus {
7       num_hci_command_packets: 1,
8       status: ErrorCode::Success,
9    }
10    IUT -> Upper Tester: LinkKeyRequest {
11        bd_addr: context.peer_address(),
12    }
13    Upper Tester -> IUT: LinkKeyRequestNegativeReply {
14        bd_addr: context.peer_address(),
15    }
16    IUT -> Upper Tester: LinkKeyRequestNegativeReplyComplete {
17       num_hci_command_packets: 1,
18       status: ErrorCode::Success,
19       bd_addr: context.peer_address(),
20    }
21    IUT -> Upper Tester: IoCapabilityRequest {
22        bd_addr: context.peer_address(),
23    }
24    Upper Tester -> IUT: IoCapabilityRequestReply {
25        bd_addr: context.peer_address(),
26        io_capability: IoCapability::KeyboardOnly,
27        oob_present: OobDataPresent::NotPresent,
28        authentication_requirements: AuthenticationRequirements::NoBondingMitmProtection,
29    }
30    IUT -> Upper Tester: IoCapabilityRequestReplyComplete {
31        num_hci_command_packets: 1,
32        status: ErrorCode::Success,
33        bd_addr: context.peer_address(),
34    }
35    IUT -> Lower Tester: IoCapabilityReq {
36        transaction_id: 0,
37        io_capabilities: 0x02,
38        oob_authentication_data: 0x00,
39        authentication_requirement: 0x01,
40    }
41    Lower Tester -> IUT: IoCapabilityRes {
42        transaction_id: 0,
43        io_capabilities: 0x00,
44        oob_authentication_data: 0x00,
45        authentication_requirement: 0x01,
46    }
47    IUT -> Upper Tester: IoCapabilityResponse {
48        bd_addr: context.peer_address(),
49        io_capability: IoCapability::DisplayOnly,
50        oob_data_present: OobDataPresent::NotPresent,
51        authentication_requirements: AuthenticationRequirements::NoBondingMitmProtection,
52    }
53    // Public Key Exchange
54    IUT -> Lower Tester: EncapsulatedHeader {
55        transaction_id: 0,
56        major_type: 1,
57        minor_type: 1,
58        payload_length: 48,
59    }
60    Lower Tester -> IUT: Accepted {
61        transaction_id: 0,
62        accepted_opcode: Opcode::EncapsulatedHeader,
63    }
64    repeat 3 times with (part in local_p192_public_key(&context)) {
65        IUT -> Lower Tester: EncapsulatedPayload {
66            transaction_id: 0,
67            data: part,
68        }
69        Lower Tester -> IUT: Accepted {
70            transaction_id: 0,
71            accepted_opcode: Opcode::EncapsulatedPayload,
72        }
73    }
74    Lower Tester -> IUT: EncapsulatedHeader {
75        transaction_id: 0,
76        major_type: 1,
77        minor_type: 1,
78        payload_length: 48,
79    }
80    IUT -> Lower Tester: Accepted {
81        transaction_id: 0,
82        accepted_opcode: Opcode::EncapsulatedHeader,
83    }
84    repeat 3 times with (part in peer_p192_public_key()) {
85        Lower Tester -> IUT: EncapsulatedPayload {
86            transaction_id: 0,
87            data: part,
88        }
89        IUT -> Lower Tester: Accepted {
90            transaction_id: 0,
91            accepted_opcode: Opcode::EncapsulatedPayload,
92        }
93    }
94    // Authentication Stage 1: Passkey Entry Protocol
95    IUT -> Upper Tester: UserPasskeyRequest {
96        bd_addr: context.peer_address(),
97    }
98    Upper Tester -> IUT: UserPasskeyRequestReply {
99        bd_addr: context.peer_address(),
100        numeric_value: 0,
101    }
102    IUT -> Upper Tester: UserPasskeyRequestReplyComplete {
103        num_hci_command_packets: 1,
104        status: ErrorCode::Success,
105        bd_addr: context.peer_address(),
106    }
107    IUT -> Lower Tester: SimplePairingConfirm {
108        transaction_id: 0,
109        commitment_value: [0; 16],
110    }
111    Lower Tester -> IUT: SimplePairingConfirm {
112        transaction_id: 0,
113        commitment_value: [0; 16],
114    }
115    IUT -> Lower Tester: SimplePairingNumber {
116        transaction_id: 0,
117        nonce: [0; 16],
118    }
119    Lower Tester -> IUT: NotAccepted {
120        transaction_id: 0,
121        not_accepted_opcode: Opcode::SimplePairingNumber,
122        error_code: ErrorCode::AuthenticationFailure.into(),
123    }
124    IUT -> Upper Tester: SimplePairingComplete {
125        status: ErrorCode::AuthenticationFailure,
126        bd_addr: context.peer_address(),
127    }
128    IUT -> Upper Tester: AuthenticationComplete {
129        status: ErrorCode::AuthenticationFailure,
130        connection_handle: context.peer_handle(),
131    }
132}
133