Sha256: d2fe92f59605835a7024e1d40f47f7e110c8c8896089b65db351458119ec6301

Contents?: true

Size: 1.25 KB

Versions: 6

Compression:

Stored size: 1.25 KB

Contents

require "oauth/signature/base"

module OAuth::Signature::RSA
  class SHA1 < OAuth::Signature::Base
    implements "rsa-sha1"

    def ==(cmp_signature)
      public_key.verify(OpenSSL::Digest::SHA1.new, Base64.decode64(cmp_signature.is_a?(Array) ? cmp_signature.first : cmp_signature), signature_base_string)
    end

    def public_key
      if consumer_secret.is_a?(String)
        decode_public_key
      elsif consumer_secret.is_a?(OpenSSL::X509::Certificate)
        consumer_secret.public_key
      else
        consumer_secret
      end
    end

    def body_hash
      Base64.encode64(OpenSSL::Digest::SHA1.digest(request.body || "")).chomp.delete("\n")
    end

    private

    def decode_public_key
      case consumer_secret
      when /-----BEGIN CERTIFICATE-----/
        OpenSSL::X509::Certificate.new(consumer_secret).public_key
      else
        OpenSSL::PKey::RSA.new(consumer_secret)
      end
    end

    def digest
      private_key = OpenSSL::PKey::RSA.new(
        if options[:private_key_file]
          IO.read(options[:private_key_file])
        elsif options[:private_key]
          options[:private_key]
        else
          consumer_secret
        end
      )

      private_key.sign(OpenSSL::Digest::SHA1.new, signature_base_string)
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
oauth-0.5.14 lib/oauth/signature/rsa/sha1.rb
oauth-0.5.13 lib/oauth/signature/rsa/sha1.rb
oauth-0.5.12 lib/oauth/signature/rsa/sha1.rb
oauth-0.5.11 lib/oauth/signature/rsa/sha1.rb
oauth-0.5.10 lib/oauth/signature/rsa/sha1.rb
oauth-0.5.9 lib/oauth/signature/rsa/sha1.rb