Method: CF::UAA::TokenCoder.encode
- Defined in:
- lib/uaa/token_coder.rb
.encode(token_body, options = {}, obsolete1 = nil, obsolete2 = nil) ⇒ String
Constructs a signed JWT.
64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 |
# File 'lib/uaa/token_coder.rb', line 64 def self.encode(token_body, = {}, obsolete1 = nil, obsolete2 = nil) unless .is_a?(Hash) && obsolete1.nil? && obsolete2.nil? # deprecated: def self.encode(token_body, skey, pkey = nil, algo = 'HS256') warn "#{self.class}##{__method__} is deprecated with these parameters. Please use options hash." = {:skey => } [:pkey], [:algorithm] = obsolete1, obsolete2 end = () algo = [:algorithm] segments = [Util.json_encode64("typ" => "JWT", "alg" => algo)] segments << Util.json_encode64(token_body) if ["HS256", "HS384", "HS512"].include?(algo) sig = OpenSSL::HMAC.digest(init_digest(algo), [:skey], segments.join('.')) elsif ["RS256", "RS384", "RS512"].include?(algo) sig = [:pkey].sign(init_digest(algo), segments.join('.')) elsif algo == "none" sig = "" else raise SignatureNotSupported, "unsupported signing method" end segments << Util.encode64(sig) segments.join('.') end |