[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[libeufin] branch master updated: model ebics request and test
From: |
gnunet |
Subject: |
[libeufin] branch master updated: model ebics request and test |
Date: |
Wed, 06 Nov 2019 11:32:13 +0100 |
This is an automated email from the git hooks/post-receive script.
dold pushed a commit to branch master
in repository libeufin.
The following commit(s) were added to refs/heads/master by this push:
new 549d892 model ebics request and test
549d892 is described below
commit 549d892d5a65bfc87a2062c05ebe1f00468b8acd
Author: Florian Dold <address@hidden>
AuthorDate: Wed Nov 6 11:32:03 2019 +0100
model ebics request and test
---
.idea/codeStyles/Project.xml | 182 +++++++++++++++++++++
.../src/main/kotlin/tech/libeufin/sandbox/Main.kt | 2 +-
.../libeufin/schema/ebics_h004/EbicsRequest.kt | 78 ++++++++-
.../libeufin/schema/ebics_h004/EbicsResponse.kt | 14 +-
.../tech/libeufin/schema/ebics_h004/EbicsTypes.kt | 38 ++---
sandbox/src/test/kotlin/EbicsMessagesTest.kt | 57 +++++++
6 files changed, 334 insertions(+), 37 deletions(-)
diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml
index 1bec35e..d61ce4e 100644
--- a/.idea/codeStyles/Project.xml
+++ b/.idea/codeStyles/Project.xml
@@ -5,6 +5,188 @@
</JetCodeStyleSettings>
<codeStyleSettings language="kotlin">
<option name="CODE_STYLE_DEFAULTS" value="KOTLIN_OFFICIAL" />
+ <option name="WRAP_ON_TYPING" value="1" />
+ <option name="arrangementSettings" />
+ <option name="forceArrangeMenuAvailable" value="false" />
+ <option name="CODE_STYLE_DEFAULTS" value="KOTLIN_OFFICIAL" />
+ <option name="RIGHT_MARGIN" value="-1" />
+ <option name="LINE_COMMENT_AT_FIRST_COLUMN" value="true" />
+ <option name="BLOCK_COMMENT_AT_FIRST_COLUMN" value="true" />
+ <option name="LINE_COMMENT_ADD_SPACE" value="false" />
+ <option name="KEEP_LINE_BREAKS" value="true" />
+ <option name="KEEP_FIRST_COLUMN_COMMENT" value="true" />
+ <option name="KEEP_CONTROL_STATEMENT_IN_ONE_LINE" value="true" />
+ <option name="KEEP_BLANK_LINES_IN_DECLARATIONS" value="2" />
+ <option name="KEEP_BLANK_LINES_IN_CODE" value="2" />
+ <option name="KEEP_BLANK_LINES_BETWEEN_PACKAGE_DECLARATION_AND_HEADER"
value="2" />
+ <option name="KEEP_BLANK_LINES_BEFORE_RBRACE" value="2" />
+ <option name="BLANK_LINES_BEFORE_PACKAGE" value="0" />
+ <option name="BLANK_LINES_AFTER_PACKAGE" value="1" />
+ <option name="BLANK_LINES_BEFORE_IMPORTS" value="1" />
+ <option name="BLANK_LINES_AFTER_IMPORTS" value="1" />
+ <option name="BLANK_LINES_AROUND_CLASS" value="1" />
+ <option name="BLANK_LINES_AROUND_FIELD" value="0" />
+ <option name="BLANK_LINES_AROUND_METHOD" value="1" />
+ <option name="BLANK_LINES_BEFORE_METHOD_BODY" value="0" />
+ <option name="BLANK_LINES_AROUND_FIELD_IN_INTERFACE" value="0" />
+ <option name="BLANK_LINES_AROUND_METHOD_IN_INTERFACE" value="1" />
+ <option name="BLANK_LINES_AFTER_CLASS_HEADER" value="0" />
+ <option name="BLANK_LINES_AFTER_ANONYMOUS_CLASS_HEADER" value="0" />
+ <option name="BLANK_LINES_BEFORE_CLASS_END" value="0" />
+ <option name="BRACE_STYLE" value="1" />
+ <option name="CLASS_BRACE_STYLE" value="1" />
+ <option name="METHOD_BRACE_STYLE" value="1" />
+ <option name="LAMBDA_BRACE_STYLE" value="1" />
+ <option name="USE_FLYING_GEESE_BRACES" value="false" />
+ <option name="DO_NOT_INDENT_TOP_LEVEL_CLASS_MEMBERS" value="false" />
+ <option name="ELSE_ON_NEW_LINE" value="false" />
+ <option name="WHILE_ON_NEW_LINE" value="false" />
+ <option name="CATCH_ON_NEW_LINE" value="false" />
+ <option name="FINALLY_ON_NEW_LINE" value="false" />
+ <option name="INDENT_CASE_FROM_SWITCH" value="true" />
+ <option name="CASE_STATEMENT_ON_NEW_LINE" value="true" />
+ <option name="INDENT_BREAK_FROM_CASE" value="true" />
+ <option name="SPECIAL_ELSE_IF_TREATMENT" value="true" />
+ <option name="ALIGN_MULTILINE_CHAINED_METHODS" value="false" />
+ <option name="ALIGN_MULTILINE_PARAMETERS" value="true" />
+ <option name="ALIGN_MULTILINE_PARAMETERS_IN_CALLS" value="false" />
+ <option name="ALIGN_MULTILINE_RESOURCES" value="true" />
+ <option name="ALIGN_MULTILINE_FOR" value="true" />
+ <option name="INDENT_WHEN_CASES" value="true" />
+ <option name="ALIGN_MULTILINE_BINARY_OPERATION" value="false" />
+ <option name="ALIGN_MULTILINE_ASSIGNMENT" value="false" />
+ <option name="ALIGN_MULTILINE_TERNARY_OPERATION" value="false" />
+ <option name="ALIGN_MULTILINE_THROWS_LIST" value="false" />
+ <option name="ALIGN_THROWS_KEYWORD" value="false" />
+ <option name="ALIGN_MULTILINE_EXTENDS_LIST" value="false" />
+ <option name="ALIGN_MULTILINE_METHOD_BRACKETS" value="false" />
+ <option name="ALIGN_MULTILINE_PARENTHESIZED_EXPRESSION" value="false" />
+ <option name="ALIGN_MULTILINE_ARRAY_INITIALIZER_EXPRESSION"
value="false" />
+ <option name="ALIGN_GROUP_FIELD_DECLARATIONS" value="false" />
+ <option name="ALIGN_CONSECUTIVE_VARIABLE_DECLARATIONS" value="false" />
+ <option name="ALIGN_CONSECUTIVE_ASSIGNMENTS" value="false" />
+ <option name="ALIGN_SUBSEQUENT_SIMPLE_METHODS" value="false" />
+ <option name="SPACE_AROUND_ASSIGNMENT_OPERATORS" value="true" />
+ <option name="SPACE_AROUND_LOGICAL_OPERATORS" value="true" />
+ <option name="SPACE_AROUND_EQUALITY_OPERATORS" value="true" />
+ <option name="SPACE_AROUND_RELATIONAL_OPERATORS" value="true" />
+ <option name="SPACE_AROUND_BITWISE_OPERATORS" value="true" />
+ <option name="SPACE_AROUND_ADDITIVE_OPERATORS" value="true" />
+ <option name="SPACE_AROUND_MULTIPLICATIVE_OPERATORS" value="true" />
+ <option name="SPACE_AROUND_SHIFT_OPERATORS" value="true" />
+ <option name="SPACE_AROUND_UNARY_OPERATOR" value="false" />
+ <option name="SPACE_AROUND_LAMBDA_ARROW" value="true" />
+ <option name="SPACE_AROUND_METHOD_REF_DBL_COLON" value="false" />
+ <option name="SPACE_AFTER_COMMA" value="true" />
+ <option name="SPACE_AFTER_COMMA_IN_TYPE_ARGUMENTS" value="true" />
+ <option name="SPACE_BEFORE_COMMA" value="false" />
+ <option name="SPACE_AFTER_SEMICOLON" value="true" />
+ <option name="SPACE_BEFORE_SEMICOLON" value="false" />
+ <option name="SPACE_WITHIN_PARENTHESES" value="false" />
+ <option name="SPACE_WITHIN_METHOD_CALL_PARENTHESES" value="false" />
+ <option name="SPACE_WITHIN_EMPTY_METHOD_CALL_PARENTHESES" value="false"
/>
+ <option name="SPACE_WITHIN_METHOD_PARENTHESES" value="false" />
+ <option name="SPACE_WITHIN_EMPTY_METHOD_PARENTHESES" value="false" />
+ <option name="SPACE_WITHIN_IF_PARENTHESES" value="false" />
+ <option name="SPACE_WITHIN_WHILE_PARENTHESES" value="false" />
+ <option name="SPACE_WITHIN_FOR_PARENTHESES" value="false" />
+ <option name="SPACE_WITHIN_TRY_PARENTHESES" value="false" />
+ <option name="SPACE_WITHIN_CATCH_PARENTHESES" value="false" />
+ <option name="SPACE_WITHIN_SWITCH_PARENTHESES" value="false" />
+ <option name="SPACE_WITHIN_SYNCHRONIZED_PARENTHESES" value="false" />
+ <option name="SPACE_WITHIN_CAST_PARENTHESES" value="false" />
+ <option name="SPACE_WITHIN_BRACKETS" value="false" />
+ <option name="SPACE_WITHIN_BRACES" value="false" />
+ <option name="SPACE_WITHIN_ARRAY_INITIALIZER_BRACES" value="false" />
+ <option name="SPACE_WITHIN_EMPTY_ARRAY_INITIALIZER_BRACES" value="false"
/>
+ <option name="SPACE_AFTER_TYPE_CAST" value="true" />
+ <option name="SPACE_BEFORE_METHOD_CALL_PARENTHESES" value="false" />
+ <option name="SPACE_BEFORE_METHOD_PARENTHESES" value="false" />
+ <option name="SPACE_BEFORE_IF_PARENTHESES" value="true" />
+ <option name="SPACE_BEFORE_WHILE_PARENTHESES" value="true" />
+ <option name="SPACE_BEFORE_FOR_PARENTHESES" value="true" />
+ <option name="SPACE_BEFORE_TRY_PARENTHESES" value="true" />
+ <option name="SPACE_BEFORE_CATCH_PARENTHESES" value="true" />
+ <option name="SPACE_BEFORE_SWITCH_PARENTHESES" value="true" />
+ <option name="SPACE_BEFORE_SYNCHRONIZED_PARENTHESES" value="true" />
+ <option name="SPACE_BEFORE_CLASS_LBRACE" value="true" />
+ <option name="SPACE_BEFORE_METHOD_LBRACE" value="true" />
+ <option name="SPACE_BEFORE_IF_LBRACE" value="true" />
+ <option name="SPACE_BEFORE_ELSE_LBRACE" value="true" />
+ <option name="SPACE_BEFORE_WHILE_LBRACE" value="true" />
+ <option name="SPACE_BEFORE_FOR_LBRACE" value="true" />
+ <option name="SPACE_BEFORE_DO_LBRACE" value="true" />
+ <option name="SPACE_BEFORE_SWITCH_LBRACE" value="true" />
+ <option name="SPACE_BEFORE_TRY_LBRACE" value="true" />
+ <option name="SPACE_BEFORE_CATCH_LBRACE" value="true" />
+ <option name="SPACE_BEFORE_FINALLY_LBRACE" value="true" />
+ <option name="SPACE_BEFORE_SYNCHRONIZED_LBRACE" value="true" />
+ <option name="SPACE_BEFORE_ARRAY_INITIALIZER_LBRACE" value="false" />
+ <option name="SPACE_BEFORE_ANNOTATION_ARRAY_INITIALIZER_LBRACE"
value="false" />
+ <option name="SPACE_BEFORE_ELSE_KEYWORD" value="true" />
+ <option name="SPACE_BEFORE_WHILE_KEYWORD" value="true" />
+ <option name="SPACE_BEFORE_CATCH_KEYWORD" value="true" />
+ <option name="SPACE_BEFORE_FINALLY_KEYWORD" value="true" />
+ <option name="SPACE_BEFORE_QUEST" value="true" />
+ <option name="SPACE_AFTER_QUEST" value="true" />
+ <option name="SPACE_BEFORE_COLON" value="true" />
+ <option name="SPACE_AFTER_COLON" value="true" />
+ <option name="SPACE_BEFORE_TYPE_PARAMETER_LIST" value="false" />
+ <option name="CALL_PARAMETERS_WRAP" value="5" />
+ <option name="PREFER_PARAMETERS_WRAP" value="false" />
+ <option name="CALL_PARAMETERS_LPAREN_ON_NEXT_LINE" value="true" />
+ <option name="CALL_PARAMETERS_RPAREN_ON_NEXT_LINE" value="true" />
+ <option name="METHOD_PARAMETERS_WRAP" value="5" />
+ <option name="METHOD_PARAMETERS_LPAREN_ON_NEXT_LINE" value="true" />
+ <option name="METHOD_PARAMETERS_RPAREN_ON_NEXT_LINE" value="true" />
+ <option name="RESOURCE_LIST_WRAP" value="0" />
+ <option name="RESOURCE_LIST_LPAREN_ON_NEXT_LINE" value="false" />
+ <option name="RESOURCE_LIST_RPAREN_ON_NEXT_LINE" value="false" />
+ <option name="EXTENDS_LIST_WRAP" value="1" />
+ <option name="THROWS_LIST_WRAP" value="0" />
+ <option name="EXTENDS_KEYWORD_WRAP" value="0" />
+ <option name="THROWS_KEYWORD_WRAP" value="0" />
+ <option name="METHOD_CALL_CHAIN_WRAP" value="1" />
+ <option name="WRAP_FIRST_METHOD_IN_CALL_CHAIN" value="false" />
+ <option name="PARENTHESES_EXPRESSION_LPAREN_WRAP" value="false" />
+ <option name="PARENTHESES_EXPRESSION_RPAREN_WRAP" value="false" />
+ <option name="BINARY_OPERATION_WRAP" value="0" />
+ <option name="BINARY_OPERATION_SIGN_ON_NEXT_LINE" value="false" />
+ <option name="TERNARY_OPERATION_WRAP" value="0" />
+ <option name="TERNARY_OPERATION_SIGNS_ON_NEXT_LINE" value="false" />
+ <option name="MODIFIER_LIST_WRAP" value="false" />
+ <option name="KEEP_SIMPLE_BLOCKS_IN_ONE_LINE" value="false" />
+ <option name="KEEP_SIMPLE_METHODS_IN_ONE_LINE" value="false" />
+ <option name="KEEP_SIMPLE_LAMBDAS_IN_ONE_LINE" value="false" />
+ <option name="KEEP_SIMPLE_CLASSES_IN_ONE_LINE" value="false" />
+ <option name="KEEP_MULTIPLE_EXPRESSIONS_IN_ONE_LINE" value="false" />
+ <option name="FOR_STATEMENT_WRAP" value="0" />
+ <option name="FOR_STATEMENT_LPAREN_ON_NEXT_LINE" value="false" />
+ <option name="FOR_STATEMENT_RPAREN_ON_NEXT_LINE" value="false" />
+ <option name="ARRAY_INITIALIZER_WRAP" value="0" />
+ <option name="ARRAY_INITIALIZER_LBRACE_ON_NEXT_LINE" value="false" />
+ <option name="ARRAY_INITIALIZER_RBRACE_ON_NEXT_LINE" value="false" />
+ <option name="ASSIGNMENT_WRAP" value="1" />
+ <option name="PLACE_ASSIGNMENT_SIGN_ON_NEXT_LINE" value="false" />
+ <option name="LABELED_STATEMENT_WRAP" value="2" />
+ <option name="WRAP_COMMENTS" value="false" />
+ <option name="ASSERT_STATEMENT_WRAP" value="0" />
+ <option name="ASSERT_STATEMENT_COLON_ON_NEXT_LINE" value="false" />
+ <option name="IF_BRACE_FORCE" value="0" />
+ <option name="DOWHILE_BRACE_FORCE" value="0" />
+ <option name="WHILE_BRACE_FORCE" value="0" />
+ <option name="FOR_BRACE_FORCE" value="0" />
+ <option name="WRAP_LONG_LINES" value="false" />
+ <option name="METHOD_ANNOTATION_WRAP" value="2" />
+ <option name="CLASS_ANNOTATION_WRAP" value="2" />
+ <option name="FIELD_ANNOTATION_WRAP" value="2" />
+ <option name="PARAMETER_ANNOTATION_WRAP" value="0" />
+ <option name="VARIABLE_ANNOTATION_WRAP" value="0" />
+ <option name="SPACE_BEFORE_ANOTATION_PARAMETER_LIST" value="false" />
+ <option name="SPACE_WITHIN_ANNOTATION_PARENTHESES" value="false" />
+ <option name="ENUM_CONSTANTS_WRAP" value="0" />
+ <option name="FORCE_REARRANGE_MODE" value="0" />
+ <option name="WRAP_ON_TYPING" value="1" />
</codeStyleSettings>
</code_scheme>
</component>
\ No newline at end of file
diff --git a/sandbox/src/main/kotlin/tech/libeufin/sandbox/Main.kt
b/sandbox/src/main/kotlin/tech/libeufin/sandbox/Main.kt
index 102bc58..7686401 100644
--- a/sandbox/src/main/kotlin/tech/libeufin/sandbox/Main.kt
+++ b/sandbox/src/main/kotlin/tech/libeufin/sandbox/Main.kt
@@ -93,7 +93,7 @@ private suspend fun ApplicationCall.respondEbicsKeyManagement(
this.dataEncryptionInfo =
EbicsTypes.DataEncryptionInfo().apply {
this.authenticate = true
this.transactionKey =
dataTransfer.encryptedTransactionKey
- this.encryptionPubKeyDigest =
EbicsTypes.DataEncryptionInfo.EncryptionPubKeyDigest().apply {
+ this.encryptionPubKeyDigest =
EbicsTypes.PubKeyDigest().apply {
this.algorithm =
"http://www.w3.org/2001/04/xmlenc#sha256"
this.version = "E002"
this.value = dataTransfer.pubKeyDigest
diff --git
a/sandbox/src/main/kotlin/tech/libeufin/schema/ebics_h004/EbicsRequest.kt
b/sandbox/src/main/kotlin/tech/libeufin/schema/ebics_h004/EbicsRequest.kt
index 0211948..ded67e2 100644
--- a/sandbox/src/main/kotlin/tech/libeufin/schema/ebics_h004/EbicsRequest.kt
+++ b/sandbox/src/main/kotlin/tech/libeufin/schema/ebics_h004/EbicsRequest.kt
@@ -5,7 +5,6 @@ import java.math.BigInteger
import javax.xml.bind.annotation.*
import javax.xml.bind.annotation.adapters.CollapsedStringAdapter
import javax.xml.bind.annotation.adapters.HexBinaryAdapter
-import javax.xml.bind.annotation.adapters.XmlAdapter
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter
import javax.xml.datatype.XMLGregorianCalendar
@@ -13,6 +12,13 @@ import javax.xml.datatype.XMLGregorianCalendar
@XmlType(name = "", propOrder = ["header", "authSignature", "body"])
@XmlRootElement(name = "ebicsRequest")
class EbicsRequest {
+ @get:XmlAttribute(name = "Version", required = true)
+ @get:XmlJavaTypeAdapter(CollapsedStringAdapter::class)
+ lateinit var version: String
+
+ @get:XmlAttribute(name = "Revision")
+ var revision: Int? = null
+
@get:XmlElement(name = "header", required = true)
lateinit var header: Header
@@ -35,7 +41,16 @@ class EbicsRequest {
var authenticate: Boolean = false
}
- abstract class StaticHeaderType {
+ @XmlAccessorType(XmlAccessType.NONE)
+ @XmlType(
+ name = "",
+ propOrder = [
+ "hostID", "nonce", "timestamp", "partnerID", "userID", "systemID",
+ "product", "orderDetails", "bankPubKeyDigests", "securityMedium",
+ "numSegments", "transactionID"
+ ]
+ )
+ class StaticHeaderType {
@get:XmlElement(name = "HostID", required = true)
@get:XmlJavaTypeAdapter(CollapsedStringAdapter::class)
lateinit var hostID: String
@@ -80,7 +95,7 @@ class EbicsRequest {
* Present only in the initialization phase.
*/
@get:XmlElement(name = "Product")
- val product: EbicsTypes.Product? = null
+ var product: EbicsTypes.Product? = null
/**
* Present only in the initialization phase.
@@ -88,6 +103,12 @@ class EbicsRequest {
@get:XmlElement(name = "OrderDetails")
var orderDetails: OrderDetails? = null
+ /**
+ * Present only in the initialization phase.
+ */
+ @get:XmlElement(name = "BankPubKeyDigests")
+ var bankPubKeyDigests: BankPubKeyDigests? = null
+
/**
* Present only in the initialization phase.
*/
@@ -112,9 +133,9 @@ class EbicsRequest {
@XmlAccessorType(XmlAccessType.NONE)
@XmlType(name = "", propOrder = ["transactionPhase", "segmentNumber"])
class MutableHeader {
- @get:XmlElement(name = "TransactionID")
- @get:XmlJavaTypeAdapter(CollapsedStringAdapter::class)
- var transactionPhase: String? = null
+ @get:XmlElement(name = "TransactionPhase", required = true)
+ @get:XmlSchemaType(name = "token")
+ lateinit var transactionPhase: EbicsTypes.TransactionPhaseType
/**
* Number of the currently transmitted segment, if this message
@@ -126,7 +147,9 @@ class EbicsRequest {
}
@XmlAccessorType(XmlAccessType.NONE)
- @XmlType(name = "", propOrder = ["orderType", "orderID", "orderAttribute"])
+ @XmlType(
+ name = "",
+ propOrder = ["orderType", "orderID", "orderAttribute", "orderParams"])
class OrderDetails {
@get:XmlElement(name = "OrderType", required = true)
@get:XmlJavaTypeAdapter(CollapsedStringAdapter::class)
@@ -136,13 +159,22 @@ class EbicsRequest {
* Only present if this ebicsRequest is a upload order
* relating to an already existing order.
*/
- @get:XmlElement(name = "OrderId", required = true)
+ @get:XmlElement(name = "OrderID", required = true)
@get:XmlJavaTypeAdapter(CollapsedStringAdapter::class)
var orderID: String? = null
@get:XmlElement(name = "OrderAttribute", required = true)
@get:XmlJavaTypeAdapter(CollapsedStringAdapter::class)
lateinit var orderAttribute: String
+
+ /**
+ * Present only in the initialization phase.
+ */
+ @get:XmlElements(
+ XmlElement(
+ name = "StandardOrderParams",
+ type = StandardOrderParams::class))
+ var orderParams: OrderParams? = null
}
@XmlAccessorType(XmlAccessType.NONE)
@@ -189,4 +221,34 @@ class EbicsRequest {
@get:XmlElement(name = "ReceiptCode")
var receiptCode: Int? = null
}
+
+ @XmlAccessorType(XmlAccessType.NONE)
+ abstract class OrderParams
+
+ @XmlAccessorType(XmlAccessType.NONE)
+ @XmlType(name = "", propOrder = ["dateRange"])
+ class StandardOrderParams : OrderParams() {
+ @get:XmlElement(name = "DateRange")
+ var dateRange: DateRange? = null
+ }
+
+ @XmlAccessorType(XmlAccessType.NONE)
+ @XmlType(name = "", propOrder = ["start", "end"])
+ class DateRange {
+ @get:XmlElement(name = "Start")
+ lateinit var start: XMLGregorianCalendar
+
+ @get:XmlElement(name = "END")
+ lateinit var end: XMLGregorianCalendar
+ }
+
+ @XmlAccessorType(XmlAccessType.NONE)
+ @XmlType(name = "", propOrder = ["authentication", "encryption"])
+ class BankPubKeyDigests {
+ @get:XmlElement(name = "Authentication")
+ lateinit var authentication: EbicsTypes.PubKeyDigest
+
+ @get:XmlElement(name = "Encryption")
+ lateinit var encryption: EbicsTypes.PubKeyDigest
+ }
}
diff --git
a/sandbox/src/main/kotlin/tech/libeufin/schema/ebics_h004/EbicsResponse.kt
b/sandbox/src/main/kotlin/tech/libeufin/schema/ebics_h004/EbicsResponse.kt
index b1d98a7..32ace05 100644
--- a/sandbox/src/main/kotlin/tech/libeufin/schema/ebics_h004/EbicsResponse.kt
+++ b/sandbox/src/main/kotlin/tech/libeufin/schema/ebics_h004/EbicsResponse.kt
@@ -13,6 +13,13 @@ import javax.xml.namespace.QName
@XmlType(name = "", propOrder = ["header", "authSignature", "body"])
@XmlRootElement(name = "ebicsResponse")
class EbicsResponse {
+ @get:XmlAttribute(name = "Version", required = true)
+ @get:XmlJavaTypeAdapter(CollapsedStringAdapter::class)
+ lateinit var version: String
+
+ @get:XmlAttribute(name = "Revision")
+ var revision: Int? = null
+
@get:XmlElement(required = true)
lateinit var header: EbicsResponse.Header
@@ -22,13 +29,6 @@ class EbicsResponse {
@get:XmlElement(required = true)
lateinit var body: Body
- @get:XmlAttribute(name = "Version", required = true)
- @get:XmlJavaTypeAdapter(CollapsedStringAdapter::class)
- lateinit var version: String
-
- @get:XmlAttribute(name = "Revision")
- var revision: Int? = null
-
@get:XmlAnyAttribute
var otherAttributes = HashMap<QName, String>()
diff --git
a/sandbox/src/main/kotlin/tech/libeufin/schema/ebics_h004/EbicsTypes.kt
b/sandbox/src/main/kotlin/tech/libeufin/schema/ebics_h004/EbicsTypes.kt
index 3c3ea9d..ce9f543 100644
--- a/sandbox/src/main/kotlin/tech/libeufin/schema/ebics_h004/EbicsTypes.kt
+++ b/sandbox/src/main/kotlin/tech/libeufin/schema/ebics_h004/EbicsTypes.kt
@@ -21,10 +21,8 @@ package tech.libeufin.schema.ebics_h004
import org.apache.xml.security.binding.xmldsig.RSAKeyValueType
import org.w3c.dom.Element
-import java.math.BigInteger
import javax.xml.bind.annotation.*
import javax.xml.bind.annotation.adapters.CollapsedStringAdapter
-import javax.xml.bind.annotation.adapters.HexBinaryAdapter
import javax.xml.bind.annotation.adapters.NormalizedStringAdapter
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter
import javax.xml.datatype.XMLGregorianCalendar
@@ -60,32 +58,31 @@ class EbicsTypes private constructor() {
var authenticate: Boolean = false
@get:XmlElement(name = "EncryptionPubKeyDigest", required = true)
- lateinit var encryptionPubKeyDigest: EncryptionPubKeyDigest
+ lateinit var encryptionPubKeyDigest: PubKeyDigest
@get:XmlElement(name = "TransactionKey", required = true)
lateinit var transactionKey: ByteArray
@get:XmlAnyElement(lax = true)
var any: List<Any>? = null
-
- @XmlAccessorType(XmlAccessType.NONE)
- class EncryptionPubKeyDigest {
- /**
- * Version of the *digest* of the public key.
- */
- @get:XmlAttribute(name = "Version", required = true)
- @get:XmlJavaTypeAdapter(CollapsedStringAdapter::class)
- lateinit var version: String
-
- @XmlAttribute(name = "Algorithm", required = true)
- @XmlSchemaType(name = "anyURI")
- lateinit var algorithm: String
-
- @get:XmlValue
- lateinit var value: ByteArray
- }
}
+ @XmlAccessorType(XmlAccessType.NONE)
+ class PubKeyDigest {
+ /**
+ * Version of the *digest* of the public key.
+ */
+ @get:XmlAttribute(name = "Version", required = true)
+ @get:XmlJavaTypeAdapter(CollapsedStringAdapter::class)
+ lateinit var version: String
+
+ @XmlAttribute(name = "Algorithm", required = true)
+ @XmlSchemaType(name = "anyURI")
+ lateinit var algorithm: String
+
+ @get:XmlValue
+ lateinit var value: ByteArray
+ }
@Suppress("UNUSED_PARAMETER")
enum class TransactionPhaseType(value: String) {
@@ -205,6 +202,5 @@ class EbicsTypes private constructor() {
@get:XmlElement(name = "Value", required = true)
lateinit var value: String
-
}
}
\ No newline at end of file
diff --git a/sandbox/src/test/kotlin/EbicsMessagesTest.kt
b/sandbox/src/test/kotlin/EbicsMessagesTest.kt
index 2c28630..3ab7ce5 100644
--- a/sandbox/src/test/kotlin/EbicsMessagesTest.kt
+++ b/sandbox/src/test/kotlin/EbicsMessagesTest.kt
@@ -8,6 +8,7 @@ import tech.libeufin.schema.ebics_h004.*
import tech.libeufin.schema.ebics_hev.HEVResponse
import tech.libeufin.schema.ebics_hev.SystemReturnCodeType
import tech.libeufin.schema.ebics_s001.SignaturePubKeyOrderData
+import javax.xml.datatype.DatatypeFactory
import kotlin.test.assertNotNull
import kotlin.test.assertTrue
@@ -230,4 +231,60 @@ class EbicsMessagesTest {
println(str)
assert(XMLUtil.validateFromString(str))
}
+
+ @Test
+ fun testEbicsRequestInitializationPhase() {
+ val ebicsRequestObj = EbicsRequest().apply {
+ this.version = "H004"
+ this.revision = 1
+ this.authSignature = SignatureType()
+ this.header = EbicsRequest.Header().apply {
+ this.authenticate = true
+ this.mutable = EbicsRequest.MutableHeader().apply {
+ this.transactionPhase =
EbicsTypes.TransactionPhaseType.INITIALISATION
+ }
+ this.static = EbicsRequest.StaticHeaderType().apply {
+ this.hostID = "myhost"
+ this.nonce = ByteArray(16)
+ this.timestamp =
+
DatatypeFactory.newDefaultInstance().newXMLGregorianCalendar(2019, 5, 5, 5, 5,
5, 0, 0)
+ this.partnerID = "mypid01"
+ this.userID = "myusr01"
+ this.product = EbicsTypes.Product().apply {
+ this.instituteID = "test"
+ this.language = "en"
+ this.value = "test"
+ }
+ this.orderDetails = EbicsRequest.OrderDetails().apply {
+ this.orderAttribute = "DZHNN"
+ this.orderID = "OR01"
+ this.orderType = "BLA"
+ this.orderParams = EbicsRequest.StandardOrderParams()
+ }
+ this.bankPubKeyDigests =
EbicsRequest.BankPubKeyDigests().apply {
+ this.authentication = EbicsTypes.PubKeyDigest().apply {
+ this.algorithm = "foo"
+ this.value = ByteArray(32)
+ this.version = "X002"
+ }
+ this.encryption = EbicsTypes.PubKeyDigest().apply {
+ this.algorithm = "foo"
+ this.value = ByteArray(32)
+ this.version = "E002"
+ }
+ }
+ this.securityMedium = "0000"
+ }
+ }
+ this.body = EbicsRequest.Body().apply {
+ }
+ }
+
+ val str = XMLUtil.convertJaxbToString(ebicsRequestObj)
+ val doc = XMLUtil.parseStringIntoDom(str)
+ val pair = CryptoUtil.generateRsaKeyPair(1024)
+ XMLUtil.signEbicsDocument(doc, pair.private)
+ val finalStr = XMLUtil.convertDomToString(doc)
+ assert(XMLUtil.validateFromString(finalStr))
+ }
}
\ No newline at end of file
--
To stop receiving notification emails like this one, please contact
address@hidden.
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [libeufin] branch master updated: model ebics request and test,
gnunet <=