/******************************************************************************
* The following is part of the KeySupport.org PIV API
*
* https://github.com/grandamp/KSJavaAPI/
*
* @author Todd E. Johnson (tejohnson@yahoo.com)
*****************************************************************************/
package org.keysupport.crypto;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.security.NoSuchProviderException;
/**
* @author Todd E. Johnson (tejohnson@yahoo.com)
* @version $Revision: 18 $
*/
public class DigestEngine {
/**
* Method mD5Sum.
*
* @param ba
* byte[]
* @return byte[]
*/
public static byte[] mD5Sum(byte[] ba) {
return xSum(ba, "MD5", null);
}
/**
* Method mD5Sum.
*
* @param ba
* byte[]
*
* @param provider
* String
* @return byte[]
*/
public static byte[] mD5Sum(byte[] ba, String provider) {
return xSum(ba, "MD5", provider);
}
/**
* Method sHA1Sum.
*
* @param ba
* byte[]
*
* @return byte[]
*/
public static byte[] sHA1Sum(byte[] ba) {
return xSum(ba, "SHA-1", null);
}
/**
* Method sHA1Sum.
*
* @param ba
* byte[]
*
* @param provider
* String
* @return byte[]
*/
public static byte[] sHA1Sum(byte[] ba, String provider) {
return xSum(ba, "SHA-1", provider);
}
/**
* Method sHA256Sum.
*
* @param ba
* byte[]
*
* @return byte[]
*/
public static byte[] sHA256Sum(byte[] ba) {
return xSum(ba, "SHA-256", null);
}
/**
* Method sHA256Sum.
*
* @param ba
* byte[]
*
* @param provider
* String
* @return byte[]
*/
public static byte[] sHA256Sum(byte[] ba, String provider) {
return xSum(ba, "SHA-256", provider);
}
/**
* Method sHA384Sum.
*
* @param ba
* byte[]
*
* @return byte[]
*/
public static byte[] sHA384Sum(byte[] ba) {
return xSum(ba, "SHA-384", null);
}
/**
* Method sHA384Sum.
*
* @param ba
* byte[]
*
* @param provider
* String
* @return byte[]
*/
public static byte[] sHA384Sum(byte[] ba, String provider) {
return xSum(ba, "SHA-384", provider);
}
/**
* Method sHA512Sum.
*
* @param ba
* byte[]
*
* @return byte[]
*/
public static byte[] sHA512Sum(byte[] ba) {
return xSum(ba, "SHA-512", null);
}
/**
* Method sHA512Sum.
*
* @param ba
* byte[]
*
* @param provider
* String
* @return byte[]
*/
public static byte[] sHA512Sum(byte[] ba, String provider) {
return xSum(ba, "SHA-512", provider);
}
/**
* Method xSum.
*
* @param ba
* byte[]
* @param digestAlg
* String
*
* @param provider
* String
* @return byte[]
*/
private static byte[] xSum(byte[] ba, String digestAlg, String provider) {
byte[] digest = null;
MessageDigest md = null;
try {
if (null == provider) {
md = MessageDigest.getInstance(digestAlg);
} else {
md = MessageDigest.getInstance(digestAlg, provider);
}
md.update(ba);
digest = md.digest();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (NoSuchProviderException e) {
e.printStackTrace();
}
return digest;
}
// TODO: Add methods for IO Streams as well
}