List of usage examples for javax.xml.crypto.dsig XMLSignatureFactory getURIDereferencer
public abstract URIDereferencer getURIDereferencer();
URIDereferencer
that is used by default to dereference URIs in Reference objects. From source file:be.fedict.eid.dss.document.zip.ZIPURIDereferencer.java
protected ZIPURIDereferencer(byte[] data, File tmpFile) { this.data = data; this.tmpFile = tmpFile; XMLSignatureFactory xmlSignatureFactory = XMLSignatureFactory.getInstance(); this.baseUriDereferener = xmlSignatureFactory.getURIDereferencer(); LOG.debug("base URI dereferences class: " + this.baseUriDereferener.getClass().getName()); }
From source file:be.fedict.eid.applet.service.signer.asic.ASiCURIDereferencer.java
protected ASiCURIDereferencer(byte[] data, File tmpFile) { this.data = data; this.tmpFile = tmpFile; XMLSignatureFactory xmlSignatureFactory = XMLSignatureFactory.getInstance(); this.baseUriDereferener = xmlSignatureFactory.getURIDereferencer(); }
From source file:be.fedict.eid.applet.service.signer.ooxml.OOXMLURIDereferencer.java
protected OOXMLURIDereferencer(byte[] ooxmlDocument, URL ooxmlUrl) { if (null == ooxmlUrl && null == ooxmlDocument) { throw new IllegalArgumentException("need some reference to the OOXML document"); }/* w w w. j a v a 2s. c om*/ this.ooxmlUrl = ooxmlUrl; this.ooxmlDocument = ooxmlDocument; XMLSignatureFactory xmlSignatureFactory = XMLSignatureFactory.getInstance(); this.baseUriDereferencer = xmlSignatureFactory.getURIDereferencer(); }
From source file:be.fedict.eid.applet.service.signer.odf.ODFURIDereferencer.java
private ODFURIDereferencer(URL odfUrl, byte[] odfData) { if (null == odfUrl && null == odfData) { throw new IllegalArgumentException("odfUrl and odfData are null"); }// w w w.j a v a 2 s. c o m if (null != odfUrl && null != odfData) { throw new IllegalArgumentException("odfUrl and odfData are both not null"); } this.odfUrl = odfUrl; this.odfData = odfData; XMLSignatureFactory xmlSignatureFactory = XMLSignatureFactory.getInstance(); this.baseUriDereferener = xmlSignatureFactory.getURIDereferencer(); DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance(); documentBuilderFactory.setNamespaceAware(true); try { this.documentBuilder = documentBuilderFactory.newDocumentBuilder(); } catch (ParserConfigurationException e) { throw new RuntimeException("parser config error: " + e.getMessage(), e); } EntityResolver entityResolver = new ODFEntityResolver(); this.documentBuilder.setEntityResolver(entityResolver); }
From source file:eu.europa.ec.markt.dss.signature.xades.XAdESProfileBES.java
private DOMXMLSignature createEnveloped(SignatureParameters params, DOMSignContext signContext, org.w3c.dom.Document doc, String signatureId, String signatureValueId) throws NoSuchAlgorithmException, InvalidAlgorithmParameterException, JAXBException, MarshalException, XMLSignatureException { XMLSignatureFactory fac = XMLSignatureFactory.getInstance("DOM", new XMLDSigRI()); signContext.setURIDereferencer(new URIDereferencer() { @Override//from ww w .ja v a 2s . c o m public Data dereference(URIReference uriReference, XMLCryptoContext context) throws URIReferenceException { final XMLSignatureFactory fac = XMLSignatureFactory.getInstance("DOM", new XMLDSigRI()); Data data = fac.getURIDereferencer().dereference(uriReference, context); return data; } }); Map<String, String> xpathNamespaceMap = new HashMap<String, String>(); xpathNamespaceMap.put("ds", XMLSignature.XMLNS); List<Reference> references = new ArrayList<Reference>(); /* The first reference concern the whole document */ List<Transform> transforms = new ArrayList<Transform>(); transforms.add(fac.newTransform(CanonicalizationMethod.ENVELOPED, (TransformParameterSpec) null)); DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); dbf.setNamespaceAware(true); org.w3c.dom.Document empty; try { empty = dbf.newDocumentBuilder().newDocument(); } catch (ParserConfigurationException e1) { throw new RuntimeException(e1); } Element xpathEl = empty.createElementNS(XMLSignature.XMLNS, "XPath"); xpathEl.setTextContent(""); empty.adoptNode(xpathEl); XPathFilterParameterSpec specs = new XPathFilterParameterSpec("not(ancestor-or-self::ds:Signature)"); DOMTransform t = (DOMTransform) fac.newTransform("http://www.w3.org/TR/1999/REC-xpath-19991116", specs); transforms.add(t); DigestMethod digestMethod = fac.newDigestMethod(params.getDigestAlgorithm().getXmlId(), null); Reference reference = fac.newReference("", digestMethod, transforms, null, "xml_ref_id"); references.add(reference); List<XMLObject> objects = new ArrayList<XMLObject>(); String xadesSignedPropertiesId = "xades-" + computeDeterministicId(params); QualifyingPropertiesType qualifyingProperties = createXAdESQualifyingProperties(params, xadesSignedPropertiesId, reference, MimeType.XML); qualifyingProperties.setTarget("#" + signatureId); Node marshallNode = doc.createElement("marshall-node"); JAXBContext jaxbContext = JAXBContext.newInstance(ObjectFactory.class); Marshaller marshaller = jaxbContext.createMarshaller(); marshaller.marshal(xades13ObjectFactory.createQualifyingProperties(qualifyingProperties), marshallNode); Element qualifier = (Element) marshallNode.getFirstChild(); // add XAdES ds:Object List<XMLStructure> xadesObjectContent = new LinkedList<XMLStructure>(); xadesObjectContent.add(new DOMStructure(marshallNode.getFirstChild())); XMLObject xadesObject = fac.newXMLObject(xadesObjectContent, null, null, null); objects.add(xadesObject); Reference xadesreference = fac.newReference("#" + xadesSignedPropertiesId, digestMethod, Collections.singletonList( fac.newTransform(CanonicalizationMethod.INCLUSIVE, (TransformParameterSpec) null)), XADES_TYPE, null); references.add(xadesreference); /* Signed Info */ SignatureMethod sm = fac.newSignatureMethod( params.getSignatureAlgorithm().getXMLSignatureAlgorithm(params.getDigestAlgorithm()), null); CanonicalizationMethod canonicalizationMethod = fac .newCanonicalizationMethod(CanonicalizationMethod.EXCLUSIVE, (C14NMethodParameterSpec) null); SignedInfo signedInfo = fac.newSignedInfo(canonicalizationMethod, sm, references); /* Creation of signature */ KeyInfoFactory keyFactory = KeyInfoFactory.getInstance("DOM", new XMLDSigRI()); List<Object> infos = new ArrayList<Object>(); List<X509Certificate> certs = new ArrayList<X509Certificate>(); certs.add(params.getSigningCertificate()); if (params.getCertificateChain() != null) { for (X509Certificate c : params.getCertificateChain()) { if (!c.getSubjectX500Principal().equals(params.getSigningCertificate().getSubjectX500Principal())) { certs.add(c); } } } infos.add(keyFactory.newX509Data(certs)); KeyInfo keyInfo = keyFactory.newKeyInfo(infos); DOMXMLSignature signature = (DOMXMLSignature) fac.newXMLSignature(signedInfo, keyInfo, objects, signatureId, signatureValueId); /* Marshall the signature to permit the digest. Need to be done before digesting the references. */ signature.marshal(doc.getDocumentElement(), "ds", signContext); signContext.setIdAttributeNS((Element) qualifier.getFirstChild(), null, "Id"); digestReferences(signContext, references); return signature; }