2362N/A * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved. 0N/A * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 0N/A * This code is free software; you can redistribute it and/or modify it 0N/A * under the terms of the GNU General Public License version 2 only, as 2362N/A * published by the Free Software Foundation. Oracle designates this 0N/A * particular file as subject to the "Classpath" exception as provided 2362N/A * by Oracle in the LICENSE file that accompanied this code. 0N/A * This code is distributed in the hope that it will be useful, but WITHOUT 0N/A * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 0N/A * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 0N/A * version 2 for more details (a copy is included in the LICENSE file that 0N/A * accompanied this code). 0N/A * You should have received a copy of the GNU General Public License version 0N/A * 2 along with this work; if not, write to the Free Software Foundation, 0N/A * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 2362N/A * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 2362N/A * or visit www.oracle.com if you need additional information or have any 0N/A * A representation of the <code>Reference</code> element as defined in the 0N/A * W3C Recommendation for XML-Signature Syntax and Processing</a>. 0N/A * The XML schema is defined as: 0N/A * <element name="Reference" type="ds:ReferenceType"/> 0N/A * <complexType name="ReferenceType"> 0N/A * <element ref="ds:Transforms" minOccurs="0"/> 0N/A * <element ref="ds:DigestMethod"/> 0N/A * <element ref="ds:DigestValue"/> 0N/A * <attribute name="Id" type="ID" use="optional"/> 0N/A * <attribute name="URI" type="anyURI" use="optional"/> 0N/A * <attribute name="Type" type="anyURI" use="optional"/> 0N/A * </complexType> 0N/A * <element name="DigestValue" type="ds:DigestValueType"/> 0N/A * <simpleType name="DigestValueType"> 0N/A * <restriction base="base64Binary"/> 0N/A * </simpleType> 0N/A * <p>A <code>Reference</code> instance may be created by invoking one of the 0N/A * {@link XMLSignatureFactory#newReference newReference} methods of the 0N/A * {@link XMLSignatureFactory} class; for example: 0N/A * XMLSignatureFactory factory = XMLSignatureFactory.getInstance("DOM"); 0N/A * Reference ref = factory.newReference 0N/A * factory.newDigestMethod(DigestMethod.SHA1, null)); 0N/A * @author Sean Mullan 0N/A * @author Erwin van der Koogh 0N/A * @author JSR 105 Expert Group 0N/A * @see XMLSignatureFactory#newReference(String, DigestMethod) 0N/A * @see XMLSignatureFactory#newReference(String, DigestMethod, List, String, String) 0N/A * Returns an {@link java.util.Collections#unmodifiableList unmodifiable 0N/A * list} of {@link Transform}s that are contained in this 0N/A * <code>Reference</code>. 0N/A * @return an unmodifiable list of <code>Transform</code>s 0N/A * (may be empty but never <code>null</code>) 0N/A * Returns the digest method of this <code>Reference</code>. 0N/A * @return the digest method 0N/A * Returns the optional <code>Id</code> attribute of this 0N/A * <code>Reference</code>, which permits this reference to be 0N/A * referenced from elsewhere. 0N/A * @return the <code>Id</code> attribute (may be <code>null</code> if not 0N/A * Returns the digest value of this <code>Reference</code>. 0N/A * @return the raw digest value, or <code>null</code> if this reference has 0N/A * not been digested yet. Each invocation of this method returns a new 0N/A * clone to protect against subsequent modification. 0N/A * Returns the calculated digest value of this <code>Reference</code> 0N/A * after a validation operation. This method is useful for debugging if 0N/A * the reference fails to validate. 0N/A * @return the calculated digest value, or <code>null</code> if this 0N/A * reference has not been validated yet. Each invocation of this method 0N/A * returns a new clone to protect against subsequent modification. 0N/A * Validates this reference. This method verifies the digest of this 0N/A * <p>This method only validates the reference the first time it is 0N/A * invoked. On subsequent invocations, it returns a cached result. 0N/A * @return <code>true</code> if this reference was validated successfully; 0N/A * <code>false</code> otherwise 0N/A * @param validateContext the validating context 0N/A * @throws NullPointerException if <code>validateContext</code> is 0N/A * @throws XMLSignatureException if an unexpected exception occurs while 0N/A * validating the reference 0N/A * Returns the dereferenced data, if 0N/A * is enabled. This is the result of dereferencing the URI of this 0N/A * reference during a validation or generation operation. 0N/A * @return the dereferenced data, or <code>null</code> if reference 0N/A * caching is not enabled or this reference has not been generated or 0N/A * Returns the pre-digested input stream, if 0N/A * is enabled. This is the input to the digest operation during a 0N/A * validation or signing operation. 0N/A * @return an input stream containing the pre-digested input, or 0N/A * <code>null</code> if reference caching is not enabled or this 0N/A * reference has not been generated or validated