use std::ops::Shl;
use tss_esapi::{attributes::AlgorithmAttributes, tss2_esys::TPMA_ALGORITHM};
#[test]
fn test_conversions() {
let expected_tpma_algorithm: TPMA_ALGORITHM = 0x16;
let expected_algorithm_attributes = AlgorithmAttributes(expected_tpma_algorithm);
let actual_algorithm_attributes: AlgorithmAttributes = expected_tpma_algorithm.into();
let actual_tpma_algorithm: TPMA_ALGORITHM = expected_algorithm_attributes.into();
assert_eq!(
expected_algorithm_attributes, actual_algorithm_attributes,
"AlgorithmAttributes converted from TPMA_ALGORITHM did not contain expected value"
);
assert_eq!(
expected_tpma_algorithm, actual_tpma_algorithm,
"TPMA_ALGORITHM converted from AlgorithmAttributes did not contain expected value"
);
}
#[test]
fn test_all_set() {
let attributes = AlgorithmAttributes::from(0xFFFFFFFF);
assert!(
attributes.asymmetric(),
"'asymmetric' is unexpectedly not set"
);
assert!(
attributes.symmetric(),
"'symmetric' is unexpectedly not set"
);
assert!(attributes.hash(), "'hash' is unexpectedly not set");
assert!(attributes.object(), "'object' is unexpectedly not set");
assert!(attributes.signing(), "'signing' is unexpectedly not set");
assert!(
attributes.encrypting(),
"'encrypting' is unexpectedly not set"
);
assert!(attributes.method(), "'method' is unexpectedly not set");
}
#[test]
fn test_none_set() {
let attributes = AlgorithmAttributes::from(0x0);
assert!(!attributes.asymmetric(), "'asymmetric' is unexpectedly set");
assert!(!attributes.symmetric(), "'symmetric' is unexpectedly set");
assert!(!attributes.hash(), "'hash' is unexpectedly set");
assert!(!attributes.object(), "'object' is unexpectedly set");
assert!(!attributes.signing(), "'signing' is unexpectedly set");
assert!(!attributes.encrypting(), "'encrypting' is unexpectedly set");
assert!(!attributes.method(), "'method' is unexpectedly set");
}
#[test]
fn test_asymmetric_set() {
let attributes = AlgorithmAttributes::from(1u32.shl(0));
assert!(
attributes.asymmetric(),
"'asymmetric' is unexpectedly not set"
);
assert!(!attributes.symmetric(), "'symmetric' is unexpectedly set");
assert!(!attributes.hash(), "'hash' is unexpectedly set");
assert!(!attributes.object(), "'object' is unexpectedly set");
assert!(!attributes.signing(), "'signing' is unexpectedly set");
assert!(!attributes.encrypting(), "'encrypting' is unexpectedly set");
assert!(!attributes.method(), "'method' is unexpectedly set");
}
#[test]
fn test_symmetric_set() {
let attributes = AlgorithmAttributes::from(1u32.shl(1));
assert!(!attributes.asymmetric(), "'asymmetric' is unexpectedly set");
assert!(
attributes.symmetric(),
"'symmetric' is unexpectedly not set"
);
assert!(!attributes.hash(), "'hash' is unexpectedly set");
assert!(!attributes.object(), "'object' is unexpectedly set");
assert!(!attributes.signing(), "'signing' is unexpectedly set");
assert!(!attributes.encrypting(), "'encrypting' is unexpectedly set");
assert!(!attributes.method(), "'method' is unexpectedly set");
}
#[test]
fn test_hash_set() {
let attributes = AlgorithmAttributes::from(1u32.shl(2));
assert!(!attributes.asymmetric(), "'asymmetric' is unexpectedly set");
assert!(!attributes.symmetric(), "'symmetric' is unexpectedly set");
assert!(attributes.hash(), "'hash' is unexpectedly not set");
assert!(!attributes.object(), "'object' is unexpectedly set");
assert!(!attributes.signing(), "'signing' is unexpectedly set");
assert!(!attributes.encrypting(), "'encrypting' is unexpectedly set");
assert!(!attributes.method(), "'method' is unexpectedly set");
}
#[test]
fn test_object_set() {
let attributes = AlgorithmAttributes::from(1u32.shl(3));
assert!(!attributes.asymmetric(), "'asymmetric' is unexpectedly set");
assert!(!attributes.symmetric(), "'symmetric' is unexpectedly set");
assert!(!attributes.hash(), "'hash' is unexpectedly set");
assert!(attributes.object(), "'object' is unexpectedly not set");
assert!(!attributes.signing(), "'signing' is unexpectedly set");
assert!(!attributes.encrypting(), "'encrypting' is unexpectedly set");
assert!(!attributes.method(), "'method' is unexpectedly set");
}
#[test]
fn test_signing_set() {
let attributes = AlgorithmAttributes::from(1u32.shl(8));
assert!(!attributes.asymmetric(), "'asymmetric' is unexpectedly set");
assert!(!attributes.symmetric(), "'symmetric' is unexpectedly set");
assert!(!attributes.hash(), "'hash' is unexpectedly set");
assert!(!attributes.object(), "'object' is unexpectedly set");
assert!(attributes.signing(), "'signing' is unexpectedly not set");
assert!(!attributes.encrypting(), "'encrypting' is unexpectedly set");
assert!(!attributes.method(), "'method' is unexpectedly set");
}
#[test]
fn test_encrypting_set() {
let attributes = AlgorithmAttributes::from(1u32.shl(9));
assert!(!attributes.asymmetric(), "'asymmetric' is unexpectedly set");
assert!(!attributes.symmetric(), "'symmetric' is unexpectedly set");
assert!(!attributes.hash(), "'hash' is unexpectedly set");
assert!(!attributes.object(), "'object' is unexpectedly set");
assert!(!attributes.signing(), "'signing' is unexpectedly set");
assert!(
attributes.encrypting(),
"'encrypting' is unexpectedly not set"
);
assert!(!attributes.method(), "'method' is unexpectedly set");
}
#[test]
fn test_method_set() {
let attributes = AlgorithmAttributes::from(1u32.shl(10));
assert!(!attributes.asymmetric(), "'asymmetric' is unexpectedly set");
assert!(!attributes.symmetric(), "'symmetric' is unexpectedly set");
assert!(!attributes.hash(), "'hash' is unexpectedly set");
assert!(!attributes.object(), "'object' is unexpectedly set");
assert!(!attributes.signing(), "'signing' is unexpectedly set");
assert!(!attributes.encrypting(), "'encrypting' is unexpectedly set");
assert!(attributes.method(), "'method' is unexpectedly not set");
}