/
server.py
57 lines (43 loc) · 1.47 KB
/
server.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
import aes
import os, random, string
import database
from secretsharing import SecretSharer
from Crypto import Random
def process_image(filename,k,n,users,sender_id):
# AES Key
key = Random.new().read(32)
hexkey = key.encode('hex')
# Encrypting Image and Deleting the file
aes.encrypt_file(key,filename)
os.remove(filename)
# Splitting AES Key into N parts
shares = SecretSharer.split_secret(hexkey,k,n)
# Creating a New Message
msg_id = database.new_message(filename + '.enc', k, sender_id)
users.insert(0,sender_id)
# Updating message queue
database.update_message_queue(users,shares,msg_id)
def mark_key_sent(msg_id, user_id):
database.mark_key_sent(msg_id, user_id)
def mark_key_received(msg_id, user_id, subkey):
database.mark_key_received(msg_id, user_id, subkey)
def send_decrpyted_image(filename,shares,k):
hexkey = SecretSharer.recover_secret(shares[0:k])
key = hexkey.decode('hex')
aes.decrypt_file(key,filename)
def count_thres_num_users(msg_id):
return database.count_thres_num_users(msg_id)
def remove_from_message_queue(msg_id, user_id):
database.remove_from_message_queue(msg_id, user_id)
def count_num_users(msg_id):
return database.count_num_users(msg_id)
#process_image('img.jpg',2,3,[3,4],2)
#mark_key_sent(12,2)
#remove_from_message_queue(12,4)
#print count_num_users(12)
def main():
#shares = process_image('img.jpg',2,3,[3,4],2)
#send_decrpyted_image('img.jpg.enc',shares,2)
database.connection_close()
if __name__ == '__main__':
main()