Ejemplo n.º 1
0
	def Init(self):
		self.prv_ping_time = time.time()
		self.num_ping_msgs =     0
		self.max_ping_time =   0.0
		self.min_ping_time = 100.0
		self.sum_ping_time =   0.0
		self.iters = 0

		self.aes_cipher_obj = CryptoHandler.aes_cipher("")
		self.rsa_cipher_obj = CryptoHandler.rsa_cipher(None)

		## start with a NULL session-key
		self.set_session_key("")

		## ring-buffer of exchanged session keys
		self.session_keys = [""] * NUM_SESSION_KEYS
		self.session_key_id = 0

		## time-stamps for encrypted data
		self.incoming_msg_ctr = 0
		self.outgoing_msg_ctr = 1

		self.data_send_queue = []

		self.server_info = ("", "", "", "")

		self.requested_registration   = False ## set on out_REGISTER
		self.requested_authentication = False ## set on out_LOGIN
		self.accepted_registration    = False ## set on in_REGISTRATIONACCEPTED
		self.rejected_registration    = False ## set on in_REGISTRATIONDENIED
		self.accepted_authentication  = False ## set on in_ACCEPTED

		self.received_public_key = False
		self.want_secure_session = False
		self.want_msg_auth_codes = False

		self.reset_session_state()

		## initialize key-exchange sequence (ends with ACKSHAREDKEY)
		## needed even if (for some reason) we do not want a secure
		## session to discover the server force_secure_{auths,comms}
		## settings
		if self.want_secure_session:
			self.out_GETPUBLICKEY()
		else:
			self.out_LOGIN()