kanidm / webauthn-rs

An implementation of webauthn components for Rustlang servers
Mozilla Public License 2.0
483 stars 80 forks source link

Add "HumanBinaryData" as an alternative to "Base64UrlSafeData" #354

Closed micolous closed 11 months ago

micolous commented 11 months ago

Related to issue #352, it doesn't fix things, but it's a start.

HumanBinaryData uses a more efficient "bytes" format when using non-human-readable serialisation formats (like CBOR). The deserialiser still uses deserialize_any – I haven't got a great way around this yet.

I've done a few things differently to Base64UrlSafeData; for example, this doesn't implement Display or FromStr – they're different to what Vec<u8> does, and we should move away from this (this will be the focus of #356).

It also implements Deref and DerefMut, which should make the type more transparent – and all of the common impls are in macros.

I've added bytes support to Base64UrlSafeData, so it can read what HumanBinaryData produces. Unfortunately this makes migration a two-step process.

While we're here, this makes serde_json a dev-dependency of base64urlsafedata, because it's only used in tests; and this also adds a bunch more tests for expected input formats.

micolous commented 11 months ago

Clippy appears to fail due to checks in 1.70.0, possibly triggered by https://github.com/kanidm/webauthn-rs/pull/348. https://github.com/kanidm/webauthn-rs/pull/355 should fix that.