xref: /aosp_15_r20/external/cronet/third_party/rust/chromium_crates_io/vendor/wycheproof-0.4.0/src/ecdsa.rs (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1 //! ECDSA tests
2 
3 use super::*;
4 
5 define_test_set!(
6     "ECDSA verify",
7     "ecdsa_verify_schema.json",
8     "ecdsa_p1363_verify_schema.json"
9 );
10 
11 define_algorithm_map!("ECDSA" => Ecdsa);
12 
13 define_test_set_names!(
14     EcdsaBrainpool224Sha224 => "ecdsa_brainpoolP224r1_sha224",
15     EcdsaBrainpool256r1Sha256 => "ecdsa_brainpoolP256r1_sha256",
16     EcdsaBrainpool320r1Sha384 => "ecdsa_brainpoolP320r1_sha384",
17     EcdsaBrainpool384r1Sha384 => "ecdsa_brainpoolP384r1_sha384",
18     EcdsaBrainpool512r1Sha512 => "ecdsa_brainpoolP512r1_sha512",
19     EcdsaSecp224r1Sha224 => "ecdsa_secp224r1_sha224",
20     EcdsaSecp224r1Sha256 => "ecdsa_secp224r1_sha256",
21     EcdsaSecp224r1Sha3_224 => "ecdsa_secp224r1_sha3_224",
22     EcdsaSecp224r1Sha3_256 => "ecdsa_secp224r1_sha3_256",
23     EcdsaSecp224r1Sha3_512 => "ecdsa_secp224r1_sha3_512",
24     EcdsaSecp224r1Sha512 => "ecdsa_secp224r1_sha512",
25     EcdsaSecp256k1Sha256 => "ecdsa_secp256k1_sha256",
26     EcdsaSecp256k1Sha3_256 => "ecdsa_secp256k1_sha3_256",
27     EcdsaSecp256k1Sha3_512 => "ecdsa_secp256k1_sha3_512",
28     EcdsaSecp256k1Sha512 => "ecdsa_secp256k1_sha512",
29     EcdsaSecp256r1Sha256 => "ecdsa_secp256r1_sha256",
30     EcdsaSecp256r1Sha3_256 => "ecdsa_secp256r1_sha3_256",
31     EcdsaSecp256r1Sha3_512 => "ecdsa_secp256r1_sha3_512",
32     EcdsaSecp256r1Sha512 => "ecdsa_secp256r1_sha512",
33     EcdsaSecp384r1Sha3_384 => "ecdsa_secp384r1_sha3_384",
34     EcdsaSecp384r1Sha3_512 => "ecdsa_secp384r1_sha3_512",
35     EcdsaSecp384r1Sha384 => "ecdsa_secp384r1_sha384",
36     EcdsaSecp384r1Sha512 => "ecdsa_secp384r1_sha512",
37     EcdsaSecp521r1Sha3_512 => "ecdsa_secp521r1_sha3_512",
38     EcdsaSecp521r1Sha512 => "ecdsa_secp521r1_sha512",
39     EcdsaBrainpool224r1Sha224P1363 => "ecdsa_brainpoolP224r1_sha224_p1363",
40     EcdsaBrainpool256r1Sha256P1363 => "ecdsa_brainpoolP256r1_sha256_p1363",
41     EcdsaBrainpool320r1Sha384P1363 => "ecdsa_brainpoolP320r1_sha384_p1363",
42     EcdsaBrainpool384r1Sha384P1363 => "ecdsa_brainpoolP384r1_sha384_p1363",
43     EcdsaBrainpool512r1Sha512P1363 => "ecdsa_brainpoolP512r1_sha512_p1363",
44     EcdsaSecp224r1Sha224P1363 => "ecdsa_secp224r1_sha224_p1363",
45     EcdsaSecp224r1Sha256P1363 => "ecdsa_secp224r1_sha256_p1363",
46     EcdsaSecp224r1Sha512P1363 => "ecdsa_secp224r1_sha512_p1363",
47     EcdsaSecp256k1Sha256P1363 => "ecdsa_secp256k1_sha256_p1363",
48     EcdsaSecp256k1Sha512P1363 => "ecdsa_secp256k1_sha512_p1363",
49     EcdsaSecp256r1Sha256P1363 => "ecdsa_secp256r1_sha256_p1363",
50     EcdsaSecp256r1Sha512P1363 => "ecdsa_secp256r1_sha512_p1363",
51     EcdsaSecp384r1Sha384P1363 => "ecdsa_secp384r1_sha384_p1363",
52     EcdsaSecp384r1Sha512P1363 => "ecdsa_secp384r1_sha512_p1363",
53     EcdsaSecp521r1Sha512P1363 => "ecdsa_secp521r1_sha512_p1363",
54     EcdsaMisc => "ecdsa",
55     EcdsaWebcrypto => "ecdsa_webcrypto"
56 );
57 
58 #[derive(Debug, Copy, Clone, Hash, Eq, PartialEq, Deserialize)]
59 pub enum TestFlag {
60     #[serde(rename = "BER")]
61     Ber,
62     EdgeCase,
63     GroupIsomorphism,
64     MissingZero,
65     PointDuplication,
66     SigSize,
67     WeakHash,
68 }
69 
70 define_typeid!(TestKeyTypeId => "EcPublicKey");
71 
72 #[derive(Debug, Clone, Hash, Eq, PartialEq, Deserialize)]
73 #[serde(deny_unknown_fields)]
74 pub struct TestKey {
75     pub curve: EllipticCurve,
76     #[serde(rename = "keySize")]
77     pub key_size: usize,
78     #[serde(rename = "type")]
79     typ: TestKeyTypeId,
80     #[serde(deserialize_with = "vec_from_hex", rename = "uncompressed")]
81     pub key: Vec<u8>,
82     #[serde(deserialize_with = "vec_from_hex", rename = "wx")]
83     pub affine_x: Vec<u8>,
84     #[serde(deserialize_with = "vec_from_hex", rename = "wy")]
85     pub affine_y: Vec<u8>,
86 }
87 
88 define_typeid!(TestGroupTypeId => "EcdsaVerify", "EcdsaP1363Verify");
89 
90 define_test_group!(
91     jwk: Option<EcdsaPublicJwk>,
92     key: TestKey,
93     "keyDer" => der: Vec<u8> | "vec_from_hex",
94     "keyPem" => pem: String,
95     "sha" => hash: HashFunction,
96 );
97 
98 define_test!(msg: Vec<u8>, sig: Vec<u8>);
99