From 5a691ec3a2573d4c6f345b48314da97f7947671b Mon Sep 17 00:00:00 2001
From: Martin Vogel <martin.vogel@sinc.de>
Date: Tue, 21 Jun 2022 22:32:32 +0200
Subject: [PATCH] #414 Extend util by hashFromFile

---
 .../{MetadataVerifier.java => HashUtil.java}  | 20 ++++++++++++++++---
 ...ataVerifierTest.java => HashUtilTest.java} |  8 ++++----
 2 files changed, 21 insertions(+), 7 deletions(-)
 rename impl/src/main/java/de/fitko/fitconnect/impl/crypto/{MetadataVerifier.java => HashUtil.java} (72%)
 rename impl/src/test/java/fitconnect/impl/crypto/{MetadataVerifierTest.java => HashUtilTest.java} (77%)

diff --git a/impl/src/main/java/de/fitko/fitconnect/impl/crypto/MetadataVerifier.java b/impl/src/main/java/de/fitko/fitconnect/impl/crypto/HashUtil.java
similarity index 72%
rename from impl/src/main/java/de/fitko/fitconnect/impl/crypto/MetadataVerifier.java
rename to impl/src/main/java/de/fitko/fitconnect/impl/crypto/HashUtil.java
index 192e99ed7..94e6daa2c 100644
--- a/impl/src/main/java/de/fitko/fitconnect/impl/crypto/MetadataVerifier.java
+++ b/impl/src/main/java/de/fitko/fitconnect/impl/crypto/HashUtil.java
@@ -2,16 +2,20 @@ package de.fitko.fitconnect.impl.crypto;
 
 import de.fitko.fitconnect.api.exceptions.internal.InitializationException;
 
+import java.io.File;
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Paths;
 import java.security.MessageDigest;
 import java.security.NoSuchAlgorithmException;
 
-public class MetadataVerifier {
+public class HashUtil {
 
     private static final String DEFAULT_ALGORITHM = "SHA-512"; // Currently, only SHA-512 is supported.
 
     private final MessageDigest messageDigest;
 
-    public MetadataVerifier() {
+    public HashUtil() {
         try {
             this.messageDigest = MessageDigest.getInstance(DEFAULT_ALGORITHM);
         } catch (NoSuchAlgorithmException e) {
@@ -19,7 +23,7 @@ public class MetadataVerifier {
         }
     }
 
-    public MetadataVerifier(final MessageDigest messageDigest) {
+    public HashUtil(final MessageDigest messageDigest) {
         this.messageDigest = messageDigest;
     }
 
@@ -33,6 +37,15 @@ public class MetadataVerifier {
         return compareHashes(originalHash, newHash);
     }
 
+    public String createHashFromFile(File file) throws IOException {
+        try {
+            byte[] rawData = Files.readAllBytes(Paths.get(file.getPath()));
+            return new String(rawData);
+        } catch (IOException e) {
+            throw e;
+        }
+    }
+
     private boolean compareHashes(byte[] originalHash, byte[] comparisonHash) {
         int diff = originalHash.length ^ comparisonHash.length;
         for (int i = 0; i < originalHash.length && i < comparisonHash.length; i++) {
@@ -40,4 +53,5 @@ public class MetadataVerifier {
         }
         return diff == 0;
     }
+
 }
diff --git a/impl/src/test/java/fitconnect/impl/crypto/MetadataVerifierTest.java b/impl/src/test/java/fitconnect/impl/crypto/HashUtilTest.java
similarity index 77%
rename from impl/src/test/java/fitconnect/impl/crypto/MetadataVerifierTest.java
rename to impl/src/test/java/fitconnect/impl/crypto/HashUtilTest.java
index 50f7da798..032177685 100644
--- a/impl/src/test/java/fitconnect/impl/crypto/MetadataVerifierTest.java
+++ b/impl/src/test/java/fitconnect/impl/crypto/HashUtilTest.java
@@ -1,15 +1,15 @@
 package fitconnect.impl.crypto;
 
-import de.fitko.fitconnect.impl.crypto.MetadataVerifier;
+import de.fitko.fitconnect.impl.crypto.HashUtil;
 import org.junit.jupiter.api.Test;
 
 import java.io.IOException;
 
 import static org.junit.jupiter.api.Assertions.*;
 
-class MetadataVerifierTest {
+class HashUtilTest {
 
-    MetadataVerifier underTest = new MetadataVerifier();
+    HashUtil underTest = new HashUtil();
 
     @Test
     public void testMessageDigestForDataAndAttachments() throws IOException {
@@ -24,7 +24,7 @@ class MetadataVerifierTest {
     }
 
     private byte[] getExampleFileContent(final String path) throws IOException {
-        return MetadataVerifier.class.getResourceAsStream(path).readAllBytes();
+        return HashUtil.class.getResourceAsStream(path).readAllBytes();
     }
 
 }
\ No newline at end of file
-- 
GitLab