def handleConnection(data, addr): o = pickle.loads(data) #recieves mapRegister messages print repr(o) # prints array('i', [1, 3, 2]) if (o.msg_type == MSG_MAP_REGISTER): print 'READ MapRegister: %s (mask: %s), RLOCsp: %s' % (o.eid, o.mask, o.rloc_sp) if verifySign(o): print '****Testing ALPHA' test, ts, xtr_id = verifyAlpha(o) #**TODO: VERIFICATION OF ROA #TEST IF THE XTR_ID BELONGS THE THE RLOC THAT BELONGS TO AN ASN if test == 1: #verifyAlpha(o)[0]: print 'EID Validated: ', o.eid ans = MapReply(o.eid, o.mask, ts, xtr_id) ans.generateSign() else: ans = ErrorMessage('alpha INCORRECT for EID %s' % o.eid.toStr()) else: ans = ErrorMessage('signature INCORRECT for EID %s' % o.eid.toStr()) else: ans = ErrorMessage('Message Unknown for MAP Server') sock.sendto(pickle.dumps(ans), addr)
def sendMapRegister(servReq): #servReg: ServiceRequest sent from client """TODO: DEFINE ROA AND CREATE THE MAP REGISTER MESSAGE USING THE RLOC AND XTR_ID CONTAINDED IN IT Here, I am defining the xtr_id and the RLOC by hand. The xtr_id must be the sames as the one used by the client to achieve the Registration """ mapReg = MapRegister(servReq.eid, servReq.mask, servReq.alpha, '9.9.9.9', xtr_id=b'qwertyuiop123456', ra_sp=b'authorized') mapReg.generateSign() sockms = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) sockms.sendto(pickle.dumps(mapReg), (UDP_IP, 4005)) received = sockms.recv(1024) sockms.close() answer = pickle.loads(received) #MapReply answer print repr(answer) if (answer.msg_type == MSG_MAP_REPLY): if verifySign(answer): otp_to_ack[(answer.eid.toStr() + '/' + str(answer.mask))] = [ answer.eid, answer.mask, answer.otp ] return (ServiceReply(answer.eid, answer.mask, answer.beta)) # otp=0, ack=0,beta=0): else: return (ErrorMessage('MapReply signature INCORRECT%s' % o.eid.toStr())) else: return answer
def sendMapRegister(servReq): #servReg: ServiceRequest sent from client mapReg = MapRegister(servReq.eid, servReq.mask, servReq.alpha, '9.9.9.9') mapReg.generateSign() #mapReg.mask = 0 sockms = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) sockms.sendto(pickle.dumps(mapReg), (UDP_IP, 4005)) received = sockms.recv(1024) sockms.close() answer = pickle.loads(received) #MapReply answer print repr(answer) if (answer.msg_type == MSG_MAP_REPLY): if self.verifySign(answer): self.otp_to_ack[(answer.eid.toStr() + '/' + str(answer.mask))] = [ answer.eid, answer.mask, answer.otp ] return (ServiceReply(answer.eid, answer.mask, answer.beta)) # otp=0, ack=0,beta=0): else: return (ErrorMessage('MapReply signature INCORRECT%s' % o.eid.toStr())) else: return answer