org.panbox.linux.desktop.identitymgmt.TestDownloadHashCompare.java Source code

Java tutorial

Introduction

Here is the source code for org.panbox.linux.desktop.identitymgmt.TestDownloadHashCompare.java

Source

/*
 * 
 *               Panbox - encryption for cloud storage 
 *      Copyright (C) 2014-2015 by Fraunhofer SIT and Sirrix AG 
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU 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 General Public License for more details.
 * 
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 * 
 * Additonally, third party code may be provided with notices and open source
 * licenses from communities and third parties that govern the use of those
 * portions, and any licenses granted hereunder do not alter any rights and
 * obligations you may have under such open source licenses, however, the
 * disclaimer of warranty and limitation of liability provisions of the GPLv3 
 * will apply to all the product.
 * 
 */
package org.panbox.linux.desktop.identitymgmt;

import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.security.DigestInputStream;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

import ezvcard.util.org.apache.commons.codec.binary.Hex;
import junit.framework.TestCase;

public class TestDownloadHashCompare extends TestCase {

    String fileName = "tmpfile.txt";
    File tmpFile = new File(fileName);

    protected static void setUpBeforeClass() throws Exception {
    }

    protected static void tearDownAfterClass() throws Exception {
    }

    protected void setUp() throws Exception {
        super.setUp();
    }

    protected void tearDown() throws Exception {
        super.tearDown();
        if (tmpFile.exists())
            tmpFile.delete();
    }

    @Deprecated
    public void testDownload() {

        String hexValueSha256 = "76c1000023b3f0e5003599bfff12639de4dfc8d72859e9c1a4fdf8e63ac45802";

        URL url = null;
        try {
            url = new URL("http://www.stefantriller.de/panboxtest.txt");
        } catch (MalformedURLException e) {
            fail();
        }

        try {
            org.apache.commons.io.FileUtils.copyURLToFile(url, tmpFile);
        } catch (IOException e) {
            fail();
        }

        //byte[] digest = CryptCore.createFileHash(tmpFile);
        byte[] digest = createFileHash(tmpFile);
        String h = Hex.encodeHexString(digest);

        //      System.out.println(Arrays.toString(digest));
        //      System.out.println(digest.length * 8);      
        //      System.out.println(h);

        assertEquals(hexValueSha256, h);

    }

    /**
     * Creates a Hash value for a given file
     * @param file
     * @return
     */
    private byte[] createFileHash(File file) {
        MessageDigest md = null;
        try (InputStream is = Files.newInputStream(Paths.get(file.getAbsolutePath()))) {

            md = MessageDigest.getInstance("SHA-256");
            DigestInputStream dis = new DigestInputStream(is, md);

            /* Read stream to EOF as normal... */

            while (dis.available() > 0) {
                dis.read();
            }

        } catch (NoSuchAlgorithmException e) {
            fail();
        } catch (IOException e1) {
            fail();
        }
        byte[] digest = md.digest();

        //String h = Hex.encodeHexString( digest );

        return digest;
    }

}