[package] name = "webauthn-authenticator-rs" version = "0.5.0" authors = ["William Brown "] edition = "2021" rust-version = "1.70.0" license = "MPL-2.0" description = "Webauthn Authenticator Client Library" # documentation = "https://docs.rs/kanidm/latest/kanidm/" repository = "https://github.com/kanidm/webauthn-rs" [features] nfc_raw_transmit = ["nfc"] # Basic command line `UiCallback` implementation ui-cli = ["dep:rpassword"] # Add QR code support for `UiCallback`, useful with `cable` feature qrcode = ["dep:qrcode", "ui-cli"] crypto = ["dep:openssl", "dep:webauthn-rs-core"] # Authenticator transports mozilla = ["dep:authenticator", "dep:rpassword"] u2fhid = ["mozilla"] bluetooth = ["dep:btleplug", "ctap2"] # caBLE / hybrid authenticator cable = [ "dep:btleplug", "crypto", "ctap2", "dep:hex", "dep:tokio", "dep:tokio-tungstenite", ] # Add APIs which allow overriding the caBLE tunnel server protocol and domain. # # This feature is intended to help someone developing their own caBLE tunnel # server, and most library users should not need this! cable-override-tunnel = ["cable"] ctap2 = [ "crypto", "dep:hex", "dep:serde_bytes", "dep:tokio", "dep:tokio-stream", ] ctap2-management = ["ctap2"] # Support for SoloKey's vendor commands vendor-solokey = [] # Support for YubiKey's vendor commands vendor-yubikey = [] nfc = ["ctap2", "dep:pcsc"] # TODO: allow running softpasskey without softtoken softpasskey = ["crypto", "softtoken"] softtoken = ["crypto", "ctap2"] usb = ["ctap2", "dep:fido-hid-rs"] win10 = ["dep:windows"] default = [] [package.metadata.docs.rs] all-features = true rustdoc-args = ["--cfg", "docsrs"] [dependencies] base64.workspace = true base64urlsafedata.workspace = true webauthn-rs-proto.workspace = true webauthn-rs-core = { workspace = true, optional = true } tracing.workspace = true url.workspace = true uuid.workspace = true serde_json.workspace = true nom.workspace = true serde_cbor_2.workspace = true serde_bytes = { version = "0.11", optional = true } openssl = { workspace = true, optional = true } rpassword = { version = "5.0", optional = true } fido-hid-rs = { workspace = true, optional = true } # authenticator = { path = "../../../authenticator-rs", optional = true, default-features = false, features = ["crypto_openssl"], package = "authenticator-ctap2-2021" } authenticator = { version = "0.3.2-dev.1", optional = true, default-features = false, features = [ "crypto_openssl", ], package = "authenticator-ctap2-2021" } # pcsc = { git = "https://github.com/bluetech/pcsc-rust.git", rev = "13e24649be96989cdffb7e73ca3a994b9534ddff", optional = true } pcsc = { version = "2.8.2", optional = true } windows = { version = "0.41.0", optional = true, features = [ "Win32_Graphics_Gdi", "Win32_Networking_WindowsWebServices", "Win32_Foundation", "Win32_UI_WindowsAndMessaging", "Win32_System_LibraryLoader", "Win32_Graphics_Dwm", ] } serde.workspace = true bitflags = "1.3.2" unicode-normalization = "0.1.22" num-traits = "0.2" num-derive = "0.3" async-stream = "0.3.5" async-trait = "0.1.58" futures.workspace = true qrcode = { version = "^0.12.0", optional = true } # btleplug pinned due to https://github.com/deviceplug/btleplug/issues/289 # Advertisements for the same device get dropped by bluez (Linux). # btleplug = { git = "https://github.com/deviceplug/btleplug.git", rev = "6cf2e8a56c73042a5e263e3afbd20603c6c8f4c0", optional = true } btleplug = { version = "^0.11.5", optional = true } tokio = { workspace = true, optional = true } tokio-stream = { workspace = true, optional = true } tokio-tungstenite = { workspace = true, optional = true } hex = { workspace = true, optional = true } [dev-dependencies] tracing-subscriber.workspace = true clap.workspace = true tokio.workspace = true tempfile = { version = "3.3.0" } # cable_tunnel - used for connecting to Bluetooth HCI controller over serial serialport = { version = "4.2.0" } serialport-hci = { git = "https://github.com/micolous/serialport-hci.git", rev = "7931ad32510ac162f9c4e1147bdd411e40cffa0e" } bluetooth-hci = { git = "https://github.com/micolous/bluetooth-hci.git", rev = "04f98f734b0b9f0304e433335357307f63f6bc26" } # image version needs to match bardecoder's version: # https://github.com/piderman314/bardecoder/blame/master/Cargo.toml bardecoder = "=0.4.0" image = ">= 0.23.14, < 0.24" [build-dependencies] openssl = { workspace = true, optional = true } [[example]] name = "authenticate" required-features = ["crypto", "ui-cli"] [[example]] name = "cable_domain" required-features = ["cable"] [[example]] name = "cable_tunnel" required-features = ["cable", "ui-cli"] [[example]] name = "conformance" required-features = ["nfc", "nfc_raw_transmit", "ui-cli"] [[example]] name = "softtoken" required-features = ["softtoken"]