Skip to content

Rust bindings and SDK for the ELSTER Rich Client (ERiC)

License

Notifications You must be signed in to change notification settings

quambene/eric-rs

Repository files navigation

Eric

latest version documentation latest version documentation build status

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

Select bindings

The bindings are selected from the pre-generated bindings by specifying the environment variables PATH_VENDOR, LIBRARY_NAME, LIBRARY_PATH, HEADER_FILE, and PLUGIN_PATH. For example:

PATH_VENDOR="ERiC-40.2.10.0-Linux-x86_64/ERiC-40.2.10.0/Linux-x86_64"
LIBRARY_NAME=ericapi
LIBRARY_PATH="$PATH_VENDOR/lib"
HEADER_FILE="$PATH_VENDOR/include/ericapi.h"
PLUGIN_PATH="$PATH_VENDOR/lib/plugins2"

Generate bindings

You can also generate bindings on-the-fly for your specific platform and architecture by using feature flag generate-bindings:

cargo build -p eric-bindings --features 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:

apt install llvm-dev libclang-dev clang

Test bindings

The bindings are included in src/lib.rs via include! macro and tested by:

cargo test -p eric-bindings --lib

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.

Supported Eric versions

Rust SDK Eric
0.1.0 38.1.6.0
0.2.0 39.6.4.0
0.3.0 40.1.8.0

Test SDK

# Run unit tests
cargo test -p eric-sdk --lib

# Run integration tests
cargo test -p eric-sdk --test '*' -- --test-threads=1

# Run external tests
cargo test -p eric-sdk --test '*' --features external-test -- --test-threads=1

Changelog

The eric-rs repository contains multiple crates with separate changelogs:

About

Rust bindings and SDK for the ELSTER Rich Client (ERiC)

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages