Skip to content

Commit 1c0bd81

Browse files
committed
8319124: Update XML Security for Java to 3.0.3
Reviewed-by: mullan
1 parent 61d81d6 commit 1c0bd81

File tree

130 files changed

+1337
-418
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

130 files changed

+1337
-418
lines changed

src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/Init.java

+25-25
Original file line numberDiff line numberDiff line change
@@ -57,17 +57,22 @@
5757
*/
5858
public class Init {
5959

60-
/** The namespace for CONF file **/
60+
/**
61+
* The namespace for CONF file
62+
**/
6163
public static final String CONF_NS = "http://www.xmlsecurity.org/NS/#configuration";
6264

6365
private static final com.sun.org.slf4j.internal.Logger LOG =
64-
com.sun.org.slf4j.internal.LoggerFactory.getLogger(Init.class);
66+
com.sun.org.slf4j.internal.LoggerFactory.getLogger(Init.class);
6567

66-
/** Field alreadyInitialized */
68+
/**
69+
* Field alreadyInitialized
70+
*/
6771
private static boolean alreadyInitialized = false;
6872

6973
/**
7074
* Method isInitialized
75+
*
7176
* @return true if the library is already initialized.
7277
*/
7378
public static final synchronized boolean isInitialized() {
@@ -76,35 +81,28 @@ public static final synchronized boolean isInitialized() {
7681

7782
/**
7883
* Method init
79-
*
8084
*/
8185
public static synchronized void init() {
8286
if (alreadyInitialized) {
8387
return;
8488
}
89+
PrivilegedAction<InputStream> action = () -> {
90+
String cfile = System.getProperty("com.sun.org.apache.xml.internal.security.resource.config");
91+
if (cfile == null) {
92+
return null;
93+
}
94+
return getResourceAsStream(cfile, Init.class);
95+
};
8596

86-
@SuppressWarnings("removal")
87-
InputStream is = //NOPMD
88-
AccessController.doPrivileged(
89-
(PrivilegedAction<InputStream>)
90-
() -> {
91-
String cfile =
92-
System.getProperty("com.sun.org.apache.xml.internal.security.resource.config");
93-
if (cfile == null) {
94-
return null;
95-
}
96-
return getResourceAsStream(cfile, Init.class);
97-
}
98-
);
99-
if (is == null) {
100-
dynamicInit();
101-
} else {
102-
fileInit(is);
103-
try {
104-
is.close();
105-
} catch (IOException ex) {
106-
LOG.warn(ex.getMessage());
97+
try (@SuppressWarnings("removal")
98+
InputStream is = AccessController.doPrivileged(action)) {
99+
if (is == null) {
100+
dynamicInit();
101+
} else {
102+
fileInit(is);
107103
}
104+
} catch (IOException ex) {
105+
LOG.warn(ex.getMessage(), ex);
108106
}
109107

110108
alreadyInitialized = true;
@@ -412,9 +410,11 @@ private static List<URL> getResources(String resourceName, Class<?> callingClass
412410
}
413411
List<URL> ret = new ArrayList<>();
414412
Enumeration<URL> urls = new Enumeration<URL>() {
413+
@Override
415414
public boolean hasMoreElements() {
416415
return false;
417416
}
417+
@Override
418418
public URL nextElement() {
419419
return null;
420420
}

src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/algorithms/JCEMapper.java

+19-3
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,9 @@ public class JCEMapper {
4040

4141
private static Map<String, Algorithm> algorithmsMap = new ConcurrentHashMap<>();
4242

43-
private static String providerName;
43+
private static String globalProviderName;
44+
45+
private static final ThreadLocal<String> threadSpecificProviderName = new ThreadLocal<>();
4446

4547
/**
4648
* Method register
@@ -344,7 +346,10 @@ private static Algorithm getAlgorithm(String algorithmURI) {
344346
* @return the default providerId.
345347
*/
346348
public static String getProviderId() {
347-
return providerName;
349+
if (threadSpecificProviderName.get() != null) {
350+
return threadSpecificProviderName.get();
351+
}
352+
return globalProviderName;
348353
}
349354

350355
/**
@@ -355,7 +360,18 @@ public static String getProviderId() {
355360
*/
356361
public static void setProviderId(String provider) {
357362
JavaUtils.checkRegisterPermission();
358-
providerName = provider;
363+
globalProviderName = provider;
364+
}
365+
366+
/**
367+
* Sets the default Provider for this thread to obtain the security algorithms
368+
* @param threadSpecificProviderName the default providerId.
369+
* @throws SecurityException if a security manager is installed and the
370+
* caller does not have permission to register the JCE algorithm
371+
*/
372+
public static void setThreadSpecificProviderName(String threadSpecificProviderName) {
373+
JavaUtils.checkRegisterPermission();
374+
JCEMapper.threadSpecificProviderName.set(threadSpecificProviderName);
359375
}
360376

361377
/**

src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/algorithms/MessageDigestAlgorithm.java

+2
Original file line numberDiff line numberDiff line change
@@ -256,11 +256,13 @@ public void update(byte[] buf, int offset, int len) {
256256
}
257257

258258
/** {@inheritDoc} */
259+
@Override
259260
public String getBaseNamespace() {
260261
return Constants.SignatureSpecNS;
261262
}
262263

263264
/** {@inheritDoc} */
265+
@Override
264266
public String getBaseLocalName() {
265267
return Constants._TAG_DIGESTMETHOD;
266268
}

src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/algorithms/SignatureAlgorithm.java

+7-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,11 @@
3131
import java.util.Map;
3232
import java.util.concurrent.ConcurrentHashMap;
3333

34-
import com.sun.org.apache.xml.internal.security.algorithms.implementations.*;
34+
import com.sun.org.apache.xml.internal.security.algorithms.implementations.IntegrityHmac;
35+
import com.sun.org.apache.xml.internal.security.algorithms.implementations.SignatureBaseRSA;
36+
import com.sun.org.apache.xml.internal.security.algorithms.implementations.SignatureDSA;
37+
import com.sun.org.apache.xml.internal.security.algorithms.implementations.SignatureECDSA;
38+
import com.sun.org.apache.xml.internal.security.algorithms.implementations.SignatureEDDSA;
3539
import com.sun.org.apache.xml.internal.security.exceptions.AlgorithmAlreadyRegisteredException;
3640
import com.sun.org.apache.xml.internal.security.exceptions.XMLSecurityException;
3741
import com.sun.org.apache.xml.internal.security.signature.XMLSignature;
@@ -524,6 +528,7 @@ public static void registerDefaultAlgorithms() {
524528
*
525529
* @return URI of this element
526530
*/
531+
@Override
527532
public String getBaseNamespace() {
528533
return Constants.SignatureSpecNS;
529534
}
@@ -533,6 +538,7 @@ public String getBaseNamespace() {
533538
*
534539
* @return Local name
535540
*/
541+
@Override
536542
public String getBaseLocalName() {
537543
return Constants._TAG_SIGNATUREMETHOD;
538544
}

src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/algorithms/SignatureAlgorithmSpi.java

+6-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,12 @@
2222
*/
2323
package com.sun.org.apache.xml.internal.security.algorithms;
2424

25-
import java.security.*;
25+
import java.security.InvalidKeyException;
26+
import java.security.Key;
27+
import java.security.PrivateKey;
28+
import java.security.PublicKey;
29+
import java.security.SecureRandom;
30+
import java.security.Signature;
2631
import java.security.spec.AlgorithmParameterSpec;
2732

2833
import com.sun.org.apache.xml.internal.security.signature.XMLSignatureException;

src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/algorithms/implementations/ECDSAUtils.java

+6-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,12 @@
2828
import java.io.IOException;
2929
import java.math.BigInteger;
3030
import java.security.interfaces.ECPublicKey;
31-
import java.security.spec.*;
31+
import java.security.spec.ECField;
32+
import java.security.spec.ECFieldF2m;
33+
import java.security.spec.ECFieldFp;
34+
import java.security.spec.ECParameterSpec;
35+
import java.security.spec.ECPoint;
36+
import java.security.spec.EllipticCurve;
3237
import java.util.ArrayList;
3338
import java.util.List;
3439

src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/algorithms/implementations/IntegrityHmac.java

+12
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@ public IntegrityHmac(Provider provider) throws XMLSignatureException {
9090
* @param params
9191
* @throws XMLSignatureException
9292
*/
93+
@Override
9394
protected void engineSetParameter(AlgorithmParameterSpec params) throws XMLSignatureException {
9495
throw new XMLSignatureException("empty", new Object[]{"Incorrect method call"});
9596
}
@@ -102,6 +103,7 @@ protected void engineSetParameter(AlgorithmParameterSpec params) throws XMLSigna
102103
* @return true if the signature is correct
103104
* @throws XMLSignatureException
104105
*/
106+
@Override
105107
protected boolean engineVerify(byte[] signature) throws XMLSignatureException {
106108
try {
107109
if (hmacOutputLength != null && hmacOutputLength.length < getDigestLength()) {
@@ -124,6 +126,7 @@ protected boolean engineVerify(byte[] signature) throws XMLSignatureException {
124126
* @param secretKey
125127
* @throws XMLSignatureException
126128
*/
129+
@Override
127130
protected void engineInitVerify(Key secretKey) throws XMLSignatureException {
128131
if (!(secretKey instanceof SecretKey)) {
129132
String supplied = null;
@@ -150,6 +153,7 @@ protected void engineInitVerify(Key secretKey) throws XMLSignatureException {
150153
* @return the result of the {@link java.security.Signature#sign()} method
151154
* @throws XMLSignatureException
152155
*/
156+
@Override
153157
protected byte[] engineSign() throws XMLSignatureException {
154158
try {
155159
if (hmacOutputLength != null && hmacOutputLength.length < getDigestLength()) {
@@ -170,6 +174,7 @@ protected byte[] engineSign() throws XMLSignatureException {
170174
* @param secretKey
171175
* @throws XMLSignatureException
172176
*/
177+
@Override
173178
protected void engineInitSign(Key secretKey) throws XMLSignatureException {
174179
engineInitSign(secretKey, (AlgorithmParameterSpec)null);
175180
}
@@ -181,6 +186,7 @@ protected void engineInitSign(Key secretKey) throws XMLSignatureException {
181186
* @param algorithmParameterSpec
182187
* @throws XMLSignatureException
183188
*/
189+
@Override
184190
protected void engineInitSign(
185191
Key secretKey, AlgorithmParameterSpec algorithmParameterSpec
186192
) throws XMLSignatureException {
@@ -213,6 +219,7 @@ protected void engineInitSign(
213219
* @param secureRandom
214220
* @throws XMLSignatureException
215221
*/
222+
@Override
216223
protected void engineInitSign(Key secretKey, SecureRandom secureRandom)
217224
throws XMLSignatureException {
218225
throw new XMLSignatureException("algorithms.CannotUseSecureRandomOnMAC");
@@ -225,6 +232,7 @@ protected void engineInitSign(Key secretKey, SecureRandom secureRandom)
225232
* @param input
226233
* @throws XMLSignatureException
227234
*/
235+
@Override
228236
protected void engineUpdate(byte[] input) throws XMLSignatureException {
229237
try {
230238
this.macAlgorithm.update(input);
@@ -240,6 +248,7 @@ protected void engineUpdate(byte[] input) throws XMLSignatureException {
240248
* @param input
241249
* @throws XMLSignatureException
242250
*/
251+
@Override
243252
protected void engineUpdate(byte input) throws XMLSignatureException {
244253
try {
245254
this.macAlgorithm.update(input);
@@ -257,6 +266,7 @@ protected void engineUpdate(byte input) throws XMLSignatureException {
257266
* @param len
258267
* @throws XMLSignatureException
259268
*/
269+
@Override
260270
protected void engineUpdate(byte[] buf, int offset, int len) throws XMLSignatureException {
261271
try {
262272
this.macAlgorithm.update(buf, offset, len);
@@ -270,6 +280,7 @@ protected void engineUpdate(byte[] buf, int offset, int len) throws XMLSignature
270280
* {@inheritDoc}
271281
*
272282
*/
283+
@Override
273284
protected String engineGetJCEAlgorithmString() {
274285
return this.macAlgorithm.getAlgorithm();
275286
}
@@ -279,6 +290,7 @@ protected String engineGetJCEAlgorithmString() {
279290
*
280291
* {@inheritDoc}
281292
*/
293+
@Override
282294
protected String engineGetJCEProviderName() {
283295
return this.macAlgorithm.getProvider().getName();
284296
}

0 commit comments

Comments
 (0)