15 个版本 (破坏性)
0.16.0 | 2023年4月22日 |
---|---|
0.15.0 | 2022年4月3日 |
0.14.1 | 2021年4月10日 |
0.14.0 | 2020年11月14日 |
0.5.2 | 2016年9月16日 |
#76 in 身份验证
12,335 每月下载量
用于 5 crates
225KB
5K SLoC
LibreAuth
LibreAuth 是用户身份验证工具集合。
特性
- 密码/口令认证
- 无字符集限制
- 合理的长度限制(安全与拒绝服务攻击)
- 强大、可演化和向后兼容的密码散列函数
- NFKC 对 Unicode 密码进行规范化
- 可选 NIST 特殊出版物 800-63B 兼容性
- 可选在散列密码前后添加外部盐的 HMAC
- HOTP - 基于 HMAC 的一次性密码算法(OATH - RFC 4226)
- 密钥可以以字节、ASCII 字符串、十六进制字符串、base32 字符串或 base64 字符串的形式传递
- 可定制的计数器
- 可定制的散列函数(sha1、完整的 sha2 家族、sha3/Keccak 固定大小家族)
- 可定制的输出长度
- 可定制的输出字母表
- TOTP - 基于时间的一次性密码算法(OATH - RFC 6238)
- 密钥可以以字节、ASCII 字符串、十六进制字符串、base32 字符串或 base64 字符串的形式传递
- 可定制的时间戳
- 可定制的周期
- 可定制的初始时间(T0)
- 可定制的散列函数(sha1、完整的 sha2 家族、sha3/Keccak 固定大小家族)
- 可定制的输出长度
- 可定制的输出字母表
- 可定制的正负周期容差
- 随机密钥生成
- 使用平台的安全熵源
- 可定制的尺寸
- 可定制的输出格式(Vec、十六进制字符串、base32 字符串、base64 字符串)
WebAuthn - Web 认证:访问公钥证书级别的 API(W3C) ⚠️ 尚未开始- 认证器 API
- 服务器 API
状态
该项目仍在开发中,因此在使用 1.0.0 版本之前不应在生产中使用。以下是将在第一个稳定版本中存在的功能及其各自的状态。
- OATH HOTP/TOTP:几乎准备好了!
- ✅ 许多功能
- ✅ 稳定的 API
- ⚠️ 缺乏同行评审
- 密码/口令认证:几乎准备好了!
- ✅ 合理的默认值
- ✅ 稳定的 API
- ⚠️ 缺乏同行评审
- 随机密钥生成:几乎准备好了!
- ⚠️ 稳定的 API
- ⚠️ 缺乏同行评审
在 Rust 项目中使用
您可以在 crates.io 上找到 LibreAuth,并将其包含在您的 Cargo.toml
中。
libreauth = "*"
可以使用 default-features = false
选择性地使用模块,然后仅使用您需要的功能。
[dependencies.libreauth]
version = "*"
default-features = false
features = ["key", "oath", "pass"]
在 Rust 之外使用
为了构建 LibreAuth,您需要 Rust 编译器和其包管理器 Cargo。所需的最小 Rust 版本是 1.60,尽管推荐使用最新的稳定版。
$ make
$ make install
快速示例
Rust
更多示例请参阅 文档。
use libreauth::oath::TOTPBuilder;
fn main() {
let key = "GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ".to_string();
let code = TOTPBuilder::new()
.base32_key(&key)
.finalize()
.unwrap()
.generate();
assert_eq!(code.len(), 6);
}
C
#include <stdio.h>
#include <libreauth.h>
int main(void) {
struct libreauth_totp_cfg cfg;
char code[7], key[] = "12345678901234567890";
if (libreauth_totp_init(&cfg) != LIBREAUTH_OTP_SUCCESS) {
return 1;
}
cfg.key = key;
cfg.key_len = strlen(key);
if (libreauth_totp_generate(&cfg, code) != LIBREAUTH_OTP_SUCCESS) {
return 2;
}
printf("%s\n", code);
return 0;
}
$ cc -o totp totp.c -llibreauth
$ ./totp
848085
许可证
LibreAuth 是一种免费软件,可在 CeCILL-C 许可证或 CeCILL 2.1 许可证下使用。有关这些许可证的简要概述,您可以在许可证网站的 常见问题 中阅读。这些许可证的完整副本以英文和法语形式都可在本存储库中找到。
尽管 CeCILL 2.1 是 LibreAuth 的原始许可证,但未来的版本可能仅以 CeCILL-C 许可证发布。这种变化发生是因为 CeCILL 2.1 并不适合作为库,它是一种“病毒性”许可证。
依赖项
~0–1.2MB
~24K SLoC