xref: /aosp_15_r20/system/security/keystore2/src/key_parameter/wire_tests.rs (revision e1997b9af69e3155ead6e072d106a0077849ffba)
1 // Copyright 2020, The Android Open Source Project
2 //
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
6 //
7 //     http://www.apache.org/licenses/LICENSE-2.0
8 //
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
14 
15 //! The wire_tests module tests the 'convert_to_wire' and 'convert_from_wire' methods for
16 //! KeyParameter, for the four different types used in KmKeyParameter, in addition to Invalid
17 //! key parameter.
18 //! i) bool
19 //! ii) integer
20 //! iii) longInteger
21 //! iv) blob
22 
23 use crate::key_parameter::*;
24 /// unit tests for to conversions
25 #[test]
test_convert_to_wire_invalid()26 fn test_convert_to_wire_invalid() {
27     let kp = KeyParameter::new(KeyParameterValue::Invalid, SecurityLevel::STRONGBOX);
28     assert_eq!(
29         KmKeyParameter { tag: Tag::INVALID, value: KmKeyParameterValue::Invalid(0) },
30         kp.value.into()
31     );
32 }
33 #[test]
test_convert_to_wire_bool()34 fn test_convert_to_wire_bool() {
35     let kp = KeyParameter::new(KeyParameterValue::CallerNonce, SecurityLevel::STRONGBOX);
36     assert_eq!(
37         KmKeyParameter { tag: Tag::CALLER_NONCE, value: KmKeyParameterValue::BoolValue(true) },
38         kp.value.into()
39     );
40 }
41 #[test]
test_convert_to_wire_integer()42 fn test_convert_to_wire_integer() {
43     let kp = KeyParameter::new(
44         KeyParameterValue::KeyPurpose(KeyPurpose::ENCRYPT),
45         SecurityLevel::STRONGBOX,
46     );
47     assert_eq!(
48         KmKeyParameter {
49             tag: Tag::PURPOSE,
50             value: KmKeyParameterValue::KeyPurpose(KeyPurpose::ENCRYPT)
51         },
52         kp.value.into()
53     );
54 }
55 #[test]
test_convert_to_wire_long_integer()56 fn test_convert_to_wire_long_integer() {
57     let kp = KeyParameter::new(KeyParameterValue::UserSecureID(i64::MAX), SecurityLevel::STRONGBOX);
58     assert_eq!(
59         KmKeyParameter {
60             tag: Tag::USER_SECURE_ID,
61             value: KmKeyParameterValue::LongInteger(i64::MAX)
62         },
63         kp.value.into()
64     );
65 }
66 #[test]
test_convert_to_wire_blob()67 fn test_convert_to_wire_blob() {
68     let kp = KeyParameter::new(
69         KeyParameterValue::ConfirmationToken(String::from("ConfirmationToken").into_bytes()),
70         SecurityLevel::STRONGBOX,
71     );
72     assert_eq!(
73         KmKeyParameter {
74             tag: Tag::CONFIRMATION_TOKEN,
75             value: KmKeyParameterValue::Blob(String::from("ConfirmationToken").into_bytes())
76         },
77         kp.value.into()
78     );
79 }
80 
81 /// unit tests for from conversion
82 #[test]
test_convert_from_wire_invalid()83 fn test_convert_from_wire_invalid() {
84     let aidl_kp = KmKeyParameter { tag: Tag::INVALID, ..Default::default() };
85     assert_eq!(KeyParameterValue::Invalid, aidl_kp.into());
86 }
87 #[test]
test_convert_from_wire_bool()88 fn test_convert_from_wire_bool() {
89     let aidl_kp =
90         KmKeyParameter { tag: Tag::CALLER_NONCE, value: KmKeyParameterValue::BoolValue(true) };
91     assert_eq!(KeyParameterValue::CallerNonce, aidl_kp.into());
92 }
93 #[test]
test_convert_from_wire_integer()94 fn test_convert_from_wire_integer() {
95     let aidl_kp = KmKeyParameter {
96         tag: Tag::PURPOSE,
97         value: KmKeyParameterValue::KeyPurpose(KeyPurpose::ENCRYPT),
98     };
99     assert_eq!(KeyParameterValue::KeyPurpose(KeyPurpose::ENCRYPT), aidl_kp.into());
100 }
101 #[test]
test_convert_from_wire_long_integer()102 fn test_convert_from_wire_long_integer() {
103     let aidl_kp = KmKeyParameter {
104         tag: Tag::USER_SECURE_ID,
105         value: KmKeyParameterValue::LongInteger(i64::MAX),
106     };
107     assert_eq!(KeyParameterValue::UserSecureID(i64::MAX), aidl_kp.into());
108 }
109 #[test]
test_convert_from_wire_blob()110 fn test_convert_from_wire_blob() {
111     let aidl_kp = KmKeyParameter {
112         tag: Tag::CONFIRMATION_TOKEN,
113         value: KmKeyParameterValue::Blob(String::from("ConfirmationToken").into_bytes()),
114     };
115     assert_eq!(
116         KeyParameterValue::ConfirmationToken(String::from("ConfirmationToken").into_bytes()),
117         aidl_kp.into()
118     );
119 }
120