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()