lib/json/jwt.rb in json-jwt-1.4.0 vs lib/json/jwt.rb in json-jwt-1.5.0
- old
+ new
@@ -1,52 +1,33 @@
require 'openssl'
require 'url_safe_base64'
require 'multi_json'
require 'active_support'
require 'active_support/core_ext'
+require 'json/jose'
module JSON
class JWT < ActiveSupport::HashWithIndifferentAccess
- attr_accessor :header, :signature
+ attr_accessor :signature
class Exception < StandardError; end
class InvalidFormat < Exception; end
class VerificationFailed < Exception; end
class UnexpectedAlgorithm < VerificationFailed; end
- class << self
- def register_header_keys(*keys)
- keys.each do |header_key|
- define_method header_key do
- self.header[header_key]
- end
- define_method "#{header_key}=" do |value|
- self.header[header_key] = value
- end
- end
- end
- end
- register_header_keys :alg, :jku, :jwk, :x5u, :x5t, :x5c, :kid, :typ, :cty, :crit
- alias_method :algorithm, :alg
+ include JOSE
def initialize(claims = {})
+ @content_type = 'application/jwt'
self.typ = :JWT
self.alg = :none
[:exp, :nbf, :iat].each do |key|
claims[key] = claims[key].to_i if claims[key]
end
update claims
end
- def content_type
- 'application/jwt'
- end
-
- def header
- @header ||= {}
- end
-
def sign(private_key_or_secret, algorithm = :HS256)
jws = JWS.new self
jws.alg = algorithm
jws.sign! private_key_or_secret
end
@@ -95,20 +76,10 @@
super
end
end
class << self
- def decode(input, key_or_secret = nil)
- if input.is_a? Hash
- decode_json_serialized input, key_or_secret
- else
- decode_compact_serialized input, key_or_secret
- end
- rescue MultiJson::DecodeError
- raise InvalidFormat.new("Invalid JSON Format")
- end
-
def decode_compact_serialized(jwt_string, key_or_secret)
case jwt_string.count('.') + 1
when JWS::NUM_OF_SEGMENTS
JWS.decode_compact_serialized jwt_string, key_or_secret
when JWE::NUM_OF_SEGMENTS
@@ -130,10 +101,9 @@
end
end
end
end
-require 'json/jose'
require 'json/jws'
require 'json/jwe'
require 'json/jwk'
require 'json/jwk/jwkizable'
require 'json/jwk/set'
\ No newline at end of file