Exemplo n.º 1
0
    def rotate_data(self,username,password):
        """
        This will clear all existing user and content keys. Will generate new keys and
        encrypt data based on new keys.
        :param username:
        :param password:
        :return:
        """
        content = self.session.query(Data).first()
        user = self.session.query(User).filter(User.username == 'Root', User.password == password).first()
        if user:
            content_key = Encrypter(user.encrypt_key).decrypt(user.content_key)
            decrypted_text = Encrypter(content_key).decrypt(content.data)
            new_content_key = generate_key()
            content.data = Encrypter(new_content_key).encrypt(decrypted_text)
            for user in self.session.query(User).all():
                new_key = generate_key()
                content_key_enc = Encrypter(new_key).encrypt(new_content_key)
                user.content_key = content_key_enc
                user.encrypt_key = new_key

            self.session.commit()
            return 'Success : Keys and data is rotated successfully.'
        else:
            return 'Error : Root user password not match.'
Exemplo n.º 2
0
def load_sample_data():
    """
    This will load sample data. The following users are created:
    Root / password
    Jim / bunny
    Bill / gopher

    :return:
    """
    db = Database()
    db.start_engine()

    content_key = generate_key()
    user1_key = generate_key()
    content_key_encrypted = Encrypter(user1_key).encrypt(content_key)
    user1 = User(username='******',password='******',content_key=content_key_encrypted,encrypt_key=user1_key)

    db.session.add(user1)
    user2_key = generate_key()
    content_key_encrypted = Encrypter(user2_key).encrypt(content_key)
    user2 = User(username='******',password='******',content_key=content_key_encrypted,encrypt_key=user2_key)
    db.session.add(user2)
    user3_key = generate_key()
    content_key_encrypted = Encrypter(user3_key).encrypt(content_key)
    user3 = User(username='******',password='******',content_key=content_key_encrypted,encrypt_key=user3_key)
    db.session.add(user3)
    db.session.commit()
Exemplo n.º 3
0
	def __init__(self, miner_id, blockchain, manager_qel, seed_node_pool = dict({}), node_type=None):

		self.id  = miner_id # for logging
		self.blockchain = deepcopy(blockchain)
		self.key_pair = generate_key()
		self.public_key = self.key_pair.publickey()
		self.node_pool = dict({}) # Nodes connected with this miner
		self.node_pool_address = dict({}) # public keys of neighbours
		self.seed_node_pool = seed_node_pool
		self.__type = node_type # "SEED" / "NON-SEED"
		self.QEL = manager_qel
		self.pending_txn_pool = []
		self.waiting_for_consensus_reply = (None, None)
		self.received_txns = set() # txn_hash
		self.received_blocks = set() # block_hash
		self.compute_power = randint(3,10) # lower the number higher is the compute power coz faster will be the mining
		self.start_mining = False
		self.start_creating_txns = False
		self.connected_with_neighbours = 1
		self.run_mine = 5
		self.len_list= 0
		self.temp_utxo_list = []
		self.first_txn = False

		logging.basicConfig(filename=f'LOG-MINER-{self.id}.log', level=logging.DEBUG, format='%(asctime)s : %(levelname)s :Process- %(process)d %(processName)s: Thread- %(thread)d %(threadName)s: %(funcName)s : %(message)s')
		logging.info(f'Miner {self.id} object Created')
Exemplo n.º 4
0
 def __init__(self, controller):
     """
     Initialize a user. Generate public/private key.
     """
     self.parent = controller
     self.encrypt_key = crypto.generate_key()
     self.address = crypto.sha256hash(crypto.extract_public_key(self.encrypt_key))
Exemplo n.º 5
0
def rotate():
    keys = [i for i in data()]
    keys.pop()
    for i in xrange(KEYRING_SIZE - len(keys)):
        keys.insert(0, crypto.generate_key())
    delete()
    set(keys)
Exemplo n.º 6
0
def search(_):
    with open('target.art') as f:
        target_art = f.read()

    import os
    _, _, art_files = next(os.walk('./keys'))
    approx_file = './keys/' + sorted(art_files)[-2]

    with open(approx_file) as f:
        approx_art = f.read()

    approx_diff = diff(target_art, approx_art)

    private_key, public_key = generate_key()
    newest_art = get_randomart(public_key)
    newest_diff = diff(target_art, newest_art)

    if newest_diff < approx_diff:
        print("New approximation found! Diff = {}".format(newest_diff))
        print(newest_art)
        index = int(approx_file[7:-4])
        approx_file = "./keys/{}.art".format(index + 1)
        with open(approx_file, 'w') as f:
            approx_art = f.write(newest_art)
        with open(approx_file[:-3] + 'key', 'w') as f:
            approx_art = f.write(str(private_key, 'utf-8'))
Exemplo n.º 7
0
def login():
   form = LoginForm()
   if form.validate_on_submit():
        user = form.user
        
        user.authenticated = True
        db.session.add(user)
        db.session.commit()

        # Generate and store user's half_key
        user_key = generate_key(form.password.data, user.user_key_salt, 32)
        half_key = xor_keys(user_key, user.companion_key)
        session[generate_hash(user.user_key_salt)] = half_key

        login_user(user, remember=False)

        return redirect(get_referrer('.u', username=user.username))

   return render_template("login.html", title = 'Sign In',form=form)
Exemplo n.º 8
0
def register():
    form = RegistrationForm()
    if form.validate_on_submit():        
        # Create new user
        user = User(
            username=form.username.data.lower(),
            password=bcrypt.generate_password_hash(form.password.data),
            companion_key=generate_salt(32),
            user_key_salt=generate_salt(32)
        )

        user.authenticated = True
        db.session.add(user)
        db.session.commit()

        # Generate and store user's half_key
        user_key = generate_key(form.password.data, user.user_key_salt, 32)
        half_key = xor_keys(user_key, user.companion_key)
        session[generate_hash(user.user_key_salt)] = half_key

        login_user(user, remember=False)
        return redirect(url_for(".index"))
    
    return render_template("register.html", title = 'Sign In', form=form)
Exemplo n.º 9
0
 def __init__(self):
     self.private_key = generate_key()
     self.public_key = get_public_key(self.private_key)
     self.public_key_serial = serialize_public_key(self.public_key)
     my_print("My pub key (serial): {0}".format(self.public_key_serial))
Exemplo n.º 10
0
def refresh():
    keys = [crypto.generate_key() for i in xrange(KEYRING_SIZE)]
    delete()
    set(keys)
    return keys