/** * 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. * */ package es.mityc.firmaJava.libreria.xades.elementos; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; import es.mityc.firmaJava.libreria.ConstantesXADES; import es.mityc.firmaJava.libreria.xades.errores.InvalidInfoNodeException; /** * @author Ministerio de Industria, Turismo y Comercio * @version 1.0 * * TODO: incluir metodo para devolver y aceptar el resultado en binario (codificar/decodificar base64) */ public class DigestValue extends AbstractXDsigElement { private String value; public DigestValue() { super(); } /** * @param namespaceXDSig */ public DigestValue(String value) { super(); setValue(value); } /** * @return the value */ public String getValue() { return value; } /** * @param value the value to set */ public void setValue(String value) { this.value = value; if (this.value != null) this.value = this.value.replace(" ", "").replace("\n", "").replace("\r", ""); } /** * @see es.mityc.firmaJava.libreria.xades.elementos.AbstractXMLElement#createElement(org.w3c.dom.Document) */ @Override protected Element createElement(Document doc) throws InvalidInfoNodeException { if (value == null) throw new InvalidInfoNodeException("Información insuficiente para escribir elemento DigestValue"); Element res = doc.createElementNS(ConstantesXADES.SCHEMA_DSIG, namespaceXDsig + ":" + ConstantesXADES.DIGEST_VALUE); res.setTextContent(value); return res; } /** * @see es.mityc.firmaJava.libreria.xades.elementos.AbstractXDsigElement#createElement(org.w3c.dom.Document, java.lang.String) */ @Override public Element createElement(Document doc, String namespaceXDsig) throws InvalidInfoNodeException { return super.createElement(doc, namespaceXDsig); } /** * @see es.mityc.firmaJava.libreria.xades.elementos.AbstractXDsigElement#equals(java.lang.Object) */ @Override public boolean equals(Object obj) { if (obj instanceof DigestValue) { DigestValue huella = (DigestValue) obj; if (value.equals(huella.value)) return true; } return false; } /** * @see es.mityc.firmaJava.libreria.xades.elementos.AbstractXDsigElement#load(org.w3c.dom.Element) */ @Override public void load(Element element) throws InvalidInfoNodeException { checkElementName(element, ConstantesXADES.SCHEMA_DSIG, ConstantesXADES.LIBRERIAXADES_DIGESTVALUE); Node node = element.getFirstChild(); if (node.getNodeType() != Node.TEXT_NODE) throw new InvalidInfoNodeException("Nodo DigestValue no contiene CDATA como primer valor"); this.value = node.getNodeValue(); if (this.value == null) throw new InvalidInfoNodeException("Contenido de valor de digest vacío"); this.value = this.value.replace(" ", "").replace("\n", "").replace("\r", ""); } /** * @see es.mityc.firmaJava.libreria.xades.elementos.AbstractXMLElement#isThisNode(org.w3c.dom.Node) */ @Override public boolean isThisNode(Node node) { return isElementName(nodeToElement(node), ConstantesXADES.SCHEMA_DSIG, ConstantesXADES.LIBRERIAXADES_DIGESTVALUE); } }