From d8719d4fcb1ab8911cf9e693ccd401d5c0d8bd0e Mon Sep 17 00:00:00 2001 From: misaochan Date: Fri, 9 Dec 2016 16:59:23 +1300 Subject: [PATCH] Add testSHA1 Utils method --- .../main/java/fr/free/nrw/commons/Utils.java | 55 +++++++++++++++++++ .../nrw/commons/upload/ShareActivity.java | 1 + 2 files changed, 56 insertions(+) diff --git a/app/src/main/java/fr/free/nrw/commons/Utils.java b/app/src/main/java/fr/free/nrw/commons/Utils.java index 27787bc35..509626d2b 100644 --- a/app/src/main/java/fr/free/nrw/commons/Utils.java +++ b/app/src/main/java/fr/free/nrw/commons/Utils.java @@ -3,6 +3,7 @@ package fr.free.nrw.commons; import android.net.Uri; import android.os.AsyncTask; import android.os.Build; +import android.util.Log; import com.nostra13.universalimageloader.core.DisplayImageOptions; import com.nostra13.universalimageloader.core.assist.ImageScaleType; @@ -16,10 +17,16 @@ import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; import java.io.BufferedInputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.io.StringWriter; import java.io.UnsupportedEncodingException; +import java.math.BigInteger; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; @@ -32,8 +39,56 @@ import javax.xml.transform.TransformerException; import javax.xml.transform.TransformerFactory; import javax.xml.transform.TransformerFactoryConfigurationError; +import fr.free.nrw.commons.upload.ShareActivity; + public class Utils { + private static final String TAG = Utils.class.getName(); + + public static boolean testSHA1(String sha1, File file) { + MessageDigest digest; + try { + digest = MessageDigest.getInstance("SHA1"); + } catch (NoSuchAlgorithmException e) { + Log.e(TAG, "Exception while getting Digest", e); + return false; + } + + InputStream is; + try { + is = new FileInputStream(file); + } catch (FileNotFoundException e) { + Log.e(TAG, "Exception while getting FileInputStream", e); + return false; + } + + byte[] buffer = new byte[8192]; + int read; + try { + while ((read = is.read(buffer)) > 0) { + digest.update(buffer, 0, read); + } + byte[] md5sum = digest.digest(); + BigInteger bigInt = new BigInteger(1, md5sum); + String output = bigInt.toString(16); + // Fill to 40 chars + output = String.format("%40s", output).replace(' ', '0'); + + Log.i(TAG, "Test: " + sha1); + Log.i(TAG, "Generated: " + output); + + return (sha1.equals(output)); + } catch (IOException e) { + throw new RuntimeException("Unable to process file for MD5", e); + } finally { + try { + is.close(); + } catch (IOException e) { + Log.e(TAG, "Exception on closing MD5 input stream", e); + } + } + } + public static Date parseMWDate(String mwDate) { SimpleDateFormat isoFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'"); // Assuming MW always gives me UTC try { diff --git a/app/src/main/java/fr/free/nrw/commons/upload/ShareActivity.java b/app/src/main/java/fr/free/nrw/commons/upload/ShareActivity.java index 5be4df276..f2c128021 100644 --- a/app/src/main/java/fr/free/nrw/commons/upload/ShareActivity.java +++ b/app/src/main/java/fr/free/nrw/commons/upload/ShareActivity.java @@ -24,6 +24,7 @@ import com.nostra13.universalimageloader.core.ImageLoader; import java.io.File; import java.io.IOException; import java.io.InputStream; +import java.math.BigInteger; import java.util.ArrayList; import java.util.List;