Esempio n. 1
0
def _rewindable(data,
                seekable) -> _rewindable_input_stream.RewindableInputStream:
    if seekable:
        b = cast(BinaryIO, io.BytesIO(data))
    else:
        b = cast(BinaryIO, NonSeekableBytesIO(data))
    return _rewindable_input_stream.RewindableInputStream(b)
Esempio n. 2
0
 def test_read_slow_raw_readall(self, seekable):
     input_stream = bytes_io.SlowReadableRawBytes(b'The quick brown fox',
                                                  seekable)
     with _rewindable_input_stream.RewindableInputStream(
             cast(BinaryIO, input_stream)) as f:
         self.assertIsNone(f.readall())
         self.assertEqual(b'The quick ', f.readall())
         self.assertEqual(b'brown fox', f.readall())
         self.assertEqual(b'', f.readall())
Esempio n. 3
0
 def test_read_slow(self, seekable):
     input_stream = bytes_io.SlowBytesIO(b'The quick brown fox', seekable)
     with _rewindable_input_stream.RewindableInputStream(
             cast(BinaryIO, input_stream)) as f:
         self.assertIsNone(f.read(10))
         self.assertEqual(b'The q', f.read(10))
         self.assertEqual(b'uick ', f.read(10))
         self.assertIsNone(f.read(10))
         self.assertEqual(b'brown', f.read(10))
         self.assertEqual(b' fox', f.read(10))
         self.assertIsNone(f.read(10))
         self.assertEqual(b'', f.read(10))
Esempio n. 4
0
  def __init__(self, primitive_set: core.PrimitiveSet,
               ciphertext_source: BinaryIO, associated_data: bytes):
    """Create a new _DecryptingStreamWrapper.

    Args:
      primitive_set: The primitive set of StreamingAead primitives.
      ciphertext_source: A readable file-like object from which ciphertext bytes
        will be read.
      associated_data: The associated data to use for decryption.
    """
    super(_DecryptingStreamWrapper, self).__init__()
    if not ciphertext_source.readable():
      raise ValueError('ciphertext_source must be readable')
    self._ciphertext_source = _rewindable_input_stream.RewindableInputStream(
        ciphertext_source)
    self._associated_data = associated_data
    self._matching_stream = None
    self._remaining_primitives = [
        entry.primitive for entry in primitive_set.raw_primitives()]
    self._attempting_stream = self._next_decrypting_stream()
Esempio n. 5
0
 def test_nonreadable_input_fail(self):
     with tempfile.TemporaryFile('wb') as f:
         with self.assertRaises(ValueError):
             _ = _rewindable_input_stream.RewindableInputStream(
                 cast(BinaryIO, f))