Example #1
0
 def handle_register(self, register):
     self.registered_usernames_lock.acquire()
     if register.username not in self.registered_usernames:
         self.registered_usernames.add(register.username)
         user_id = self.client_id
         self.registered_usernames_lock.release()
         if self.encryption:
             register.symmetric_key = RSA._rsa_decrypt_and_decode(self.rsa_key, 
                                                       register.symmetric_key)
         self.clients_lock.acquire()
         self.clients[user_id] = register
         self.client_id += 1  
         self.clients_lock.release()
         self.__ontology_manager.add_individual('User', register.username)
         self.__ontology_manager.save()
         self.logger.debug('Username %s registered and assigned ID %d' \
                           % (register.username, user_id))
         if self.encryption:
             self.clients_lock.acquire()
             ret = RSA.rsa_encrypt_client(self.clients[user_id], 
                                           Serialization.serialize_registeruserresponse(user_id))
             self.clients_lock.release()
             return ret
         return base64.b64encode(Serialization.serialize_registeruserresponse(user_id))
     self.logger.error('Username %s already registered' % register.username)
     return
                             
                             
Example #2
0
 def fetch(self, user_id, query, page):
     if self.encryption:
         query = AES._aes_encrypt_and_encode(self.aes_key, query)
     encoded = Serialization.serialize_sendquery(user_id, 
                                                 query,
                                                 page)
     response = self.__post('query', encoded, aes_encrypt=self.encryption)
     return Serialization.deserialize_sendqueryresponse(response)
Example #3
0
 def __init__(self, server_ip, encryption, username='******'):
     self.rsa_key = generate_RSA_keypair()
     self.aes_key = generate_AES_key()
     self.logger = get_logger('client')
     self.server_public_key = None
     self.user_id = None
     self.__fetcher = Fetcher(server_ip, SERVER_PORT, self.rsa_key, self.aes_key, self.logger, encryption)
     self.username = username
     self.user = Serialization.create_user(25, 'CS', 'MPhil', '2012')
     self.mobile_device = Serialization.create_mobiledevice('Samsung', 'Ace', True, True, 'Android', 'Gingerbread')
     self.network_details = Serialization.create_networkdetails(1000)
Example #4
0
 def register(self, username, user, mobile_device, network_details, public_key, symmetric_key):
     if self.encryption:
         symmetric_key = RSA._rsa_encrypt_and_encode(self.server_public_key, symmetric_key)
     encoded = Serialization.serialize_registeruser(username, 
                                                    user, 
                                                    mobile_device, 
                                                    network_details, 
                                                    str(public_key.n),
                                                    str(public_key.e),
                                                    symmetric_key)
     response = self.__post('register', encoded, rsa_encrypt=self.encryption)
     return Serialization.deserialize_registeruserresponse(response)
Example #5
0
 def handle_query(self, message):
     query_message = Serialization.deserialize_sendquery(message)
     self.clients_lock.acquire()
     if query_message.user_id in self.clients:
         aes_key = self.clients[query_message.user_id].symmetric_key
         self.clients_lock.release()
         query = query_message.query
         if self.encryption:
             query = AES._aes_decrypt_and_decode(aes_key, 
                                                 query_message.query)
     response = self.__fetch_query.fetch('keyword', query, page=query_message.page)
     entries = self.__parse_query.parse(response)
     if self.encryption:
         return AES._aes_encrypt_and_encode(aes_key, 
                                            Serialization.serialize_sendqueryresponse(entries))
     return base64.b64encode(Serialization.serialize_sendqueryresponse(entries))
Example #6
0
 def getpublickey(self, username):
     encoded = Serialization.serialize_getpublickey(username)
     response = self.__post('getpublickey', encoded)
     return Serialization.deserialize_getpublickeyresponse(response)
Example #7
0
 def handle_getpublickey(self, username):
     return base64.b64encode(Serialization.serialize_getpublickeyresponse(self.rsa_key))