From 31757f21ba81a13d0d2cdb2b7f0a1174d3419566 Mon Sep 17 00:00:00 2001 From: Merlin Scholz Date: Wed, 13 May 2026 20:15:33 +0200 Subject: Initial commit --- .gitignore | 43 + .idea/.gitignore | 3 + .idea/dictionaries/project.xml | 7 + .idea/gradle.xml | 17 + .idea/misc.xml | 7 + build.gradle.kts | 26 + gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 60756 bytes gradle/wrapper/gradle-wrapper.properties | 6 + gradlew | 234 +++ gradlew.bat | 89 + settings.gradle.kts | 1 + .../security/AuthenticationCertificate.java | 57 + .../scholz/libebics/security/EbicsCertificate.java | 57 + .../libebics/security/EbicsCertificateType.java | 5 + .../libebics/security/EncryptionCertificate.java | 57 + .../libebics/security/SignatureCertificate.java | 58 + .../xmlmodel/h005/EbicsUnsecuredRequest.java | 13 + src/main/resources/schemas/h005/ebics_H005.xsd | 11 + src/main/resources/schemas/h005/ebics_hev.xsd | 135 ++ .../schemas/h005/ebics_keymgmt_request_H005.xsd | 523 +++++ .../schemas/h005/ebics_keymgmt_response_H005.xsd | 137 ++ .../resources/schemas/h005/ebics_orders_H005.xsd | 2094 ++++++++++++++++++++ .../resources/schemas/h005/ebics_request_H005.xsd | 349 ++++ .../resources/schemas/h005/ebics_response_H005.xsd | 167 ++ .../schemas/h005/ebics_signature_S002.xsd | 177 ++ .../resources/schemas/h005/ebics_types_H005.xsd | 1885 ++++++++++++++++++ .../resources/schemas/h005/xmldsig-core-schema.xsd | 318 +++ .../libebics/security/KeyManagementTest.java | 32 + 28 files changed, 6508 insertions(+) create mode 100644 .gitignore create mode 100644 .idea/.gitignore create mode 100644 .idea/dictionaries/project.xml create mode 100644 .idea/gradle.xml create mode 100644 .idea/misc.xml create mode 100644 build.gradle.kts create mode 100644 gradle/wrapper/gradle-wrapper.jar create mode 100644 gradle/wrapper/gradle-wrapper.properties create mode 100755 gradlew create mode 100644 gradlew.bat create mode 100644 settings.gradle.kts create mode 100644 src/main/java/ruhr/scholz/libebics/security/AuthenticationCertificate.java create mode 100644 src/main/java/ruhr/scholz/libebics/security/EbicsCertificate.java create mode 100644 src/main/java/ruhr/scholz/libebics/security/EbicsCertificateType.java create mode 100644 src/main/java/ruhr/scholz/libebics/security/EncryptionCertificate.java create mode 100644 src/main/java/ruhr/scholz/libebics/security/SignatureCertificate.java create mode 100644 src/main/java/ruhr/scholz/libebics/xmlmodel/h005/EbicsUnsecuredRequest.java create mode 100755 src/main/resources/schemas/h005/ebics_H005.xsd create mode 100755 src/main/resources/schemas/h005/ebics_hev.xsd create mode 100755 src/main/resources/schemas/h005/ebics_keymgmt_request_H005.xsd create mode 100755 src/main/resources/schemas/h005/ebics_keymgmt_response_H005.xsd create mode 100755 src/main/resources/schemas/h005/ebics_orders_H005.xsd create mode 100755 src/main/resources/schemas/h005/ebics_request_H005.xsd create mode 100755 src/main/resources/schemas/h005/ebics_response_H005.xsd create mode 100755 src/main/resources/schemas/h005/ebics_signature_S002.xsd create mode 100755 src/main/resources/schemas/h005/ebics_types_H005.xsd create mode 100755 src/main/resources/schemas/h005/xmldsig-core-schema.xsd create mode 100644 src/test/java/ruhr/scholz/libebics/security/KeyManagementTest.java diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1fac4d5 --- /dev/null +++ b/.gitignore @@ -0,0 +1,43 @@ +.gradle +build/ +!gradle/wrapper/gradle-wrapper.jar +!**/src/main/**/build/ +!**/src/test/**/build/ +.kotlin + +### IntelliJ IDEA ### +.idea/modules.xml +.idea/jarRepositories.xml +.idea/compiler.xml +.idea/libraries/ +*.iws +*.iml +*.ipr +out/ +!**/src/main/**/out/ +!**/src/test/**/out/ + +### Eclipse ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache +bin/ +!**/src/main/**/bin/ +!**/src/test/**/bin/ + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ + +### VS Code ### +.vscode/ + +### Mac OS ### +.DS_Store \ No newline at end of file diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/.idea/dictionaries/project.xml b/.idea/dictionaries/project.xml new file mode 100644 index 0000000..8a4f4e7 --- /dev/null +++ b/.idea/dictionaries/project.xml @@ -0,0 +1,7 @@ + + + + ebics + + + \ No newline at end of file diff --git a/.idea/gradle.xml b/.idea/gradle.xml new file mode 100644 index 0000000..05eca02 --- /dev/null +++ b/.idea/gradle.xml @@ -0,0 +1,17 @@ + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..bdbcd2a --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/build.gradle.kts b/build.gradle.kts new file mode 100644 index 0000000..6288bbc --- /dev/null +++ b/build.gradle.kts @@ -0,0 +1,26 @@ +plugins { + id("java") +} + +group = "ruhr.scholz" +version = "1.0-SNAPSHOT" + +repositories { + mavenCentral() +} + +dependencies { + testImplementation(platform("org.junit:junit-bom:5.10.0")) + testImplementation("org.junit.jupiter:junit-jupiter") + testRuntimeOnly("org.junit.platform:junit-platform-launcher") + // Source: https://mvnrepository.com/artifact/org.bouncycastle/bcprov-jdk18on + implementation("org.bouncycastle:bcprov-jdk18on:1.83") + // Source: https://mvnrepository.com/artifact/org.bouncycastle/bcpkix-jdk18on + implementation("org.bouncycastle:bcpkix-jdk18on:1.83") + // Source: https://mvnrepository.com/artifact/jakarta.xml.bind/jakarta.xml.bind-api + implementation("jakarta.xml.bind:jakarta.xml.bind-api:4.0.5") +} + +tasks.test { + useJUnitPlatform() +} \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000..249e583 Binary files /dev/null and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..dddb17a --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Mon Apr 13 13:47:32 CEST 2026 +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.14-bin.zip +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew new file mode 100755 index 0000000..1b6c787 --- /dev/null +++ b/gradlew @@ -0,0 +1,234 @@ +#!/bin/sh + +# +# Copyright © 2015-2021 the original authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +############################################################################## +# +# Gradle start up script for POSIX generated by Gradle. +# +# Important for running: +# +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is +# noncompliant, but you have some other compliant shell such as ksh or +# bash, then to run this script, type that shell name before the whole +# command line, like: +# +# ksh Gradle +# +# Busybox and similar reduced shells will NOT work, because this script +# requires all of these POSIX shell features: +# * functions; +# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», +# «${var#prefix}», «${var%suffix}», and «$( cmd )»; +# * compound commands having a testable exit status, especially «case»; +# * various built-in commands including «command», «set», and «ulimit». +# +# Important for patching: +# +# (2) This script targets any POSIX shell, so it avoids extensions provided +# by Bash, Ksh, etc; in particular arrays are avoided. +# +# The "traditional" practice of packing multiple parameters into a +# space-separated string is a well documented source of bugs and security +# problems, so this is (mostly) avoided, by progressively accumulating +# options in "$@", and eventually passing that to Java. +# +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; +# see the in-line comments for details. +# +# There are tweaks for specific operating systems such as AIX, CygWin, +# Darwin, MinGW, and NonStop. +# +# (3) This script is generated from the Groovy template +# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# +############################################################################## + +# Attempt to set APP_HOME + +# Resolve links: $0 may be a link +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac +done + +APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit + +APP_NAME="Gradle" +APP_BASE_NAME=${0##*/} + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD=maximum + +warn () { + echo "$*" +} >&2 + +die () { + echo + echo "$*" + echo + exit 1 +} >&2 + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD=$JAVA_HOME/jre/sh/java + else + JAVACMD=$JAVA_HOME/bin/java + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD=java + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac +fi + +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. + +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) + + # Now convert the arguments - kludge to limit ourselves to /bin/sh + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) + fi + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg + done +fi + +# Collect all arguments for the java command; +# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of +# shell script including quotes and variable substitutions, so put them in +# double quotes to make sure that they get re-expanded; and +# * put everything else in single quotes, so that it's not re-expanded. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 0000000..ac1b06f --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,89 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto execute + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/settings.gradle.kts b/settings.gradle.kts new file mode 100644 index 0000000..c622116 --- /dev/null +++ b/settings.gradle.kts @@ -0,0 +1 @@ +rootProject.name = "libebics" \ No newline at end of file diff --git a/src/main/java/ruhr/scholz/libebics/security/AuthenticationCertificate.java b/src/main/java/ruhr/scholz/libebics/security/AuthenticationCertificate.java new file mode 100644 index 0000000..6154c40 --- /dev/null +++ b/src/main/java/ruhr/scholz/libebics/security/AuthenticationCertificate.java @@ -0,0 +1,57 @@ +package ruhr.scholz.libebics.security; + +import org.bouncycastle.asn1.x500.X500Name; +import org.bouncycastle.asn1.x509.Extension; +import org.bouncycastle.asn1.x509.KeyUsage; +import org.bouncycastle.cert.X509CertificateHolder; +import org.bouncycastle.cert.X509v3CertificateBuilder; +import org.bouncycastle.crypto.AsymmetricCipherKeyPair; +import org.bouncycastle.crypto.util.SubjectPublicKeyInfoFactory; +import org.bouncycastle.operator.ContentSigner; +import org.bouncycastle.operator.DefaultDigestAlgorithmIdentifierFinder; +import org.bouncycastle.operator.DefaultSignatureAlgorithmIdentifierFinder; +import org.bouncycastle.operator.OperatorCreationException; +import org.bouncycastle.operator.bc.BcRSAContentSignerBuilder; + +import java.io.IOException; +import java.math.BigInteger; +import java.security.SecureRandom; +import java.util.Calendar; +import java.util.Date; +import java.util.GregorianCalendar; + +public class AuthenticationCertificate extends EbicsCertificate{ + public enum AuthenticationCertificateType implements EbicsCertificateType { + X002 + } + + public AuthenticationCertificate(AuthenticationCertificateType authenticationCertificateType){ + this.certificateType = authenticationCertificateType; + this.keyPair = generateKeyPair(4096); + this.certificate = generateAuthenticationCertificate(this.keyPair); + } + + private static X509CertificateHolder generateAuthenticationCertificate(AsymmetricCipherKeyPair asymmetricCipherKeyPair){ + GregorianCalendar endCal = new GregorianCalendar(); + endCal.set(9999, Calendar.FEBRUARY, 31, 59, 59, 59); + try { + X509v3CertificateBuilder x509v3CertificateBuilder = new X509v3CertificateBuilder( + new X500Name("CN=SCHOLZ01"), + new BigInteger(160, new SecureRandom()), + new Date(), + endCal.getTime(), + new X500Name("CN=SCHOLZ01"), + SubjectPublicKeyInfoFactory.createSubjectPublicKeyInfo(asymmetricCipherKeyPair.getPublic()) + ); + x509v3CertificateBuilder.addExtension(Extension.keyUsage, true, new KeyUsage(KeyUsage.digitalSignature)); + + ContentSigner contentSigner = new BcRSAContentSignerBuilder( + new DefaultSignatureAlgorithmIdentifierFinder().find("SHA256withRSA"), + new DefaultDigestAlgorithmIdentifierFinder().find("SHA-256") + ).build(asymmetricCipherKeyPair.getPrivate()); + return x509v3CertificateBuilder.build(contentSigner); + } catch (IOException | OperatorCreationException e) { + throw new RuntimeException(e); + } + } +} diff --git a/src/main/java/ruhr/scholz/libebics/security/EbicsCertificate.java b/src/main/java/ruhr/scholz/libebics/security/EbicsCertificate.java new file mode 100644 index 0000000..375cc0b --- /dev/null +++ b/src/main/java/ruhr/scholz/libebics/security/EbicsCertificate.java @@ -0,0 +1,57 @@ +package ruhr.scholz.libebics.security; + +import org.bouncycastle.cert.X509CertificateHolder; +import org.bouncycastle.crypto.AsymmetricCipherKeyPair; +import org.bouncycastle.crypto.digests.SHA256Digest; +import org.bouncycastle.crypto.generators.RSAKeyPairGenerator; +import org.bouncycastle.crypto.params.RSAKeyGenerationParameters; +import org.bouncycastle.util.encoders.Hex; + +import java.io.IOException; +import java.math.BigInteger; +import java.security.SecureRandom; + +public abstract class EbicsCertificate { + X509CertificateHolder certificate; + EbicsCertificateType certificateType; + AsymmetricCipherKeyPair keyPair; + + static AsymmetricCipherKeyPair generateKeyPair(int keySize) { + RSAKeyPairGenerator rsaKeyPairGenerator = new RSAKeyPairGenerator(); + RSAKeyGenerationParameters rsaKeyGenerationParameters = new RSAKeyGenerationParameters( + BigInteger.valueOf(65537), + new SecureRandom(), + keySize, + 80 + ); + rsaKeyPairGenerator.init(rsaKeyGenerationParameters); + return rsaKeyPairGenerator.generateKeyPair(); + } + + byte[] getFingerprint() { + SHA256Digest sha256Digest = new SHA256Digest(); + byte[] encodedCertificate = null; + try { + encodedCertificate = this.certificate.getEncoded(); + } catch (IOException e) { + throw new RuntimeException(e); + } + byte[] fingerprint = new byte[sha256Digest.getDigestSize()]; + + sha256Digest.update(encodedCertificate, 0, encodedCertificate.length); + sha256Digest.doFinal(fingerprint, 0); + + return fingerprint; + } + + String getFingerprintString(boolean prettyPrint) { + if(prettyPrint){ + return Hex.toHexString( + this.getFingerprint()) + .toUpperCase() + .replaceAll("(?<=..)(..)", ":$1"); + } else { + return Hex.toHexString(this.getFingerprint()); + } + } +} diff --git a/src/main/java/ruhr/scholz/libebics/security/EbicsCertificateType.java b/src/main/java/ruhr/scholz/libebics/security/EbicsCertificateType.java new file mode 100644 index 0000000..01ebe1d --- /dev/null +++ b/src/main/java/ruhr/scholz/libebics/security/EbicsCertificateType.java @@ -0,0 +1,5 @@ +package ruhr.scholz.libebics.security; + +public interface EbicsCertificateType { + +} diff --git a/src/main/java/ruhr/scholz/libebics/security/EncryptionCertificate.java b/src/main/java/ruhr/scholz/libebics/security/EncryptionCertificate.java new file mode 100644 index 0000000..db9965b --- /dev/null +++ b/src/main/java/ruhr/scholz/libebics/security/EncryptionCertificate.java @@ -0,0 +1,57 @@ +package ruhr.scholz.libebics.security; + +import org.bouncycastle.asn1.x500.X500Name; +import org.bouncycastle.asn1.x509.Extension; +import org.bouncycastle.asn1.x509.KeyUsage; +import org.bouncycastle.cert.X509CertificateHolder; +import org.bouncycastle.cert.X509v3CertificateBuilder; +import org.bouncycastle.crypto.AsymmetricCipherKeyPair; +import org.bouncycastle.crypto.util.SubjectPublicKeyInfoFactory; +import org.bouncycastle.operator.ContentSigner; +import org.bouncycastle.operator.DefaultDigestAlgorithmIdentifierFinder; +import org.bouncycastle.operator.DefaultSignatureAlgorithmIdentifierFinder; +import org.bouncycastle.operator.OperatorCreationException; +import org.bouncycastle.operator.bc.BcRSAContentSignerBuilder; + +import java.io.IOException; +import java.math.BigInteger; +import java.security.SecureRandom; +import java.util.Calendar; +import java.util.Date; +import java.util.GregorianCalendar; + +public class EncryptionCertificate extends EbicsCertificate{ + public enum EncryptionCertificateType implements EbicsCertificateType { + E002 + } + + public EncryptionCertificate(EncryptionCertificateType encryptionCertificateType){ + this.certificateType = encryptionCertificateType; + this.keyPair = generateKeyPair(4096); + this.certificate = generateEncryptionCertificate(this.keyPair); + } + + private static X509CertificateHolder generateEncryptionCertificate(AsymmetricCipherKeyPair asymmetricCipherKeyPair){ + GregorianCalendar endCal = new GregorianCalendar(); + endCal.set(9999, Calendar.FEBRUARY, 31, 59, 59, 59); + try { + X509v3CertificateBuilder x509v3CertificateBuilder = new X509v3CertificateBuilder( + new X500Name("CN=SCHOLZ01"), + new BigInteger(160, new SecureRandom()), + new Date(), + endCal.getTime(), + new X500Name("CN=SCHOLZ01"), + SubjectPublicKeyInfoFactory.createSubjectPublicKeyInfo(asymmetricCipherKeyPair.getPublic()) + ); + x509v3CertificateBuilder.addExtension(Extension.keyUsage, true, new KeyUsage(KeyUsage.keyEncipherment)); + + ContentSigner contentSigner = new BcRSAContentSignerBuilder( + new DefaultSignatureAlgorithmIdentifierFinder().find("SHA256withRSA"), + new DefaultDigestAlgorithmIdentifierFinder().find("SHA-256") + ).build(asymmetricCipherKeyPair.getPrivate()); + return x509v3CertificateBuilder.build(contentSigner); + } catch (IOException | OperatorCreationException e) { + throw new RuntimeException(e); + } + } +} diff --git a/src/main/java/ruhr/scholz/libebics/security/SignatureCertificate.java b/src/main/java/ruhr/scholz/libebics/security/SignatureCertificate.java new file mode 100644 index 0000000..529651e --- /dev/null +++ b/src/main/java/ruhr/scholz/libebics/security/SignatureCertificate.java @@ -0,0 +1,58 @@ +package ruhr.scholz.libebics.security; + +import org.bouncycastle.asn1.x500.X500Name; +import org.bouncycastle.asn1.x509.Extension; +import org.bouncycastle.asn1.x509.KeyUsage; +import org.bouncycastle.cert.X509CertificateHolder; +import org.bouncycastle.cert.X509v3CertificateBuilder; +import org.bouncycastle.crypto.AsymmetricCipherKeyPair; +import org.bouncycastle.crypto.util.SubjectPublicKeyInfoFactory; +import org.bouncycastle.operator.ContentSigner; +import org.bouncycastle.operator.DefaultDigestAlgorithmIdentifierFinder; +import org.bouncycastle.operator.DefaultSignatureAlgorithmIdentifierFinder; +import org.bouncycastle.operator.OperatorCreationException; +import org.bouncycastle.operator.bc.BcRSAContentSignerBuilder; + +import java.io.IOException; +import java.math.BigInteger; +import java.security.SecureRandom; +import java.util.Calendar; +import java.util.Date; +import java.util.GregorianCalendar; + +public class SignatureCertificate extends EbicsCertificate{ + public enum SignatureCertificateType implements EbicsCertificateType { + A005, + A006 + } + + public SignatureCertificate(SignatureCertificateType signatureCertificateType){ + this.certificateType = signatureCertificateType; + this.keyPair = generateKeyPair(4096); + this.certificate = generateSignatureCertificate(this.keyPair); + } + + public static X509CertificateHolder generateSignatureCertificate(AsymmetricCipherKeyPair asymmetricCipherKeyPair){ + GregorianCalendar endCal = new GregorianCalendar(); + endCal.set(9999, Calendar.FEBRUARY, 31, 59, 59, 59); + try { + X509v3CertificateBuilder x509v3CertificateBuilder = new X509v3CertificateBuilder( + new X500Name("CN=SCHOLZ01"), + new BigInteger(160, new SecureRandom()), + new Date(), + endCal.getTime(), + new X500Name("CN=SCHOLZ01"), + SubjectPublicKeyInfoFactory.createSubjectPublicKeyInfo(asymmetricCipherKeyPair.getPublic()) + ); + x509v3CertificateBuilder.addExtension(Extension.keyUsage, true, new KeyUsage(KeyUsage.nonRepudiation)); + + ContentSigner contentSigner = new BcRSAContentSignerBuilder( + new DefaultSignatureAlgorithmIdentifierFinder().find("SHA256withRSA"), + new DefaultDigestAlgorithmIdentifierFinder().find("SHA-256") + ).build(asymmetricCipherKeyPair.getPrivate()); + return x509v3CertificateBuilder.build(contentSigner); + } catch (IOException | OperatorCreationException e) { + throw new RuntimeException(e); + } + } +} diff --git a/src/main/java/ruhr/scholz/libebics/xmlmodel/h005/EbicsUnsecuredRequest.java b/src/main/java/ruhr/scholz/libebics/xmlmodel/h005/EbicsUnsecuredRequest.java new file mode 100644 index 0000000..b26f526 --- /dev/null +++ b/src/main/java/ruhr/scholz/libebics/xmlmodel/h005/EbicsUnsecuredRequest.java @@ -0,0 +1,13 @@ +package ruhr.scholz.libebics.xmlmodel.h005; + +import jakarta.xml.bind.annotation.XmlAttribute; +import jakarta.xml.bind.annotation.XmlRootElement; + +@XmlRootElement(name = "ebicsUnsecuredRequest", namespace = "urn:org:ebics:H005") +public class EbicsUnsecuredRequest { + @XmlAttribute(name = "Version") + private String version; + + @XmlAttribute(name = "Revision") + private int revision; +} diff --git a/src/main/resources/schemas/h005/ebics_H005.xsd b/src/main/resources/schemas/h005/ebics_H005.xsd new file mode 100755 index 0000000..149bf26 --- /dev/null +++ b/src/main/resources/schemas/h005/ebics_H005.xsd @@ -0,0 +1,11 @@ + + + + ebics_H005.xsd inkludiert alle Schemadateien des EBICS-Protokolls, um die Eindeutigkeit von Element- und Typnamen im EBCIS Namespace zu erzwingen. + ebics_H005.xsd includes all schema files for the EBICS protocol in order to enforce unique element and type names in the EBICS namespace. + + + + + + diff --git a/src/main/resources/schemas/h005/ebics_hev.xsd b/src/main/resources/schemas/h005/ebics_hev.xsd new file mode 100755 index 0000000..8ee8458 --- /dev/null +++ b/src/main/resources/schemas/h005/ebics_hev.xsd @@ -0,0 +1,135 @@ + + + + ebics_hev.xsd ist das EBICS-Protokollschema entweder für Anfragen oder Rückmeldungen der Bank zu unterstützten EBICS-Versionen. + ebics_hev.xsd is the appropriate EBICS protocol schema either for requests or responses according the EBICS versions supported by a bank. + + + + Datentyp für die Host-ID. + Dataype for Host-ID. + + + + + + + + Datentyp für allgemeine Auftragsarten (Grundtyp). + Datatype for general order types (basic type). + + + + + + + + + Datentyp für Antwortcodes. + Datatype for the return code + + + + + + + + + Datentyp für den Erklärungstext zum Antwortcode. + Datatype for report text with respect to the return code + + + + + + + + Datentyp für eine Versionsnummer + Datatype for a release number + + + + + + + + + Datentyp für Versionsnummer des EBICS-schemas + Datatype for release-number of the EBICS scheme + + + + + + + + + Datentyp für technische Fehler. + Datatype for technical error + + + + + Rückmeldung des Ausführungsstatus mit einer eindeutigen Fehlernummer. + Confirmation of the carried out status with a unique error code. + + + + + Klartext der Rückmeldung des Ausführungsstatus. + Clear text of the response (carried out status). + + + + + + + Datentyp für die Request-Daten + Data type for Request data + + + + + + + + + Datentyp für die Response-Daten + Data type for Request data + + + + + + Von der Bank unterstützte EBICS-Versionen, z.B. 2.4 + EBICS-releases supported by the bank, e.g. 2.4 + + + + + + + der EBICS-Version eindeutig zugeordnete Schema-Version, z.B. H003 + EBICS-scheme-version, e.g. H003, well-defined for EBICS-release-Version + + + + + + + + + + + + Requestdaten + request data + + + + + Responsedaten + response data + + + diff --git a/src/main/resources/schemas/h005/ebics_keymgmt_request_H005.xsd b/src/main/resources/schemas/h005/ebics_keymgmt_request_H005.xsd new file mode 100755 index 0000000..cb93d3c --- /dev/null +++ b/src/main/resources/schemas/h005/ebics_keymgmt_request_H005.xsd @@ -0,0 +1,523 @@ + + + + + ebics_keymgmt_request_H005.xsd ist das EBICS-Protokollschema für Schlüsselmanagement-Anfragen (HIA, HPB, HSA, INI). + + + + XML-Signature. + + + + + + + Datentyp für den statischen EBICS-Header (allgemein). + + + + + Hostname des Banksystems. + + + + + Zufallswert; damit wird die Initialisierungsnachricht des Clients einzigartig; nur anzugeben, falls Authentifikationssignatur vorhanden. + + + + + aktueller Zeitstempel zur Begrenzung der serverseitigen Nonce-Speicherung; nur anzugeben, falls Authentifikationssignatur vorhanden. + + + + + Kunden-ID des serverseitig administrierten Kunden. + + + + + Teilnehmer-ID des serverseitig zu diesem Kunden administrierten Teilnehmers. + + + + + technische User-ID für Multi-User-Systeme. + + + + + Kennung des Kundenprodukts bzw. Herstellerkennung oder Name. + + + + + Auftragsdetails. + + + + + Angabe des Sicherheitsmediums, das der Kunde verwendet. + + + + + + + + Datentyp für OrderDetails im statischen EBICS-Header (allgemein). + + + + + Auftragsart. + + + + + + + Datentyp für Element mit Kennung des Kundenprodukts bzw. Herstellerkennung oder Name. + + + + + + Sprachkennzeichen der Kundenproduktversion (gemäß ISO 639). + + + + + Kennung des Herausgebers des Kundenprodukts bzw. des betreuenden Kreditinstituts. + + + + + + + + Datentyp für den leeren variablen EBICS-Header von Key Managemen Aufträgen. + + + + + + + + Anfragestruktur für ungesicherte Auftragsarten HIA (Authentifikations- und Verschlüsselungsschlüssel senden) und INI (bankfachllichen Schlüssel senden). + + + + + + enthält die technischen Transaktionsdaten. + + + + + + enhält alle festen Headereinträge. + + + + + enthält alle variablen Headereinträge. + + + + + + + + + enthält die Auftragsdaten. + + + + + + + + + Transfer von Auftragsdaten. + + + + + + enthält Auftragsdaten. + + + + + + + + + + + + + + + + + + + + + + Datentyp für den statischen EBICS-Header bei ungesicherten Sendeauftragsarten (Aufträge HIA und INI): kein Nonce, kein Timestamp, keine EU-Datei, keine X001 Authentifizierung, keine Verschlüsselung, keine Digests der öffentlichen Bankschlüssel, Nutzdaten komprimiert + + + + + + + Hostname des Banksystems. + + + + + Zufallswert; damit wird die Initialisierungsnachricht des Clients einzigartig; nicht anzugeben für ebicsUnsecuredRequest. + + + + + aktueller Zeitstempel zur Begrenzung der serverseitigen Nonce-Speicherung; nicht anzugeben für ebicsUnsecuredRequest. + + + + + Kunden-ID des serverseitig administrierten Kunden. + + + + + Teilnehmer-ID des serverseitig zu diesem Kunden administrierten Teilnehmers. + + + + + technische User-ID für Multi-User-Systeme. + + + + + Kennung des Kundenprodukts bzw. Herstellerkennung oder Name. + + + + + Auftragsdetails. + + + + + Angabe des Sicherheitsmediums, das der Kunde verwendet. + + + + + + + + + + Datentyp für OrderDetails im statischen EBICS-Header von ebicsUnsecuredRequest. + + + + + + + Auftragsart. + + + + + + + + + Anfragestruktur für Auftragsarten ohne Übertragung der Digests der öffentlichen Bankschlüssel (HPB Bankschlüssel abholen). + + + + + + enthält die technischen Transaktionsdaten. + + + + + + enhält alle festen Headereinträge. + + + + + enthält alle variablen Headereinträge. + + + + + + + + + Authentifikationssignatur. + + + + + enthält optionale Zertifikate (vorgesehen). + + + + + + + + + X.509-Daten des Teilnehmers. + + + + + + + + + + + + Datentyp für den statischen EBICS-Header bei Aufträgen ohne Übertragung der Digests der Bankschlüssel (Auftrag HBP): keine Digests der öffentlichen Bankschlüssel, keine EU-Datei, keine Nutzdaten, OrderId optional!, Nonce, Timestamp, X001 Authentifizierung, Auftragsattribut DZHNN + + + + + + + Hostname des Banksystems. + + + + + Zufallswert; damit wird die Initialisierungsnachricht des Clients einzigartig. + + + + + aktueller Zeitstempel zur Begrenzung der serverseitigen Nonce-Speicherung. + + + + + Kunden-ID des serverseitig administrierten Kunden. + + + + + Teilnehmer-ID des serverseitig zu diesem Kunden administrierten Teilnehmers. + + + + + technische User-ID für Multi-User-Systeme. + + + + + Kennung des Kundenprodukts bzw. Herstellerkennung oder Name. + + + + + Auftragsdetails. + + + + + Angabe des Sicherheitsmediums, das der Kunde verwendet. + + + + + + + + + + Datentyp für OrderDetails im statischen EBICS-Header von ebicsNoPubKeyDigestsRequest. + + + + + + + Auftragsart. + + + + + + + + + The structure for uploads contains order data and the ESs, but without an authentication signature and data digest of bank keys. + Anfragestruktur für Sendeaufträge mit EU-Datei und Nutzdaten aber ohne Authentifizierungssignatur und Digests der Bankschlüssel. + + + + + + Contains technical transaction data. + enthält die technischen Transaktionsdaten. + + + + + + Contains all fixed header entries. + enhält alle festen Headereinträge. + + + + + Contains all mutable header entries. + enthält alle variablen Headereinträge. + + + + + + + + + Contains the order data and the ESs. + enthält die Auftragsdaten und EUs. + + + + + + + + + Transfer of order data and the ESs. + Transfer von Auftragsdaten und EUs. + + + + + + Contains the ESs. + enthält Signaturdaten (EUs). + + + + + + + + + + + + Contains the order data + enthält Auftragsdaten. + + + + + + + + + + + + + + + + + + + + + + Datentyp für den statischen EBICS-Header für ebicsUnsignedRequest.Datentyp für den statischen EBICS-Header bei Aufträgen ohne Authentifizierungssignatur (Auftrag HSA): keine X001 Authentifizierung, keine Digests der öffentlichen Bankschlüssel, EU-Datei, Nutzdaten, Nonce, Timestamp, OrderId, Auftragsattribut OZNNN + + + + + + + Hostname des Banksystems. + + + + + Zufallswert; damit wird die Initialisierungsnachricht des Clients einzigartig; nicht anzugeben bei ebicsUnsignedRequest. + + + + + aktueller Zeitstempel zur Begrenzung der serverseitigen Nonce-Speicherung; nicht anzugeben bei ebicsUnsignedRequest. + + + + + Kunden-ID des serverseitig administrierten Kunden. + + + + + Teilnehmer-ID des serverseitig zu diesem Kunden administrierten Teilnehmers. + + + + + technische User-ID für Multi-User-Systeme. + + + + + Kennung des Kundenprodukts bzw. Herstellerkennung oder Name. + + + + + Auftragsdetails. + + + + + Angabe des Sicherheitsmediums, das der Kunde verwendet. + + + + + + + + + + Datentyp für OrderDetails im statischen EBICS-Header von ebicsUnsignedRequest. + + + + + + + Auftragsart. + + + + + + + diff --git a/src/main/resources/schemas/h005/ebics_keymgmt_response_H005.xsd b/src/main/resources/schemas/h005/ebics_keymgmt_response_H005.xsd new file mode 100755 index 0000000..dfc3390 --- /dev/null +++ b/src/main/resources/schemas/h005/ebics_keymgmt_response_H005.xsd @@ -0,0 +1,137 @@ + + + + + ebics_keymgmt_response_H005.xsd ist das EBICS-Protokollschema für Schlüsselmanagement-Antwortnachrichten (HIA, HPB, HSA, INI). + + + + XML-Signature. + + + + + + + Electronic Banking Internet Communication Standard des Zentralen Kreditausschusses (ZKA): Multibankfähige Schnittstelle zur internetbasierten Kommunikation. + + + + + + enthält die technischen Transaktionsdaten. + + + + + + enhält alle festen Headereinträge. + + + + + + + + enthält alle variablen Headereinträge. + + + + + + + + + enthält die Auftragsdaten und den fachlichen ReturnCode. + + + + + + Transfer von Auftragsdaten; nur bei Download anzugeben (HPB). + + + + + + Informationen zur Verschlüsselung der Auftragsdaten + + + + + + + + + + + + enthält Auftragsdaten. + + + + + + + + + + + + + + + + Antwortcode für den vorangegangenen Transfer. + + + + + + + + + + + + Zeitstempel der letzten Aktualisierung der Bankparameter; nur in der Initialisierungsphase anzugeben. + + + + + + + + + + + + + + + + + + + Datentyp für den variablen EBICS-Header. + + + + + Auftragsnummer von Sendeaufträgen gemäß DFÜ-Abkommen (used for all key management order types except download order type HPB). + + + + + Rückmeldung des Ausführungsstatus mit einer eindeutigen Fehlernummer. + + + + + Klartext der Rückmeldung des Ausführungsstatus. + + + + + + diff --git a/src/main/resources/schemas/h005/ebics_orders_H005.xsd b/src/main/resources/schemas/h005/ebics_orders_H005.xsd new file mode 100755 index 0000000..30db121 --- /dev/null +++ b/src/main/resources/schemas/h005/ebics_orders_H005.xsd @@ -0,0 +1,2094 @@ + + + + + ebics_orders_H005.xsd contains order-based reference elements and order-based type definitions for EBICS. + ebics_orders_H005.xsd enthält auftragsbezogene Referenzelemente und auftragsbezogene Typdefinitionen für EBICS. + + + + + + + XML-Klartext-Auftragsdaten für neue EBICS-Auftragsarten. + Order data in XML format for new EBICS order types. + + + + + Auftragsdaten für Auftragsart HAA (Antwort: abrufbare Auftragsarten abholen). + Order data for order type HAA (response: receive downloadable order types). + + + + + Auftragsdaten für Auftragsart HCA (Anfrage: Änderung der Teilnehmerschlüssel für Authentifikation und Verschlüsselung). + Order data for order type HCA (request: replace user's keys for authentication and encryption). + + + + + Auftragsdaten für Auftragsart HCS (Anfrage: Schlüsselwechsel aller Schlüssel). + Order data for order type HCS (request: replace all keys). + + + + + Auftragsdaten für Auftragsart HIA (Anfrage: Initialisierung der Teilnehmerschlüssel für Authentifikation und Verschlüsselung). + Order data for order type HIA (request: initialise user's keys for authentication and encryption). + + + + + Order data for order type H3K (request: initialise all three user's keys). + Auftragsdaten für Auftragsart H3K (Anfrage: Initialisierung aller drei Teilnehmerschlüssel). + + + + + Auftragsdaten für Auftragsart HKD (Antwort: Kunden- und Teilnehmerdaten des Kunden abholen). + Order data for order type HKD (response: receive customer-based information on the customer and the customer's users). + + + + Schlüssel zur Identifikation des Kontos. + Key for the identification of the account. + + + + + + + Referenz auf die Konten-Identifikationsschlüssel. + Reference to the account identification keys. + + + + + + + + Auftragsdaten für Auftragsart HPB (Antwort: Transfer der Bankschlüssel). + Order data for order type HPB (response: receive bank's public keys). + + + + + Auftragsdaten für Auftragsart HPD (Antwort: Bankparameter abholen). + Order data for order type HPD (response: receive bank parameters). + + + + + Auftragsdaten für Auftragsart HTD (Antwort: Kunden- und Teilnehmerdaten des Teilnehmers abholen). + Order data for order type HTD (response: receive user-based information on the user's customer and the user herself/himself). + + + + Schlüssel zur Identifikation des Kontos. + Key for the identification of the account. + + + + + + + Referenz auf die Konten-Identifikationsschlüssel. + Reference to the account identification keys. + + + + + + + + Auftragsdaten für Auftragsart HVD (Antwort: VEU-Status abrufen). + Order data for order type HVD (response: receive the status of an order currently stored in the distributed signature processing unit). + + + + + Auftragsdaten für Auftragsart HVS (Anfrage: VEU-Storno). + Order data for order type HVS (request: reject an order currently stored in the distributed signature processing unit). + + + + + Auftragsdaten für Auftragsart HVT (Antwort: VEU-Transaktionsdetails abrufen). + Order data for order type HVT (response: receive transaction details of an order currently stored in the distributed signature processing unit). + + + + + + + + + + Auftragsdaten für Auftragsart HVU (Antwort: VEU-Übersicht abholen). + Order data for order type HVU (response: receive summary of orders currently stored in the distributed signature processing unit). + + + + + Auftragsdaten für Auftragsart HVZ (Antwort: VEU-Übersicht mit Zusatzinformationen abholen). + Order data for order type HVZ (response: receive summary of orders currently stored in the distributed signature processing unit with additional information). + + + + + + XML-Strukturen für bankfachliche Elektronische Unterschriften (EUs). + contains the digital signatures. + + + + + enthält die EU des Kreditinstituts. + contains the digital signatures. + + + + + + zusätzliche Auftragsparameter, die zur Ausführung des Auftrags notwendig sind. + additional order parameters required to execute the order. + + + + + zusätzliche Auftragsparameter für Auftragsart HVD. + additional order parameters for order type HVD. + + + + + zusätzliche Auftragsparameter für Auftragsart HVE. + additional order parameters for order type HVE. + + + + + zusätzliche Auftragsparameter für Auftragsart HVS. + additional order parameters for order type HVS. + + + + + zusätzliche Auftragsparameter für Auftragsart HVT. + additional order parameters for order type HVT. + + + + + zusätzliche Auftragsparameter für Auftragsart HVU. + additional order parameters for order type HVU. + + + + + zusätzliche Auftragsparameter für Auftragsart HVZ. + additional order parameters for order type HVZ. + + + + + zusätzliche Auftragsparameter für Standard-Auftragsarten. + additional order parameters for standard order types. + + + + + + Standard-Requeststruktur für HVx-Aufträge (HVD, HVT, HVE, HVS). + Standard request structure for HVx orders (HVD, HVT, HVE, HVS). + + + + Standard-Requestdaten. + Standard request data. + + + + Kunden-ID des Einreichers des ausgewählten Auftrags. + Customer ID of the presenter of the selected order. + + + + + BTF Service Parameter struktur im Falle von BTU/BTD + Identification of the file format in the case of FUL/FDL + + + + + Auftragsnummer des ausgewählten Auftrags. + Order ID of the selected order. + + + + + + + Marker für Elemente und deren Substrukturen, die authentifiziert werden sollen. + Marker for elements and their substructures that are to be authenticated. + + + + Das zugehörige Element ist mitsamt seinen Unterstrukturen zu authentifizieren. + The element (and its substructures) that belongs to this attribute is to be authenticated. + + + + + + optionales Support-Flag, Default = true. + optional support flag, default = true. + + + + Wird die Funktion unterstützt? + Is this function supported? + + + + + + + EU-Berechtigungsinformationen. + permission information of a user's digital signature. + + + + Unterschriftsberechtigung des Teilnehmers, der unterzeichnet hat. + Authorisation level of the user that signed the order. + + + + + + + + Datentyp für Signaturdaten des Kreditinstituts beim EU-Transfer. + Data type for digital signature data transferred using EBICS. + + + + + bankfachliche Elektronische Unterschrift. + Digital signature (either autorising an order or applied for transportation). + + + + + + + + + + + + + Datentyp für Vorabprüfung (Anfrage). + Data type for pre-validation (request). + + + + Client sendet den Hashwert der Auftragsdaten und alle weiteren Daten, die er im Rahmen der Vorabprüfung zur Verfügung stellen will + + + + Hashwert der zu übertragenden Auftragsdatendatei für die Vorabprüfung. + Hashvalue of the transmitted order data for the prevalidation. + + + + + Kontoangabe zur Kontoberechtigung für diesen Zahlungsverkehrsauftrag bei der Vorabprüfung. + Account information for authorisation checks for the payment order within the prevalidation. + + + + + + + + Datentyp für Kontenberechtigungsdaten zur Vorabprüfung. + Data type for the account authorisation data for the prevalidation. + + + + + + + Summe der Zahlungsverkehrsaufträge dieses Kontos für die Höchstbetragsprüfung der EU. + Total sum of the ordered payments regarding this account in order to check the maximum amount limit of the signature permission grades. + + + + + + + + + Datentyp für den Transfer von Auftragsdaten (Anfrage). + Data type for the transfer of order data (request). + + + + + Transaktionsphase? + + + + Initialisierungsphase: Transfer der Signaturdaten (EUs) und des Transaktionsschlüssels. + Inituialisation phase: Transfer of signatur data (ESs) and transaktion key. + + + + Information zur Verschlüsselung der Signatur- und Auftragsdaten. + Information regarding the encryption of signature and order data. + + + + + + + + + + + + enthält Signaturdaten (EUs). + contains signature data (ESs). + + + + + + + + + + + + Hashwert der Auftragsdaten. + Hashvalue of the order data. + + + + + Additional Information about the order (unstructured, up to 255 characters). + + + + + + Transferphase: Transfer von Auftragsdaten. + Transferphase: Transfer of order data. + + + + enthält Auftragsdaten. + contains order data. + + + + + + + + + + + + + + + + + Datentyp für den Transfer von Auftragsdaten (Antwort). + + + + + Transfer des Sitzungsschlüssels und (optional) der Signaturdaten (EUs); nur in der Initialisierungsphase anzugeben. + Transfer of the session key and (optional) signature data (ESs); to be specified only in the initialisation phase. + + + + Information zur Verschlüsselung der Signatur- und Auftragsdaten. + Information regarding the encryption of signature and order data. + + + + + + + + + + + + enthält Signaturdaten (EUs). + contains signature data (ESs). + + + + + + + + + + + + + enthält Auftragsdaten. + contains order data. + + + + + + + + + + + + + + + Datentyp für den Transfer von Transferquittungen. + Data type for the transfer of transfer receipts. + + + + + Quittierungscode für Auftragsdatentransfer. + Receipt code fpr transfer of order data. + + + + + + + + Datentyp für den Transfer von Antwortcodes. + + + + + Antwortcode für den vorangegangenen Transfer. + response code for the foregoing transfer. + + + + + Zeitstempel der letzten Aktualisierung der Bankparameter. + + + + + + + + Datentyp für Auftragsdaten für Auftragsart HAA (Antwort: abrufbare Auftragsarten abholen). + Data type for order data of order type HAA (Response: Download of available order data). + + + + + Liste von Auftragsarten, für die Daten bereit stehen. + List of order types for which data are available. + + + + + + + + Datentyp für Auftragsdaten für Auftragsart HCA (Anfrage: Änderung der Teilnehmerschlüssel für Authentifikation und Verschlüsselung). + Data type for order data regarding order type HCA (Request: Update of Subscriber's key for authentication and encryption). + + + + + öffentlicher Authentifikationsschlüssel. + public key for authentication. + + + + + öffentlicher Verschlüsselungsschlüssel. + public key for encryption. + + + + + Kunden-ID. + Partner-ID. + + + + + Teilnehmer-ID. + User-ID. + + + + + + + + Datentyp für Auftragsdaten für Auftragsart HCS (Anfrage: Schlüsselwechsel aller Schlüssel). + Data type for order data for order type HCS (Request: Update of all keys). + + + + + öffentlicher Authentifikationsschlüssel. + public key for authentication. + + + + + öffentlicher Verschlüsselungsschlüssel. + public key for encryption. + + + + + + Kunden-ID. + Partner-ID. + + + + + Teilnehmer-ID. + User-ID. + + + + + + + + Datentyp für Auftragsdaten für Auftragsart HIA (Anfrage: Initialisierung der Teilnehmerschlüssel für Authentifikation und Verschlüsselung). + Data type for order data for order type HIA (Request: Initialisation of subcriber keys for authentication and encryption). + + + + + öffentlicher Authentifikationsschlüssel. + public key for authentication. + + + + + öffentlicher Verschlüsselungsschlüssel. + public key for encryption. + + + + + Kunden-ID. + Partner-ID. + + + + + Teilnehmer-ID. + User-ID. + + + + + + + + Datentyp für Auftragsdaten für Auftragsart H3K (Anfrage: Initialisierung aller drei Teilnehmerschlüssel). + Order type for order data H3K (request: initialise all three user's keys). + + + + + Key for electronic Signature + Signaturschlüssel. + + + + + Authentication key + Authentifikationsschlüssel. + + + + + Encryption key + Verschlüsselungsschlüssel. + + + + + PartnerID. + Kunden-ID. + + + + + UserID. + Teilnehmer-ID. + + + + + + + Datentyp für Auftragsdaten für Auftragsart HKD (Antwort: Kunden- und Teilnehmerdaten des Kunden abholen). + Order data for order type HKD (response: receive customer based information on the customer and the customer's user. + + + + + Kundendaten. + Customer data. + + + + + Teilnehmerdaten. + User data. + + + + + + + + Datentyp für Auftragsdaten für Auftragsart HPB (Antwort: Transfer der Bankschlüssel). + Data type for order data for order type HPB (Response: Transfer of bank keys). + + + + + öffentlicher Authentifikationsschlüssel. + public authentication key + + + + + öffentlicher Verschlüsselungsschlüssel. + public encryption key + + + + + öffentlicher EU-Signaturschlüssel. + public ES key. + + + + + Banksystem-ID. + Host-ID. + + + + + + + + Datentyp für Auftragsdaten für Auftragsart HPD (Antwort: Bankparameter abholen). + Data type for order data for order type HPD (Response: Download bank parameters). + + + + + Zugangsparameter. + Access Parameter. + + + + + Protokollparameter. + Protocol Parameter. + + + + + + + Datentyp für HPD-Zugangsparameter. + data type for HPD Access Parameter. + + + + + institutsspezifische IP-Adresse/URL. + individual IP-address/URL of the bank. + + + + + + + Gültigkeitsbeginn für die angegebene URL/IP. + Valid-From-Date of the URL/IP. + + + + + + + + + Institutsbezeichnung. + Name of the bank. + + + + + + + + + + Banksystem-ID. + + + + + + + + Datentyp für HPD-Protokollparameter. + Data type for HPD's parameters regarding the EBICS protocol. + + + + + Spezifikation unterstützter Versionen. + Specification of supported versions.. + + + + + Parameter zur Recovery-Funktion (Wiederaufnahme abgebrochener Übertragungen). + Parameter denoting the recovery function (recovery of aborted transmissions). + + + + + + + + Parameter zur Vorabprüfung (über die Übermittlung der EU hinaus). + Parameter denoting the pre-validation (beyond transmission of signatures). + + + + Optionales Support-Flag, Default = true. + Optional support flag, default = true. + + + + + + + Parameter zum Download von Kunden- und Teilnehmerdaten (Auftragsarten HKD/HTD). + Parameter denoting the download of customer and user data (order types HKD/HTD). + + + + + + + + Parameter zum Abruf von Auftragsarten, zu denen Auftragsdaten verfügbar sind (Auftragsart HAA). + Parameter denoting the reception of order types which provides downloadable order data (order type HAA). + + + + + + + + + + + Datentyp für HPD-Versionsinformationen. + Data type for HPD version information. + + + + + unterstützte EBICS-Protokollversionen (H...). + supported EBICS protocol versions. (H...). + + + + + + + + unterstützte Versionen der Authentifikation (X...). + supported version for authentication (X...). + + + + + + + + unterstützte Versionen der Verschlüsselung (E...). + supported version for encryption (E...). + + + + + + + + unterstützte EU-Versionen (A...). + supported version for ES (A...). + + + + + + + + + + + Datentyp für Auftragsdaten für Auftragsart HTD (Antwort: Kunden- und Teilnehmerdaten des Teilnehmers abholen). + Data type for order data for order type HTD (Response: Download partner- and user data). + + + + + Kundendaten. + Customer data. + + + + + Teilnehmerdaten. + User data. + + + + + + + + Datentyp für Auftragsdaten für Auftragsart HVD (Antwort: VEU-Status abrufen). + Data type for order data for order type HVD (Response: EDS-status). + + + + + Hashwert der Auftragsdaten. + Hash value of the order data. + + + + + Begleitzettel/"Displaydatei" (entspricht der Dateianzeige im Kundenprotokoll gemäß DFÜ-Abkommen). + Accompanying ticket/"display file" (corresponds to the display file of the customer's journal according to the document "DFÜ-Abkommen"). + + + + + Kann die Auftragsdatei im Originalformat abgeholt werden? (HVT mit completeOrderData=true) + Can the order file be downloaded in the original format? (HVT with completeOrderData=true) + + + + + Größe der unkomprimierten Auftragsdaten in Bytes. + Size of the uncompressed order data (byte count). + + + + + Können die Auftragsdetails als XML-Dokument HVTResponseOrderData abgeholt werden? (HVT mit completeOrderData=false) + Can the order details be downloaded as XML document HVTResponseOrderData? (HVT with completeOrderData=false) + + + + + bankfachliche Elektronische Unterschrift des Kreditinstituts über Hashwert und Displaydatei. + Digital Signature issued by the bank, covering the hash value and the accompanying ticket. + + + + + Informationen zu den bisherigen Unterzeichnern. + Information about the already existing signers. + + + + + + + + Datentyp für zusätzliche Auftragsparameter für Auftragsart HVD. + Data type for additional order parameters for order type HVD. + + + + + + + + + Datentyp für zusätzliche Auftragsparameter für Auftragsart HVE. + Data type for additional order parameters for order type HVE. + + + + + + + + + Datentyp für zusätzliche Auftragsparameter für Auftragsart HVS. + Data type for additional order parameters for order type HVS. + + + + + + + + + Datentyp für Auftragsdaten für Auftragsart HVS (Anfrage: VEU-Storno). + Data type for order data for order type HVS (request: EDS cancellation). + + + + + Hashwert der Auftragsdaten des stornierten Auftrags. + Hash value of order data of cancelled order. + + + + + + + + Datentyp für Antwort mit Einzelauftraginfos für Auftragsart HVT (Antwort VEU-Transaktionsdetails abrufen mit completeOrderData="false"). + Data type for a response containing information about single transactions for order type HVT (response: EDS transaction details with completeOrderData="false"). + + + + + Gesamtanzahl der Einzelaufträge für den Auftrag. + Total number of order infos for the order. + + + + + Einzelauftragsinfos. + Particular order content information requested for display matters. + + + + + + + + Datentyp für HVT-Konteninformationen. + Data type for account information regarding order type HVT. + + + + + + + + //MODIFIED - Replaced Element OrderFormat with MsgName// Datentyp für HVT-Auftragsinformationen. + + + + + + kontobezogene Details des Auftrags (Auftraggeber, Empfänger etc.). + account related details of the order (ordering party, receiver etc.). + + + + + Ausführungsdatum. + Execution date. + + + + + + + + + + Betrag. + Amount. + + + + + + + Gutschrift (isCredit = "true") oder Lastschrift (isCredit = "false")? + Credit (isCredit = "true") or debit (isCredit = "false")? + + + + + Währungscode. + Currency code. + + + + + + + + + Textfeld zur weiteren Beschreibung der Transaktion (Verwendungszweck, Auftragsdetails, Kommentar). + text field for additional descriptions regarding the transaction (remittance information, order details, annotations). + + + + + + + Beschreibungstyp. + Description type. + + + + + + Verwendungszweck + remittance information. + + + + + Auftragsdetails + Order details. + + + + + Kommentar + Annotation. + + + + + + + + + + + + + + + Datentyp für HVT-Auftragsflags. + Data type for HVT order flags. + + + + Sollen die Transaktionsdetails als Einzelauftragsinfos (completeOrderData=false) oder als komplette Originaldaten (completeOrderData=true) übertragen werden? (Vorschlag für Default=false) + Are the transaction details so be transmitted as particular order content information requested for display matters or in complete order data file form? (Proposal for Default=false) + + + + + Limit für die zu liefernden Transaktionsdetails, bei completeOrderData=false maximale Anzahl zu liefernder Einzelauftragsinfos, 0 für unbegrenzt (Vorschlag für Default=100). + Limit for the transaction details to be transmitted; if completeOrderData=false, maximum number of details of a particular order; 0 for unlimited number of details (Proposal for Default=100). + + + + + + + + + + Offset vom Anfang der Originalauftragsdatei für die zu liefernden Transaktionsdetails, bei completeOrderData=false bezogen auf laufende Nummer des Einzelauftrags (Vorschlag für Default=0). + Offset position in the original order file which marks the starting point for the transaction details to be transmitted; applies to the sequential number of a particular order if completeOrderData=false (Proposal for Default=0). + + + + + + + + + + + + Datentyp für zusätzliche Auftragsparameter für Auftragsart HVT. + Data type for additional order parameters for order type HVT. + + + + + + spezielle Flags für HVT-Aufträge. + Special order flags for orders of type HVT. + + + + + + + + + + Generische Schlüssel-Wert-Parameter + Generic key-value parameters + + + + + + + + Datentyp für Auftragsdaten für Auftragsart HVU (Antwort: VEU-Übersicht abholen). + Data type for order data for order type HVU (Response: Download EDS overview). + + + + + + + + Auftragsinformationen. + + + + + + + + Datentyp für HVU-Auftragsdetails. + Data type for HVU order details. + + + + + Auftragsart lt. DFÜ-Abkommen des ausgewählten Auftrags. + Type of the order. + + + + + Auftragsnummer lt. DFÜ-Abkommen des ausgewählten Auftrags. + Order number. + + + + + Größe der unkomprimierten Auftragsdaten in Bytes. + Order data size in bytes. + + + + + Informationen zu den Unterschriftsmodalitäten. + Signing information. + + + + + Informationen zu den bisherigen Unterzeichnern. + Information regarding the signer. + + + + + Informationen zum Einreicher. + Information regarding the originator. + + + + + Additional Information about the order (unstructured, up to 255 characters). + Additional Information about the order (unstructured, up to 255 characters). + + + + + + + + Datentyp für zusätzliche Auftragsparameter für Auftragsart HVU. + Data type for additional order parameters for order type HVU. + + + + + Liste von Auftragsarten, für die zur Unterschrift vorliegende Aufträge abgerufen werden sollen; falls nicht angegeben, werden sämtliche für den Teilnehmer unterschriftsfähigen Aufträge abgerufen. + + + + + + + + Datentyp für zusätzliche Auftragsparameter für Auftragsart HVZ. + Data type for additional order parameters for order type HVZ. + + + + + Liste von Auftragsarten, für die zur Unterschrift vorliegende Aufträge abgerufen werden sollen; falls nicht angegeben, werden sämtliche für den Teilnehmer unterschriftsfähigen Aufträge abgerufen. + List of order types that the orders ready to be signed by the requesting user should match; if not specified, a list of all orders ready to be signed by the requesting user is returned. + + + + + + + + Datentyp für Informationen zu den HVU-Unterschriftsmodalitäten. + + + + Ist der Auftrag unterschriftsreif ("true") oder bereits vom Teilnehmer unterschrieben ("false")? + + + + + Anzahl der insgesamt zur Freigabe erforderlichen EUs. + + + + + Anzahl der bereits geleisteten EUs. + + + + + + Datentyp für Informationen zum Ersteller eines HVU-Auftrags. + + + + + Kunden-ID des Einreichers. + + + + + Teilnehmer-ID des Einreichers. + + + + + Name des Einreichers. + + + + + Zeitstempel der Einreichung (d.h. der Übertragung der Auftragsdatei). + + + + + + + + Datentyp für Auftragsdaten für Auftragsart HVZ (Antwort: VEU-Übersicht mit Zusatzinformationen abholen). + Order data for order type HVZ (response: receive summary of orders currently stored in the distributed signature processing unit with additional informations). + + + + + + + + Auftragsinformationen. + Summary of order information. + + + + + + + + Datentyp für HVZ-Auftragsdetails. + + + + + BTF Service Parameter-Struktur des ausgewählten Auftrags. + Type of the order. + + + + + Auftragsnummer lt. DFÜ-Abkommen des ausgewählten Auftrags. + ID number of the order. + + + + + Hashwert der Auftragsdaten. + Hash value of the order data. + + + + + Kann die Auftragsdatei im Originalformat abgeholt werden? (HVT mit completeOrderData=true). + Can the order file be downloaded in the original format? (HVT with completeOrderData=true) + + + + + Größe der unkomprimierten Auftragsdaten in Bytes. + Size of uncompressed order data in Bytes. + + + + + Können die Auftragsdetails als XML-Dokument HVTResponseOrderData abgeholt werden? (HVT mit completeOrderData=false). + Can the order details be downloaded as XML document HVTResponseOrderData? (HVT with completeOrderData=false) + + + + + Zusätzliche Auftragsdetails nur für Zahlungsaufträge. + Order details related to payment orders only. + + + + + Informationen zu den Unterschriftsmodalitäten. + Information regarding the signing modalities of the order. + + + + + Informationen zu den bisherigen Unterzeichnern. + Information regarding the users who already signed the order. + + + + + Informationen zum Einreicher. + Information regarding the originator of the order. + + + + + Additional Information about the order (unstructured, up to 255 characters). + + + + + + + + Standard-Requeststruktur für HVx-Aufträge (HVD, HVT, HVE, HVS). + Standard structure for HVZ OrderDetails related to payment orders + + + + + Anzahl der Zahlungssätze über alle logische Dateien entsprechend Dateianzeige. + Total transaction number for all logical files (from dispay file). + + + + + Summe der Beträge über alle logische Dateien entsprechend Dateianzeige. + Total transaction amount for all logical files (from dispay file). + + + + + + + Nur Gutschriften (isCredit = "true") oder nur Lastschriften (isCredit = "false")? Sonst keine Nutzung des Elements. + + + + + + + + + Auftragswährung (nur bei sortenreinen Zahlungen, sonst keine Angabe). + Order currency (only if identical across all transactions, ship otherwise). + + + + + Informationen aus Dateianzeige der ersten logischen Datei. + Order details from display file for first logical file. + + + + + + Auftraggeber entsprechend Dateianzeige. + Order party information (from display file). + + + + + Erstes Auftraggeberkonto entsprechend Dateianzeige. + First order party account (from display file). + + + + + + + Kontonummer (deutsches Format oder international als IBAN). + Account number (German format or international as IBAN). + + + + + + + Ist die Kontonummer im deutschen Format (international=false) oder im internationalen Format (international=true, IBAN) angegeben? + Account number given in German format (international=false) or in international format (international=true, IBAN)? + + + + + + + + + Kontonummer im freien Format. + Account number in free format. + + + + + + + Formatkennung. + Format type. + + + + + + + + + + + Bankleitzahl (deutsches Format oder international als SWIFT-BIC). + Bank sort code (German format or international as SWIFT-BIC). + + + + + + + Ist die Bankleitzahl im deutschen Format (international=false, BLZ) oder im internationalen Format (international=true, SWIFT-BIC) angegeben? + Bank sort code given in German format (international=false) or in international format (international=true, SWIFT-BIC)? + + + + + nationales Präfix für Bankleitzahlen. + National prefix for bank sort code. + + + + + + + + + Bankleitzahl im freien Format. + Bank sort code in free format. + + + + + + + Formatkennung. + Format type. + + + + + + + + + + + + + + + + + + Datentyp für Informationen zu einem Unterzeichner eines VEU-Auftrags (HVU, HVD). + + + + + Kunden-ID des Unterzeichners. + + + + + Teilnehmer-ID des Unterzeichners. + + + + + Name des Unterzeichners. + + + + + Zeitstempel der Unterzeichnung (d.h. der Übertragung der Unterschrift). + + + + + zusätzliche Informationen zu den Berechtigungen des Teilnehmers, der unterzeichnet hat. + + + + + + + + + + + Datentyp für VEU-Berechtigungsinformationen des Teilnehmers (HKD, HTD). + + + + + Liste von Auftragsarten, für die die Berechtigung des Teilnehmers gültig ist. + List of order types which the user's permission belongs to. + + + + + BTF Service Parameter struktur im Falle von BTU/BTD + Identification of the file format in the case of FUL/FDL + + + + + Verweis auf den Identifikationscode des berechtigten Kontos. + Identification codes of the affected accounts. + + + + + Betragshöchstgrenze, bis zu der die Berechtigung des Teilnehmers gültig ist. + Maximum total amount which the user's permission is valid for. + + + + + + + Unterschriftsklasse, für die der Teilnehmer berechtigt ist; nicht anzugeben bei Download-Auftragsarten. + Authorization level of the user who signed the order; to be omitted for orders of type "download". + + + + + + + Datentyp für VEU-Partnerdaten (HKD, HTD). + Data type for customer data with regard to distributed signatures (order types HKD, HTD). + + + + + Informationen zur Adresse des Kunden. + Information about the customer's adress. + + + + + Informationen zur Kreditinstitutsanbindung des Kunden. + Information about the customer's banking access paramters. + + + + + Informationen zu den Konten des Kunden. + Information about the customer's accounts. + + + + + + + + //MODIFIED//Liste der Auftragsartenbeschränkungen; falls nicht angegeben, gibt es keine Auftragsartenbeschränkungen; falls das Element ohne Service-Element geliefert wird, ist das Konto für keine Auftragsart freigegeben. + List containing the order types which contain this account is restricted to; if omitted, the account is unrestricted; if the list is empty the account is blocked for any order type. + + + + + + + Identifikationscode des Kontos. + + + + + + + + + Informationen zu den Auftragsarten, für die der Kunde berechtigt ist. + Information about order types which the customer is authorised to use. + + + + + + + Datentyp für VEU-Adressinformationen (HKD, HTD). + Data type for address information with regard to distributed signature (order types HKD, HTD). + + + + + Name des Kunden. + Customer's name. + + + + + Straße und Hausnummer. + Street and house number. + + + + + Postleitzahl. + Postal code. + + + + + Stadt. + City. + + + + + Region / Bundesland / Bundesstaat. + Region / province / federal state. + + + + + Land. + Country. + + + + + + + + Datentyp für VEU-Kreditinstitutsinformationen (HKD, HTD). + + + + + Banksystem-ID. + + + + + + + + + Datentyp für VEU-Teilnehmerinformationen (HKD, HTD). + + + + + Teilnehmer-ID. + + + + + + + Status des Teilnehmers. + + + + + + + + + Name des Teilnehmers. + + + + + Informationen zu den Berechtigungen des Teilnehmers. + + + + + + + + Datentyp für VEU-Berechtigungsinformationen zu Auftragsarten (HKD, HTD). + Data type for user permissions with regard to distributed signatures (order types HKD, HTD). + + + + + Administrative EBICS Auftragsart. + + + + + BTF Service Parameter struktur im Falle von BTU/BTD + Identification of the file format in the case of FUL/FDL + + + + + Beschreibung der Auftragsart. + + + + + Anzahl erforderlicher EUs (Default=0). + + + + + + + + Datentyp für zusätzliche Auftragsparameter bei Standard-Auftragsarten. + + + + + Datumsbereich (von-bis). + + + + + + Startdatum (inkl.). + + + + + Enddatum (inkl.). + + + + + + + + + + Attribute zur EBICS-Protokollversion und -revision. + Attributes regarding the protocol version and revision of EBICS. + + + + Version des EBICS-Protokolls (z.B. "H00x"). + Version of the EBICS protocol (e.g. "H00x"). + + + + + Revision des EBICS-Protokolls (z.B. 1). + Revision of the EBICS protocol (e.g. 1). + + + + + + + zusätzliche Auftragsparameter für Auftragsart BTD. + additional order parameters for order type BTD. + + + + + zusätzliche Auftragsparameter für Auftragsart BTU. + additional order parameters for order type BTU. + + + + + Datentyp für BTF Download Parameter + + + + + + + Service name - target system for the further processing of the order + + + + + + + + The file name on the client It can be transmitted optionally + + + + + + + + Datentyp für BTF Upload Parameter + + + + + + + Service name - target system for the further processing of the order + + + + + If not present the order doesn't contain any ES and shall be authorised outside EBICS +If present the order shall be autorised within EBICS: +1. If the attribute VEU is also present the sender desires spooling into the VEU - hence in this case the order is not rejected in the case of not sufficient number of ES +2. If the attribute is not present all necessary ES must be inside the order (else: rejection of the order) + + + + + + + The file name on the client It can be transmitted optionally + + + + + + + + Abstract Type containing all BTF params structures + + + + + Service name - target system for the further processing of the order + + + + + If not present the order doesn't contain any ES and shall be authorised outside EBICS +If present the order shall be autorised within EBICS: +1. If the attribute VEU is also present the sender desires spooling into the VEU - hence in this case the order is not rejected in the case of not sufficient number of ES +2. If the attribute is not present all necessary ES must be inside the order (else: rejection of the order) + + + + + + + + The file name on the client It can be transmitted optionally + + + + + + Datentyp für die Angabe eines (Berichts-) Zeitraums + + + + + + + + + Basis-Datentyp für Kennzeichen mit optionalem Attribut + + + + + + Datentyp für Meldungstyp-String mit optionalen Attributen + + + + + + Variant number of the message type (usable for ISO20022 messages) + + + + + Version number of the message type (usable for ISO20022 messages) + + + + + Encoding format of the message (e.g. XML, ASN1, JSON, PDF) + + + + + + + + + + + + + Basisdatentyp für BTF-Service Parameter Set + + + + + Service Code name: External list specified and maintained by EBICS. Basis is the "SWIFT-list" for the field "description" (SCT, DCT, XCT, SDD, DDD, STM, REP...) plus additional codes needed for further services + + + + + Specifies whose rules have to be taken into account for the service. This means which market / comminity has defined the rules. +If the element is absent a global definition for the service is assumed. +External list specified and maintained by EBICS. In addition the following codes may be used: +2-character ISO country code or a 3-character issuer code (defined by EBICS) + + + + + Service Option Code +Additional option for the service (also depends on used scope) + + + + + Container flag. If present, data is provided/requested in a container format specified in the attribute of the flag + + + + + Name of the message, e.g. pain.001 or mt101 National message names (issued by DK, CFONB or SIC are also allowed) + + + + + + + Type is arestriction of the generic ServiceType, defining the mandatory elements + + + + + + + Service Code name: External list specified and maintained by EBICS. Basis is the "SWIFT-list" for the field "description" (SCT, DCT, XCT, SDD, DDD, STM, REP...) plus additional codes needed for further services + + + + + Specifies whose rules have to be taken into account for the service. This means which market / comminity has defined the rules. +If the element is absent a global definition for the service is assumed. +External list specified and maintained by EBICS. +In addition the following codes may be used: +2-character ISO country code or a 3-character issuer code (defined by EBICS) + + + + + Service Option Code + Additional option for the service (also depends on used scope) + + + + + Container flag. If present, data is provided/requested in a container format specified in the attribute of the flag + + + + + Name of the message, e.g. pain.001 or mt101 National message names (issued by DK, CFONB or SIC are also allowed) + + + + + + + + + Container flag. If present, data is provided/requested in a container format specified in the attribute of the flag + + + + + + Specifies the container type - External Codelist defined by EBICS (starting values: XML, ZIP, SVC) + + + + + + + + Datentyp für BTF Signatur-Flag (ersetzt Orderkennzeichen) + + + + + + If present the sender desires spooling into EBICS distributed signature queue, only "true" is allowed + + + + + + + + Datentyp zur Kennzeichnung von Auftragsartenbeschränkungen + + + + + Service Parameter-Sets von nicht unterstützten BTF-Auftragsarten + + + + + + diff --git a/src/main/resources/schemas/h005/ebics_request_H005.xsd b/src/main/resources/schemas/h005/ebics_request_H005.xsd new file mode 100755 index 0000000..dc7ad70 --- /dev/null +++ b/src/main/resources/schemas/h005/ebics_request_H005.xsd @@ -0,0 +1,349 @@ + + + + + ebics_request_H005.xsd ist das EBICS-Protokollschema für Anfragen. + ebics_request_H005.xsd is the appropriate EBICS protocol schema for standard requests. + + + + + + + Electronic Banking Internet Communication Standard of the EBICS SCRL: Multibankfähige Schnittstelle zur internetbasierten Kommunikation. + Electronic Banking Internet Communication Standard der EBICS SCRL: multi-bank capable interface for internet-based communication. + + + + + + enthält die technischen Transaktionsdaten. + contains the transaction-driven data. + + + + + + enhält alle festen Headereinträge. + contains the static header entries. + + + + + enthält alle variablen Headereinträge. + contains the mutable header entries. + + + + + + + + + + enthält die Auftragsdaten, EU(s) und weitere Nutzdaten. + contains order data, order signature(s) and further data referring to the current order. + + + + + + + + + X.509-Daten des Teilnehmers. + X.509 data of the user. + + + + + Welche Transaktionsphase? + Which transaction phase? + + + + Initialisierungs- und Transferphase. + Initialisation or transfer phase. + + + + Daten zur Vorabprüfung; nur anzugeben in der Initialisierungsphase bei Uploads mit Auftragsattribut OZH (EUs + Auftragsdaten). + Data sent for pre-validation; mandatory for initialisation phase during uploads using order attribute OZH (order signature(s) + order data). + + + + + + + + + + + + Transfer von Signatur- bzw. Auftragsdaten; nur bei Upload anzugeben. + Transfer of signature or order data; mandatory for uploads only. + + + + + + Quittierungsphase nach Download. + Receipt phase after download. + + + + Quittierung des Transfers. + Receipt of transfer. + + + + + + + + + + + + + + + + + + + + + + Datentyp für den statischen EBICS-Header. + Data type for the static EBICS header. + + + + + Hostname des Banksystems. + + + + + Transaktionsphase? + Transaction phase? + + + + Initialisierungsphase. + Initialisation phase. + + + + Zufallswert; damit wird die Initialisierungsnachricht des Clients einzigartig. + Random value, ensures the uniqueness of the client's message during initialisation phase. + + + + + aktueller Zeitstempel zur Begrenzung der serverseitigen Nonce-Speicherung. + current timestamp, used to limit storage space for nonces on the server. + + + + + Kunden-ID des serverseitig administrierten Kunden. + ID of the partner = customer, administered on the server. + + + + + Teilnehmer-ID des serverseitig zu diesem Kunden administrierten Teilnehmers. + ID of the user that is assigned to the given customer, administered on the server. + + + + + technische User-ID für Multi-User-Systeme. + ID of the system for multi-user systems. + + + + + Kennung des Kundenprodukts bzw. Herstellerkennung oder Name. + software ID / manufacturer ID / manufacturer's name of the customer's software package. + + + + + + + Sprachkennzeichen der Kundenproduktversion (gemäß ISO 639). + Language code of the customer's software package according to ISO 639. + + + + + Kennung des Herausgebers des Kundenprodukts bzw. des betreuenden Kreditinstituts. + ID of the manufacturer / financial institute providing support for the customer's software package. + + + + + + + + + Auftragsdetails. + order details. + + + + + Hashwerte der erwarteten öffentlichen Schlüssel (Verschlüsselung, Signatur, Authentifikation) des Kreditinstituts. + Digest values of the expected public keys (authentication, encryption, signature) owned by the financial institute. + + + + + + Hashwert des Authentifikationsschlüssels. + Digest value of the public authentication key. + + + + + + + Version des Authentifikationsverfahrens. + Version of the algorithm used for authentication. + + + + + + + + + Hashwert des Verschlüsselungsschlüssels. + Digest value of the public encryption key. + + + + + + + Version des Verschlüsselungsverfahrens. + Version of the algorithm used for encryption. + + + + + + + + + Hashwert des Signaturschlüssels. + Digest value of the public signature key. + + + + + + + Version des Signaturverfahrens. + Version of the algorithm used for signature creation. + + + + + + + + + + + + Angabe des Sicherheitsmediums, das der Kunde verwendet. + Classification of the security medium used by the customer. + + + + + Gesamtsegmentanzahl für diese Transaktion; nur bei Uploads anzugeben. + Total number of segments for this transaction; mandatory for uploads only. + + + + + + + Transfer- und Quittierungsphase. + Transfer or receipt phase. + + + + eindeutige, technische Transaktions-ID; wird vom Server vergeben. + unique transaction ID, provided by the server. + + + + + + + + + Datentyp für den variablen EBICS-Header. + Data type for the mutable EBICS header. + + + + + Phase, in der sich die Transaktion gerade befindet; wird bei jedem Transaktionsschritt vom Client gesetzt und vom Server übernommen. + Current phase of the transaction; this information is provided by the client for each step of the transaction, and the server adopts the setting. + + + + + enthält die Nummer des aktuellen Segments, welches gerade übertragen oder angefordert wird; nur anzugeben bei TransactionPhase=Transfer. + contains the number of the segment which is currently being transmitted or requested; mandatory for transaction phase 'Transfer' only. + + + + + + + Ist dies das letzte Segment der Übertragung? + Is this segment meant to be the last one regarding this transmission? + + + + + + + + + + + + //MODIFIED - Removed OrderAtribute ELEMENT// Datentyp für Auftragsdetails im statischen EBICS-Header. + Data type for order details stored in the static EBICS header. + + + + + //MODIFIED - Umbenannt von OrderType// Auftragsart. + type code of the order. + + + + + + + + + + Auftragsnummer für Sendeaufträge gemäß DFÜ-Abkommen. + ID of the (upload) order, formatted in accordance with the document "DFÜ-Abkommen". + + + + + + diff --git a/src/main/resources/schemas/h005/ebics_response_H005.xsd b/src/main/resources/schemas/h005/ebics_response_H005.xsd new file mode 100755 index 0000000..841286b --- /dev/null +++ b/src/main/resources/schemas/h005/ebics_response_H005.xsd @@ -0,0 +1,167 @@ + + + + + ebics_response_H005.xsd ist das EBICS-Protokollschema für Antwortnachrichten. + ebics_response_H005.xsd is the appropriate EBICS protocol schema for standard responses. + + + + XML-Signature. + + + + + + + Electronic Banking Internet Communication Standard des Zentralen Kreditausschusses (ZKA): Multibankfähige Schnittstelle zur internetbasierten Kommunikation. + Electronic Banking Internet Communication Standard of the "Zentraler Kreditausschuss (ZKA)": multi-bank capable interface for internet-based communication. + + + + + + enthält die technischen Transaktionsdaten. + contains the transaction-driven data. + + + + + + enhält alle festen Headereinträge. + contains the static header entries. + + + + + enthält alle variablen Headereinträge. + contains the mutable header entries. + + + + + + + + + Authentifikationssignatur. + Authentication signature. + + + + + enthält die Auftragsdaten, EU(s) und weitere Nutzdaten. + contains order data, order signature(s) and further data referring to the current order. + + + + + + Transfer von Auftragsdaten; nur bei Download anzugeben. + Transfer of signature or order data; mandatory for downloads only. + + + + + fachlicher Antwortcode für den vorangegangenen Request. + order-related return code of the previous request. + + + + + + + + + + + + Zeitstempel der letzten Aktualisierung der Bankparameter; nur in der Initialisierungsphase anzugeben. + timestamp indicating the latest update of the bank parameters; may be set during initialisation phase only. + + + + + + + + + + + + + + + + + + + + //TODO - Modify anotation TransactionID// Datentyp für den statischen EBICS-Header. + Data type for the static EBICS header. + + + + + eindeutige, technische Transaktions-ID; wird vom Server vergeben, falls OrderAttribute entweder gleich "OZHNN" oder gleich "DZHNN" ist und falls tatsächlich eine Transaktion erzeugt wurde. + unique transaction ID, provided by the server if and only if the order attribute is set to either "OZHNN" or "DZHNN" and if a transaction has been established actually. + + + + + Gesamtsegmentanzahl für diese Transaktion; nur bei Downloads in der Initialisierungsphase anzugeben. + Total number of segments for this transaction; mandatory for downloads in initialisation phase only. + + + + + + + Datentyp für den variablen EBICS-Header. + Data type for the mutable EBICS header. + + + + + Phase, in der sich die Transaktion gerade befindet; wird bei jedem Transaktionsschritt vom Client gesetzt und vom Server übernommen. + Current phase of the transaction; this information is provided by the client for each step of the transaction, and the server adopts the setting. + + + + + enthält die Nummer des aktuellen Segments, welches gerade übertragen oder angefordert wird; nur anzugeben bei TransactionPhase=Transfer und (bei Download) TransactionPhase=Initialisation. + contains the number of the segment which is currently being transmitted or requested; mandatory for transaction phases 'Transfer' and (for downloads) 'Initialisation' only. + + + + + + + Ist dies das letzte Segment der Übertragung? + + + + + + + + + Auftragsnummer von Sendeaufträgen gemäß DFÜ-Abkommen. + + + + + Rückmeldung des technischen Status mit einer eindeutigen Fehlernummer. + Return code indicating the technical status. + + + + + Klartext der Rückmeldung des technischen Status. + Textual interpretation of the returned technical status code. + + + + + + diff --git a/src/main/resources/schemas/h005/ebics_signature_S002.xsd b/src/main/resources/schemas/h005/ebics_signature_S002.xsd new file mode 100755 index 0000000..3127faa --- /dev/null +++ b/src/main/resources/schemas/h005/ebics_signature_S002.xsd @@ -0,0 +1,177 @@ + + + + + + ebics_signature enthält Typdefinitionen für elektronische Unterschriften der Versionen A005, A006 und folgende. + ebics_EU contains type definitions for electronic signatures: versions A005, A006 and et sqq. + + + + + XML-Strukturen für bankfachliche Elektronische Unterschriften (EUs). + contains the digital signatures. + + + + + enthält die EUs der Teilnehmer. + contains the digital signatures. + + + + + Datentyp für Signaturdaten des Teilnehmers beim EU-Transfer. + Data type for digital signature data transferred using EBICS. + + + + + bankfachliche Elektronische Unterschrift oder Transportunterschrift (strukturiertes Format). + Digital signature (either autorising an order or applied for transportation), structured format. + + + + + + + + Datentyp für kryptographische Unterschriften. + + + + + + bankfachliche Elektronische Unterschrift oder Transportunterschrift (strukturiertes Format). + Digital signature (either autorising an order or applied for transportation), structured format. + + + + + Datentyp für bankfachliche Elektronische Unterschrift oder Transportunterschrift (strukturiertes Format). + Data type according for a digital signature (either autorising an order or applied for transportation), structured format. + + + + + Version des Signaturverfahrens. + Version of the algorithm used for signature creation. + + + + + Digitale Signatur. + Digital signature. + + + + + Kunden-ID des Unterzeichners. + Customer ID of the signer. + + + + + Teilnehmer-ID. + User ID. + + + + + Parameter zur X.509-Funktionalität + Parameter for X509Data + + + + + + + Datentyp für eine Kunden-ID. + + + + + + + + Datentyp für eine Teilnehmer-ID. + + + + + + + + Datentyp für Versionsnummern zur Elektronischen Unterschrift (EU). + + + + + + + + + + Element für Public Key Dateien unabhängig von der Auftragsart / Geschäftsvorfall. + + + + + Datentyp für Public Key Dateien unabhängig von der Auftragsart / Geschäftsvorfall. + + + + + öffentlicher Signaturschlüssel. + + + + + Kunden-ID. + + + + + Teilnehmer-ID. + + + + + + + + öffentlicher Signaturschlüssel. + + + + + Datentyp für öffentliche bankfachliche Schlüssel. + + + + + + + Version des EU-Signaturverfahrens. + + + + + + + + + Datentyp für die Darstellung eines öffentlichen RSA-Schlüssels als Exponent-Modulus-Kombination oder als X509-Zertifikat. + + + + + + + + + Datentyp für Zeitstempel. + + + + diff --git a/src/main/resources/schemas/h005/ebics_types_H005.xsd b/src/main/resources/schemas/h005/ebics_types_H005.xsd new file mode 100755 index 0000000..ea13f06 --- /dev/null +++ b/src/main/resources/schemas/h005/ebics_types_H005.xsd @@ -0,0 +1,1885 @@ + + + + + + + ebics_types_H005.xsd enthält einfache Typdefinitionen für EBICS. + + + + Datentyp für EBICS-Versionsnummern. + + + + + + + + + Datentyp für EBICS-Revisionsnummern. + + + + + + + + Datentyp für Versionsnummern zur Verschlüsselung. + + + + + + + + Datentyp für Versionsnummern zur Elektronischen Unterschrift (EU). + + + + + + + + + Datentyp für Versionsnummern zur Authentifikation. + + + + + + + + + Datentyp für Versionsnummern zur Verschlüsselung, Signatur und Authentifkation. + + + + + + Datentyp für Währungen (Grundtyp). + + + + + + + + + dreistelliger Währungscode gemäß ISO 4217. + + + + + + Afghanistan: Afghani + + + + + Albanien: Lek + + + + + Armenien: Dram + + + + + Niederländische Antillen: Gulden + + + + + Angola: Kwanza + + + + + Argentinien: Peso + + + + + Australien: Dollar + + + + + Aruba: Florin + + + + + Aserbaidschan: Manat + + + + + Bosnien und Herzegowina: Konvertible Mark + + + + + Barbados: Dollar + + + + + Bangladesch: Taka + + + + + Bulgarien: Lew + + + + + Bahrain: Dinar + + + + + Bermuda: Dollar + + + + + Brunei: Dollar + + + + + Bolivien: Boliviano + + + + + Brasilien: Real + + + + + Bahamas: Dollar + + + + + Bhutan: Ngultrum + + + + + Botswana: Pula + + + + + Weißrussland (Belarus): Rubel + + + + + Belize: Dollar + + + + + Kanada: Dollar + + + + + Demokratische Republik Kongo: Franc + + + + + Schweiz: Franken + + + + + Chile: Peso + + + + + China (Volksrepublik): Renminbi Yuan + + + + + Kolumbien: Peso + + + + + Costa Rica: Colón + + + + + Serbien: Dinar + + + + + Kuba: Peso + + + + + Kap Verde: Escudo + + + + + Zypern (griechischer Teil): Pfund + + + + + Tschechien: Krone + + + + + Dschibuti: Franc + + + + + Dänemark: Krone + + + + + Dominikanische Republik: Peso + + + + + Algerien: Dinar + + + + + Ecuador (bis 2000): Sucre + + + + + Estland: Krone + + + + + Ägypten: Pfund + + + + + Äthiopien: Birr + + + + + Europäische Währungsunion: Euro + + + + + Fidschi: Dollar + + + + + Falklandinseln: Pfund + + + + + Vereinigtes Königreich: Pfund + + + + + Georgien: Lari + + + + + Ghana: Cedi + + + + + Gibraltar: Pfund + + + + + Gambia: Dalasi + + + + + Guinea: Franc + + + + + Guatemala: Quetzal + + + + + Guyana: Dollar + + + + + Hongkong: Dollar + + + + + Honduras: Lempira + + + + + Kroatien: Kuna + + + + + Haiti: Gourde + + + + + Ungarn: Forint + + + + + Indonesien: Rupiah + + + + + Israel: Schekel + + + + + Indien: Rupie + + + + + Irak: Dinar + + + + + Iran: Rial + + + + + Island: Krone + + + + + Jamaika: Dollar + + + + + Jordanien: Dinar + + + + + Japan: Yen + + + + + Kenia: Schilling + + + + + Kirgisistan: Som + + + + + Kambodscha: Riel + + + + + Komoren: Franc + + + + + Nordkorea: Won + + + + + Südkorea: Won + + + + + Kuwait: Dinar + + + + + Kaimaninseln: Dollar + + + + + Kasachstan: Tenge + + + + + Laos: Kip + + + + + Libanon: Pfund + + + + + Sri Lanka: Rupie + + + + + Liberia: Dollar + + + + + Lesotho: Loti + + + + + Litauen: Litas + + + + + Lettland: Lats + + + + + Libyen: Dinar + + + + + Marokko: Dirham + + + + + Moldawien: Leu + + + + + Madagaskar: Franc + + + + + Mazedonien: Denar + + + + + Myanmar: Kyat + + + + + Mongolei: Tugrik + + + + + Macau: Pataca + + + + + Mauretanien: Ouguiya + + + + + Malta: Lira + + + + + Mauritius: Rupie + + + + + Malediven: Rufiyaa + + + + + Malawi: Kwacha + + + + + Mexiko: Peso + + + + + Malaysia: Ringgit + + + + + Mosambik: Metical + + + + + Namibia: Dollar + + + + + Nigeria: Naira + + + + + Nicaragua: Cordoba Oro + + + + + Norwegen: Krone + + + + + Nepal: Rupie + + + + + Neuseeland: Dollar + + + + + Oman: Rial + + + + + Panama: Balboa + + + + + Peru: Nuevo Sol + + + + + Papua-Neuguinea: Kina + + + + + Philippinen: Peso + + + + + Pakistan: Rupie + + + + + Polen: Zloty + + + + + Paraguay: Guaraní + + + + + Katar: Riyal + + + + + Rumänien: Leu + + + + + Russland: Rubel + + + + + Ruanda: Franc + + + + + Saudi-Arabien: Riyal + + + + + Salomonen: Dollar + + + + + Seychellen: Rupie + + + + + Sudan: Dinar + + + + + Schweden: Krone + + + + + Singapur: Dollar + + + + + St. Helena: Pfund + + + + + Slowenien: Tolar + + + + + Slowakei: Krone + + + + + Sierra Leone: Leone + + + + + Somalia: Schilling + + + + + Suriname: Dollar + + + + + São Tomé und Príncipe: Dobra + + + + + El Salvador: Colón + + + + + Syrien: Pfund + + + + + Swasiland: Lilangeni + + + + + Thailand: Baht + + + + + Tadschikistan: Somoni + + + + + Turkmenistan: Manat + + + + + Tunesien: Dinar + + + + + Tonga: Pa'anga + + + + + Türkei: Lira + + + + + Türkei: Neue Lira (ab 2005) + + + + + Trinidad und Tobago: Dollar + + + + + Taiwan: Dollar + + + + + Tansania: Schilling + + + + + Ukraine: Hrywnja + + + + + Uganda: Shilling + + + + + USA: Dollar + + + + + Uruguay: Peso + + + + + Usbekistan: Sum + + + + + Venezuela: Bolivar + + + + + Vietnam: Dong + + + + + Vanuatu: Vatu + + + + + Samoa: Tala + + + + + Zentralafrikanische Wirtschafts- und Währungsunion: CFA-Franc + + + + + Ostkaribische Währungsunion: Dollar + + + + + Westafrikanische Wirtschafts- und Währungsunion: CFA-Franc + + + + + Neukaledonien: CFP-Franc + + + + + Spezialcode für Testzwecke; keine existierende Währung + + + + + keine Währung + + + + + Jemen: Rial + + + + + Südafrika: Rand + + + + + Sambia: Kwacha + + + + + Simbabwe: Dollar + + + + + + + Datentyp für einen Betragswert (ohne Währung). + + + + + + + + + Datentyp für einen Betrag inkl. Währungscode-Attribut (Default = "EUR"). + + + + + + Währungscode, Default="EUR". + Currency code, default setting is "EUR". + + + + + + + + Datentyp für die Transaktions-ID. + + + + + + + + Datentyp für Nonces. + + + + + + + + Datentyp für die Instituts-ID. + + + + + + + + Datentyp für die Host-ID. + + + + + + + + Datentyp für die Kundenprodukt-ID. + + + + + + + + Datentyp für das Sprachkennzeichen des Kundenprodukts. + + + + + + + + Datentyp für allgemeine Auftragsarten (Grundtyp). + + + + + + + + + Datentyp für eine Auftragsnummer lt. DFÜ-Abkommen. + + + + + + + + + Datentyp für das Sicherheitsmedium. + + + + + + + + + Datentyp für die Segmentnummer. + + + + + + + + Datentyp für die Gesamtsegmentanzahl. + + + + + + + + Datentyp für die Gesamtanzahl der Einzelauftraginfos. + + + + + + + + Datentyp für die Transaktionsphase. + + + + + Transaktionsinitialisierung + + + + + Auftragsdatentransfer + + + + + Quittungstransfer + + + + + + + Datentyp für Zeitstempel. + + + + + + Datentyp für Datumswerte. + + + + + + Datentyp für eine Teilnehmer-ID. + + + + + + + + + Datentyp für eine Kunden-ID. + + + + + + + + + Datentyp für eine Konten-ID. + + + + + + + + Datentyp für eine Kontonummer (national/international). + + + + + + + + + Datentyp für eine Bankleitzahl (national/international). + + + + + + + + + Datentyp für ein nationales BLZ-Präfix. + + + + + + + + Datentyp für eine Kontonummer (freies Format). + + + + + + + + Datentyp für eine Bankleitzahl (freies Format). + + + + + + + + Datentyp für den Namen des Kontoinhabers. + + + + + + Datentyp für die Kontobeschreibung. + + + + + + Datentyp für Kontoinformationen. + + + + + + Kontonummer (deutsches Format und/oder international als IBAN). + Account number (German format and/or international=IBAN). + + + + + + + Ist die Kontonummer im deutschen Format (international=false) oder im internationalen Format (international=true, IBAN) angegeben? + Is the account number specified using the national=German or the international=IBAN format? + + + + + + + + + Kontonummer im freien Format. + Account in free format. + + + + + + + Formatkennung. + Format identification. + + + + + + + + + + + Bankleitzahl (deutsches Format und/oder international als SWIFT-BIC). + Bank code (German and/or international=SWIFT-BIC). + + + + + + + Ist die Bankleitzahl im deutschen Format (international=false, BLZ) oder im internationalen Format (international=true, SWIFT-BIC) angegeben? + Is the bank code specified using the national=German or the international SWIFT-BIC format? + + + + + nationales Präfix für Bankleitzahlen. + National=German prefix for bank codes. + + + + + + + + + Bankleitzahl im freien Format. + Bank code in free format. + + + + + + + Formatkennung. + Format identification. + + + + + + + + + + Name des Kontoinhabers. + Name of the account holder. + + + + + + Währungscode für dieses Konto, Default=EUR. + Currency code for this account, Default=EUR. + + + + + Kontobeschreibung. + Description of this account. + + + + + + Datentyp für die Rolle eines Zahlungsverkehrskontos innerhalb einer Transaktion. + + + + + Auftraggeberkonto + + + + + Empfängerkonto + + + + + Gebührenkonto + + + + + andere Kontorolle + + + + + + + Datentyp für die Rolle eines Kreditinstituts innerhalb einer Transaktion (repräsentiert durch die Bankleitzahl). + + + + + Auftraggeberbank + + + + + Empfängerbank + + + + + Korrespondenzbank + + + + + andere Bankrolle + + + + + + + Datentyp für die Rolle eines Kontoinhabers innerhalb einer Transaktion. + + + + + Auftraggeber + + + + + Empfänger + + + + + Überbringer, Einreicher + + + + + andere Rolle + + + + + + + Datentyp für Kontoinformationen inkl. der Eigenschaftszuordnung innerhalb einer Zahlungstransaktion. + + + + + + Kontonummer (deutsches Format oder international als IBAN). + Kontonummer (Account number (German format and/or international = IBAN). + + + + + + + Rolle des Kontos innerhalb der Zahlungstransaktion. + Role of the account during the transaction. + + + + + Textuelle Beschreibung der Funktion, falls role=Other ausgewählt wird. + Textual description of the role the account place during the transaction; use only if the corresponding 'role' field is set to 'other'. + + + + + Ist die Kontonummer im deutschen Format (international=false) oder im internationalen Format (international=true, IBAN) angegeben? + Is the account number specified using the national=German or the international=IBAN format? + + + + + + + + + Kontonummer im freien Format. + Account in free format. + + + + + + + Rolle des Kontos innerhalb der Zahlungstransaktion. + Role of the account during the transaction. + + + + + Textuelle Beschreibung der Funktion, falls role=Other ausgewählt wird. + Textual description of the role the account place during the transaction; use only if the corresponding 'role' field is set to 'other'. + + + + + Formatkennung. + Format identification. + + + + + + + + + + + Bankleitzahl (deutsches Format oder international als SWIFT-BIC). + Bank code (German and/or international=SWIFT-BIC). + + + + + + + Rolle des kontoführenden Instituts innerhalb der Zahlungstransaktion. + Role of the bank during the transaction. + + + + + Textuelle Beschreibung der Funktion, falls role=Other ausgewählt wird. + Textual description of the role the account place during the transaction; use only if the corresponding 'role' field is set to 'other'. + + + + + Ist die Bankleitzahl im deutschen Format (international=false, BLZ) oder im internationalen Format (international=true, SWIFT-BIC) angegeben? + Is the bank code specified using the national=German or the international=SWIFT-BIC format? + + + + + nationales Präfix für Bankleitzahlen. + National=German prefix for bank codes. + + + + + + + + + Bankleitzahl im freien Format. + Bank code in free format. + + + + + + + Rolle des kontoführenden Instituts innerhalb der Zahlungstransaktion. + Role of the bank during the transaction. + + + + + Textuelle Beschreibung der Funktion, falls role=Other ausgewählt wird. + Textual description of the role the account place during the transaction; use only if the corresponding 'role' field is set to 'other'. + + + + + Formatkennung. + Format identification. + + + + + + + + + + Name des Kontoinhabers. + Name of the account holder. + + + + + + + Rolle des Kontoinhabers innerhalb der Zahlungstransaktion. + Role of the account holder during the transaction. + + + + + Textuelle Beschreibung der Rolle, falls role=Other ausgewählt wird. + Textual description of the role the account holder place during the transaction; use only if the corresponding 'role' field is set to 'other'. + + + + + + + + + + Währungscode für dieses Konto, Default=EUR. + Currency code for this account, Default=EUR. + + + + + Kontobeschreibung. + Description of this account. + + + + + + Datentyp für binäre Signaturdaten (komprimiert, verschlüsselt und kodiert). + + + + + + Datentyp für binäre Auftragsdaten (komprimiert, verschlüsselt und kodiert). + + + + + + Datentyp für Berechtigungsklassen zur Elektronischen Unterschrift. + + + + + + Einzelunterschrift + + + + + Erstunterschrift + + + + + Zweitunterschrift + + + + + Transportunterschrift + + + + + + + Listentyp für Berechtigungsklassen zur Elektronischen Unterschrift. + + + + + + Datentyp für Hashfunktionen. + + + + + + Datentyp für Hashwerte. + + + + + + + + + Version des Signaturverfahrens. + Version of the algorithm used for signature creation. + + + + + + + + Datentyp für kryptographische Unterschriften. + + + + + + Datentyp für symmetrische Schlüssel. + + + + + + Datentyp für Hashwerte und Attribute von öffentlichen Schlüsseln. + + + + + + Hashalgorithmus. + Name of the used hash algorithm. + + + + + + + + Datentyp für die Darstellung eines öffentlichen RSA-Schlüssels als Exponent-Modulus-Kombination oder als X509-Zertifikat. + + + + + + + + + Datentyp für öffentliche Verschlüsselungsschlüssel. + + + + + + + Version des Verschlüsselungsverfahrens. + + + + + + + + + Datentyp für öffentlichen Authentfikationsschlüssel. + + + + + + + Version des Authentifikationsverfahrens. + + + + + + + + + Datentyp für öffentliche bankfachliche Schlüssel. + Data type for public authorisation (ES) key. + + + + + + + Version des EU-Signaturverfahrens. + ES-Version. + + + + + + + + + Datentyp für öffentlichen Schlüssel zur Authentisierung. + Data type for public for identification and authentication. + + + + + + + Version des Authentifikationsverfahrens. + Authentication version. + + + + + + + + + Datentyp für öffentlichen Verschlüsselungsschlüssel. + Data type for encryption key. + + + + + + + Version des Verschlüsselungsverfahrens. + Encryption Version. + + + + + + + + + Datentyp für die Zertifikate hinsichtlich der "bank-technical signature for authorisation" (ES). + Data Type for Certificates for the bank-technical signature for authorisation (ES) + + + + + + + + + Datentyp für Antwortcodes. + + + + + + + + + Datentyp für den Erklärungstext zum Antwortcode. + + + + + + + + Datentyp für Quittierungscodes. + + + + + + + + + Datentyp für Kunden-, Teilnehmer-, Straßen- oder Ortsnamen. + + + + + + Datentyp für die Beschreibung von Auftragsarten. + + + + + + + + Datentyp für den Teilnehmerstatus. + + + + + + + + generic parameter + Generic key value parameters. + + + + + + name of parameter + Name of the parameter (= key). + + + + + value of parameter + Value of the parameter. + + + + + + + XML-Typ des Parameterwerts (Vorschlag für default ist string). + XML type of the parameter value (Proposal for default is string). + + + + + + + + + + + + Datentyp für die Darstellung von Information zur Verschlüsselung der Auftragsdaten. + Data type for the modelling of information regarding the encryption of signature and order data. + + + + + Hashwert des öffentlichen Verschlüsselungsschlüssels des Empfängers der verschlüsselten Auftragsdaten. + Hash value of the public encryption key owned by the receipient of the encrypted order data. + + + + + + + Version des Verschlüsselungsverfahrens. + Version of the encryption method. + + + + + + + + + Asymmetrisch verschlüsselter symmetrischer Transaktionsschlüssel. + The asymmetrically encrypted symmetric transaction key. + + + + + + + + Authentifikationssignatur. + Authentication signature. + + + + + String up to 255 characters. + + + + + + + + + + + + + + + + Type is used for ISO variant and version + + + + + + + + + + Type ist used for original file name + + + + + + + + + Type ist used for name or rather kind of Message + + + + + + + + + + Service Code name: External list specified and maintained by EBICS. Basis is the "SWIFT-list" for the field "description" (SCT, DCT, XCT, SDD, DDD, STM, REP...) plus additional codes needed for further services + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/schemas/h005/xmldsig-core-schema.xsd b/src/main/resources/schemas/h005/xmldsig-core-schema.xsd new file mode 100755 index 0000000..1698c2f --- /dev/null +++ b/src/main/resources/schemas/h005/xmldsig-core-schema.xsd @@ -0,0 +1,318 @@ + + + + + + ]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/test/java/ruhr/scholz/libebics/security/KeyManagementTest.java b/src/test/java/ruhr/scholz/libebics/security/KeyManagementTest.java new file mode 100644 index 0000000..3ec6a48 --- /dev/null +++ b/src/test/java/ruhr/scholz/libebics/security/KeyManagementTest.java @@ -0,0 +1,32 @@ +package ruhr.scholz.libebics.security; + +import org.junit.jupiter.api.Test; + +public class KeyManagementTest { + @Test void generateAuthenticationCertificate(){ + new AuthenticationCertificate(AuthenticationCertificate.AuthenticationCertificateType.X002); + } + + @Test void generateSignatureCertificate(){ + new SignatureCertificate(SignatureCertificate.SignatureCertificateType.A005); + } + + @Test void generateEncryptionCertificate(){ + new EncryptionCertificate(EncryptionCertificate.EncryptionCertificateType.E002); + } + + @Test void printAuthenticationCertificateFingerprint(){ + AuthenticationCertificate authenticationCertificate = new AuthenticationCertificate(AuthenticationCertificate.AuthenticationCertificateType.X002); + System.out.println(authenticationCertificate.getFingerprintString(true)); + } + + @Test void printSignatureCertificateFingerprint(){ + SignatureCertificate signatureCertificate = new SignatureCertificate(SignatureCertificate.SignatureCertificateType.A005); + System.out.println(signatureCertificate.getFingerprintString(true)); + } + + @Test void printEncryptionCertificateFingerprint(){ + EncryptionCertificate encryptionCertificate = new EncryptionCertificate(EncryptionCertificate.EncryptionCertificateType.E002); + System.out.println(encryptionCertificate.getFingerprintString(true)); + } +} -- cgit