2 个版本
0.0.3 | 2022年2月14日 |
---|---|
0.0.1 | 2019年9月10日 |
#7 in #krb5
29KB
498 行
[未维护] Rust 的 libkrb5 绑定
此包已不再积极维护。API 覆盖范围非常有限,而且我没有进一步开发它的用例。虽然按照此包中已经建立的模式添加更多 FFI 调用的包装器应该相对简单,但我没有这样的计划。
如果您需要在 Rust 中使用 libkrb5 绑定,我建议查看其他提供此功能的包,或者调查是否直接使用类似 GSSAPI 绑定更适合您的需求。
尽管如此,如果有人真的想接管 libkrb5 和 libkrb5-sys 包的维护工作,请随时联系。
此仓库包含对 MIT Kerberos 5 的客户端库 libkrb5
的安全、惯用 Rust 绑定,以及由 bindgen
在 libkrb5-sys
中生成的底层“不安全”绑定。
线程安全
根据 libkrb5 文档,截至版本 1.4,MIT Kerberos 5 是 线程安全的,除了初始化和销毁上下文函数,这些函数预计不会在不同的线程上并发运行。因此,对 krb5_init_context
和 krb5_init_secure_context
函数以及 krb5_free_contex
的调用通过全局 Mutex 进行同步。
注意:使用 LLVM 的 sanitizers 运行此包的测试套件在某些情况下会显示错误。AddressSanitizer 和 LeakSanitizer 没有问题,但 MemorySanitizer 在构建 log
时导致构建失败(因此与该包无关),ThreadSanitizer 失败 - 据说是因为 lazy_static
代码中的误报(根据一个 已关闭的问题)。
据我所知,此库遵循关于 libkrb5 线程安全使用的文档(通过全局 Mutex 保护上下文初始化和拆除),libkrb5 中的所有其他函数应该是线程安全的。
欢迎贡献
如果您发现错误或想扩展 API 覆盖范围,应该很容易查看现有的包装函数,并为此代码适应其他 libkrb5
API。
依赖关系
~0–1.8MB
~34K SLoC