From 1f0ebd42704b48e5916ee7d0a13372e4b67a2446 Mon Sep 17 00:00:00 2001 From: Felix Sidokhine <felix.sidokhine@randstad.ca> Date: Sun, 10 May 2020 19:00:18 +0300 Subject: [PATCH] Added the JamiID generation routine --- .../jami/jams/cryptoengine/CryptoEngine.java | 2 ++ jami-dht/pom.xml | 6 ++++++ jami-dht/src/main/java/module-info.java | 2 ++ .../jami/jams/dht/DeviceReceiptGenerator.java | 11 ++++++++++ jams-server/pom.xml | 6 ++++++ jams-server/src/main/java/module-info.java | 1 + .../core/workflows/RegisterUserFlow.java | 20 +++++++++---------- 7 files changed, 38 insertions(+), 10 deletions(-) diff --git a/cryptoengine/src/main/java/net/jami/jams/cryptoengine/CryptoEngine.java b/cryptoengine/src/main/java/net/jami/jams/cryptoengine/CryptoEngine.java index 13500473..09796243 100644 --- a/cryptoengine/src/main/java/net/jami/jams/cryptoengine/CryptoEngine.java +++ b/cryptoengine/src/main/java/net/jami/jams/cryptoengine/CryptoEngine.java @@ -13,7 +13,9 @@ import org.bouncycastle.cert.X509CRLHolder; import org.bouncycastle.cert.ocsp.OCSPReq; import org.bouncycastle.cert.ocsp.OCSPResp; import org.bouncycastle.jce.provider.BouncyCastleProvider; +import org.bouncycastle.util.encoders.Hex; +import java.security.MessageDigest; import java.security.Security; import java.util.concurrent.atomic.AtomicReference; diff --git a/jami-dht/pom.xml b/jami-dht/pom.xml index 7c44c22f..fb9ebf53 100644 --- a/jami-dht/pom.xml +++ b/jami-dht/pom.xml @@ -22,6 +22,12 @@ <artifactId>commons-codec</artifactId> <version>${commons.codec.version}</version> </dependency> + <dependency> + <groupId>net.jami</groupId> + <artifactId>jams-common</artifactId> + <version>2.0</version> + <scope>compile</scope> + </dependency> </dependencies> </project> \ No newline at end of file diff --git a/jami-dht/src/main/java/module-info.java b/jami-dht/src/main/java/module-info.java index 68f5b9ac..a7ad90cb 100644 --- a/jami-dht/src/main/java/module-info.java +++ b/jami-dht/src/main/java/module-info.java @@ -1,6 +1,8 @@ module jami.dht { + exports net.jami.jams.dht; requires lombok; requires msgpack.core; requires org.apache.commons.codec; requires org.slf4j; + requires jams.common; } \ No newline at end of file diff --git a/jami-dht/src/main/java/net/jami/jams/dht/DeviceReceiptGenerator.java b/jami-dht/src/main/java/net/jami/jams/dht/DeviceReceiptGenerator.java index 99f3698e..f26ed076 100644 --- a/jami-dht/src/main/java/net/jami/jams/dht/DeviceReceiptGenerator.java +++ b/jami-dht/src/main/java/net/jami/jams/dht/DeviceReceiptGenerator.java @@ -20,6 +20,7 @@ package net.jami.jams.dht; */ import lombok.extern.slf4j.Slf4j; +import net.jami.jams.common.objects.user.User; import org.apache.commons.codec.binary.Base64; import org.apache.commons.codec.binary.Hex; import org.apache.commons.codec.digest.MessageDigestAlgorithms; @@ -122,4 +123,14 @@ public class DeviceReceiptGenerator { } + public static String generateJamiId(User user){ + try { + return Hex.encodeHexString(MessageDigest.getInstance(MessageDigestAlgorithms.SHA_1).digest(user.getCertificate().getPublicKey().getEncoded())); + } + catch (Exception e){ + log.error("Could not generate JamiId with error " + e.toString()); + return null; + } + } + } diff --git a/jams-server/pom.xml b/jams-server/pom.xml index 97446420..9d4792cc 100644 --- a/jams-server/pom.xml +++ b/jams-server/pom.xml @@ -49,6 +49,12 @@ <version>${javax.servlet.version}</version> <scope>provided</scope> </dependency> + <dependency> + <groupId>net.jami</groupId> + <artifactId>jami-dht</artifactId> + <version>2.0</version> + <scope>compile</scope> + </dependency> </dependencies> <build> diff --git a/jams-server/src/main/java/module-info.java b/jams-server/src/main/java/module-info.java index dcca8f8d..2122f087 100644 --- a/jams-server/src/main/java/module-info.java +++ b/jams-server/src/main/java/module-info.java @@ -10,6 +10,7 @@ module jams.server { requires javassist; requires datastore; requires org.apache.xbean.classloader; + requires jami.dht; exports net.jami.jams.server.servlets.general to org.apache.tomcat.embed.core; exports net.jami.jams.server.servlets.filters to org.apache.tomcat.embed.core; exports net.jami.jams.server.servlets.api.auth to org.apache.tomcat.embed.core; diff --git a/jams-server/src/main/java/net/jami/jams/server/core/workflows/RegisterUserFlow.java b/jams-server/src/main/java/net/jami/jams/server/core/workflows/RegisterUserFlow.java index 03bca2f2..028227ef 100644 --- a/jams-server/src/main/java/net/jami/jams/server/core/workflows/RegisterUserFlow.java +++ b/jams-server/src/main/java/net/jami/jams/server/core/workflows/RegisterUserFlow.java @@ -1,6 +1,8 @@ package net.jami.jams.server.core.workflows; import net.jami.jams.common.objects.user.User; +import net.jami.jams.dht.DeviceReceiptGenerator; +import net.jami.jams.dht.ETHAddressGenerator; import static net.jami.jams.server.Server.certificateAuthority; @@ -8,17 +10,15 @@ public class RegisterUserFlow { //Get the CA, sign, return the Jami ID. public static User createUser(User user){ + //This generates the X509 Fields we need. user = certificateAuthority.getSignedCertificate(user); - //while(ethKeyPair == null){ - // ethKeyPair = ETHAddressGenerator.generateAddress(); - //} - //user.setEthAddress(ethKeyPair[0]); - //user.setEthKey(ethKeyPair[1]); - //user.setJamiId(Hex.encodeHexString(MessageDigest.getInstance(MessageDigestAlgorithms.SHA_1).digest(userKeyPair.getPublic().getEncoded()))); - //user.setEthAddress(); - //user.setJamiId(); + String[] ethKeyPair = null; + while(ethKeyPair == null){ + ethKeyPair = ETHAddressGenerator.generateAddress(); + } + user.setEthAddress(ethKeyPair[0]); + user.setEthKey(ethKeyPair[1]); + user.setJamiId(DeviceReceiptGenerator.generateJamiId(user)); return user; } - - } -- GitLab