def handleStartSession(self, request, nonce=None, passwd=None, ccid=None): nonceid = strip_text(str(request.args['nonceid'])) nonceid = int(nonceid) if nonceid > -1: if not nonce: nonce = request.content.read(NONCE_SIZE) if not nonce: reply_dict = { 'status': {'error': "Invalid Request", 'message': "No challange nonce on request body."} } return json.dumps(reply_dict, encoding="utf-8") else: nonce = None if passwd == None: passwd = request.content.read(USR_PASSWD_SIZE) def handleStartSession_cb(data): if not data: reply_dict = { 'status': {'error': "Invalid Request", 'message': 'User does not exist.'} } else: pboxid = data[0][0] pubkey = data[0][1] salt = self.server.decryptData(data[0][2]) #TODO: STORE THIS ENCRYPTED #print pubkey #print "StartSession salt:" , salt #print "encripted nonce: ", nonce if self.session_manager.startSession(nonce, nonceid, pubkey, pboxid, salt, passwd): #print "Valid Nonce!" reply_dict = { 'status': "OK" } ticket = self.ticket_manager.generateTicket(pboxid, pubkey) request.addCookie('ticket', ticket) else: #print "Invalid Nonce!" if request.args['method'] == ['retister']: self.storage.deletePBox(pboxid) reply_dict = { 'status': {'error': "Invalid Ticket", 'message': 'Could not start session registeration dropped.'} } else: reply_dict = { 'status': {'error': "Invalid Nonce", 'message': 'N/A'} } request.write( json.dumps(reply_dict, sort_keys=True, encoding="utf-8") ) request.finish() d = self.storage.getClientData(request, ccid) d.addCallback(handleStartSession_cb) return NOT_DONE_YET
def handleValidation_cb(data): if not data: reply_dict = { 'status': {'error': "Invalid Request", 'message': 'User does not exist.'} } else: pboxid = data[0][0] pubkey = data[0][1] #print pubkey if self.ticket_manager.validateTicket(ticket, pboxid, pubkey): print "Valid Ticket!" self.session_manager.refreshSession(int(pboxid)) #Validatind argumen Integrity: hashed = request.content.read(HASH_SIZE) #print hashed if not hash: reply_dict = { 'status': {'error': "Invalid Request", 'message': "No argument data hash on request body."} } return json.dumps(reply_dict, encoding="utf-8") list = [] for k in request.args.keys(): list.append(strip_text(str(request.args[k]))) if self.server.validateArgs(self.ticket_manager.getTicketRaw(pboxid), list, hashed) == True: print "Args Validated" else: print "Args Corrupted" reply_dict = { 'status': {'error': "Invalid Request", 'message': "No argument data hash on request body."} } return json.dumps(reply_dict, encoding="utf-8") d = method(request, pboxid, pubkey) return NOT_DONE_YET else: print "Invalid Ticket!" reply_dict = { 'status': {'error': "Invalid Ticket", 'message': 'N/A'} } request.write( json.dumps(reply_dict, sort_keys=True, encoding="utf-8") ) request.finish()