use tss_keyfile::{Error, TPMKey};
#[test]
fn test_invalid_der_data() {
let invalid_data = vec![0xFF, 0xFF, 0xFF, 0xFF];
let result = TPMKey::try_from_der(&invalid_data);
assert!(matches!(result, Err(Error::DerDecodeError(_))));
}
#[cfg(feature = "pem")]
#[test]
fn test_invalid_pem_tag() {
let invalid_pem = "-----BEGIN PRIVATE KEY-----\nSGVsbG8gV29ybGQ=\n-----END PRIVATE KEY-----";
let result = TPMKey::try_from_pem(invalid_pem.as_bytes());
assert!(matches!(result, Err(Error::PemNoTss2PrivateKey)));
}
#[test]
fn test_validation_errors() {
let pubkey = vec![0x01, 0x02, 0x03];
let privkey = vec![0x04, 0x05, 0x06];
let key = TPMKey::new_loadable(0x12345678, &pubkey, &privkey);
assert!(matches!(key.validate(), Err(Error::InvalidParentHandle(_))));
let key = TPMKey::new_importable(0x81000001, &pubkey, &privkey);
assert!(matches!(key.validate(), Err(Error::MissingSecret)));
let mut key = TPMKey::new_loadable(0x81000001, &pubkey, &privkey);
key.secret = Some(vec![0x07, 0x08].into());
assert!(matches!(key.validate(), Err(Error::UnexpectedSecret)));
}