'Read length bytes from the stream.'

def read(self, length):

    if (length is None):
        raise RuntimeError('Read    calls    must    be    bounded.')
    if self.eof:
        return ''
    while (self.encrypted_buffer.len < length):
        current_chunk = self._EncryptNextChunk()
        if (current_chunk is None):
            self.eof = True
            break
        self.encrypted_buffer.write(current_chunk)
    return self.encrypted_buffer.ReadFromFront(length)
