def test_read_bytes_from_non_framed_message_body_too_small(self):
     ct_stream = io.BytesIO(VALUES["data_128"])
     test_decryptor = StreamDecryptor(key_provider=self.mock_key_provider, source=ct_stream)
     test_decryptor.body_length = len(VALUES["data_128"] * 2)
     test_decryptor._header = self.mock_header
     with pytest.raises(SerializationError) as excinfo:
         test_decryptor._read_bytes_from_non_framed_body(1)
     excinfo.match("Total message body contents less than specified in body description")
 def test_read_bytes_from_non_framed_no_verifier(self):
     ct_stream = io.BytesIO(VALUES["data_128"])
     test_decryptor = StreamDecryptor(key_provider=self.mock_key_provider, source=ct_stream)
     test_decryptor.body_length = len(VALUES["data_128"])
     test_decryptor.decryptor = self.mock_decryptor_instance
     test_decryptor._header = self.mock_header
     test_decryptor._derived_data_key = sentinel.derived_data_key
     test_decryptor._unframed_body_iv = sentinel.unframed_body_iv
     test_decryptor.verifier = None
     self.mock_decryptor_instance.update.return_value = b"1234"
     test_decryptor._read_bytes_from_non_framed_body(5)
Example #3
0
 def test_read_bytes_from_non_framed_no_verifier(self):
     ct_stream = io.BytesIO(VALUES['data_128'])
     test_decryptor = StreamDecryptor(key_provider=self.mock_key_provider,
                                      source=ct_stream)
     test_decryptor.body_start = 0
     test_decryptor.body_length = test_decryptor.body_end = len(
         VALUES['data_128'])
     test_decryptor.decryptor = self.mock_decryptor_instance
     test_decryptor._header = self.mock_header
     test_decryptor.verifier = None
     self.mock_decryptor_instance.update.return_value = b'1234'
     test_decryptor._read_bytes_from_non_framed_body(5)
Example #4
0
 def test_read_bytes_from_non_framed_message_body_too_small(self):
     ct_stream = io.BytesIO(VALUES['data_128'])
     test_decryptor = StreamDecryptor(key_provider=self.mock_key_provider,
                                      source=ct_stream)
     test_decryptor.body_start = 0
     test_decryptor.body_length = test_decryptor.body_end = len(
         VALUES['data_128'] * 2)
     test_decryptor._header = self.mock_header
     with six.assertRaisesRegex(
             self, SerializationError,
             'Total message body contents less than specified in body description'
     ):
         test_decryptor._read_bytes_from_non_framed_body(1)
Example #5
0
    def test_read_bytes_from_non_framed_finalize(self):
        ct_stream = io.BytesIO(VALUES["data_128"])
        test_decryptor = StreamDecryptor(
            materials_manager=self.mock_materials_manager,
            source=ct_stream,
            commitment_policy=self.mock_commitment_policy,
        )
        test_decryptor.body_length = len(VALUES["data_128"])
        test_decryptor.decryptor = self.mock_decryptor_instance
        test_decryptor.verifier = MagicMock()
        test_decryptor._header = self.mock_header
        test_decryptor._derived_data_key = sentinel.derived_data_key
        test_decryptor._unframed_body_iv = sentinel.unframed_body_iv
        self.mock_decryptor_instance.update.return_value = b"1234"
        self.mock_decryptor_instance.finalize.return_value = b"5678"

        test = test_decryptor._read_bytes_from_non_framed_body(
            len(VALUES["data_128"]) + 1)

        test_decryptor.verifier.update.assert_called_once_with(
            VALUES["data_128"])
        self.mock_decryptor_instance.update.assert_called_once_with(
            VALUES["data_128"])
        self.mock_deserialize_footer.assert_called_once_with(
            stream=test_decryptor.source_stream,
            verifier=test_decryptor.verifier)
        assert test == b"12345678"
 def test_read_bytes_from_non_framed_finalize(self):
     ct_stream = io.BytesIO(VALUES['data_128'])
     test_decryptor = StreamDecryptor(
         key_provider=self.mock_key_provider,
         source=ct_stream
     )
     test_decryptor.body_start = 0
     test_decryptor.body_length = test_decryptor.body_end = len(VALUES['data_128'])
     test_decryptor.decryptor = self.mock_decryptor_instance
     test_decryptor.verifier = MagicMock()
     test_decryptor._header = self.mock_header
     self.mock_decryptor_instance.update.return_value = b'1234'
     self.mock_decryptor_instance.finalize.return_value = b'5678'
     test = test_decryptor._read_bytes_from_non_framed_body(len(VALUES['data_128']) + 1)
     test_decryptor.verifier.update.assert_called_once_with(VALUES['data_128'])
     self.mock_decryptor_instance.update.assert_called_once_with(VALUES['data_128'])
     self.mock_update_verifier_with_tag.assert_called_once_with(
         stream=test_decryptor.source_stream,
         header=test_decryptor._header,
         verifier=test_decryptor.verifier
     )
     self.mock_deserialize_footer.assert_called_once_with(
         stream=test_decryptor.source_stream,
         verifier=test_decryptor.verifier
     )
     assert test_decryptor.source_stream.closed
     assert test == b'12345678'
Example #7
0
    def test_read_bytes_from_non_framed(self):
        ct_stream = io.BytesIO(VALUES["data_128"])
        test_decryptor = StreamDecryptor(
            materials_manager=self.mock_materials_manager,
            source=ct_stream,
            commitment_policy=self.mock_commitment_policy,
        )
        test_decryptor.body_length = len(VALUES["data_128"])
        test_decryptor.decryptor = self.mock_decryptor_instance
        test_decryptor._header = self.mock_header
        test_decryptor.verifier = MagicMock()
        test_decryptor._derived_data_key = sentinel.derived_data_key
        test_decryptor._unframed_body_iv = sentinel.unframed_body_iv
        self.mock_decryptor_instance.update.return_value = b"1234"
        self.mock_decryptor_instance.finalize.return_value = b"5678"

        test = test_decryptor._read_bytes_from_non_framed_body(5)

        self.mock_deserialize_tag.assert_called_once_with(
            stream=test_decryptor.source_stream,
            header=test_decryptor._header,
            verifier=test_decryptor.verifier)
        self.mock_get_aad_content_string.assert_called_once_with(
            content_type=self.mock_header.content_type, is_final_frame=True)
        self.mock_assemble_content_aad.assert_called_once_with(
            message_id=self.mock_header.message_id,
            aad_content_string=sentinel.aad_content_string,
            seq_num=1,
            length=len(VALUES["data_128"]),
        )
        self.mock_decryptor.assert_called_once_with(
            algorithm=self.mock_header.algorithm,
            key=sentinel.derived_data_key,
            associated_data=sentinel.associated_data,
            iv=sentinel.unframed_body_iv,
            tag=sentinel.tag,
        )
        assert test_decryptor.decryptor is self.mock_decryptor_instance
        test_decryptor.verifier.update.assert_called_once_with(
            VALUES["data_128"])
        self.mock_decryptor_instance.update.assert_called_once_with(
            VALUES["data_128"])
        assert test == b"12345678"