1use crate::Uuid;
19use optee_utee_sys as raw;
20
21#[derive(Copy, Clone)]
22pub struct Identity {
23 raw: raw::TEE_Identity,
24}
25
26impl Identity {
27 pub fn login_type(&self) -> LoginType {
28 match self.raw.login {
29 raw::TEE_LOGIN_PUBLIC => LoginType::Public,
30 raw::TEE_LOGIN_USER => LoginType::User,
31 raw::TEE_LOGIN_GROUP => LoginType::Group,
32 raw::TEE_LOGIN_APPLICATION => LoginType::Application,
33 raw::TEE_LOGIN_APPLICATION_USER => LoginType::ApplicationUser,
34 raw::TEE_LOGIN_APPLICATION_GROUP => LoginType::ApplicationGroup,
35 raw::TEE_LOGIN_TRUSTED_APP => LoginType::TrustedApp,
36 _ => panic!("Invalid login type"),
37 }
38 }
39
40 pub fn uuid(&self) -> Uuid {
41 Uuid::from(self.raw.uuid)
42 }
43}
44
45impl From<raw::TEE_Identity> for Identity {
46 fn from(raw: raw::TEE_Identity) -> Self {
47 Self { raw }
48 }
49}
50
51#[derive(Copy, Clone, PartialEq, Eq, strum::Display)]
52#[repr(u32)]
53pub enum LoginType {
54 Public = raw::TEE_LOGIN_PUBLIC,
55 User = raw::TEE_LOGIN_USER,
56 Group = raw::TEE_LOGIN_GROUP,
57 Application = raw::TEE_LOGIN_APPLICATION,
58 ApplicationUser = raw::TEE_LOGIN_APPLICATION_USER,
59 ApplicationGroup = raw::TEE_LOGIN_APPLICATION_GROUP,
60 TrustedApp = raw::TEE_LOGIN_TRUSTED_APP,
61}