wycheproof/
ecdh.rs

1//! ECDH key agreement tests
2
3use super::*;
4
5define_test_set!(
6    "ECDH",
7    "ecdh_test_schema.json",
8    "ecdh_ecpoint_test_schema.json"
9);
10
11define_algorithm_map!("ECDH" => Ecdh);
12
13define_test_set_names!(
14    EcdhBrainpool224r1 => "ecdh_brainpoolP224r1",
15    EcdhBrainpool256r1 => "ecdh_brainpoolP256r1",
16    EcdhBrainpool320r1 => "ecdh_brainpoolP320r1",
17    EcdhBrainpool384r1 => "ecdh_brainpoolP384r1",
18    EcdhBrainpool512r1 => "ecdh_brainpoolP512r1",
19    EcdhSecp224r1 => "ecdh_secp224r1",
20    EcdhSecp256k1 => "ecdh_secp256k1",
21    EcdhSecp256r1 => "ecdh_secp256r1",
22    EcdhSecp384r1 => "ecdh_secp384r1",
23    EcdhSecp521r1 => "ecdh_secp521r1",
24    EcdhSecp224r1Ecpoint => "ecdh_secp224r1_ecpoint",
25    EcdhSecp256r1Ecpoint => "ecdh_secp256r1_ecpoint",
26    EcdhSecp384r1Ecpoint => "ecdh_secp384r1_ecpoint",
27    EcdhSecp521r1Ecpoint => "ecdh_secp521r1_ecpoint",
28);
29
30define_test_flags!(
31    AdditionChain,
32    "CVE-2017-8932" => GolangScalarmulBug,
33    "CVE_2017_10176" => JavaAdditionChainBug,
34    CompressedPoint,
35    CompressedPublic,
36    EdgeCaseDoubling,
37    EdgeCaseEphemeralKey,
38    EdgeCaseSharedSecret,
39    InvalidAsn,
40    InvalidCompressedPublic,
41    InvalidCurveAttack,
42    InvalidEncoding,
43    InvalidPublic,
44    InvalidPem,
45    IsomorphicPublicKey,
46    GroupIsomorphism,
47    LargeCofactor,
48    "Modified curve parameter" => ModifiedCurveParameter,
49    ModifiedCofactor,
50    ModifiedGenerator,
51    ModifiedGroup,
52    ModifiedPrime,
53    ModifiedPublicPoint,
54    NegativeCofactor,
55    Normal,
56    UnnamedCurve,
57    UnusedParam,
58    WeakPublicKey,
59    WrongCurve,
60    WrongOrder,
61);
62
63#[derive(Debug, Copy, Clone, Hash, Eq, PartialEq, Deserialize)]
64pub enum EcdhEncoding {
65    #[serde(rename = "asn")]
66    Asn1,
67    #[serde(rename = "ecpoint")]
68    EcPoint,
69}
70
71define_test_group_type_id!(
72    "EcdhTest" => Ecdh,
73    "EcdhEcpointTest" => EcdhEcpoint,
74);
75
76define_test_group!(curve: EllipticCurve, encoding: EcdhEncoding);
77
78define_test!(
79    "public" => public_key: ByteString,
80    "private" => private_key: ByteString,
81    "shared" => shared_secret: ByteString,
82);