libeufin

Integration and sandbox testing for FinTech APIs and data formats
Log | Files | Refs | Submodules | README | LICENSE

commit 81db4a24671f343525fd04dd690b66e154c22b4b
parent 63b69ccc34e2edeaba5784891a086f4de912d2da
Author: Florian Dold <florian.dold@gmail.com>
Date:   Wed, 13 Nov 2019 12:34:24 +0100

collect VEU signatures, still no verification

Diffstat:
Msandbox/src/main/kotlin/tech/libeufin/sandbox/DB.kt | 22++++++++++++++++++++++
Msandbox/src/main/kotlin/tech/libeufin/sandbox/EbicsProtocolBackend.kt | 19++++++++++++++-----
Msandbox/src/main/kotlin/tech/libeufin/schema/ebics_s001/UserSignatureData.kt | 6+++---
3 files changed, 39 insertions(+), 8 deletions(-)

diff --git a/sandbox/src/main/kotlin/tech/libeufin/sandbox/DB.kt b/sandbox/src/main/kotlin/tech/libeufin/sandbox/DB.kt @@ -234,6 +234,28 @@ class EbicsUploadTransactionEntity(id: EntityID<String>) : Entity<String>(id) { } +object EbicsOrderSignaturesTable : IntIdTable() { + val orderID = text("orderID") + val orderType = text("orderType") + val partnerID = text("partnerID") + val userID = text("userID") + val signatureAlgorithm = text("signatureAlgorithm") + val signatureValue = blob("signatureValue") +} + + +class EbicsOrderSignatureEntity(id: EntityID<Int>) : IntEntity(id) { + companion object : IntEntityClass<EbicsOrderSignatureEntity>(EbicsOrderSignaturesTable) + + var orderID by EbicsOrderSignaturesTable.orderID + var orderType by EbicsOrderSignaturesTable.orderType + var partnerID by EbicsOrderSignaturesTable.partnerID + var userID by EbicsOrderSignaturesTable.userID + var signatureAlgorithm by EbicsOrderSignaturesTable.signatureAlgorithm + var signatureValue by EbicsOrderSignaturesTable.signatureValue +} + + object EbicsUploadTransactionChunksTable : IdTable<String>() { override val id = text("transactionID").entityId() diff --git a/sandbox/src/main/kotlin/tech/libeufin/sandbox/EbicsProtocolBackend.kt b/sandbox/src/main/kotlin/tech/libeufin/sandbox/EbicsProtocolBackend.kt @@ -540,6 +540,8 @@ suspend fun ApplicationCall.ebicsweb() { val transactionID = EbicsOrderUtil.generateTransactionId() val orderType = requestObject.header.static.orderDetails?.orderType ?: throw EbicsInvalidRequestError() + val partnerID = staticHeader.partnerID ?: throw EbicsInvalidRequestError() + val userID = staticHeader.userID ?: throw EbicsInvalidRequestError() if (staticHeader.numSegments == null) { println("handling initialization for order type $orderType") val response = when (orderType) { @@ -602,11 +604,6 @@ suspend fun ApplicationCall.ebicsweb() { val plainSigData = InflaterInputStream(decryptedSignatureData.inputStream()).use { it.readAllBytes() } - //val sigDataObject = XMLUtil.convertStringToJaxb<OrderSignatureData>(plainSigData) - println("signature data: ${plainSigData.toString(Charsets.UTF_8)}") - - val sig = XMLUtil.convertStringToJaxb<UserSignatureData>(plainSigData.toString(Charsets.UTF_8)) - val sigVal = sig.value.orderSignatureList?.get(0)?.signatureValue println("creating upload transaction for transactionID $transactionID") EbicsUploadTransactionEntity.new(transactionID) { @@ -618,6 +615,18 @@ suspend fun ApplicationCall.ebicsweb() { this.numSegments = numSegments.toInt() this.transactionKeyEnc = SerialBlob(transactionKeyEnc) } + val sigObj = XMLUtil.convertStringToJaxb<UserSignatureData>(plainSigData.toString(Charsets.UTF_8)) + for (sig in sigObj.value.orderSignatureList ?: listOf()) { + EbicsOrderSignatureEntity.new { + this.orderID = orderID + this.orderType = orderType + this.partnerID = sig.partnerID + this.userID = sig.userID + this.signatureAlgorithm = sig.signatureVersion + this.signatureValue = SerialBlob(sig.signatureValue) + } + } + EbicsResponse.createForUploadInitializationPhase(transactionID, orderID) } } diff --git a/sandbox/src/main/kotlin/tech/libeufin/schema/ebics_s001/UserSignatureData.kt b/sandbox/src/main/kotlin/tech/libeufin/schema/ebics_s001/UserSignatureData.kt @@ -10,7 +10,7 @@ class UserSignatureData { var orderSignatureList: List<OrderSignatureData>? = null @XmlAccessorType(XmlAccessType.NONE) - @XmlType(name = "", propOrder = ["signatureVersion", "signatureValue", "partnerID", "customerID"]) + @XmlType(name = "", propOrder = ["signatureVersion", "signatureValue", "partnerID", "userID"]) class OrderSignatureData { @XmlElement(name = "SignatureVersion") lateinit var signatureVersion: String @@ -21,7 +21,7 @@ class UserSignatureData { @XmlElement(name = "PartnerID") lateinit var partnerID: String - @XmlElement(name = "CustomerID") - lateinit var customerID: String + @XmlElement(name = "UserID") + lateinit var userID: String } } \ No newline at end of file