diff --git a/src/main/java/io/kamax/matrix/codec/MxSha256.java b/src/main/java/io/kamax/matrix/codec/MxSha256.java
deleted file mode 100644
index 2bb4aa4..0000000
--- a/src/main/java/io/kamax/matrix/codec/MxSha256.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * matrix-java-sdk - Matrix Client SDK for Java
- * Copyright (C) 2017 Kamax Sarl
- *
- * https://www.kamax.io/
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see .
- */
-
-package io.kamax.matrix.codec;
-
-import java.nio.charset.StandardCharsets;
-import java.security.MessageDigest;
-import java.security.NoSuchAlgorithmException;
-
-public class MxSha256 {
-
- private MessageDigest md;
-
- public MxSha256() {
- try {
- md = MessageDigest.getInstance("SHA-256");
- } catch (NoSuchAlgorithmException e) {
- throw new RuntimeException(e);
- }
- }
-
- public String hash(byte[] data) {
- return MxBase64.encode(md.digest(data));
- }
-
- public String hash(String data) {
- return hash(data.getBytes(StandardCharsets.UTF_8));
- }
-
-}
diff --git a/src/main/java/io/kamax/mxisd/hash/HashEngine.java b/src/main/java/io/kamax/mxisd/hash/HashEngine.java
index a8c5b68..82655fa 100644
--- a/src/main/java/io/kamax/mxisd/hash/HashEngine.java
+++ b/src/main/java/io/kamax/mxisd/hash/HashEngine.java
@@ -1,10 +1,10 @@
package io.kamax.mxisd.hash;
-import io.kamax.matrix.codec.MxSha256;
import io.kamax.mxisd.config.HashingConfig;
import io.kamax.mxisd.hash.storage.HashStorage;
import io.kamax.mxisd.lookup.ThreePidMapping;
import io.kamax.mxisd.lookup.provider.IThreePidProvider;
+import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.lang3.RandomStringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -17,7 +17,6 @@ public class HashEngine {
private final List extends IThreePidProvider> providers;
private final HashStorage hashStorage;
- private final MxSha256 sha256 = new MxSha256();
private final HashingConfig config;
private String pepper;
@@ -52,7 +51,7 @@ public class HashEngine {
}
protected String hash(ThreePidMapping pidMapping) {
- return sha256.hash(pidMapping.getMedium() + " " + pidMapping.getValue() + " " + getPepper());
+ return DigestUtils.sha256Hex(pidMapping.getValue() + " " + pidMapping.getMedium() + " " + getPepper());
}
protected String newPepper() {
diff --git a/src/main/java/io/kamax/mxisd/http/undertow/handler/identity/v2/HashLookupHandler.java b/src/main/java/io/kamax/mxisd/http/undertow/handler/identity/v2/HashLookupHandler.java
index 1fd391c..8fb55f3 100644
--- a/src/main/java/io/kamax/mxisd/http/undertow/handler/identity/v2/HashLookupHandler.java
+++ b/src/main/java/io/kamax/mxisd/http/undertow/handler/identity/v2/HashLookupHandler.java
@@ -60,6 +60,7 @@ public class HashLookupHandler extends LookupHandler implements ApiHandler {
ClientHashLookupRequest input = parseJsonTo(exchange, ClientHashLookupRequest.class);
HashLookupRequest lookupRequest = new HashLookupRequest();
setRequesterInfo(lookupRequest, exchange);
+ lookupRequest.setHashes(input.getAddresses());
log.info("Got bulk lookup request from {} with client {} - Is recursive? {}",
lookupRequest.getRequester(), lookupRequest.getUserAgent(), lookupRequest.isRecursive());
@@ -67,7 +68,7 @@ public class HashLookupHandler extends LookupHandler implements ApiHandler {
throw new InvalidParamException();
}
- if ("sha256".equals(input.getAlgorithm()) && !hashManager.getHashEngine().getPepper().equals(input.getPepper())) {
+ if (!hashManager.getHashEngine().getPepper().equals(input.getPepper())) {
throw new InvalidPepperException();
}
@@ -115,10 +116,14 @@ public class HashLookupHandler extends LookupHandler implements ApiHandler {
}
ClientHashLookupAnswer answer = new ClientHashLookupAnswer();
- for (Pair pair : hashManager.getHashStorage().find(request.getHashes())) {
- answer.getMappings().put(pair.getKey(), pair.getValue().getMxid());
+ if (request.getHashes() != null && !request.getHashes().isEmpty()) {
+ for (Pair pair : hashManager.getHashStorage().find(request.getHashes())) {
+ answer.getMappings().put(pair.getKey(), pair.getValue().getMxid());
+ }
+ log.info("Finished bulk lookup request from {}", request.getRequester());
+ } else {
+ log.warn("Empty request");
}
- log.info("Finished bulk lookup request from {}", request.getRequester());
respondJson(exchange, answer);
}
diff --git a/src/test/java/io/kamax/mxisd/test/hash/HashEngineTest.java b/src/test/java/io/kamax/mxisd/test/hash/HashEngineTest.java
new file mode 100644
index 0000000..f909d14
--- /dev/null
+++ b/src/test/java/io/kamax/mxisd/test/hash/HashEngineTest.java
@@ -0,0 +1,15 @@
+package io.kamax.mxisd.test.hash;
+
+import static org.junit.Assert.assertEquals;
+
+import org.apache.commons.codec.digest.DigestUtils;
+import org.junit.Test;
+
+public class HashEngineTest {
+
+ @Test
+ public void sha256test() {
+ assertEquals("a26de61ae3055f84b33ac1a179b9ad5301f9109024f4db1ae653ea525d2136f4",
+ DigestUtils.sha256Hex("user2@mail.homeserver.tld email I9x4vpcWjqp9X8iiOY4a"));
+ }
+}