Exemplo n.º 1
0
	def receiveMessage(self, from_field, message_body):
		#try:
			# If recieving an init
			if self.data_store.getSessionDetails(from_field) is None:
				# decrypt init
				init = SMSSecInitiatorMessage(self.data_store.this_telephone, from_field)
				details = init.decryptMessage(message_body, self.data_store.getMachinePassword(from_field), self.data_store.private_key)
				self.data_store.startNewReceivingSession(from_field,details['session_id'], details['iv'], details['key_params'], details['random_challenge'])
				# increment recieved count
				self.data_store.incrementReceiveSequence(from_field)
				# send responder
				return self.sendMessage(from_field, None)
			
			# If receiving a responder
			elif self.data_store.getSessionDetails(from_field)['receive_sequence']==0:
				# decrypt responder
				responder = SMSSecResponderMessage(from_field, self.data_store.this_telephone)
				details = self.data_store.getSessionDetails(from_field)
				responder.decryptMessage(message_body, details['random_challenge'], details['receive_iv'], details['key'])
				# increment recieved count
				self.data_store.incrementReceiveSequence(from_field)
				# send message
				msg = self.sendMessage(from_field, None)
				"MSG"
				print msg
				return msg
			
			# If receiving a message
			else:
				# Get session details
				details = self.data_store.getSessionDetails(from_field)
				# decrypt message
				message = SMSSecSequenceMessage(self.data_store.this_telephone, from_field)
				decrypted_message = message.decryptMessage(message_body, details["receive_sequence"], details["receive_iv"], details["key"])
				# increment recieved count
				self.data_store.incrementReceiveSequence(from_field)
				# append message to the store
				# If message is last, append to store then return
				if decrypted_message[-3:] == "END":
					decrypted_message=decrypted_message.rstrip("END")
					self.data_store.addRecievedMessagePart(from_field, decrypted_message)
					details = self.data_store.getSessionDetails(from_field)
					return {"status":5,"message":details["received_message"]}
				# Otherwise just append
				self.data_store.addRecievedMessagePart(from_field, decrypted_message)
				details = self.data_store.getSessionDetails(from_field)
				# Check if end
				if details["received_message"][-3:] == "END":
					# check store for message, append this message to it, the return
					return {"status":5,"message":details["received_message"]}
				return {"status":4, "message":details["received_message"]}
Exemplo n.º 2
0
    message = SMSSecSequenceMessage(clientstore.server_telephone, clientstore.booth_telephone)
    details = clientstore.getCurrentSessionDetails()
    # Encrypt first message
    message.createMessage(
        "candidates:{candidate: {name1:'ben' name2:'kingsley' party:'Pirate Party'},candidate: {name1:'ben' name2:'kingsley' party:'Pirate Party'}}",
        details["send_sequence"],
        details["send_iv"],
        details["key"],
    )
    # Inc sequence no to 1 (for next msg)
    clientstore.incrementSendSequence()

# Decrypt first message
details = store.getSessionDetails(fromField)
servMessage = SMSSecSequenceMessage(store.server_telephone, fromField)
print servMessage.decryptMessage(message.message, details["receive_sequence"], details["receive_iv"], details["key"])

servMessage = SMSSecSequenceMessage(fromField, store.server_telephone)
servMessage.createMessage("RightBackAtcha", details["send_sequence"], details["send_iv"], details["key"])
store.incrementSendSequence(fromField)
store.incrementReceiveSequence(fromField)

details = clientstore.getCurrentSessionDetails()
clientMessage = SMSSecSequenceMessage(fromField, store.server_telephone)
print clientMessage.decryptMessage(
    servMessage.message, details["receive_sequence"], details["receive_iv"], details["key"]
)

# Inc sequence no to 1
# Create second message
# Inc sequence no to 2 (for next message)