def pbkdf2(password, length, salt=None, iterations=1000): "Derive a shared secret including encryption key from password" if salt is None: salt = random.getrandbytes(8) c_password = api.new('char[]', password) c_salt = api.new('char[]', salt) c_key = api.new('unsigned char[]', length) api.PKCS5_PBKDF2_HMAC_SHA1(c_password, len(password), c_salt, len(salt), iterations, length, c_key) secret = Secret(bytes(api.buffer(c_key)), salt, iterations) return secret
def pbkdf2(password, length, salt=None, iterations=1000): "Derive a shared secret including encryption key from password" if salt is None: salt = random.getrandbytes(8) c_password = api.new('char[]', password) c_salt = api.new('char[]', salt) c_key = api.new('unsigned char[]', length) api.PKCS5_PBKDF2_HMAC_SHA1(c_password, len(password), c_salt, len(salt), iterations, length, c_key) secret = Secret(api.buffer(c_key)[:], salt, iterations) return secret
def test_getrandbytes(self): string = random.getrandbytes(8) self.assertEqual(8, len(string))