Exemple #1
0
 def test_sha256_100bytes(self):
     """
     Generate 100 bytes of pseudo-randomness using TLS1.2PRF-SHA256
     """
     secret = (
         b'\x9b\xbe\x43\x6b\xa9\x40\xf0\x17\xb1\x76\x52\x84\x9a\x71\xdb\x35'
     )
     seed = (
         b'\xa0\xba\x9f\x93\x6c\xda\x31\x18\x27\xa6\xf7\x96\xff\xd5\x19\x8c'
     )
     label = b'test label'
     expected_output = (
         b'\xe3\xf2\x29\xba\x72\x7b\xe1\x7b'
         b'\x8d\x12\x26\x20\x55\x7c\xd4\x53'
         b'\xc2\xaa\xb2\x1d\x07\xc3\xd4\x95'
         b'\x32\x9b\x52\xd4\xe6\x1e\xdb\x5a'
         b'\x6b\x30\x17\x91\xe9\x0d\x35\xc9'
         b'\xc9\xa4\x6b\x4e\x14\xba\xf9\xaf'
         b'\x0f\xa0\x22\xf7\x07\x7d\xef\x17'
         b'\xab\xfd\x37\x97\xc0\x56\x4b\xab'
         b'\x4f\xbc\x91\x66\x6e\x9d\xef\x9b'
         b'\x97\xfc\xe3\x4f\x79\x67\x89\xba'
         b'\xa4\x80\x82\xd1\x22\xee\x42\xc5'
         b'\xa7\x2e\x5a\x51\x10\xff\xf7\x01'
         b'\x87\x34\x7b\x66'
     )
     actual_output = prf(secret, label, seed, hashes.SHA256(), 100)
     assert actual_output == expected_output
Exemple #2
0
    def test_sha224_88bytes(self):
        """
        Generate 88 bytes of pseudo-randomness using TLS1.2PRF-SHA224
        """
        secret = (
            b'\xe1\x88\x28\x74\x03\x52\xb5\x30'
            b'\xd6\x9b\x34\xc6\x59\x7d\xea\x2e'
        )
        seed = (
            b'\xf5\xa3\xfe\x6d\x34\xe2\xe2\x85'
            b'\x60\xfd\xca\xf6\x82\x3f\x90\x91'
        )
        label = b'test label'

        expected_output = (
            b'\x22\x4d\x8a\xf3\xc0\x45\x33\x93'
            b'\xa9\x77\x97\x89\xd2\x1c\xf7\xda'
            b'\x5e\xe6\x2a\xe6\xb6\x17\x87\x3d'
            b'\x48\x94\x28\xef\xc8\xdd\x58\xd1'
            b'\x56\x6e\x70\x29\xe2\xca\x3a\x5e'
            b'\xcd\x35\x5d\xc6\x4d\x4d\x92\x7e'
            b'\x2f\xbd\x78\xc4\x23\x3e\x86\x04'
            b'\xb1\x47\x49\xa7\x7a\x92\xa7\x0f'
            b'\xdd\xf6\x14\xbc\x0d\xf6\x23\xd7'
            b'\x98\x60\x4e\x4c\xa5\x51\x27\x94'
            b'\xd8\x02\xa2\x58\xe8\x2f\x86\xcf'
        )
        actual_output = prf(secret, label, seed, hashes.SHA224(), 88)
        assert actual_output == expected_output
Exemple #3
0
 def test_length_returned(self,
                          secret,
                          label,
                          seed,
                          hash_cls,
                          output_length):
     """
     The output of :py:func:`tls._common.prf.prf` is exactly as long
     as requested.
     """
     generated = prf(secret, label, seed, hash_cls(), output_length)
     assert len(generated) == output_length
Exemple #4
0
 def test_unique(self,
                 secret,
                 label,
                 seed,
                 hash_cls,
                 output_length,
                 generated_with_params):
     """
     No two inputs to :py:func:`tls._common.prf.prf` result in the
     same output.
     """
     params = (secret, label, seed, hash_cls, output_length)
     generated = prf(secret, label, seed, hash_cls(), output_length)
     previously_generated = generated_with_params.get(params)
     assert (previously_generated is None or
             generated == previously_generated)
     generated_with_params[params] = generated
Exemple #5
0
    def test_sha512_196bytes(self):
        """
        Generate 196 bytes of pseudo-randomness using TLS1.2PRF-SHA512
        """
        secret = (
            b'\xb0\x32\x35\x23\xc1\x85\x35\x99'
            b'\x58\x4d\x88\x56\x8b\xbb\x05\xeb'
        )

        seed = (
            b'\xd4\x64\x0e\x12\xe4\xbc\xdb\xfb'
            b'\x43\x7f\x03\xe6\xae\x41\x8e\xe5'
        )

        label = b'test label'

        expected_output = (
            b'\x12\x61\xf5\x88\xc7\x98\xc5\xc2'
            b'\x01\xff\x03\x6e\x7a\x9c\xb5\xed'
            b'\xcd\x7f\xe3\xf9\x4c\x66\x9a\x12'
            b'\x2a\x46\x38\xd7\xd5\x08\xb2\x83'
            b'\x04\x2d\xf6\x78\x98\x75\xc7\x14'
            b'\x7e\x90\x6d\x86\x8b\xc7\x5c\x45'
            b'\xe2\x0e\xb4\x0c\x1c\xf4\xa1\x71'
            b'\x3b\x27\x37\x1f\x68\x43\x25\x92'
            b'\xf7\xdc\x8e\xa8\xef\x22\x3e\x12'
            b'\xea\x85\x07\x84\x13\x11\xbf\x68'
            b'\x65\x3d\x0c\xfc\x40\x56\xd8\x11'
            b'\xf0\x25\xc4\x5d\xdf\xa6\xe6\xfe'
            b'\xc7\x02\xf0\x54\xb4\x09\xd6\xf2'
            b'\x8d\xd0\xa3\x23\x3e\x49\x8d\xa4'
            b'\x1a\x3e\x75\xc5\x63\x0e\xed\xbe'
            b'\x22\xfe\x25\x4e\x33\xa1\xb0\xe9'
            b'\xf6\xb9\x82\x66\x75\xbe\xc7\xd0'
            b'\x1a\x84\x56\x58\xdc\x9c\x39\x75'
            b'\x45\x40\x1d\x40\xb9\xf4\x6c\x7a'
            b'\x40\x0e\xe1\xb8\xf8\x1c\xa0\xa6'
            b'\x0d\x1a\x39\x7a\x10\x28\xbf\xf5'
            b'\xd2\xef\x50\x66\x12\x68\x42\xfb'
            b'\x8d\xa4\x19\x76\x32\xbd\xb5\x4f'
            b'\xf6\x63\x3f\x86\xbb\xc8\x36\xe6'
            b'\x40\xd4\xd8\x98'
        )
        actual_output = prf(secret, label, seed, hashes.SHA512(), 196)
        assert actual_output == expected_output
Exemple #6
0
    def test_sha384_148bytes(self):
        """
        Generate 148 bytes of pseudo-randomness using TLS1.2PRF-SHA384
        """
        secret = (
            b'\xb8\x0b\x73\x3d\x6c\xee\xfc\xdc'
            b'\x71\x56\x6e\xa4\x8e\x55\x67\xdf'
        )

        seed = (
            b'\xcd\x66\x5c\xf6\xa8\x44\x7d\xd6'
            b'\xff\x8b\x27\x55\x5e\xdb\x74\x65'
        )
        label = b'test label'
        expected_output = (
            b'\x7b\x0c\x18\xe9\xce\xd4\x10\xed'
            b'\x18\x04\xf2\xcf\xa3\x4a\x33\x6a'
            b'\x1c\x14\xdf\xfb\x49\x00\xbb\x5f'
            b'\xd7\x94\x21\x07\xe8\x1c\x83\xcd'
            b'\xe9\xca\x0f\xaa\x60\xbe\x9f\xe3'
            b'\x4f\x82\xb1\x23\x3c\x91\x46\xa0'
            b'\xe5\x34\xcb\x40\x0f\xed\x27\x00'
            b'\x88\x4f\x9d\xc2\x36\xf8\x0e\xdd'
            b'\x8b\xfa\x96\x11\x44\xc9\xe8\xd7'
            b'\x92\xec\xa7\x22\xa7\xb3\x2f\xc3'
            b'\xd4\x16\xd4\x73\xeb\xc2\xc5\xfd'
            b'\x4a\xbf\xda\xd0\x5d\x91\x84\x25'
            b'\x9b\x5b\xf8\xcd\x4d\x90\xfa\x0d'
            b'\x31\xe2\xde\xc4\x79\xe4\xf1\xa2'
            b'\x60\x66\xf2\xee\xa9\xa6\x92\x36'
            b'\xa3\xe5\x26\x55\xc9\xe9\xae\xe6'
            b'\x91\xc8\xf3\xa2\x68\x54\x30\x8d'
            b'\x5e\xaa\x3b\xe8\x5e\x09\x90\x70'
            b'\x3d\x73\xe5\x6f'
        )
        actual_output = prf(secret, label, seed, hashes.SHA384(), 148)
        assert actual_output == expected_output