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: NotAccepted { 106 transaction_id: 0, 107 not_accepted_opcode: Opcode::SimplePairingNumber, 108 error_code: 0x05, 109 } 110 IUT -> Upper Tester: SimplePairingComplete { 111 status: ErrorCode::AuthenticationFailure, 112 bd_addr: context.peer_address(), 113 } 114 IUT -> Upper Tester: AuthenticationComplete { 115 status: ErrorCode::AuthenticationFailure, 116 connection_handle: context.peer_handle(), 117 } 118} 119