1/*
2 * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation.  Oracle designates this
8 * particular file as subject to the "Classpath" exception as provided
9 * by Oracle in the LICENSE file that accompanied this code.
10 *
11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
23 * questions.
24 */
25/*
26 * $Id: DigestMethod.java,v 1.6 2005/05/10 16:03:46 mullan Exp $
27 */
28package javax.xml.crypto.dsig;
29
30import javax.xml.crypto.AlgorithmMethod;
31import javax.xml.crypto.XMLStructure;
32import javax.xml.crypto.dsig.spec.DigestMethodParameterSpec;
33import java.security.spec.AlgorithmParameterSpec;
34
35/**
36 * A representation of the XML <code>DigestMethod</code> element as
37 * defined in the <a href="http://www.w3.org/TR/xmldsig-core/">
38 * W3C Recommendation for XML-Signature Syntax and Processing</a>.
39 * The XML Schema Definition is defined as:
40 * <pre>
41 *   &lt;element name="DigestMethod" type="ds:DigestMethodType"/&gt;
42 *     &lt;complexType name="DigestMethodType" mixed="true"&gt;
43 *       &lt;sequence&gt;
44 *         &lt;any namespace="##any" minOccurs="0" maxOccurs="unbounded"/&gt;
45 *           &lt;!-- (0,unbounded) elements from (1,1) namespace --&gt;
46 *       &lt;/sequence&gt;
47 *       &lt;attribute name="Algorithm" type="anyURI" use="required"/&gt;
48 *     &lt;/complexType&gt;
49 * </pre>
50 *
51 * A <code>DigestMethod</code> instance may be created by invoking the
52 * {@link XMLSignatureFactory#newDigestMethod newDigestMethod} method
53 * of the {@link XMLSignatureFactory} class.
54 *
55 * @author Sean Mullan
56 * @author JSR 105 Expert Group
57 * @since 1.6
58 * @see XMLSignatureFactory#newDigestMethod(String, DigestMethodParameterSpec)
59 */
60public interface DigestMethod extends XMLStructure, AlgorithmMethod {
61
62    /**
63     * The <a href="http://www.w3.org/2000/09/xmldsig#sha1">
64     * SHA1</a> digest method algorithm URI.
65     */
66    static final String SHA1 = "http://www.w3.org/2000/09/xmldsig#sha1";
67
68    /**
69     * The <a href="http://www.w3.org/2001/04/xmlenc#sha256">
70     * SHA256</a> digest method algorithm URI.
71     */
72    static final String SHA256 = "http://www.w3.org/2001/04/xmlenc#sha256";
73
74    /**
75     * The <a href="http://www.w3.org/2001/04/xmlenc#sha512">
76     * SHA512</a> digest method algorithm URI.
77     */
78    static final String SHA512 = "http://www.w3.org/2001/04/xmlenc#sha512";
79
80    /**
81     * The <a href="http://www.w3.org/2001/04/xmlenc#ripemd160">
82     * RIPEMD-160</a> digest method algorithm URI.
83     */
84    static final String RIPEMD160 = "http://www.w3.org/2001/04/xmlenc#ripemd160";
85
86    /**
87     * Returns the algorithm-specific input parameters associated with this
88     * <code>DigestMethod</code>.
89     *
90     * <p>The returned parameters can be typecast to a {@link
91     * DigestMethodParameterSpec} object.
92     *
93     * @return the algorithm-specific parameters (may be <code>null</code> if
94     *    not specified)
95     */
96    AlgorithmParameterSpec getParameterSpec();
97}
98