All Projects → mozilla → authenticator-rs

mozilla / authenticator-rs

Licence: MPL-2.0 license
Rust library to interact with Security Keys, used by Firefox

Programming Languages

rust
11053 projects
python
139335 projects - #7 most used programming language
C++
36643 projects - #6 most used programming language

Labels

Projects that are alternatives of or similar to authenticator-rs

Mixxx
Mixxx is Free DJ software that gives you everything you need to perform live mixes.
Stars: ✭ 2,510 (+1100.96%)
Mutual labels:  hid
mx3000control
Perixx MX-3000 mouse unofficial configuration tool for Linux
Stars: ✭ 20 (-90.43%)
Mutual labels:  hid
uC-USBH
Efficient USB host stack for embedded systems equipped with a USB host or OTG controller. Includes many class drivers such as MSC, HID, CDC-ACM, and USB2Ser.
Stars: ✭ 44 (-78.95%)
Mutual labels:  hid
SerialPundit
Serial port communication in Java - FTDI D2XX, HID API, X/Y modem
Stars: ✭ 116 (-44.5%)
Mutual labels:  hid
ES-Timer
A USB timer powered by Digispark ATtiny85 according to 🍅 pomodoro time management technique
Stars: ✭ 45 (-78.47%)
Mutual labels:  hid
hidstream
Streaming HID events in Node.js
Stars: ✭ 52 (-75.12%)
Mutual labels:  hid
Usbdevice
Highly flexible Composite USB Device Library
Stars: ✭ 144 (-31.1%)
Mutual labels:  hid
u2f ex
A server-side U2F (Universal Second Factor) library in Elixir
Stars: ✭ 25 (-88.04%)
Mutual labels:  u2f
joyconpi
An attempt at emulating a Nintendo Switch Joy-Con controller with a Raspberry Pi
Stars: ✭ 24 (-88.52%)
Mutual labels:  hid
u2f-luks
No description or website provided.
Stars: ✭ 29 (-86.12%)
Mutual labels:  u2f
hidapi-rs
Rust bindings for the hidapi C library
Stars: ✭ 103 (-50.72%)
Mutual labels:  hid
python-hid-parser
Typed pure Python library to parse HID report descriptors
Stars: ✭ 31 (-85.17%)
Mutual labels:  hid
clarion
WebAuthn (U2F) helper for CLI operations (e.g. SSH Log in)
Stars: ✭ 78 (-62.68%)
Mutual labels:  u2f
Streamdecksharp
A simple .NET wrapper for Stream Deck
Stars: ✭ 203 (-2.87%)
Mutual labels:  hid
stadiacontroller
Command line application that emulates an Xbox 360 controller from a wired Stadia controller on Windows.
Stars: ✭ 142 (-32.06%)
Mutual labels:  hid
Authorizer
Authorizer is a Password Manager for Android. It emulates an HID keyboard over USB and enters your credentials on your target device. Additionally it supports OTP 🔑📴
Stars: ✭ 172 (-17.7%)
Mutual labels:  hid
proscene
Processing library for the creation of interactive scenes
Stars: ✭ 45 (-78.47%)
Mutual labels:  hid
libu2f-emu
Universal 2nd Factor (U2F) Emulation C Library
Stars: ✭ 35 (-83.25%)
Mutual labels:  u2f
rx-otp
HMAC-based (HOTP) and Time-based (TOTP) One-Time Password manager. Works with Google Authenticator for Two-Factor Authentication.
Stars: ✭ 79 (-62.2%)
Mutual labels:  u2f
pi400kb
Raw HID keyboard forwarder to turn the Pi 400 into a USB keyboard
Stars: ✭ 182 (-12.92%)
Mutual labels:  hid

A Rust library for interacting with CTAP1/CTAP2 Security Keys

Build Status Maturity Level

This is a cross-platform library for interacting with Security Key-type devices via Rust.

  • Supported Platforms: Windows, Linux, FreeBSD, NetBSD, OpenBSD, and macOS.
  • Supported Transports: USB HID.
  • Supported Protocols: FIDO U2F over USB. CTAP2 support is forthcoming, with work being done in the unstable ctap2 branch.

This library currently focuses on USB security keys, but is expected to be extended to support additional transports.

Usage

There's only a simple example function that tries to register and sign right now. It uses env_logger for logging, which you configure with the RUST_LOG environment variable:

cargo build --example main
RUST_LOG=debug cargo run --example main

Proper usage should be to call into this library from something else - e.g., Firefox. There are some C headers exposed for the purpose.

Tests

There are some tests of the cross-platform runloop logic and the protocol decoder:

cargo test

Fuzzing

There are fuzzers for the USB protocol reader, basically fuzzing inputs from the HID layer. There are not (yet) fuzzers for the C API used by callers (such as Gecko).

To fuzz, you will need cargo-fuzz (the latest version from GitHub) as well as Rust Nightly.

rustup install nightly
cargo install cargo-fuzz

cargo +nightly fuzz run u2f_read -- -max_len=512
cargo +nightly fuzz run u2f_read_write -- -max_len=512
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].