1 个不稳定版本
0.1.0 | 2023年1月7日 |
---|
#1044 在 认证
105KB
2K SLoC
fido2-rs
libfido2 对Rust编程语言的绑定。
更多详情,请见 tyan-boot/fido-rs
use fido2_rs::device::Device;
use fido2_rs::credentials::Credential;
use fido2_rs::credentials::CoseType;
use anyhow::Result;
fn main() -> Result<()> {
let dev = Device::open("windows://hello").expect("unable open windows hello");
let mut cred = Credential::new();
cred.set_client_data(&[1, 2, 3, 4, 5, 6])?;
cred.set_rp("fido_rs", "fido example")?;
cred.set_user(&[1, 2, 3, 4, 5, 6], "alice", Some("alice"), None)?;
cred.set_cose_type(CoseType::RS256)?;
let _ = dev.make_credential(&mut cred, None)?;
dbg!(cred.id());
Ok(())
}
lib.rs
:
Yubico libfido2绑定
此包提供了一个安全的接口来访问Yubico libfido2库。
构建
有多种方式可以定位libfido2。
预构建MSVC二进制文件。
如果rust工具链是msvc,则libfido2-sys
包将从Yubico发布中下载预构建的二进制dll。
从源代码构建。
如果目标是msvc(Windows上的mingw或Linux),则此包将从源代码构建静态库。
构建过程需要C编译器、cmake、libcbor、zlib、libcrypto。
自动
libfido2-sys
包可以通过Windows上的vcpkg和Linux上的pkg-config
自动检测libfido2安装。
可以通过设置环境变量FIDO2_USE_PKG_CONFIG
为任何非空值来启用此方法。
手动
可以使用环境变量FIDO2_LIB_DIR
来帮助libfido2-sys
查找libfido2安装。
该目录应包含libfido2库。
其他依赖项,如libcbor、libcrypto、zlib将使用系统版本。目前没有设置这些库目录的方法,但您可以将它们放在FIDO2_LIB_DIR
中。
示例
枚举系统上的fido设备
use fido2_rs::device::DeviceList;
let list = DeviceList::list_devices(4);
for dev in list {
println!("{:?}", dev.path);
}
创建凭证
use fido2_rs::device::Device;
use fido2_rs::credentials::Credential;
use fido2_rs::credentials::CoseType;
use anyhow::Result;
fn main() -> Result<()> {
let dev = Device::open("windows://hello").expect("unable open windows hello");
let mut cred = Credential::new();
cred.set_client_data(&[1, 2, 3, 4, 5, 6])?;
cred.set_rp("fido_rs", "fido example")?;
cred.set_user(&[1, 2, 3, 4, 5, 6], "alice", Some("alice"), None)?;
cred.set_cose_type(CoseType::RS256)?;
let _ = dev.make_credential(&mut cred, None)?;
dbg!(cred.id());
Ok(())
}
依赖项
~1.8–4.5MB
~97K SLoC