1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
//! AEAD tests

use super::*;

define_test_set!("AEAD", "aead_test_schema.json");

define_test_set_names!(
    Aegis128 => "aegis128",
    Aegis128L => "aegis128L",
    Aegis256 => "aegis256",
    AesCcm => "aes_ccm",
    AesEax => "aes_eax",
    AesGcm => "aes_gcm",
    AesGcmSiv => "aes_gcm_siv",
    AesSivCmac => "aead_aes_siv_cmac",
    ChaCha20Poly1305 => "chacha20_poly1305",
    XChaCha20Poly1305 => "xchacha20_poly1305",
);

define_algorithm_map!(
    "AEGIS128L" => Aegis128L,
    "AEGIS128" => Aegis128,
    "AEGIS256" => Aegis256,
    "AES-CCM" => AesCcm,
    "AES-EAX" => AesEax,
    "AES-GCM" => AesGcm,
    "AES-GCM-SIV" => AesGcmSiv,
    "AEAD-AES-SIV-CMAC" => AesSivCmac,
    "CHACHA20-POLY1305" => ChaCha20Poly1305,
    "XCHACHA20-POLY1305" => XChaCha20Poly1305,
);

define_test_flags!(
    BadPadding,
    ConstructedIv,
    CounterWrap,
    EdgeCaseSiv,
    InvalidNonceSize,
    InvalidTagSize,
    LongIv,
    OldVersion,
    SmallIv,
    ZeroLengthIv,
);

define_typeid!(TestGroupTypeId => "AeadTest");

define_test_group!(
    "ivSize" => nonce_size: usize,
    "keySize" => key_size: usize,
    "tagSize" => tag_size: usize,
);

define_test!(
    key: Vec<u8>,
    "iv" => nonce: Vec<u8>,
    aad: Vec<u8>,
    "msg" => pt: Vec<u8>,
    ct: Vec<u8>,
    tag: Vec<u8>,
);