1 // Copyright 2018 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "device/fido/fido_transport_protocol.h" 6 7 #include "base/notreached.h" 8 9 namespace device { 10 11 const char kUsbHumanInterfaceDevice[] = "usb"; 12 const char kNearFieldCommunication[] = "nfc"; 13 const char kBluetoothLowEnergy[] = "ble"; 14 const char kCloudAssistedBluetoothLowEnergy[] = "cable"; 15 const char kInternal[] = "internal"; 16 ConvertToFidoTransportProtocol(base::StringPiece protocol)17base::Optional<FidoTransportProtocol> ConvertToFidoTransportProtocol( 18 base::StringPiece protocol) { 19 if (protocol == kUsbHumanInterfaceDevice) 20 return FidoTransportProtocol::kUsbHumanInterfaceDevice; 21 else if (protocol == kNearFieldCommunication) 22 return FidoTransportProtocol::kNearFieldCommunication; 23 else if (protocol == kBluetoothLowEnergy) 24 return FidoTransportProtocol::kBluetoothLowEnergy; 25 else if (protocol == kCloudAssistedBluetoothLowEnergy) 26 return FidoTransportProtocol::kCloudAssistedBluetoothLowEnergy; 27 else if (protocol == kInternal) 28 return FidoTransportProtocol::kInternal; 29 else 30 return base::nullopt; 31 } 32 COMPONENT_EXPORT(DEVICE_FIDO)33COMPONENT_EXPORT(DEVICE_FIDO) 34 std::string ToString(FidoTransportProtocol protocol) { 35 switch (protocol) { 36 case FidoTransportProtocol::kUsbHumanInterfaceDevice: 37 return kUsbHumanInterfaceDevice; 38 case FidoTransportProtocol::kNearFieldCommunication: 39 return kNearFieldCommunication; 40 case FidoTransportProtocol::kBluetoothLowEnergy: 41 return kBluetoothLowEnergy; 42 case FidoTransportProtocol::kCloudAssistedBluetoothLowEnergy: 43 return kCloudAssistedBluetoothLowEnergy; 44 case FidoTransportProtocol::kInternal: 45 return kInternal; 46 case FidoTransportProtocol::kAndroidAccessory: 47 // The Android accessory transport is not exposed to the outside world and 48 // is considered a flavour of caBLE. 49 return kCloudAssistedBluetoothLowEnergy; 50 } 51 NOTREACHED(); 52 return ""; 53 } 54 55 } // namespace device 56