Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/mobile
Path: blob/master/src/java.xml.crypto/share/classes/javax/xml/crypto/dsig/XMLSignature.java
41161 views
1
/*
2
* Copyright (c) 2005, 2014, 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
static final 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
List<XMLObject> getObjects();
140
141
/**
142
* Returns the optional Id of this <code>XMLSignature</code>.
143
*
144
* @return the Id (may be <code>null</code> if not specified)
145
*/
146
String getId();
147
148
/**
149
* Returns the signature value of this <code>XMLSignature</code>.
150
*
151
* @return the signature value
152
*/
153
SignatureValue getSignatureValue();
154
155
/**
156
* Signs this <code>XMLSignature</code>.
157
*
158
* <p>If this method throws an exception, this <code>XMLSignature</code> and
159
* the <code>signContext</code> parameter will be left in the state that
160
* it was in prior to the invocation.
161
*
162
* @param signContext the signing context
163
* @throws ClassCastException if the type of <code>signContext</code> is
164
* not compatible with this <code>XMLSignature</code>
165
* @throws NullPointerException if <code>signContext</code> is
166
* <code>null</code>
167
* @throws MarshalException if an exception occurs while marshalling
168
* @throws XMLSignatureException if an unexpected exception occurs while
169
* generating the signature
170
*/
171
void sign(XMLSignContext signContext) throws MarshalException,
172
XMLSignatureException;
173
174
/**
175
* Returns the result of the {@link KeySelector}, if specified, after
176
* this <code>XMLSignature</code> has been signed or validated.
177
*
178
* @return the key selector result, or <code>null</code> if a key
179
* selector has not been specified or this <code>XMLSignature</code>
180
* has not been signed or validated
181
*/
182
KeySelectorResult getKeySelectorResult();
183
184
/**
185
* A representation of the XML <code>SignatureValue</code> element as
186
* defined in the <a href="http://www.w3.org/TR/xmldsig-core/">
187
* W3C Recommendation for XML-Signature Syntax and Processing</a>.
188
* The XML Schema Definition is defined as:
189
* <pre>
190
* &lt;element name="SignatureValue" type="ds:SignatureValueType"/&gt;
191
* &lt;complexType name="SignatureValueType"&gt;
192
* &lt;simpleContent&gt;
193
* &lt;extension base="base64Binary"&gt;
194
* &lt;attribute name="Id" type="ID" use="optional"/&gt;
195
* &lt;/extension&gt;
196
* &lt;/simpleContent&gt;
197
* &lt;/complexType&gt;
198
* </pre>
199
*
200
* @author Sean Mullan
201
* @author JSR 105 Expert Group
202
*/
203
public interface SignatureValue extends XMLStructure {
204
/**
205
* Returns the optional <code>Id</code> attribute of this
206
* <code>SignatureValue</code>, which permits this element to be
207
* referenced from elsewhere.
208
*
209
* @return the <code>Id</code> attribute (may be <code>null</code> if
210
* not specified)
211
*/
212
String getId();
213
214
/**
215
* Returns the signature value of this <code>SignatureValue</code>.
216
*
217
* @return the signature value (may be <code>null</code> if the
218
* <code>XMLSignature</code> has not been signed yet). Each
219
* invocation of this method returns a new clone of the array to
220
* prevent subsequent modification.
221
*/
222
byte[] getValue();
223
224
/**
225
* Validates the signature value. This method performs a
226
* cryptographic validation of the signature calculated over the
227
* <code>SignedInfo</code> of the <code>XMLSignature</code>.
228
*
229
* <p>This method only validates the signature the first
230
* time it is invoked. On subsequent invocations, it returns a cached
231
* result.
232
*
233
* @return <code>true</code> if the signature was
234
* validated successfully; <code>false</code> otherwise
235
* @param validateContext the validating context
236
* @throws NullPointerException if <code>validateContext</code> is
237
* <code>null</code>
238
* @throws XMLSignatureException if an unexpected exception occurs while
239
* validating the signature
240
*/
241
boolean validate(XMLValidateContext validateContext)
242
throws XMLSignatureException;
243
}
244
}
245
246