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:
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