150 lines
4.7 KiB
Plaintext
150 lines
4.7 KiB
Plaintext
sequence! { procedure, context,
|
|
Upper Tester ->IUT: ReadLocalOobData {}
|
|
IUT -> Upper Tester: ReadLocalOobDataComplete {
|
|
status: ErrorCode::Success,
|
|
c: [0; 16],
|
|
r: [0; 16],
|
|
}
|
|
// ACL Connection Established
|
|
Lower Tester -> IUT: IoCapabilityReq {
|
|
transaction_id: 0,
|
|
io_capabilities: 0x01,
|
|
oob_authentication_data: 0x01,
|
|
authentication_requirement: 0x01,
|
|
}
|
|
IUT -> Upper Tester: IoCapabilityResponse {
|
|
bd_addr: context.peer_address(),
|
|
io_capability: IoCapability::DisplayYesNo,
|
|
oob_data_present: OobDataPresent::P192Present,
|
|
authentication_requirements: AuthenticationRequirements::NoBondingMitmProtection,
|
|
}
|
|
IUT -> Upper Tester: IoCapabilityRequest {
|
|
bd_addr: context.peer_address(),
|
|
}
|
|
Upper Tester -> IUT: IoCapabilityRequestReply {
|
|
bd_addr: context.peer_address(),
|
|
io_capability: IoCapability::DisplayYesNo,
|
|
oob_present: OobDataPresent::P192Present,
|
|
authentication_requirements: AuthenticationRequirements::NoBondingMitmProtection,
|
|
}
|
|
IUT -> Upper Tester: IoCapabilityRequestReplyComplete {
|
|
num_hci_command_packets: 1,
|
|
status: ErrorCode::Success,
|
|
bd_addr: context.peer_address(),
|
|
}
|
|
IUT -> Lower Tester: IoCapabilityRes {
|
|
transaction_id: 0,
|
|
io_capabilities: 0x01,
|
|
oob_authentication_data: 0x01,
|
|
authentication_requirement: 0x01,
|
|
}
|
|
// Public Key Exchange
|
|
Lower Tester -> IUT: EncapsulatedHeader {
|
|
transaction_id: 0,
|
|
major_type: 1,
|
|
minor_type: 1,
|
|
payload_length: 48,
|
|
}
|
|
IUT -> Lower Tester: Accepted {
|
|
transaction_id: 0,
|
|
accepted_opcode: Opcode::EncapsulatedHeader,
|
|
}
|
|
repeat 3 times with (part in peer_p192_public_key()) {
|
|
Lower Tester -> IUT: EncapsulatedPayload {
|
|
transaction_id: 0,
|
|
data: part,
|
|
}
|
|
IUT -> Lower Tester: Accepted {
|
|
transaction_id: 0,
|
|
accepted_opcode: Opcode::EncapsulatedPayload,
|
|
}
|
|
}
|
|
IUT -> Lower Tester: EncapsulatedHeader {
|
|
transaction_id: 0,
|
|
major_type: 1,
|
|
minor_type: 1,
|
|
payload_length: 48,
|
|
}
|
|
Lower Tester -> IUT: Accepted {
|
|
transaction_id: 0,
|
|
accepted_opcode: Opcode::EncapsulatedHeader,
|
|
}
|
|
repeat 3 times with (part in local_p192_public_key(&context)) {
|
|
IUT -> Lower Tester: EncapsulatedPayload {
|
|
transaction_id: 0,
|
|
data: part,
|
|
}
|
|
Lower Tester -> IUT: Accepted {
|
|
transaction_id: 0,
|
|
accepted_opcode: Opcode::EncapsulatedPayload,
|
|
}
|
|
}
|
|
// Authentication Stage 1: OOB Protocol
|
|
IUT -> Upper Tester: RemoteOobDataRequest {
|
|
bd_addr: context.peer_address(),
|
|
}
|
|
Upper Tester -> IUT: RemoteOobDataRequestReply {
|
|
bd_addr: context.peer_address(),
|
|
c: [0; 16],
|
|
r: [0; 16],
|
|
}
|
|
IUT -> Upper Tester: RemoteOobDataRequestReplyComplete {
|
|
num_hci_command_packets: 1,
|
|
status: ErrorCode::Success,
|
|
bd_addr: context.peer_address(),
|
|
}
|
|
Lower Tester -> IUT: SimplePairingNumber {
|
|
transaction_id: 0,
|
|
nonce: [0; 16],
|
|
}
|
|
IUT -> Lower Tester: Accepted {
|
|
transaction_id: 0,
|
|
accepted_opcode: Opcode::SimplePairingNumber,
|
|
}
|
|
IUT -> Lower Tester: SimplePairingNumber {
|
|
transaction_id: 0,
|
|
nonce: [0; 16],
|
|
}
|
|
Lower Tester -> IUT: Accepted {
|
|
transaction_id: 0,
|
|
accepted_opcode: Opcode::SimplePairingNumber,
|
|
}
|
|
// Authentication Stage 2
|
|
Lower Tester -> IUT: DhkeyCheck {
|
|
transaction_id: 0,
|
|
confirmation_value: [0; 16],
|
|
}
|
|
IUT -> Lower Tester: Accepted { transaction_id: 0, accepted_opcode: Opcode::DhkeyCheck }
|
|
IUT -> Lower Tester: DhkeyCheck {
|
|
transaction_id: 0,
|
|
confirmation_value: [0; 16],
|
|
}
|
|
Lower Tester -> IUT: Accepted { transaction_id: 0, accepted_opcode: Opcode::DhkeyCheck }
|
|
IUT -> Upper Tester: SimplePairingComplete {
|
|
status: ErrorCode::Success,
|
|
bd_addr: context.peer_address(),
|
|
}
|
|
// Link Key Calculation
|
|
Lower Tester -> IUT: AuRand {
|
|
transaction_id: 0,
|
|
random_number: [0; 16],
|
|
}
|
|
IUT -> Lower Tester: Sres {
|
|
transaction_id: 0,
|
|
authentication_rsp: [0; 4],
|
|
}
|
|
IUT -> Lower Tester: AuRand {
|
|
transaction_id: 0,
|
|
random_number: [0; 16],
|
|
}
|
|
Lower Tester -> IUT: Sres {
|
|
transaction_id: 0,
|
|
authentication_rsp: [0; 4],
|
|
}
|
|
IUT -> Upper Tester: LinkKeyNotification {
|
|
bd_addr: context.peer_address(),
|
|
key_type: KeyType::AuthenticatedP192,
|
|
link_key: [0; 16],
|
|
}
|
|
}
|