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 13500473cd9bacac2cbdb8b92d9fde5f008258d1..097962430cca6c9d9b1db6fc059573033faf3295 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 7c44c22f7f34f8388c3876a9722c9e0b4e97ead2..fb9ebf5324ce1af65023ea161bb96920628099d4 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 68f5b9ac0f7b20e158e896f730c1e3d632bba8b4..a7ad90cb3fa152b4a32451b9286b5f4f86835944 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 99f3698e77b5162c30460b988b13493724f2def6..f26ed0760b13b8c9d1862cd9134366bf535b5f90 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 97446420b30a00b9d489adafd8cba18454aa254a..9d4792cc1256a7c845157d36d52a8a155748c67d 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 dcca8f8df9e2db6559b90a3a9f9fa458ba742a7e..2122f0870fed7172881fa0f2e9e974c5b4c97a3f 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 03bca2f28df33e5ce7e6dee11001d020efede204..028227ef1687bdd9e78503adb4a0d1b0d5323f8a 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; } - - }