curobj = None
hdrdum = None
+ ctsize = -1 # per object from .next() → .done()
def __init__ (self, password, paramversion, nacl=None):
if nacl is None:
self.iv = self.iv_make()
self.curobj = (filename, version, paramversion, nacl)
self.cnt += 1
+ self.ctsize = 0
aad = "%s" % filename
self.aes = Cipher \
( algorithms.AES (self.key)
return self.hdrdum
- def done (self, cmpdata, ctsize):
+ def done (self, cmpdata):
if cmpdata != self.hdrdum:
raise Exception ("XXX bad sync for writing header") ## we need to converge on a sensible error handling strategy
data = self.aes.finalize ()
- ctsize += len (data)
+ self.ctsize += len (data)
(filename, version, paramversion, nacl) = self.curobj
ok, hdr = hdr_from_params (version, paramversion, nacl, self.iv,
- ctsize, self.aes.tag)
+ self.ctsize, self.aes.tag)
if ok is False:
raise Exception ("XXX error constructing header: %r" % hdr) ## we need to converge on a sensible error handling strategy
return data, hdr
+ def process (self, buf):
+ data = super().process (buf)
+ self.ctsize += len (data)
+ return data
+
+
class Decrypt (Crypto):
pfx = None