| 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; |
| } |