Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8566e8b9 authored by Martin Brabham's avatar Martin Brabham
Browse files

Facade OobDataMessage: Rename members to be generic.

Member names are LE specific when that isn't necessary.
Renaming as Classic now uses the same message too.

Bug: 162984360
Tag: #gd-refactor
Test: cert/run --host SecurityTest:test_successful_dut_initiated_ssp_oob
Test: cert/run --host LeSecurityTest
Change-Id: Ifd2c311a73d3e11cc64e287f18a5cb3e386e2f3c
parent f60aac29
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -93,13 +93,13 @@ class PySecurity(Closable):
                p192_data=OobDataMessage(
                    address=common.BluetoothAddressWithType(
                        address=common.BluetoothAddress(address=address), type=type),
                    le_sc_confirmation_value=bytes(bytearray(p192_oob_data[0])),
                    le_sc_random_value=bytes(bytearray(p192_oob_data[1]))),
                    confirmation_value=bytes(bytearray(p192_oob_data[0])),
                    random_value=bytes(bytearray(p192_oob_data[1]))),
                p256_data=OobDataMessage(
                    address=common.BluetoothAddressWithType(
                        address=common.BluetoothAddress(address=address), type=type),
                    le_sc_confirmation_value=bytes(bytearray(p256_oob_data[0])),
                    le_sc_random_value=bytes(bytearray(p256_oob_data[1])))))
                    confirmation_value=bytes(bytearray(p256_oob_data[0])),
                    random_value=bytes(bytearray(p256_oob_data[1])))))

    def remove_bond(self, address, type):
        """
+16 −16
Original line number Diff line number Diff line
@@ -835,16 +835,16 @@ class LeSecurityTest(GdBaseTestClass):
                self.dut.security.SetOutOfBandData(
                    OobDataMessage(
                        address=self.cert_address,
                        le_sc_confirmation_value=oobdata.le_sc_confirmation_value,
                        le_sc_random_value=oobdata.le_sc_random_value))
                        confirmation_value=oobdata.confirmation_value,
                        random_value=oobdata.random_value))

            if cert_oob_flag == LeOobDataFlag.PRESENT:
                oobdata = self.dut.security.GetOutOfBandData(empty_proto.Empty())
                self.cert.security.SetOutOfBandData(
                    OobDataMessage(
                        address=self.dut_address,
                        le_sc_confirmation_value=oobdata.le_sc_confirmation_value,
                        le_sc_random_value=oobdata.le_sc_random_value))
                        confirmation_value=oobdata.confirmation_value,
                        random_value=oobdata.random_value))

            self.dut.security.SetLeIoCapability(KEYBOARD_ONLY)
            self.dut.security.SetLeOobDataPresent(dut_oob_flag)
@@ -902,16 +902,16 @@ class LeSecurityTest(GdBaseTestClass):
                self.dut.security.SetOutOfBandData(
                    OobDataMessage(
                        address=self.cert_address,
                        le_sc_confirmation_value=oobdata.le_sc_confirmation_value,
                        le_sc_random_value=oobdata.le_sc_random_value))
                        confirmation_value=oobdata.confirmation_value,
                        random_value=oobdata.random_value))

            if cert_oob_flag == LeOobDataFlag.PRESENT:
                oobdata = self.dut.security.GetOutOfBandData(empty_proto.Empty())
                self.cert.security.SetOutOfBandData(
                    OobDataMessage(
                        address=self.dut_address,
                        le_sc_confirmation_value=oobdata.le_sc_confirmation_value,
                        le_sc_random_value=oobdata.le_sc_random_value))
                        confirmation_value=oobdata.confirmation_value,
                        random_value=oobdata.random_value))

            self.dut.security.SetLeIoCapability(KEYBOARD_ONLY)
            self.dut.security.SetLeOobDataPresent(dut_oob_flag)
@@ -969,15 +969,15 @@ class LeSecurityTest(GdBaseTestClass):
            self.dut.security.SetOutOfBandData(
                OobDataMessage(
                    address=self.cert_address,
                    le_sc_confirmation_value=oobdata.le_sc_confirmation_value,
                    le_sc_random_value=oobdata.le_sc_random_value))
                    confirmation_value=oobdata.confirmation_value,
                    random_value=oobdata.random_value))

            oobdata = self.dut.security.GetOutOfBandData(empty_proto.Empty())
            self.cert.security.SetOutOfBandData(
                OobDataMessage(
                    address=self.dut_address,
                    le_sc_confirmation_value=oobdata.le_sc_confirmation_value,
                    le_sc_random_value=oobdata.le_sc_random_value))
                    confirmation_value=oobdata.confirmation_value,
                    random_value=oobdata.random_value))

            self.dut.security.SetLeIoCapability(KEYBOARD_ONLY)
            self.dut.security.SetLeOobDataPresent(OOB_PRESENT)
@@ -1040,15 +1040,15 @@ class LeSecurityTest(GdBaseTestClass):
            self.dut.security.SetOutOfBandData(
                OobDataMessage(
                    address=self.cert_address,
                    le_sc_confirmation_value=oobdata.le_sc_confirmation_value,
                    le_sc_random_value=oobdata.le_sc_random_value))
                    confirmation_value=oobdata.confirmation_value,
                    random_value=oobdata.random_value))

            oobdata = self.dut.security.GetOutOfBandData(empty_proto.Empty())
            self.cert.security.SetOutOfBandData(
                OobDataMessage(
                    address=self.dut_address,
                    le_sc_confirmation_value=oobdata.le_sc_confirmation_value,
                    le_sc_random_value=oobdata.le_sc_random_value))
                    confirmation_value=oobdata.confirmation_value,
                    random_value=oobdata.random_value))

            self.dut.security.SetLeIoCapability(KEYBOARD_ONLY)
            self.dut.security.SetLeOobDataPresent(OOB_PRESENT)
+10 −16
Original line number Diff line number Diff line
@@ -109,22 +109,16 @@ class SecurityModuleFacadeService : public SecurityModuleFacade::Service, public
    pairing::SimplePairingHash c;
    pairing::SimplePairingRandomizer r;
    std::copy(
        std::begin(request->p192_data().le_sc_confirmation_value()),
        std::end(request->p192_data().le_sc_confirmation_value()),
        std::begin(request->p192_data().confirmation_value()),
        std::end(request->p192_data().confirmation_value()),
        c.data());
    std::copy(
        std::begin(request->p192_data().le_sc_random_value()),
        std::end(request->p192_data().le_sc_random_value()),
        r.data());
    std::copy(std::begin(request->p192_data().random_value()), std::end(request->p192_data().random_value()), r.data());
    pairing::OobData p192_data(c, r);
    std::copy(
        std::begin(request->p256_data().le_sc_confirmation_value()),
        std::end(request->p256_data().le_sc_confirmation_value()),
        std::begin(request->p256_data().confirmation_value()),
        std::end(request->p256_data().confirmation_value()),
        c.data());
    std::copy(
        std::begin(request->p256_data().le_sc_random_value()),
        std::end(request->p256_data().le_sc_random_value()),
        r.data());
    std::copy(std::begin(request->p256_data().random_value()), std::end(request->p256_data().random_value()), r.data());
    pairing::OobData p256_data(c, r);
    security_module_->GetSecurityManager()->CreateBondOutOfBand(
        hci::AddressWithType(peer, peer_type), p192_data, p256_data);
@@ -315,11 +309,11 @@ class SecurityModuleFacadeService : public SecurityModuleFacade::Service, public

    std::string le_sc_c_str(17, '\0');
    std::copy(le_sc_c.begin(), le_sc_c.end(), le_sc_c_str.data());
    response->set_le_sc_confirmation_value(le_sc_c_str);
    response->set_confirmation_value(le_sc_c_str);

    std::string le_sc_r_str(17, '\0');
    std::copy(le_sc_r.begin(), le_sc_r.end(), le_sc_r_str.data());
    response->set_le_sc_random_value(le_sc_r_str);
    response->set_random_value(le_sc_r_str);

    return ::grpc::Status::OK;
  }
@@ -336,11 +330,11 @@ class SecurityModuleFacadeService : public SecurityModuleFacade::Service, public
    // We can't simply iterate till end of string, because we have an empty byte added at the end. We know confirm and
    // random are fixed size, 16 bytes
    std::array<uint8_t, 16> le_sc_c;
    auto req_le_sc_c = request->le_sc_confirmation_value();
    auto req_le_sc_c = request->confirmation_value();
    std::copy(req_le_sc_c.begin(), req_le_sc_c.begin() + 16, le_sc_c.data());

    std::array<uint8_t, 16> le_sc_r;
    auto req_le_sc_r = request->le_sc_random_value();
    auto req_le_sc_r = request->random_value();
    std::copy(req_le_sc_r.begin(), req_le_sc_r.begin() + 16, le_sc_r.data());

    security_module_->GetFacadeConfigurationApi()->SetOutOfBandData(peer_with_type, le_sc_c, le_sc_r);
+2 −2
Original line number Diff line number Diff line
@@ -33,8 +33,8 @@ service SecurityModuleFacade {

message OobDataMessage {
  facade.BluetoothAddressWithType address = 1;
  bytes le_sc_confirmation_value = 2;
  bytes le_sc_random_value = 3;
  bytes confirmation_value = 2;
  bytes random_value = 3;
}

message OobDataBondMessage {
+6 −6
Original line number Diff line number Diff line
@@ -59,20 +59,20 @@ void FacadeConfigurationApi::SetLeOobDataPresent(OobDataFlag oob_present) {
}

void FacadeConfigurationApi::GetOutOfBandData(
    std::array<uint8_t, 16>* le_sc_confirmation_value, std::array<uint8_t, 16>* le_sc_random_value) {
  security_manager_impl_->GetOutOfBandData(le_sc_confirmation_value, le_sc_random_value);
    std::array<uint8_t, 16>* confirmation_value, std::array<uint8_t, 16>* random_value) {
  security_manager_impl_->GetOutOfBandData(confirmation_value, random_value);
}

void FacadeConfigurationApi::SetOutOfBandData(
    hci::AddressWithType remote_address,
    std::array<uint8_t, 16> le_sc_confirmation_value,
    std::array<uint8_t, 16> le_sc_random_value) {
    std::array<uint8_t, 16> confirmation_value,
    std::array<uint8_t, 16> random_value) {
  security_handler_->CallOn(
      security_manager_impl_,
      &internal::SecurityManagerImpl::SetOutOfBandData,
      remote_address,
      le_sc_confirmation_value,
      le_sc_random_value);
      confirmation_value,
      random_value);
}

void FacadeConfigurationApi::EnforceSecurityPolicy(
Loading