kmip_protocol/
request.rs

1//! Serialiation of KMIP requests.
2//!
3//! See the [Client] module for a higher level interface.
4//!
5//! [Client]: crate::client::Client
6
7use crate::{
8    auth::CredentialType,
9    types::{
10        common::UniqueBatchItemID,
11        request::{
12            Authentication, BatchCount, BatchItem, MaximumResponseSize, RequestHeader, RequestMessage, RequestPayload,
13        },
14    },
15};
16
17use kmip_ttlv::error::Result;
18
19pub fn to_vec(payload: RequestPayload, credential: Option<CredentialType>) -> Result<Vec<u8>> {
20    let operation = payload.operation();
21    let request = RequestMessage(
22        RequestHeader(
23            payload.protocol_version(),
24            Option::<MaximumResponseSize>::None,
25            credential.map(Authentication::build),
26            BatchCount(1),
27        ),
28        vec![BatchItem(operation, Option::<UniqueBatchItemID>::None, payload)],
29    );
30    kmip_ttlv::ser::to_vec(&request)
31}