[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[libeufin] branch master updated: progressing with key-letter format
From: |
gnunet |
Subject: |
[libeufin] branch master updated: progressing with key-letter format |
Date: |
Wed, 13 Nov 2019 18:35:59 +0100 |
This is an automated email from the git hooks/post-receive script.
marcello pushed a commit to branch master
in repository libeufin.
The following commit(s) were added to refs/heads/master by this push:
new 09f5f91 progressing with key-letter format
09f5f91 is described below
commit 09f5f91735438257f43efdb92bbb476531f3872b
Author: Marcello Stanisci <address@hidden>
AuthorDate: Wed Nov 13 18:35:47 2019 +0100
progressing with key-letter format
---
nexus/src/main/kotlin/Main.kt | 127 ++++++++++++++++++++++++++++++++++++++++--
1 file changed, 122 insertions(+), 5 deletions(-)
diff --git a/nexus/src/main/kotlin/Main.kt b/nexus/src/main/kotlin/Main.kt
index 1268b06..9a88495 100644
--- a/nexus/src/main/kotlin/Main.kt
+++ b/nexus/src/main/kotlin/Main.kt
@@ -40,6 +40,7 @@ import io.ktor.routing.post
import io.ktor.routing.routing
import io.ktor.server.engine.embeddedServer
import io.ktor.server.netty.Netty
+import org.apache.commons.codec.digest.Crypt
import org.apache.xml.security.binding.xmldsig.RSAKeyValueType
import org.apache.xml.security.binding.xmldsig.SignatureType
import org.jetbrains.exposed.sql.transactions.transaction
@@ -52,6 +53,8 @@ import javax.xml.bind.JAXBElement
import org.w3c.dom.Document
import tech.libeufin.schema.ebics_s001.SignatureTypes
import java.security.SecureRandom
+import java.text.SimpleDateFormat
+import java.time.Instant.now
import java.util.*
import java.util.zip.InflaterInputStream
import javax.xml.datatype.DatatypeFactory
@@ -79,7 +82,7 @@ fun testData() {
}
/**
- * Inserts spaces every 2 characters.
+ * Inserts spaces every 2 characters, and a newline after 8 pairs.
*/
fun chunkString(input: String): String {
@@ -393,7 +396,37 @@ fun main() {
get("/ebics/subscribers/{id}/keyletter") {
val id = expectId(call.parameters["id"])
- val (signPub, authPub, encPub) = transaction {
+
+ var usernameLine = "TODO"
+ var recipientLine = "TODO"
+ val customerIdLine = "TODO"
+
+ var dateLine = ""
+ var timeLine = ""
+ var userIdLine = ""
+ var esExponentLine = ""
+ var esModulusLine = ""
+ var authExponentLine = ""
+ var authModulusLine = ""
+ var encExponentLine = ""
+ var encModulusLine = ""
+ var esKeyHashLine = ""
+ var encKeyHashLine = ""
+ var authKeyHashLine = ""
+
+ val esVersionLine = "A006"
+ val authVersionLine = "X002"
+ val encVersionLine = "E002"
+
+ val now = Date()
+ val dateFormat = SimpleDateFormat("DD.MM.YYYY")
+ val timeFormat = SimpleDateFormat("HH.mm.ss")
+
+ dateLine = dateFormat.format(now)
+ timeLine = timeFormat.format(now)
+
+
+ transaction {
val subscriber = EbicsSubscriberEntity.findById(id) ?:
throw SubscriberNotFoundError(HttpStatusCode.NotFound)
val signPubTmp = CryptoUtil.getRsaPublicFromPrivate(
@@ -406,13 +439,97 @@ fun main() {
CryptoUtil.loadRsaPrivateKey(subscriber.encryptionPrivateKey.toByteArray())
)
- Triple(signPubTmp, authPubTmp, encPubTmp)
+ userIdLine = subscriber.userID
+
+ esExponentLine =
signPubTmp.publicExponent.toByteArray().toHexString()
+ esModulusLine =
signPubTmp.modulus.toByteArray().toHexString()
+
+ encExponentLine =
encPubTmp.publicExponent.toByteArray().toHexString()
+ encModulusLine =
encPubTmp.modulus.toByteArray().toHexString()
+
+ authExponentLine =
authPubTmp.publicExponent.toByteArray().toHexString()
+ authModulusLine =
authPubTmp.modulus.toByteArray().toHexString()
+
+ esKeyHashLine =
CryptoUtil.getEbicsPublicKeyHash(signPubTmp).toHexString()
+ encKeyHashLine =
CryptoUtil.getEbicsPublicKeyHash(encPubTmp).toHexString()
+ authKeyHashLine =
CryptoUtil.getEbicsPublicKeyHash(authPubTmp).toHexString()
}
+ val iniLetter = """
+ |Name: ${usernameLine}
+ |Date: ${dateLine}
+ |Time: ${timeLine}
+ |Recipient: ${recipientLine}
+ |User ID: ${userIdLine}
+ |Customer ID: ${customerIdLine}
+ |ES version: ${esVersionLine}
+
+ |Public key for the electronic signature:
+
+ |Exponent:
+ |${chunkString(esExponentLine)}
+
+ |Modulus:
+ |${chunkString(esModulusLine)}
+
+ |SHA-256 hash:
+ |${chunkString(esKeyHashLine)}
+
+ |I hereby confirm the above public keys for my electronic
signature.
+
+ |__________
+ |Place/date
+
+ |__________
+ |Signature
+ """.trimMargin()
+
+ val hiaLetter = """
+ |Name: ${usernameLine}
+ |Date: ${dateLine}
+ |Time: ${timeLine}
+ |Recipient: ${recipientLine}
+ |User ID: ${userIdLine}
+ |Customer ID: ${customerIdLine}
+ |Identification and authentication signature version:
${authVersionLine}
+ |Encryption version: ${encVersionLine}
+
+ |Public key for the identification and authentication
signature:
+
+ |Exponent:
+ |${chunkString(authExponentLine)}
+
+ |Modulus:
+ |${chunkString(authModulusLine)}
+
+ |SHA-256 hash:
+ |${chunkString(authKeyHashLine)}
+
+ |Public encryption key:
+
+ |Exponent:
+ |${chunkString(encExponentLine)}
+
+ |Modulus:
+ |${chunkString(encModulusLine)}
+
+ |SHA-256 hash:
+ |${chunkString(encKeyHashLine)}
+
+
+ |I hereby confirm the above public keys for my electronic
signature.
+
+ |__________
+ |Place/date
+
+ |__________
+ |Signature
+ """.trimMargin()
+
call.respondText(
- "Not implemented",
+
"####INI####:\n${iniLetter}\n\n\n####HIA####:\n${hiaLetter}",
ContentType.Text.Plain,
- HttpStatusCode.NotImplemented
+ HttpStatusCode.OK
)
}
--
To stop receiving notification emails like this one, please contact
address@hidden.
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [libeufin] branch master updated: progressing with key-letter format,
gnunet <=