#keychain #macos #signatures #ecdsa #signature #api-bindings #touchid

keychain-services

通过Rust访问macOS Keychain Services,包括对Secure Enclave Processor (SEP)中存储的加密密钥的TouchID保护访问

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

Apache-2.0

135KB
2K SLoC

Keychain Services for Rust 🔐 iqlusion

Crate Build Status Apache 2.0 Licensed Maintenance Status: Experimental

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功能之前对其进行签名。

许可证

根据您选择的以下许可证之一进行许可

任选。

贡献

除非您明确声明,否则您提交的任何贡献,如果有意将其包含在您的工作中,将根据上述条款进行双重许可,而无需任何附加条款或条件。

依赖关系

~2MB
~47K SLoC