tree: 413576822a2ede734f66bfc9aa2358f00e74cb39 [path history] [tgz]
  1. BUILD.gn
  2. DEPS
  3. OWNERS
  4. README.md
  5. attestation_object.cc
  6. attestation_object.h
  7. attestation_statement.cc
  8. attestation_statement.h
  9. attestation_statement_formats.cc
  10. attestation_statement_formats.h
  11. attestation_statement_formats_unittest.cc
  12. attested_credential_data.cc
  13. attested_credential_data.h
  14. authenticator_data.cc
  15. authenticator_data.h
  16. authenticator_get_assertion_response.cc
  17. authenticator_get_assertion_response.h
  18. authenticator_get_info_response.cc
  19. authenticator_get_info_response.h
  20. authenticator_make_credential_response.cc
  21. authenticator_make_credential_response.h
  22. authenticator_selection_criteria.cc
  23. authenticator_selection_criteria.h
  24. authenticator_supported_options.cc
  25. authenticator_supported_options.h
  26. ble/
  27. ble_adapter_manager.cc
  28. ble_adapter_manager.h
  29. ble_adapter_manager_unittest.cc
  30. cable/
  31. ctap2_device_operation.h
  32. ctap_empty_authenticator_request.cc
  33. ctap_empty_authenticator_request.h
  34. ctap_get_assertion_request.cc
  35. ctap_get_assertion_request.h
  36. ctap_make_credential_request.cc
  37. ctap_make_credential_request.h
  38. ctap_request_unittest.cc
  39. ctap_response_fuzzer.cc
  40. ctap_response_unittest.cc
  41. device_operation.h
  42. device_response_converter.cc
  43. device_response_converter.h
  44. ec_public_key.cc
  45. ec_public_key.h
  46. fake_fido_discovery.cc
  47. fake_fido_discovery.h
  48. fake_fido_discovery_unittest.cc
  49. features.cc
  50. features.h
  51. fido_authenticator.h
  52. fido_constants.cc
  53. fido_constants.h
  54. fido_device.cc
  55. fido_device.h
  56. fido_device_authenticator.cc
  57. fido_device_authenticator.h
  58. fido_device_discovery.cc
  59. fido_device_discovery.h
  60. fido_device_discovery_unittest.cc
  61. fido_discovery_base.cc
  62. fido_discovery_base.h
  63. fido_discovery_factory.cc
  64. fido_discovery_factory.h
  65. fido_parsing_utils.cc
  66. fido_parsing_utils.h
  67. fido_parsing_utils_unittest.cc
  68. fido_request_handler.h
  69. fido_request_handler_base.cc
  70. fido_request_handler_base.h
  71. fido_request_handler_unittest.cc
  72. fido_strings.grd
  73. fido_task.cc
  74. fido_task.h
  75. fido_test_data.h
  76. fido_transport_protocol.cc
  77. fido_transport_protocol.h
  78. get_assertion_handler_unittest.cc
  79. get_assertion_request_handler.cc
  80. get_assertion_request_handler.h
  81. get_assertion_task.cc
  82. get_assertion_task.h
  83. get_assertion_task_unittest.cc
  84. hid/
  85. mac/
  86. make_credential_handler_unittest.cc
  87. make_credential_request_handler.cc
  88. make_credential_request_handler.h
  89. make_credential_task.cc
  90. make_credential_task.h
  91. make_credential_task_unittest.cc
  92. mock_fido_device.cc
  93. mock_fido_device.h
  94. mock_fido_discovery_observer.cc
  95. mock_fido_discovery_observer.h
  96. opaque_attestation_statement.cc
  97. opaque_attestation_statement.h
  98. opaque_public_key.cc
  99. opaque_public_key.h
  100. platform_credential_store.h
  101. public_key.cc
  102. public_key.h
  103. public_key_credential_descriptor.cc
  104. public_key_credential_descriptor.h
  105. public_key_credential_params.cc
  106. public_key_credential_params.h
  107. public_key_credential_rp_entity.cc
  108. public_key_credential_rp_entity.h
  109. public_key_credential_user_entity.cc
  110. public_key_credential_user_entity.h
  111. response_data.cc
  112. response_data.h
  113. response_data_fuzzer_corpus/
  114. scoped_virtual_fido_device.cc
  115. scoped_virtual_fido_device.h
  116. strings/
  117. test_callback_receiver.h
  118. test_callback_receiver_unittest.cc
  119. u2f_command_constructor.cc
  120. u2f_command_constructor.h
  121. u2f_command_constructor_unittest.cc
  122. u2f_register_operation.cc
  123. u2f_register_operation.h
  124. u2f_register_operation_unittest.cc
  125. u2f_sign_operation.cc
  126. u2f_sign_operation.h
  127. u2f_sign_operation_unittest.cc
  128. virtual_ctap2_device.cc
  129. virtual_ctap2_device.h
  130. virtual_fido_device.cc
  131. virtual_fido_device.h
  132. virtual_u2f_device.cc
  133. virtual_u2f_device.h
  134. win/
device/fido/README.md

FIDO

//device/fido contains abstractions for FIDO security keys across multiple platforms.

U2F Security Keys

Support for U2F (FIDO 1.2) security keys is present for both USB Human Interface Devices (USB HID) and Bluetooth Low Energy (BLE) devices. Clients can perform U2F operations using the U2fRegister and U2fSign classes. These abstractions automatically perform device discovery and handle communication with the underlying devices. Talking to HID devices is done using the HID Mojo service, while communication with BLE devices is done using abstractions found in //device/bluetooth. HID is supported on all desktop platforms, while BLE lacks some support on Windows (see //device/bluetooth/README.md for details).

CTAP Security Keys

Support for CTAP2 (FIDO 2.0) security keys is in active development and aims to unify the implementations for both U2F and CTAP keys.

Testing

Unit Tests

Standard use of *_unittest.cc files for must code coverage. Files prefixed with mock_ provide GoogleMock based fake objects for easy mocking of dependencies during testing.

Fuzzers

libFuzzer tests are in *_fuzzer.cc files. They test for bad input from devices, e.g. when parsing responses to register or sign operations.