10个版本
0.4.3 | 2022年10月18日 |
---|---|
0.4.2 | 2022年8月2日 |
0.4.1 | 2021年10月29日 |
0.3.2 | 2021年10月5日 |
0.1.0 | 2021年8月30日 |
#580 在 编码
每月2,058次下载
在 krill 中使用
405KB
6.5K SLoC
kmip-protocol - 用于序列化和反序列化KMIP协议对象的库
KMIP:
定义在密钥管理服务器上操作加密材料的消息格式的OASIS密钥管理互操作性协议规范。
欢迎
此crate提供了一个KMIP v1.0-1.2协议消息(主要用于Krill项目)的(反)序列化的部分实现。提供的接口基于流行的Rust Serde(反)序列化框架,用于使用属性装饰任意高级Rust“业务对象”结构体,以指导(反)序列化过程。
有关规范实现水平和测试覆盖范围的详细信息,请参阅crate文档。
范围
此crate包括
- 许多Serde属性Rust类型定义,代表KMIP请求和响应业务对象。
- 一个
Client
结构体,它使用kmip-ttlv
crate将整个KMIP请求(由业务对象类型组成)序列化到写入器,并从读取器反序列化响应。 - 可选的示例同步和异步TLS实现,展示如何使用
Client
与KMIP服务器进行通信。
状态
这是一个正在进行中的项目。此库提供的接口预计会发生变化,目前不保证接口的稳定性。在编写时,使用PyKMIP (结果)和Kryptus HSM (结果)进行有限的手动测试似乎工作正常。
示例代码
请参阅examples/demo/
。有关运行示例的更多信息,请参阅
cargo run --example demo --features tls-with-rustls -- --help
诊断问题
如果使用crate提供了日志实现,此crate将默认以TRACE级别以匿名紧凑形式记录发送和接收的KMIP字节序列。例如
[2022-08-17T13:27:37Z TRACE kmip_protocol::client::client] KMIP TTLV request: 78[77[69[6Ai6Bi]0C[23[24e1:25[99tA1t]]]0Di]0F[5Ce8:79[08[0At0Be4:]]]]
这些所谓的诊断字符串可以通过提供的diag_to_txt
示例扩展为完整的KMIP规范描述,例如:
$ echo "78[77[69[6Ai6Bi]0C[23[24e1:25[99tA1t]]]0Di]0F[5Ce8:79[08[0At0Be4:]]]]" | cargo run -q --example diag_to_txt -
Tag: Request Message (0x420078), Type: Structure (0x01), Data:
Tag: Request Header (0x420077), Type: Structure (0x01), Data:
Tag: Protocol Version (0x420069), Type: Structure (0x01), Data:
Tag: Protocol Version Major (0x42006A), Type: Integer (0x02), Data: <redacted>
Tag: Protocol Version Minor (0x42006B), Type: Integer (0x02), Data: <redacted>
Tag: Authentication (0x42000C), Type: Structure (0x01), Data:
Tag: Credential (0x420023), Type: Structure (0x01), Data:
Tag: Credential Type (0x420024), Type: Enumeration (0x05), Data: 1
Tag: Credential Value (0x420025), Type: Structure (0x01), Data:
Tag: Username (0x420099), Type: TextString (0x07), Data: <redacted>
Tag: Password (0x4200A1), Type: TextString (0x07), Data: <redacted>
Tag: Batch Count (0x42000D), Type: Integer (0x02), Data: <redacted>
Tag: Batch Item (0x42000F), Type: Structure (0x01), Data:
Tag: Operation (0x42005C), Type: Enumeration (0x05), Data: 8
Tag: Request Payload (0x420079), Type: Structure (0x01), Data:
Tag: Attribute (0x420008), Type: Structure (0x01), Data:
Tag: Attribute Name (0x42000A), Type: TextString (0x07), Data: <redacted>
Tag: Attribute Value (0x42000B), Type: Enumeration (0x05), Data: 4
Tag: 0x4200
依赖项
~2–16MB
~234K SLoC