Example usage for javax.xml.crypto.dsig SignatureProperty getContent

List of usage examples for javax.xml.crypto.dsig SignatureProperty getContent

Introduction

In this page you can find the example usage for javax.xml.crypto.dsig SignatureProperty getContent.

Prototype

List<XMLStructure> getContent();

Source Link

Document

Returns an java.util.Collections#unmodifiableList unmodifiable list of one or more XMLStructure s that are contained in this SignatureProperty.

Usage

From source file:be.fedict.eid.applet.service.signer.ooxml.OOXMLSignatureVerifier.java

@SuppressWarnings("unchecked")
private boolean validateSignatureProperty(SignatureProperty signatureProperty, String signatureId) {

    if (!signatureProperty.getId().equals("idSignatureTime")) {
        LOG.error("Unexpected SignatureProperty: expected id=idSignatureTime " + "but got: "
                + signatureProperty.getId());
        return false;
    }//from  w ww  .jav a2s .c  om
    if (!signatureProperty.getTarget().equals("#" + signatureId)) {
        LOG.error("Unexpected SignatureProperty: expected target=#" + signatureId + "but got: "
                + signatureProperty.getTarget());
        return false;
    }
    List<XMLStructure> signatureTimeContent = signatureProperty.getContent();
    if (signatureTimeContent.size() != 1) {
        LOG.error("Unexpected SignatureTime content.");
        return false;
    }
    DOMStructure signatureTimeDOM = (DOMStructure) signatureTimeContent.get(0);
    Node signatureTimeElement = signatureTimeDOM.getNode();
    if (!signatureTimeElement.getNamespaceURI().equals(OOXMLSignatureFacet.OOXML_DIGSIG_NS)) {
        LOG.error("Invalid SignatureTime element: NS=" + signatureTimeElement.getNamespaceURI());
        return false;
    }
    if (!signatureTimeElement.getLocalName().equals("SignatureTime")) {
        LOG.error("Invalid SignatureTime element: Name=" + signatureTimeElement.getLocalName());
        return false;
    }
    if (signatureTimeElement.getChildNodes().getLength() != 2) {
        LOG.error("Invalid SignatureTime element: Childs=" + signatureTimeElement.getChildNodes().getLength()
                + ", expected 2 (Format+Value)");
        return false;
    }

    // format element
    Node formatElement = signatureTimeElement.getChildNodes().item(0);
    if (!formatElement.getNamespaceURI().equals(OOXMLSignatureFacet.OOXML_DIGSIG_NS)) {
        LOG.error("Invalid SignatureTime.Format element: NS=" + formatElement.getNamespaceURI());
        return false;
    }
    if (!formatElement.getLocalName().equals("Format")) {
        LOG.error("Invalid SignatureTime.Format element: Name=" + formatElement.getLocalName());
        return false;
    }

    // value element
    Node valueElement = signatureTimeElement.getChildNodes().item(1);
    if (!valueElement.getNamespaceURI().equals(OOXMLSignatureFacet.OOXML_DIGSIG_NS)) {
        LOG.error("Invalid SignatureTime.Value element: NS=" + valueElement.getNamespaceURI());
        return false;
    }
    if (!valueElement.getLocalName().equals("Value")) {
        LOG.error("Invalid SignatureTime.Value element: Name=" + valueElement.getLocalName());
        return false;
    }

    // TODO: validate value?

    return true;
}

From source file:be.fedict.eid.applet.service.signer.ooxml.OOXMLSignatureVerifier.java

@SuppressWarnings("unchecked")
private boolean isIdOfficeObjectValid(String signatureId, XMLObject idOfficeObject) {

    SignatureProperties signatureProperties;
    if (1 != idOfficeObject.getContent().size()) {
        LOG.error("Expect SignatureProperties element in \"idPackageObject\".");
        return false;
    }// ww  w . j  av a 2s  . c  o m
    signatureProperties = (SignatureProperties) idOfficeObject.getContent().get(0);

    if (signatureProperties.getProperties().size() != 1) {
        LOG.error("Unexpected # of SignatureProperty's in idOfficeObject");
        return false;
    }

    // SignatureInfo
    SignatureProperty signatureInfoProperty = (SignatureProperty) signatureProperties.getProperties().get(0);
    if (!signatureInfoProperty.getId().equals("idOfficeV1Details")) {
        LOG.error("Unexpected SignatureProperty: expected id=idOfficeV1Details " + "but got: "
                + signatureInfoProperty.getId());
        return false;
    }
    if (!signatureInfoProperty.getTarget().equals("#" + signatureId)) {
        LOG.error("Unexpected SignatureProperty: expected target=#" + signatureId + " but got: "
                + signatureInfoProperty.getTarget());
        LOG.warn("Allowing this error because of a bug in Office2010");
        // work-around for existing bug in Office2011
        // return false;
    }

    // SignatureInfoV1
    if (signatureInfoProperty.getContent().size() != 1) {
        LOG.error("Unexpected content in SignatureInfoProperty.");
        return false;
    }
    DOMStructure signatureInfoV1DOM = (DOMStructure) signatureInfoProperty.getContent().get(0);
    Node signatureInfoElement = signatureInfoV1DOM.getNode();
    if (!signatureInfoElement.getNamespaceURI().equals(OOXMLSignatureFacet.OFFICE_DIGSIG_NS)) {
        LOG.error("Unexpected SignatureInfoProperty content: NS=" + signatureInfoElement.getNamespaceURI());
        return false;
    }

    // TODO: validate childs: validate all possible from 2.5.2.5
    // ([MS-OFFCRYPTO]) or just ManifestHashAlgorithm?

    return true;
}