epics 2.11.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.
- checksums.yaml +4 -4
- data/.gitignore +2 -1
- data/.semaphore/semaphore.yml +17 -8
- data/CHANGELOG.md +93 -0
- data/EBICS_REFERENCES.md +169 -0
- data/README.md +219 -50
- data/lib/epics/azv.rb +3 -10
- data/lib/epics/b2b.rb +3 -10
- data/lib/epics/bka.rb +3 -14
- data/lib/epics/builders/body_builder/base.rb +26 -0
- data/lib/epics/builders/body_builder/v2.rb +9 -0
- data/lib/epics/builders/body_builder/v3.rb +9 -0
- data/lib/epics/builders/body_builder.rb +6 -0
- data/lib/epics/builders/data_encryption_info_builder.rb +29 -0
- data/lib/epics/builders/data_transfer_builder/base.rb +52 -0
- data/lib/epics/builders/data_transfer_builder/v2.rb +9 -0
- data/lib/epics/builders/data_transfer_builder/v3.rb +12 -0
- data/lib/epics/builders/data_transfer_builder.rb +6 -0
- data/lib/epics/builders/header_builder/base.rb +26 -0
- data/lib/epics/builders/header_builder/v2.rb +9 -0
- data/lib/epics/builders/header_builder/v3.rb +9 -0
- data/lib/epics/builders/header_builder.rb +6 -0
- data/lib/epics/builders/mutable_builder.rb +28 -0
- data/lib/epics/builders/order_details_builder/base.rb +100 -0
- data/lib/epics/builders/order_details_builder/v2.rb +21 -0
- data/lib/epics/builders/order_details_builder/v3.rb +51 -0
- data/lib/epics/builders/order_details_builder.rb +10 -0
- data/lib/epics/builders/request_builder.rb +25 -0
- data/lib/epics/builders/static_builder/base.rb +75 -0
- data/lib/epics/builders/static_builder/v2.rb +9 -0
- data/lib/epics/builders/static_builder/v3.rb +9 -0
- data/lib/epics/builders/static_builder.rb +9 -0
- data/lib/epics/builders/transfer_receipt_builder.rb +19 -0
- data/lib/epics/builders/xml_builder/base.rb +92 -0
- data/lib/epics/builders/xml_builder/v24.rb +31 -0
- data/lib/epics/builders/xml_builder/v25.rb +31 -0
- data/lib/epics/builders/xml_builder/v3.rb +31 -0
- data/lib/epics/builders/xml_builder.rb +7 -0
- data/lib/epics/builders.rb +13 -0
- data/lib/epics/c2s.rb +3 -10
- data/lib/epics/c52.rb +2 -14
- data/lib/epics/c53.rb +2 -14
- data/lib/epics/c54.rb +2 -14
- data/lib/epics/c5n.rb +3 -14
- data/lib/epics/ccs.rb +3 -10
- data/lib/epics/cct.rb +3 -10
- data/lib/epics/cd1.rb +3 -10
- data/lib/epics/cdb.rb +3 -10
- data/lib/epics/cdd.rb +3 -10
- data/lib/epics/cds.rb +3 -10
- data/lib/epics/cdz.rb +3 -14
- data/lib/epics/cip.rb +3 -10
- data/lib/epics/client.rb +489 -125
- data/lib/epics/crypt/aes.rb +56 -0
- data/lib/epics/crypt/x_509.rb +52 -0
- data/lib/epics/crypt.rb +5 -0
- data/lib/epics/crz.rb +3 -14
- data/lib/epics/factories/crypt/aes_factory.rb +5 -0
- data/lib/epics/factories/crypt.rb +4 -0
- data/lib/epics/factories/request_factory/base.rb +236 -0
- data/lib/epics/factories/request_factory/v2.rb +194 -0
- data/lib/epics/factories/request_factory/v24.rb +32 -0
- data/lib/epics/factories/request_factory/v25.rb +31 -0
- data/lib/epics/factories/request_factory/v3.rb +305 -0
- data/lib/epics/factories/request_factory.rb +8 -0
- data/lib/epics/factories.rb +5 -0
- data/lib/epics/fdl.rb +3 -18
- data/lib/epics/ful.rb +3 -15
- data/lib/epics/generic_request.rb +31 -92
- data/lib/epics/generic_upload_request.rb +14 -67
- data/lib/epics/haa.rb +3 -9
- data/lib/epics/hac.rb +3 -14
- data/lib/epics/handlers/auth_signature_handler.rb +102 -0
- data/lib/epics/handlers/order_data_handler/base.rb +98 -0
- data/lib/epics/handlers/order_data_handler/v2.rb +39 -0
- data/lib/epics/handlers/order_data_handler/v24.rb +11 -0
- data/lib/epics/handlers/order_data_handler/v25.rb +11 -0
- data/lib/epics/handlers/order_data_handler/v3.rb +41 -0
- data/lib/epics/handlers/order_data_handler.rb +8 -0
- data/lib/epics/handlers/user_signature_handler/base.rb +10 -0
- data/lib/epics/handlers/user_signature_handler/v2.rb +17 -0
- data/lib/epics/handlers/user_signature_handler/v3.rb +17 -0
- data/lib/epics/handlers/user_signature_handler.rb +6 -0
- data/lib/epics/handlers.rb +6 -0
- data/lib/epics/hev.rb +2 -15
- data/lib/epics/hia.rb +4 -55
- data/lib/epics/hkd.rb +3 -9
- data/lib/epics/hpb.rb +3 -13
- data/lib/epics/hpd.rb +3 -9
- data/lib/epics/htd.rb +3 -9
- data/lib/epics/ini.rb +4 -46
- data/lib/epics/keyring.rb +17 -0
- data/lib/epics/letter_renderer.rb +17 -22
- data/lib/epics/ptk.rb +3 -14
- data/lib/epics/response.rb +34 -29
- data/lib/epics/services/crypt_service.rb +62 -0
- data/lib/epics/services/digest_resolver/base.rb +30 -0
- data/lib/epics/services/digest_resolver/v2.rb +13 -0
- data/lib/epics/services/digest_resolver/v3.rb +19 -0
- data/lib/epics/services/digest_resolver.rb +6 -0
- data/lib/epics/services.rb +5 -0
- data/lib/epics/signature.rb +50 -0
- data/lib/epics/{key.rb → signature_algorithm/base.rb} +14 -21
- data/lib/epics/signature_algorithm/rsa.rb +50 -0
- data/lib/epics/signature_algorithm/rsapkcs1.rb +16 -0
- data/lib/epics/signature_algorithm/rsapss.rb +20 -0
- data/lib/epics/signature_algorithm.rb +2 -0
- data/lib/epics/sta.rb +3 -14
- data/lib/epics/version.rb +1 -1
- data/lib/epics/vmk.rb +3 -14
- data/lib/epics/wss.rb +3 -9
- data/lib/epics/xct.rb +3 -10
- data/lib/epics/xds.rb +3 -10
- data/lib/epics/xe2.rb +3 -10
- data/lib/epics/xe3.rb +3 -10
- data/lib/epics/xek.rb +5 -0
- data/lib/epics/yct.rb +6 -0
- data/lib/epics/z01.rb +2 -14
- data/lib/epics/z52.rb +2 -14
- data/lib/epics/z53.rb +2 -14
- data/lib/epics/z54.rb +2 -14
- data/lib/epics/zsr.rb +5 -0
- data/lib/epics.rb +68 -5
- data/lib/letter/ini.erb +27 -6
- data/spec/aes_spec.rb +46 -0
- data/spec/auth_signature_handler_spec.rb +58 -0
- data/spec/builders_spec.rb +616 -0
- data/spec/certificate_handling_spec.rb +189 -0
- data/spec/client_setup_block_spec.rb +41 -0
- data/spec/client_spec.rb +143 -91
- data/spec/crypt_service_spec.rb +132 -0
- data/spec/date_range_spec.rb +46 -0
- data/spec/digest_resolver_spec.rb +164 -0
- data/spec/fixtures/bank_x509.pem +3 -0
- data/spec/fixtures/xml/haa.xml +40 -1
- data/spec/fixtures/xml/haa_receipt.xml +33 -30
- data/spec/fixtures/xml/haa_response_h004.xml +4 -0
- data/spec/fixtures/xml/haa_response_h005.xml +38 -0
- data/spec/fixtures/xml/hia_request_order_data.xml +24 -1
- data/spec/fixtures/xml/hpb_request.xml +1 -1
- data/spec/fixtures/xml/hpb_response_x509.xml +16 -0
- data/spec/fixtures/xml/htd_order_data_h005.xml +55 -0
- data/spec/fixtures/xml/jruby/hia.xml +20 -22
- data/spec/fixtures/xml/jruby/ini.xml +1 -3
- data/spec/fixtures/xml/ruby/hia.xml +21 -1
- data/spec/fixtures/xml/ruby/ini.xml +21 -1
- data/spec/handlers_spec.rb +267 -0
- data/spec/hpb_malformed_certificate_spec.rb +36 -0
- data/spec/key_file_decryption_spec.rb +27 -0
- data/spec/key_file_preservation_spec.rb +78 -0
- data/spec/keyring_spec.rb +349 -0
- data/spec/middleware/parse_ebics_spec.rb +2 -1
- data/spec/order_id_spec.rb +65 -0
- data/spec/orders/azv_spec.rb +63 -7
- data/spec/orders/b2b_spec.rb +68 -3
- data/spec/orders/bka_spec.rb +34 -4
- data/spec/orders/c2s_spec.rb +62 -9
- data/spec/orders/c52_spec.rb +34 -4
- data/spec/orders/c53_spec.rb +34 -4
- data/spec/orders/c54_spec.rb +36 -4
- data/spec/orders/c5n_spec.rb +36 -4
- data/spec/orders/camt_parity_spec.rb +80 -0
- data/spec/orders/ccs_spec.rb +62 -9
- data/spec/orders/cct_spec.rb +83 -9
- data/spec/orders/cd1_spec.rb +50 -7
- data/spec/orders/cdb_spec.rb +64 -7
- data/spec/orders/cdd_spec.rb +64 -7
- data/spec/orders/cds_spec.rb +74 -0
- data/spec/orders/cdz_spec.rb +67 -4
- data/spec/orders/cip_spec.rb +61 -9
- data/spec/orders/crz_spec.rb +67 -4
- data/spec/orders/fdl_spec.rb +143 -13
- data/spec/orders/ful_spec.rb +51 -10
- data/spec/orders/haa_spec.rb +115 -9
- data/spec/orders/hac_spec.rb +89 -10
- data/spec/orders/hev_spec.rb +1 -6
- data/spec/orders/hia_spec.rb +25 -22
- data/spec/orders/hkd_spec.rb +23 -4
- data/spec/orders/hpb_spec.rb +7 -4
- data/spec/orders/hpd_spec.rb +23 -4
- data/spec/orders/htd_spec.rb +23 -4
- data/spec/orders/ini_spec.rb +23 -18
- data/spec/orders/ptk_spec.rb +27 -4
- data/spec/orders/sta_spec.rb +129 -11
- data/spec/orders/vmk_spec.rb +36 -4
- data/spec/orders/wss_spec.rb +29 -3
- data/spec/orders/x_509_certificate_spec.rb +9 -1
- data/spec/orders/xct_spec.rb +63 -0
- data/spec/orders/xds_spec.rb +13 -6
- data/spec/orders/xe2_spec.rb +64 -7
- data/spec/orders/xe3_spec.rb +64 -7
- data/spec/orders/xek_spec.rb +31 -0
- data/spec/orders/yct_spec.rb +43 -0
- data/spec/orders/z01_spec.rb +34 -4
- data/spec/orders/z52_spec.rb +34 -4
- data/spec/orders/z53_spec.rb +34 -4
- data/spec/orders/z54_spec.rb +36 -4
- data/spec/orders/zsr_spec.rb +31 -0
- data/spec/request_factory_spec.rb +444 -0
- data/spec/response_business_error_spec.rb +45 -0
- data/spec/response_validation_spec.rb +23 -0
- data/spec/{key_spec.rb → signature_algorithm/rsa_pss_spec.rb} +4 -13
- data/spec/support/ebics_matcher.rb +17 -9
- data/spec/support/ebics_shared_examples.rb +642 -0
- data/spec/support/h005_client_helper.rb +23 -0
- data/spec/upload_digest_spec.rb +69 -0
- data/spec/user_signature_handler_spec.rb +25 -0
- data/spec/version_support_error_spec.rb +76 -0
- data/spec/xsd/{ebics_hev.xsd → H000/ebics_hev.xsd} +0 -0
- data/spec/xsd/H003/ebics.xsd +11 -0
- data/spec/xsd/H003/ebics_keymgmt_request.xsd +555 -0
- data/spec/xsd/H003/ebics_keymgmt_response.xsd +131 -0
- data/spec/xsd/H003/ebics_orders.xsd +1811 -0
- data/spec/xsd/H003/ebics_request.xsd +354 -0
- data/spec/xsd/H003/ebics_response.xsd +161 -0
- data/spec/xsd/{ebics_signature.xsd → H003/ebics_signature.xsd} +0 -0
- data/spec/xsd/H003/ebics_types.xsd +2361 -0
- data/spec/xsd/H003/xmldsig-core-schema.xsd +318 -0
- data/spec/xsd/H004/ebics_signature.xsd +217 -0
- data/spec/xsd/H005/ebics_H005.xsd +11 -0
- data/spec/xsd/H005/ebics_keymgmt_request_H005.xsd +523 -0
- data/spec/xsd/H005/ebics_keymgmt_response_H005.xsd +137 -0
- data/spec/xsd/H005/ebics_orders_H005.xsd +2094 -0
- data/spec/xsd/H005/ebics_request_H005.xsd +349 -0
- data/spec/xsd/H005/ebics_response_H005.xsd +167 -0
- data/spec/xsd/H005/ebics_signature_S002.xsd +177 -0
- data/spec/xsd/H005/ebics_types_H005.xsd +1885 -0
- data/spec/xsd/H005/xmldsig-core-schema.xsd +318 -0
- metadata +197 -36
- data/lib/epics/header_request.rb +0 -58
- data/lib/epics/middleware/xmlsig.rb +0 -16
- data/lib/epics/signer.rb +0 -40
- data/lib/epics/x_509_certificate.rb +0 -15
- data/lib/letter/ini_with_certs.erb +0 -335
- data/spec/generic_upload_spec.rb +0 -58
- data/spec/hpb_spec.rb +0 -15
- data/spec/signer_spec.rb +0 -34
- /data/spec/xsd/{ebics_H004.xsd → H004/ebics_H004.xsd} +0 -0
- /data/spec/xsd/{ebics_keymgmt_request_H004.xsd → H004/ebics_keymgmt_request_H004.xsd} +0 -0
- /data/spec/xsd/{ebics_keymgmt_response_H004.xsd → H004/ebics_keymgmt_response_H004.xsd} +0 -0
- /data/spec/xsd/{ebics_orders_H004.xsd → H004/ebics_orders_H004.xsd} +0 -0
- /data/spec/xsd/{ebics_request_H004.xsd → H004/ebics_request_H004.xsd} +0 -0
- /data/spec/xsd/{ebics_response_H004.xsd → H004/ebics_response_H004.xsd} +0 -0
- /data/spec/xsd/{ebics_types_H004.xsd → H004/ebics_types_H004.xsd} +0 -0
- /data/spec/xsd/{xmldsig-core-schema.xsd → H004/xmldsig-core-schema.xsd} +0 -0
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: bfb2519dc2e22c76ab739665eae1376bc45f525b8025c158e25606892839bed9
|
|
4
|
+
data.tar.gz: 29a8b4673f7b494c1a8b07e27865bfee5abe5056e176e29612bc4e08058fb340
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 8fbe472fa138faa685cc8c35891d697d114b3cee9086c47ea3bea7a1c36d817176239647e04fc42dca327fcb07bcb0b0ce410d33e3060ccb446e4d4a092f4b50
|
|
7
|
+
data.tar.gz: bc95a07d0c74576667827a341c3aed4ad1cf2777b000426e351baab9d542c8b0cb0679076ba0660350e96d50c26b7d1ab603217a0ed9d64f4a300f6b96e419e4
|
data/.gitignore
CHANGED
data/.semaphore/semaphore.yml
CHANGED
|
@@ -3,7 +3,7 @@ name: Test
|
|
|
3
3
|
agent:
|
|
4
4
|
machine:
|
|
5
5
|
type: e1-standard-2
|
|
6
|
-
os_image:
|
|
6
|
+
os_image: ubuntu2204
|
|
7
7
|
blocks:
|
|
8
8
|
- name: Setup
|
|
9
9
|
task:
|
|
@@ -16,30 +16,39 @@ blocks:
|
|
|
16
16
|
- name: Spec versions
|
|
17
17
|
task:
|
|
18
18
|
jobs:
|
|
19
|
-
- name: "3.
|
|
19
|
+
- name: "3.2"
|
|
20
20
|
commands:
|
|
21
21
|
- checkout
|
|
22
|
-
- sem-version ruby 3.
|
|
22
|
+
- sem-version ruby 3.2
|
|
23
23
|
- cache restore
|
|
24
24
|
- gem install bundler:2.5.19
|
|
25
25
|
- bundle install
|
|
26
26
|
- cache store
|
|
27
27
|
- bundle exec rspec
|
|
28
|
-
- name: "3.
|
|
28
|
+
- name: "3.3"
|
|
29
29
|
commands:
|
|
30
30
|
- checkout
|
|
31
|
-
- sem-version ruby 3.
|
|
31
|
+
- sem-version ruby 3.3
|
|
32
32
|
- cache restore
|
|
33
33
|
- gem install bundler:2.5.19
|
|
34
34
|
- bundle install
|
|
35
35
|
- cache store
|
|
36
36
|
- bundle exec rspec
|
|
37
|
-
- name: "3.
|
|
37
|
+
- name: "3.4"
|
|
38
38
|
commands:
|
|
39
39
|
- checkout
|
|
40
|
-
- sem-version ruby 3.
|
|
40
|
+
- sem-version ruby 3.4
|
|
41
41
|
- cache restore
|
|
42
|
-
- gem install bundler:2.
|
|
42
|
+
- gem install bundler:2.6.9
|
|
43
|
+
- bundle install
|
|
44
|
+
- cache store
|
|
45
|
+
- bundle exec rspec
|
|
46
|
+
- name: "4.0"
|
|
47
|
+
commands:
|
|
48
|
+
- checkout
|
|
49
|
+
- sem-version ruby 4.0
|
|
50
|
+
- cache restore
|
|
51
|
+
- gem install bundler:4.0.3
|
|
43
52
|
- bundle install
|
|
44
53
|
- cache store
|
|
45
54
|
- bundle exec rspec
|
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,98 @@
|
|
|
1
1
|
### Unreleased
|
|
2
2
|
|
|
3
|
+
### 3.0.0.rc1
|
|
4
|
+
|
|
5
|
+
Major release adding EBICS 3.0 (H005) and EBICS 2.4 (H003) support, alongside a
|
|
6
|
+
rewrite of request building into builders/factories/handlers.
|
|
7
|
+
|
|
8
|
+
**Breaking changes**
|
|
9
|
+
|
|
10
|
+
- [BREAKING] Default key size for `Epics::Client.setup` raised from 2048 to 4096 bits
|
|
11
|
+
- [BREAKING] Removed internal accessors that were never intended as public API:
|
|
12
|
+
`Client#a`, `#e`, `#x`, `#bank_x`, `#bank_e`, `#keys=`, `#x_509_certificate`,
|
|
13
|
+
`#x_509_certificate_hash`, `#x_509_certificates_content`, `#header_request`, and the
|
|
14
|
+
constants `Epics::Key`, `Epics::Signer`, `Epics::X509Certificate`,
|
|
15
|
+
`Epics::HeaderRequest`, `Epics::XMLSIG`
|
|
16
|
+
- [BREAKING] `Client#keys` is now recomputed per call; mutating it no longer injects keys
|
|
17
|
+
- [BREAKING] On H005, `Client#HAA` and `Client#order_types` return an array of service
|
|
18
|
+
hashes (`service_name`, `scope`, `service_option`, `container`, `msg_name`) instead of
|
|
19
|
+
an array of order-type strings
|
|
20
|
+
|
|
21
|
+
**Fixes**
|
|
22
|
+
|
|
23
|
+
- [FIX] Loading a key file with the wrong passphrase raised `OpenSSL::PKey::PKeyError`
|
|
24
|
+
about one time in 256, when the decrypted garbage happened to be padded correctly.
|
|
25
|
+
Decryption now verifies it produced a PEM, so a wrong passphrase always raises
|
|
26
|
+
`OpenSSL::Cipher::CipherError`
|
|
27
|
+
- [FIX] An unreadable certificate in an HPB response raised a bare
|
|
28
|
+
`OpenSSL::X509::CertificateError`. It now raises `Epics::InvalidCertificateError`
|
|
29
|
+
naming the HPB response as the source and keeping the OpenSSL message
|
|
30
|
+
- [FIX] `Response#signature_valid?` and `#public_digest_valid?` raised `NoMethodError`
|
|
31
|
+
when the key they need was not loaded; they now raise `Epics::MissingKeyError` naming
|
|
32
|
+
it. `#digest_valid?` no longer needs a key at all — it is a plain SHA-256 over the
|
|
33
|
+
authenticated nodes
|
|
34
|
+
- [BREAKING] Removed `Epics::Builders::MutableBuilder#add_receipt_code`, which emitted
|
|
35
|
+
`ReceiptCode` inside `mutable` where the schema does not allow it. `ReceiptCode`
|
|
36
|
+
belongs to `TransferReceipt`, which `TransferReceiptBuilder` already builds
|
|
37
|
+
- [FIX] Removed the `container_flag:` order parameter, which emitted a `ContainerFlag`
|
|
38
|
+
element that exists in no EBICS schema. The container is expressed by `Container`
|
|
39
|
+
with a `containerType` attribute, which `container_type:` already emits
|
|
40
|
+
- [ENHANCEMENT] Added the H005-only order types `XEK` (account statements as PDF),
|
|
41
|
+
`ZSR` (payment status reports) and `YCT` (multi-currency credit transfer). Their BTF
|
|
42
|
+
mappings existed in the V3 factory but had no order class or client method
|
|
43
|
+
- [BREAKING] `XEK`, `YCT` and `ZSR` raise `Epics::VersionSupportError` on H003/H004
|
|
44
|
+
instead of `NotImplementedError`, matching every other version mismatch
|
|
45
|
+
- [ENHANCEMENT] `XEK`, `ZSR`, `Z01`, `Z52`, `Z53` and `Z54` accept `scope:`,
|
|
46
|
+
`service_option:`, `msg_name_version:` and `container_type:`. Defaults are unchanged;
|
|
47
|
+
Swiss market practice requires a `Scope` and only `ZSR` sent one, so a bank-specific
|
|
48
|
+
value can now be supplied without patching the gem
|
|
49
|
+
- [ENHANCEMENT] `C54` accepts `scope:`, `msg_name_version:` and `container_type:`, the
|
|
50
|
+
same options as `C52` and `C53`; `C53` gained `container_type:`. The three camt
|
|
51
|
+
retrievals now differ only in service name and message type
|
|
52
|
+
- [FIX] `save_keys` discarded any key-file entry it could not map to one of the five
|
|
53
|
+
keyring slots, so a `host_id` that no longer matched the stored prefix destroyed the
|
|
54
|
+
bank's public keys on save. Unrecognised entries are now carried through unchanged,
|
|
55
|
+
and a warning names each one instead of the failure being swallowed
|
|
56
|
+
- [BREAKING] `order_id:` is validated against the EBICS `OrderIDType` range (`A000` to
|
|
57
|
+
`ZZZZ`). Values below `A000` rendered as e.g. `0002`, which violates the
|
|
58
|
+
`[A-Z][A-Z0-9]{3}` pattern; they now raise `ArgumentError`. The protocol form
|
|
59
|
+
(`order_id: 'A000'`) is accepted alongside the integer
|
|
60
|
+
|
|
61
|
+
- [FIX] `XCT` sent the wrong order type: `CD1` on H003/H004 and the DTAZV service on
|
|
62
|
+
H005, filing credit transfers as direct debits. It now sends `XCT` on H003/H004.
|
|
63
|
+
EBICS 3.0 defines no counterpart for XCT, so on H005 it raises
|
|
64
|
+
`Epics::VersionSupportError` rather than guessing a BTF service
|
|
65
|
+
- [FIX] The electronic signature over order data is again formed with line separators
|
|
66
|
+
removed, matching 2.x. The refactor had signed the raw document, changing the ES for
|
|
67
|
+
every upload
|
|
68
|
+
- [BREAKING] Upload order data is now normalized once, on the way in, so the bytes
|
|
69
|
+
hashed for the electronic signature are the bytes transmitted. Until 3.0 the digest
|
|
70
|
+
was taken over the normalized document while the raw one was sent, which only
|
|
71
|
+
verifies against banks that normalize before checking the ES
|
|
72
|
+
- [FIX] H005 `DataDigest` carried an RSA-PSS signature (256 bytes, non-reproducible)
|
|
73
|
+
instead of the SHA-256 hash of the order data
|
|
74
|
+
- [FIX] `Response#business_error?` treated every `01`-prefixed return code as
|
|
75
|
+
informational, reporting `011001` (negative acknowledgement) and `011101` (segment
|
|
76
|
+
number not reached) as success. It now uses an explicit allow-list
|
|
77
|
+
- [BREAKING] Passing only one date-range bound (e.g. `client.STA(from)`) silently
|
|
78
|
+
omitted the range and fetched the bank's full retention window. Both bounds are
|
|
79
|
+
mandatory within `DateRange`, so this now raises `ArgumentError`
|
|
80
|
+
- [FIX] `Time` and `DateTime` passed as date-range bounds rendered an `xs:dateTime`
|
|
81
|
+
with a local offset into an `xs:date` element; they are now coerced to a date
|
|
82
|
+
- [FIX] `C52` requested no container on H005 while `Client#C52` always unzips the
|
|
83
|
+
response, raising `Zip::Error`. `C52` and `C53` now default to a ZIP container and
|
|
84
|
+
both accept `container_type:` to override it
|
|
85
|
+
- [BREAKING] Removed `Epics::Services::CryptService#sign`, which had no callers and
|
|
86
|
+
disagreed with `#encrypt` on how an A005 signature is formed
|
|
87
|
+
- [FIX] `Epics::Client.setup` forwarded its block to `.new`, which yields before the
|
|
88
|
+
keys are generated, so the block saw an empty keyring and anything touching it —
|
|
89
|
+
`ini_letter`, `save_keys`, `INI`, `HIA` — failed. It now yields once the client is
|
|
90
|
+
usable
|
|
91
|
+
- [FIX] `Epics::VersionSupportError` was raised as `raise Error, version, 'below'`,
|
|
92
|
+
where the third argument is the backtrace, so the direction was dropped and the
|
|
93
|
+
stack trace destroyed. 2.x-only order types on H005 now report "Support for versions
|
|
94
|
+
below 3.0" and keep their trace
|
|
95
|
+
|
|
3
96
|
### 2.11.0
|
|
4
97
|
|
|
5
98
|
- [ENHANCEMENT] Added FUL order type (thanks to @scollon-pl)
|
data/EBICS_REFERENCES.md
ADDED
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
# EBICS Documentation — Complete Reference
|
|
2
|
+
|
|
3
|
+
> Last updated: 2026-03-05
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 1. Official Specifications (ebics.org)
|
|
8
|
+
|
|
9
|
+
| Document | Link | Version | Language |
|
|
10
|
+
|---|---|---|---|
|
|
11
|
+
| **Specification main page** | https://www.ebics.org/en/technical-information/ebics-specification | V3.0.2 (current) | EN/DE/FR |
|
|
12
|
+
| **XSD Schemas** | https://www.ebics.org/en/technical-information/ebics-schema | H003/H004/H005 | — |
|
|
13
|
+
| **Implementation Guide** | https://www.ebics.org/en/technical-information/implementation-guide | All | EN/DE |
|
|
14
|
+
| **BTF Mapping (BTD/BTU)** | https://www.ebics.org/en/technical-information/btf-mapping | H005 | EN/DE |
|
|
15
|
+
| **Examples** | https://www.ebics.org/en/technical-information/examples | All | EN |
|
|
16
|
+
| **Additional Standards** | https://www.ebics.org/en/technical-information/additional-standards | All | EN/DE |
|
|
17
|
+
| **Change Requests (archive)** | https://www.ebics.org/en/technical-information/archive-ebics/change-requests | Historical | EN/DE |
|
|
18
|
+
| **Passed CRs** | https://www.ebics.org/en/technical-information/maintain-advance/passed-crs | Maintenance | EN/DE |
|
|
19
|
+
| **Technical News** | https://www.ebics.org/en/current-topics/technical-news | — | EN/DE |
|
|
20
|
+
| **Archived Specifications** | https://www.ebics.org/en/technical-information/archive-ebics/specification | V2.4/2.5 | EN/DE |
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## 2. Specification PDFs — Direct Download
|
|
25
|
+
|
|
26
|
+
### Main Specification
|
|
27
|
+
|
|
28
|
+
| Document | Link | Version |
|
|
29
|
+
|---|---|---|
|
|
30
|
+
| **EBICS V3.0 Spec (SIX)** | https://www.six-group.com/dam/download/banking-services/interbank-clearing/en/standardization/ebics/ebics_3_0.pdf | H005 / V3.0 |
|
|
31
|
+
| **EBICS V3.0 Spec (Gitea mirror)** | https://gitea.szsolutions.ch/Mirror/odoo_account_ebics/raw/branch/15.0/account_ebics/doc/2017-03-29-EBICS_V_3.0-FinalVersion.pdf | H005 / V3.0 |
|
|
32
|
+
| **EBICS V2.5 Spec (CFONB)** | https://www.cfonb.org/fichiers/20130612170023_6_4_EBICS_Specification_2.5_final_2011_05_16_2012_07_01.pdf | H004 / V2.5 |
|
|
33
|
+
| **EBICS V2.4.2 Spec (CFONB)** | https://www.cfonb.org/fichiers/20130612170103_6_7_EBICS_Specification_2.4.2_final_2010_02_16.pdf | H003 / V2.4 |
|
|
34
|
+
|
|
35
|
+
### Annexes & Supplements
|
|
36
|
+
|
|
37
|
+
| Document | Link | Content |
|
|
38
|
+
|---|---|---|
|
|
39
|
+
| **Annex 1 — Return Codes** | https://www.cfonb.org/fichiers/20130612170037_6_5_EBICS_Annex1_ReturnCodes_final_16_05_2011_2012_07_01.pdf | All EBICS return codes |
|
|
40
|
+
| **Annex 2 — Order Type Identifiers** | https://www.cfonb.org/fichiers/20140423153546_Annex_2_%E2%80%93_EBICS_Specification_april_2014.pdf | Order type identifiers |
|
|
41
|
+
| **EBICS SC 2021** | https://www.cfonb.org/fichiers/20210420081014_EBICS_SC_2021.pdf | EBICS SC overview |
|
|
42
|
+
|
|
43
|
+
### France Implementation Guides (CFONB)
|
|
44
|
+
|
|
45
|
+
| Document | Link | Content |
|
|
46
|
+
|---|---|---|
|
|
47
|
+
| **IG CFONB V2.1.5 (FR)** | https://www.cfonb.org/fichiers/20141029101016_6_10_EBICS_IG_CFONB_VF_2_1_5_2014_06_23.pdf | France implementation guide |
|
|
48
|
+
| **IG CFONB V2.1.4 (EN)** | https://www.cfonb.org/fichiers/20130612170302_6_16_EBICS_IG_CFONB_V2_1.4_english_version_2012_02_24.pdf | France implementation guide (English) |
|
|
49
|
+
| **IG Annex 2 — File names** | https://www.cfonb.org/fichiers/20130612170321_6_17_EBICS_IG_V1.2._Annexe_2_File_names_VE_final_2010_01.pdf | File naming conventions |
|
|
50
|
+
| **IG Annex A3.1 — Certificate error codes** | https://www.cfonb.org/fichiers/20130612170148_6_11_EBICS_IG_V1_1_Annexe_A3_1_Certificates_error_codes_2009_04.pdf | X.509 certificate error codes |
|
|
51
|
+
| **EBICS test scenarios** | https://www.cfonb.org/fichiers/20130612170423_6_21_Proposition_tests_EBICS_V1_0_2009_05_15.pdf | Test scenarios |
|
|
52
|
+
|
|
53
|
+
### BTF / BTD / BTU (EBICS 3.0)
|
|
54
|
+
|
|
55
|
+
| Document | Link | Content |
|
|
56
|
+
|---|---|---|
|
|
57
|
+
| **File Format → BTF mapping (CFONB)** | https://www.cfonb.org/sites/www.cfonb.org/files/documents/Tables%20de%20correspondance%20File%20Format%20vers%20BTF-Business%20Transaction%20Format%20(EBICS%20v3.0%20et%20suivantes)%20.pdf | Order type → BTF mapping |
|
|
58
|
+
| **BTF Parameters (konfipay wiki)** | https://wiki.konfipay.de/konfipay/btf-parameters-ebics-3-0 | BTF parameter reference |
|
|
59
|
+
| **CPG — EBICS BTU, BTD and BTF** | https://www.cpg.de/en/ebics-btu-btd-and-btf/ | BTD/BTU/BTF explained |
|
|
60
|
+
| **CPG — EBICS 3.0 innovations** | https://www.cpg.de/en/ebics-3-0/ | EBICS 3.0 overview |
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
|
|
64
|
+
## 3. Switzerland — SIX Group
|
|
65
|
+
|
|
66
|
+
| Document | Link | Content |
|
|
67
|
+
|---|---|---|
|
|
68
|
+
| **Swiss Market Practice Guidelines EBICS 3.0 v1.3** | https://www.six-group.com/dam/download/banking-services/standardization/ebics/market-practice-guidelines-ebics3.0-v1.3-en.pdf | Swiss guidelines H005 |
|
|
69
|
+
| **Swiss Market Practice Guidelines EBICS 3.0 v1.2** | https://www.six-group.com/dam/download/banking-services/standardization/ebics/market-practice-guidelines-ebics3.0-v1.2-en.pdf | Swiss guidelines H005 (older) |
|
|
70
|
+
| **EBICS in Switzerland (overview)** | https://www.six-group.com/dam/download/banking-services/interbank-clearing/en/standardization/ebics/ebics.pdf | EBICS Switzerland overview |
|
|
71
|
+
| **SIX EBICS page** | https://www.six-group.com/en/products-services/banking-services/payment-standardization/standards/ebics.html | SIX EBICS portal |
|
|
72
|
+
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
## 4. Germany — Deutsche Kreditwirtschaft / Bundesbank
|
|
76
|
+
|
|
77
|
+
| Document | Link | Content |
|
|
78
|
+
|---|---|---|
|
|
79
|
+
| **DFÜ-Abkommen — Anlage 3 Datenformate V3.8** | http://www.bayernlb.de/internet/media/de/ir/downloads_1/zahlungsverkehr/richtlinien/2024-11-17_Anlage_3_Datenformate_V3.8.pdf | Data format specification |
|
|
80
|
+
| **ebics.de — Datenformate** | https://www.ebics.de/de/datenformate | Data formats portal |
|
|
81
|
+
| **DFÜ-Verfahren EBICS — DK** | https://die-dk.de/zahlungsverkehr/electronic-banking/dfu-verfahren-ebics/ | DK EBICS page |
|
|
82
|
+
| **Verfahrensregeln EBICS 2025 (Bundesbank)** | https://www.bundesbank.de/resource/blob/964236/6f3129a9aab710eae9b2939e0021a7bc/472B63F073F071307366337C94F8C870/verfahrensregeln-ebics-2025-data.pdf | Procedural rules 2025 |
|
|
83
|
+
| **Verfahrensregeln EBICS V3.9 (Bundesbank)** | https://www.bundesbank.de/resource/blob/764544/2bfc83ca09df0c7a4a53c96caec1ac55/mL/verfahrensregeln-ebics-3-9-data.pdf | Procedural rules V3.9 |
|
|
84
|
+
| **Besondere Bedingungen EBICS 2024 (Bundesbank)** | https://www.bundesbank.de/resource/blob/925930/8b5c5b9da853666a3b1638b0005aa3e4/mL/besondere-bedingungen-ebics-2024-data.pdf | Special conditions |
|
|
85
|
+
| **Deutsche Bank — Order Types (EN)** | https://www.deutsche-bank.de/dam/deutschebank/de/shared/pdf/ebics-dfu-explanation-of-order-type-identifiers-e.pdf | Order type reference (EN) |
|
|
86
|
+
| **Deutsche Bank — Auftragsarten (DE)** | https://www.deutsche-bank.de/dam/deutschebank/de/shared/pdf/ub/ebics-dfue-erlaeuterungen-der-auftragsarten-d.pdf | Order type reference (DE) |
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
## 5. DFÜ-Abkommen — English Translation
|
|
91
|
+
|
|
92
|
+
| Document | Link | Content |
|
|
93
|
+
|---|---|---|
|
|
94
|
+
| **DFÜ Agreement Appendix 3 (EN, Isabel)** | https://www.isabel.eu/content/dam/knowledge_base_ibs6/documents/en-US/Anlage_3_Datenformate_V29_engl.pdf | Data formats (English translation) |
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
## 6. Reference Implementations (source code)
|
|
99
|
+
|
|
100
|
+
| Project | Link | Language | Versions |
|
|
101
|
+
|---|---|---|---|
|
|
102
|
+
| **ebics-client-php** | https://github.com/ebics-api/ebics-client-php | PHP | H003/H004/H005 |
|
|
103
|
+
| **ebics-java-client** | https://github.com/ebics-java/ebics-java-client | Java | H004 |
|
|
104
|
+
| **EBICS.php (Synap)** | https://github.com/Synap/EBICS.php | PHP | H003/H004 |
|
|
105
|
+
| **node-ebics-client** | https://github.com/nicemann/node-ebics-client | Node.js | H004 |
|
|
106
|
+
| **epics (railslove)** | https://github.com/railslove/epics | Ruby | H004 |
|
|
107
|
+
| **epics (our fork)** | https://github.com/jplot/epics | Ruby | H003/H004/H005 |
|
|
108
|
+
|
|
109
|
+
---
|
|
110
|
+
|
|
111
|
+
## 7. Third-party References
|
|
112
|
+
|
|
113
|
+
| Resource | Link | Content |
|
|
114
|
+
|---|---|---|
|
|
115
|
+
| **Wikipedia — EBICS** | https://en.wikipedia.org/wiki/Electronic_Banking_Internet_Communication_Standard | Overview |
|
|
116
|
+
| **Wikipedia — DFÜ-Abkommen** | https://de.wikipedia.org/wiki/Abkommen_%C3%BCber_die_Datenfern%C3%BCbertragung_zwischen_Kunden_und_Kreditinstituten | DFÜ-Abkommen (DE) |
|
|
117
|
+
| **Axway — EBICS standard** | https://docs.axway.com/bundle/EBICSClient_11_allOS_en_HTML5/page/the_ebics_standard.html | Axway reference |
|
|
118
|
+
| **Axway — EBICS error codes** | https://docs.axway.com/bundle/TransferCFT_332_LocalAdministrationGuide_allOS_en_HTML5/page/Content/Prots/French/EBICS/r_ebics_error_mess_codes.htm | Error codes (full list) |
|
|
119
|
+
| **IBM — EBICS return codes** | https://www.ibm.com/docs/SS3JSW_5.2.0/com.ibm.help.ebics_client_user_525.doc/EBICS_Client_returncodes_events.html | IBM return codes |
|
|
120
|
+
| **BL Banking — EBICS errors** | https://www.blbanking.de/webhelp/topic/de.businesslogics.banking.web/help/html/appendix/faq-ebicserrors.html | BL Banking error messages |
|
|
121
|
+
| **konfipay — BTF parameters** | https://wiki.konfipay.de/konfipay/btf-parameters-ebics-3-0 | BTF parameters |
|
|
122
|
+
| **Sage XRT — EBICS 3.0 Guide (FR)** | https://sxbe-onlinehelp.sage.com/PDF/SXBE/SXBE.12.1.EBICS.3.0.UserGuide_FR.pdf | Sage user guide |
|
|
123
|
+
| **UBS — EBICS 3.0** | https://www.ubs.com/ch/en/corporates/payment-solutions/cash-management/connection-ubs/ebics.html | UBS EBICS 3.0 page |
|
|
124
|
+
| **BCV — EBICS parameters factsheet** | https://www.bcv.ch/content/dam/bcv/brochure---flyer/44-516e_Fiche-technique-BCV-connect_web.pdf | BCV technical factsheet |
|
|
125
|
+
|
|
126
|
+
---
|
|
127
|
+
|
|
128
|
+
## 8. Local XSD Schemas in This Project
|
|
129
|
+
|
|
130
|
+
XSD schemas are stored in `spec/xsd/`:
|
|
131
|
+
|
|
132
|
+
```
|
|
133
|
+
spec/xsd/
|
|
134
|
+
├── H003/
|
|
135
|
+
│ └── (H003 schemas)
|
|
136
|
+
├── H004/
|
|
137
|
+
│ ├── ebics_H004.xsd (H004 root schema)
|
|
138
|
+
│ ├── ebics_hev.xsd (HEV protocol)
|
|
139
|
+
│ ├── ebics_keymgmt_request_H004.xsd
|
|
140
|
+
│ ├── ebics_keymgmt_response_H004.xsd
|
|
141
|
+
│ ├── ebics_orders_H004.xsd (89K — order types)
|
|
142
|
+
│ ├── ebics_request_H004.xsd
|
|
143
|
+
│ ├── ebics_response_H004.xsd
|
|
144
|
+
│ ├── ebics_signature.xsd (S001)
|
|
145
|
+
│ ├── ebics_types_H004.xsd (86K — types)
|
|
146
|
+
│ └── xmldsig-core-schema.xsd
|
|
147
|
+
└── H005/
|
|
148
|
+
├── ebics_H005.xsd (H005 root schema)
|
|
149
|
+
├── ebics_hev.xsd
|
|
150
|
+
├── ebics_keymgmt_request_H005.xsd
|
|
151
|
+
├── ebics_keymgmt_response_H005.xsd
|
|
152
|
+
├── ebics_orders_H005.xsd
|
|
153
|
+
├── ebics_request_H005.xsd
|
|
154
|
+
├── ebics_response_H005.xsd
|
|
155
|
+
├── ebics_signature_S002.xsd (S002 — A005)
|
|
156
|
+
├── ebics_types_H005.xsd
|
|
157
|
+
└── xmldsig-core-schema.xsd
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
---
|
|
161
|
+
|
|
162
|
+
## Notes
|
|
163
|
+
|
|
164
|
+
- Specifications on **ebics.org** require accepting terms of use before downloading
|
|
165
|
+
- Current version: **V3.0.2** (valid since December 30, 2022)
|
|
166
|
+
- Last BTF list update: **October 23, 2024**
|
|
167
|
+
- **DFÜ-Abkommen Anlage 3** is the reference document for data formats in Germany
|
|
168
|
+
- X/Y/Z prefixed order types = bank-individual (not core EBICS)
|
|
169
|
+
- FUL/FDL = core EBICS H003/H004, removed in H005 (replaced by BTU/BTD)
|