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
@@ -1,335 +0,0 @@
1
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
2
- <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
3
- <head>
4
- <meta http-equiv="content-type" content="text/html; charset=utf-8">
5
- <meta charset="UTF-8" />
6
- <title>EBICS ini</title>
7
- <style>
8
- code {
9
- font-size: 0.6rem;
10
- overflow-wrap: break-word;
11
- }
12
- .code {
13
- border-style: solid;
14
- border-width: 1px;
15
- padding: 8px;
16
- background-color: azure;
17
- }
18
- .strong {
19
- font-weight: bold;
20
- }
21
- h2 {
22
- text-align: center;
23
- }
24
- td {
25
- min-width: 150px;
26
- }
27
- table {
28
- display: flex;
29
- justify-content: center;
30
- }
31
- .column {
32
- height: 100px;
33
- }
34
- </style>
35
- </head>
36
- <body>
37
- <div>
38
- <h2><%= t('initialization_letter.a') %></h2>
39
- <table>
40
- <tr>
41
- <td>
42
- <div class="column">
43
- <table>
44
- <tr>
45
- <td class="strong">
46
- <%= t('date') %> :
47
- </td>
48
- <td>
49
- <%= Date.today.strftime('%d.%m.%Y') %>
50
- </td>
51
- </tr>
52
- <tr>
53
- <td class="strong">
54
- <%= t('time') %> :
55
- </td>
56
- <td>
57
- <%= Time.now.strftime('%H:%M:%S') %>
58
- </td>
59
- </tr>
60
- <tr>
61
- <td class="strong">
62
- <%= t('recipient') %> :
63
- </td>
64
- <td>
65
- <%= bankname %>
66
- </td>
67
- </tr>
68
- </table>
69
- </div>
70
- </td>
71
- <td>
72
- <div class="column">
73
- <table>
74
- <tr>
75
- <td class="strong">
76
- Host-ID :
77
- </td>
78
- <td>
79
- <%= host_id %>
80
- </td>
81
- </tr>
82
- <tr>
83
- <td class="strong">
84
- User-ID :
85
- </td>
86
- <td>
87
- <%= user_id %>
88
- </td>
89
- </tr>
90
- <tr>
91
- <td class="strong">
92
- Partner-ID :
93
- </td>
94
- <td>
95
- <%= partner_id %>
96
- </td>
97
- </tr>
98
- <tr>
99
- <td class="strong">
100
- <%= t('version') %> :
101
- </td>
102
- <td>
103
- A006
104
- </td>
105
- </tr>
106
- </table>
107
- </div>
108
- </td>
109
- </tr>
110
- </table>
111
- <p><%= t('certificate') %> :</p>
112
- <pre class="code"><code><%= @client.x_509_certificates_content[:a] %></code></pre>
113
- <p><%= t('hash') %> (SHA-256) :</p>
114
- <p class="code"><code><%= x_509_certificate_a_hash.scan(/../).join(":") %></code></p>
115
- <p><%= t('confirmation') %></p>
116
- <br/>
117
- <br/>
118
- <br/>
119
- <br/>
120
- <table>
121
- <tr>
122
- <td>
123
- _________________________
124
- </td>
125
- <td>
126
- _________________________
127
- </td>
128
- <td>
129
- _________________________
130
- </td>
131
- </tr>
132
- <tr>
133
- <td>
134
- <%= t('issued_in') %>
135
- </td>
136
- <td>
137
- <%= t('name') %>
138
- </td>
139
- <td>
140
- <%= t('signature') %>
141
- </td>
142
- </tr>
143
- </table>
144
- </div>
145
- <div style="page-break-after:always"></div>
146
- <div>
147
- <h2><%= t('initialization_letter.x') %></h2>
148
- <table>
149
- <tr>
150
- <td>
151
- <div class="column">
152
- <table>
153
- <tr>
154
- <td class="strong">
155
- <%= t('date') %> :
156
- </td>
157
- <td>
158
- <%= Date.today.strftime('%d.%m.%Y') %>
159
- </td>
160
- </tr>
161
- <tr>
162
- <td class="strong">
163
- <%= t('time') %> :
164
- </td>
165
- <td>
166
- <%= Time.now.strftime('%H:%M:%S') %>
167
- </td>
168
- </tr>
169
- <tr>
170
- <td class="strong">
171
- <%= t('recipient') %> :
172
- </td>
173
- <td>
174
- <%= bankname %>
175
- </td>
176
- </tr>
177
- </table>
178
- </div>
179
- </td>
180
- <td>
181
- <div class="column">
182
- <table>
183
- <tr>
184
- <td class="strong">
185
- Host-ID :
186
- </td>
187
- <td>
188
- <%= host_id %>
189
- </td>
190
- </tr>
191
- <tr>
192
- <td class="strong">
193
- User-ID :
194
- </td>
195
- <td>
196
- <%= user_id %>
197
- </td>
198
- </tr>
199
- <tr>
200
- <td class="strong">
201
- Partner-ID :
202
- </td>
203
- <td>
204
- <%= partner_id %>
205
- </td>
206
- </tr>
207
- <tr>
208
- <td class="strong">
209
- <%= t('version') %> :
210
- </td>
211
- <td>
212
- X002
213
- </td>
214
- </tr>
215
- </table>
216
- </div>
217
- </td>
218
- </tr>
219
- </table>
220
- <p><%= t('certificate') %> :</p>
221
- <pre class="code"><code><%= @client.x_509_certificates_content[:x] %></code></pre>
222
- <p><%= t('hash') %> (SHA-256) :</p>
223
- <p class="code"><code><%= x_509_certificate_x_hash.scan(/../).join(":") %></code></p>
224
- </div>
225
- <div style="page-break-after:always"></div>
226
- <div>
227
- <h2><%= t('initialization_letter.e') %></h2>
228
- <table>
229
- <tr>
230
- <td>
231
- <div class="column">
232
- <table>
233
- <tr>
234
- <td class="strong">
235
- <%= t('date') %> :
236
- </td>
237
- <td>
238
- <%= Date.today.strftime('%d.%m.%Y') %>
239
- </td>
240
- </tr>
241
- <tr>
242
- <td class="strong">
243
- <%= t('time') %> :
244
- </td>
245
- <td>
246
- <%= Time.now.strftime('%H:%M:%S') %>
247
- </td>
248
- </tr>
249
- <tr>
250
- <td class="strong">
251
- <%= t('recipient') %> :
252
- </td>
253
- <td>
254
- <%= bankname %>
255
- </td>
256
- </tr>
257
- </table>
258
- </div>
259
- </td>
260
- <td>
261
- <div class="column">
262
- <table>
263
- <tr>
264
- <td class="strong">
265
- Host-ID :
266
- </td>
267
- <td>
268
- <%= host_id %>
269
- </td>
270
- </tr>
271
- <tr>
272
- <td class="strong">
273
- User-ID :
274
- </td>
275
- <td>
276
- <%= user_id %>
277
- </td>
278
- </tr>
279
- <tr>
280
- <td class="strong">
281
- Partner-ID :
282
- </td>
283
- <td>
284
- <%= partner_id %>
285
- </td>
286
- </tr>
287
- <tr>
288
- <td class="strong">
289
- <%= t('version') %> :
290
- </td>
291
- <td>
292
- E002
293
- </td>
294
- </tr>
295
- </table>
296
- </div>
297
- </td>
298
- </tr>
299
- </table>
300
- <p><%= t('certificate') %> :</p>
301
- <pre class="code"><code><%= @client.x_509_certificates_content[:e] %></code></pre>
302
- <p><%= t('hash') %> (SHA-256) :</p>
303
- <p class="code"><code><%= x_509_certificate_e_hash.scan(/../).join(":") %></code></p>
304
- <p><%= t('confirmation') %></p>
305
- <br/>
306
- <br/>
307
- <br/>
308
- <br/>
309
- <table>
310
- <tr>
311
- <td>
312
- _________________________
313
- </td>
314
- <td>
315
- _________________________
316
- </td>
317
- <td>
318
- _________________________
319
- </td>
320
- </tr>
321
- <tr>
322
- <td>
323
- <%= t('issued_in') %>
324
- </td>
325
- <td>
326
- <%= t('name') %>
327
- </td>
328
- <td>
329
- <%= t('signature') %>
330
- </td>
331
- </tr>
332
- </table>
333
- </div>
334
- </body>
335
- </html>
@@ -1,58 +0,0 @@
1
- RSpec.describe Epics::GenericUploadRequest do
2
- 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') }
3
- let(:document) { "\x01" * 12 }
4
- subject { described_class.new(client, document) }
5
-
6
- describe '#pad' do
7
-
8
- it 'will complete the block to the next 16byte' do
9
- expect(subject.pad("\x01" * 13).size).to eq(16)
10
- end
11
-
12
- it 'will pad a complete block if the size is a multiple of 16' do
13
- expect(subject.pad("\x01" * 16).size).to eq(32)
14
- end
15
-
16
- it 'will set the last byte to the padding length' do
17
- expect(subject.pad("\x01" * 13)[-1]).to eq([3].pack("C*"))
18
- end
19
- end
20
-
21
- describe '#signature_value' do
22
- before { allow(OpenSSL::Random).to receive(:random_bytes).with(16).and_return("\x01" * 16) } # fake random_key requires a 16byte lenght but is not used in this test
23
- before { allow(OpenSSL::Random).to receive(:random_bytes).with(32).and_return(Base64.strict_decode64("7wtROfiX4tyN60cygJUSsHkhzxX1RVJa8vGNYnflvKc=")) } # digest requires 32 bytes
24
-
25
- it 'will be the signed document' do
26
- key = subject.client.a.key
27
-
28
- verification_result = key.verify_pss(
29
- 'SHA256',
30
- Base64.decode64(subject.signature_value),
31
- OpenSSL::Digest::SHA256.new.digest(document),
32
- salt_length: :digest,
33
- mgf1_hash: 'SHA256',
34
- )
35
-
36
- expect(verification_result).to eq(true)
37
- end
38
- end
39
-
40
- describe '#order_signature' do
41
- before { allow(subject).to receive(:signature_value).and_return("FOOBAR") }
42
- let(:signature) { Nokogiri::XML(subject.order_signature) }
43
-
44
- it 'contains the untouched signature_value ' do
45
- expect(signature.at_xpath('//xmlns:SignatureValue').text).to eq("FOOBAR")
46
- end
47
-
48
- end
49
-
50
- describe '#encrypted_order_data' do
51
- it 'returns the same data every time' do
52
- data_1 = subject.encrypted_order_data
53
- data_2 = subject.encrypted_order_data
54
-
55
- expect(data_1).to eq(data_2)
56
- end
57
- end
58
- end
data/spec/hpb_spec.rb DELETED
@@ -1,15 +0,0 @@
1
- RSpec.describe Epics::HPB do
2
- 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') }
3
- describe '#to_xml' do
4
- subject { Nokogiri::XML.parse(described_class.new(client).to_xml) }
5
-
6
- specify do
7
- expect(subject.xpath("//xmlns:Timestamp").first.content).to_not be_nil
8
- expect(subject.xpath("//xmlns:Nonce").first.content).to_not be_nil
9
- expect(subject.xpath("//xmlns:HostID").first.content).to eq("SIZBN001")
10
- expect(subject.xpath("//xmlns:UserID").first.content).to eq("EBIX")
11
- expect(subject.xpath("//xmlns:PartnerID").first.content).to eq("EBICS")
12
- end
13
- end
14
-
15
- end
data/spec/signer_spec.rb DELETED
@@ -1,34 +0,0 @@
1
- RSpec.describe Epics::Signer do
2
- 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') }
3
- let(:hpb) { Epics::HPB.new(client) }
4
-
5
- before do
6
- allow(hpb).to receive(:nonce) { "014a82626a51ee1cab547bbaf18a13a0" }
7
- allow(hpb).to receive(:timestamp) { "2014-09-09T09:33:12Z" }
8
- subject.digest!
9
- subject.sign!
10
- end
11
-
12
- subject { described_class.new(client, hpb.to_xml) }
13
-
14
- describe '#digest!' do
15
- it 'creates a digest of the *[authorized=true] nodes' do
16
- expect(subject.digest_node.content).to eq("iXchWJ3xMy508YBhzx0Fn9cYNyyAiS+X8CB8zb7tyfM=")
17
- end
18
-
19
- it 'bar' do
20
- expect(Epics::Response.new(client, subject.doc.to_xml(save_with: 32)).digest_valid?).to be(true)
21
- end
22
- end
23
-
24
- describe '#sign!' do
25
- it 'signs the complete ds:SignedInfo node' do
26
- expect(subject.doc.xpath("//ds:SignatureValue").first.content).to eq("o6G7zeU6IhEkQ51Mp5/aIhPcYiZAG1rERxFad+rVdbRCYJGUn6/BNath1cdTgoHQ+ZWn9+Y6IgFsKUYFp8QHrhYBJNhd38fi5wj2Eqv+J4nsfmSD9x6YFa8Q13cJ9/CakHp/C59bgFSJj77BzRFUPnW1Y1NuHj8n1OJ3iFTyF1vF6H6oRKHoE4cbK4jhD3f6udRvGglhW5J+TUFBM+2aE8njpzBZFjyQlct+5XUx3o+1GvaMUk5riH5sCQ95PAKuGTXFu0OLZvECDMA3kOia/l3VF09QUGsjxYF0jUn5WG6TnLy8+Odrh9tUgV9bS/swSeQ41Cah4Ehb0qTYFZoJ+w==")
27
- end
28
-
29
- it 'can be verified with the same key' do
30
- expect(client.x.key.verify(OpenSSL::Digest::SHA256.new, Base64.decode64(subject.doc.xpath("//ds:SignatureValue").first.content), subject.signature_node.canonicalize)).to be(true)
31
- end
32
- end
33
-
34
- end
File without changes