use crate::client::{Api, Pre};
use crate::keys::{NameKey, NodeKey, TokenKeys};
use crate::proto::api::{RegisterTokenResponse, RevokeResponse, Scope};
use crate::proto::children::ChildrenRecord;
use crate::proto::descriptor::Descriptor;
use crate::proto::ids::{NameHmac, TokenId, VaultId};
use crate::seal::{ConfigFormat, Opened, OpenedConfig};
use crate::error::Error;
use crate::token::Vault;
use crate::vault::Handle;
pub struct RawVault(Handle);
impl std::fmt::Debug for RawVault {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
f.debug_struct("RawVault")
.field("label", &self.0.label)
.finish_non_exhaustive()
}
}
impl RawVault {
pub fn create(api: &Api, key: &NodeKey, label: &str) -> Result<bool, Error> {
Handle::create(api, key, label)
}
pub fn open_owner(api: &Api, key: &NodeKey, label: &str) -> Result<RawVault, Error> {
Handle::open_owner(api, key, label).map(RawVault)
}
pub fn open_token(api: &Api, token: TokenKeys, label: &str) -> Result<RawVault, Error> {
Handle::open_token(api, token, label).map(RawVault)
}
pub fn into_vault(self) -> Vault {
Vault::from_handle(self.0)
}
pub fn vault_id(&self) -> VaultId {
self.0.vault_id
}
pub fn descriptor(&self) -> Descriptor {
self.0.view().descriptor.clone()
}
pub fn name_key(&self) -> NameKey {
self.0.name_key()
}
pub fn secret_writer(&self) -> Option<crate::keys::WriterKey> {
self.0.view().bundle.secret_writer().cloned()
}
pub fn config_writer(&self) -> Option<crate::keys::WriterKey> {
self.0.view().bundle.config_writer().cloned()
}
pub fn mint(
&self,
scope: Scope,
ttl_secs: u64,
allow_list: Option<Vec<NameHmac>>,
) -> Result<(TokenKeys, RegisterTokenResponse), Error> {
self.0.mint(scope, ttl_secs, allow_list)
}
pub fn current(&self, name: &str) -> Result<Pre, Error> {
self.0.current(name)
}
pub fn put(&self, name: &str, value: &[u8], pre: Pre) -> Result<u64, Error> {
self.0.put(name, value, pre)
}
pub fn delete(&self, name: &str, version: u64) -> Result<u64, Error> {
self.0.delete(name, version)
}
pub fn get(&self, name: &str, version: Option<u64>) -> Result<(u64, Opened), Error> {
self.0.get(name, version)
}
pub fn config_current(&self, name: &str) -> Result<Pre, Error> {
self.0.config_current(name)
}
pub fn put_config(
&self,
name: &str,
format: ConfigFormat,
body: &[u8],
pre: Pre,
) -> Result<u64, Error> {
self.0.put_config(name, format, body, pre)
}
pub fn get_config(
&self,
name: &str,
version: Option<u64>,
) -> Result<(u64, OpenedConfig), Error> {
self.0.get_config(name, version)
}
pub fn children(&self) -> Result<(ChildrenRecord, Pre), Error> {
self.0.children()
}
pub fn rotate(&self, revoke: &[TokenId]) -> Result<u32, Error> {
self.0.rotate(revoke)
}
pub fn revoke(&self, id: &TokenId) -> Result<RevokeResponse, Error> {
self.0.revoke(id)
}
pub fn refresh(&self) -> Result<(), Error> {
self.0.refresh()
}
}