mssf_core/types/common/security_credentials/
mod.rs

1// ------------------------------------------------------------
2// Copyright (c) Microsoft Corporation.  All rights reserved.
3// Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4// ------------------------------------------------------------
5use mssf_com::FabricClient::IFabricClientSettings2;
6
7mod claims_credentials;
8pub use claims_credentials::*;
9mod fabric_protection_level;
10pub use fabric_protection_level::*;
11mod windows_credentials;
12pub use windows_credentials::*;
13mod x509_credentials;
14pub use x509_credentials::*;
15
16/// Idiomatic FABRIC_SECURITY_CREDENTIALS wrapper
17/// Currently, just a placeholder
18#[non_exhaustive]
19pub enum FabricSecurityCredentials {
20    // TODO: consider None (to clear previously set settings), X509Credentials2?
21    Windows(FabricWindowsCredentials),
22    X509(FabricX509Credentials),
23    //FabricX509Credentials2(FabricX509Credentials2),
24    Claims(FabricClaimsCredentials),
25}
26
27trait FabricSecurityCredentialKind {
28    fn apply_inner(&self, settings_interface: IFabricClientSettings2) -> crate::Result<()>;
29}
30
31impl FabricSecurityCredentials {
32    pub fn apply(&self, settings_interface: IFabricClientSettings2) -> crate::Result<()> {
33        match &self {
34            FabricSecurityCredentials::X509(v) => v as &dyn FabricSecurityCredentialKind,
35            FabricSecurityCredentials::Claims(v) => v as &dyn FabricSecurityCredentialKind,
36            FabricSecurityCredentials::Windows(v) => v as &dyn FabricSecurityCredentialKind,
37        }
38        .apply_inner(settings_interface)
39    }
40}
41
42#[cfg(test)]
43pub(crate) mod test {}