epics 1.2.1 → 1.2.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +13 -1
- data/README.md +2 -2
- data/lib/epics.rb +1 -0
- data/lib/epics/cdb.rb +42 -0
- data/lib/epics/client.rb +2 -2
- data/lib/epics/version.rb +1 -1
- data/spec/client_spec.rb +16 -3
- data/spec/fixtures/xml/hpb_response_order_without_ns.xml +24 -0
- data/spec/orders/cdb_spec.rb +17 -0
- metadata +7 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d148b60ba07e4c81dbfcc0ddcb3d7263b2f74be2
|
4
|
+
data.tar.gz: 35b69cb5ef7f143f5d92974f47adfe4206cecbea
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 838a5d4be65b6339238dd6bc2f7f918c3b58ec2563e33b02fa21a9bc741e2636e4b2f94ad75f6e16a261aed43a3666300f1e088ebfbbed74a42228584d44c30d
|
7
|
+
data.tar.gz: 80d7a32a587947ad7a73ae525f2cacabffa4fc44a478d42194acfad92e7cd990719db28d94329a3d3457fc7b8b83ea8d6e66657fc1be487ac791b09da352e70b
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,15 @@
|
|
1
|
+
### 1.2.2
|
2
|
+
|
3
|
+
* [BUGFIX] HPB namespaces are unpredictable so be ignore them
|
4
|
+
|
5
|
+
### 1.2.1
|
6
|
+
|
7
|
+
* [BUGFIX] fixing wrong variable bind within `credit`, `debit` and `statements`
|
8
|
+
|
9
|
+
### 1.2.0
|
10
|
+
|
11
|
+
* [ENHANCEMENT] uploads will return both ebics_order_id and ebics_transaction_id
|
12
|
+
|
1
13
|
### 1.1.2
|
2
14
|
|
3
15
|
* [BUGFIX] missing require statements for `zlib`
|
@@ -19,4 +31,4 @@
|
|
19
31
|
|
20
32
|
### 1.0.0
|
21
33
|
|
22
|
-
* first release
|
34
|
+
* first release
|
data/README.md
CHANGED
@@ -200,10 +200,10 @@ Besides EBCIS being a standard, some server implementations are slighty differen
|
|
200
200
|
Is Epics working with your institution?
|
201
201
|
Please help us to grow this list of supported banks:
|
202
202
|
|
203
|
-
*
|
203
|
+
* Handelsbank
|
204
204
|
* Deutsche Bank
|
205
205
|
* Sparkasse KölnBonn
|
206
|
-
|
206
|
+
* Commerz Bank
|
207
207
|
|
208
208
|
## Links
|
209
209
|
|
data/lib/epics.rb
CHANGED
data/lib/epics/cdb.rb
ADDED
@@ -0,0 +1,42 @@
|
|
1
|
+
class Epics::CDB < Epics::GenericUploadRequest
|
2
|
+
|
3
|
+
def header
|
4
|
+
{
|
5
|
+
:@authenticate => true,
|
6
|
+
static: {
|
7
|
+
"HostID" => host_id,
|
8
|
+
"Nonce" => nonce,
|
9
|
+
"Timestamp" => timestamp,
|
10
|
+
"PartnerID" => partner_id,
|
11
|
+
"UserID" => user_id,
|
12
|
+
"Product" => {
|
13
|
+
:@Language => "de",
|
14
|
+
:content! => "EPICS - a ruby ebics kernel"
|
15
|
+
},
|
16
|
+
"OrderDetails" => {
|
17
|
+
"OrderType" => "CDD",
|
18
|
+
"OrderAttribute" => "OZHNN",
|
19
|
+
"StandardOrderParams/" => ""
|
20
|
+
},
|
21
|
+
"BankPubKeyDigests" => {
|
22
|
+
"Authentication" => {
|
23
|
+
:@Version => "X002",
|
24
|
+
:@Algorithm => "http://www.w3.org/2001/04/xmlenc#sha256",
|
25
|
+
:content! => client.bank_x.public_digest
|
26
|
+
},
|
27
|
+
"Encryption" => {
|
28
|
+
:@Version => "E002",
|
29
|
+
:@Algorithm => "http://www.w3.org/2001/04/xmlenc#sha256",
|
30
|
+
:content! => client.bank_e.public_digest
|
31
|
+
}
|
32
|
+
},
|
33
|
+
"SecurityMedium" => "0000",
|
34
|
+
"NumSegments" => 1
|
35
|
+
},
|
36
|
+
"mutable" => {
|
37
|
+
"TransactionPhase" => "Initialisation"
|
38
|
+
}
|
39
|
+
}
|
40
|
+
end
|
41
|
+
|
42
|
+
end
|
data/lib/epics/client.rb
CHANGED
@@ -98,8 +98,8 @@ class Epics::Client
|
|
98
98
|
Nokogiri::XML(download(Epics::HPB)).xpath("//xmlns:PubKeyValue").each do |node|
|
99
99
|
type = node.parent.last_element_child.content
|
100
100
|
|
101
|
-
modulus = Base64.decode64(node.at_xpath("
|
102
|
-
exponent = Base64.decode64(node.at_xpath("
|
101
|
+
modulus = Base64.decode64(node.at_xpath(".//*[local-name() = 'Modulus']").content)
|
102
|
+
exponent = Base64.decode64(node.at_xpath(".//*[local-name() = 'Exponent']").content)
|
103
103
|
|
104
104
|
bank = OpenSSL::PKey::RSA.new
|
105
105
|
bank.n = OpenSSL::BN.new(modulus, 2)
|
data/lib/epics/version.rb
CHANGED
data/spec/client_spec.rb
CHANGED
@@ -61,6 +61,10 @@ RSpec.describe Epics::Client do
|
|
61
61
|
end
|
62
62
|
|
63
63
|
describe '#HPB' do
|
64
|
+
let(:e_key) do
|
65
|
+
Epics::Key.new(OpenSSL::PKey::RSA.new(File.read(File.join(File.dirname(__FILE__), 'fixtures', 'bank_e.pem'))))
|
66
|
+
end
|
67
|
+
|
64
68
|
before do
|
65
69
|
stub_request(:post, "https://194.180.18.30/ebicsweb/ebicsweb")
|
66
70
|
.with(:body => %r[<?xml(.*)ebicsNoPubKeyDigestsRequest>])
|
@@ -75,15 +79,24 @@ RSpec.describe Epics::Client do
|
|
75
79
|
end
|
76
80
|
|
77
81
|
describe 'crypto' do
|
78
|
-
let(:e_key) do
|
79
|
-
Epics::Key.new(OpenSSL::PKey::RSA.new(File.read(File.join(File.dirname(__FILE__), 'fixtures', 'bank_e.pem'))))
|
80
|
-
end
|
81
82
|
|
82
83
|
before { subject.HPB }
|
83
84
|
|
84
85
|
it { expect(subject.keys["SIZBN001.E002"].public_digest).to eq(e_key.public_digest) }
|
85
86
|
it { expect(subject.keys["SIZBN001.X002"].public_digest).to eq(e_key.public_digest) }
|
86
87
|
end
|
88
|
+
|
89
|
+
describe 'when order data wont include namesspaces' do
|
90
|
+
before do
|
91
|
+
allow(subject).to receive(:download).with(Epics::HPB).and_return(File.read(File.join(File.dirname(__FILE__), 'fixtures', 'xml', 'hpb_response_order_without_ns.xml')))
|
92
|
+
|
93
|
+
subject.HPB
|
94
|
+
end
|
95
|
+
|
96
|
+
it { expect(subject.keys["SIZBN001.E002"].public_digest).to eq(e_key.public_digest) }
|
97
|
+
it { expect(subject.keys["SIZBN001.X002"].public_digest).to eq(e_key.public_digest) }
|
98
|
+
|
99
|
+
end
|
87
100
|
end
|
88
101
|
|
89
102
|
describe '#CD1' do
|
@@ -0,0 +1,24 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<HPBResponseOrderData xmlns="urn:org:ebics:H004">
|
3
|
+
<AuthenticationPubKeyInfo>
|
4
|
+
<PubKeyValue>
|
5
|
+
<RSAKeyValue xmlns="http://www.w3.org/2000/09/xmldsig#">
|
6
|
+
<Modulus>AJ2/0OoIZydb9sgKbiwqDcwA0NtcUMIYi6GK7PqoRszu1uytGnxJjQhGt62kMslWvLgebUSwdq/T3YyGsa3KQeIGaUUn9iqyu3BoNOMdo2DLN4NdGMY1WR/HbYRKR3JHyURhTBKw27KScRRdKGl6jY+VcXcTKJL8PjXMQH5cD6Gz</Modulus>
|
7
|
+
<Exponent>AQAB</Exponent>
|
8
|
+
</RSAKeyValue>
|
9
|
+
<TimeStamp>2007-03-13T11:33:16.616Z</TimeStamp>
|
10
|
+
</PubKeyValue>
|
11
|
+
<AuthenticationVersion>X002</AuthenticationVersion>
|
12
|
+
</AuthenticationPubKeyInfo>
|
13
|
+
<EncryptionPubKeyInfo>
|
14
|
+
<PubKeyValue>
|
15
|
+
<RSAKeyValue xmlns="http://www.w3.org/2000/09/xmldsig#">
|
16
|
+
<Modulus>AJ2/0OoIZydb9sgKbiwqDcwA0NtcUMIYi6GK7PqoRszu1uytGnxJjQhGt62kMslWvLgebUSwdq/T3YyGsa3KQeIGaUUn9iqyu3BoNOMdo2DLN4NdGMY1WR/HbYRKR3JHyURhTBKw27KScRRdKGl6jY+VcXcTKJL8PjXMQH5cD6Gz</Modulus>
|
17
|
+
<Exponent>AQAB</Exponent>
|
18
|
+
</RSAKeyValue>
|
19
|
+
<TimeStamp>2007-03-13T11:33:16.682Z</TimeStamp>
|
20
|
+
</PubKeyValue>
|
21
|
+
<EncryptionVersion>E002</EncryptionVersion>
|
22
|
+
</EncryptionPubKeyInfo>
|
23
|
+
<HostID>SIZBN001</HostID>
|
24
|
+
</HPBResponseOrderData>
|
@@ -0,0 +1,17 @@
|
|
1
|
+
RSpec.describe Epics::CDB do
|
2
|
+
|
3
|
+
let(:client) { Epics::Client.new( File.open(File.join( File.dirname(__FILE__), '..', 'fixtures', 'SIZBN001.key')), 'secret' , 'https://194.180.18.30/ebicsweb/ebicsweb', 'SIZBN001', 'EBIX', 'EBICS') }
|
4
|
+
let(:document) { File.read( File.join( File.dirname(__FILE__), '..', 'fixtures', 'xml', 'cd1.xml') ) }
|
5
|
+
subject { described_class.new(client, document) }
|
6
|
+
|
7
|
+
describe '#to_xml' do
|
8
|
+
specify { expect(subject.to_xml).to be_a_valid_ebics_doc }
|
9
|
+
end
|
10
|
+
|
11
|
+
describe '#to_transfer_xml' do
|
12
|
+
before { subject.transaction_id = SecureRandom.hex(16) }
|
13
|
+
|
14
|
+
specify { expect(subject.to_transfer_xml).to be_a_valid_ebics_doc }
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: epics
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Lars Brillert
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-07-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: nokogiri
|
@@ -168,6 +168,7 @@ files:
|
|
168
168
|
- lib/epics/c53.rb
|
169
169
|
- lib/epics/cct.rb
|
170
170
|
- lib/epics/cd1.rb
|
171
|
+
- lib/epics/cdb.rb
|
171
172
|
- lib/epics/cdd.rb
|
172
173
|
- lib/epics/client.rb
|
173
174
|
- lib/epics/error.rb
|
@@ -210,6 +211,7 @@ files:
|
|
210
211
|
- spec/fixtures/xml/hpb_request.xml
|
211
212
|
- spec/fixtures/xml/hpb_response.xml
|
212
213
|
- spec/fixtures/xml/hpb_response_order.xml
|
214
|
+
- spec/fixtures/xml/hpb_response_order_without_ns.xml
|
213
215
|
- spec/fixtures/xml/htd_order_data.xml
|
214
216
|
- spec/fixtures/xml/ini.xml
|
215
217
|
- spec/fixtures/xml/signature_pub_key_order_data.xml
|
@@ -225,6 +227,7 @@ files:
|
|
225
227
|
- spec/orders/c53_spec.rb
|
226
228
|
- spec/orders/cct_spec.rb
|
227
229
|
- spec/orders/cd1_spec.rb
|
230
|
+
- spec/orders/cdb_spec.rb
|
228
231
|
- spec/orders/cdd_spec.rb
|
229
232
|
- spec/orders/haa_spec.rb
|
230
233
|
- spec/orders/hac_spec.rb
|
@@ -300,6 +303,7 @@ test_files:
|
|
300
303
|
- spec/fixtures/xml/hpb_request.xml
|
301
304
|
- spec/fixtures/xml/hpb_response.xml
|
302
305
|
- spec/fixtures/xml/hpb_response_order.xml
|
306
|
+
- spec/fixtures/xml/hpb_response_order_without_ns.xml
|
303
307
|
- spec/fixtures/xml/htd_order_data.xml
|
304
308
|
- spec/fixtures/xml/ini.xml
|
305
309
|
- spec/fixtures/xml/signature_pub_key_order_data.xml
|
@@ -315,6 +319,7 @@ test_files:
|
|
315
319
|
- spec/orders/c53_spec.rb
|
316
320
|
- spec/orders/cct_spec.rb
|
317
321
|
- spec/orders/cd1_spec.rb
|
322
|
+
- spec/orders/cdb_spec.rb
|
318
323
|
- spec/orders/cdd_spec.rb
|
319
324
|
- spec/orders/haa_spec.rb
|
320
325
|
- spec/orders/hac_spec.rb
|