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