self.password = password
self.nacl = nacl
self.paramversion = paramversion
- (kdf, params) = kdf_by_version (paramversion)
+ (kdf, params) = kdf_by_version (paramversion)
N = params["N"]
r = params["r"]
class Decrypt (Crypto):
- pfx = None
+ pfx = None
+ password = None
- def __init__ (self, password, paramversion, nacl):
- super().__init__ (password, paramversion, nacl)
+ def __init__ (self, password, paramversion=None, nacl=None):
+ if paramversion is not None \
+ and nacl is not None :
+ super().__init__ (password, paramversion, nacl)
+ else:
+ self.password = password
+ # else postpone until first header is available
def next (self, hdr):
+ if self.key is None:
+ super().__init__ (self.password, hdr ["paramversion"], hdr ["nacl"])
+ del self.password # XXX find a way to zero out the buffer instead
self.cnt += 1
iv = hdr ["iv"]
self.aes = Cipher \