File: test_rsa_sha1.rb

package info (click to toggle)
ruby-oauth 0.5.4-1.1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, bullseye, forky, sid, trixie
  • size: 584 kB
  • sloc: ruby: 4,070; makefile: 4
file content (79 lines) | stat: -rw-r--r-- 3,997 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
require File.expand_path('../../test_helper', __FILE__)

require 'oauth/consumer'
require 'oauth/signature/rsa/sha1'

class TestSignatureRsaSha1 < Minitest::Test

  def setup
    @request = Net::HTTP::Get.new("/photos?file=vacaction.jpg&size=original&oauth_version=1.0&oauth_consumer_key=#{consumer_key}&oauth_timestamp=1196666512&oauth_nonce=13917289812797014437&oauth_signature_method=RSA-SHA1")

    @consumer = OAuth::Consumer.new(consumer_key, pkey_rsa)
  end

  def test_that_rsa_sha1_implements_rsa_sha1
    assert OAuth::Signature.available_methods.include?('rsa-sha1')
  end

  def test_that_get_request_from_oauth_test_cases_produces_matching_signature_base_string
    sbs = OAuth::Signature.signature_base_string(@request, { :consumer => @consumer,
                                                 :uri => 'http://photos.example.net/photos' } )

    assert_equal 'GET&http%3A%2F%2Fphotos.example.net%2Fphotos&file%3Dvacaction.jpg%26oauth_consumer_key%3Ddpf43f3p2l4k3l03%26oauth_nonce%3D13917289812797014437%26oauth_signature_method%3DRSA-SHA1%26oauth_timestamp%3D1196666512%26oauth_version%3D1.0%26size%3Doriginal', sbs
  end

  def test_that_get_request_from_oauth_test_cases_produces_matching_signature
    signature = OAuth::Signature.sign(@request, { :consumer => @consumer,
                                                 :uri => 'http://photos.example.net/photos' } )

    assert_equal 'jvTp/wX1TYtByB1m+Pbyo0lnCOLIsyGCH7wke8AUs3BpnwZJtAuEJkvQL2/9n4s5wUmUl4aCI4BwpraNx4RtEXMe5qg5T1LVTGliMRpKasKsW//e+RinhejgCuzoH26dyF8iY2ZZ/5D1ilgeijhV/vBka5twt399mXwaYdCwFYE=', signature
  end

  def test_that_get_request_from_oauth_test_cases_produces_matching_signature_using_private_key_file
    @consumer = OAuth::Consumer.new(consumer_key,nil)

    signature = OAuth::Signature.sign(@request, { :consumer => @consumer,
                                                  :private_key_file=>pem_path,
                                                 :uri => 'http://photos.example.net/photos' } )

    assert_equal 'jvTp/wX1TYtByB1m+Pbyo0lnCOLIsyGCH7wke8AUs3BpnwZJtAuEJkvQL2/9n4s5wUmUl4aCI4BwpraNx4RtEXMe5qg5T1LVTGliMRpKasKsW//e+RinhejgCuzoH26dyF8iY2ZZ/5D1ilgeijhV/vBka5twt399mXwaYdCwFYE=', signature
  end

  def test_that_get_request_from_oauth_test_cases_verifies_signature
    @request = Net::HTTP::Get.new("/photos?oauth_signature_method=RSA-SHA1&oauth_version=1.0&oauth_consumer_key=#{consumer_key}&oauth_timestamp=1196666512&oauth_nonce=13917289812797014437&file=vacaction.jpg&size=original&oauth_signature=jvTp%2FwX1TYtByB1m%2BPbyo0lnCOLIsyGCH7wke8AUs3BpnwZJtAuEJkvQL2%2F9n4s5wUmUl4aCI4BwpraNx4RtEXMe5qg5T1LVTGliMRpKasKsW%2F%2Fe%2BRinhejgCuzoH26dyF8iY2ZZ%2F5D1ilgeijhV%2FvBka5twt399mXwaYdCwFYE%3D")
    @consumer = OAuth::Consumer.new(consumer_key, x509_certificate)

    assert OAuth::Signature.verify(@request, { :consumer => @consumer,
                                                 :uri => 'http://photos.example.net/photos' } )

  end

  def test_that_get_request_from_oauth_test_cases_verifies_signature_with_pem
    @request = Net::HTTP::Get.new("/photos?oauth_signature_method=RSA-SHA1&oauth_version=1.0&oauth_consumer_key=#{consumer_key}&oauth_timestamp=1196666512&oauth_nonce=13917289812797014437&file=vacaction.jpg&size=original&oauth_signature=jvTp%2FwX1TYtByB1m%2BPbyo0lnCOLIsyGCH7wke8AUs3BpnwZJtAuEJkvQL2%2F9n4s5wUmUl4aCI4BwpraNx4RtEXMe5qg5T1LVTGliMRpKasKsW%2F%2Fe%2BRinhejgCuzoH26dyF8iY2ZZ%2F5D1ilgeijhV%2FvBka5twt399mXwaYdCwFYE%3D")
    assert OAuth::Signature.verify(@request, { :consumer => @consumer,
                                                 :uri => 'http://photos.example.net/photos' } )
  end

  private

  def consumer_key
    'dpf43f3p2l4k3l03'
  end

  def x509_certificate
    OpenSSL::X509::Certificate.new(IO.read(cert_path))
  end

  def pkey_rsa
    OpenSSL::PKey::RSA.new(IO.read(pem_path))
  end

  def cert_path
    File.dirname(__FILE__) + "/../keys/rsa.cert"
  end

  def pem_path
    File.dirname(__FILE__) + "/../keys/rsa.pem"
  end

end