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