Skip to content

Commit 0588744

Browse files
authored
Merge pull request #425 from Superhepper/tagged-schemes-tests
Improves tests for tagged schemes.
2 parents fd847ec + 08dc99a commit 0588744

14 files changed

+1196
-271
lines changed

tss-esapi/src/structures/schemes.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,11 @@ impl HmacScheme {
5252
pub const fn new(hashing_algorithm: HashingAlgorithm) -> HmacScheme {
5353
HmacScheme { hashing_algorithm }
5454
}
55+
56+
/// Returns the hashing algorithm
57+
pub const fn hashing_algorithm(&self) -> HashingAlgorithm {
58+
self.hashing_algorithm
59+
}
5560
}
5661

5762
impl From<HashScheme> for HmacScheme {

tss-esapi/src/structures/tagged/schemes.rs

Lines changed: 186 additions & 99 deletions
Large diffs are not rendered by default.

tss-esapi/tests/integration_tests/common/tpm2b_types_equality_checks.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,5 +58,5 @@ pub fn ensure_tpm2b_sensitive_create_equality(
5858
expected.size, actual.size,
5959
"'size' value in TPM2B_SENSITIVE_CREATE, mismatch between actual and expected",
6060
);
61-
crate::common::ensure_tpms_sensitive_create(&expected.sensitive, &actual.sensitive);
61+
crate::common::ensure_tpms_sensitive_create_equality(&expected.sensitive, &actual.sensitive);
6262
}

tss-esapi/tests/integration_tests/common/tpms_types_equality_checks.rs

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@ use tss_esapi::{
77
},
88
tss2_esys::{
99
TPMS_ALG_PROPERTY, TPMS_ATTEST, TPMS_CERTIFY_INFO, TPMS_CLOCK_INFO,
10-
TPMS_COMMAND_AUDIT_INFO, TPMS_CREATION_INFO, TPMS_ECC_PARMS, TPMS_KEYEDHASH_PARMS,
11-
TPMS_NV_CERTIFY_INFO, TPMS_PCR_SELECTION, TPMS_QUOTE_INFO, TPMS_RSA_PARMS,
12-
TPMS_SCHEME_ECDAA, TPMS_SCHEME_HASH, TPMS_SCHEME_HMAC, TPMS_SCHEME_XOR,
10+
TPMS_COMMAND_AUDIT_INFO, TPMS_CREATION_INFO, TPMS_ECC_PARMS, TPMS_EMPTY,
11+
TPMS_KEYEDHASH_PARMS, TPMS_NV_CERTIFY_INFO, TPMS_PCR_SELECTION, TPMS_QUOTE_INFO,
12+
TPMS_RSA_PARMS, TPMS_SCHEME_ECDAA, TPMS_SCHEME_HASH, TPMS_SCHEME_HMAC, TPMS_SCHEME_XOR,
1313
TPMS_SENSITIVE_CREATE, TPMS_SESSION_AUDIT_INFO, TPMS_SYMCIPHER_PARMS,
1414
TPMS_TAGGED_PCR_SELECT, TPMS_TAGGED_PROPERTY, TPMS_TIME_ATTEST_INFO, TPMS_TIME_INFO,
1515
},
@@ -302,10 +302,17 @@ pub fn ensure_tpms_symcipher_parms_equality(
302302
crate::common::ensure_tpmt_sym_def_object_equality(&expected.sym, &actual.sym)
303303
}
304304

305-
pub fn ensure_tpms_sensitive_create(
305+
pub fn ensure_tpms_sensitive_create_equality(
306306
expected: &TPMS_SENSITIVE_CREATE,
307307
actual: &TPMS_SENSITIVE_CREATE,
308308
) {
309309
crate::common::ensure_tpm2b_auth_equality(&expected.userAuth, &actual.userAuth);
310310
crate::common::ensure_tpm2b_sensitive_data(&expected.data, &actual.data);
311311
}
312+
313+
pub fn ensure_tpms_empty_equality(expected: &TPMS_EMPTY, actual: &TPMS_EMPTY) {
314+
assert_eq!(
315+
expected.empty, actual.empty,
316+
"'empty' value TPMS_EMPTY, mismatch between actual and expected."
317+
);
318+
}

tss-esapi/tests/integration_tests/common/tpmt_types_equality_checks.rs

Lines changed: 70 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ use tss_esapi::{
1010
},
1111
tss2_esys::{
1212
TPMT_ECC_SCHEME, TPMT_KDF_SCHEME, TPMT_KEYEDHASH_SCHEME, TPMT_PUBLIC_PARMS,
13-
TPMT_RSA_SCHEME, TPMT_SYM_DEF, TPMT_SYM_DEF_OBJECT,
13+
TPMT_RSA_DECRYPT, TPMT_RSA_SCHEME, TPMT_SIG_SCHEME, TPMT_SYM_DEF, TPMT_SYM_DEF_OBJECT,
1414
},
1515
};
1616

@@ -336,3 +336,72 @@ pub fn ensure_tpmt_kdf_scheme_equality(expected: &TPMT_KDF_SCHEME, actual: &TPMT
336336
_ => panic!("Invalid algorithm in TPMT_KDF_SCHEME"),
337337
}
338338
}
339+
340+
pub fn ensure_tpmt_rsa_decrypt_equality(expected: &TPMT_RSA_DECRYPT, actual: &TPMT_RSA_DECRYPT) {
341+
assert_eq!(
342+
expected.scheme, actual.scheme,
343+
"'scheme' value in TPMT_RSA_DECRYPT, mismatch between actual and expected",
344+
);
345+
346+
match expected.scheme {
347+
TPM2_ALG_RSAES => {
348+
let expected_scheme = unsafe { &expected.details.rsaes };
349+
let actual_scheme = unsafe { &actual.details.rsaes };
350+
crate::common::ensure_tpms_empty_equality(expected_scheme, actual_scheme);
351+
}
352+
TPM2_ALG_OAEP => {
353+
let expected_scheme = unsafe { &expected.details.oaep };
354+
let actual_scheme = unsafe { &actual.details.oaep };
355+
crate::common::ensure_tpms_scheme_hash_equality(expected_scheme, actual_scheme);
356+
}
357+
TPM2_ALG_NULL => {}
358+
_ => panic!("Invalid algorithm in TPMT_RSA_DECRYPT"),
359+
}
360+
}
361+
362+
pub fn ensure_tpmt_sig_scheme_equality(expected: &TPMT_SIG_SCHEME, actual: &TPMT_SIG_SCHEME) {
363+
assert_eq!(
364+
expected.scheme, actual.scheme,
365+
"'scheme' value in TPMT_SIG_SCHEME, mismatch between actual and expected",
366+
);
367+
368+
match expected.scheme {
369+
TPM2_ALG_RSASSA => {
370+
let expected_scheme = unsafe { &expected.details.rsassa };
371+
let actual_scheme = unsafe { &actual.details.rsassa };
372+
crate::common::ensure_tpms_scheme_hash_equality(expected_scheme, actual_scheme);
373+
}
374+
TPM2_ALG_RSAPSS => {
375+
let expected_scheme = unsafe { &expected.details.rsapss };
376+
let actual_scheme = unsafe { &actual.details.rsapss };
377+
crate::common::ensure_tpms_scheme_hash_equality(expected_scheme, actual_scheme);
378+
}
379+
TPM2_ALG_ECDSA => {
380+
let expected_scheme = unsafe { &expected.details.ecdsa };
381+
let actual_scheme = unsafe { &actual.details.ecdsa };
382+
crate::common::ensure_tpms_scheme_hash_equality(expected_scheme, actual_scheme);
383+
}
384+
TPM2_ALG_SM2 => {
385+
let expected_scheme = unsafe { &expected.details.sm2 };
386+
let actual_scheme = unsafe { &actual.details.sm2 };
387+
crate::common::ensure_tpms_scheme_hash_equality(expected_scheme, actual_scheme);
388+
}
389+
TPM2_ALG_ECSCHNORR => {
390+
let expected_scheme = unsafe { &expected.details.ecschnorr };
391+
let actual_scheme = unsafe { &actual.details.ecschnorr };
392+
crate::common::ensure_tpms_scheme_hash_equality(expected_scheme, actual_scheme);
393+
}
394+
TPM2_ALG_ECDAA => {
395+
let expected_scheme = unsafe { &expected.details.ecdaa };
396+
let actual_scheme = unsafe { &actual.details.ecdaa };
397+
crate::common::ensure_tpms_scheme_ecdaa_equality(expected_scheme, actual_scheme);
398+
}
399+
TPM2_ALG_HMAC => {
400+
let expected_scheme = unsafe { &expected.details.hmac };
401+
let actual_scheme = unsafe { &actual.details.hmac };
402+
crate::common::ensure_tpms_scheme_hmac_equality(expected_scheme, actual_scheme);
403+
}
404+
TPM2_ALG_NULL => {}
405+
_ => panic!("Invalid algorithm in TPMT_SIG_SCHEME"),
406+
}
407+
}

tss-esapi/tests/integration_tests/context_tests/tpm_commands/attestation_commands_tests.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ mod test_quote {
131131
let mut context = create_ctx_with_session();
132132
let qualifying_data = vec![0xff; 16];
133133
let sign_scheme = SignatureScheme::RsaPss {
134-
hash_scheme: HashScheme::new(HashingAlgorithm::Sha256),
134+
scheme: HashScheme::new(HashingAlgorithm::Sha256),
135135
};
136136

137137
let obj_key_handle = context

tss-esapi/tests/integration_tests/structures_tests/algorithm_tests/symmetric_tests/sensitive_create_tests.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ fn test_tpms_sensitive_create_conversions() {
5151
"data() did not return expected value"
5252
);
5353
let actual_tpms_sensitive_create: TPMS_SENSITIVE_CREATE = sensitive_create.into();
54-
crate::common::ensure_tpms_sensitive_create(
54+
crate::common::ensure_tpms_sensitive_create_equality(
5555
&expected_tpms_sensitive_create,
5656
&actual_tpms_sensitive_create,
5757
);

tss-esapi/tests/integration_tests/structures_tests/tagged_tests/mod.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,9 @@ mod sensitive;
99
mod signature;
1010
mod symmetric_definition_object_tests;
1111
mod symmetric_definition_tests;
12+
mod tagged_ecc_scheme_tests;
13+
mod tagged_key_derivation_function_scheme_tests;
14+
mod tagged_keyed_hash_scheme_tests;
15+
mod tagged_rsa_decryption_scheme_tests;
16+
mod tagged_rsa_scheme_tests;
1217
mod tagged_signature_scheme_tests;

0 commit comments

Comments
 (0)