{"id":18754826,"url":"https://github.com/visa/kmip","last_synced_at":"2025-04-13T00:32:27.928Z","repository":{"id":163849770,"uuid":"224346021","full_name":"visa/kmip","owner":"visa","description":null,"archived":false,"fork":false,"pushed_at":"2020-07-23T17:45:48.000Z","size":10,"stargazers_count":4,"open_issues_count":0,"forks_count":3,"subscribers_count":14,"default_branch":"master","last_synced_at":"2025-03-26T19:04:27.268Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/visa.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE-APACHE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-11-27T04:43:56.000Z","updated_at":"2024-05-10T01:36:38.000Z","dependencies_parsed_at":"2023-07-06T19:01:14.819Z","dependency_job_id":null,"html_url":"https://github.com/visa/kmip","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/visa%2Fkmip","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/visa%2Fkmip/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/visa%2Fkmip/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/visa%2Fkmip/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/visa","download_url":"https://codeload.github.com/visa/kmip/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248650557,"owners_count":21139670,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-07T17:30:11.245Z","updated_at":"2025-04-13T00:32:27.921Z","avatar_url":"https://github.com/visa.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# kmip\n\nFrom [Wikipedia](https://en.wikipedia.org/wiki/Key_Management_Interoperability_Protocol_(KMIP)):\n\u003e The Key Management Interoperability Protocol (KMIP) is an extensible communication protocol that defines message formats for the manipulation of cryptographic keys on a key management server. This facilitates data encryption by simplifying encryption key management.\n\n`kmip` is a `#![no_std]` crate that provides the ability to encode and decode KMIP messages. Due to incredibly wide scope of KMIP, only a subset of capabilities defined in the v1.3 spec are supported at this time.\n\nKMIP spec: \u003chttps://docs.oasis-open.org/kmip/spec/v1.3/kmip-spec-v1.3.html\u003e\n\n## Usage\n\n```rust\nuse kmip::{self, ttlv::{Ttlv, parse_ttlv_len}};\n\nlet key_name: \u0026str = \"test_key_name\";\nlet creds: Option\u003c(\u0026str, \u0026str)\u003e = Some((\"username\", \"password\"));\nlet kmip_max_buffer_len: usize = 1024;\n\n// Encode locate request to buffer\nlet buf = \u0026mut [0u8; kmip_max_buffer_len];\nlet request_len = kmip::request(creds, kmip::locate(key_name)).encode(buf)?;\n\n// Send/recieve over tls stream\nlet tls = unimplemented!();\ntls.flush()?;\ntls.write(\u0026buf[..request_len])?;\ntls.read(\u0026mut buf[..8])?;\nlet response_len = parse_ttlv_len(\u0026buf[4..8]) + 8;\ntls.read(\u0026mut buf[8..response_len])?;\n\n// Decode locate response from buffer\nlet (ttlv_response, parsed_len) = Ttlv::decode(\u0026buf[..response_len])?;\nassert_eq!(response_len, parsed_len);\n// Parse response and collect UUID\nlet uuid: \u0026str = kmip::collect_uuid(kmip::collect_response_payload(\u0026ttlv_response)?)?;\n```\n\n## License\n\nLicensed under either of\n\n * Apache License, Version 2.0\n   ([LICENSE-APACHE](LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0)\n * MIT license\n   ([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT)\n\nat your option.\n\n## Contribution\n\nUnless you explicitly state otherwise, any contribution intentionally submitted\nfor inclusion in the work by you, as defined in the Apache-2.0 license, shall be\ndual licensed as above, without any additional terms or conditions.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvisa%2Fkmip","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvisa%2Fkmip","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvisa%2Fkmip/lists"}