def add_tests(self, filename): def filter_ecc(group): # These are the only curves we accept to skip if group['key']['curve'] in ('secp224r1', 'secp224k1', 'secp256k1', 'brainpoolP224r1', 'brainpoolP224t1', 'brainpoolP256r1', 'brainpoolP256t1', 'brainpoolP320r1', 'brainpoolP320t1', 'brainpoolP384r1', 'brainpoolP384t1', 'brainpoolP512r1', 'brainpoolP512t1', ): return None return ECC.import_key(group['keyPem']) def filter_sha(group): return get_hash_module(group['sha']) def filter_encoding(group): encoding_name = group['type'] if encoding_name == "EcdsaVerify": return "der" elif encoding_name == "EcdsaP1363Verify": return "binary" else: raise ValueError("Unknown signature type " + encoding_name) result = load_test_vectors_wycheproof(("Signature", "wycheproof"), filename, "Wycheproof ECDSA signature (%s)" % filename, group_tag={'key': filter_ecc, 'hash_module': filter_sha, 'encoding': filter_encoding, }) self.tv += result
def setUp(self): def filter_tag(group): return group['tagSize'] // 8 self.tv = load_test_vectors_wycheproof( ("Cipher", "wycheproof"), "aes_eax_test.json", "Wycheproof EAX", group_tag={'tag_size': filter_tag})
def setUp(self): def filter_tag(group): return group['tagSize'] // 8 self.tv = load_test_vectors_wycheproof( ("Hash", "wycheproof"), "aes_cmac_test.json", "Wycheproof CMAC", group_tag={'tag_size': filter_tag})
def load_tests(self, filename): def filter_rsa(group): return RSA.import_key(group['privateKeyPem']) result = load_test_vectors_wycheproof( ("Cipher", "wycheproof"), filename, "Wycheproof PKCS#1v1.5 (%s)" % filename, group_tag={'rsa_key': filter_rsa}) return result
def load_tests(self, filename): def filter_tag(group): return group['tagSize'] // 8 def filter_algo(root): return root['algorithm'] result = load_test_vectors_wycheproof( ("Cipher", "wycheproof"), filename, "Wycheproof ChaCha20-Poly1305", root_tag={'algo': filter_algo}, group_tag={'tag_size': filter_tag}) return result
def add_tests(self, filename): def filter_rsa(group): return RSA.import_key(group['keyPem']) def filter_sha(group): hash_name = group['sha'] if hash_name == "SHA-512": return SHA512 elif hash_name == "SHA-512/224": return SHA512.new(truncate="224") elif hash_name == "SHA-512/256": return SHA512.new(truncate="256") elif hash_name == "SHA3-512": return SHA3_512 elif hash_name == "SHA-384": return SHA384 elif hash_name == "SHA3-384": return SHA3_384 elif hash_name == "SHA-256": return SHA256 elif hash_name == "SHA3-256": return SHA3_256 elif hash_name == "SHA-224": return SHA224 elif hash_name == "SHA3-224": return SHA3_224 elif hash_name == "SHA-1": return SHA1 else: raise ValueError("Unknown hash algorithm: " + hash_name) def filter_type(group): type_name = group['type'] if type_name not in ("RsassaPkcs1Verify", "RsassaPkcs1Generate"): raise ValueError("Unknown type name " + type_name) result = load_test_vectors_wycheproof( ("Signature", "wycheproof"), filename, "Wycheproof PKCS#1v1.5 signature (%s)" % filename, group_tag={ 'rsa_key': filter_rsa, 'hash_mod': filter_sha, 'type': filter_type }) return result
def load_tests(self, filename): def filter_rsa(group): return RSA.import_key(group['privateKeyPem']) def filter_sha(group): if group['sha'] == "SHA-1": return SHA1 elif group['sha'] == "SHA-224": return SHA224 elif group['sha'] == "SHA-256": return SHA256 elif group['sha'] == "SHA-384": return SHA384 elif group['sha'] == "SHA-512": return SHA512 else: raise ValueError("Unknown sha " + group['sha']) def filter_mgf(group): if group['mgfSha'] == "SHA-1": return lambda x, y: MGF1(x, y, SHA1) elif group['mgfSha'] == "SHA-224": return lambda x, y: MGF1(x, y, SHA224) elif group['mgfSha'] == "SHA-256": return lambda x, y: MGF1(x, y, SHA256) elif group['mgfSha'] == "SHA-384": return lambda x, y: MGF1(x, y, SHA384) elif group['mgfSha'] == "SHA-512": return lambda x, y: MGF1(x, y, SHA512) else: raise ValueError("Unknown mgf/sha " + group['mgfSha']) def filter_algo(group): return "%s with MGF1/%s" % (group['sha'], group['mgfSha']) result = load_test_vectors_wycheproof( ("Cipher", "wycheproof"), filename, "Wycheproof PKCS#1 OAEP (%s)" % filename, group_tag={ 'rsa_key': filter_rsa, 'hash_mod': filter_sha, 'mgf': filter_mgf, 'algo': filter_algo }) return result
def setUp(self): def filter_dsa(group): return DSA.import_key(group['keyPem']) def filter_sha(group): return get_hash_module(group['sha']) def filter_type(group): sig_type = group['type'] if sig_type != 'DsaVerify': raise ValueError("Unknown signature type " + sig_type) return sig_type result = load_test_vectors_wycheproof(("Signature", "wycheproof"), "dsa_test.json", "Wycheproof DSA signature", group_tag={'key': filter_dsa, 'hash_module': filter_sha, 'sig_type': filter_type}) self.tv += result
def add_tests(self, filename): def filter_rsa(group): return RSA.import_key(group['keyPem']) def filter_sha(group): return get_hash_module(group['sha']) def filter_type(group): type_name = group['type'] if type_name not in ("RsassaPssVerify", ): raise ValueError("Unknown type name " + type_name) def filter_slen(group): return group['sLen'] def filter_mgf(group): mgf = group['mgf'] if mgf not in ("MGF1", ): raise ValueError("Unknown MGF " + mgf) mgf1_hash = get_hash_module(group['mgfSha']) def mgf(x, y, mh=mgf1_hash): return MGF1(x, y, mh) return mgf result = load_test_vectors_wycheproof( ("Signature", "wycheproof"), filename, "Wycheproof PSS signature (%s)" % filename, group_tag={ 'key': filter_rsa, 'hash_module': filter_sha, 'sLen': filter_slen, 'mgf': filter_mgf, 'type': filter_type }) return result
def add_tests(self, filename): def filter_algo(root): algo_name = root['algorithm'] if algo_name == "HKDF-SHA-1": return SHA1 elif algo_name == "HKDF-SHA-256": return SHA256 elif algo_name == "HKDF-SHA-384": return SHA384 elif algo_name == "HKDF-SHA-512": return SHA512 else: raise ValueError("Unknown algorithm " + algo_name) def filter_size(unit): return int(unit['size']) result = load_test_vectors_wycheproof(("Protocol", "wycheproof"), filename, "Wycheproof HMAC (%s)" % filename, root_tag={'hash_module': filter_algo}, unit_tag={'size': filter_size}) return result
def setUp(self): self.tv = load_test_vectors_wycheproof(("Cipher", "wycheproof"), "aead_aes_siv_cmac_test.json", "Wycheproof AEAD SIV")