Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/openjdk-multiarch-jdk8u
Path: blob/aarch64-shenandoah-jdk8u272-b10/jdk/src/share/classes/javax/xml/crypto/dsig/XMLSignature.java
38918 views
1
/*
2
* Copyright (c) 2005, 2011, 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
/*
27
* ===========================================================================
28
*
29
* (C) Copyright IBM Corp. 2003 All Rights Reserved.
30
*
31
* ===========================================================================
32
*/
33
/*
34
* $Id: XMLSignature.java,v 1.10 2005/05/10 16:03:48 mullan Exp $
35
*/
36
package javax.xml.crypto.dsig;
37
38
import javax.xml.crypto.KeySelector;
39
import javax.xml.crypto.KeySelectorResult;
40
import javax.xml.crypto.MarshalException;
41
import javax.xml.crypto.XMLStructure;
42
import javax.xml.crypto.dsig.keyinfo.KeyInfo;
43
import java.security.Signature;
44
import java.util.List;
45
46
/**
47
* A representation of the XML <code>Signature</code> element as
48
* defined in the <a href="http://www.w3.org/TR/xmldsig-core/">
49
* W3C Recommendation for XML-Signature Syntax and Processing</a>.
50
* This class contains methods for signing and validating XML signatures
51
* with behavior as defined by the W3C specification. The XML Schema Definition
52
* is defined as:
53
* <pre><code>
54
* &lt;element name="Signature" type="ds:SignatureType"/&gt;
55
* &lt;complexType name="SignatureType"&gt;
56
* &lt;sequence&gt;
57
* &lt;element ref="ds:SignedInfo"/&gt;
58
* &lt;element ref="ds:SignatureValue"/&gt;
59
* &lt;element ref="ds:KeyInfo" minOccurs="0"/&gt;
60
* &lt;element ref="ds:Object" minOccurs="0" maxOccurs="unbounded"/&gt;
61
* &lt;/sequence&gt;
62
* &lt;attribute name="Id" type="ID" use="optional"/&gt;
63
* &lt;/complexType&gt;
64
* </code></pre>
65
* <p>
66
* An <code>XMLSignature</code> instance may be created by invoking one of the
67
* {@link XMLSignatureFactory#newXMLSignature newXMLSignature} methods of the
68
* {@link XMLSignatureFactory} class.
69
*
70
* <p>If the contents of the underlying document containing the
71
* <code>XMLSignature</code> are subsequently modified, the behavior is
72
* undefined.
73
*
74
* <p>Note that this class is named <code>XMLSignature</code> rather than
75
* <code>Signature</code> to avoid naming clashes with the existing
76
* {@link Signature java.security.Signature} class.
77
*
78
* @see XMLSignatureFactory#newXMLSignature(SignedInfo, KeyInfo)
79
* @see XMLSignatureFactory#newXMLSignature(SignedInfo, KeyInfo, List, String, String)
80
* @author Joyce L. Leung
81
* @author Sean Mullan
82
* @author Erwin van der Koogh
83
* @author JSR 105 Expert Group
84
* @since 1.6
85
*/
86
public interface XMLSignature extends XMLStructure {
87
88
/**
89
* The XML Namespace URI of the W3C Recommendation for XML-Signature
90
* Syntax and Processing.
91
*/
92
final static String XMLNS = "http://www.w3.org/2000/09/xmldsig#";
93
94
/**
95
* Validates the signature according to the
96
* <a href="http://www.w3.org/TR/xmldsig-core/#sec-CoreValidation">
97
* core validation processing rules</a>. This method validates the
98
* signature using the existing state, it does not unmarshal and
99
* reinitialize the contents of the <code>XMLSignature</code> using the
100
* location information specified in the context.
101
*
102
* <p>This method only validates the signature the first time it is
103
* invoked. On subsequent invocations, it returns a cached result.
104
*
105
* @param validateContext the validating context
106
* @return <code>true</code> if the signature passed core validation,
107
* otherwise <code>false</code>
108
* @throws ClassCastException if the type of <code>validateContext</code>
109
* is not compatible with this <code>XMLSignature</code>
110
* @throws NullPointerException if <code>validateContext</code> is
111
* <code>null</code>
112
* @throws XMLSignatureException if an unexpected error occurs during
113
* validation that prevented the validation operation from completing
114
*/
115
boolean validate(XMLValidateContext validateContext)
116
throws XMLSignatureException;
117
118
/**
119
* Returns the key info of this <code>XMLSignature</code>.
120
*
121
* @return the key info (may be <code>null</code> if not specified)
122
*/
123
KeyInfo getKeyInfo();
124
125
/**
126
* Returns the signed info of this <code>XMLSignature</code>.
127
*
128
* @return the signed info (never <code>null</code>)
129
*/
130
SignedInfo getSignedInfo();
131
132
/**
133
* Returns an {@link java.util.Collections#unmodifiableList unmodifiable
134
* list} of {@link XMLObject}s contained in this <code>XMLSignature</code>.
135
*
136
* @return an unmodifiable list of <code>XMLObject</code>s (may be empty
137
* but never <code>null</code>)
138
*/
139
@SuppressWarnings("rawtypes")
140
List getObjects();
141
142
/**
143
* Returns the optional Id of this <code>XMLSignature</code>.
144
*
145
* @return the Id (may be <code>null</code> if not specified)
146
*/
147
String getId();
148
149
/**
150
* Returns the signature value of this <code>XMLSignature</code>.
151
*
152
* @return the signature value
153
*/
154
SignatureValue getSignatureValue();
155
156
/**
157
* Signs this <code>XMLSignature</code>.
158
*
159
* <p>If this method throws an exception, this <code>XMLSignature</code> and
160
* the <code>signContext</code> parameter will be left in the state that
161
* it was in prior to the invocation.
162
*
163
* @param signContext the signing context
164
* @throws ClassCastException if the type of <code>signContext</code> is
165
* not compatible with this <code>XMLSignature</code>
166
* @throws NullPointerException if <code>signContext</code> is
167
* <code>null</code>
168
* @throws MarshalException if an exception occurs while marshalling
169
* @throws XMLSignatureException if an unexpected exception occurs while
170
* generating the signature
171
*/
172
void sign(XMLSignContext signContext) throws MarshalException,
173
XMLSignatureException;
174
175
/**
176
* Returns the result of the {@link KeySelector}, if specified, after
177
* this <code>XMLSignature</code> has been signed or validated.
178
*
179
* @return the key selector result, or <code>null</code> if a key
180
* selector has not been specified or this <code>XMLSignature</code>
181
* has not been signed or validated
182
*/
183
KeySelectorResult getKeySelectorResult();
184
185
/**
186
* A representation of the XML <code>SignatureValue</code> element as
187
* defined in the <a href="http://www.w3.org/TR/xmldsig-core/">
188
* W3C Recommendation for XML-Signature Syntax and Processing</a>.
189
* The XML Schema Definition is defined as:
190
* <p>
191
* <pre>
192
* &lt;element name="SignatureValue" type="ds:SignatureValueType"/&gt;
193
* &lt;complexType name="SignatureValueType"&gt;
194
* &lt;simpleContent&gt;
195
* &lt;extension base="base64Binary"&gt;
196
* &lt;attribute name="Id" type="ID" use="optional"/&gt;
197
* &lt;/extension&gt;
198
* &lt;/simpleContent&gt;
199
* &lt;/complexType&gt;
200
* </pre>
201
*
202
* @author Sean Mullan
203
* @author JSR 105 Expert Group
204
*/
205
public interface SignatureValue extends XMLStructure {
206
/**
207
* Returns the optional <code>Id</code> attribute of this
208
* <code>SignatureValue</code>, which permits this element to be
209
* referenced from elsewhere.
210
*
211
* @return the <code>Id</code> attribute (may be <code>null</code> if
212
* not specified)
213
*/
214
String getId();
215
216
/**
217
* Returns the signature value of this <code>SignatureValue</code>.
218
*
219
* @return the signature value (may be <code>null</code> if the
220
* <code>XMLSignature</code> has not been signed yet). Each
221
* invocation of this method returns a new clone of the array to
222
* prevent subsequent modification.
223
*/
224
byte[] getValue();
225
226
/**
227
* Validates the signature value. This method performs a
228
* cryptographic validation of the signature calculated over the
229
* <code>SignedInfo</code> of the <code>XMLSignature</code>.
230
*
231
* <p>This method only validates the signature the first
232
* time it is invoked. On subsequent invocations, it returns a cached
233
* result.
234
*
235
* @return <code>true</code> if the signature was
236
* validated successfully; <code>false</code> otherwise
237
* @param validateContext the validating context
238
* @throws NullPointerException if <code>validateContext</code> is
239
* <code>null</code>
240
* @throws XMLSignatureException if an unexpected exception occurs while
241
* validating the signature
242
*/
243
boolean validate(XMLValidateContext validateContext)
244
throws XMLSignatureException;
245
}
246
}
247
248