Eric
Rust bindings and SDK for the ELSTER Rich Client (ERiC)
What is ELSTER?
Elster (short for Elektronische Steuererklärung) is a project by the German tax administration to process tax returns and declarations.
What is ERiC?
ERiC (short for Elster Rich Client) is a shared C library that is integrated into a tax application. ERiC checks the data provided by the tax application for plausibility, and transmits the validated data in encrypted form to the computing center of the respective tax administration.
Requirements
You need to have the shared library libericapi.so and the header file ericapi.h available on your system which can be downloaded from ELSTER for developers after access has been requested here.
Rust bindings
Specify the path to the Eric library via environment variable ERIC_PATH. For
example:
ERIC_PATH="ERiC-43.3.2.0-Linux-x86_64/ERiC-43.3.2.0/Linux-x86_64"
Relevant environment variables then default to
LIBRARY_NAME=ericapi
LIBRARY_PATH="/lib"
HEADER_FILE="/include/ericapi.h"
PLUGIN_PATH="/lib/plugins"
Select bindings
Select bindings from the pre-generated bindings:
Generate bindings
You can also generate bindings on-the-fly for your specific platform and
architecture by using feature flag generate-bindings:
The bindings are generated in
target/debug/build/eric-bindings-<random-id>/out/bindings.rs.
To generate the bindings on your platform and architecture, you need libclang as well. For example, on Debian/Ubuntu install:
Test bindings
The bindings are included in src/lib.rs via include! macro and tested by:
Logs are written to eric.log in the current directory.
Eric SDK
eric-sdk supports single-threaded Eric instances.
Usage
To use eric-sdk, add the shared C library to your path (e.g. to LD_LIBRARY_PATH on Linux):
To send the xml file, the path and password of the Elster certificate have to be provided via environment variables CERTIFICATE_PATH and CERTIFICATE_PASSWORD. External tests also require a VENDOR_ID.
Supported Eric versions
Currently, only the latest version of the Eric library is supported.
| Rust SDK | Rust bindings | Eric |
|---|---|---|
| 0.1.0 | 0.2.0 | 38.1.6.0 |
| 0.2.0 | 0.3.0 | 39.6.4.0 |
| 0.3.0 | 0.4.0 | 40.1.8.0 |
| 0.4.0 | 0.5.0 | 43.3.2.0 |
Test SDK
# Run unit tests
# Run integration tests (requires ERiC library)
To run those tests that interact with the ELSTER servers, you need to provide the following environment variables:
CERTIFICATE_PATH: Path to your ELSTER certificate (.pfx)CERTIFICATE_PASSWORD: Password for your certificateVENDOR_ID: Your official ELSTER Vendor ID (Hersteller-ID)
Changelog
The eric-rs repository contains multiple crates with separate changelogs:
eric-bindings: view changelogeric-sdk: view changelog