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编码

Download history 6/week @ 2024-03-13 7/week @ 2024-03-20 10/week @ 2024-03-27 162/week @ 2024-04-03 17/week @ 2024-04-10 1/week @ 2024-04-17 3/week @ 2024-04-24 25/week @ 2024-05-29 316/week @ 2024-06-05 724/week @ 2024-06-12 778/week @ 2024-06-19 229/week @ 2024-06-26

每月2,058次下载
krill 中使用

BSD-3-Clause

405KB
6.5K SLoC

CI Crate Docs

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