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

Overview

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:

You might also like...
A universal SDK for FDU. Powered by Rust.

libfdu A universal SDK for FDU. Building You need Rust Nightly installed: $ rustup default nightly Build the library by running: $ cargo build or $ ca

mirrorworld-sdk-rust

Usage Clone project code. git clone [email protected]:mirrorworld-universe/mirrorworld-sdk-rust.git cd mirrorworld-sdk-rust run. cargo run test. cargo te

Rust SDK for interacting with the Nile.

Nile API Rust Client This is a POC Rust client for the Nile API. Usage Source the Nile environment variables into your environment. export NILE_DEVELO

Rust for the DirectStorage SDK (unofficial)

Rust for the DirectStorage SDK (unofficial) This crate lets you call any DirectStorage SDK API using code generated from the metadata describing the A

🦀 Hop server side SDK for Rust

hop-rs (wip) Hop's Rust library. Requires Rust 1.61+ Installation [dependencies] hop = "0.0.0" Usage Create a project token or personal access token.

Minimal flashloan borrower contracts with an extensible rust sdk to abstract wrapping generic onchain calls (similar to multicall3) with flashloans.
Minimal flashloan borrower contracts with an extensible rust sdk to abstract wrapping generic onchain calls (similar to multicall3) with flashloans.

flashloan-rs • Minimal flashloan borrower contracts with an extensible rust sdk. Getting Started Flashloan-rs is published to crates.io as flashloan-r

An unofficial Rust SDK for Clerk.dev

An unofficial clerk.dev SDK for rust Note: This SDK is updated frequently to keep up with any changes to the actual Clerk API. If you see anything tha

Unofficial Rust SDK library for Uniswap smart contracts.

uniswap-rs Unofficial Rust SDK library for Uniswap smart contracts. Quickstart Add this to your Cargo.toml: [dependencies] uniswap-rs = { git = "https

Avalanche APIs/VM SDK in Rust

avalanche-rs ⚠️ avalanche-rs is alpha-level software and is not ready for production use. Do not use avalanche-rs to run production workloads. See the

Comments
  • feat: add support for ERiC 40

    feat: add support for ERiC 40

    • add bindings as of ERiC 40.1 (preprocessed with cpp)
    • make needed changes based on bindings

    Side effect:

    • change ProcessingFlag to bitwise left shift numbers (as in header files)
    opened by zembrowski 0
Owner
I use Rust btw
null
Kryptokrona SDK in Rust for building decentralized private communication and payment systems.

Kryptokrona Rust SDK Kryptokrona is a decentralized blockchain from the Nordic based on CryptoNote, which forms the basis for Monero, among others. Cr

null 5 May 25, 2023
Helper library for interacting with Terra assets (SDK coins and CW20 tokens)

terra-asset Helpers for interacting with Terra assets, including native coins and CW20 tokens Usage This crate contains two struct types: AssetInfo st

larry 9 Jan 3, 2022
tulipv2 vaults and v1 lending program sdk & examples

tulipv2-sdk Warning Unaudited, possibly untested sdk Tulip Protocol takes no responsibility for any (financial, physical, emotional, etc..) damage tha

Tulip Protocol 16 Oct 26, 2022
A library facilitating the signing and broadcasting of transactions on Cosmos SDK-based blockchains

txf Transaction factory - a library facilitating the signing and broadcasting of transactions (txs) on Cosmos SDK-based blockchains. How to use Exampl

larry 5 Jun 29, 2023
flow-rust-sdk utilizes the Flow gRPC AccessAPI to make requests on the flow blockchain.

Welcome to the Flow-Rust-SDK! We're glad to have you here. There are a few important items that we should cover real quick before you dive in. Version

null 8 Jul 26, 2022
Pokémon TCG SDK - Rust

Pokémon TCG SDK - Rust This is the Pokémon TCG SDK Rust implementation. It is a wrapper around the Pokémon TCG API of pokemontcg.io. Usage Configurati

Pokémon TCG Developers 2 Dec 14, 2022
A template to build smart contracts in Rust to run inside a Cosmos SDK module on all chains that enable it.

CosmWasm Starter Pack This is a template to build smart contracts in Rust to run inside a Cosmos SDK module on all chains that enable it. To understan

null 1 Mar 7, 2022
Smart Contract built in Rust to run inside Cosmos SDK module on all chains that enable it

CoinSwap is a Smart Contract that is built on the terra blockchain and can be used to swap cryptocurrencies such as LUNA, UST, TerraUSD, Anchor, Mirror Protocol, LUNI and other CW20 tokens. The Project also contains a smart contract which works as a analysis tool for the gas fees on the Terra Blockchain.

Prajjwal Chittori 9 Oct 11, 2022
Lazerpay SDK for Rust 🦀

?? Lazerpay Rust SDK This crate integrates the Lazerpay payment gateway for accepting cryptocurrency payments. Usage Add the following to your cargo d

Lord_Sarcastic 15 Sep 21, 2022
This crate reimplements Gelato's Relay SDK in Rust

Gelato Relay SDK This crate reimplements Gelato's Relay SDK in Rust. It simply wraps Gelato Relay requests and responses to/from Gelato endpoints with

Nomad 30 Oct 20, 2022