Search in sources :

Example 1 with ResourceResolver

use of com.sun.org.apache.xml.internal.security.utils.resolver.ResourceResolver in project jdk8u_jdk by JetBrains.

the class KeyInfoReferenceResolver method resolveInput.

/**
     * Resolve the XML signature input represented by the specified URI.
     *
     * @param uri
     * @param baseURI
     * @param secureValidation
     * @return
     * @throws XMLSecurityException
     */
private XMLSignatureInput resolveInput(Attr uri, String baseURI, boolean secureValidation) throws XMLSecurityException {
    ResourceResolver resRes = ResourceResolver.getInstance(uri, baseURI, secureValidation);
    XMLSignatureInput resource = resRes.resolve(uri, baseURI, secureValidation);
    return resource;
}
Also used : ResourceResolver(com.sun.org.apache.xml.internal.security.utils.resolver.ResourceResolver) XMLSignatureInput(com.sun.org.apache.xml.internal.security.signature.XMLSignatureInput)

Example 2 with ResourceResolver

use of com.sun.org.apache.xml.internal.security.utils.resolver.ResourceResolver in project jdk8u_jdk by JetBrains.

the class Reference method getContentsBeforeTransformation.

/**
     * Returns the XMLSignatureInput which is created by de-referencing the URI attribute.
     * @return the XMLSignatureInput of the source of this reference
     * @throws ReferenceNotInitializedException If the resolver found any
     * problem resolving the reference
     */
public XMLSignatureInput getContentsBeforeTransformation() throws ReferenceNotInitializedException {
    try {
        Attr uriAttr = this.constructionElement.getAttributeNodeNS(null, Constants._ATT_URI);
        ResourceResolver resolver = ResourceResolver.getInstance(uriAttr, this.baseURI, this.manifest.getPerManifestResolvers(), secureValidation);
        resolver.addProperties(this.manifest.getResolverProperties());
        return resolver.resolve(uriAttr, this.baseURI, secureValidation);
    } catch (ResourceResolverException ex) {
        throw new ReferenceNotInitializedException("empty", ex);
    }
}
Also used : ResourceResolver(com.sun.org.apache.xml.internal.security.utils.resolver.ResourceResolver) ResourceResolverException(com.sun.org.apache.xml.internal.security.utils.resolver.ResourceResolverException) Attr(org.w3c.dom.Attr)

Example 3 with ResourceResolver

use of com.sun.org.apache.xml.internal.security.utils.resolver.ResourceResolver in project jdk8u_jdk by JetBrains.

the class DOMURIDereferencer method dereference.

public Data dereference(URIReference uriRef, XMLCryptoContext context) throws URIReferenceException {
    if (uriRef == null) {
        throw new NullPointerException("uriRef cannot be null");
    }
    if (context == null) {
        throw new NullPointerException("context cannot be null");
    }
    DOMURIReference domRef = (DOMURIReference) uriRef;
    Attr uriAttr = (Attr) domRef.getHere();
    String uri = uriRef.getURI();
    DOMCryptoContext dcc = (DOMCryptoContext) context;
    String baseURI = context.getBaseURI();
    boolean secVal = Utils.secureValidation(context);
    if (secVal && Policy.restrictReferenceUriScheme(uri)) {
        throw new URIReferenceException("Uri " + uri + " is forbidden when secure validation is enabled");
    }
    // Check if same-document URI and already registered on the context
    if (uri != null && uri.length() != 0 && uri.charAt(0) == '#') {
        String id = uri.substring(1);
        if (id.startsWith("xpointer(id(")) {
            int i1 = id.indexOf('\'');
            int i2 = id.indexOf('\'', i1 + 1);
            id = id.substring(i1 + 1, i2);
        }
        // check if element is registered by Id
        Node referencedElem = uriAttr.getOwnerDocument().getElementById(id);
        if (referencedElem == null) {
            // see if element is registered in DOMCryptoContext
            referencedElem = dcc.getElementById(id);
        }
        if (referencedElem != null) {
            if (secVal && Policy.restrictDuplicateIds()) {
                Element start = referencedElem.getOwnerDocument().getDocumentElement();
                if (!XMLUtils.protectAgainstWrappingAttack(start, (Element) referencedElem, id)) {
                    String error = "Multiple Elements with the same ID " + id + " detected when secure validation" + " is enabled";
                    throw new URIReferenceException(error);
                }
            }
            XMLSignatureInput result = new XMLSignatureInput(referencedElem);
            if (!uri.substring(1).startsWith("xpointer(id(")) {
                result.setExcludeComments(true);
            }
            result.setMIMEType("text/xml");
            if (baseURI != null && baseURI.length() > 0) {
                result.setSourceURI(baseURI.concat(uriAttr.getNodeValue()));
            } else {
                result.setSourceURI(uriAttr.getNodeValue());
            }
            return new ApacheNodeSetData(result);
        }
    }
    try {
        ResourceResolver apacheResolver = ResourceResolver.getInstance(uriAttr, baseURI, false);
        XMLSignatureInput in = apacheResolver.resolve(uriAttr, baseURI, false);
        if (in.isOctetStream()) {
            return new ApacheOctetStreamData(in);
        } else {
            return new ApacheNodeSetData(in);
        }
    } catch (Exception e) {
        throw new URIReferenceException(e);
    }
}
Also used : Node(org.w3c.dom.Node) Element(org.w3c.dom.Element) XMLSignatureInput(com.sun.org.apache.xml.internal.security.signature.XMLSignatureInput) Attr(org.w3c.dom.Attr) ResourceResolver(com.sun.org.apache.xml.internal.security.utils.resolver.ResourceResolver)

Example 4 with ResourceResolver

use of com.sun.org.apache.xml.internal.security.utils.resolver.ResourceResolver in project jdk8u_jdk by JetBrains.

the class XMLCipherInput method getDecryptBytes.

/**
     * Internal method to get bytes in decryption mode
     * @return the decrypted bytes
     * @throws XMLEncryptionException
     */
private byte[] getDecryptBytes() throws XMLEncryptionException {
    String base64EncodedEncryptedOctets = null;
    if (cipherData.getDataType() == CipherData.REFERENCE_TYPE) {
        // Fun time!
        if (logger.isLoggable(java.util.logging.Level.FINE)) {
            logger.log(java.util.logging.Level.FINE, "Found a reference type CipherData");
        }
        CipherReference cr = cipherData.getCipherReference();
        // Need to wrap the uri in an Attribute node so that we can
        // Pass to the resource resolvers
        Attr uriAttr = cr.getURIAsAttr();
        XMLSignatureInput input = null;
        try {
            ResourceResolver resolver = ResourceResolver.getInstance(uriAttr, null, secureValidation);
            input = resolver.resolve(uriAttr, null, secureValidation);
        } catch (ResourceResolverException ex) {
            throw new XMLEncryptionException("empty", ex);
        }
        if (input != null) {
            if (logger.isLoggable(java.util.logging.Level.FINE)) {
                logger.log(java.util.logging.Level.FINE, "Managed to resolve URI \"" + cr.getURI() + "\"");
            }
        } else {
            if (logger.isLoggable(java.util.logging.Level.FINE)) {
                logger.log(java.util.logging.Level.FINE, "Failed to resolve URI \"" + cr.getURI() + "\"");
            }
        }
        // Lets see if there are any transforms
        Transforms transforms = cr.getTransforms();
        if (transforms != null) {
            if (logger.isLoggable(java.util.logging.Level.FINE)) {
                logger.log(java.util.logging.Level.FINE, "Have transforms in cipher reference");
            }
            try {
                com.sun.org.apache.xml.internal.security.transforms.Transforms dsTransforms = transforms.getDSTransforms();
                dsTransforms.setSecureValidation(secureValidation);
                input = dsTransforms.performTransforms(input);
            } catch (TransformationException ex) {
                throw new XMLEncryptionException("empty", ex);
            }
        }
        try {
            return input.getBytes();
        } catch (IOException ex) {
            throw new XMLEncryptionException("empty", ex);
        } catch (CanonicalizationException ex) {
            throw new XMLEncryptionException("empty", ex);
        }
    // retrieve the cipher text
    } else if (cipherData.getDataType() == CipherData.VALUE_TYPE) {
        base64EncodedEncryptedOctets = cipherData.getCipherValue().getValue();
    } else {
        throw new XMLEncryptionException("CipherData.getDataType() returned unexpected value");
    }
    if (logger.isLoggable(java.util.logging.Level.FINE)) {
        logger.log(java.util.logging.Level.FINE, "Encrypted octets:\n" + base64EncodedEncryptedOctets);
    }
    try {
        return Base64.decode(base64EncodedEncryptedOctets);
    } catch (Base64DecodingException bde) {
        throw new XMLEncryptionException("empty", bde);
    }
}
Also used : TransformationException(com.sun.org.apache.xml.internal.security.transforms.TransformationException) CanonicalizationException(com.sun.org.apache.xml.internal.security.c14n.CanonicalizationException) XMLSignatureInput(com.sun.org.apache.xml.internal.security.signature.XMLSignatureInput) ResourceResolverException(com.sun.org.apache.xml.internal.security.utils.resolver.ResourceResolverException) IOException(java.io.IOException) Attr(org.w3c.dom.Attr) Base64DecodingException(com.sun.org.apache.xml.internal.security.exceptions.Base64DecodingException) ResourceResolver(com.sun.org.apache.xml.internal.security.utils.resolver.ResourceResolver)

Example 5 with ResourceResolver

use of com.sun.org.apache.xml.internal.security.utils.resolver.ResourceResolver in project jdk8u_jdk by JetBrains.

the class RetrievalMethodResolver method resolveInput.

/**
     * Resolves the input from the given retrieval method
     * @return
     * @throws XMLSecurityException
     */
private static XMLSignatureInput resolveInput(RetrievalMethod rm, String baseURI, boolean secureValidation) throws XMLSecurityException {
    Attr uri = rm.getURIAttr();
    // Apply the transforms
    Transforms transforms = rm.getTransforms();
    ResourceResolver resRes = ResourceResolver.getInstance(uri, baseURI, secureValidation);
    XMLSignatureInput resource = resRes.resolve(uri, baseURI, secureValidation);
    if (transforms != null) {
        if (log.isLoggable(java.util.logging.Level.FINE)) {
            log.log(java.util.logging.Level.FINE, "We have Transforms");
        }
        resource = transforms.performTransforms(resource);
    }
    return resource;
}
Also used : Transforms(com.sun.org.apache.xml.internal.security.transforms.Transforms) ResourceResolver(com.sun.org.apache.xml.internal.security.utils.resolver.ResourceResolver) XMLSignatureInput(com.sun.org.apache.xml.internal.security.signature.XMLSignatureInput) Attr(org.w3c.dom.Attr)

Aggregations

ResourceResolver (com.sun.org.apache.xml.internal.security.utils.resolver.ResourceResolver)5 XMLSignatureInput (com.sun.org.apache.xml.internal.security.signature.XMLSignatureInput)4 Attr (org.w3c.dom.Attr)4 ResourceResolverException (com.sun.org.apache.xml.internal.security.utils.resolver.ResourceResolverException)2 CanonicalizationException (com.sun.org.apache.xml.internal.security.c14n.CanonicalizationException)1 Base64DecodingException (com.sun.org.apache.xml.internal.security.exceptions.Base64DecodingException)1 TransformationException (com.sun.org.apache.xml.internal.security.transforms.TransformationException)1 Transforms (com.sun.org.apache.xml.internal.security.transforms.Transforms)1 IOException (java.io.IOException)1 Element (org.w3c.dom.Element)1 Node (org.w3c.dom.Node)1