16 releases

0.5.0 Apr 28, 2024
0.5.0-dev Oct 31, 2023
0.4.9 Nov 16, 2022
0.4.7 Sep 25, 2022
0.4.2-beta.4 Jul 29, 2022

#16 in #authenticator

Download history 7316/week @ 2024-03-17 12399/week @ 2024-03-24 13553/week @ 2024-03-31 4743/week @ 2024-04-07 2889/week @ 2024-04-14 2125/week @ 2024-04-21 3060/week @ 2024-04-28 3151/week @ 2024-05-05 3693/week @ 2024-05-12 3060/week @ 2024-05-19 2553/week @ 2024-05-26 2595/week @ 2024-06-02 2604/week @ 2024-06-09 2738/week @ 2024-06-16 2222/week @ 2024-06-23 860/week @ 2024-06-30

8,729 downloads per month
Used in 9 crates (5 directly)

MPL-2.0 license

555KB
8K SLoC

Webauthn Rust Core

Webauthn is a modern approach to hardware based authentication, consisting of a user with an authenticator device, a browser or client that interacts with the device, and a server that is able to generate challenges and verify the authenticator's validity.

⚠️ WARNING ⚠️

This library implements and exposes the raw elements to create a Webauthn Relying Party. Many of these components have many sharp edges and the ability to confuse users, accidentally allow security bypasses, and more. If possible you SHOULD use Webauthn-RS instead of this crate!

However, if you want to do something truly custom or specific, and you understand the risks, then this library is for you.

Why OpenSSL?

A question I expect is why OpenSSL rather than some other pure-Rust cryptographic providers. There are two major justfications.

The first is that if this library will be used in corporate or major deployments, then cryptographic audits may have to be performed. It is much easier to point toward OpenSSL which has already undergone much more review and auditing than using a series of Rust crates which (while still great!) have not seen the same level of scrutiny.

The second is that OpenSSL is the only library I have found that allows us to reconstruct an EC public key from its X/Y points or an RSA public key from its n/e for use with signature verification. Without this, we are not able to parse authenticator credentials to perform authentication.

Resources

Dependencies

~10MB
~220K SLoC