/** * LICENCIA LGPL: * * Esta librería es Software Libre; Usted puede redistribuirlo y/o modificarlo * bajo los términos de la GNU Lesser General Public License (LGPL) * tal y como ha sido publicada por la Free Software Foundation; o * bien la versión 2.1 de la Licencia, o (a su elección) cualquier versión posterior. * * Esta librería se distribuye con la esperanza de que sea útil, pero SIN NINGUNA * GARANTÍA; tampoco las implícitas garantías de MERCANTILIDAD o ADECUACIÓN A UN * PROPÓSITO PARTICULAR. Consulte la GNU Lesser General Public License (LGPL) para más * detalles * * Usted debe recibir una copia de la GNU Lesser General Public License (LGPL) * junto con esta librería; si no es así, escriba a la Free Software Foundation Inc. * 51 Franklin Street, 5º Piso, Boston, MA 02110-1301, USA o consulte * <http://www.gnu.org/licenses/>. * * Copyright 2008 Ministerio de Industria, Turismo y Comercio * */ package es.mityc.firmaJava.ts; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.Arrays; import java.util.HashMap; import java.util.HashSet; import java.util.Set; import org.bouncycastle.tsp.TSPAlgorithms; /** * Clase con los algortimos de codificacion permitidos * para el sellado de tiempo * * @author Ministerio de Industria, Turismo y Comercio * @version 0.9 beta */ public class TSPAlgoritmos implements ConstantesTSA{ public static Set getPermitidos(){ Set permitidos = new HashSet(Arrays.asList(getValoresPermitidos())); return permitidos; } public static String getAlgName(String oid) { if (TSPAlgorithms.SHA1.equals(oid)) return SHA1; else if (TSPAlgorithms.SHA256.equals(oid)) return SHA2; else if (TSPAlgorithms.SHA224.equals(oid)) return SHA224; else if (TSPAlgorithms.SHA256.equals(oid)) return SHA256; else if (TSPAlgorithms.SHA384.equals(oid)) return SHA384; else if (TSPAlgorithms.SHA512.equals(oid)) return SHA512; return oid; } public static String getOID(String algoritmo) { Set permitidos = new HashSet(Arrays.asList(getValoresPermitidos())); if (permitidos.contains(algoritmo)) { if (SHA1.equals(algoritmo)) return TSPAlgorithms.SHA1; else if (SHA2.equals(algoritmo)) return TSPAlgorithms.SHA256; else if (SHA224.equals(algoritmo)) return TSPAlgorithms.SHA224; else if (SHA256.equals(algoritmo)) return TSPAlgorithms.SHA256; else if (SHA384.equals(algoritmo)) return TSPAlgorithms.SHA384; else if (SHA512.equals(algoritmo)) return TSPAlgorithms.SHA512; } return null; } public static HashMap<String, String> algoritmosVSoids = null; static { algoritmosVSoids = new HashMap<String, String>(); algoritmosVSoids.put(TSPAlgorithms.SHA1, SHA1); // SHA-1 algoritmosVSoids.put(TSPAlgorithms.SHA224,SHA224); algoritmosVSoids.put(TSPAlgorithms.SHA256,SHA256); // SHA-256 algoritmosVSoids.put(TSPAlgorithms.SHA384,SHA384); algoritmosVSoids.put(TSPAlgorithms.SHA512,SHA512); algoritmosVSoids.put(TSPAlgorithms.MD5,MD5); //md5 } /** * Devuelve el algoritmo de digest asociado con el OID de algoritmo de digest indicado. * * @param oid Cadena de texto con el OID del algoritmo * @return MessageDigest del OID indicado, <code>null<code> si no se dispone de un * algoritmo de digest asociado al OID indicado. */ public static MessageDigest getDigest(String oid) { String algName = algoritmosVSoids.get(oid); if (algName == null) return null; try { MessageDigest md = MessageDigest.getInstance(algName); return md; } catch (NoSuchAlgorithmException e) { return null; } } public static String[] getValoresPermitidos(){ String[] valoresPermitidos = new String[6]; valoresPermitidos[0] = SHA1; valoresPermitidos[1] = SHA2; valoresPermitidos[2] = SHA224; valoresPermitidos[3] = SHA256; valoresPermitidos[4] = SHA384; valoresPermitidos[5] = SHA512; return valoresPermitidos; } }