class OAuth::Signature::Base
Base class for OAuth signature implementations.
Includes {OAuth::AUTH_SANITIZER::FilteredAttributes} so inspect output redacts secret-bearing fields captured during signature construction.
Attributes
consumer_secret[R]
options[RW]
Signature construction options.
@return [Hash]
request[R]
token_secret[R]
Public Class Methods
implements(signature_method = nil)
click to toggle source
# File lib/oauth/signature/base.rb 26 def implements(signature_method = nil) 27 return OAuth::Signature.available_methods.key(self) if signature_method.nil? 28 29 OAuth::Signature.available_methods[signature_method] = self 30 end
new(request, options = {}) { |arity == 1| ... }
click to toggle source
# File lib/oauth/signature/base.rb 33 def initialize(request, options = {}, &block) 34 raise TypeError unless request.is_a?(OAuth::RequestProxy::Base) 35 36 @request = request 37 @options = options 38 39 ## consumer secret was determined beforehand 40 41 @consumer_secret = options[:consumer].secret if options[:consumer] 42 43 # presence of :consumer_secret option will override any Consumer that's provided 44 @consumer_secret = options[:consumer_secret] if options[:consumer_secret] 45 46 ## token secret was determined beforehand 47 48 @token_secret = options[:token].secret if options[:token] 49 50 # presence of :token_secret option will override any Token that's provided 51 @token_secret = options[:token_secret] if options[:token_secret] 52 53 # override secrets based on the values returned from the block (if any) 54 if block 55 # consumer secret and token secret need to be looked up based on pieces of the request 56 secrets = yield (block.arity == 1) ? request : [token, consumer_key, nonce, request.timestamp] 57 if secrets.is_a?(Array) && secrets.size == 2 58 @token_secret = secrets[0] 59 @consumer_secret = secrets[1] 60 end 61 end 62 end
Public Instance Methods
==(other)
click to toggle source
# File lib/oauth/signature/base.rb 68 def ==(other) 69 check = signature.bytesize ^ other.bytesize 70 signature.bytes.zip(other.bytes) { |x, y| check |= x ^ y.to_i } 71 check.zero? 72 end
body_hash()
click to toggle source
# File lib/oauth/signature/base.rb 82 def body_hash 83 raise_instantiation_error 84 end
signature()
click to toggle source
# File lib/oauth/signature/base.rb 64 def signature 65 Base64.encode64(digest).chomp.delete("\n") 66 end
signature_base_string()
click to toggle source
# File lib/oauth/signature/base.rb 78 def signature_base_string 79 request.signature_base_string 80 end
verify()
click to toggle source
# File lib/oauth/signature/base.rb 74 def verify 75 self == request.signature 76 end
Private Instance Methods
consumer_key()
click to toggle source
# File lib/oauth/signature/base.rb 92 def consumer_key 93 request.consumer_key 94 end
digest()
click to toggle source
# File lib/oauth/signature/base.rb 104 def digest 105 raise_instantiation_error 106 end
nonce()
click to toggle source
# File lib/oauth/signature/base.rb 96 def nonce 97 request.nonce 98 end
raise_instantiation_error()
click to toggle source
# File lib/oauth/signature/base.rb 108 def raise_instantiation_error 109 raise NotImplementedError, "Cannot instantiate #{self.class.name} class directly." 110 end
secret()
click to toggle source
# File lib/oauth/signature/base.rb 100 def secret 101 "#{escape(consumer_secret)}&#{escape(token_secret)}" 102 end
token()
click to toggle source
# File lib/oauth/signature/base.rb 88 def token 89 request.token 90 end