示例#1
0
    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})
示例#2
0
    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})
示例#3
0
    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
示例#6
0
    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
示例#7
0
    def add_tests(self, filename):
        def pk(group):
            elem = group['key']['pk']
            return unhexlify(elem)

        def sk(group):
            elem = group['key']['sk']
            return unhexlify(elem)

        result = load_test_vectors_wycheproof(
            ("Signature", "wycheproof"),
            filename,
            "Wycheproof ECDSA signature (%s)" % filename,
            group_tag={
                'pk': pk,
                'sk': sk
            })
        self.tv += result
示例#8
0
    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
示例#9
0
    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
示例#10
0
    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
示例#12
0
 def setUp(self):
     self.tv = load_test_vectors_wycheproof(("Cipher", "wycheproof"),
                                            "aead_aes_siv_cmac_test.json",
                                            "Wycheproof AEAD SIV")