4个版本
0.1.1 | 2018年12月10日 |
---|---|
0.1.0 | 2018年11月6日 |
0.0.2 | 2018年11月1日 |
0.0.1 | 2018年10月31日 |
#2111 in 加密
用于passkit
135KB
2K SLoC
Keychain Services for Rust 🔐
Rust对macOS Keychain Services的绑定,包括对Secure Enclave Processor (SEP)中存储的加密密钥的TouchID保护访问。
此绑定旨在使用与Keychain Services本身大部分相同的类型名称来提供轻量级包装,同时提供一个安全、主要符合语法的API,不依赖于例如Core Foundation类型。
注意:这是一个非官方绑定,与Apple没有任何关联!
状态
此crate是实验性的,可能存在错误/内存安全问题。 请自行承担风险!
以下是Keychain Service API的简要概述以及此crate支持的内容
- 密钥链(《code>SecKeychain》)
- 创建密钥链
- 删除密钥链
- 打开密钥链(《code>SecKeychainOpen》)
- 密钥链状态(《code>SecKeychainGetStatus》)
- 密钥链版本(《code>SecKeychainGetVersion》)
- 设置默认密钥链(《code>SecKeychainSetDefault》)
- 密钥链项(《code>SecKeychainItem》)
- 创建密钥链项
- 检索密钥链项
- 获取密钥链项属性
- 删除密钥链项
- 证书/身份(《code>SecCertificate》)
- 创建证书
- 删除证书
- 查询证书
- 签名证书
- 加密密钥(《code>SecKey》)
- 生成加密密钥
- 导入加密密钥
- 导出加密密钥
- 删除加密密钥
- 查询加密密钥
- 查询加密密钥属性
- 数字签名 (ECDSA/RSA)
- 加密
- 密码
- 创建密码
- 查询密码
- 删除密码
测试
该软件包包含两组测试套件
- 核心:
cargo test
- 运行一组最小测试(例如在CI中),这些测试在所有地方都有效,但不涵盖所有功能。 - 交互式:
cargo test --features=interactive-tests --no-run
编译需要用户交互的测试,并且还必须由macOS的代码签名进行签名才能正常工作。请参阅代码签名说明。
代码签名
Keychain Service API需要签名代码才能访问其大部分功能。从未签名的应用程序访问许多API将返回ErrorKind::MissingEntitlement
。
按照以下说明创建自签名代码签名证书: https://developer.apple.com/library/archive/documentation/Security/Conceptual/CodeSigningGuide/Procedures/Procedures.html
您需要使用codesign命令行实用程序(或XCode)来在代码能够访问大多数Keychain Services API功能之前对其进行签名。
许可证
根据您选择的以下许可证之一进行许可
- Apache许可证第2版(LICENSE-APACHE或https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT许可证(LICENSE-MIT或http://opensource.org/licenses/MIT)
任选。
贡献
除非您明确声明,否则您提交的任何贡献,如果有意将其包含在您的工作中,将根据上述条款进行双重许可,而无需任何附加条款或条件。
依赖关系
~2MB
~47K SLoC