@@ -5,26 +5,40 @@ use crate::{Error, Result, WrapperErrorKind};
5
5
use log:: error;
6
6
use std:: convert:: TryFrom ;
7
7
/// Structure holding the data representing names
8
- #[ derive( Debug , Clone , PartialEq , Eq ) ]
8
+ #[ allow( missing_copy_implementations) ]
9
+ #[ derive( Debug , Clone ) ]
9
10
pub struct Name {
10
- value : Vec < u8 > ,
11
+ value : TPM2B_NAME ,
11
12
}
12
13
13
14
impl Name {
14
15
const MAX_SIZE : usize = 68 ;
15
16
pub fn value ( & self ) -> & [ u8 ] {
16
- & self . value
17
+ & self . value . name [ ..self . value . size as usize ]
18
+ }
19
+ }
20
+
21
+ impl PartialEq for Name {
22
+ fn eq ( & self , other : & Self ) -> bool {
23
+ self . value ( ) == other. value ( )
17
24
}
18
25
}
19
26
27
+ impl Eq for Name { }
28
+
20
29
impl TryFrom < Vec < u8 > > for Name {
21
30
type Error = Error ;
22
31
fn try_from ( bytes : Vec < u8 > ) -> Result < Self > {
23
32
if bytes. len ( ) > Name :: MAX_SIZE {
24
33
error ! ( "Error: Invalid Vec<u8> size(> {})" , Name :: MAX_SIZE ) ;
25
34
return Err ( Error :: local_error ( WrapperErrorKind :: WrongParamSize ) ) ;
26
35
}
27
- Ok ( Name { value : bytes } )
36
+ let size = bytes. len ( ) as u16 ;
37
+ let mut name = [ 0 ; Name :: MAX_SIZE ] ;
38
+ name. copy_from_slice ( & bytes) ;
39
+ Ok ( Name {
40
+ value : TPM2B_NAME { size, name } ,
41
+ } )
28
42
}
29
43
}
30
44
@@ -36,25 +50,12 @@ impl TryFrom<TPM2B_NAME> for Name {
36
50
error ! ( "Error: Invalid TPM2B_NAME size(> {})" , Name :: MAX_SIZE ) ;
37
51
return Err ( Error :: local_error ( WrapperErrorKind :: InvalidParam ) ) ;
38
52
}
39
- Ok ( Name {
40
- value : tss_name. name [ ..size] . to_vec ( ) ,
41
- } )
53
+ Ok ( Name { value : tss_name } )
42
54
}
43
55
}
44
56
45
- impl TryFrom < Name > for TPM2B_NAME {
46
- type Error = Error ;
47
- fn try_from ( name : Name ) -> Result < TPM2B_NAME > {
48
- let size = name. value . len ( ) ;
49
- if size > Name :: MAX_SIZE {
50
- error ! ( "Error: Invalid TPM2B_NAME size(> {})" , Name :: MAX_SIZE ) ;
51
- return Err ( Error :: local_error ( WrapperErrorKind :: WrongParamSize ) ) ;
52
- }
53
- let mut tss_name = TPM2B_NAME {
54
- size : size as u16 ,
55
- ..Default :: default ( )
56
- } ;
57
- tss_name. name [ ..size] . copy_from_slice ( name. value ( ) ) ;
58
- Ok ( tss_name)
57
+ impl AsRef < TPM2B_NAME > for Name {
58
+ fn as_ref ( & self ) -> & TPM2B_NAME {
59
+ & self . value
59
60
}
60
61
}
0 commit comments