key = None
pfx = None # 64 bit fixed parts of IV
cnt = None
+ iv = None
def __init__ (self, *al, **akv):
self.cnt = 1
return struct.pack("<8sL", self.pfx, self.cnt % 0xffFFffFF)
- def next (self, filename):
+ def next (self, filename, version, paramversion, nacl, ctsize=None):
+ iv = self.iv_make()
+ ok, hdr = hdr_from_params (version, paramversion, nacl, iv, ctsize)
+ if ok is False:
+ return None
self.cnt += 1
aad = "%s" % filename
- iv = self.iv_make()
self.aes = Cipher \
( algorithms.AES (self.key)
, modes.GCM (iv)
, backend = default_backend ()) \
.encryptor ()
+ return hdr
- return self.aes.authenticate_additional_data (aad)
+ return self.aes.authenticate_additional_data (str.encode (aad))
def done (self):
def next (self, hdr):
self.cnt += 1
print("I2N: got header ā%sā" % crypto.hdr_fmt (hdr))
+ iv = hdr ["iv"]
self.aes = Cipher \
( algorithms.AES (key)
, modes.GCM (hdr["iv"])
def done (self, filename, tag):
aad = "%s" % filename
- self.aes.authenticate_additional_data (aad)
+ self.aes.authenticate_additional_data (str.encode (aad))
return self.aes.finalize_with_tag (tag)