ipizza 1.0.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +3 -1
  3. data/CHANGELOG.md +9 -0
  4. data/Gemfile +1 -1
  5. data/Gemfile.lock +16 -14
  6. data/Guardfile +2 -2
  7. data/README.markdown +11 -7
  8. data/Rakefile +1 -1
  9. data/ipizza.gemspec +9 -9
  10. data/lib/ipizza.rb +3 -0
  11. data/lib/ipizza/authentication.rb +15 -0
  12. data/lib/ipizza/authentication_request.rb +1 -1
  13. data/lib/ipizza/authentication_response.rb +22 -9
  14. data/lib/ipizza/config.rb +3 -3
  15. data/lib/ipizza/payment.rb +4 -4
  16. data/lib/ipizza/payment_request.rb +1 -1
  17. data/lib/ipizza/payment_response.rb +15 -7
  18. data/lib/ipizza/provider.rb +8 -12
  19. data/lib/ipizza/provider/base.rb +90 -0
  20. data/lib/ipizza/provider/krediidipank.rb +1 -47
  21. data/lib/ipizza/provider/lhv.rb +4 -0
  22. data/lib/ipizza/provider/nordea/authentication_request.rb +2 -2
  23. data/lib/ipizza/provider/nordea/authentication_response.rb +7 -3
  24. data/lib/ipizza/provider/nordea/payment_request.rb +2 -2
  25. data/lib/ipizza/provider/nordea/payment_response.rb +4 -4
  26. data/lib/ipizza/provider/sampo.rb +1 -46
  27. data/lib/ipizza/provider/seb.rb +1 -78
  28. data/lib/ipizza/provider/swedbank.rb +1 -66
  29. data/lib/ipizza/request.rb +9 -2
  30. data/lib/ipizza/response.rb +7 -9
  31. data/lib/ipizza/util.rb +9 -5
  32. data/lib/ipizza/version.rb +2 -2
  33. data/spec/certificates/pangalink_danske_bank_cert.pem +22 -0
  34. data/spec/certificates/pangalink_danske_bank_key.pem +27 -0
  35. data/spec/certificates/pangalink_danske_user_key.pem +27 -0
  36. data/spec/certificates/pangalink_krediidipank_bank_cert.pem +22 -0
  37. data/spec/certificates/pangalink_krediidipank_bank_key.pem +27 -0
  38. data/spec/certificates/pangalink_krediidipank_user_key.pem +27 -0
  39. data/spec/certificates/pangalink_lhv_bank_cert.pem +22 -0
  40. data/spec/certificates/pangalink_lhv_bank_key.pem +27 -0
  41. data/spec/certificates/pangalink_lhv_user_key.pem +27 -0
  42. data/spec/certificates/pangalink_seb_bank_cert.pem +16 -0
  43. data/spec/certificates/pangalink_seb_bank_key.pem +15 -0
  44. data/spec/certificates/pangalink_seb_user_key.pem +15 -0
  45. data/spec/certificates/pangalink_swedbank_bank_cert.pem +22 -0
  46. data/spec/certificates/pangalink_swedbank_bank_key.pem +27 -0
  47. data/spec/certificates/pangalink_swedbank_user_key.pem +27 -0
  48. data/spec/config/config.yml +39 -6
  49. data/spec/config/plain_config.yml +3 -3
  50. data/spec/ipizza/authentication_response_spec.rb +11 -9
  51. data/spec/ipizza/config_spec.rb +9 -10
  52. data/spec/ipizza/provider/krediidipank_spec.rb +89 -0
  53. data/spec/ipizza/provider/lhv_spec.rb +89 -0
  54. data/spec/ipizza/provider/nordea/authentication_response_spec.rb +3 -3
  55. data/spec/ipizza/provider/sampo_spec.rb +85 -0
  56. data/spec/ipizza/provider/seb_spec.rb +60 -30
  57. data/spec/ipizza/provider/swedbank_spec.rb +63 -34
  58. data/spec/ipizza/provider_spec.rb +9 -1
  59. data/spec/ipizza/util_spec.rb +5 -1
  60. data/spec/spec_helper.rb +1 -1
  61. data/spec/support/pizza.rb +1 -1
  62. metadata +45 -25
  63. data/spec/certificates/bank.crt +0 -21
  64. data/spec/certificates/bank.csr +0 -17
  65. data/spec/certificates/bank.key +0 -27
  66. data/spec/certificates/bank.pub +0 -1
  67. data/spec/certificates/dealer.key +0 -30
  68. data/spec/certificates/dealer.pub +0 -1
  69. data/spec/certificates/seb_test_priv.pem +0 -16
  70. data/spec/certificates/seb_test_pub.crt +0 -20
  71. data/spec/certificates/seb_test_pub.pem +0 -20
  72. data/spec/certificates/swedbank_production.pem +0 -48
@@ -2,60 +2,89 @@ require 'time'
2
2
  require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
3
3
 
4
4
  describe Ipizza::Provider::Swedbank do
5
+ let(:response_time) { Ipizza::Util.time_to_iso8601(Time.now) }
6
+ let(:bank_key) { File.expand_path('../../../certificates/pangalink_swedbank_bank_key.pem', __FILE__) }
7
+
5
8
  describe '#payment_request' do
9
+ let(:payment) { Ipizza::Payment.new(stamp: 1, amount: '123.34', refnum: 1, message: 'Payment message', currency: 'EUR') }
10
+
6
11
  before(:each) do
7
- @payment = Ipizza::Payment.new(:stamp => 1, :amount => '123.34', :refnum => 1, :message => 'Payment message', :currency => 'EUR')
12
+ req_time = Time.now
13
+ Time.stub!(:now).and_return(req_time)
8
14
  end
9
-
10
- it 'signs the request' do
11
- req = Ipizza::Provider::Swedbank.new.payment_request(@payment)
12
- req.sign_params['VK_MAC'].should == 'aVCFvsLJiczQw9VoYMdtoQKj5fXkP8OI+JfQN8bFGKZGxC/X5gVIIi/Bh9AyB6JXwbeMOfUlnvuJIukpmBpDg3dEWkv4xGwKdfacqwYkgSC17OBb7VmZ+B4d6HYaO088wxH1FBSVa87HKFJ7ScTEJfd3ZEZly9WzTPHiFWvpRGDxAYtuO5nfGMcscxOQ0B0cbrIcLKvqLho25hIgns3+lvRDWsOb9lFH//7U8OBOC9SuXCBwvC4Fng3wqmBSKRJgAqvQ40Y4XpBGt3U/ix26Vs1cP8lOGHUyqzrqKbcmvqqhgWzqpa0JoK6im/MhBePyNnHVoC8Pqw4ZwZb4YrrPXw=='
15
+
16
+ it 'should sign the request' do
17
+ req = Ipizza::Provider::Swedbank.new.payment_request(payment)
18
+ params = {
19
+ 'VK_SERVICE' => '1012',
20
+ 'VK_VERSION' => '008',
21
+ 'VK_SND_ID' => Ipizza::Provider::Swedbank.snd_id,
22
+ 'VK_STAMP' => payment.stamp,
23
+ 'VK_AMOUNT' => sprintf('%.2f', payment.amount),
24
+ 'VK_CURR' => payment.currency,
25
+ 'VK_REF' => Ipizza::Util.sign_731(payment.refnum),
26
+ 'VK_MSG' => payment.message,
27
+ 'VK_RETURN' => Ipizza::Provider::Swedbank.return_url,
28
+ 'VK_CANCEL' => Ipizza::Provider::Swedbank.cancel_url,
29
+ 'VK_DATETIME' => Ipizza::Util.time_to_iso8601(Time.now)
30
+ }
31
+ signature = Ipizza::Util.sign(Ipizza::Provider::Swedbank.file_key, Ipizza::Provider::Swedbank.key_secret, Ipizza::Util.mac_data_string(params, Ipizza::Request::PARAM_ORDER['1012']))
32
+ req.sign_params['VK_MAC'].should == signature
13
33
  end
14
34
  end
15
35
 
16
36
  describe '#payment_response' do
17
- before(:each) do
18
- @params = {
19
- 'VK_T_NO' => '587', 'encoding' => 'UTF-8', 'VK_REC_ID' => 'fraktal', 'VK_REF' => '201107010000080',
20
- 'VK_SND_NAME' => 'TÕNU RUNNEL'.encode('iso-8859-4'), 'VK_T_DATE' => '01.07.2011', 'VK_STAMP' => '20110701000008', 'VK_SND_ACC' => '1108126403',
21
- 'VK_LANG' => 'EST', 'VK_SERVICE' => '1101', 'VK_REC_NAME' => 'FRAKTAL OÜ'.encode('iso-8859-4'), 'VK_AMOUNT' => '0.17',
22
- 'VK_MSG' => 'Edicy invoice #20110701000008', 'VK_AUTO' => 'N', 'VK_SND_ID' => 'HP', 'VK_VERSION' => '008', 'VK_ENCODING' => 'ISO-8859-4',
23
- 'VK_REC_ACC' => '221038811930', 'VK_CURR' => 'EUR',
24
- 'VK_MAC' => 'geOA+gjLJlFouGMih0WhbQwTehZM1FVus1OhO34yt8shekINWOzUi6gLymq9HYSDIAx/Gw2iUOKGxzhCRsXu3fxjVVlXpS9YRQfFF8HG1zoU2OUiNBZVa+7bGGDLOy+ZIhnyaW1I3jIFXHd57xDyCVCQvB0Ot4Ya9yE3YMKHTk4='
37
+ let(:params) {
38
+ {
39
+ 'VK_SERVICE' => '1111', 'VK_VERSION' => '008', 'VK_SND_ID' => 'HP', 'VK_REC_ID' => 'sender',
40
+ 'VK_STAMP' => '20150111000004', 'VK_T_NO' => '1143', 'VK_AMOUNT' => '.17', 'VK_CURR' => 'EUR',
41
+ 'VK_REC_ACC' => 'EE411010002050618003', 'VK_REC_NAME' => 'ÕILIS OÜ',
42
+ 'VK_SND_ACC' => 'EE541010010046155012', 'VK_SND_NAME' => 'TÕÄGER Leõpäöld¸´¨¦',
43
+ 'VK_REF' => '201501110000048', 'VK_MSG' => 'Invoice #20150111000004', 'VK_T_DATETIME' => response_time,
44
+ 'VK_ENCODING' => 'UTF-8', 'VK_LANG' => 'EST', 'VK_AUTO' => 'N'
25
45
  }
26
-
27
- Ipizza::Provider::Swedbank.file_cert = File.expand_path('../../../certificates/swedbank_production.pem', __FILE__)
28
- end
29
-
30
- it 'parses and verifies the payment response from bank' do
31
- Ipizza::Provider::Swedbank.new.payment_response(@params).should be_valid
46
+ }
47
+
48
+ it 'should parse and verify the payment response from bank' do
49
+ signature = Ipizza::Util.sign(bank_key, nil, Ipizza::Util.mac_data_string(params, Ipizza::Response::PARAM_ORDER['1111']))
50
+ Ipizza::Provider::Swedbank.new.payment_response(params.merge('VK_MAC' => signature)).should be_valid
32
51
  end
33
52
  end
34
53
 
35
54
  describe '#authentication_request' do
36
55
  before(:each) do
37
- Time.stub!(:now).and_return(Time.parse("Mar 30 1981"))
38
- Date.stub!(:today).and_return(Date.parse("Mar 30 1981"))
56
+ req_time = Time.now
57
+ Time.stub!(:now).and_return(req_time)
39
58
  end
40
-
59
+
41
60
  it 'should sign the request' do
42
61
  req = Ipizza::Provider::Swedbank.new.authentication_request
43
- req.sign_params['VK_MAC'].should == 'C9HV2e9IKnHcFGKjnDjx0caBMnhBtpXeZE8GOFD9Qph/KKO3eAJbMNDGJ7bOBFulot/rZVOVaqYIgTcGEfmg+FV7QgoyVwN5TBRJXdkvYo73qY8I71ONd/7lRrU+T/9b3nI+dRM3Y/D/DeMSe07/Ge9L/IDTnoloUefoOKIEGxmfr+zc0RzJ+S9nev8M+sepyA2LvbGGJKMAiraV/DpQeb3Xf8UnC7UihAjx9NtnXI5DY15YKDupj+FtwoQ4xGgV/M1Xy57XuDajnSU4wbTSqwomTE9PugpbZwqO9zbisMFA6H6PTWXn/henL8EM/D6BnL6DjsqmZlQSckabsNtuBQ=='
62
+ params = {
63
+ 'VK_SERVICE' => '4011',
64
+ 'VK_VERSION' => '008',
65
+ 'VK_SND_ID' => Ipizza::Provider::Swedbank.snd_id,
66
+ 'VK_RETURN' => Ipizza::Provider::Swedbank.return_url,
67
+ 'VK_DATETIME' => Ipizza::Util.time_to_iso8601(Time.now),
68
+ 'VK_RID' => '',
69
+ 'VK_REPLY' => '3012'
70
+ }
71
+ signature = Ipizza::Util.sign(Ipizza::Provider::Swedbank.file_key, Ipizza::Provider::Swedbank.key_secret, Ipizza::Util.mac_data_string(params, Ipizza::Request::PARAM_ORDER['4011']))
72
+ req.sign_params['VK_MAC'].should == signature
44
73
  end
45
74
  end
46
-
75
+
47
76
  describe '#authentication_response' do
48
- before(:each) do
49
- @params = {
50
- 'VK_SERVICE' => '3002', 'VK_VERSION' => '008', 'VK_USER' => 'dealer',
51
- 'VK_DATE' => '30.03.1981', 'VK_TIME' => '00:00:00', 'VK_SND_ID' => 'SWEDBANK',
52
- 'VK_INFO' => 'ISIK:37508166516;NIMI:JAAN SAAR',
53
- 'VK_MAC' => 'ds/a+lwQhq1cs34mCqbpkNkXt/6fHwxii5+G+qA9vbhic/6TUnkIiJK+gFUZzMgRKDxOiOTD44zK7P9v58G972YbNvI3+JgZmzXXTkuHOk3wfGQFdNLat+ezMdkt8EU8j6N3TLZ/8UxNl+eKGsm/RJL4QKGpg3/Sfbza22XHERepIrMyFsQXqhnSwDZF2VT6XoRJuYI+nret0pn7Bcm22AFwz4OAv9R6fgRQ2w3m3g0bOZp/ea52fv+8UivNsyo/llbajqJAgCVdRz8Jm9fSg0A/falsVVkefEEgDQwGEElxQwJ9aSj1A/NUA40cqjIIPGhoVtA7/p+VklH88cA0pQ=='
77
+ let(:params) {
78
+ {
79
+ 'VK_SERVICE' => '3012', 'VK_VERSION' => '008', 'VK_USER' => 'dealer', 'VK_DATETIME' => response_time,
80
+ 'VK_SND_ID' => 'HP', 'VK_REC_ID' => 'sender', 'VK_USER_NAME' => 'TÕÄGER Leõpäöld¸´¨¦', 'VK_USER_ID' => '35511280268',
81
+ 'VK_COUNTRY' => 'EE', 'VK_OTHER' => '', 'VK_TOKEN' => '7', 'VK_RID' => ''
54
82
  }
55
- end
56
-
57
- it 'parses and verifies the authentication response from bank' do
58
- Ipizza::Provider::Swedbank.new.authentication_response(@params).should be_valid
83
+ }
84
+
85
+ it 'should parse and verify the authentication response from bank' do
86
+ signature = Ipizza::Util.sign(bank_key, nil, Ipizza::Util.mac_data_string(params, Ipizza::Response::PARAM_ORDER['3012']))
87
+ Ipizza::Provider::Swedbank.new.authentication_response(params.merge('VK_MAC' => signature)).should be_valid
59
88
  end
60
89
  end
61
90
  end
@@ -2,6 +2,10 @@ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
2
 
3
3
  describe Ipizza::Provider do
4
4
  describe '.get' do
5
+ it 'returns LHV provider for "lhv" attribute' do
6
+ Ipizza::Provider.get('lhv').should be_a(Ipizza::Provider::Lhv)
7
+ end
8
+
5
9
  it 'returns swedbank provider for "swedbank" attribute' do
6
10
  Ipizza::Provider.get('swedbank').should be_a(Ipizza::Provider::Swedbank)
7
11
  end
@@ -21,7 +25,11 @@ describe Ipizza::Provider do
21
25
  it 'returns sampo provider for "sampo" attribute' do
22
26
  Ipizza::Provider.get('sampo').should be_a(Ipizza::Provider::Sampo)
23
27
  end
24
-
28
+
29
+ it 'returns sampo provider for "danske" attribute' do
30
+ Ipizza::Provider.get('danske').should be_a(Ipizza::Provider::Sampo)
31
+ end
32
+
25
33
  it 'returns krediidipank provider for "krep" attribute' do
26
34
  Ipizza::Provider.get('krep').should be_a(Ipizza::Provider::Krediidipank)
27
35
  end
@@ -15,7 +15,11 @@ describe Ipizza::Util do
15
15
 
16
16
  describe '.mac_data_string' do
17
17
  it 'should compose mac string containing the values and their respective lengths' do
18
- Ipizza::Util.mac_data_string({'A' => 'aaa', 'B' => 'bbbb'}, ['B', 'A']).should == '004bbbb003aaa'
18
+ Ipizza::Util.mac_data_string({'A' => 'aaa', 'B' => 'bbbb'}, %w(B A)).should == '004bbbb003aaa'
19
+ end
20
+
21
+ it 'should compose mac string containing the values and their respective lengths for UTF strings' do
22
+ Ipizza::Util.mac_data_string({'A' => 'õäu', 'B' => 'Žaaa'}, %w(B A)).should == '004Žaaa003õäu'
19
23
  end
20
24
  end
21
25
  end
@@ -2,7 +2,7 @@ require 'rspec'
2
2
 
3
3
  # Requires supporting files with custom matchers and macros, etc,
4
4
  # in ./support/ and its subdirectories.
5
- Dir[File.expand_path(File.join(File.dirname(__FILE__),'support','**','*.rb'))].each {|f| require f}
5
+ Dir[File.expand_path(File.join(File.dirname(__FILE__), 'support', '**', '*.rb'))].each { |f| require f }
6
6
 
7
7
  RSpec.configure do |c|
8
8
  c.mock_with :rspec
@@ -5,4 +5,4 @@ RSpec.configure do |c|
5
5
  # Load configuration for tests
6
6
  Ipizza::Config.load_from_file(File.expand_path(File.dirname(__FILE__) + '/../config/config.yml'))
7
7
  end
8
- end
8
+ end
metadata CHANGED
@@ -1,14 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ipizza
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Priit Haamer
8
+ - Tanel Jakobsoo
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2014-05-22 00:00:00.000000000 Z
12
+ date: 2015-02-03 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: rspec
@@ -69,13 +70,15 @@ dependencies:
69
70
  description: Simplifies generating payment requests and parsing responses from banks
70
71
  when using iPizza protocol.
71
72
  email:
72
- - priit@fraktal.ee
73
+ - priit@voog.com
74
+ - tanel@voog.com
73
75
  executables: []
74
76
  extensions: []
75
77
  extra_rdoc_files: []
76
78
  files:
77
79
  - ".gitignore"
78
80
  - ".rspec"
81
+ - CHANGELOG.md
79
82
  - Gemfile
80
83
  - Gemfile.lock
81
84
  - Guardfile
@@ -84,6 +87,7 @@ files:
84
87
  - init.rb
85
88
  - ipizza.gemspec
86
89
  - lib/ipizza.rb
90
+ - lib/ipizza/authentication.rb
87
91
  - lib/ipizza/authentication_request.rb
88
92
  - lib/ipizza/authentication_response.rb
89
93
  - lib/ipizza/config.rb
@@ -91,7 +95,9 @@ files:
91
95
  - lib/ipizza/payment_request.rb
92
96
  - lib/ipizza/payment_response.rb
93
97
  - lib/ipizza/provider.rb
98
+ - lib/ipizza/provider/base.rb
94
99
  - lib/ipizza/provider/krediidipank.rb
100
+ - lib/ipizza/provider/lhv.rb
95
101
  - lib/ipizza/provider/nordea.rb
96
102
  - lib/ipizza/provider/nordea/authentication_request.rb
97
103
  - lib/ipizza/provider/nordea/authentication_response.rb
@@ -104,21 +110,28 @@ files:
104
110
  - lib/ipizza/response.rb
105
111
  - lib/ipizza/util.rb
106
112
  - lib/ipizza/version.rb
107
- - spec/certificates/bank.crt
108
- - spec/certificates/bank.csr
109
- - spec/certificates/bank.key
110
- - spec/certificates/bank.pub
111
- - spec/certificates/dealer.key
112
- - spec/certificates/dealer.pub
113
113
  - spec/certificates/nordea_test_priv
114
- - spec/certificates/seb_test_priv.pem
115
- - spec/certificates/seb_test_pub.crt
116
- - spec/certificates/seb_test_pub.pem
117
- - spec/certificates/swedbank_production.pem
114
+ - spec/certificates/pangalink_danske_bank_cert.pem
115
+ - spec/certificates/pangalink_danske_bank_key.pem
116
+ - spec/certificates/pangalink_danske_user_key.pem
117
+ - spec/certificates/pangalink_krediidipank_bank_cert.pem
118
+ - spec/certificates/pangalink_krediidipank_bank_key.pem
119
+ - spec/certificates/pangalink_krediidipank_user_key.pem
120
+ - spec/certificates/pangalink_lhv_bank_cert.pem
121
+ - spec/certificates/pangalink_lhv_bank_key.pem
122
+ - spec/certificates/pangalink_lhv_user_key.pem
123
+ - spec/certificates/pangalink_seb_bank_cert.pem
124
+ - spec/certificates/pangalink_seb_bank_key.pem
125
+ - spec/certificates/pangalink_seb_user_key.pem
126
+ - spec/certificates/pangalink_swedbank_bank_cert.pem
127
+ - spec/certificates/pangalink_swedbank_bank_key.pem
128
+ - spec/certificates/pangalink_swedbank_user_key.pem
118
129
  - spec/config/config.yml
119
130
  - spec/config/plain_config.yml
120
131
  - spec/ipizza/authentication_response_spec.rb
121
132
  - spec/ipizza/config_spec.rb
133
+ - spec/ipizza/provider/krediidipank_spec.rb
134
+ - spec/ipizza/provider/lhv_spec.rb
122
135
  - spec/ipizza/provider/nordea/authentication_response_spec.rb
123
136
  - spec/ipizza/provider/nordea/payment_request_spec.rb
124
137
  - spec/ipizza/provider/nordea/payment_response_spec.rb
@@ -130,7 +143,7 @@ files:
130
143
  - spec/ipizza/util_spec.rb
131
144
  - spec/spec_helper.rb
132
145
  - spec/support/pizza.rb
133
- homepage: http://github.com/priithaamer/ipizza
146
+ homepage: https://github.com/Voog/ipizza
134
147
  licenses: []
135
148
  metadata: {}
136
149
  post_install_message:
@@ -149,26 +162,33 @@ required_rubygems_version: !ruby/object:Gem::Requirement
149
162
  version: '0'
150
163
  requirements: []
151
164
  rubyforge_project:
152
- rubygems_version: 2.2.0
165
+ rubygems_version: 2.2.2
153
166
  signing_key:
154
167
  specification_version: 4
155
168
  summary: Implements iPizza protocol to communicate with Estonian Banks
156
169
  test_files:
157
- - spec/certificates/bank.crt
158
- - spec/certificates/bank.csr
159
- - spec/certificates/bank.key
160
- - spec/certificates/bank.pub
161
- - spec/certificates/dealer.key
162
- - spec/certificates/dealer.pub
163
170
  - spec/certificates/nordea_test_priv
164
- - spec/certificates/seb_test_priv.pem
165
- - spec/certificates/seb_test_pub.crt
166
- - spec/certificates/seb_test_pub.pem
167
- - spec/certificates/swedbank_production.pem
171
+ - spec/certificates/pangalink_danske_bank_cert.pem
172
+ - spec/certificates/pangalink_danske_bank_key.pem
173
+ - spec/certificates/pangalink_danske_user_key.pem
174
+ - spec/certificates/pangalink_krediidipank_bank_cert.pem
175
+ - spec/certificates/pangalink_krediidipank_bank_key.pem
176
+ - spec/certificates/pangalink_krediidipank_user_key.pem
177
+ - spec/certificates/pangalink_lhv_bank_cert.pem
178
+ - spec/certificates/pangalink_lhv_bank_key.pem
179
+ - spec/certificates/pangalink_lhv_user_key.pem
180
+ - spec/certificates/pangalink_seb_bank_cert.pem
181
+ - spec/certificates/pangalink_seb_bank_key.pem
182
+ - spec/certificates/pangalink_seb_user_key.pem
183
+ - spec/certificates/pangalink_swedbank_bank_cert.pem
184
+ - spec/certificates/pangalink_swedbank_bank_key.pem
185
+ - spec/certificates/pangalink_swedbank_user_key.pem
168
186
  - spec/config/config.yml
169
187
  - spec/config/plain_config.yml
170
188
  - spec/ipizza/authentication_response_spec.rb
171
189
  - spec/ipizza/config_spec.rb
190
+ - spec/ipizza/provider/krediidipank_spec.rb
191
+ - spec/ipizza/provider/lhv_spec.rb
172
192
  - spec/ipizza/provider/nordea/authentication_response_spec.rb
173
193
  - spec/ipizza/provider/nordea/payment_request_spec.rb
174
194
  - spec/ipizza/provider/nordea/payment_response_spec.rb
@@ -1,21 +0,0 @@
1
- -----BEGIN CERTIFICATE-----
2
- MIIDYjCCAkoCCQCFffTngA2a1jANBgkqhkiG9w0BAQUFADBzMQswCQYDVQQGEwJF
3
- RTERMA8GA1UECBMIVGFydHVtYWExDjAMBgNVBAcTBVRhcnR1MQ4wDAYDVQQKEwVF
4
- ZGljeTESMBAGA1UEAxMJU3Blcm1iYW5rMR0wGwYJKoZIhvcNAQkBFg5pbmZvQHNw
5
- ZXJtYmFuazAgFw0xMDEwMjMxMzUzMjZaGA8yMjg0MDgwNzEzNTMyNlowczELMAkG
6
- A1UEBhMCRUUxETAPBgNVBAgTCFRhcnR1bWFhMQ4wDAYDVQQHEwVUYXJ0dTEOMAwG
7
- A1UEChMFRWRpY3kxEjAQBgNVBAMTCVNwZXJtYmFuazEdMBsGCSqGSIb3DQEJARYO
8
- aW5mb0BzcGVybWJhbmswggEgMA0GCSqGSIb3DQEBAQUAA4IBDQAwggEIAoIBAQDa
9
- qmkPniJgt51TQ9UcUeIcto06FfLuF59aDRkgJ12JhPJzV2Ec5nbydaHp3MyKtgr0
10
- zuLiSGc/LH+RLgrKwpGpVNvvJYg6NZKIOW+noHSKBuzYT1JtaNkZSasl2RK9EjT6
11
- qAJ8hzPPBaOu5amBEM4MesUStZ1KYSwElvFQysqJZfccOyjCAypOhPpUYlbsTH4W
12
- 1+7h2uIjZPsafasludipxKM1ncwG2YF82uYPW+NyIrp87x1oJwfsGQBhstMKUtUx
13
- DEQ0LwTzTYGCH/j+TLnCujSkQVsdYmNfje9PTQxGWLT92CjJ90dyePdwACDa7Qoi
14
- kN+WLuESkSRT+OjV9Sa5AgEjMA0GCSqGSIb3DQEBBQUAA4IBAQB+Eq2qbKCmuAw+
15
- pSzotW7JlhU1GW0nWbvGU2T7y4SgKuRfHBh5tujhKGxMP76pIp96MuRGYZzTrPhE
16
- rxtXqEgh4b55iZDYK4EEspOaEnZgmktZgCRBLyGS95CVTxoKV20EYNxGQprMRu6T
17
- ll1nV3YgEYpp5UdQs38fP3rY+Yx6C2Vi4p+DPD1MCDGtxfzDA5LSnHnKas82nR90
18
- eHsacbmrkLMlBOuPGRMwRyGbOHNsFa1O6hLk8IFz1HZUJJepKnCLhC6zjl0AlMi5
19
- gJ8iY0fhJKQSp50oJtb4MymTo2IZBlQL7or7kviNETpbdGfplKn8U11VTAUjRC5/
20
- Tp9Eluhh
21
- -----END CERTIFICATE-----
@@ -1,17 +0,0 @@
1
- -----BEGIN CERTIFICATE REQUEST-----
2
- MIICtjCCAZ4CAQAwczELMAkGA1UEBhMCRUUxETAPBgNVBAgTCFRhcnR1bWFhMQ4w
3
- DAYDVQQHEwVUYXJ0dTEOMAwGA1UEChMFRWRpY3kxEjAQBgNVBAMTCVNwZXJtYmFu
4
- azEdMBsGCSqGSIb3DQEJARYOaW5mb0BzcGVybWJhbmswggEgMA0GCSqGSIb3DQEB
5
- AQUAA4IBDQAwggEIAoIBAQDaqmkPniJgt51TQ9UcUeIcto06FfLuF59aDRkgJ12J
6
- hPJzV2Ec5nbydaHp3MyKtgr0zuLiSGc/LH+RLgrKwpGpVNvvJYg6NZKIOW+noHSK
7
- BuzYT1JtaNkZSasl2RK9EjT6qAJ8hzPPBaOu5amBEM4MesUStZ1KYSwElvFQysqJ
8
- ZfccOyjCAypOhPpUYlbsTH4W1+7h2uIjZPsafasludipxKM1ncwG2YF82uYPW+Ny
9
- Irp87x1oJwfsGQBhstMKUtUxDEQ0LwTzTYGCH/j+TLnCujSkQVsdYmNfje9PTQxG
10
- WLT92CjJ90dyePdwACDa7QoikN+WLuESkSRT+OjV9Sa5AgEjoAAwDQYJKoZIhvcN
11
- AQEFBQADggEBAIXdnuggh14uC9f+lReTa/XG3GK6guryVwDQ2kHhmfS+GNwc5wFp
12
- 3hNNFnbsF/4jmszKRSgwwvy5x8ebTFfp5VklHHo/l5YSggiSBp8+IIAPS26WtclU
13
- lJZAcwhr+3YG5phjqe4auJhXFrPU9HtyhC8MmALRHj2FWvkMizEGH4efLEbTETPp
14
- zVAVienF8BJSsSUx1W5kG03OGPp6d7vFR/o2xgy+NmX1jrZvIz7MwMd/3x8Xclaj
15
- /Huu1Gsnw0xELrzvftbi8LE0VEuKcSuqISiXGhLdzmCbRgEnzqU6WoJoge7kgYg+
16
- WfPSzI0aDrhvZ95FVfyuBwNSvSFCPFBfP6M=
17
- -----END CERTIFICATE REQUEST-----
@@ -1,27 +0,0 @@
1
- -----BEGIN RSA PRIVATE KEY-----
2
- MIIEogIBAAKCAQEA2qppD54iYLedU0PVHFHiHLaNOhXy7hefWg0ZICddiYTyc1dh
3
- HOZ28nWh6dzMirYK9M7i4khnPyx/kS4KysKRqVTb7yWIOjWSiDlvp6B0igbs2E9S
4
- bWjZGUmrJdkSvRI0+qgCfIczzwWjruWpgRDODHrFErWdSmEsBJbxUMrKiWX3HDso
5
- wgMqToT6VGJW7Ex+Ftfu4driI2T7Gn2rJbnYqcSjNZ3MBtmBfNrmD1vjciK6fO8d
6
- aCcH7BkAYbLTClLVMQxENC8E802Bgh/4/ky5wro0pEFbHWJjX43vT00MRli0/dgo
7
- yfdHcnj3cAAg2u0KIpDfli7hEpEkU/jo1fUmuQIBIwKCAQA4OnLJgG89cQsyqwrq
8
- Bm1X1yuhONgRVogP13t9S/N7Ii+3QlrM6s4hFu8e4QFlf0SlWcVQIT8e346EauzV
9
- DXXptrw2Ljj5BnYjB3R7j6jwSuxyIwaRKZbpPtQ87q0MC/7+oDsnVfdhHrUPt2YZ
10
- 37/0lJkTcIeIJ52ax7plO3Xo0JnQMtuyLI6/JMmZ5yK9Ew/L7sb7qhA9kwuDI6Ja
11
- 5SHMPVqQRqZi5YEjIQJ0PjP9M6FkEJdIdeUD/WkCVjUmsJOq2/JX7mK+xkutz4rs
12
- /GhCjw/quH1vcfjBZDswDb/vhBF1+iGj1qLmCRDycRjVWDodytI0RdqtdowfkO9u
13
- jiALAoGBAPk9eHG3dZP+iht7shF9X+Dhqn3o1Nwv9uZ/gJeI2KkduOWECSg3I6H7
14
- rZ51MTGESw2Cm/88THvl1ROBKZgC18u6Rp+/8i+q6EdEwIGy20vMxIKmA0DyTxtn
15
- Lo5V6imY3l+xTt7K37Oj4OzI15SOT1v+x11WlavPIPO7822dXL+JAoGBAOCYp5mO
16
- ivlopLJlu6Hk99GN4jJCxf+upARHq2NX1+UAALLV1zkyqyIxdAUrca7cR8eRoNHZ
17
- LIMvo1SCHYjGWpJQGPYB1qqbYhPuxpPquEpIdAJQ/t0H5key9gkFnzEmeLwP9XHX
18
- RqiI5o/b4oEO8T3o0TRX3uLZv53kYBD8b7GxAoGAQBce+KuEomYGQZTWBH9TKzK2
19
- z+tp73oMSeZFo08TJCw22+7Ahq8XypEspRbSIqz9Wz7XqAgw7KjQZBnmH8Y3fYer
20
- wq2zThYBNuXLGglrlyYGpUChwD5O2ykpOose9MDouYVdbH1Pd1YGo0mWhUkqWXwH
21
- YSTkqIW4BCkEFN9SXSMCgYEA2i3ko8xMfUEVBRJegAL/XdpJcqdD/7D3Ghm8byIi
22
- LuoPTqPYY3MMpN+VRtm+5GD1RYYnMkCu5daBaAlehN3xlXJhZAHJOASoayJ3wuQD
23
- e1xTb/bo8/kLlhuP64HN1/l8mW6WqRpEo7gwbn3Ut+KhNNOJZgw3mopiXt3ZqhnL
24
- lqsCgYEA6P5SoSj3LOaPISNqwXKgz+JZc7fHuhcUNkg5gh7kzTqo2wtT1HHB/qgu
25
- tr44JyzTRY5K2r9YYWctCA69rClYMiNds+XxhJ7TYdNzRv8/sTrWvn6t4/I+o8Ke
26
- ETd6XQEi9EUpkfrsVyq9oMTYTZeUiEybDZuYdv2vJSB45X6e6pc=
27
- -----END RSA PRIVATE KEY-----
@@ -1 +0,0 @@
1
- ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA2qppD54iYLedU0PVHFHiHLaNOhXy7hefWg0ZICddiYTyc1dhHOZ28nWh6dzMirYK9M7i4khnPyx/kS4KysKRqVTb7yWIOjWSiDlvp6B0igbs2E9SbWjZGUmrJdkSvRI0+qgCfIczzwWjruWpgRDODHrFErWdSmEsBJbxUMrKiWX3HDsowgMqToT6VGJW7Ex+Ftfu4driI2T7Gn2rJbnYqcSjNZ3MBtmBfNrmD1vjciK6fO8daCcH7BkAYbLTClLVMQxENC8E802Bgh/4/ky5wro0pEFbHWJjX43vT00MRli0/dgoyfdHcnj3cAAg2u0KIpDfli7hEpEkU/jo1fUmuQ== priit@Priit.local
@@ -1,30 +0,0 @@
1
- -----BEGIN RSA PRIVATE KEY-----
2
- Proc-Type: 4,ENCRYPTED
3
- DEK-Info: DES-EDE3-CBC,DDB688B584D929BC
4
-
5
- 9bETOPI7ZZyVtbGtMkFAaVwWSVPHOcTnRJMsBMBhArjLuR5P0m4LjDfscfA+9kW0
6
- TBNL+79D9XbiSQQDtgA47KeplaZNBNV1RQJ4526XprWp9PIkzlFp6zHMU+doOEnY
7
- eUHGPorFxvYJewO9KtkxCDDurBUckO19jepxBOTrmdsbouk2uTsNYfRu60EJtFoE
8
- vGk+wlD8lI6UvNWmluBJHBYo/UR3dFaTXEpYVkIAhnOdG+mS0Bm1/aCQylH5pxRz
9
- H0KcEqEAjwLDeLmGrdphYbpmwy1dCmyxC6H4cxzxXw1AvIM3f0m7H+qCuMY6gnYp
10
- SNNerpCpujo/7/UesIW2sM9x/3db2DrrhuBka4prUvarbd1JweO5fb2yYIshEjNq
11
- C+g8b6mzQN9wDiuJdZyjg69yXAtBbOnzujRVVoRmm2w4C0jS/Vudak3+C+75DzgR
12
- n3QyrAY4wavMHvW716/gAw3oFlnmKyMX+kmxpeMu1Lh+HE3M3oFqULNxkXHkSn1f
13
- HwhVn+ypf6G5hZb+wmWKMEzwISQTti/bhzXulmW4P4wQFGeHifOCAMDURIKd8Mv8
14
- zSx5FUihVUwd8ZUKEfvt9o/voO8saIe4DA77jd3U3N8Vb8kkFbBaw6VOMVl59m6l
15
- ctjBgmtCjKLPwYvlHm4OI73RQk5pN/3BJ3u3gZXb/Px4zmB3I+ErZCH7SXbNZhO3
16
- 1JQ0XG1/10HtTDBMR1rcaP49E9xzw2nNqdjUi4zbMWxsCCSSg01oNUf3XjBBslJH
17
- fjsdUAVK7MuIsBhicKsSDZ2XFa5QJHmrLCisVo/lvD7ZoEnHfYAaMdThYA4ZAyJf
18
- J0h71N2U/vlHSZBY1S7yIGgViYKBqrXUylT3E7ESwisiblM+wkxhlCbMPOtPpzhq
19
- u6UhPhga+C190I2FQpPN439q+FiIO7qPJw9jCZn/P3b5WM5aj6XjcxCvzqCLXaRx
20
- uabx4ze+xCci7GeY4B5M7SkFEK2vYxSWTa3phjWxRMKTF02NNq4tCD45HqgphyP4
21
- 5dvQvn6+RHjGaRmoV9vnU7cciuVrnw/6G4iIllZrulvwVozbIR1an02bJawK4WYC
22
- inGFGdnY8xenEkKII8QmPmGEtJSt2XWHNd66wC0MGJH1gsgo1nbYrX3woHn4Vekz
23
- zuGIsZM/+TtMpz/qbG4CS5wHVnloFr//FoFCPNKEqt79BmnsR2Xj05xLjDA4ENey
24
- MZ0Jy2SulXP2xVauOCSnUJZvxpcue2wPXG5gzakzZ5GTrKOO3psLnA5N5M6kCLX+
25
- LQHKzA6D+i1d3b+dP0SJQBDAkFGY0GvBOCbgIRs+/SCUNPXY9/GNlx11O+lQAjn6
26
- BH6fuh2KYh1RoPdQISzCdzP3hhnwo6NEEioqtGA4yQJ6XFjsDb8VmI7O94QjloGd
27
- uWvbppa3lKgDcQhPbru+R/M7kT15CDafR7NSlPCXJKSh0WO2SAHRjxOUN1/ABeSA
28
- L484LL+d74CIiGMKJXv4nIvvtaR/gV4a7tfOdw2eJ7e2LPAD8UeBYCyxleTGPP1Y
29
- aIQOe9025vIvdjBuws+pmsnCKuAVa1p853q17y2iQ8xYORT6tvtD8Q==
30
- -----END RSA PRIVATE KEY-----
@@ -1 +0,0 @@
1
- ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA22gPnSfXmJIoCKiK9C5YVhRvkP1Y7z+wrHHB+X5z80MxmsL9q/dyjBoqbv0+ij4iW6ZJXWdJGeXFmjMT9fjb4mTiXNml4VEdeDKo1+nafpUngUjWMzjlyZq1noWBAOcPFbsUEas8dIBhrml+3c4Vyf372ikEknbDQFdE86+7b/sYM/OLAwLn1MzeI107c3ur6n3QgEa+cpJzSULjSUqwFZLUJ7ZasG5FlR+epmIELFubFFZFM8AID2rfBGNlGo49ge313baJHEcQkV2gEOc/bo2WLtEYq6AFsoFl0B3afj/u+Yn5xxZ2x933dIgxWjKhm3SCOWrww4V5qCCmBVywCQ== priit@Priit.local
@@ -1,16 +0,0 @@
1
- -----BEGIN RSA PRIVATE KEY-----
2
- MIICXAIBAAKBgQC+AROlXiRvi1T7Q9fAh0Lw73szAn26mqfKDqd6Bdplq3v+gVWC
3
- 3v0+bgtfNakRE/UVYOxEA0z0viqRpKzPuNy8OstTMe8fFKs19NW8lBYik6NzJ4Bk
4
- +B6VmovOm0nJLQJytXKiJyuHP9DqPOVmP8S+azzX7Uqzov1nxo9fvH7y2QIDAQAB
5
- AoGAFhbD9O6r57fYCloJxB01gBMnTHfWrBH8vbXUbJAvorA7+wuIKG3KHS7n7Yqs
6
- fArI7FJXRVTo5m8RPdtaJ9ADAT9rjAi3A17TaEueyJl+B/hjHYhsd8MeFhTb2fh0
7
- rY3F6diL8U/YDbiAIegnKO0zcc6ynJrsQZvzb6DlY/CLPe0CQQD3KXJzw1ZfJ1ts
8
- c370b/ZC1YrRURw41Q0I8ljYJ8EJw/ngVxrnCIsd43bRnOVp9guJrjTQRkhDC3Gn
9
- J2Y0+42LAkEAxMxmh7QY4nItBTS0fe1KCat4VDxhyxYEhZKlGDhxW75vNROrripB
10
- 1ZfBsq5xkY2MM9R7WKmL7SpStrUPIvEVqwJBAOXA4ISd61cupbytrDEbNscv7Afh
11
- pyNpYOGVLmNYqQgj5c7WCcsD1RYmkRgPCe8y6czFZJDLFHdGVxLz+/16bTsCQC9J
12
- Ob2TnYMTkhO1JUU4tdh69e+vjoPgp3d80+Rs83fq2wey0UaI6saqryUC21Dw5OYz
13
- QOv92RxEVhmGibuIl/8CQCiYrzwlZJDlsKrWPZT0E8rzNmLZkhNHzYJP9S7x+FKk
14
- m3gFeXEBgzGn9UOd6xIAp0p7A1XVBN8XzDMa09gSOks=
15
- -----END RSA PRIVATE KEY-----
16
-
@@ -1,20 +0,0 @@
1
- -----BEGIN CERTIFICATE-----
2
- MIIDRTCCAq6gAwIBAgIBADANBgkqhkiG9w0BAQQFADB7MQswCQYDVQQGEwJFRTEO
3
- MAwGA1UECBMFSGFyanUxEDAOBgNVBAcTB1RhbGxpbm4xDDAKBgNVBAoTA0VZUDEL
4
- MAkGA1UECxMCSVQxDDAKBgNVBAMTA2EuYTEhMB8GCSqGSIb3DQEJARYSYWxsYXIu
5
- YWxsYXNAZXlwLmVlMB4XDTk5MTExNTA4MTAzM1oXDTk5MTIxNTA4MTAzM1owezEL
6
- MAkGA1UEBhMCRUUxDjAMBgNVBAgTBUhhcmp1MRAwDgYDVQQHEwdUYWxsaW5uMQww
7
- CgYDVQQKEwNFWVAxCzAJBgNVBAsTAklUMQwwCgYDVQQDEwNhLmExITAfBgkqhkiG
8
- 9w0BCQEWEmFsbGFyLmFsbGFzQGV5cC5lZTCBnzANBgkqhkiG9w0BAQEFAAOBjQAw
9
- gYkCgYEAvgETpV4kb4tU+0PXwIdC8O97MwJ9upqnyg6negXaZat7/oFVgt79Pm4L
10
- XzWpERP1FWDsRANM9L4qkaSsz7jcvDrLUzHvHxSrNfTVvJQWIpOjcyeAZPgelZqL
11
- zptJyS0CcrVyoicrhz/Q6jzlZj/Evms81+1Ks6L9Z8aPX7x+8tkCAwEAAaOB2DCB
12
- 1TAdBgNVHQ4EFgQUFivCzZNmegEoOxYtg20YMMRB98gwgaUGA1UdIwSBnTCBmoAU
13
- FivCzZNmegEoOxYtg20YMMRB98ihf6R9MHsxCzAJBgNVBAYTAkVFMQ4wDAYDVQQI
14
- EwVIYXJqdTEQMA4GA1UEBxMHVGFsbGlubjEMMAoGA1UEChMDRVlQMQswCQYDVQQL
15
- EwJJVDEMMAoGA1UEAxMDYS5hMSEwHwYJKoZIhvcNAQkBFhJhbGxhci5hbGxhc0Bl
16
- eXAuZWWCAQAwDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQQFAAOBgQBfkayuot+e
17
- fwW8QmPwpWF5AY3oMT/fTncjCljDBOg39IQv4PjnpTdDfwwl3lUIZHHTLM2i0L/c
18
- eD4D1UFM1qdp2VZzhBd1eeMjxYjCP8qL2v2MfLkCYcP30Sl6ISSkFjFc5qbGXZOc
19
- C82uR/wUZJDw9kj+R1O46/byG8yA+S9FVw==
20
- -----END CERTIFICATE-----