2个稳定版本
使用旧Rust 2015
1.1.0 | 2017年5月24日 |
---|---|
1.0.0 | 2016年3月7日 |
#2369 在 密码学
7KB
81 行
Certitude for Rust
此仓库包含构建一个能够使用系统原生X.509堆栈验证证书的跨平台Rust库的验证性概念。
这受到Chrome网络浏览器选择在协议级别使用BoringSSL(OpenSSL的分支)进行TLS,但使用系统逻辑验证证书的启发。这使得Chrome应用程序在证书管理方面感觉“本地化”,而无需让他们的网络工程师了解每个平台原生TLS实现的特性。
API
此库的目标是提供两个API:一个适合Rust直接使用,另一个可以通过C ABI调用,以尽可能多的编程语言进行调用。这将使减少语言间的工作重复成为可能:每种语言只需要对Rust库进行一次FFI调用,然后由Rust库处理对各种平台的抽象。
Rust API目前看起来是这样的
extern crate certitude;
use certitude::platform::validate_cert_chain;
fn example() {
// Assume certs is a Vector of DER-encoded certificates.
let valid = validate_cert_chain(certs, "example.com");
if valid {
// The certificate chain is valid.
} else {
// The certificate chain is invalid in some way.
}
}
macOS和Windows的实现可以透明地切换,这样使用此库的用户可以使用单个API,并直接使用适当的平台特定逻辑,而无需干预。当然,这需要针对正确的目标进行构建,但只要正确指定了目标,就会使用正确的代码版本。
工作进展
这目前是一个非常早期的beta版本,我主要在研究该方法的可行性。目前,该库支持macOS和Windows作为有效的证书验证平台。我将研究将其挂钩到OpenSSL的可行性,尽管这被认为是一个比在Windows和macOS上解决这个问题次要的问题,因为使用OpenSSL进行TLS的用户已经可以访问OpenSSL的原生验证逻辑。
依赖项
~42KB