@@ -584,22 +584,17 @@ def _doIdRes(self, token, query):
584584 assoc .expiresIn <= 0 ):
585585 # It's not an association we know about. Dumb mode is our
586586 # only possible path for recovery.
587- check_args = oidutil .getOpenIDParameters (query )
588- check_args ['openid.mode' ] = 'check_authentication'
589- post_data = urllib .urlencode (check_args )
590-
591587 return self ._checkAuth (
592- nonce , consumer_id , post_data , server_url )
588+ nonce , consumer_id , query , server_url )
593589
594590 # Check the signature
595591 sig = query .get ('openid.sig' )
596592 signed = query .get ('openid.signed' )
597593 if sig is None or signed is None :
598594 return FAILURE , consumer_id
599595
600- args = oidutil .getOpenIDParameters (query )
601596 signed_list = signed .split (',' )
602- v_sig = assoc .signDict (signed_list , args )
597+ v_sig = assoc .signDict (signed_list , query )
603598
604599 if v_sig != sig :
605600 return FAILURE , consumer_id
@@ -609,7 +604,15 @@ def _doIdRes(self, token, query):
609604
610605 return SUCCESS , consumer_id
611606
612- def _checkAuth (self , nonce , consumer_id , post_data , server_url ):
607+ def _checkAuth (self , nonce , consumer_id , query , server_url ):
608+ # XXX: send only those arguments that were signed?
609+ check_args = {}
610+ for k , v in query .iteritems ():
611+ if k .startswith ('openid.' ):
612+ check_args [k ] = v
613+ check_args ['openid.mode' ] = 'check_authentication'
614+ post_data = urllib .urlencode (check_args )
615+
613616 ret = self .fetcher .post (server_url , post_data )
614617 if ret is None :
615618 return FAILURE , consumer_id
0 commit comments