159 lines
		
	
	
		
			5.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
			
		
		
	
	
			159 lines
		
	
	
		
			5.0 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
 | 
						|
    Upper Tester -> IUT: AuthenticationRequested {
 | 
						|
        connection_handle: context.peer_handle()
 | 
						|
    }
 | 
						|
    IUT -> Upper Tester: AuthenticationRequestedStatus {
 | 
						|
       num_hci_command_packets: 1,
 | 
						|
       status: ErrorCode::Success,
 | 
						|
    }
 | 
						|
    IUT -> Upper Tester: LinkKeyRequest {
 | 
						|
        bd_addr: context.peer_address(),
 | 
						|
    }
 | 
						|
    Upper Tester -> IUT: LinkKeyRequestNegativeReply {
 | 
						|
        bd_addr: context.peer_address(),
 | 
						|
    }
 | 
						|
    IUT -> Upper Tester: LinkKeyRequestNegativeReplyComplete {
 | 
						|
       num_hci_command_packets: 1,
 | 
						|
       status: ErrorCode::Success,
 | 
						|
       bd_addr: context.peer_address(),
 | 
						|
    }
 | 
						|
    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::NotPresent,
 | 
						|
        authentication_requirements: AuthenticationRequirements::NoBondingMitmProtection,
 | 
						|
    }
 | 
						|
    IUT -> Upper Tester: IoCapabilityRequestReplyComplete {
 | 
						|
        num_hci_command_packets: 1,
 | 
						|
        status: ErrorCode::Success,
 | 
						|
        bd_addr: context.peer_address(),
 | 
						|
    }
 | 
						|
    IUT -> Lower Tester: IoCapabilityReq {
 | 
						|
        transaction_id: 0,
 | 
						|
        io_capabilities: 0x01,
 | 
						|
        oob_authentication_data: 0x00,
 | 
						|
        authentication_requirement: 0x01,
 | 
						|
    }
 | 
						|
    Lower Tester -> IUT: IoCapabilityRes {
 | 
						|
        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,
 | 
						|
    }
 | 
						|
    // Public Key Exchange
 | 
						|
    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,
 | 
						|
        }
 | 
						|
    }
 | 
						|
    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,
 | 
						|
        }
 | 
						|
    }
 | 
						|
    // Authentication Stage 1: OOB Protocol
 | 
						|
    IUT -> Lower Tester: SimplePairingNumber {
 | 
						|
        transaction_id: 0,
 | 
						|
        nonce: [0; 16],
 | 
						|
    }
 | 
						|
    Lower Tester -> IUT: Accepted {
 | 
						|
        transaction_id: 0,
 | 
						|
        accepted_opcode: Opcode::SimplePairingNumber,
 | 
						|
    }
 | 
						|
    Lower Tester -> IUT: SimplePairingNumber {
 | 
						|
        transaction_id: 0,
 | 
						|
        nonce: [0; 16],
 | 
						|
    }
 | 
						|
    IUT -> Lower Tester: Accepted {
 | 
						|
        transaction_id: 0,
 | 
						|
        accepted_opcode: Opcode::SimplePairingNumber,
 | 
						|
    }
 | 
						|
    // Authentication Stage 2
 | 
						|
    IUT -> Lower Tester: DhkeyCheck {
 | 
						|
        transaction_id: 0,
 | 
						|
        confirmation_value: [0; 16],
 | 
						|
    }
 | 
						|
    Lower Tester -> IUT: Accepted { transaction_id: 0, accepted_opcode: Opcode::DhkeyCheck }
 | 
						|
    Lower Tester -> IUT: DhkeyCheck {
 | 
						|
        transaction_id: 0,
 | 
						|
        confirmation_value: [0; 16],
 | 
						|
    }
 | 
						|
    IUT -> Lower Tester: Accepted { transaction_id: 0, accepted_opcode: Opcode::DhkeyCheck }
 | 
						|
    IUT -> Upper Tester: SimplePairingComplete {
 | 
						|
        status: ErrorCode::Success,
 | 
						|
        bd_addr: context.peer_address(),
 | 
						|
    }
 | 
						|
    // Link Key Calculation
 | 
						|
    IUT -> Lower Tester: AuRand {
 | 
						|
        transaction_id: 0,
 | 
						|
        random_number: [0; 16],
 | 
						|
    }
 | 
						|
    Lower Tester -> IUT: Sres {
 | 
						|
        transaction_id: 0,
 | 
						|
        authentication_rsp: [0; 4],
 | 
						|
    }
 | 
						|
    Lower Tester -> IUT: AuRand {
 | 
						|
        transaction_id: 0,
 | 
						|
        random_number: [0; 16],
 | 
						|
    }
 | 
						|
    IUT -> Lower Tester: 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],
 | 
						|
    }
 | 
						|
    IUT -> Upper Tester: AuthenticationComplete {
 | 
						|
        status: ErrorCode::Success,
 | 
						|
        connection_handle: context.peer_handle(),
 | 
						|
    }
 | 
						|
}
 |