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: UserPasskeyRequestNegativeReply {
99        bd_addr: context.peer_address(),
100    }
101    IUT -> Upper Tester: UserPasskeyRequestNegativeReplyComplete {
102        num_hci_command_packets: 1,
103        status: ErrorCode::Success,
104        bd_addr: context.peer_address(),
105    }
106    IUT -> Lower Tester: PasskeyFailed {
107        transaction_id: 0,
108    }
109    IUT -> Upper Tester: SimplePairingComplete {
110        status: ErrorCode::AuthenticationFailure,
111        bd_addr: context.peer_address(),
112    }
113    IUT -> Upper Tester: AuthenticationComplete {
114        status: ErrorCode::AuthenticationFailure,
115        connection_handle: context.peer_handle(),
116    }
117}
118