syntax = "proto3"; package bluetooth.security; import "google/protobuf/empty.proto"; import "facade/common.proto"; import "l2cap/classic/facade.proto"; import "hci/facade/le_initiator_address_facade.proto"; service SecurityModuleFacade { rpc CreateBond(facade.BluetoothAddressWithType) returns (google.protobuf.Empty) {} rpc CreateBondOutOfBand(OobDataBondMessage) returns (google.protobuf.Empty) {} rpc GetOutOfBandData(google.protobuf.Empty) returns (google.protobuf.Empty) {} rpc FetchGetOutOfBandDataEvents(google.protobuf.Empty) returns (stream OobDataBondMessage) {} rpc CreateBondLe(facade.BluetoothAddressWithType) returns (google.protobuf.Empty) {} rpc CancelBond(facade.BluetoothAddressWithType) returns (google.protobuf.Empty) {} rpc RemoveBond(facade.BluetoothAddressWithType) returns (google.protobuf.Empty) {} rpc SetIoCapability(IoCapabilityMessage) returns (google.protobuf.Empty) {} rpc SetAuthenticationRequirements(AuthenticationRequirementsMessage) returns (google.protobuf.Empty) {} rpc SetLeIoCapability(LeIoCapabilityMessage) returns (google.protobuf.Empty) {} rpc SetLeAuthRequirements(LeAuthRequirementsMessage) returns (google.protobuf.Empty) {} rpc SetLeMaximumEncryptionKeySize(LeMaximumEncryptionKeySizeMessage) returns (google.protobuf.Empty) {} rpc GetLeOutOfBandData(google.protobuf.Empty) returns (OobDataMessage) {} rpc SetOutOfBandData(OobDataMessage) returns (google.protobuf.Empty) {} rpc SetLeOobDataPresent(LeOobDataPresentMessage) returns (google.protobuf.Empty) {} rpc SetLeInitiatorAddressPolicy(hci.PrivacyPolicy) returns (google.protobuf.Empty) {} rpc SendUiCallback(UiCallbackMsg) returns (google.protobuf.Empty) {} rpc FetchUiEvents(google.protobuf.Empty) returns (stream UiMsg) {} rpc FetchBondEvents(google.protobuf.Empty) returns (stream BondMsg) {} rpc FetchHelperEvents(google.protobuf.Empty) returns (stream SecurityHelperMsg) {} rpc EnforceSecurityPolicy(SecurityPolicyMessage) returns (google.protobuf.Empty) {} rpc FetchEnforceSecurityPolicyEvents(google.protobuf.Empty) returns (stream EnforceSecurityPolicyMsg) {} rpc FetchDisconnectEvents(google.protobuf.Empty) returns (stream DisconnectMsg) {} } message OobDataMessage { facade.BluetoothAddressWithType address = 1; bytes confirmation_value = 2; bytes random_value = 3; } message OobDataBondMessage { facade.BluetoothAddressWithType address = 1; OobDataMessage p192_data = 2; OobDataMessage p256_data = 3; } enum UiMsgType { DISPLAY_YES_NO_WITH_VALUE = 0; DISPLAY_YES_NO = 1; DISPLAY_PASSKEY = 2; DISPLAY_PASSKEY_ENTRY = 3; DISPLAY_CANCEL = 4; DISPLAY_PAIRING_PROMPT = 5; DISPLAY_PIN_ENTRY = 6; } message UiMsg { UiMsgType message_type = 1; facade.BluetoothAddressWithType peer = 2; uint32 numeric_value = 3; uint32 unique_id = 4; } enum UiCallbackType { YES_NO = 0; PASSKEY = 1; PAIRING_PROMPT = 2; PIN = 3; } message UiCallbackMsg { UiCallbackType message_type = 1; facade.BluetoothAddressWithType address = 2; bool boolean = 3; uint32 numeric_value = 4; uint32 unique_id = 5; bytes pin = 6; } enum BondMsgType { DEVICE_BONDED = 0; DEVICE_UNBONDED = 1; DEVICE_BOND_FAILED = 2; } message BondMsg { BondMsgType message_type = 1; facade.BluetoothAddressWithType peer = 2; uint32 reason = 3; } enum HelperMsgType { DEVICE_DISCONNECTED = 0; } message SecurityHelperMsg { HelperMsgType message_type = 1; facade.BluetoothAddressWithType peer = 2; } enum IoCapabilities { DISPLAY_ONLY = 0; DISPLAY_YES_NO_IO_CAP = 1; KEYBOARD_ONLY = 2; NO_INPUT_NO_OUTPUT = 3; } message IoCapabilityMessage { IoCapabilities capability = 1; } message LeIoCapabilityMessage { enum LeIoCapabilities { DISPLAY_ONLY = 0; DISPLAY_YES_NO_IO_CAP = 1; KEYBOARD_ONLY = 2; NO_INPUT_NO_OUTPUT = 3; KEYBOARD_DISPLAY = 4; } LeIoCapabilities capabilities = 1; } enum AuthenticationRequirements { NO_BONDING = 0; NO_BONDING_MITM_PROTECTION = 1; DEDICATED_BONDING = 2; DEDICATED_BONDING_MITM_PROTECTION = 3; GENERAL_BONDING = 4; GENERAL_BONDING_MITM_PROTECTION = 5; } message AuthenticationRequirementsMessage { AuthenticationRequirements requirement = 1; } message LeAuthRequirementsMessage { bool bond = 1; bool mitm = 2; bool secure_connections = 3; bool keypress = 4; bool ct2 = 5; uint32 reserved_bits = 6; } message LeMaximumEncryptionKeySizeMessage { uint32 maximum_encryption_key_size = 1; } message LeOobDataPresentMessage { enum LeOobDataFlag { NOT_PRESENT = 0; PRESENT = 1; } LeOobDataFlag data_present = 1; } enum OobDataPresent { NOT_PRESENT = 0; P192_PRESENT = 1; P256_PRESENT = 2; P192_AND_256_PRESENT = 3; } message OobDataPresentMessage { OobDataPresent data_present = 1; } message SecurityPolicyMessage { facade.BluetoothAddressWithType address = 1; l2cap.classic.ClassicSecurityPolicy policy = 2; } message EnforceSecurityPolicyMsg { bool result = 1; } message DisconnectMsg { facade.BluetoothAddressWithType address = 1; }