def __next__()

in alibabacloud_oss_v2/crypto/aes_ctr.py [0:0]


    def __next__(self):

        if self._finished:
            raise StopIteration

        data = self._remains_bytes or b''
        self._remains_bytes = None
        try:
            while True:
                d = next(self._iterator)
                if isinstance(d, int):
                    d = d.to_bytes()
                elif isinstance(d, str):
                    d = d.encode()
                if len(d) < _BLOCK_SIZE_LEN:
                    data += d
                else:
                    if len(data) > 0:
                        data += d
                    else:
                        data = d
                if len(data) >= _BLOCK_SIZE_LEN:
                    data_len = len(data)
                    align_len = (data_len // _BLOCK_SIZE_LEN) * _BLOCK_SIZE_LEN
                    edata = self._cipher.encrypt(data[:align_len])
                    if data_len > align_len:
                        self._remains_bytes = data[align_len:]
                    return edata
        except StopIteration as err:
            self._finished = True
            if len(data) > 0:
                return self._cipher.encrypt(data)
            raise err