wycheproof/
ecdsa.rs

1//! ECDSA tests
2
3use super::*;
4
5define_test_set!(
6    "ECDSA verify",
7    "ecdsa_verify_schema.json",
8    "ecdsa_p1363_verify_schema.json",
9    "ecdsa_bitcoin_verify_schema.json"
10);
11
12define_algorithm_map!("ECDSA" => Ecdsa);
13
14define_test_set_names!(
15    EcdsaBrainpool224r1Sha224P1363 => "ecdsa_brainpoolP224r1_sha224_p1363",
16    EcdsaBrainpool224r1Sha224 => "ecdsa_brainpoolP224r1_sha224",
17    EcdsaBrainpool224r1Sha3_224 => "ecdsa_brainpoolP224r1_sha3_224",
18    EcdsaBrainpool256r1Sha256P1363 => "ecdsa_brainpoolP256r1_sha256_p1363",
19    EcdsaBrainpool256r1Sha256 => "ecdsa_brainpoolP256r1_sha256",
20    EcdsaBrainpool256r1Sha3_256 => "ecdsa_brainpoolP256r1_sha3_256",
21    EcdsaBrainpool320r1Sha3_384 => "ecdsa_brainpoolP320r1_sha3_384",
22    EcdsaBrainpool320r1Sha384P1363 => "ecdsa_brainpoolP320r1_sha384_p1363",
23    EcdsaBrainpool320r1Sha384 => "ecdsa_brainpoolP320r1_sha384",
24    EcdsaBrainpool384r1Sha3_384 => "ecdsa_brainpoolP384r1_sha3_384",
25    EcdsaBrainpool384r1Sha384P1363 => "ecdsa_brainpoolP384r1_sha384_p1363",
26    EcdsaBrainpool384r1Sha384 => "ecdsa_brainpoolP384r1_sha384",
27    EcdsaBrainpool512r1Sha3_512 => "ecdsa_brainpoolP512r1_sha3_512",
28    EcdsaBrainpool512r1Sha512P1363 => "ecdsa_brainpoolP512r1_sha512_p1363",
29    EcdsaBrainpool512r1Sha512 => "ecdsa_brainpoolP512r1_sha512",
30    EcdsaSecp160k1Sha256P1363 => "ecdsa_secp160k1_sha256_p1363",
31    EcdsaSecp160k1Sha256 => "ecdsa_secp160k1_sha256",
32    EcdsaSecp160r1Sha256P1363 => "ecdsa_secp160r1_sha256_p1363",
33    EcdsaSecp160r1Sha256 => "ecdsa_secp160r1_sha256",
34    EcdsaSecp160r2Sha256P1363 => "ecdsa_secp160r2_sha256_p1363",
35    EcdsaSecp160r2Sha256 => "ecdsa_secp160r2_sha256",
36    EcdsaSecp192k1Sha256P1363 => "ecdsa_secp192k1_sha256_p1363",
37    EcdsaSecp192k1Sha256 => "ecdsa_secp192k1_sha256",
38    EcdsaSecp192r1Sha256P1363 => "ecdsa_secp192r1_sha256_p1363",
39    EcdsaSecp192r1Sha256 => "ecdsa_secp192r1_sha256",
40    EcdsaSecp224k1Sha224P1363 => "ecdsa_secp224k1_sha224_p1363",
41    EcdsaSecp224k1Sha224 => "ecdsa_secp224k1_sha224",
42    EcdsaSecp224k1Sha256P1363 => "ecdsa_secp224k1_sha256_p1363",
43    EcdsaSecp224k1Sha256 => "ecdsa_secp224k1_sha256",
44    EcdsaSecp224r1Sha224P1363 => "ecdsa_secp224r1_sha224_p1363",
45    EcdsaSecp224r1Sha224 => "ecdsa_secp224r1_sha224",
46    EcdsaSecp224r1Sha256P1363 => "ecdsa_secp224r1_sha256_p1363",
47    EcdsaSecp224r1Sha256 => "ecdsa_secp224r1_sha256",
48    EcdsaSecp224r1Sha3_224 => "ecdsa_secp224r1_sha3_224",
49    EcdsaSecp224r1Sha3_256 => "ecdsa_secp224r1_sha3_256",
50    EcdsaSecp224r1Sha3_512 => "ecdsa_secp224r1_sha3_512",
51    EcdsaSecp224r1Sha512P1363 => "ecdsa_secp224r1_sha512_p1363",
52    EcdsaSecp224r1Sha512 => "ecdsa_secp224r1_sha512",
53    EcdsaSecp224r1Shake128P1363 => "ecdsa_secp224r1_shake128_p1363",
54    EcdsaSecp224r1Shake128 => "ecdsa_secp224r1_shake128",
55    EcdsaSecp256k1Sha256Bitcoin => "ecdsa_secp256k1_sha256_bitcoin",
56    EcdsaSecp256k1Sha256P1363 => "ecdsa_secp256k1_sha256_p1363",
57    EcdsaSecp256k1Sha256 => "ecdsa_secp256k1_sha256",
58    EcdsaSecp256k1Sha3_256 => "ecdsa_secp256k1_sha3_256",
59    EcdsaSecp256k1Sha3_512 => "ecdsa_secp256k1_sha3_512",
60    EcdsaSecp256k1Sha512P1363 => "ecdsa_secp256k1_sha512_p1363",
61    EcdsaSecp256k1Sha512 => "ecdsa_secp256k1_sha512",
62    EcdsaSecp256k1Shake128P1363 => "ecdsa_secp256k1_shake128_p1363",
63    EcdsaSecp256k1Shake128 => "ecdsa_secp256k1_shake128",
64    EcdsaSecp256k1Shake256P1363 => "ecdsa_secp256k1_shake256_p1363",
65    EcdsaSecp256k1Shake256 => "ecdsa_secp256k1_shake256",
66    EcdsaSecp256r1Sha256P1363 => "ecdsa_secp256r1_sha256_p1363",
67    EcdsaSecp256r1Sha256 => "ecdsa_secp256r1_sha256",
68    EcdsaSecp256r1Sha3_256 => "ecdsa_secp256r1_sha3_256",
69    EcdsaSecp256r1Sha3_512 => "ecdsa_secp256r1_sha3_512",
70    EcdsaSecp256r1Sha512P1363 => "ecdsa_secp256r1_sha512_p1363",
71    EcdsaSecp256r1Sha512 => "ecdsa_secp256r1_sha512",
72    EcdsaSecp256r1Shake128P1363 => "ecdsa_secp256r1_shake128_p1363",
73    EcdsaSecp256r1Shake128 => "ecdsa_secp256r1_shake128",
74    EcdsaSecp256r1Webcrypto => "ecdsa_secp256r1_webcrypto",
75    EcdsaSecp384r1Sha256 => "ecdsa_secp384r1_sha256",
76    EcdsaSecp384r1Sha3_384 => "ecdsa_secp384r1_sha3_384",
77    EcdsaSecp384r1Sha3_512 => "ecdsa_secp384r1_sha3_512",
78    EcdsaSecp384r1Sha384P1363 => "ecdsa_secp384r1_sha384_p1363",
79    EcdsaSecp384r1Sha384 => "ecdsa_secp384r1_sha384",
80    EcdsaSecp384r1Sha512P1363 => "ecdsa_secp384r1_sha512_p1363",
81    EcdsaSecp384r1Sha512 => "ecdsa_secp384r1_sha512",
82    EcdsaSecp384r1Shake256P1363 => "ecdsa_secp384r1_shake256_p1363",
83    EcdsaSecp384r1Shake256 => "ecdsa_secp384r1_shake256",
84    EcdsaSecp384r1Webcrypto => "ecdsa_secp384r1_webcrypto",
85    EcdsaSecp521r1Sha3_512 => "ecdsa_secp521r1_sha3_512",
86    EcdsaSecp521r1Sha512P1363 => "ecdsa_secp521r1_sha512_p1363",
87    EcdsaSecp521r1Sha512 => "ecdsa_secp521r1_sha512",
88    EcdsaSecp521r1Shake256P1363 => "ecdsa_secp521r1_shake256_p1363",
89    EcdsaSecp521r1Shake256 => "ecdsa_secp521r1_shake256",
90    EcdsaSecp521r1Webcrypto => "ecdsa_secp521r1_webcrypto",
91);
92
93define_test_flags!(
94    ArithmeticError,
95    BerEncodedSignature,
96    EdgeCasePublicKey,
97    EdgeCaseShamirMultiplication,
98    GroupIsomorphism,
99    IntegerOverflow,
100    InvalidEncoding,
101    InvalidSignature,
102    InvalidTypesInSignature,
103    MissingZero,
104    ModifiedInteger,
105    ModifiedSignature,
106    ModularInverse,
107    PointDuplication,
108    RangeCheck,
109    SignatureSize,
110    SignatureMalleabilityBitcoin,
111    SmallRandS,
112    SpecialCaseHash,
113    Untruncatedhash,
114    ValidSignature,
115);
116
117define_test_group_type_id!(
118    "EcdsaVerify" => Ecdsa,
119    "EcdsaP1363Verify" => EcdsaP1363,
120    "EcdsaBitcoinVerify" => EcdsaBitcoin,
121);
122
123define_test_group!(
124    "publicKeyJwk" => jwk: Option<EcdsaPublicJwk>,
125    "publicKey" => key: EcdsaPublic,
126    "publicKeyDer" => der: ByteString,
127    "publicKeyPem" => pem: String,
128    "sha" => hash: HashFunction,
129);
130
131define_test!(msg: ByteString, sig: ByteString);