Ejemplo n.º 1
1
 def encrypt_key_file(self, data, passphrase):
     salt = get_random_bytes(32)
     iterations = 100000
     key = pbkdf2_sha256(passphrase.encode('utf-8'), salt, iterations, 32)
     hash = HMAC(key, data, sha256).digest()
     cdata = AES(key).encrypt(data)
     d = {
         'version': 1,
         'salt': salt,
         'iterations': iterations,
         'algorithm': 'sha256',
         'hash': hash,
         'data': cdata,
     }
     return msgpack.packb(d)
Ejemplo n.º 2
0
 def create(cls, repository, args):
     filename = args.repository.to_key_filename()
     path = filename
     i = 1
     while os.path.exists(path):
         i += 1
         path = filename + '.%d' % i
     passphrase = os.environ.get('ATTIC_PASSPHRASE')
     if passphrase is not None:
         passphrase2 = passphrase
     else:
         passphrase, passphrase2 = 1, 2
     while passphrase != passphrase2:
         passphrase = getpass('Enter passphrase (empty for no passphrase):')
         passphrase2 = getpass('Enter same passphrase again: ')
         if passphrase != passphrase2:
             print('Passphrases do not match')
     key = cls()
     key.repository_id = repository.id
     key.init_from_random_data(get_random_bytes(100))
     key.init_ciphers()
     key.save(path, passphrase)
     print('Key file "%s" created.' % key.path)
     print('Keep this file safe. Your data will be inaccessible without it.')
     return key
Ejemplo n.º 3
0
 def test_get_random_bytes(self):
     bytes = get_random_bytes(10)
     bytes2 = get_random_bytes(10)
     self.assert_equal(len(bytes), 10)
     self.assert_equal(len(bytes2), 10)
     self.assert_not_equal(bytes, bytes2)
Ejemplo n.º 4
0
 def test_get_random_bytes(self):
     bytes = get_random_bytes(10)
     bytes2 = get_random_bytes(10)
     self.assert_equal(len(bytes), 10)
     self.assert_equal(len(bytes2), 10)
     self.assert_not_equal(bytes, bytes2)