#![allow(non_snake_case)]
use crate::types::{psa_algorithm_t, psa_key_type_t};
pub fn PSA_ALG_AEAD_TAG_TRUNCATED_LENGTH(aead_alg: psa_algorithm_t) -> usize {
const TAG_LENGTH_MASK: u32 = 0b111111; const PSA_V1_0_0_TAG_LENGTH_START_BIT: u32 = 16;
let pre_mask_tag_length = aead_alg >> PSA_V1_0_0_TAG_LENGTH_START_BIT;
(pre_mask_tag_length & TAG_LENGTH_MASK) as usize
}
pub unsafe fn PSA_RAW_ECDH_KEY_AGREEMENT_OUTPUT_SIZE(
_key_type: psa_key_type_t,
key_bits: usize,
) -> usize {
if let Some(numerator) = key_bits.checked_add(7) {
numerator / 8
} else {
0
}
}
#[test]
fn truncated_aead_length_1() {
let test_aead_alg = 0b11001110010010110001110011010011; assert_eq!(11, PSA_ALG_AEAD_TAG_TRUNCATED_LENGTH(test_aead_alg));
}
#[test]
fn truncated_aead_length_2() {
let test_aead_alg = 0b11001110010000000001110011010011; assert_eq!(0, PSA_ALG_AEAD_TAG_TRUNCATED_LENGTH(test_aead_alg));
}
#[test]
fn truncated_aead_length_3() {
let test_aead_alg = 0b11001110011111110001110011010011; assert_eq!(63, PSA_ALG_AEAD_TAG_TRUNCATED_LENGTH(test_aead_alg));
}
#[test]
fn truncated_aead_length_full_range() {
let base_mask = 0b11001110010000000001110011010011;
for test_val in 0..63 {
let test_mask = test_val << 16;
let test_aead_alg = base_mask | test_mask;
assert_eq!(
test_val as usize,
PSA_ALG_AEAD_TAG_TRUNCATED_LENGTH(test_aead_alg)
);
}
}