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