Show
Ignore:
Timestamp:
06/29/08 06:39:29 (5 months ago)
Author:
bct
Message:

make esession authentication warning less obtrusive

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/src/common/stanza_session.py

    r9802 r9861  
    184184                self._kc_o = None 
    185185 
     186                # has the remote contact's identity ever been verified? 
     187                self.verified_identity = False 
     188 
    186189        # keep the encrypter updated with my latest cipher key 
    187190        def set_kc_s(self, value): 
     
    339342 
    340343                if i_o == 'a' and self.sas_algs == 'sas28x5': 
    341                         # XXX not necessary if there's a verified retained secret 
     344                        # we don't need to calculate this if there's a verified retained secret 
     345                        # (but we do anyways) 
    342346                        self.sas = crypto.sas_28x5(m_o, self.form_s) 
    343347 
     
    845849                        self.control.print_esession_details() 
    846850 
    847         # calculate and store the new retained secret 
    848         # prompt the user to check the remote party's identity (if necessary) 
    849         def do_retained_secret(self, k, srs): 
     851        def do_retained_secret(self, k, old_srs): 
     852                '''calculate the new retained secret. determine if the user needs to check the remote party's identity. set up callbacks for when the identity has been verified.''' 
     853 
    850854                new_srs = self.hmac(k, 'New Retained Secret') 
     855                self.srs = new_srs 
     856 
    851857                account = self.conn.name 
    852858                bjid = self.jid.getStripped() 
    853859 
    854                 if srs: 
    855                         if secrets.secrets().srs_verified(account, bjid, srs): 
    856                                 secrets.secrets().replace_srs(account, bjid, srs, new_srs, True) 
     860                self.verified_identity = False 
     861 
     862                if old_srs: 
     863                        if secrets.secrets().srs_verified(account, bjid, old_srs): 
     864                                # already had a stored secret verified by the user. 
     865                                secrets.secrets().replace_srs(account, bjid, old_srs, new_srs, True) 
     866                                # continue without warning. 
     867                                self.verified_identity = True 
    857868                        else: 
    858                                 def _cb(verified): 
    859                                         secrets.secrets().replace_srs(account, bjid, srs, new_srs, verified) 
    860  
    861                                 self.check_identity(_cb) 
    862                 else: 
    863                         def _cb(verified): 
    864                                 secrets.secrets().save_new_srs(account, bjid, new_srs, verified) 
    865  
    866                         self.check_identity(_cb) 
     869                                # had a secret, but it wasn't verified. 
     870                                secrets.secrets().replace_srs(account, bjid, old_srs, new_srs, False) 
     871                else: 
     872                        # we don't even have an SRS 
     873                        secrets.secrets().save_new_srs(account, bjid, new_srs, False) 
     874 
     875        def _verified_srs_cb(self): 
     876                secrets.secrets().replace_srs(self.conn.name, self.jid.getStripped(), self.srs, self.srs, True) 
    867877 
    868878        def make_dhfield(self, modp_options, sigmai):