diff options
author | Antoine A <> | 2024-03-09 15:18:25 +0100 |
---|---|---|
committer | Antoine A <> | 2024-03-09 15:18:25 +0100 |
commit | 30eefb68a131b44edc78d3dbf346be840f999b0a (patch) | |
tree | ee56a06eaa85b6f85edff48c609ae176856bc495 /nexus/src/main/kotlin/tech/libeufin/nexus/ebics/Ebics2.kt | |
parent | 16b5d74cad21d533353b0412b78302dcd37304f8 (diff) | |
download | libeufin-30eefb68a131b44edc78d3dbf346be840f999b0a.tar.gz libeufin-30eefb68a131b44edc78d3dbf346be840f999b0a.tar.bz2 libeufin-30eefb68a131b44edc78d3dbf346be840f999b0a.zip |
Eager base64 decoding for EBICS order data
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 | 13 |
1 files changed, 7 insertions, 6 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 bee41525..a7c2ba50 100644 --- a/nexus/src/main/kotlin/tech/libeufin/nexus/ebics/Ebics2.kt +++ b/nexus/src/main/kotlin/tech/libeufin/nexus/ebics/Ebics2.kt @@ -160,11 +160,11 @@ class Ebics3KeyMng( } companion object { - fun parseResponse(doc: Document, clientEncryptionKey: RSAPrivateCrtKey): EbicsResponse<ByteArray?> { + fun parseResponse(doc: Document, clientEncryptionKey: RSAPrivateCrtKey): EbicsResponse<InputStream?> { return XmlDestructor.fromDoc(doc, "ebicsKeyManagementResponse") { lateinit var technicalCode: EbicsReturnCode lateinit var bankCode: EbicsReturnCode - var payload: ByteArray? = null + var payload: InputStream? = null one("header") { one("mutable") { technicalCode = EbicsReturnCode.lookup(one("ReturnCode").text()) @@ -179,11 +179,12 @@ class Ebics3KeyMng( one("EncryptionPubKeyDigest").text().decodeBase64() ) } + val chunk = one("OrderData").text().decodeBase64() decryptAndDecompressPayload( clientEncryptionKey, descriptionInfo, - listOf(one("OrderData").text()) - ).readBytes() + listOf(chunk) + ) } } EbicsResponse( @@ -194,8 +195,8 @@ class Ebics3KeyMng( } } - fun parseHpbOrder(data: ByteArray): Pair<RSAPublicKey, RSAPublicKey> { - return XmlDestructor.fromStream(data.inputStream(), "HPBResponseOrderData") { + fun parseHpbOrder(data: InputStream): Pair<RSAPublicKey, RSAPublicKey> { + return XmlDestructor.fromStream(data, "HPBResponseOrderData") { val authPub = one("AuthenticationPubKeyInfo").one("PubKeyValue").one("RSAKeyValue") { CryptoUtil.loadRsaPublicKeyFromComponents( one("Modulus").text().decodeBase64(), |