@SuppressWarnings("unchecked") protected void addManifestReferencedObjects(List<XMLObject> allObjects, List<XMLObject> referencedObjects, String manifestId) { Manifest manifest = getReferencedManifest(allObjects, manifestId); if (manifest == null) { return; } for (Reference manifestRef : (List<Reference>) manifest.getReferences()) { String manifestRefUri = getSameDocumentReferenceUri(manifestRef); if (manifestRefUri == null) { continue; } XMLObject manifestReferencedOb = getReferencedObject(allObjects, manifestRefUri); if (manifestReferencedOb != null) { referencedObjects.add(manifestReferencedOb); } } }
protected Manifest getReferencedManifest(List<XMLObject> objects, String id) { for (XMLObject xo : objects) { @SuppressWarnings("unchecked") List<XMLStructure> content = xo.getContent(); for (XMLStructure xs : content) { if (xs instanceof Manifest) { Manifest man = (Manifest) xs; if (id.equals(man.getId())) { return man; } } } } return null; }
private void addManifestObject(XMLSignatureFactory signatureFactory, Document document, String signatureId, List<Reference> references, List<XMLObject> objects) throws NoSuchAlgorithmException, InvalidAlgorithmParameterException { Manifest manifest = constructManifest(signatureFactory, document); String objectId = "idPackageObject"; // really has to be this value. List<XMLStructure> objectContent = new LinkedList<XMLStructure>(); objectContent.add(manifest); addSignatureTime(signatureFactory, document, signatureId, objectContent); objects.add(signatureFactory.newXMLObject(objectContent, objectId, null, null)); DigestMethod digestMethod = signatureFactory.newDigestMethod(this.digestAlgo.getXmlAlgoId(), null); Reference reference = signatureFactory.newReference("#" + objectId, digestMethod, null, "http://www.w3.org/2000/09/xmldsig#Object", null); references.add(reference); }
private Manifest constructManifest(XMLSignatureFactory signatureFactory, Document document) throws NoSuchAlgorithmException, InvalidAlgorithmParameterException { List<Reference> manifestReferences = new LinkedList<Reference>(); try { addManifestReferences(signatureFactory, document, manifestReferences); } catch (Exception e) { throw new RuntimeException("error: " + e.getMessage(), e); } return signatureFactory.newManifest(manifestReferences); }
@Override public void marshalObject(XmlWriter xwriter, Manifest toMarshal, String dsPrefix, XMLCryptoContext context) throws MarshalException { DOMManifest.marshal(xwriter, toMarshal, dsPrefix, context); }
public Manifest newManifest(List references) { throw new UnsupportedOperationException(); }
public Manifest newManifest(List references, String id) { throw new UnsupportedOperationException(); }