OSDN Git Service

SM: Fix cert test
authorMartin Brabham <optedoblivion@google.com>
Wed, 26 Feb 2020 22:32:10 +0000 (14:32 -0800)
committerMartin Brabham <optedoblivion@google.com>
Thu, 27 Feb 2020 03:47:34 +0000 (19:47 -0800)
Bug: 145638034
Test: ./cert/run_cert_facade_only.sh
Change-Id: I68214d6dc80455b6993fcc839071aa5c6eb18a85

gd/security/cert/simple_security_test.py
gd/security/facade.cc
gd/security/facade.proto
gd/security/pairing/classic_pairing_handler.cc

index ff7228e..f7f8edf 100644 (file)
@@ -197,7 +197,11 @@ class SimpleSecurityTest(GdFacadeOnlyBaseTestClass):
                 security_facade.UiCallbackMsg(
                     message_type=security_facade.UiCallbackType.YES_NO,
                     boolean=True,
-                    unique_id=ui_id))
+                    unique_id=ui_id,
+                    address=common.BluetoothAddressWithType(
+                        address=common.BluetoothAddress(address=cert_address),
+                        type=common.BluetoothAddressTypeEnum.
+                        PUBLIC_DEVICE_ADDRESS)))
 
             dut_bond_asserts.assert_event_occurs(
                 lambda bond_event: bond_event.message_type == security_facade.BondMsgType.DEVICE_BONDED
index c9d4ee6..a941b40 100644 (file)
@@ -21,6 +21,7 @@
 #include "security/facade.grpc.pb.h"
 #include "security/security_manager_listener.h"
 #include "security/security_module.h"
+#include "security/ui.h"
 
 namespace bluetooth {
 namespace security {
@@ -30,6 +31,7 @@ class SecurityModuleFacadeService : public SecurityModuleFacade::Service, public
   SecurityModuleFacadeService(SecurityModule* security_module, ::bluetooth::os::Handler* security_handler)
       : security_module_(security_module), security_handler_(security_handler) {
     security_module_->GetSecurityManager()->RegisterCallbackListener(this, security_handler_);
+    security_module_->GetSecurityManager()->SetUserInterfaceHandler(this, security_handler_);
   }
 
   ::grpc::Status CreateBond(::grpc::ServerContext* context, const facade::BluetoothAddressWithType* request,
@@ -66,12 +68,17 @@ class SecurityModuleFacadeService : public SecurityModuleFacade::Service, public
 
   ::grpc::Status SendUiCallback(::grpc::ServerContext* context, const UiCallbackMsg* request,
                                 ::google::protobuf::Empty* response) override {
+    hci::Address peer;
+    ASSERT(hci::Address::FromString(request->address().address().address(), peer));
+    hci::AddressType remote_type = hci::AddressType::PUBLIC_DEVICE_ADDRESS;
+
     switch (request->message_type()) {
       case UiCallbackType::PASSKEY:
         // TODO: security_module_->GetSecurityManager()->OnPasskeyEntry();
         break;
       case UiCallbackType::YES_NO:
-        // TODO: security_module_->GetSecurityManager()->OnConfirmYesNo(request->boolean());
+        security_module_->GetSecurityManager()->OnConfirmYesNo(hci::AddressWithType(peer, remote_type),
+                                                               request->boolean());
         break;
       default:
         LOG_ERROR("Unknown UiCallbackType %d", static_cast<int>(request->message_type()));
@@ -92,6 +99,7 @@ class SecurityModuleFacadeService : public SecurityModuleFacade::Service, public
     display_yes_no.mutable_peer()->set_type(facade::BluetoothAddressTypeEnum::PUBLIC_DEVICE_ADDRESS);
     display_yes_no.set_message_type(UiMsgType::DISPLAY_YES_NO);
     display_yes_no.set_unique_id(unique_id++);
+    ui_events_.OnIncomingEvent(display_yes_no);
   }
 
   virtual void DisplayConfirmValue(const bluetooth::hci::AddressWithType& peer, std::string name,
@@ -113,6 +121,7 @@ class SecurityModuleFacadeService : public SecurityModuleFacade::Service, public
     display_yes_no.mutable_peer()->set_type(facade::BluetoothAddressTypeEnum::PUBLIC_DEVICE_ADDRESS);
     display_yes_no.set_message_type(UiMsgType::DISPLAY_YES_NO);
     display_yes_no.set_unique_id(unique_id++);
+    ui_events_.OnIncomingEvent(display_yes_no);
   }
 
   void DisplayPasskey(const bluetooth::hci::AddressWithType& peer, std::string name, uint32_t passkey) override {
index e1362ae..4655091 100644 (file)
@@ -39,6 +39,7 @@ message UiCallbackMsg {
   bool boolean = 2;
   uint32 numeric_value = 3;
   uint32 unique_id = 4;
+  facade.BluetoothAddressWithType address = 5;
 }
 
 enum BondMsgType {
index feccaa9..53433f0 100644 (file)
@@ -100,9 +100,13 @@ void ClassicPairingHandler::OnPairingPromptAccepted(const bluetooth::hci::Addres
 }
 
 void ClassicPairingHandler::OnConfirmYesNo(const bluetooth::hci::AddressWithType& address, bool confirmed) {
-  LOG_WARN("TODO Not Implemented!");
-  GetChannel()->SendCommand(
-      hci::UserConfirmationRequestReplyBuilder::Create(GetRecord()->GetPseudoAddress().GetAddress()));
+  if (confirmed) {
+    GetChannel()->SendCommand(
+        hci::UserConfirmationRequestReplyBuilder::Create(GetRecord()->GetPseudoAddress().GetAddress()));
+  } else {
+    GetChannel()->SendCommand(
+        hci::UserConfirmationRequestNegativeReplyBuilder::Create(GetRecord()->GetPseudoAddress().GetAddress()));
+  }
 }
 
 void ClassicPairingHandler::OnPasskeyEntry(const bluetooth::hci::AddressWithType& address, uint32_t passkey) {