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