1sequence! { procedure, context, 2 Upper Tester ->IUT: ReadLocalOobData {} 3 IUT -> Upper Tester: ReadLocalOobDataComplete { 4 status: ErrorCode::Success, 5 c: [0; 16], 6 r: [0; 16], 7 } 8 // ACL Connection Established 9 Upper Tester -> IUT: AuthenticationRequested { 10 connection_handle: context.peer_handle() 11 } 12 IUT -> Upper Tester: AuthenticationRequestedStatus { 13 num_hci_command_packets: 1, 14 status: ErrorCode::Success, 15 } 16 IUT -> Upper Tester: LinkKeyRequest { 17 bd_addr: context.peer_address(), 18 } 19 Upper Tester -> IUT: LinkKeyRequestNegativeReply { 20 bd_addr: context.peer_address(), 21 } 22 IUT -> Upper Tester: LinkKeyRequestNegativeReplyComplete { 23 num_hci_command_packets: 1, 24 status: ErrorCode::Success, 25 bd_addr: context.peer_address(), 26 } 27 IUT -> Upper Tester: IoCapabilityRequest { 28 bd_addr: context.peer_address(), 29 } 30 Upper Tester -> IUT: IoCapabilityRequestReply { 31 bd_addr: context.peer_address(), 32 io_capability: IoCapability::DisplayYesNo, 33 oob_present: OobDataPresent::NotPresent, 34 authentication_requirements: AuthenticationRequirements::NoBondingMitmProtection, 35 } 36 IUT -> Upper Tester: IoCapabilityRequestReplyComplete { 37 num_hci_command_packets: 1, 38 status: ErrorCode::Success, 39 bd_addr: context.peer_address(), 40 } 41 IUT -> Lower Tester: IoCapabilityReq { 42 transaction_id: 0, 43 io_capabilities: 0x01, 44 oob_authentication_data: 0x00, 45 authentication_requirement: 0x01, 46 } 47 Lower Tester -> IUT: IoCapabilityRes { 48 transaction_id: 0, 49 io_capabilities: 0x01, 50 oob_authentication_data: 0x01, 51 authentication_requirement: 0x01, 52 } 53 IUT -> Upper Tester: IoCapabilityResponse { 54 bd_addr: context.peer_address(), 55 io_capability: IoCapability::DisplayYesNo, 56 oob_data_present: OobDataPresent::P192Present, 57 authentication_requirements: AuthenticationRequirements::NoBondingMitmProtection, 58 } 59 // Public Key Exchange 60 IUT -> Lower Tester: EncapsulatedHeader { 61 transaction_id: 0, 62 major_type: 1, 63 minor_type: 1, 64 payload_length: 48, 65 } 66 Lower Tester -> IUT: Accepted { 67 transaction_id: 0, 68 accepted_opcode: Opcode::EncapsulatedHeader, 69 } 70 repeat 3 times with (part in local_p192_public_key(&context)) { 71 IUT -> Lower Tester: EncapsulatedPayload { 72 transaction_id: 0, 73 data: part, 74 } 75 Lower Tester -> IUT: Accepted { 76 transaction_id: 0, 77 accepted_opcode: Opcode::EncapsulatedPayload, 78 } 79 } 80 Lower Tester -> IUT: EncapsulatedHeader { 81 transaction_id: 0, 82 major_type: 1, 83 minor_type: 1, 84 payload_length: 48, 85 } 86 IUT -> Lower Tester: Accepted { 87 transaction_id: 0, 88 accepted_opcode: Opcode::EncapsulatedHeader, 89 } 90 repeat 3 times with (part in peer_p192_public_key()) { 91 Lower Tester -> IUT: EncapsulatedPayload { 92 transaction_id: 0, 93 data: part, 94 } 95 IUT -> Lower Tester: Accepted { 96 transaction_id: 0, 97 accepted_opcode: Opcode::EncapsulatedPayload, 98 } 99 } 100 // Authentication Stage 1: OOB Protocol 101 IUT -> Lower Tester: SimplePairingNumber { 102 transaction_id: 0, 103 nonce: [0; 16], 104 } 105 Lower Tester -> IUT: Accepted { 106 transaction_id: 0, 107 accepted_opcode: Opcode::SimplePairingNumber, 108 } 109 Lower Tester -> IUT: SimplePairingNumber { 110 transaction_id: 0, 111 nonce: [0; 16], 112 } 113 IUT -> Lower Tester: Accepted { 114 transaction_id: 0, 115 accepted_opcode: Opcode::SimplePairingNumber, 116 } 117 // Authentication Stage 2 118 IUT -> Lower Tester: DhkeyCheck { 119 transaction_id: 0, 120 confirmation_value: [0; 16], 121 } 122 Lower Tester -> IUT: Accepted { transaction_id: 0, accepted_opcode: Opcode::DhkeyCheck } 123 Lower Tester -> IUT: DhkeyCheck { 124 transaction_id: 0, 125 confirmation_value: [0; 16], 126 } 127 IUT -> Lower Tester: Accepted { transaction_id: 0, accepted_opcode: Opcode::DhkeyCheck } 128 IUT -> Upper Tester: SimplePairingComplete { 129 status: ErrorCode::Success, 130 bd_addr: context.peer_address(), 131 } 132 // Link Key Calculation 133 IUT -> Lower Tester: AuRand { 134 transaction_id: 0, 135 random_number: [0; 16], 136 } 137 Lower Tester -> IUT: Sres { 138 transaction_id: 0, 139 authentication_rsp: [0; 4], 140 } 141 Lower Tester -> IUT: AuRand { 142 transaction_id: 0, 143 random_number: [0; 16], 144 } 145 IUT -> Lower Tester: Sres { 146 transaction_id: 0, 147 authentication_rsp: [0; 4], 148 } 149 IUT -> Upper Tester: LinkKeyNotification { 150 bd_addr: context.peer_address(), 151 key_type: KeyType::AuthenticatedP192, 152 link_key: [0; 16], 153 } 154 IUT -> Upper Tester: AuthenticationComplete { 155 status: ErrorCode::Success, 156 connection_handle: context.peer_handle(), 157 } 158} 159