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  */
28 package javax.xml.crypto.dsig;
29 
30 import javax.xml.crypto.AlgorithmMethod;
31 import javax.xml.crypto.XMLStructure;
32 import javax.xml.crypto.dsig.spec.DigestMethodParameterSpec;
33 import 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  */
60 public interface DigestMethod extends XMLStructure, AlgorithmMethod {
61 
62     // All methods can be found in RFC 6931.
63 
64     /**
65      * The <a href="http://www.w3.org/2000/09/xmldsig#sha1">
66      * SHA1</a> digest method algorithm URI.
67      */
68     String SHA1 = "http://www.w3.org/2000/09/xmldsig#sha1";
69 
70     /**
71      * The <a href="http://www.w3.org/2001/04/xmldsig-more#sha224">
72      * SHA224</a> digest method algorithm URI.
73      *
74      * @since 11
75      */
76     String SHA224 = "http://www.w3.org/2001/04/xmldsig-more#sha224";
77 
78     /**
79      * The <a href="http://www.w3.org/2001/04/xmlenc#sha256">
80      * SHA256</a> digest method algorithm URI.
81      */
82     String SHA256 = "http://www.w3.org/2001/04/xmlenc#sha256";
83 
84     /**
85      * The <a href="http://www.w3.org/2001/04/xmldsig-more#sha384">
86      * SHA384</a> digest method algorithm URI.
87      *
88      * @since 11
89      */
90     String SHA384 = "http://www.w3.org/2001/04/xmldsig-more#sha384";
91 
92     /**
93      * The <a href="http://www.w3.org/2001/04/xmlenc#sha512">
94      * SHA512</a> digest method algorithm URI.
95      */
96     String SHA512 = "http://www.w3.org/2001/04/xmlenc#sha512";
97 
98     /**
99      * The <a href="http://www.w3.org/2001/04/xmlenc#ripemd160">
100      * RIPEMD-160</a> digest method algorithm URI.
101      */
102     String RIPEMD160 = "http://www.w3.org/2001/04/xmlenc#ripemd160";
103 
104     /**
105      * The <a href="http://www.w3.org/2007/05/xmldsig-more#sha3-224">
106      * SHA3-224</a> digest method algorithm URI.
107      *
108      * @since 11
109      */
110     String SHA3_224 = "http://www.w3.org/2007/05/xmldsig-more#sha3-224";
111 
112     /**
113      * The <a href="http://www.w3.org/2007/05/xmldsig-more#sha3-256">
114      * SHA3-256</a> digest method algorithm URI.
115      *
116      * @since 11
117      */
118     String SHA3_256 = "http://www.w3.org/2007/05/xmldsig-more#sha3-256";
119 
120     /**
121      * The <a href="http://www.w3.org/2007/05/xmldsig-more#sha3-384">
122      * SHA3-384</a> digest method algorithm URI.
123      *
124      * @since 11
125      */
126     String SHA3_384 = "http://www.w3.org/2007/05/xmldsig-more#sha3-384";
127 
128     /**
129      * The <a href="http://www.w3.org/2007/05/xmldsig-more#sha3-512">
130      * SHA3-512</a> digest method algorithm URI.
131      *
132      * @since 11
133      */
134     String SHA3_512 = "http://www.w3.org/2007/05/xmldsig-more#sha3-512";
135 
136     /**
137      * Returns the algorithm-specific input parameters associated with this
138      * <code>DigestMethod</code>.
139      *
140      * <p>The returned parameters can be typecast to a {@link
141      * DigestMethodParameterSpec} object.
142      *
143      * @return the algorithm-specific parameters (may be <code>null</code> if
144      *    not specified)
145      */
getParameterSpec()146     AlgorithmParameterSpec getParameterSpec();
147 }
148