vaultrs/auth/
cert.rs

1use crate::{
2    api::{
3        self,
4        auth::cert::requests::{
5            ConfigureTlsCertificateMethod, ConfigureTlsCertificateMethodBuilder, LoginRequest,
6        },
7        AuthInfo,
8    },
9    client::Client,
10    error::ClientError,
11};
12
13// Fetch a token with policies corresponding to the certificate.
14//
15// See [LoginRequest]
16pub async fn login(
17    client: &impl Client,
18    mount: &str,
19    cert_name: &str,
20) -> Result<AuthInfo, ClientError> {
21    let endpoint = LoginRequest::builder()
22        .mount(mount)
23        .cert_name(cert_name)
24        .build()
25        .unwrap();
26    api::auth(client, endpoint).await
27}
28
29/// ConfigureTlsCertificateMethod
30///
31/// See [ConfigureTlsCertificateMethod]
32pub async fn configure_tls_certificate_method(
33    client: &impl Client,
34    mount: &str,
35    opts: Option<&mut ConfigureTlsCertificateMethodBuilder>,
36) -> Result<(), ClientError> {
37    let mut t = ConfigureTlsCertificateMethod::builder();
38    let endpoint = opts.unwrap_or(&mut t).mount(mount).build().unwrap();
39    api::exec_with_empty(client, endpoint).await
40}
41
42pub mod ca_cert_role {
43    use crate::{
44        api::{
45            self,
46            auth::cert::{
47                requests::{
48                    CreateCaCertificateRoleRequest, CreateCaCertificateRoleRequestBuilder,
49                    DeleteCaCertificateRoleRequest, ListCaCertificateRoleRequest,
50                    ReadCaCertificateRoleRequest,
51                },
52                responses::{ListCaCertificateRoleResponse, ReadCaCertificateRoleResponse},
53            },
54        },
55        client::Client,
56        error::ClientError,
57    };
58
59    /// Deletes a CA certificate role.
60    ///
61    /// See [DeleteCaCertificateRoleRequest]
62    pub async fn delete(client: &impl Client, mount: &str, name: &str) -> Result<(), ClientError> {
63        let endpoint = DeleteCaCertificateRoleRequest::builder()
64            .mount(mount)
65            .name(name)
66            .build()
67            .unwrap();
68        api::exec_with_empty(client, endpoint).await
69    }
70
71    /// Lists CA certificate roles.
72    ///
73    /// See [ListCaCertificateRoleRequest]
74    pub async fn list(
75        client: &impl Client,
76        mount: &str,
77    ) -> Result<ListCaCertificateRoleResponse, ClientError> {
78        let endpoint = ListCaCertificateRoleRequest::builder()
79            .mount(mount)
80            .build()
81            .unwrap();
82        api::exec_with_result(client, endpoint).await
83    }
84
85    /// Reads information about a CA certificate role.
86    ///
87    /// See [ReadCaCertificateRoleRequest]
88    pub async fn read(
89        client: &impl Client,
90        mount: &str,
91        username: &str,
92    ) -> Result<ReadCaCertificateRoleResponse, ClientError> {
93        let endpoint = ReadCaCertificateRoleRequest::builder()
94            .mount(mount)
95            .name(username)
96            .build()
97            .unwrap();
98        api::exec_with_result(client, endpoint).await
99    }
100
101    /// Creates a new CA certificate role
102    ///
103    /// See [CreateCaCertificateRoleRequest]
104    pub async fn set(
105        client: &impl Client,
106        mount: &str,
107        name: &str,
108        certificate: &str,
109        opts: Option<&mut CreateCaCertificateRoleRequestBuilder>,
110    ) -> Result<(), ClientError> {
111        let mut t = CreateCaCertificateRoleRequest::builder();
112        let endpoint = opts
113            .unwrap_or(&mut t)
114            .mount(mount)
115            .name(name)
116            .certificate(certificate)
117            .build()
118            .unwrap();
119        api::exec_with_empty(client, endpoint).await
120    }
121}