epics 2.10.0 → 3.0.0.rc1

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 (245) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +2 -1
  3. data/.semaphore/semaphore.yml +17 -8
  4. data/CHANGELOG.md +97 -0
  5. data/EBICS_REFERENCES.md +169 -0
  6. data/README.md +219 -50
  7. data/lib/epics/azv.rb +3 -10
  8. data/lib/epics/b2b.rb +3 -10
  9. data/lib/epics/bka.rb +3 -14
  10. data/lib/epics/builders/body_builder/base.rb +26 -0
  11. data/lib/epics/builders/body_builder/v2.rb +9 -0
  12. data/lib/epics/builders/body_builder/v3.rb +9 -0
  13. data/lib/epics/builders/body_builder.rb +6 -0
  14. data/lib/epics/builders/data_encryption_info_builder.rb +29 -0
  15. data/lib/epics/builders/data_transfer_builder/base.rb +52 -0
  16. data/lib/epics/builders/data_transfer_builder/v2.rb +9 -0
  17. data/lib/epics/builders/data_transfer_builder/v3.rb +12 -0
  18. data/lib/epics/builders/data_transfer_builder.rb +6 -0
  19. data/lib/epics/builders/header_builder/base.rb +26 -0
  20. data/lib/epics/builders/header_builder/v2.rb +9 -0
  21. data/lib/epics/builders/header_builder/v3.rb +9 -0
  22. data/lib/epics/builders/header_builder.rb +6 -0
  23. data/lib/epics/builders/mutable_builder.rb +28 -0
  24. data/lib/epics/builders/order_details_builder/base.rb +100 -0
  25. data/lib/epics/builders/order_details_builder/v2.rb +21 -0
  26. data/lib/epics/builders/order_details_builder/v3.rb +51 -0
  27. data/lib/epics/builders/order_details_builder.rb +10 -0
  28. data/lib/epics/builders/request_builder.rb +25 -0
  29. data/lib/epics/builders/static_builder/base.rb +75 -0
  30. data/lib/epics/builders/static_builder/v2.rb +9 -0
  31. data/lib/epics/builders/static_builder/v3.rb +9 -0
  32. data/lib/epics/builders/static_builder.rb +9 -0
  33. data/lib/epics/builders/transfer_receipt_builder.rb +19 -0
  34. data/lib/epics/builders/xml_builder/base.rb +92 -0
  35. data/lib/epics/builders/xml_builder/v24.rb +31 -0
  36. data/lib/epics/builders/xml_builder/v25.rb +31 -0
  37. data/lib/epics/builders/xml_builder/v3.rb +31 -0
  38. data/lib/epics/builders/xml_builder.rb +7 -0
  39. data/lib/epics/builders.rb +13 -0
  40. data/lib/epics/c2s.rb +3 -10
  41. data/lib/epics/c52.rb +2 -14
  42. data/lib/epics/c53.rb +2 -14
  43. data/lib/epics/c54.rb +2 -14
  44. data/lib/epics/c5n.rb +3 -14
  45. data/lib/epics/ccs.rb +3 -10
  46. data/lib/epics/cct.rb +3 -10
  47. data/lib/epics/cd1.rb +3 -10
  48. data/lib/epics/cdb.rb +3 -10
  49. data/lib/epics/cdd.rb +3 -10
  50. data/lib/epics/cds.rb +3 -10
  51. data/lib/epics/cdz.rb +3 -14
  52. data/lib/epics/cip.rb +3 -10
  53. data/lib/epics/client.rb +491 -123
  54. data/lib/epics/crypt/aes.rb +56 -0
  55. data/lib/epics/crypt/x_509.rb +52 -0
  56. data/lib/epics/crypt.rb +5 -0
  57. data/lib/epics/crz.rb +3 -14
  58. data/lib/epics/factories/crypt/aes_factory.rb +5 -0
  59. data/lib/epics/factories/crypt.rb +4 -0
  60. data/lib/epics/factories/request_factory/base.rb +236 -0
  61. data/lib/epics/factories/request_factory/v2.rb +194 -0
  62. data/lib/epics/factories/request_factory/v24.rb +32 -0
  63. data/lib/epics/factories/request_factory/v25.rb +31 -0
  64. data/lib/epics/factories/request_factory/v3.rb +305 -0
  65. data/lib/epics/factories/request_factory.rb +8 -0
  66. data/lib/epics/factories.rb +5 -0
  67. data/lib/epics/fdl.rb +3 -18
  68. data/lib/epics/ful.rb +6 -0
  69. data/lib/epics/generic_request.rb +31 -92
  70. data/lib/epics/generic_upload_request.rb +14 -67
  71. data/lib/epics/haa.rb +3 -9
  72. data/lib/epics/hac.rb +3 -14
  73. data/lib/epics/handlers/auth_signature_handler.rb +102 -0
  74. data/lib/epics/handlers/order_data_handler/base.rb +98 -0
  75. data/lib/epics/handlers/order_data_handler/v2.rb +39 -0
  76. data/lib/epics/handlers/order_data_handler/v24.rb +11 -0
  77. data/lib/epics/handlers/order_data_handler/v25.rb +11 -0
  78. data/lib/epics/handlers/order_data_handler/v3.rb +41 -0
  79. data/lib/epics/handlers/order_data_handler.rb +8 -0
  80. data/lib/epics/handlers/user_signature_handler/base.rb +10 -0
  81. data/lib/epics/handlers/user_signature_handler/v2.rb +17 -0
  82. data/lib/epics/handlers/user_signature_handler/v3.rb +17 -0
  83. data/lib/epics/handlers/user_signature_handler.rb +6 -0
  84. data/lib/epics/handlers.rb +6 -0
  85. data/lib/epics/hev.rb +2 -15
  86. data/lib/epics/hia.rb +4 -55
  87. data/lib/epics/hkd.rb +3 -9
  88. data/lib/epics/hpb.rb +3 -13
  89. data/lib/epics/hpd.rb +3 -9
  90. data/lib/epics/htd.rb +3 -9
  91. data/lib/epics/ini.rb +4 -46
  92. data/lib/epics/keyring.rb +17 -0
  93. data/lib/epics/letter_renderer.rb +17 -22
  94. data/lib/epics/ptk.rb +3 -14
  95. data/lib/epics/response.rb +34 -29
  96. data/lib/epics/services/crypt_service.rb +62 -0
  97. data/lib/epics/services/digest_resolver/base.rb +30 -0
  98. data/lib/epics/services/digest_resolver/v2.rb +13 -0
  99. data/lib/epics/services/digest_resolver/v3.rb +19 -0
  100. data/lib/epics/services/digest_resolver.rb +6 -0
  101. data/lib/epics/services.rb +5 -0
  102. data/lib/epics/signature.rb +50 -0
  103. data/lib/epics/{key.rb → signature_algorithm/base.rb} +14 -21
  104. data/lib/epics/signature_algorithm/rsa.rb +50 -0
  105. data/lib/epics/signature_algorithm/rsapkcs1.rb +16 -0
  106. data/lib/epics/signature_algorithm/rsapss.rb +20 -0
  107. data/lib/epics/signature_algorithm.rb +2 -0
  108. data/lib/epics/sta.rb +3 -14
  109. data/lib/epics/version.rb +1 -1
  110. data/lib/epics/vmk.rb +3 -14
  111. data/lib/epics/wss.rb +3 -9
  112. data/lib/epics/xct.rb +3 -10
  113. data/lib/epics/xds.rb +3 -10
  114. data/lib/epics/xe2.rb +3 -10
  115. data/lib/epics/xe3.rb +3 -10
  116. data/lib/epics/xek.rb +5 -0
  117. data/lib/epics/yct.rb +6 -0
  118. data/lib/epics/z01.rb +2 -14
  119. data/lib/epics/z52.rb +2 -14
  120. data/lib/epics/z53.rb +2 -14
  121. data/lib/epics/z54.rb +2 -14
  122. data/lib/epics/zsr.rb +5 -0
  123. data/lib/epics.rb +69 -5
  124. data/lib/letter/ini.erb +27 -6
  125. data/spec/aes_spec.rb +46 -0
  126. data/spec/auth_signature_handler_spec.rb +58 -0
  127. data/spec/builders_spec.rb +616 -0
  128. data/spec/certificate_handling_spec.rb +189 -0
  129. data/spec/client_setup_block_spec.rb +41 -0
  130. data/spec/client_spec.rb +143 -91
  131. data/spec/crypt_service_spec.rb +132 -0
  132. data/spec/date_range_spec.rb +46 -0
  133. data/spec/digest_resolver_spec.rb +164 -0
  134. data/spec/fixtures/bank_x509.pem +3 -0
  135. data/spec/fixtures/xml/haa.xml +40 -1
  136. data/spec/fixtures/xml/haa_receipt.xml +33 -30
  137. data/spec/fixtures/xml/haa_response_h004.xml +4 -0
  138. data/spec/fixtures/xml/haa_response_h005.xml +38 -0
  139. data/spec/fixtures/xml/hia_request_order_data.xml +24 -1
  140. data/spec/fixtures/xml/hpb_request.xml +1 -1
  141. data/spec/fixtures/xml/hpb_response_x509.xml +16 -0
  142. data/spec/fixtures/xml/htd_order_data_h005.xml +55 -0
  143. data/spec/fixtures/xml/jruby/hia.xml +20 -22
  144. data/spec/fixtures/xml/jruby/ini.xml +1 -3
  145. data/spec/fixtures/xml/ruby/hia.xml +21 -1
  146. data/spec/fixtures/xml/ruby/ini.xml +21 -1
  147. data/spec/handlers_spec.rb +267 -0
  148. data/spec/hpb_malformed_certificate_spec.rb +36 -0
  149. data/spec/key_file_decryption_spec.rb +27 -0
  150. data/spec/key_file_preservation_spec.rb +78 -0
  151. data/spec/keyring_spec.rb +349 -0
  152. data/spec/middleware/parse_ebics_spec.rb +2 -1
  153. data/spec/order_id_spec.rb +65 -0
  154. data/spec/orders/azv_spec.rb +63 -7
  155. data/spec/orders/b2b_spec.rb +68 -3
  156. data/spec/orders/bka_spec.rb +34 -4
  157. data/spec/orders/c2s_spec.rb +62 -9
  158. data/spec/orders/c52_spec.rb +34 -4
  159. data/spec/orders/c53_spec.rb +34 -4
  160. data/spec/orders/c54_spec.rb +36 -4
  161. data/spec/orders/c5n_spec.rb +36 -4
  162. data/spec/orders/camt_parity_spec.rb +80 -0
  163. data/spec/orders/ccs_spec.rb +62 -9
  164. data/spec/orders/cct_spec.rb +83 -9
  165. data/spec/orders/cd1_spec.rb +50 -7
  166. data/spec/orders/cdb_spec.rb +64 -7
  167. data/spec/orders/cdd_spec.rb +64 -7
  168. data/spec/orders/cds_spec.rb +74 -0
  169. data/spec/orders/cdz_spec.rb +67 -4
  170. data/spec/orders/cip_spec.rb +61 -9
  171. data/spec/orders/crz_spec.rb +67 -4
  172. data/spec/orders/fdl_spec.rb +143 -13
  173. data/spec/orders/ful_spec.rb +63 -0
  174. data/spec/orders/haa_spec.rb +115 -9
  175. data/spec/orders/hac_spec.rb +89 -10
  176. data/spec/orders/hev_spec.rb +1 -6
  177. data/spec/orders/hia_spec.rb +25 -22
  178. data/spec/orders/hkd_spec.rb +23 -4
  179. data/spec/orders/hpb_spec.rb +7 -4
  180. data/spec/orders/hpd_spec.rb +23 -4
  181. data/spec/orders/htd_spec.rb +23 -4
  182. data/spec/orders/ini_spec.rb +23 -18
  183. data/spec/orders/ptk_spec.rb +27 -4
  184. data/spec/orders/sta_spec.rb +129 -11
  185. data/spec/orders/vmk_spec.rb +36 -4
  186. data/spec/orders/wss_spec.rb +29 -3
  187. data/spec/orders/x_509_certificate_spec.rb +9 -1
  188. data/spec/orders/xct_spec.rb +63 -0
  189. data/spec/orders/xds_spec.rb +13 -6
  190. data/spec/orders/xe2_spec.rb +64 -7
  191. data/spec/orders/xe3_spec.rb +64 -7
  192. data/spec/orders/xek_spec.rb +31 -0
  193. data/spec/orders/yct_spec.rb +43 -0
  194. data/spec/orders/z01_spec.rb +34 -4
  195. data/spec/orders/z52_spec.rb +34 -4
  196. data/spec/orders/z53_spec.rb +34 -4
  197. data/spec/orders/z54_spec.rb +36 -4
  198. data/spec/orders/zsr_spec.rb +31 -0
  199. data/spec/request_factory_spec.rb +444 -0
  200. data/spec/response_business_error_spec.rb +45 -0
  201. data/spec/response_validation_spec.rb +23 -0
  202. data/spec/{key_spec.rb → signature_algorithm/rsa_pss_spec.rb} +4 -13
  203. data/spec/support/ebics_matcher.rb +17 -9
  204. data/spec/support/ebics_shared_examples.rb +642 -0
  205. data/spec/support/h005_client_helper.rb +23 -0
  206. data/spec/upload_digest_spec.rb +69 -0
  207. data/spec/user_signature_handler_spec.rb +25 -0
  208. data/spec/version_support_error_spec.rb +76 -0
  209. data/spec/xsd/{ebics_hev.xsd → H000/ebics_hev.xsd} +0 -0
  210. data/spec/xsd/H003/ebics.xsd +11 -0
  211. data/spec/xsd/H003/ebics_keymgmt_request.xsd +555 -0
  212. data/spec/xsd/H003/ebics_keymgmt_response.xsd +131 -0
  213. data/spec/xsd/H003/ebics_orders.xsd +1811 -0
  214. data/spec/xsd/H003/ebics_request.xsd +354 -0
  215. data/spec/xsd/H003/ebics_response.xsd +161 -0
  216. data/spec/xsd/{ebics_signature.xsd → H003/ebics_signature.xsd} +0 -0
  217. data/spec/xsd/H003/ebics_types.xsd +2361 -0
  218. data/spec/xsd/H003/xmldsig-core-schema.xsd +318 -0
  219. data/spec/xsd/H004/ebics_signature.xsd +217 -0
  220. data/spec/xsd/H005/ebics_H005.xsd +11 -0
  221. data/spec/xsd/H005/ebics_keymgmt_request_H005.xsd +523 -0
  222. data/spec/xsd/H005/ebics_keymgmt_response_H005.xsd +137 -0
  223. data/spec/xsd/H005/ebics_orders_H005.xsd +2094 -0
  224. data/spec/xsd/H005/ebics_request_H005.xsd +349 -0
  225. data/spec/xsd/H005/ebics_response_H005.xsd +167 -0
  226. data/spec/xsd/H005/ebics_signature_S002.xsd +177 -0
  227. data/spec/xsd/H005/ebics_types_H005.xsd +1885 -0
  228. data/spec/xsd/H005/xmldsig-core-schema.xsd +318 -0
  229. metadata +200 -36
  230. data/lib/epics/header_request.rb +0 -58
  231. data/lib/epics/middleware/xmlsig.rb +0 -16
  232. data/lib/epics/signer.rb +0 -40
  233. data/lib/epics/x_509_certificate.rb +0 -15
  234. data/lib/letter/ini_with_certs.erb +0 -335
  235. data/spec/generic_upload_spec.rb +0 -58
  236. data/spec/hpb_spec.rb +0 -15
  237. data/spec/signer_spec.rb +0 -34
  238. /data/spec/xsd/{ebics_H004.xsd → H004/ebics_H004.xsd} +0 -0
  239. /data/spec/xsd/{ebics_keymgmt_request_H004.xsd → H004/ebics_keymgmt_request_H004.xsd} +0 -0
  240. /data/spec/xsd/{ebics_keymgmt_response_H004.xsd → H004/ebics_keymgmt_response_H004.xsd} +0 -0
  241. /data/spec/xsd/{ebics_orders_H004.xsd → H004/ebics_orders_H004.xsd} +0 -0
  242. /data/spec/xsd/{ebics_request_H004.xsd → H004/ebics_request_H004.xsd} +0 -0
  243. /data/spec/xsd/{ebics_response_H004.xsd → H004/ebics_response_H004.xsd} +0 -0
  244. /data/spec/xsd/{ebics_types_H004.xsd → H004/ebics_types_H004.xsd} +0 -0
  245. /data/spec/xsd/{xmldsig-core-schema.xsd → H004/xmldsig-core-schema.xsd} +0 -0
@@ -0,0 +1,46 @@
1
+ RSpec.describe 'DateRange in order params' do
2
+ let(:builder_class) { Epics::Builders::OrderDetailsBuilder::V2 }
3
+
4
+ def order_details(start_date, end_date)
5
+ builder = nil
6
+ builder_class.new { |b| builder = b.add_standard_order_params(start_date, end_date) }
7
+ Nokogiri::XML(builder.doc.to_xml)
8
+ end
9
+
10
+ it 'omits DateRange when neither bound is given' do
11
+ expect(order_details(nil, nil).at_xpath('//DateRange')).to be_nil
12
+ end
13
+
14
+ it 'emits both bounds when given' do
15
+ xml = order_details(Date.new(2026, 1, 1), Date.new(2026, 1, 31))
16
+
17
+ expect(xml.at_xpath('//Start').text).to eq('2026-01-01')
18
+ expect(xml.at_xpath('//End').text).to eq('2026-01-31')
19
+ end
20
+
21
+ # Start and End are both mandatory within DateRange, so one bound cannot be rendered.
22
+ it 'raises when only a start date is given' do
23
+ expect { order_details(Date.new(2026, 1, 1), nil) }
24
+ .to raise_error(ArgumentError, /both a start and an end date/)
25
+ end
26
+
27
+ it 'raises when only an end date is given' do
28
+ expect { order_details(nil, Date.new(2026, 1, 31)) }
29
+ .to raise_error(ArgumentError, /both a start and an end date/)
30
+ end
31
+
32
+ # Start and End are xs:date -- an offset-bearing xs:dateTime is rejected by the bank.
33
+ it 'renders Time as a plain date' do
34
+ xml = order_details(Time.new(2026, 1, 1, 16, 53, 7), Time.new(2026, 1, 31, 8, 0, 0))
35
+
36
+ expect(xml.at_xpath('//Start').text).to eq('2026-01-01')
37
+ expect(xml.at_xpath('//End').text).to eq('2026-01-31')
38
+ end
39
+
40
+ it 'renders DateTime as a plain date' do
41
+ xml = order_details(DateTime.new(2026, 1, 1, 16, 53, 7), DateTime.new(2026, 1, 31, 8, 0, 0))
42
+
43
+ expect(xml.at_xpath('//Start').text).to eq('2026-01-01')
44
+ expect(xml.at_xpath('//End').text).to eq('2026-01-31')
45
+ end
46
+ end
@@ -0,0 +1,164 @@
1
+ RSpec.describe 'DigestResolver' do
2
+ let(:rsa_key) { OpenSSL::PKey::RSA.generate(2048) }
3
+ let(:rsa_algo) { Epics::SignatureAlgorithm::Rsa.new(rsa_key) }
4
+ let(:dn) { '/C=DE/O=TestBank/CN=test.ebics.org' }
5
+ let(:cert_pem) { generate_x_509_crt(rsa_key, dn) }
6
+ let(:x509) { Epics::Crypt::X509.new(cert_pem) }
7
+ let(:crypt_service) { Epics::Services::CryptService.new }
8
+
9
+ describe Epics::Services::DigestResolver::Base do
10
+ subject(:resolver) { described_class.new }
11
+
12
+ it 'raises NotImplementedError for sign_digest' do
13
+ sig = Epics::Signature.new(Epics::Signature::A_VERSION_6, rsa_algo)
14
+ expect { resolver.sign_digest(sig) }.to raise_error(NotImplementedError)
15
+ end
16
+
17
+ it 'raises NotImplementedError for confirm_digest' do
18
+ sig = Epics::Signature.new(Epics::Signature::A_VERSION_6, rsa_algo)
19
+ expect { resolver.confirm_digest(sig) }.to raise_error(NotImplementedError)
20
+ end
21
+ end
22
+
23
+ describe Epics::Services::DigestResolver::V2 do
24
+ subject(:resolver) { described_class.new }
25
+
26
+ describe '#sign_digest' do
27
+ it 'returns binary SHA256 hash of key (exponent + modulus)' do
28
+ sig = Epics::Signature.new(Epics::Signature::A_VERSION_6, rsa_algo)
29
+ result = resolver.sign_digest(sig)
30
+ expected = crypt_service.calculate_digest(rsa_algo)
31
+ expect(result).to eq(expected)
32
+ end
33
+
34
+ it 'uses key-based digest regardless of certificate presence' do
35
+ sig = Epics::Signature.new(Epics::Signature::A_VERSION_6, rsa_algo)
36
+ sig.certificate = x509
37
+ result = resolver.sign_digest(sig)
38
+ expected = crypt_service.calculate_digest(rsa_algo)
39
+ expect(result).to eq(expected)
40
+ end
41
+
42
+ it 'returns binary (not hex) data' do
43
+ sig = Epics::Signature.new(Epics::Signature::A_VERSION_6, rsa_algo)
44
+ result = resolver.sign_digest(sig)
45
+ expect(result.encoding).to eq(Encoding::BINARY)
46
+ end
47
+ end
48
+
49
+ describe '#confirm_digest' do
50
+ context 'without certificate' do
51
+ it 'returns hex-encoded SHA256 hash of key' do
52
+ sig = Epics::Signature.new(Epics::Signature::A_VERSION_6, rsa_algo)
53
+ result = resolver.confirm_digest(sig)
54
+ expected_binary = crypt_service.calculate_digest(rsa_algo)
55
+ expected_hex = expected_binary.unpack1('H*')
56
+ expect(result).to eq(expected_hex)
57
+ end
58
+ end
59
+
60
+ context 'with certificate' do
61
+ it 'returns hex-encoded SHA256 hash of certificate DER' do
62
+ sig = Epics::Signature.new(Epics::Signature::A_VERSION_6, rsa_algo)
63
+ sig.certificate = x509
64
+ result = resolver.confirm_digest(sig)
65
+ expected_binary = crypt_service.calculate_certificate_fingerprint(x509)
66
+ expected_hex = expected_binary.unpack1('H*')
67
+ expect(result).to eq(expected_hex)
68
+ end
69
+
70
+ it 'uses certificate fingerprint instead of key digest' do
71
+ sig = Epics::Signature.new(Epics::Signature::A_VERSION_6, rsa_algo)
72
+ sig.certificate = x509
73
+
74
+ key_digest_hex = crypt_service.calculate_digest(rsa_algo).unpack1('H*')
75
+ cert_digest_hex = resolver.confirm_digest(sig)
76
+ expect(cert_digest_hex).not_to eq(key_digest_hex)
77
+ end
78
+ end
79
+
80
+ it 'returns a hex string (lowercase, 64 chars for SHA256)' do
81
+ sig = Epics::Signature.new(Epics::Signature::A_VERSION_6, rsa_algo)
82
+ result = resolver.confirm_digest(sig)
83
+ expect(result).to match(/\A[0-9a-f]{64}\z/)
84
+ end
85
+ end
86
+
87
+ describe 'sign_digest vs confirm_digest difference' do
88
+ it 'sign_digest returns binary, confirm_digest returns hex of same value (without cert)' do
89
+ sig = Epics::Signature.new(Epics::Signature::A_VERSION_6, rsa_algo)
90
+ sign_result = resolver.sign_digest(sig)
91
+ confirm_result = resolver.confirm_digest(sig)
92
+ expect(confirm_result).to eq(sign_result.unpack1('H*'))
93
+ end
94
+ end
95
+ end
96
+
97
+ describe Epics::Services::DigestResolver::V3 do
98
+ subject(:resolver) { described_class.new }
99
+
100
+ let(:sig_with_cert) do
101
+ sig = Epics::Signature.new(Epics::Signature::A_VERSION_6, rsa_algo)
102
+ sig.certificate = x509
103
+ sig
104
+ end
105
+
106
+ describe '#sign_digest' do
107
+ it 'returns binary SHA256 hash of certificate DER' do
108
+ result = resolver.sign_digest(sig_with_cert)
109
+ expected = crypt_service.calculate_certificate_fingerprint(x509)
110
+ expect(result).to eq(expected)
111
+ end
112
+
113
+ it 'returns binary data' do
114
+ result = resolver.sign_digest(sig_with_cert)
115
+ expect(result.encoding).to eq(Encoding::BINARY)
116
+ end
117
+
118
+ it 'falls back to key when certificate is nil' do
119
+ sig = Epics::Signature.new(Epics::Signature::A_VERSION_6, rsa_algo)
120
+ result = resolver.sign_digest(sig)
121
+ expected = crypt_service.calculate_digest(rsa_algo, 'sha256')
122
+ expect(result).to eq(expected)
123
+ end
124
+ end
125
+
126
+ describe '#confirm_digest' do
127
+ it 'returns hex-encoded SHA256 hash of certificate DER' do
128
+ result = resolver.confirm_digest(sig_with_cert)
129
+ expected_binary = crypt_service.calculate_certificate_fingerprint(x509)
130
+ expected_hex = expected_binary.unpack1('H*')
131
+ expect(result).to eq(expected_hex)
132
+ end
133
+
134
+ it 'returns a hex string (lowercase, 64 chars for SHA256)' do
135
+ result = resolver.confirm_digest(sig_with_cert)
136
+ expect(result).to match(/\A[0-9a-f]{64}\z/)
137
+ end
138
+
139
+ it 'falls back to key when certificate is nil' do
140
+ sig = Epics::Signature.new(Epics::Signature::A_VERSION_6, rsa_algo)
141
+ result = resolver.confirm_digest(sig)
142
+ expected = crypt_service.calculate_digest(rsa_algo, 'sha256').unpack1('H*')
143
+ expect(result).to eq(expected)
144
+ end
145
+ end
146
+
147
+ describe 'sign_digest vs confirm_digest relationship' do
148
+ it 'confirm_digest is hex encoding of sign_digest' do
149
+ sign_result = resolver.sign_digest(sig_with_cert)
150
+ confirm_result = resolver.confirm_digest(sig_with_cert)
151
+ expect(confirm_result).to eq(sign_result.unpack1('H*'))
152
+ end
153
+ end
154
+
155
+ describe 'V3 uses certificate, not key' do
156
+ it 'produces different digest than V2 sign_digest (key-based)' do
157
+ v2 = Epics::Services::DigestResolver::V2.new
158
+ v2_result = v2.sign_digest(sig_with_cert)
159
+ v3_result = resolver.sign_digest(sig_with_cert)
160
+ expect(v3_result).not_to eq(v2_result)
161
+ end
162
+ end
163
+ end
164
+ end
@@ -0,0 +1,3 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ MIIDGTCCAgGgAwIBAgIBATANBgkqhkiG9w0BAQsFADA/MR0wGwYDVQQDDBR0ZXN0YmFuay5leGFtcGxlLmNvbTERMA8GA1UECgwIVGVzdEJhbmsxCzAJBgNVBAYTAkNIMB4XDTI2MDMxNzIwMzQyMVoXDTI3MDMxNzIwMzQyMVowPzEdMBsGA1UEAwwUdGVzdGJhbmsuZXhhbXBsZS5jb20xETAPBgNVBAoMCFRlc3RCYW5rMQswCQYDVQQGEwJDSDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK8acLKjVLSLfrni2C3Fs2HoQo9s6F3Ftpxt1EueoYlmxnC2z/mltHh2qKl4GZBk5zYSRG3fyyhZoQ061QhEjztp1Rf1jwcXisnSKHwArJZiifAhHsVCRu2sRLnBCb3tZAW97r+rxuI1isv2hHsYXAKqYt4EthbESA7G9O9jFlhAJD+PoCIGHY/btY9GzMOZuSO8xJYDQJ637RsW8GaDo9PmN1qVlelr1pau92mCXbWmxg+5gh56Wjise3OIhgwQElDku+iE57iSGZI4/AIXZ4DkLHtX/+/dZaqh+mXvx/w7GxLPo+02Zdttia/G0pVuv9+t182YtFKUah/ze3b+/V0CAwEAAaMgMB4wDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCBaAwDQYJKoZIhvcNAQELBQADggEBAAn+WRoJmbTbFp3Y2amLj/LTRh8kCAIY0E2pGlSjlQEcC21mBKaaeEhAbOqxVeXY8tTqsn48nGNzdn7c7Y3QSJee9RRxwh7zyZGCPK411g8fmXg3gc/HKOAonw9KlgrOEAPYL3LivwMGrIpVvGUKwvZLMufvhCxWDxm8Fal6PBaOaCj93ulgadqwG+GVUxNY2zwHLdi7tU22u5TKRQ1ZHoQgzcwMZCFXCdC+2ks2tCmiDgD0upoRm79zjCLEZJ4HSiMVVfovMNcB0wqRiqYzhjCuKtaEZ9UygFE1BUacRHP242+7EbhStlH4eoF+ZjkOoY7dd8v3Rs1YNMtZf6Qcj8s=
3
+ -----END CERTIFICATE-----
@@ -1,2 +1,41 @@
1
1
  <?xml version="1.0" encoding="utf-8"?>
2
- <ebicsRequest xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns="urn:org:ebics:H004" Version="H004" Revision="1"><header authenticate="true"><static><HostID>SIZBN001</HostID><Nonce>95149241ead8ae7dbb72cabe966bf0e3</Nonce><Timestamp>2017-10-17T19:56:33Z</Timestamp><PartnerID>EBICS</PartnerID><UserID>EBIX</UserID><Product Language="de">EPICS - a ruby ebics kernel</Product><OrderDetails><OrderType>HAA</OrderType><OrderAttribute>DZHNN</OrderAttribute><StandardOrderParams/></OrderDetails><BankPubKeyDigests><Authentication Version="X002" Algorithm="http://www.w3.org/2001/04/xmlenc#sha256">dFAYe281vj9NB7w+VoWIdfHnjY9hNbZLbHsDOu76QAE=</Authentication><Encryption Version="E002" Algorithm="http://www.w3.org/2001/04/xmlenc#sha256">dFAYe281vj9NB7w+VoWIdfHnjY9hNbZLbHsDOu76QAE=</Encryption></BankPubKeyDigests><SecurityMedium>0000</SecurityMedium></static><mutable><TransactionPhase>Initialisation</TransactionPhase></mutable></header><AuthSignature><ds:SignedInfo><ds:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/><ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/><ds:Reference URI="#xpointer(//*[@authenticate='true'])"><ds:Transforms><ds:Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/></ds:Transforms><ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/><ds:DigestValue/></ds:Reference></ds:SignedInfo><ds:SignatureValue/></AuthSignature><body/></ebicsRequest>
2
+ <ebicsRequest xmlns="urn:org:ebics:H004" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Version="H004" Revision="1" xsi:schemaLocation="urn:org:ebics:H004 http://www.ebics.org/H004/ebics_H004.xsd">
3
+ <header authenticate="true">
4
+ <static>
5
+ <HostID>SIZBN001</HostID>
6
+ <Nonce>95149241ead8ae7dbb72cabe966bf0e3</Nonce>
7
+ <Timestamp>2017-10-17T19:56:33Z</Timestamp>
8
+ <PartnerID>EBICS</PartnerID>
9
+ <UserID>EBIX</UserID>
10
+ <Product Language="de">EPICS - a ruby ebics kernel</Product>
11
+ <OrderDetails>
12
+ <OrderType>HAA</OrderType>
13
+ <OrderAttribute>DZHNN</OrderAttribute>
14
+ <StandardOrderParams/>
15
+ </OrderDetails>
16
+ <BankPubKeyDigests>
17
+ <Authentication Version="X002" Algorithm="http://www.w3.org/2001/04/xmlenc#sha256">dFAYe281vj9NB7w+VoWIdfHnjY9hNbZLbHsDOu76QAE=</Authentication>
18
+ <Encryption Version="E002" Algorithm="http://www.w3.org/2001/04/xmlenc#sha256">dFAYe281vj9NB7w+VoWIdfHnjY9hNbZLbHsDOu76QAE=</Encryption>
19
+ </BankPubKeyDigests>
20
+ <SecurityMedium>0000</SecurityMedium>
21
+ </static>
22
+ <mutable>
23
+ <TransactionPhase>Initialisation</TransactionPhase>
24
+ </mutable>
25
+ </header>
26
+ <AuthSignature>
27
+ <ds:SignedInfo>
28
+ <ds:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
29
+ <ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/>
30
+ <ds:Reference URI="#xpointer(//*[@authenticate='true'])">
31
+ <ds:Transforms>
32
+ <ds:Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
33
+ </ds:Transforms>
34
+ <ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
35
+ <ds:DigestValue>ZtwT2xdGcZNdxc/gPPLgJG++xyaV2Wmj5adAfo2NVBM=</ds:DigestValue>
36
+ </ds:Reference>
37
+ </ds:SignedInfo>
38
+ <ds:SignatureValue>bIExhIWtRJOGvLxs5H3jWD8DNqB/X3X/N3kNecmkJoRPODnZWBx7naAIXuPnR1E90T/gtRVjs8LEMLAsKn6GaMFSgIPKY3rarZy5YZSqHNsGl0/pVXa/tlogjp2z1ug1IBYkAgFJlsBFNaMMkgoTKeASE+zJT5tdq/5HIl4G6YMOkvbaYqdD1npoj3Q3/GcSTFvbURfRZVj+2E+ziUPfJA2e72nzKYHw1tw5NvtJQOeZ6p1OP292hayHAyUcliD5vbgDUx+Cs+TKX7vfw9fVm0njhc6Tbg1H3i7z5Neavo31WnadoFmuGZfXbVSRRckwn3qXb1c7sjfG1E+cGdGUzw==</ds:SignatureValue>
39
+ </AuthSignature>
40
+ <body/>
41
+ </ebicsRequest>
@@ -1,31 +1,34 @@
1
1
  <?xml version="1.0" encoding="utf-8"?>
2
- <ebicsRequest xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns="urn:org:ebics:H004" Version="H004" Revision="1">
3
- <header authenticate="true">
4
- <static>
5
- <HostID>SIZBN001</HostID>
6
- <TransactionID/>
7
- </static>
8
- <mutable>
9
- <TransactionPhase>Receipt</TransactionPhase>
10
- </mutable>
11
- </header>
12
- <AuthSignature>
13
- <ds:SignedInfo>
14
- <ds:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
15
- <ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/>
16
- <ds:Reference URI="#xpointer(//*[@authenticate='true'])">
17
- <ds:Transforms>
18
- <ds:Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
19
- </ds:Transforms>
20
- <ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
21
- <ds:DigestValue/>
22
- </ds:Reference>
23
- </ds:SignedInfo>
24
- <ds:SignatureValue/>
25
- </AuthSignature>
26
- <body>
27
- <TransferReceipt authenticate="true">
28
- <ReceiptCode>0</ReceiptCode>
29
- </TransferReceipt>
30
- </body>
31
- </ebicsRequest>
2
+ <ebicsRequest xmlns="urn:org:ebics:H004" xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
3
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Version="H004" Revision="1"
4
+ xsi:schemaLocation="urn:org:ebics:H004 http://www.ebics.org/H004/ebics_H004.xsd">
5
+ <header authenticate="true">
6
+ <static>
7
+ <HostID>SIZBN001</HostID>
8
+ <TransactionID />
9
+ </static>
10
+ <mutable>
11
+ <TransactionPhase>Receipt</TransactionPhase>
12
+ </mutable>
13
+ </header>
14
+ <AuthSignature>
15
+ <ds:SignedInfo>
16
+ <ds:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
17
+ <ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256" />
18
+ <ds:Reference URI="#xpointer(//*[@authenticate='true'])">
19
+ <ds:Transforms>
20
+ <ds:Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
21
+ </ds:Transforms>
22
+ <ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" />
23
+ <ds:DigestValue>e2cxKqCpCGsFYRixCcMI3+prCnCu6DmSvJ5qxkmPZ64=</ds:DigestValue>
24
+ </ds:Reference>
25
+ </ds:SignedInfo>
26
+ <ds:SignatureValue>
27
+ IpMw+IXeUPrVpH8bmEly96N4Jsi2MMxlKyUcKn1i3kPBSpNKgjbuuXGZ/mVLJykb/fr6kZ599rNgS6EMd3AsptizPdAltUwa2iQKy0wA6EhOs9RHRx0tH6TMg7YyLt4/ckd56YS7Wx5a1lwsoYszIIZehLv7cMj6POIhWecR7KgxICRPkVpr1ULLmXtWhRmHyk4jA/eb3gG4BAE/1gkNt0XMcpaXO/CGHbMAPgHmubFb6ZQPYUBf7cGhoihI1H1VsDzbMnBDUIXJJPgN08dY87tXY896QKJznM0fZMDq2ygWnyeqsme3z9b/8pGd4vZQGg1VdmYvou+CI1cRclWMdQ==</ds:SignatureValue>
28
+ </AuthSignature>
29
+ <body>
30
+ <TransferReceipt authenticate="true">
31
+ <ReceiptCode>0</ReceiptCode>
32
+ </TransferReceipt>
33
+ </body>
34
+ </ebicsRequest>
@@ -0,0 +1,4 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <HAAResponseOrderData xmlns="urn:org:ebics:H004" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:org:ebics:H004 http://www.ebics.org/H004/ebics_orders_H004.xsd">
3
+ <OrderTypes>PTK HPD HTD STA HVD HPB HAA HVT HVU HVZ INI SPR PUB HIA HCA HSA HVE HVS CCS CCT CIP CD1 CDB CDD</OrderTypes>
4
+ </HAAResponseOrderData>
@@ -0,0 +1,38 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <HAAResponseOrderData xmlns="urn:org:ebics:H005" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:org:ebics:H005 http://www.ebics.org/H005/ebics_orders_H005.xsd">
3
+ <Service>
4
+ <ServiceName>OTH</ServiceName>
5
+ <Scope>BIL</Scope>
6
+ <ServiceOption>CH004TPE</ServiceOption>
7
+ <Container containerType="ZIP"/>
8
+ <MsgName>msc</MsgName>
9
+ </Service>
10
+ <Service>
11
+ <ServiceName>STM</ServiceName>
12
+ <Scope>BIL</Scope>
13
+ <ServiceOption>CH004TPE</ServiceOption>
14
+ <Container containerType="ZIP"/>
15
+ <MsgName>pain.001</MsgName>
16
+ </Service>
17
+ <Service>
18
+ <ServiceName>SCT</ServiceName>
19
+ <Scope>BIL</Scope>
20
+ <ServiceOption>CH004TPE</ServiceOption>
21
+ <Container containerType="ZIP"/>
22
+ <MsgName>pain.008</MsgName>
23
+ </Service>
24
+ <Service>
25
+ <ServiceName>CAMT</ServiceName>
26
+ <Scope>BIL</Scope>
27
+ <ServiceOption>CH004TPE</ServiceOption>
28
+ <Container containerType="ZIP"/>
29
+ <MsgName>camt.052</MsgName>
30
+ </Service>
31
+ <Service>
32
+ <ServiceName>CAMT</ServiceName>
33
+ <Scope>BIL</Scope>
34
+ <ServiceOption>CH004TPE</ServiceOption>
35
+ <Container containerType="ZIP"/>
36
+ <MsgName>camt.053</MsgName>
37
+ </Service>
38
+ </HAAResponseOrderData>
@@ -1,2 +1,25 @@
1
1
  <?xml version='1.0' encoding='utf-8'?>
2
- <HIARequestOrderData xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns="urn:org:ebics:H004"><AuthenticationPubKeyInfo><PubKeyValue><ds:RSAKeyValue><ds:Modulus>phfg5Gv/4wrsGtO2mo33UxciC/DSmw0RdbBhC5vVPsqgmvlDgZ1bpsGWwsXOiBU5BxpbCNvtBLS7jR/4tSgNiDrWmJPLM05ygFKzhyh/8Nd2qtZCt/JaQunsSfNpILm+b9h1ZiuQRnCOsvsJq7eUCrqJnU5Lf/AWWE5g9PlaOcU01NRqJaMRwOI4I+5u01L1JdJ968rXAkhglILSww0yuKdo5qT/CkOPA6u4e4izPxvHPGJ56dd61rRfPKvdrvSuu6gEOzolS6M6uerGD6rIMikMhuQf7R1CG5cLCjGQKDDDp2NaqezWA1rD30RxbIYL23q7VLOV0n673vjiDlarXQ==</ds:Modulus><ds:Exponent>AQAB</ds:Exponent></ds:RSAKeyValue></PubKeyValue><AuthenticationVersion>X002</AuthenticationVersion></AuthenticationPubKeyInfo><EncryptionPubKeyInfo><PubKeyValue><ds:RSAKeyValue><ds:Modulus>1rkjZF6T4C6694CmiObpwI98k4ngaqDeBpIQV8mn2/REArEjngwanJJbdN51pCy/Sn10ZitqPss4mPpykcTJyNDxOzdZk12wdzIooTiyyMJoI8N+sTWBWlGvT8ER2ZEHObZJAGWqB6sORjTERPqqsQ8+sUNcSoSXfcnMVrbgpbVS/LsgQwlnq2pmsRq35DkVf+03UhYs3QkptzhaQXGFmbDDb4opTxp1ZgJqzl6H+GDDhFA5+xz1C5Pa4OL2jNOCyuRu60wymH1gc6cOmXvYTKyCSVY+k8/wPdq6rF1ylacTEWFhbi+1ZA8RVJPqQzOe6gXxMXFFoKTen1TtkgXm6Q==</ds:Modulus><ds:Exponent>AQAB</ds:Exponent></ds:RSAKeyValue></PubKeyValue><EncryptionVersion>E002</EncryptionVersion></EncryptionPubKeyInfo><PartnerID>EBICS</PartnerID><UserID>EBIX</UserID></HIARequestOrderData>
2
+ <HIARequestOrderData xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns="urn:org:ebics:H004">
3
+ <AuthenticationPubKeyInfo>
4
+ <PubKeyValue>
5
+ <ds:RSAKeyValue>
6
+ <ds:Modulus>phfg5Gv/4wrsGtO2mo33UxciC/DSmw0RdbBhC5vVPsqgmvlDgZ1bpsGWwsXOiBU5BxpbCNvtBLS7jR/4tSgNiDrWmJPLM05ygFKzhyh/8Nd2qtZCt/JaQunsSfNpILm+b9h1ZiuQRnCOsvsJq7eUCrqJnU5Lf/AWWE5g9PlaOcU01NRqJaMRwOI4I+5u01L1JdJ968rXAkhglILSww0yuKdo5qT/CkOPA6u4e4izPxvHPGJ56dd61rRfPKvdrvSuu6gEOzolS6M6uerGD6rIMikMhuQf7R1CG5cLCjGQKDDDp2NaqezWA1rD30RxbIYL23q7VLOV0n673vjiDlarXQ==</ds:Modulus>
7
+ <ds:Exponent>AQAB</ds:Exponent>
8
+ </ds:RSAKeyValue>
9
+ <TimeStamp>2014-10-10T11:16:00Z</TimeStamp>
10
+ </PubKeyValue>
11
+ <AuthenticationVersion>X002</AuthenticationVersion>
12
+ </AuthenticationPubKeyInfo>
13
+ <EncryptionPubKeyInfo>
14
+ <PubKeyValue>
15
+ <ds:RSAKeyValue>
16
+ <ds:Modulus>1rkjZF6T4C6694CmiObpwI98k4ngaqDeBpIQV8mn2/REArEjngwanJJbdN51pCy/Sn10ZitqPss4mPpykcTJyNDxOzdZk12wdzIooTiyyMJoI8N+sTWBWlGvT8ER2ZEHObZJAGWqB6sORjTERPqqsQ8+sUNcSoSXfcnMVrbgpbVS/LsgQwlnq2pmsRq35DkVf+03UhYs3QkptzhaQXGFmbDDb4opTxp1ZgJqzl6H+GDDhFA5+xz1C5Pa4OL2jNOCyuRu60wymH1gc6cOmXvYTKyCSVY+k8/wPdq6rF1ylacTEWFhbi+1ZA8RVJPqQzOe6gXxMXFFoKTen1TtkgXm6Q==</ds:Modulus>
17
+ <ds:Exponent>AQAB</ds:Exponent>
18
+ </ds:RSAKeyValue>
19
+ <TimeStamp>2014-10-10T11:16:00Z</TimeStamp>
20
+ </PubKeyValue>
21
+ <EncryptionVersion>E002</EncryptionVersion>
22
+ </EncryptionPubKeyInfo>
23
+ <PartnerID>EBICS</PartnerID>
24
+ <UserID>EBIX</UserID>
25
+ </HIARequestOrderData>
@@ -1,5 +1,5 @@
1
1
  <?xml version="1.0" encoding="utf-8"?>
2
- <ebicsNoPubKeyDigestsRequest xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns="urn:org:ebics:H004" Version="H004" Revision="1">
2
+ <ebicsNoPubKeyDigestsRequest xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns="urn:org:ebics:H004" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Version="H004" Revision="1" xsi:schemaLocation="urn:org:ebics:H004 http://www.ebics.org/H004/ebics_H004.xsd">
3
3
  <header authenticate="true">
4
4
  <static>
5
5
  <HostID>HOST</HostID>
@@ -0,0 +1,16 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <HPBResponseOrderData xmlns="urn:org:ebics:H005" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:org:ebics:H005 ebics_orders_H005.xsd">
3
+ <AuthenticationPubKeyInfo>
4
+ <ds:X509Data>
5
+ <ds:X509Certificate>MIIDGTCCAgGgAwIBAgIBATANBgkqhkiG9w0BAQsFADA/MR0wGwYDVQQDDBR0ZXN0YmFuay5leGFtcGxlLmNvbTERMA8GA1UECgwIVGVzdEJhbmsxCzAJBgNVBAYTAkNIMB4XDTI2MDMxNzIwMzQyMVoXDTI3MDMxNzIwMzQyMVowPzEdMBsGA1UEAwwUdGVzdGJhbmsuZXhhbXBsZS5jb20xETAPBgNVBAoMCFRlc3RCYW5rMQswCQYDVQQGEwJDSDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK8acLKjVLSLfrni2C3Fs2HoQo9s6F3Ftpxt1EueoYlmxnC2z/mltHh2qKl4GZBk5zYSRG3fyyhZoQ061QhEjztp1Rf1jwcXisnSKHwArJZiifAhHsVCRu2sRLnBCb3tZAW97r+rxuI1isv2hHsYXAKqYt4EthbESA7G9O9jFlhAJD+PoCIGHY/btY9GzMOZuSO8xJYDQJ637RsW8GaDo9PmN1qVlelr1pau92mCXbWmxg+5gh56Wjise3OIhgwQElDku+iE57iSGZI4/AIXZ4DkLHtX/+/dZaqh+mXvx/w7GxLPo+02Zdttia/G0pVuv9+t182YtFKUah/ze3b+/V0CAwEAAaMgMB4wDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCBaAwDQYJKoZIhvcNAQELBQADggEBAAn+WRoJmbTbFp3Y2amLj/LTRh8kCAIY0E2pGlSjlQEcC21mBKaaeEhAbOqxVeXY8tTqsn48nGNzdn7c7Y3QSJee9RRxwh7zyZGCPK411g8fmXg3gc/HKOAonw9KlgrOEAPYL3LivwMGrIpVvGUKwvZLMufvhCxWDxm8Fal6PBaOaCj93ulgadqwG+GVUxNY2zwHLdi7tU22u5TKRQ1ZHoQgzcwMZCFXCdC+2ks2tCmiDgD0upoRm79zjCLEZJ4HSiMVVfovMNcB0wqRiqYzhjCuKtaEZ9UygFE1BUacRHP242+7EbhStlH4eoF+ZjkOoY7dd8v3Rs1YNMtZf6Qcj8s=</ds:X509Certificate>
6
+ </ds:X509Data>
7
+ <AuthenticationVersion>X002</AuthenticationVersion>
8
+ </AuthenticationPubKeyInfo>
9
+ <EncryptionPubKeyInfo>
10
+ <ds:X509Data>
11
+ <ds:X509Certificate>MIIDGTCCAgGgAwIBAgIBATANBgkqhkiG9w0BAQsFADA/MR0wGwYDVQQDDBR0ZXN0YmFuay5leGFtcGxlLmNvbTERMA8GA1UECgwIVGVzdEJhbmsxCzAJBgNVBAYTAkNIMB4XDTI2MDMxNzIwMzQyMVoXDTI3MDMxNzIwMzQyMVowPzEdMBsGA1UEAwwUdGVzdGJhbmsuZXhhbXBsZS5jb20xETAPBgNVBAoMCFRlc3RCYW5rMQswCQYDVQQGEwJDSDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK8acLKjVLSLfrni2C3Fs2HoQo9s6F3Ftpxt1EueoYlmxnC2z/mltHh2qKl4GZBk5zYSRG3fyyhZoQ061QhEjztp1Rf1jwcXisnSKHwArJZiifAhHsVCRu2sRLnBCb3tZAW97r+rxuI1isv2hHsYXAKqYt4EthbESA7G9O9jFlhAJD+PoCIGHY/btY9GzMOZuSO8xJYDQJ637RsW8GaDo9PmN1qVlelr1pau92mCXbWmxg+5gh56Wjise3OIhgwQElDku+iE57iSGZI4/AIXZ4DkLHtX/+/dZaqh+mXvx/w7GxLPo+02Zdttia/G0pVuv9+t182YtFKUah/ze3b+/V0CAwEAAaMgMB4wDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCBaAwDQYJKoZIhvcNAQELBQADggEBAAn+WRoJmbTbFp3Y2amLj/LTRh8kCAIY0E2pGlSjlQEcC21mBKaaeEhAbOqxVeXY8tTqsn48nGNzdn7c7Y3QSJee9RRxwh7zyZGCPK411g8fmXg3gc/HKOAonw9KlgrOEAPYL3LivwMGrIpVvGUKwvZLMufvhCxWDxm8Fal6PBaOaCj93ulgadqwG+GVUxNY2zwHLdi7tU22u5TKRQ1ZHoQgzcwMZCFXCdC+2ks2tCmiDgD0upoRm79zjCLEZJ4HSiMVVfovMNcB0wqRiqYzhjCuKtaEZ9UygFE1BUacRHP242+7EbhStlH4eoF+ZjkOoY7dd8v3Rs1YNMtZf6Qcj8s=</ds:X509Certificate>
12
+ </ds:X509Data>
13
+ <EncryptionVersion>E002</EncryptionVersion>
14
+ </EncryptionPubKeyInfo>
15
+ <HostID>TESTBANK001</HostID>
16
+ </HPBResponseOrderData>
@@ -0,0 +1,55 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <HTDResponseOrderData xmlns="urn:org:ebics:H005" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:org:ebics:H005 http://www.ebics.org/H005/ebics_orders_H005.xsd">
3
+ <PartnerInfo>
4
+ <AddressInfo>
5
+ <Name>Test Company AG</Name>
6
+ <Country>Schweiz</Country>
7
+ </AddressInfo>
8
+ <BankInfo>
9
+ <HostID>ZKBISOTB</HostID>
10
+ </BankInfo>
11
+ <AccountInfo ID="1">
12
+ <AccountNumber international="true">CH5604835012345678000</AccountNumber>
13
+ <BankCode international="true">ZKBKCHZZ80A</BankCode>
14
+ </AccountInfo>
15
+ </PartnerInfo>
16
+ <UserInfo>
17
+ <UserID Status="1">EBIX</UserID>
18
+ <Name>Test User</Name>
19
+ <Service>
20
+ <ServiceName>OTH</ServiceName>
21
+ <Scope>BIL</Scope>
22
+ <ServiceOption>CH004TPE</ServiceOption>
23
+ <Container containerType="ZIP"/>
24
+ <MsgName>msc</MsgName>
25
+ </Service>
26
+ <Service>
27
+ <ServiceName>STM</ServiceName>
28
+ <Scope>BIL</Scope>
29
+ <ServiceOption>CH004TPE</ServiceOption>
30
+ <Container containerType="ZIP"/>
31
+ <MsgName>pain.001</MsgName>
32
+ </Service>
33
+ <Service>
34
+ <ServiceName>SCT</ServiceName>
35
+ <Scope>BIL</Scope>
36
+ <ServiceOption>CH004TPE</ServiceOption>
37
+ <Container containerType="ZIP"/>
38
+ <MsgName>pain.008</MsgName>
39
+ </Service>
40
+ <Service>
41
+ <ServiceName>CAMT</ServiceName>
42
+ <Scope>BIL</Scope>
43
+ <ServiceOption>CH004TPE</ServiceOption>
44
+ <Container containerType="ZIP"/>
45
+ <MsgName>camt.052</MsgName>
46
+ </Service>
47
+ <Service>
48
+ <ServiceName>CAMT</ServiceName>
49
+ <Scope>BIL</Scope>
50
+ <ServiceOption>CH004TPE</ServiceOption>
51
+ <Container containerType="ZIP"/>
52
+ <MsgName>camt.053</MsgName>
53
+ </Service>
54
+ </UserInfo>
55
+ </HTDResponseOrderData>
@@ -1,24 +1,22 @@
1
1
  <?xml version="1.0" encoding="utf-8"?>
2
- <ebicsUnsecuredRequest Revision="1" Version="H004"
3
- xmlns="urn:org:ebics:H004"
4
- xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
5
- <header authenticate="true">
6
- <static>
7
- <HostID>SIZBN001</HostID>
8
- <PartnerID>EBICS</PartnerID>
9
- <UserID>EBIX</UserID>
10
- <Product Language="de">EPICS - a ruby ebics kernel</Product>
11
- <OrderDetails>
12
- <OrderType>HIA</OrderType>
13
- <OrderAttribute>DZNNN</OrderAttribute>
14
- </OrderDetails>
15
- <SecurityMedium>0000</SecurityMedium>
16
- </static>
17
- <mutable/>
18
- </header>
19
- <body>
20
- <DataTransfer>
21
- <OrderData>eJzNlEuTqkgQhffzKzqcpTHNQ0A0bG8gIILIW6Td8RIQKKCKh/jrx+ients9cze9mtlVnpMnqyLyi1r9uJXFUx9DlFXgZUI845OnGIRVlIHkZdK1lz/YyY/1b6udzFlx08Wo1WEUQ8Fv/adHEqBHEwTLCibLOMhCtNzhODV5t5bRw03btl5i2DAMz8Ps+dGHkTiOY/gCe/REKEt+n6xXXNemMWiz0G8fzzC6YB+PMrhU69X72fWLLl6vIrS0bO6j/u4lj/ShirqiQ99M1ukloaUeowaIpFYny2o2O97CjMcEuxxwKwo2KU/3roGapOwLITkTQY2k04A8Pdsc6c2tDnitbzeqPb9aGNXaiZYJ8FQqhnrA6THZ7u/pmGKsFpFNe+ZbTPHNDiD7otWyWk6DRUqcs860AK+jHinNPD7ysFHAkVYvGHc6iXSyMApfD484oVmN4h+sQZcpeUp3OKESSqQsGBZ6XJ4mhazaw4CP3T6q6MbB+Fw3OKajYiq7G7d+Z0gKzUQRQ0DrYuz7CPZ21zGJqN+rwmYOTBdDSWCgfMjyQ9qZl7lF8BIdqvxVMveCINSk5jfx/cQRUJjh1i2QX1Vy1sxdVXdxwMxn/TUTCh965svLCvu5krf1iLe6Ag8OvrkfzuQ2b7M+8uu36hMqD+ELSF95c9/pX3s4Tq6wX3v/1D8zKoIQjvX/kVwC5tfzlnEonmEWFF9melAP8oLNKZD4jRBvatl02RKQmCVyULyCZPCBogSRRhM1P2I2IPBz1jYGQlRp1GMeOsqoCTf9Hp1zghyiu1xVTjaOB6WSWW2KnNPmVEi9w4oWeRZ3enBWOOnUbBikW1dHtIymQSY7RUcttCvbu4Tg4MIgqQPXxlSUmEMBGrIukdXMaCF3L1N8dkxf0czM6/ae+qYnbctAEAKqqp1bTZwTpbkXzG4qCUK65ejp7U7wtOFTukpeNZ0fO6tj8GEsd0QSMqFeev2rsx95232d5iw2GFHDwC0xFn7oiKdtGmRT4syxlqsYjXnXYybxbgdvu632TgwIp80Tr2T+U3J/svZBpvhG7b/1z9oXLn3YghjKwlrcyLz9mP+3sDqiD8NbYX8VK+wXf//6T/odHps=</OrderData>
22
- </DataTransfer>
23
- </body>
2
+ <ebicsUnsecuredRequest xmlns="urn:org:ebics:H004" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Version="H004" Revision="1" xsi:schemaLocation="urn:org:ebics:H004 http://www.ebics.org/H004/ebics_H004.xsd">
3
+ <header authenticate="true">
4
+ <static>
5
+ <HostID>SIZBN001</HostID>
6
+ <PartnerID>EBICS</PartnerID>
7
+ <UserID>EBIX</UserID>
8
+ <Product Language="de">EPICS - a ruby ebics kernel</Product>
9
+ <OrderDetails>
10
+ <OrderType>HIA</OrderType>
11
+ <OrderAttribute>DZNNN</OrderAttribute>
12
+ </OrderDetails>
13
+ <SecurityMedium>0000</SecurityMedium>
14
+ </static>
15
+ <mutable/>
16
+ </header>
17
+ <body>
18
+ <DataTransfer>
19
+ <OrderData>eJzNlEuTqkgQhffzKzqcpTHNQ0A0bG8gIILIW6Td8RIQKKCKh/jrx+ients9cze9mtlVnpMnqyLyi1r9uJXFUx9DlFXgZUI845OnGIRVlIHkZdK1lz/YyY/1b6udzFlx08Wo1WEUQ8Fv/adHEqBHEwTLCibLOMhCtNzhODV5t5bRw03btl5i2DAMz8Ps+dGHkTiOY/gCe/REKEt+n6xXXNemMWiz0G8fzzC6YB+PMrhU69X72fWLLl6vIrS0bO6j/u4lj/ShirqiQ99M1ukloaUeowaIpFYny2o2O97CjMcEuxxwKwo2KU/3roGapOwLITkTQY2k04A8Pdsc6c2tDnitbzeqPb9aGNXaiZYJ8FQqhnrA6THZ7u/pmGKsFpFNe+ZbTPHNDiD7otWyWk6DRUqcs860AK+jHinNPD7ysFHAkVYvGHc6iXSyMApfD484oVmN4h+sQZcpeUp3OKESSqQsGBZ6XJ4mhazaw4CP3T6q6MbB+Fw3OKajYiq7G7d+Z0gKzUQRQ0DrYuz7CPZ21zGJqN+rwmYOTBdDSWCgfMjyQ9qZl7lF8BIdqvxVMveCINSk5jfx/cQRUJjh1i2QX1Vy1sxdVXdxwMxn/TUTCh965svLCvu5krf1iLe6Ag8OvrkfzuQ2b7M+8uu36hMqD+ELSF95c9/pX3s4Tq6wX3v/1D8zKoIQjvX/kVwC5tfzlnEonmEWFF9melAP8oLNKZD4jRBvatl02RKQmCVyULyCZPCBogSRRhM1P2I2IPBz1jYGQlRp1GMeOsqoCTf9Hp1zghyiu1xVTjaOB6WSWW2KnNPmVEi9w4oWeRZ3enBWOOnUbBikW1dHtIymQSY7RUcttCvbu4Tg4MIgqQPXxlSUmEMBGrIukdXMaCF3L1N8dkxf0czM6/ae+qYnbctAEAKqqp1bTZwTpbkXzG4qCUK65ejp7U7wtOFTukpeNZ0fO6tj8GEsd0QSMqFeev2rsx95232d5iw2GFHDwC0xFn7oiKdtGmRT4syxlqsYjXnXYybxbgdvu632TgwIp80Tr2T+U3J/svZBpvhG7b/1z9oXLn3YghjKwlrcyLz9mP+3sDqiD8NbYX8VK+wXf//6T/odHps=</OrderData>
20
+ </DataTransfer>
21
+ </body>
24
22
  </ebicsUnsecuredRequest>
@@ -1,7 +1,5 @@
1
1
  <?xml version="1.0" encoding="utf-8"?>
2
- <ebicsUnsecuredRequest Revision="1" Version="H004"
3
- xmlns="urn:org:ebics:H004"
4
- xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
2
+ <ebicsUnsecuredRequest xmlns="urn:org:ebics:H004" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Version="H004" Revision="1" xsi:schemaLocation="urn:org:ebics:H004 http://www.ebics.org/H004/ebics_H004.xsd">
5
3
  <header authenticate="true">
6
4
  <static>
7
5
  <HostID>SIZBN001</HostID>
@@ -1,2 +1,22 @@
1
1
  <?xml version="1.0" encoding="utf-8"?>
2
- <ebicsUnsecuredRequest xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns="urn:org:ebics:H004" Version="H004" Revision="1"><header authenticate="true"><static><HostID>SIZBN001</HostID><PartnerID>EBICS</PartnerID><UserID>EBIX</UserID><Product Language="de">EPICS - a ruby ebics kernel</Product><OrderDetails><OrderType>HIA</OrderType><OrderAttribute>DZNNN</OrderAttribute></OrderDetails><SecurityMedium>0000</SecurityMedium></static><mutable/></header><body><DataTransfer><OrderData>eJytlEuTokgUhff9KyqcpTGVgECpYdmBgAgib5Fyx0tAIIFMHuKvH6dquqdqplcTs8t7zs0bGfd8kavvt7J46mOEswq+TshnYvIUw7CKMpi8Trr28vt88n39bbWTOStuuhi3OopiJPit//S4CfEywq+TtG3rJQDDMDwPs+cKJYAiCAIQC/DoiXCW/Db56H6MRHD5aFjGQRbi5Y4g6Ml6xXVtGsM2C/328QyjC/bxKMNLtV59nF2/6OL1KsJLy+a+1Icq6ooOr+v0kjBSD+gBYanVqbKazY63MOOBYJcDYUXBJuWZ3jVwk5R9ISRnMqixdBqwp2ebI7O51QGv9e1GtV+uFqBbO9EyAZ1KxVAPBDMm2/09HVMw1yKqac98CxTf7CC2L1otq+U0WKTkOetMC/I67rHSvMRHHjUKPDLqBXCnk8gkC6Pw9fBIkJrVKP7BGnSZlqdMR5AqqUTKgp0jj8vTpJBVexiIsdtHFdM4gM91g2M7Oqazu3Hrd4akMGwUsSSyLsa+j1Bvdx2biPq9Kmz2wHYxkgQWyYcsP6SdeXmxSF5iQpW/SuZeEISa0vwmvp84EgkzwroF8ptKzZoXV9VdArIvs/6aCYWPPPP1dQU+LfnPhYu3uoKPrNacyW3e3Z/Ke/UlIPAlvq8pux/MrT2CoFbg194/9c9kiDBEY/1feSFRfj1vWYfmWXZB82WmB/UgL+Y5DRO/EeJNLZvuvIQUsEQOiVeYDD5UlCDSGLLmR2BDkjhnbWNgTJdGPeaho4yacNPv0TknqSG6y1XlZON4UCp5rk2xc9qcCql35qJFncWdHpwVTjo1Gxbr1tURLaNpsDmf4qMW2pXtXUJ4cFGQ1IFrAxUn5lDAhqpLbDUzRsjdy5SYHdM3PDPzur2nvulJ2zIQhICuaudWk+dEae4Fu5tKgpBuOWZ6u5M8Y/i0rlJXTefHzupYYhjLHZmEbKiXXv/m7Efedt+m+RwMRtSwaEuOhR864mmbBtmUPHNzy1WMxrzrMZt4t4O33VZ7J4ak0+aJV7L/My9/J/yDB/GdlX/rn7UvNPiohTGShbW4kXn7Mf+nsDriH4a3An8VK/CLf2797Q98eMYK</OrderData></DataTransfer></body></ebicsUnsecuredRequest>
2
+ <ebicsUnsecuredRequest xmlns="urn:org:ebics:H004" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Version="H004" Revision="1" xsi:schemaLocation="urn:org:ebics:H004 http://www.ebics.org/H004/ebics_H004.xsd">
3
+ <header authenticate="true">
4
+ <static>
5
+ <HostID>SIZBN001</HostID>
6
+ <PartnerID>EBICS</PartnerID>
7
+ <UserID>EBIX</UserID>
8
+ <Product Language="de">EPICS - a ruby ebics kernel</Product>
9
+ <OrderDetails>
10
+ <OrderType>HIA</OrderType>
11
+ <OrderAttribute>DZNNN</OrderAttribute>
12
+ </OrderDetails>
13
+ <SecurityMedium>0000</SecurityMedium>
14
+ </static>
15
+ <mutable/>
16
+ </header>
17
+ <body>
18
+ <DataTransfer>
19
+ <OrderData>eJzNlEtzqkgYhvf5FanM0pp0NwJRi3gKARVEuaqEHTcBudNcxF8/Jk7OmTknM6tZTFVv+n3eqq+qv6ea+XbJ0scuqHFc5K9P6Bk+fZs/MGuR1YOqDXCj1H5Q807jPN6KOX59aut8VtThLHBjD8/WEJJPdzTzbzRqmnIGQN/3z/34+dYDBIQQwCm4dXwch789zR8eHxm2baIgb2LPaW6D1dbdBIOYn4p3eMP34OCkbXBPbpmPZ7rB/hzfwbbw27TF8zI6hdSqA2Rf41WjEFkxHu8vXswB3sh6qPvuIuKo7qDiKsy6lA9t5JZ4deyxpcSLPbW4lC6365qFbLycdUA2RriL+fqYSaq8hdQQLjfXaIjAZOcTVWNzDZAcrc2xcdqVopyN3GmE7LjV9JxTcIel6iXYc3Ul5XtKPgH2eBSocKqmjuLtIdrpleRs9V4RSXFEtRDJSPKlKT2pLTaJwlSUjb6HQ7vxC6oyAZcoKku3ZEDGV/XSrdWVRNG+T6NaP6mbzq87o23pUFCuRWrQW7oN6hVP1+I2TrZRq51edMStKE/mzittw/N8SeycKrgeWVTzY6hfXPFNJsbVy0FWDjCnX8bdOeZTp7a011cG/OWR//bywqUs8tsm56zGLj5q35PPxYGvN8eYcRYYjZOVcwIi8ncEb8dEaIboGYQ2A37wuxTgFyt+0uhw13huQUgw4Gv2Lh/4N/sYIffqofxPtUR1craXtElyND0luSxW3LIXp5OEzEOn4oNFKWqHSZYTQBfYWjjnYe/kkuT6OwqV3ACMHEE7bioVYzJTyyHxTGnY8Rfl6tsJInr/KhaFGQ/DVirEyW6EzePimK46cyLohC2sFdeW2NWxWtBY0c+moKtVhbXJCO93nlEY1snLt4faDUv3YAAZh1qf5hVRZlivxhSfHE4jON5Hb3isJWVzjRzNWi0zl+ddsijNS4nsUKquKb0erXg+WrLU6HJFHKU6pCIT553CDa3e0rAfsjUKPdpTMqt7MzcDZxzeRskE9Kpf0fUSDanjmcJxGbnxCNnsRD9IaqVdlYAOrcvWWi6LjRnkyGyS0Mro/7GWPxT61E74UPLX/EPHfzKOUZ26yYNa5OfCQuSM26jvwTve409mMeDPywMDvvi85w9/AJ4T50Y=</OrderData>
20
+ </DataTransfer>
21
+ </body>
22
+ </ebicsUnsecuredRequest>
@@ -1,2 +1,22 @@
1
1
  <?xml version="1.0" encoding="utf-8"?>
2
- <ebicsUnsecuredRequest xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns="urn:org:ebics:H004" Version="H004" Revision="1"><header authenticate="true"><static><HostID>SIZBN001</HostID><PartnerID>EBICS</PartnerID><UserID>EBIX</UserID><Product Language="de">EPICS - a ruby ebics kernel</Product><OrderDetails><OrderType>INI</OrderType><OrderAttribute>DZNNN</OrderAttribute></OrderDetails><SecurityMedium>0000</SecurityMedium></static><mutable/></header><body><DataTransfer><OrderData>eJxlUltzmkAUfs+vyNDHTrOLogEHyXBTLlIhJIJ5g+yKiC6wLKD59bVJa2Mzcx72u5yzM+d88sPxsL/tMG3ykkw5/g5yt5i8lign2ZRr2eaHyD0oN3KYZyRhLcV+m7r4tKQIUyNhye25nTQT1Ey5LWPVBIC+7+/64V1JMzCAEAIogbMHNXn2jftwX1lxmr827+4QQp5T/v/JJptSkT/eq2TfYkVGzeQxVK+wV6J23zYKL4zK+xcRx6SijB0X2bOOJN8VE9dpk4UzGkJixbojuvny3vfaA3JWCWqWaWrYVixtX+kqlk7RMxUal9Vg92aecK7Rx2p2jOfMdgeFlgqiVSWbyKwDPk1SoOYCWEWG0FjrQO+1SHTtU+MSe109BmveIFbw3RrGm9k21MhuNaeiDUlqZPpAcLW2K2pp5utiGYKsCMiBui+jAUW7RRQO62GBmB503qnohTnsu5/B3NmHIDp6ehFCuoEOtHf9Wg2Pez7dC5Iz6LpuEda9wVTHnyWR3RbQs6zMHI8y4sMtP17WkPd3nuq3R9WqtvWCZJ1HwqjAawOxkm6kHVbNAzUXaI3sGaBvFq2dfjqVwacl/164eaxKgglT1EDV3tUL846uDvSUH3DIkkOlDCAv/ODhuZ54fsKPJxC+yOCfLoOrS1+ysPoIqKJCOJbBF/oTdZWahDKCqW0opmbr4Xn4hZCfm79CLIM/4MuYS8yVm1/X5hKV</OrderData></DataTransfer></body></ebicsUnsecuredRequest>
2
+ <ebicsUnsecuredRequest xmlns="urn:org:ebics:H004" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Version="H004" Revision="1" xsi:schemaLocation="urn:org:ebics:H004 http://www.ebics.org/H004/ebics_H004.xsd">
3
+ <header authenticate="true">
4
+ <static>
5
+ <HostID>SIZBN001</HostID>
6
+ <PartnerID>EBICS</PartnerID>
7
+ <UserID>EBIX</UserID>
8
+ <Product Language="de">EPICS - a ruby ebics kernel</Product>
9
+ <OrderDetails>
10
+ <OrderType>INI</OrderType>
11
+ <OrderAttribute>DZNNN</OrderAttribute>
12
+ </OrderDetails>
13
+ <SecurityMedium>0000</SecurityMedium>
14
+ </static>
15
+ <mutable/>
16
+ </header>
17
+ <body>
18
+ <DataTransfer>
19
+ <OrderData>eJx1k1tzokAQhd/9FZb7uLWZQdGAhaS4KReJkEkE8wYBEdEBhuFifv2auEk2yW5Vv8x3TnVXdZ8Rbrrjod/EpEpzPBswV3BwI/YElCY4oDWJnTq04tOKRDFRAxr0z25czQY7SospAG3bXsVh+lRd5SQBCEJmcHFMo8+mdvTqGEIIAeTB2RNVafJjIPb6/a/DDLzNX/hZuYB1cKjjCzmzqJreIekrvgh2HtWHuhIZdpxfP3KxjwtCabdMHpSIdywusMw6WJrjEcS6r5icla6uHbs+RuY6iKpVGKqG7vO7J7L2+ZP3QNjKoiXYP2unOJXJXTHv/AU1rGEmhyynF8HW00qXCYMQSCkL1p7KVvrGVVrZ4yzjVFnY2BR37oZRse7+1Ef+dr5DMt6vF4QzIA7VRBmyllw3WcnPHYXLEUgyFx+J9Tgekmi/9NCoHGURVdzGPmUtu4Btc+suzAMCXmcrGYJkC01o7NuNhLoDEx5Y3hw2TbNEZatSyXTmgWfUGbR1PdEm4wQ7cMdMViVknL0tOXUn6cWuXOKksTHysnijRjQnW34fS9qRaMtoExlzQJ51UprtbCaAv5b8afNaV+Q4xlSUXEl+tb2Tt8OBf19OuE+PMaLBsRCHkGF/MfBc9wwzZSZTCB8F8KFfQgG+peIjQetLkEUJwokAvuGXtIH/xE1wAkJxTAxV1GRDQec57+BFfqjeNF8Afx69b93ef4rY+w2ZIxQ7</OrderData>
20
+ </DataTransfer>
21
+ </body>
22
+ </ebicsUnsecuredRequest>