<commit_before># U2F Chrome extension

This is an implementation of a U2F client for Chrome, intended for
experimentation and testing. For general testing, we recommend installing it
from the Chrome Web Store [here][webstore]. In this case, the extension will
automatically update when new versions are released. Any origin may call the
extension; side-loading is not necessary for this.

[webstore]: https://chrome.google.com/webstore/detail/fido-u2f-universal-2nd-fa/pfboblefjcgdjicmnffhdgionmgcdmne

To experiment with modifications to the extension, this folder can be loaded
directly, but the Web Store instance must be disabled or uninstalled. It is
important that the extension id remains the same, as it is whitelisted by
Chrome to allow USB access, which is normally reserved to packaged apps. Thus,
do not modify/remove the key in ``manifest.json``.

## Communicating with the extension

The U2F JavaScript API draft also describes how websites can talk directly to
the extension via a [MessagePort][messageport], in cases where they do not
whish to load a script from the extension. How a port to this extension is
obtained depends on whether the source origin is whitelisted as *externally
connectable* in ``manifest.json``.

[messageport]: http://www.w3.org/TR/webmessaging/#message-ports
<commit_msg>Update README with deprecation notice<commit_after># Deprecation notice
As part of the gradual migration from U2F to WebAuthn, support for this
compiled U2F Chrome extension is being formally deprecated. No further
updates or enhancements are planned, and migration to using the support
built into Chrome or migration to [WebAuthn][webauthn] is recommended.

[webauthn]: https://www.w3.org/TR/webauthn/

# U2F Chrome extension

This is an implementation of a U2F client for Chrome, intended for
experimentation and testing. For general testing, we recommend using Chrome's
built-in support for U2F via the Cryptotoken component extension. In this
case, the extension will automatically update when new versions are released.
Any origin may call the extension; side-loading is not necessary for this.

To experiment with modifications to the extension, this folder can be loaded
directly. It is important that the extension id remains the same, as it is
whitelisted by Chrome to allow USB access, which is normally reserved to
packaged apps. Thus, do not modify/remove the key in ``manifest.json``.

## Communicating with the extension

The U2F JavaScript API draft also describes how websites can talk directly to
the extension via a [MessagePort][messageport], in cases where they do not
whish to load a script from the extension. How a port to this extension is
obtained depends on whether the source origin is whitelisted as *externally
connectable* in ``manifest.json``.

[messageport]: http://www.w3.org/TR/webmessaging/#message-ports

{'fraction_non_alphanumeric': 0.05360896986685354, 'fraction_numerical': 0.004905395935529082, 'mean_word_length': 5.010526315789473, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 2, 'lorem ipsum': 0, 'www.': 3, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '7196863', 'n_tokens_mistral': 745, 'n_tokens_neox': 724, 'n_words': 394}