@@ -228,10 +228,7 @@ def from_urlencoded(self, urlencoded, **kwargs):
228228 elif isinstance (val [0 ], typ ):
229229 self ._dict [key ] = val [0 ]
230230 else :
231- try :
232- self ._dict [key ] = val [0 ]
233- except KeyError :
234- raise ParameterError (key )
231+ self ._dict [key ] = val [0 ]
235232 else :
236233 raise TooManyValues ('{}' .format (key ))
237234
@@ -405,40 +402,40 @@ def _add_value(self, skey, vtyp, key, val, _deser, null_allowed):
405402 val = _deser (val , sformat = "dict" )
406403 except Exception as exc :
407404 raise DecodeError (ERRTXT % (key , exc ))
405+ else :
406+ # if isinstance(val, str):
407+ # self._dict[skey] = val
408+ # elif isinstance(val, list):
409+ # if len(val) == 1:
410+ # self._dict[skey] = val[0]
411+ # elif not len(val):
412+ # pass
413+ # else:
414+ # raise TooManyValues(key)
415+ # else:
416+ self ._dict [skey ] = val
408417 elif vtyp is int :
409418 try :
410419 self ._dict [skey ] = int (val )
411420 except (ValueError , TypeError ):
412421 raise ValueError (
413422 '"{}", wrong type of value for "{}"' .format (val ,
414423 skey ))
415- else :
416- return
417424 elif vtyp is bool :
418425 raise ValueError (
419426 '"{}", wrong type of value for "{}"' .format (val , skey ))
420427 elif vtyp != type (val ):
421428 if vtyp == Message :
422429 if type (val ) == dict or isinstance (val , str ):
423430 self ._dict [skey ] = val
424- return
425431 else :
426432 raise ValueError (
427433 '"{}", wrong type of value for "{}"' .format (
428434 val , skey ))
429- raise ValueError (
430- '"{}", wrong type of value for "{}"' .format (val , skey ))
431- if isinstance (val , str ):
432- self ._dict [skey ] = val
433- elif isinstance (val , list ):
434- if len (val ) == 1 :
435- self ._dict [skey ] = val [0 ]
436- elif not len (val ):
437- pass
438435 else :
439- raise TooManyValues ( key )
440- else :
441- self . _dict [ skey ] = val
436+ raise ValueError (
437+ '"{}", wrong type of value for "{}"' . format ( val ,
438+ skey ))
442439
443440 def to_json (self , lev = 0 , indent = None ):
444441 """
@@ -457,18 +454,12 @@ def from_json(self, txt, **kwargs):
457454 """
458455 Convert from a JSON string to an instance of this class.
459456
460- :param txt: The JSON string
457+ :param txt: The JSON string (a ``str``, ``bytes`` or ``bytearray``
458+ instance containing a JSON document)
461459 :param kwargs: extra keyword arguments
462460 :return: The instantiated instance
463461 """
464- try :
465- _dict = json .loads (txt )
466- except TypeError :
467- try :
468- _dict = json .loads (as_unicode (txt ))
469- except TypeError :
470- raise FormatError ('Wrong format' )
471-
462+ _dict = json .loads (txt )
472463 return self .from_dict (_dict )
473464
474465 def to_jwt (self , key = None , algorithm = "" , lev = 0 , lifetime = 0 ):
@@ -499,43 +490,42 @@ def from_jwt(self, txt, keyjar, verify=True, **kwargs):
499490 :return: A class instance
500491 """
501492
502- _jw = jwe_factory (txt )
503- if _jw :
504- logger .debug ("JWE headers: {}" .format (_jw .jwt .headers ))
493+ _decryptor = jwe_factory (txt )
494+ if _decryptor :
495+ logger .debug ("JWE headers: {}" .format (_decryptor .jwt .headers ))
505496
506497 if "encalg" in kwargs :
507- if kwargs ["encalg" ] != _jw [ "alg" ] :
498+ if not _decryptor . jwt . verify_header ( 'alg' , kwargs ["encalg" ]) :
508499 raise WrongEncryptionAlgorithm ("%s != %s" % (
509- _jw ["alg" ], ["encalg" ]))
500+ _decryptor . jwt . headers ["alg" ], ["encalg" ]))
510501
511- if kwargs ["encenc" ] != _jw [ "enc" ] :
502+ if not _decryptor . jwt . verify_header ( 'enc' , kwargs ["encenc" ]) :
512503 raise WrongEncryptionAlgorithm ("%s != %s" % (
513- _jw ["enc" ], kwargs ["encenc" ]))
504+ _decryptor . jwt . headers ["enc" ], kwargs ["encenc" ]))
514505
515506 dkeys = keyjar .get_decrypt_key (owner = "" )
516507 # if "sender" in kwargs:
517508 # dkeys.extend(keyjar.get_deccrypt_key(owner=kwargs["sender"]))
518509
519- logger .debug ('Decrypt class: {}' .format (_jw .__class__ ))
520- _res = _jw .decrypt (txt , dkeys )
510+ logger .debug ('Decrypt class: {}' .format (_decryptor .__class__ ))
511+ _res = _decryptor .decrypt (txt , dkeys )
521512 logger .debug ('decrypted message:{}' .format (_res ))
522513 if isinstance (_res , tuple ):
523514 txt = as_unicode (_res [0 ])
524515 elif isinstance (_res , list ) and len (_res ) == 2 :
525516 txt = as_unicode (_res [0 ])
526517 else :
527518 txt = as_unicode (_res )
528- self .jwe_header = _jw .jwt .headers
519+ self .jwe_header = _decryptor .jwt .headers
529520
530- _jw = jws_factory (txt )
531- if _jw :
521+ _verifier = jws_factory (txt )
522+ if _verifier :
532523 if "sigalg" in kwargs :
533- _alg = _jw .jwt .headers ["alg" ]
534- if kwargs ["sigalg" ] != _alg :
524+ if not _verifier .jwt .verify_header ("alg" , kwargs ["sigalg" ]):
535525 raise WrongSigningAlgorithm ("%s != %s" % (
536- _alg , kwargs ["sigalg" ]))
526+ _verifier . jwt . headers [ "alg" ] , kwargs ["sigalg" ]))
537527 try :
538- _jwt = _jw .jwt
528+ _jwt = _verifier .jwt
539529 jso = _jwt .payload ()
540530 _header = _jwt .headers
541531
@@ -559,12 +549,12 @@ def from_jwt(self, txt, keyjar, verify=True, **kwargs):
559549
560550 logger .debug ("Found signing key." )
561551 try :
562- _jw .verify_compact (txt , key )
552+ _verifier .verify_compact (txt , key )
563553 except NoSuitableSigningKeys :
564554 if keyjar :
565555 update_keyjar (keyjar )
566556 key = keyjar .get_jwt_verify_keys (_jwt , ** kwargs )
567- _jw .verify_compact (txt , key )
557+ _verifier .verify_compact (txt , key )
568558 except Exception :
569559 raise
570560 else :
@@ -586,18 +576,19 @@ def __str__(self):
586576 def _type_check (self , typ , _allowed , val , na = False ):
587577 if typ is str :
588578 if val not in _allowed :
589- raise NotAllowedValue ( val )
579+ return False
590580 elif typ is int :
591581 if val not in _allowed :
592- raise NotAllowedValue ( val )
582+ return False
593583 elif isinstance (typ , list ):
594584 if isinstance (val , list ):
595585 # _typ = typ[0]
596586 for item in val :
597587 if item not in _allowed :
598- raise NotAllowedValue ( val )
588+ return False
599589 elif val is None and na is False :
600- raise NotAllowedValue (val )
590+ return False
591+ return True
601592
602593 def verify (self , ** kwargs ):
603594 """
@@ -633,7 +624,8 @@ def verify(self, **kwargs):
633624 except KeyError :
634625 pass
635626 else :
636- self ._type_check (typ , _allowed_val , val , na )
627+ if not self ._type_check (typ , _allowed_val , val , na ):
628+ raise NotAllowedValue (val )
637629
638630 return True
639631
0 commit comments