diff options
author | Antoine A <> | 2024-03-08 17:05:36 +0100 |
---|---|---|
committer | Antoine A <> | 2024-03-08 17:05:36 +0100 |
commit | 8b0ca3dbd7359a402b1671a7cb0fa37b92543d1e (patch) | |
tree | 8b18ca561bceb8e603d765cd56b1da0b169b65c8 /nexus/src/main/kotlin/tech/libeufin/nexus/ebics/Ebics2.kt | |
parent | 854803e6510eed234844c1d58930ff74ee4f054e (diff) | |
download | libeufin-8b0ca3dbd7359a402b1671a7cb0fa37b92543d1e.tar.gz libeufin-8b0ca3dbd7359a402b1671a7cb0fa37b92543d1e.tar.bz2 libeufin-8b0ca3dbd7359a402b1671a7cb0fa37b92543d1e.zip |
Clean & reafactor & optimize
Diffstat (limited to 'nexus/src/main/kotlin/tech/libeufin/nexus/ebics/Ebics2.kt')
-rw-r--r-- | nexus/src/main/kotlin/tech/libeufin/nexus/ebics/Ebics2.kt | 25 |
1 files changed, 16 insertions, 9 deletions
diff --git a/nexus/src/main/kotlin/tech/libeufin/nexus/ebics/Ebics2.kt b/nexus/src/main/kotlin/tech/libeufin/nexus/ebics/Ebics2.kt index 70ec30ab..9f2d2afd 100644 --- a/nexus/src/main/kotlin/tech/libeufin/nexus/ebics/Ebics2.kt +++ b/nexus/src/main/kotlin/tech/libeufin/nexus/ebics/Ebics2.kt @@ -25,6 +25,7 @@ package tech.libeufin.nexus.ebics import org.slf4j.Logger import org.slf4j.LoggerFactory +import org.w3c.dom.Document import tech.libeufin.common.crypto.CryptoUtil import tech.libeufin.common.* import tech.libeufin.nexus.* @@ -53,9 +54,9 @@ private val logger: Logger = LoggerFactory.getLogger("libeufin-nexus-ebics2") */ fun parseKeysMgmtResponse( clientEncryptionKey: RSAPrivateCrtKey, - xml: InputStream -): EbicsKeyManagementResponseContent? { - return XmlDestructor.fromStream(xml, "ebicsKeyManagementResponse") { + xml: Document +): EbicsKeyManagementResponseContent { + return XmlDestructor.fromDoc(xml, "ebicsKeyManagementResponse") { lateinit var technicalReturnCode: EbicsReturnCode lateinit var bankReturnCode: EbicsReturnCode lateinit var reportText: String @@ -89,20 +90,20 @@ fun parseKeysMgmtResponse( private fun XmlBuilder.RSAKeyXml(key: RSAPrivateCrtKey) { el("ns2:PubKeyValue") { el("ds:RSAKeyValue") { - el("ds:Modulus", key.modulus.toByteArray().encodeBase64()) - el("ds:Exponent", key.publicExponent.toByteArray().encodeBase64()) + el("ds:Modulus", key.modulus.encodeBase64()) + el("ds:Exponent", key.publicExponent.encodeBase64()) } } } private fun XMLOrderData(cfg: EbicsSetupConfig, name: String, schema: String, build: XmlBuilder.() -> Unit): String { - return XmlBuilder.toString(name) { + return XmlBuilder.toBytes(name) { attr("xmlns:ds", "http://www.w3.org/2000/09/xmldsig#") attr("xmlns:ns2", schema) build() el("ns2:PartnerID", cfg.ebicsPartnerId) el("ns2:UserID", cfg.ebicsUserId) - }.toByteArray().inputStream().deflate().readAllBytes().encodeBase64() // TODO opti + }.inputStream().deflate().encodeBase64() } /** @@ -204,7 +205,7 @@ fun generateHpbMessage(cfg: EbicsSetupConfig, clientKeys: ClientPrivateKeysFile) attr("authenticate", "true") el("static") { el("HostID", cfg.ebicsHostId) - el("Nonce", nonce.toHexString()) + el("Nonce", nonce.encodeUpHex()) el("Timestamp", Instant.now().xmlDateTime()) el("PartnerID", cfg.ebicsPartnerId) el("UserID", cfg.ebicsUserId) @@ -265,4 +266,10 @@ fun parseEbicsHpbOrder(orderDataRaw: InputStream): HpbResponseData { authenticationVersion = authenticationVersion ) } -}
\ No newline at end of file +} + +data class EbicsKeyManagementResponseContent( + val technicalReturnCode: EbicsReturnCode, + val bankReturnCode: EbicsReturnCode?, + val orderData: ByteArray? +)
\ No newline at end of file |