tss_esapi/context/
session_administration.rs1use crate::{
4 attributes::{SessionAttributes, SessionAttributesMask},
5 handles::SessionHandle,
6 interface_types::session_handles::AuthSession,
7 tss2_esys::{Esys_TRSess_GetAttributes, Esys_TRSess_SetAttributes},
8 Context, Error, Result,
9};
10use log::error;
11
12impl Context {
13 pub fn tr_sess_set_attributes(
15 &mut self,
16 session: AuthSession,
17 attributes: SessionAttributes,
18 mask: SessionAttributesMask,
19 ) -> Result<()> {
20 let ret = unsafe {
21 Esys_TRSess_SetAttributes(
22 self.mut_context(),
23 SessionHandle::from(session).into(),
24 attributes.into(),
25 mask.into(),
26 )
27 };
28 let ret = Error::from_tss_rc(ret);
29 if ret.is_success() {
30 Ok(())
31 } else {
32 error!("Error when setting session attributes: {}", ret);
33 Err(ret)
34 }
35 }
36
37 pub fn tr_sess_get_attributes(&mut self, session: AuthSession) -> Result<SessionAttributes> {
39 let mut flags = 0;
40 let ret = unsafe {
41 Esys_TRSess_GetAttributes(
42 self.mut_context(),
43 SessionHandle::from(session).into(),
44 &mut flags,
45 )
46 };
47 let ret = Error::from_tss_rc(ret);
48 if ret.is_success() {
49 Ok(SessionAttributes(flags))
50 } else {
51 error!("Error when getting session attributes: {}", ret);
52 Err(ret)
53 }
54 }
55
56 }