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