Overview | Package | Class | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## org.apache.xml.security.signature
Class Reference

    java.lang.Object
      org.apache.xml.security.utils.ElementProxy
          org.apache.xml.security.utils.SignatureElementProxy
              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 java.lang.String` | `MANIFEST_URI` Field MANIFEST_URI
`static int` | `MAXIMUM_TRANSFORM_COUNT` The maximum number of transforms per reference, if secure validation is enabled.
`static java.lang.String` | `OBJECT_URI` Field OBJECT_URI

Fields inherited from class org.apache.xml.security.utils.ElementProxy
`baseURI, constructionElement, doc`

Constructor Summary
`protected` | `Reference(org.w3c.dom.Document doc, java.lang.String baseURI, java.lang.String referenceURI, Manifest manifest, Transforms transforms, java.lang.String messageDigestAlgorithm)` Constructor Reference
`protected` | `Reference(org.w3c.dom.Element element, java.lang.String baseURI, Manifest manifest)` Build a `Reference` from an `Element`
`protected` | `Reference(org.w3c.dom.Element element, java.lang.String baseURI, Manifest manifest, boolean secureValidation)` Build a `Reference` from an `Element`

Method Summary
`protected XMLSignatureInput` | `dereferenceURIandPerformTransforms(java.io.OutputStream os)` This method returns the `XMLSignatureInput` which is referenced by the `URI` Attribute.
`void` | `generateDigestValue()` Method generateDigestValue
`java.lang.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.
`java.lang.String` | `getHTMLRepresentation()` Method getHTMLRepresentation
`java.lang.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.
`java.lang.String` | `getType()` Return the `type` atttibute of the Reference indicate whether an `ds:Object`, `ds:SignatureProperty`, or `ds:Manifest` element
`java.lang.String` | `getURI()` Returns the `URI` of this `Reference` element
`void` | `setId(java.lang.String id)` Sets the `Id` attribute of this `Reference` element
`void` | `setType(java.lang.String type)` Sets the `type` atttibute of the Reference indicate whether an `ds:Object`, `ds:SignatureProperty`, or `ds:Manifest` element.
`void` | `setURI(java.lang.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, addText, addTextElement, createElementForFamily, createElementForFamilyLocal, getBaseURI, getBigIntegerFromChildElement, getBytesFromChildElement, getBytesFromTextChild, getDefaultPrefix, getDocument, getElement, getElementPlusReturns, getTextFromChildElement, getTextFromTextChild, length, registerDefaultPrefixes, setDefaultPrefix, setElement, 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 java.lang.String OBJECT_URI

  Field OBJECT_URI

  See Also:
    Constant Field Values

### MANIFEST_URI

    public static final java.lang.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(org.w3c.dom.Document doc,
                        java.lang.String baseURI,
                        java.lang.String referenceURI,
                        Manifest manifest,
                        Transforms transforms,
                        java.lang.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(org.w3c.dom.Element element,
                        java.lang.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 `ResourceResolver`s which have been set by the user
  Throws:
    `XMLSecurityException`

### Reference

    protected Reference(org.w3c.dom.Element element,
                        java.lang.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 `ResourceResolver`s 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(java.lang.String uri)

  Sets the `URI` of this `Reference` element

  Parameters:
    `uri` - the `URI` of this `Reference` element

### getURI

    public java.lang.String getURI()

  Returns the `URI` of this `Reference` element

  Returns:
    URI the `URI` of this `Reference` element

### setId

    public void setId(java.lang.String id)

  Sets the `Id` attribute of this `Reference` element

  Parameters:
    `id` - the `Id` attribute of this `Reference` element

### getId

    public java.lang.String getId()

  Returns the `Id` attribute of this `Reference` element

  Returns:
    Id the `Id` attribute of this `Reference` element

### setType

    public void setType(java.lang.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 java.lang.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 java.lang.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(java.io.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 java.lang.String getBaseLocalName()

  Method getBaseLocalName

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

Overview | Package | Class | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD