@@ -241,16 +241,16 @@ module JWT
241241 end
242242
243243 private def validate_aud! (payload , aud )
244- if ! payload[" aud" ]?
244+ payload_aud = payload[" aud" ]?
245+ if ! payload_aud
245246 raise InvalidAudienceError .new(" Invalid audience (aud). Expected #{ aud.inspect } , received nothing" )
246- elsif payload[ " aud " ] .as_s?
247- unless Crypto ::Subtle .constant_time_compare(aud.to_s, payload[ " aud " ] .as_s)
248- raise InvalidAudienceError .new(" Invalid audience (aud). Expected #{ aud.inspect } , received #{ payload[ " aud " ] .inspect} " )
247+ elsif payload_aud .as_s?
248+ unless Crypto ::Subtle .constant_time_compare(aud.to_s, payload_aud .as_s)
249+ raise InvalidAudienceError .new(" Invalid audience (aud). Expected #{ aud.inspect } , received #{ payload_aud.raw .inspect} " )
249250 end
250- elsif payload[" aud" ].as_a?
251- auds = payload[" aud" ].as_a
251+ elsif auds = payload_aud.as_a?
252252 if ! auds.includes?(aud)
253- msg = " Invalid audience (aud). Expected #{ aud.inspect } , received #{ payload[ " aud " ] .inspect} "
253+ msg = " Invalid audience (aud). Expected #{ aud.inspect } , received #{ auds .inspect} "
254254 raise InvalidAudienceError .new(msg)
255255 end
256256 else
@@ -259,17 +259,19 @@ module JWT
259259 end
260260
261261 private def validate_iss! (payload , iss )
262- if ! payload[" iss" ]?
262+ payload_iss = payload[" iss" ]?
263+ if ! payload_iss
263264 raise InvalidIssuerError .new(" Invalid issuer (iss). Expected #{ iss.inspect } , received nothing" )
264- elsif ! Crypto ::Subtle .constant_time_compare(iss.to_s, payload[ " iss " ] .to_s)
265- raise InvalidIssuerError .new(" Invalid issuer (iss). Expected #{ iss.inspect } , received #{ payload[ " iss " ] .inspect} " )
265+ elsif ! Crypto ::Subtle .constant_time_compare(iss.to_s, payload_iss .to_s)
266+ raise InvalidIssuerError .new(" Invalid issuer (iss). Expected #{ iss.inspect } , received #{ payload_iss.raw .inspect} " )
266267 end
267268 end
268269
269270 private def validate_sub! (payload , sub )
270- if payload[" sub" ]?
271- unless Crypto ::Subtle .constant_time_compare(sub.to_s, payload[" sub" ].to_s)
272- raise InvalidSubjectError .new(" Invalid subject (sub). Expected #{ sub.inspect } , received #{ payload[" sub" ].inspect } " )
271+ payload_sub = payload[" sub" ]?
272+ if payload_sub
273+ unless Crypto ::Subtle .constant_time_compare(sub.to_s, payload_sub.to_s)
274+ raise InvalidSubjectError .new(" Invalid subject (sub). Expected #{ sub.inspect } , received #{ payload_sub.raw.inspect } " )
273275 end
274276 else
275277 raise InvalidSubjectError .new(" Invalid subject (sub). Expected #{ sub.inspect } , received nothing" )
@@ -281,7 +283,7 @@ module JWT
281283 if ! header_typ
282284 raise InvalidTypError .new(" Invalid type (typ). Expected #{ typ.inspect } , received nothing" )
283285 elsif ! Crypto ::Subtle .constant_time_compare(typ.to_s, header_typ.to_s)
284- raise InvalidTypError .new(" Invalid type (typ). Expected #{ typ.inspect } , received #{ header_typ.inspect } " )
286+ raise InvalidTypError .new(" Invalid type (typ). Expected #{ typ.inspect } , received #{ header_typ.raw. inspect } " )
285287 end
286288 end
287289
0 commit comments