def test_prep_non_framed(self): test_decryptor = StreamDecryptor(key_provider=self.mock_key_provider, source=self.mock_input_stream) test_decryptor._header = self.mock_header test_decryptor.verifier = sentinel.verifier test_decryptor._derived_data_key = sentinel.derived_data_key test_decryptor._prep_non_framed() self.mock_deserialize_non_framed_values.assert_called_once_with( stream=self.mock_input_stream, header=self.mock_header, verifier=sentinel.verifier) assert test_decryptor.body_length == len(VALUES['data_128']) 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.iv, tag=sentinel.tag) assert test_decryptor.decryptor is self.mock_decryptor_instance assert test_decryptor.body_start == 0 assert test_decryptor.body_end == len(VALUES['data_128'])
def test_prep_non_framed(self): test_decryptor = StreamDecryptor(key_provider=self.mock_key_provider, source=self.mock_input_stream) test_decryptor._header = self.mock_header test_decryptor.verifier = sentinel.verifier test_decryptor._derived_data_key = sentinel.derived_data_key test_decryptor._prep_non_framed() self.mock_deserialize_non_framed_values.assert_called_once_with( stream=test_decryptor.source_stream, header=self.mock_header, verifier=sentinel.verifier ) assert test_decryptor.body_length == len(VALUES["data_128"]) assert test_decryptor._body_start == self.mock_header.algorithm.iv_len + 8 assert test_decryptor._body_end == self.mock_header.algorithm.iv_len + 8 + len(VALUES["data_128"])
def test_prep_non_framed_content_length_too_large(self): self.mock_header.content_type = ContentType.NO_FRAMING self.mock_header.frame_length = 1024 test_decryptor = StreamDecryptor( key_provider=self.mock_key_provider, source=self.mock_input_stream, max_body_length=len(VALUES['data_128']) // 2) test_decryptor._header = self.mock_header test_decryptor.verifier = sentinel.verifier mock_data_key = MagicMock() test_decryptor.data_key = mock_data_key with six.assertRaisesRegex( self, CustomMaximumValueExceeded, 'Non-framed message content length found larger than custom value: {found} > {custom}' .format(found=len(VALUES['data_128']), custom=len(VALUES['data_128']) // 2)): test_decryptor._prep_non_framed()
def test_prep_non_framed_content_length_too_large(self): self.mock_header.content_type = ContentType.NO_FRAMING self.mock_header.frame_length = 1024 test_decryptor = StreamDecryptor( key_provider=self.mock_key_provider, source=self.mock_input_stream, max_body_length=len(VALUES["data_128"]) // 2, ) test_decryptor._header = self.mock_header test_decryptor.verifier = sentinel.verifier mock_data_key = MagicMock() test_decryptor.data_key = mock_data_key with pytest.raises(CustomMaximumValueExceeded) as excinfo: test_decryptor._prep_non_framed() excinfo.match( "Non-framed message content length found larger than custom value: {found} > {custom}" .format(found=len(VALUES["data_128"]), custom=len(VALUES["data_128"]) // 2))