/*
 * Copyright 2017 rootkiwi
 *
 * AN2Linux-client is licensed under GNU General Public License 3.
 *
 * See LICENSE for more details.
 */

package kiwi.root.an2linuxclient.crypto;

import android.util.Log;

import java.security.MessageDigest;
import java.util.Formatter;

public class Sha256Helper {

    public static byte[] sha256(byte[] bytesToHash){
        try {
            MessageDigest sha256 = MessageDigest.getInstance("SHA-256");
            sha256.update(bytesToHash);
            return sha256.digest();
        } catch (Exception e){
            Log.e("Sha256Helper", "sha256");
            Log.e("StackTrace", Log.getStackTraceString(e));
            return null;
        }
    }

    public static byte[] sha256(byte[] bytesToHash, byte[] moreBytesToHash){
        try {
            MessageDigest sha256 = MessageDigest.getInstance("SHA-256");
            sha256.update(bytesToHash);
            sha256.update(moreBytesToHash);
            return sha256.digest();
        } catch (Exception e){
            Log.e("Sha256Helper", "sha256");
            Log.e("StackTrace", Log.getStackTraceString(e));
            return null;
        }
    }

    public static String getFourLineHexString(byte[] sha256Hash){
        Formatter formatter = new Formatter();
        for (int i = 0; i < 32; i++) {
            formatter.format("%02X", sha256Hash[i]);
            if (i == 7 || i == 15 || i == 23) {
                formatter.format("\n");
            } else if (i != 31) {
                formatter.format(" ");
            }
        }
        return formatter.toString();
    }

    public static String getFourLineHexString(String hexString){
        Formatter formatter = new Formatter();
        for (int i = 0; i < 64; i+=2) {
            formatter.format(hexString.substring(i, i+2).toUpperCase());
            if (i == 14 || i == 30 || i == 46) {
                formatter.format("\n");
            } else if (i != 62) {
                formatter.format(" ");
            }
        }
        return formatter.toString();
    }

}