org.apache.xml.security.signature
Class Reference

java.lang.Object
  extended by org.apache.xml.security.utils.ElementProxy
      extended by org.apache.xml.security.utils.SignatureElementProxy
          extended by org.apache.xml.security.signature.Reference

public class Reference
extends SignatureElementProxy

Handles <ds:Reference> elements. This includes: Construct a ds:Reference from an Element.

Create a new reference

 Document doc;
 MessageDigestAlgorithm sha1 = MessageDigestAlgorithm.getInstance("http://#sha1");
 Reference ref = new Reference(new XMLSignatureInput(new FileInputStream("1.gif"),
                               "http://localhost/1.gif",
                               (Transforms) null, sha1);
 Element refElem = ref.toElement(doc);
 

Verify a reference

 Element refElem = doc.getElement("Reference"); // PSEUDO
 Reference ref = new Reference(refElem);
 String url = ref.getURI();
 ref.setData(new XMLSignatureInput(new FileInputStream(url)));
 if (ref.verify()) {
    System.out.println("verified");
 }
 
 <element name="Reference" type="ds:ReferenceType"/>
  <complexType name="ReferenceType">
    <sequence>
      <element ref="ds:Transforms" minOccurs="0"/>
      <element ref="ds:DigestMethod"/>
      <element ref="ds:DigestValue"/>
    </sequence>
    <attribute name="Id" type="ID" use="optional"/>
    <attribute name="URI" type="anyURI" use="optional"/>
    <attribute name="Type" type="anyURI" use="optional"/>
  </complexType>
 

Author:
Christian Geuer-Pollmann
See Also:
ObjectContainer, Manifest

Field Summary
static String MANIFEST_URI
          Field MANIFEST_URI
static int MAXIMUM_TRANSFORM_COUNT
          The maximum number of transforms per reference, if secure validation is enabled.
static String OBJECT_URI
          Field OBJECT_URI
 
Fields inherited from class org.apache.xml.security.utils.ElementProxy
baseURI
 
Constructor Summary
protected Reference(Document doc, String baseURI, String referenceURI, Manifest manifest, Transforms transforms, String messageDigestAlgorithm)
          Constructor Reference
protected Reference(Element element, String baseURI, Manifest manifest)
          Build a Reference from an Element
protected Reference(Element element, String baseURI, Manifest manifest, boolean secureValidation)
          Build a Reference from an Element
 
Method Summary
protected  XMLSignatureInput dereferenceURIandPerformTransforms(OutputStream os)
          This method returns the XMLSignatureInput which is referenced by the URI Attribute.
 void generateDigestValue()
          Method generateDigestValue
 String getBaseLocalName()
          Method getBaseLocalName
 XMLSignatureInput getContentsAfterTransformation()
          Returns the XMLSignatureInput which is the result of the Transforms.
 XMLSignatureInput getContentsBeforeTransformation()
          Returns the XMLSignatureInput which is created by de-referencing the URI attribute.
 byte[] getDigestValue()
          Returns the digest value.
 String getHTMLRepresentation()
          Method getHTMLRepresentation
 String getId()
          Returns the Id attribute of this Reference element
 MessageDigestAlgorithm getMessageDigestAlgorithm()
          Returns MessageDigestAlgorithm
 XMLSignatureInput getNodesetBeforeFirstCanonicalization()
          This method returns the XMLSignatureInput which represents the node set before some kind of canonicalization is applied for the first time.
 ReferenceData getReferenceData()
          Get the ReferenceData that corresponds to the cached representation of the dereferenced object before transformation.
 byte[] getReferencedBytes()
          Method getReferencedBytes
 Transforms getTransforms()
          Method getTransforms
 XMLSignatureInput getTransformsOutput()
          This method only works works after a call to verify.
 String getType()
          Return the type atttibute of the Reference indicate whether an ds:Object, ds:SignatureProperty, or ds:Manifest element
 String getURI()
          Returns the URI of this Reference element
 void setId(String id)
          Sets the Id attribute of this Reference element
 void setType(String type)
          Sets the type atttibute of the Reference indicate whether an ds:Object, ds:SignatureProperty, or ds:Manifest element.
 void setURI(String uri)
          Sets the URI of this Reference element
 boolean typeIsReferenceToManifest()
          Method isReferenceToManifest This returns true if the Type attribute of the Reference element points to a #Manifest element
 boolean typeIsReferenceToObject()
          Method isReferenceToObject This returns true if the Type attribute of the Reference element points to a #Object element
 boolean verify()
          Tests reference validation is success or false
 
Methods inherited from class org.apache.xml.security.utils.SignatureElementProxy
getBaseNamespace
 
Methods inherited from class org.apache.xml.security.utils.ElementProxy
addBase64Element, addBase64Text, addBigIntegerElement, addReturnToSelf, addText, addTextElement, appendOther, appendSelf, appendSelf, createElementForFamily, createElementForFamilyLocal, createText, getBaseURI, getBigIntegerFromChildElement, getBytesFromTextChild, getDefaultPrefix, getDocument, getElement, getElementPlusReturns, getFirstChild, getLocalAttribute, getTextFromChildElement, getTextFromTextChild, length, registerDefaultPrefixes, setDefaultPrefix, setDocument, setElement, setElement, setLocalAttribute, setLocalIdAttribute, setXPathNamespaceContext
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

OBJECT_URI

public static final String OBJECT_URI
Field OBJECT_URI

See Also:
Constant Field Values

MANIFEST_URI

public static final String MANIFEST_URI
Field MANIFEST_URI

See Also:
Constant Field Values

MAXIMUM_TRANSFORM_COUNT

public static final int MAXIMUM_TRANSFORM_COUNT
The maximum number of transforms per reference, if secure validation is enabled.

See Also:
Constant Field Values
Constructor Detail

Reference

protected Reference(Document doc,
                    String baseURI,
                    String referenceURI,
                    Manifest manifest,
                    Transforms transforms,
                    String messageDigestAlgorithm)
             throws XMLSignatureException
Constructor Reference

Parameters:
doc - the Document in which XMLsignature is placed
baseURI - the URI of the resource where the XML instance will be stored
referenceURI - URI indicate where is data which will digested
manifest -
transforms - Transforms applied to data
messageDigestAlgorithm - Digest algorithm which is applied to the data TODO should we throw XMLSignatureException if MessageDigestAlgoURI is wrong?
Throws:
XMLSignatureException

Reference

protected Reference(Element element,
                    String baseURI,
                    Manifest manifest)
             throws XMLSecurityException
Build a Reference from an Element

Parameters:
element - Reference element
baseURI - the URI of the resource where the XML instance was stored
manifest - is the Manifest of SignedInfo in which the Reference occurs. We need this because the Manifest has the individual ResourceResolvers which have been set by the user
Throws:
XMLSecurityException

Reference

protected Reference(Element element,
                    String baseURI,
                    Manifest manifest,
                    boolean secureValidation)
             throws XMLSecurityException
Build a Reference from an Element

Parameters:
element - Reference element
baseURI - the URI of the resource where the XML instance was stored
manifest - is the Manifest of SignedInfo in which the Reference occurs.
secureValidation - whether secure validation is enabled or not We need this because the Manifest has the individual ResourceResolvers which have been set by the user
Throws:
XMLSecurityException
Method Detail

getMessageDigestAlgorithm

public MessageDigestAlgorithm getMessageDigestAlgorithm()
                                                 throws XMLSignatureException
Returns MessageDigestAlgorithm

Returns:
MessageDigestAlgorithm
Throws:
XMLSignatureException

setURI

public void setURI(String uri)
Sets the URI of this Reference element

Parameters:
uri - the URI of this Reference element

getURI

public String getURI()
Returns the URI of this Reference element

Returns:
URI the URI of this Reference element

setId

public void setId(String id)
Sets the Id attribute of this Reference element

Parameters:
id - the Id attribute of this Reference element

getId

public String getId()
Returns the Id attribute of this Reference element

Returns:
Id the Id attribute of this Reference element

setType

public void setType(String type)
Sets the type atttibute of the Reference indicate whether an ds:Object, ds:SignatureProperty, or ds:Manifest element.

Parameters:
type - the type attribute of the Reference

getType

public String getType()
Return the type atttibute of the Reference indicate whether an ds:Object, ds:SignatureProperty, or ds:Manifest element

Returns:
the type attribute of the Reference

typeIsReferenceToObject

public boolean typeIsReferenceToObject()
Method isReferenceToObject This returns true if the Type attribute of the Reference element points to a #Object element

Returns:
true if the Reference type indicates that this Reference points to an Object

typeIsReferenceToManifest

public boolean typeIsReferenceToManifest()
Method isReferenceToManifest This returns true if the Type attribute of the Reference element points to a #Manifest element

Returns:
true if the Reference type indicates that this Reference points to a Manifest

generateDigestValue

public void generateDigestValue()
                         throws XMLSignatureException,
                                ReferenceNotInitializedException
Method generateDigestValue

Throws:
ReferenceNotInitializedException
XMLSignatureException

getContentsBeforeTransformation

public XMLSignatureInput getContentsBeforeTransformation()
                                                  throws ReferenceNotInitializedException
Returns the XMLSignatureInput which is created by de-referencing the URI attribute.

Returns:
the XMLSignatureInput of the source of this reference
Throws:
ReferenceNotInitializedException - If the resolver found any problem resolving the reference

getContentsAfterTransformation

public XMLSignatureInput getContentsAfterTransformation()
                                                 throws XMLSignatureException
Returns the XMLSignatureInput which is the result of the Transforms.

Returns:
a XMLSignatureInput with all transformations applied.
Throws:
XMLSignatureException

getNodesetBeforeFirstCanonicalization

public XMLSignatureInput getNodesetBeforeFirstCanonicalization()
                                                        throws XMLSignatureException
This method returns the XMLSignatureInput which represents the node set before some kind of canonicalization is applied for the first time.

Returns:
Gets a the node doing everything till the first c14n is needed
Throws:
XMLSignatureException

getHTMLRepresentation

public String getHTMLRepresentation()
                             throws XMLSignatureException
Method getHTMLRepresentation

Returns:
The HTML of the transformation
Throws:
XMLSignatureException

getTransformsOutput

public XMLSignatureInput getTransformsOutput()
This method only works works after a call to verify.

Returns:
the transformed output(i.e. what is going to be digested).

getReferenceData

public ReferenceData getReferenceData()
Get the ReferenceData that corresponds to the cached representation of the dereferenced object before transformation.


dereferenceURIandPerformTransforms

protected XMLSignatureInput dereferenceURIandPerformTransforms(OutputStream os)
                                                        throws XMLSignatureException
This method returns the XMLSignatureInput which is referenced by the URI Attribute.

Parameters:
os - where to write the transformation can be null.
Returns:
the element to digest
Throws:
XMLSignatureException
See Also:
Manifest.verifyReferences()

getTransforms

public Transforms getTransforms()
                         throws XMLSignatureException,
                                InvalidTransformException,
                                TransformationException,
                                XMLSecurityException
Method getTransforms

Returns:
The transforms that applied this reference.
Throws:
InvalidTransformException
TransformationException
XMLSecurityException
XMLSignatureException

getReferencedBytes

public byte[] getReferencedBytes()
                          throws ReferenceNotInitializedException,
                                 XMLSignatureException
Method getReferencedBytes

Returns:
the bytes that will be used to generated digest.
Throws:
ReferenceNotInitializedException
XMLSignatureException

getDigestValue

public byte[] getDigestValue()
                      throws Base64DecodingException,
                             XMLSecurityException
Returns the digest value.

Returns:
the digest value.
Throws:
Base64DecodingException - if Reference contains no proper base64 encoded data.
XMLSecurityException - if the Reference does not contain a DigestValue element

verify

public boolean verify()
               throws ReferenceNotInitializedException,
                      XMLSecurityException
Tests reference validation is success or false

Returns:
true if reference validation is success, otherwise false
Throws:
ReferenceNotInitializedException
XMLSecurityException

getBaseLocalName

public String getBaseLocalName()
Method getBaseLocalName

Specified by:
getBaseLocalName in class ElementProxy
Returns:
the localname of the Elements of the sub-class.


Copyright © 2000–2014 The Apache Software Foundation. All rights reserved.