Merge
This commit is contained in:
commit
2e49137b38
jdk
make
com/sun/org/apache/xml
common
java
javax
org/ietf/jgss
sun/security/other
src
share/classes
com/sun
jndi/ldap
org/apache/xml/internal/security
Init.java
algorithms
c14n
encryption
AgreementMethod.javaEncryptionMethod.javaEncryptionProperties.javaEncryptionProperty.javaReference.javaReferenceList.javaXMLCipher.java
keys
signature
transforms
utils
security/auth/module
java
net
AbstractPlainDatagramSocketImpl.javaAbstractPlainSocketImpl.javaDatagramSocket.javaInMemoryCookieStore.java
security
javax
security
auth
cert
CertificateEncodingException.javaCertificateException.javaCertificateExpiredException.javaCertificateNotYetValidException.javaCertificateParsingException.javaX509Certificate.java
sasl
smartcardio
swing
sun
net/www/protocol/http
security
ec
jgss/krb5
krb5
pkcs11
validator
x509
util
solaris
windows/classes/java/net
@ -30,6 +30,8 @@
|
||||
BUILDDIR = ../../../../..
|
||||
PACKAGE = com.sun.org.apache.xml
|
||||
PRODUCT = xml
|
||||
JAVAC_MAX_WARNINGS = true
|
||||
JAVAC_WARNINGS_FATAL = true
|
||||
include $(BUILDDIR)/common/Defs.gmk
|
||||
|
||||
#
|
||||
|
@ -373,6 +373,7 @@ endif
|
||||
override LIBPOSIX4 =
|
||||
override LIBSOCKET =
|
||||
override LIBNSL =
|
||||
override LIBSCF =
|
||||
override LIBTHREAD =
|
||||
override MOOT_PRIORITIES = true
|
||||
override NO_INTERRUPTIBLE_IO = true
|
||||
|
@ -711,6 +711,9 @@ LIBSOCKET = -lsocket
|
||||
# Network Services library
|
||||
LIBNSL = -lnsl
|
||||
|
||||
# service configuration facility library
|
||||
LIBSCF = -lscf
|
||||
|
||||
# GLOBAL_KPIC: If set means all libraries are PIC, position independent code
|
||||
# EXCEPT for select compiles
|
||||
# If a .o file is compiled non-PIC then it should be forced
|
||||
|
@ -208,7 +208,7 @@ OTHER_LDLIBS += $(JVMLIB) -libpath:$(OBJDIR)/../../../fdlibm/$(OBJDIRNAME) fdlib
|
||||
-libpath:$(OBJDIR)/../../../verify/$(OBJDIRNAME) verify.lib \
|
||||
shell32.lib delayimp.lib /DELAYLOAD:shell32.dll
|
||||
else
|
||||
OTHER_LDLIBS += $(JVMLIB) -lverify $(LIBSOCKET) $(LIBNSL) -ldl \
|
||||
OTHER_LDLIBS += $(JVMLIB) -lverify $(LIBSOCKET) $(LIBNSL) $(LIBSCF) -ldl \
|
||||
-L$(OBJDIR)/../../../fdlibm/$(OBJDIRNAME) -lfdlibm.$(ARCH)
|
||||
endif
|
||||
|
||||
|
@ -26,8 +26,8 @@
|
||||
BUILDDIR = ../..
|
||||
PACKAGE = java.security
|
||||
PRODUCT = sun
|
||||
JAVAC_MAX_WARNINGS = false
|
||||
JAVAC_LINT_OPTIONS = -Xlint:all,-deprecation
|
||||
JAVAC_MAX_WARNINGS = true
|
||||
JAVAC_LINT_OPTIONS = -Xlint:all
|
||||
JAVAC_WARNINGS_FATAL = true
|
||||
include $(BUILDDIR)/common/Defs.gmk
|
||||
|
||||
|
@ -30,7 +30,7 @@
|
||||
BUILDDIR = ..
|
||||
include $(BUILDDIR)/common/Defs.gmk
|
||||
|
||||
SUBDIRS = others
|
||||
SUBDIRS = others security
|
||||
|
||||
SUBDIRS_management = management
|
||||
|
||||
|
@ -38,10 +38,6 @@ AUTO_FILES_JAVA_DIRS = \
|
||||
com/sun/naming/internal \
|
||||
javax/net \
|
||||
javax/script \
|
||||
javax/security/auth \
|
||||
javax/security/cert \
|
||||
javax/security/sasl \
|
||||
javax/smartcardio \
|
||||
javax/tools \
|
||||
javax/xml
|
||||
|
||||
|
49
jdk/make/javax/security/Makefile
Normal file
49
jdk/make/javax/security/Makefile
Normal file
@ -0,0 +1,49 @@
|
||||
#
|
||||
# Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
# under the terms of the GNU General Public License version 2 only, as
|
||||
# published by the Free Software Foundation. Oracle designates this
|
||||
# particular file as subject to the "Classpath" exception as provided
|
||||
# by Oracle in the LICENSE file that accompanied this code.
|
||||
#
|
||||
# This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
# version 2 for more details (a copy is included in the LICENSE file that
|
||||
# accompanied this code).
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License version
|
||||
# 2 along with this work; if not, write to the Free Software Foundation,
|
||||
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
# or visit www.oracle.com if you need additional information or have any
|
||||
# questions.
|
||||
#
|
||||
|
||||
#
|
||||
# Makefile for building javax (security classes)
|
||||
#
|
||||
|
||||
BUILDDIR = ../..
|
||||
JAVAC_MAX_WARNINGS = true
|
||||
JAVAC_WARNINGS_FATAL = true
|
||||
|
||||
include $(BUILDDIR)/common/Defs.gmk
|
||||
|
||||
#
|
||||
# Files to compile
|
||||
#
|
||||
AUTO_FILES_JAVA_DIRS = \
|
||||
javax/security/auth \
|
||||
javax/security/cert \
|
||||
javax/security/sasl \
|
||||
javax/smartcardio
|
||||
|
||||
#
|
||||
# Rules
|
||||
#
|
||||
include $(BUILDDIR)/common/Classes.gmk
|
||||
|
@ -26,6 +26,8 @@
|
||||
BUILDDIR = ../../..
|
||||
PACKAGE = org.ietf.jgss
|
||||
PRODUCT = sun
|
||||
JAVAC_MAX_WARNINGS = true
|
||||
JAVAC_WARNINGS_FATAL = true
|
||||
include $(BUILDDIR)/common/Defs.gmk
|
||||
|
||||
#
|
||||
|
@ -26,7 +26,7 @@
|
||||
BUILDDIR = ../../..
|
||||
PACKAGE = sun.security.other
|
||||
PRODUCT = sun
|
||||
JAVAC_MAX_WARNINGS=false
|
||||
JAVAC_MAX_WARNINGS=true
|
||||
JAVAC_LINT_OPTIONS=-Xlint:all,-deprecation
|
||||
JAVAC_WARNINGS_FATAL=true
|
||||
include $(BUILDDIR)/common/Defs.gmk
|
||||
|
@ -32,6 +32,7 @@ import java.io.IOException;
|
||||
import java.io.OutputStream;
|
||||
import java.io.InputStream;
|
||||
import java.net.Socket;
|
||||
import javax.net.ssl.SSLSocket;
|
||||
|
||||
import javax.naming.CommunicationException;
|
||||
import javax.naming.ServiceUnavailableException;
|
||||
@ -361,6 +362,19 @@ public final class Connection implements Runnable {
|
||||
}
|
||||
}
|
||||
|
||||
// For LDAP connect timeouts on LDAP over SSL connections must treat
|
||||
// the SSL handshake following socket connection as part of the timeout.
|
||||
// So explicitly set a socket read timeout, trigger the SSL handshake,
|
||||
// then reset the timeout.
|
||||
if (connectTimeout > 0 && socket instanceof SSLSocket) {
|
||||
SSLSocket sslSocket = (SSLSocket) socket;
|
||||
int socketTimeout = sslSocket.getSoTimeout();
|
||||
|
||||
sslSocket.setSoTimeout(connectTimeout); // reuse full timeout value
|
||||
sslSocket.startHandshake();
|
||||
sslSocket.setSoTimeout(socketTimeout);
|
||||
}
|
||||
|
||||
return socket;
|
||||
}
|
||||
|
||||
|
@ -115,9 +115,9 @@ public final class Init {
|
||||
// provider mechanism instead if implementing their own
|
||||
// transform or canonicalization algorithms.
|
||||
// InputStream is = Class.forName("com.sun.org.apache.xml.internal.security.Init").getResourceAsStream("resource/config.xml");
|
||||
InputStream is = (InputStream) AccessController.doPrivileged(
|
||||
new PrivilegedAction() {
|
||||
public Object run() {
|
||||
InputStream is = AccessController.doPrivileged(
|
||||
new PrivilegedAction<InputStream>() {
|
||||
public InputStream run() {
|
||||
// String cfile = System.getProperty
|
||||
// ("com.sun.org.apache.xml.internal.security.resource.config");
|
||||
return getClass().getResourceAsStream
|
||||
|
@ -45,9 +45,9 @@ public class JCEMapper {
|
||||
|
||||
|
||||
|
||||
private static Map uriToJCEName;
|
||||
private static Map<String, String> uriToJCEName;
|
||||
|
||||
private static Map algorithmsMap;
|
||||
private static Map<String, Algorithm> algorithmsMap;
|
||||
|
||||
private static String providerName = null;
|
||||
/**
|
||||
@ -63,8 +63,8 @@ public class JCEMapper {
|
||||
|
||||
static void loadAlgorithms( Element algorithmsEl) {
|
||||
Element[] algorithms = XMLUtils.selectNodes(algorithmsEl.getFirstChild(),Init.CONF_NS,"Algorithm");
|
||||
uriToJCEName = new HashMap( algorithms.length * 2);
|
||||
algorithmsMap = new HashMap( algorithms.length * 2);
|
||||
uriToJCEName = new HashMap<String, String>( algorithms.length * 2);
|
||||
algorithmsMap = new HashMap<String, Algorithm>( algorithms.length * 2);
|
||||
for (int i = 0 ;i < algorithms.length ;i ++) {
|
||||
Element el = algorithms[i];
|
||||
String id = el.getAttribute("URI");
|
||||
@ -76,7 +76,7 @@ public class JCEMapper {
|
||||
}
|
||||
|
||||
static Algorithm getAlgorithmMapping(String algoURI) {
|
||||
return ((Algorithm)algorithmsMap.get(algoURI));
|
||||
return algorithmsMap.get(algoURI);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -90,7 +90,7 @@ public class JCEMapper {
|
||||
if (log.isLoggable(java.util.logging.Level.FINE))
|
||||
log.log(java.util.logging.Level.FINE, "Request for URI " + AlgorithmURI);
|
||||
|
||||
String jceName = (String) uriToJCEName.get(AlgorithmURI);
|
||||
String jceName = uriToJCEName.get(AlgorithmURI);
|
||||
return jceName;
|
||||
}
|
||||
|
||||
@ -106,7 +106,7 @@ public class JCEMapper {
|
||||
if (log.isLoggable(java.util.logging.Level.FINE))
|
||||
log.log(java.util.logging.Level.FINE, "Request for URI " + AlgorithmURI);
|
||||
|
||||
return ((Algorithm) algorithmsMap.get(AlgorithmURI)).algorithmClass;
|
||||
return (algorithmsMap.get(AlgorithmURI)).algorithmClass;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -116,7 +116,7 @@ public class JCEMapper {
|
||||
* @return The length of the key used in the alogrithm
|
||||
*/
|
||||
public static int getKeyLengthFromURI(String AlgorithmURI) {
|
||||
return Integer.parseInt(((Algorithm) algorithmsMap.get(AlgorithmURI)).keyLength);
|
||||
return Integer.parseInt((algorithmsMap.get(AlgorithmURI)).keyLength);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -128,7 +128,7 @@ public class JCEMapper {
|
||||
*/
|
||||
public static String getJCEKeyAlgorithmFromURI(String AlgorithmURI) {
|
||||
|
||||
return ((Algorithm) algorithmsMap.get(AlgorithmURI)).requiredKey;
|
||||
return (algorithmsMap.get(AlgorithmURI)).requiredKey;
|
||||
|
||||
}
|
||||
|
||||
|
@ -71,9 +71,10 @@ public class MessageDigestAlgorithm extends Algorithm {
|
||||
this.algorithm = messageDigest;
|
||||
}
|
||||
|
||||
static ThreadLocal instances=new ThreadLocal() {
|
||||
protected Object initialValue() {
|
||||
return new HashMap();
|
||||
static ThreadLocal<Map<String, MessageDigest>> instances=new
|
||||
ThreadLocal<Map<String, MessageDigest>>() {
|
||||
protected Map<String, MessageDigest> initialValue() {
|
||||
return new HashMap<String, MessageDigest>();
|
||||
};
|
||||
};
|
||||
|
||||
@ -92,7 +93,7 @@ public class MessageDigestAlgorithm extends Algorithm {
|
||||
}
|
||||
|
||||
private static MessageDigest getDigestInstance(String algorithmURI) throws XMLSignatureException {
|
||||
MessageDigest result=(MessageDigest) ((Map)instances.get()).get(algorithmURI);
|
||||
MessageDigest result= instances.get().get(algorithmURI);
|
||||
if (result!=null)
|
||||
return result;
|
||||
String algorithmID = JCEMapper.translateURItoJCEID(algorithmURI);
|
||||
@ -121,7 +122,7 @@ private static MessageDigest getDigestInstance(String algorithmURI) throws XMLSi
|
||||
|
||||
throw new XMLSignatureException("algorithms.NoSuchAlgorithm", exArgs);
|
||||
}
|
||||
((Map)instances.get()).put(algorithmURI, md);
|
||||
instances.get().put(algorithmURI, md);
|
||||
return md;
|
||||
}
|
||||
|
||||
|
53
jdk/src/share/classes/com/sun/org/apache/xml/internal/security/algorithms/SignatureAlgorithm.java
53
jdk/src/share/classes/com/sun/org/apache/xml/internal/security/algorithms/SignatureAlgorithm.java
@ -51,28 +51,28 @@ public class SignatureAlgorithm extends Algorithm {
|
||||
static boolean _alreadyInitialized = false;
|
||||
|
||||
/** All available algorithm classes are registered here */
|
||||
static HashMap _algorithmHash = null;
|
||||
static Map<String, Class<? extends SignatureAlgorithmSpi>> _algorithmHash = null;
|
||||
|
||||
static ThreadLocal instancesSigning=new ThreadLocal() {
|
||||
protected Object initialValue() {
|
||||
return new HashMap();
|
||||
static ThreadLocal<Map<String, SignatureAlgorithmSpi>> instancesSigning=new ThreadLocal<Map<String, SignatureAlgorithmSpi>>() {
|
||||
protected Map<String, SignatureAlgorithmSpi> initialValue() {
|
||||
return new HashMap<String, SignatureAlgorithmSpi>();
|
||||
};
|
||||
};
|
||||
|
||||
static ThreadLocal instancesVerify=new ThreadLocal() {
|
||||
protected Object initialValue() {
|
||||
return new HashMap();
|
||||
static ThreadLocal<Map<String, SignatureAlgorithmSpi>> instancesVerify=new ThreadLocal<Map<String, SignatureAlgorithmSpi>>() {
|
||||
protected Map<String, SignatureAlgorithmSpi> initialValue() {
|
||||
return new HashMap<String, SignatureAlgorithmSpi>();
|
||||
};
|
||||
};
|
||||
|
||||
static ThreadLocal keysSigning=new ThreadLocal() {
|
||||
protected Object initialValue() {
|
||||
return new HashMap();
|
||||
static ThreadLocal<Map<String, Key>> keysSigning=new ThreadLocal<Map<String, Key>>() {
|
||||
protected Map<String, Key> initialValue() {
|
||||
return new HashMap<String, Key>();
|
||||
};
|
||||
};
|
||||
static ThreadLocal keysVerify=new ThreadLocal() {
|
||||
protected Object initialValue() {
|
||||
return new HashMap();
|
||||
static ThreadLocal<Map<String, Key>> keysVerify=new ThreadLocal<Map<String, Key>>() {
|
||||
protected Map<String, Key> initialValue() {
|
||||
return new HashMap<String, Key>();
|
||||
};
|
||||
};
|
||||
// boolean isForSigning=false;
|
||||
@ -105,34 +105,34 @@ public class SignatureAlgorithm extends Algorithm {
|
||||
.engineGetContextFromElement(this._constructionElement);
|
||||
}
|
||||
private static SignatureAlgorithmSpi getInstanceForSigning(String algorithmURI) throws XMLSignatureException {
|
||||
SignatureAlgorithmSpi result=(SignatureAlgorithmSpi) ((Map)instancesSigning.get()).get(algorithmURI);
|
||||
SignatureAlgorithmSpi result= instancesSigning.get().get(algorithmURI);
|
||||
if (result!=null) {
|
||||
result.reset();
|
||||
return result;
|
||||
}
|
||||
result=buildSigner(algorithmURI, result);
|
||||
((Map)instancesSigning.get()).put(algorithmURI,result);
|
||||
instancesSigning.get().put(algorithmURI,result);
|
||||
return result;
|
||||
}
|
||||
private static SignatureAlgorithmSpi getInstanceForVerify(String algorithmURI) throws XMLSignatureException {
|
||||
SignatureAlgorithmSpi result=(SignatureAlgorithmSpi) ((Map)instancesVerify.get()).get(algorithmURI);
|
||||
SignatureAlgorithmSpi result= instancesVerify.get().get(algorithmURI);
|
||||
if (result!=null) {
|
||||
result.reset();
|
||||
return result;
|
||||
}
|
||||
result=buildSigner(algorithmURI, result);
|
||||
((Map)instancesVerify.get()).put(algorithmURI,result);
|
||||
instancesVerify.get().put(algorithmURI,result);
|
||||
return result;
|
||||
}
|
||||
|
||||
private static SignatureAlgorithmSpi buildSigner(String algorithmURI, SignatureAlgorithmSpi result) throws XMLSignatureException {
|
||||
try {
|
||||
Class implementingClass =
|
||||
Class<? extends SignatureAlgorithmSpi> implementingClass =
|
||||
SignatureAlgorithm.getImplementingClass(algorithmURI);
|
||||
if (log.isLoggable(java.util.logging.Level.FINE))
|
||||
log.log(java.util.logging.Level.FINE, "Create URI \"" + algorithmURI + "\" class \""
|
||||
+ implementingClass + "\"");
|
||||
result=(SignatureAlgorithmSpi) implementingClass.newInstance();
|
||||
result= implementingClass.newInstance();
|
||||
return result;
|
||||
} catch (IllegalAccessException ex) {
|
||||
Object exArgs[] = { algorithmURI, ex.getMessage() };
|
||||
@ -270,7 +270,7 @@ public class SignatureAlgorithm extends Algorithm {
|
||||
*/
|
||||
public void initSign(Key signingKey) throws XMLSignatureException {
|
||||
initializeAlgorithm(true);
|
||||
Map map=(Map)keysSigning.get();
|
||||
Map<String, Key> map=keysSigning.get();
|
||||
if (map.get(this.algorithmURI)==signingKey) {
|
||||
return;
|
||||
}
|
||||
@ -329,7 +329,7 @@ public class SignatureAlgorithm extends Algorithm {
|
||||
*/
|
||||
public void initVerify(Key verificationKey) throws XMLSignatureException {
|
||||
initializeAlgorithm(false);
|
||||
Map map=(Map)keysVerify.get();
|
||||
Map<String, Key> map=keysVerify.get();
|
||||
if (map.get(this.algorithmURI)==verificationKey) {
|
||||
return;
|
||||
}
|
||||
@ -375,7 +375,7 @@ public class SignatureAlgorithm extends Algorithm {
|
||||
log.log(java.util.logging.Level.FINE, "Init() called");
|
||||
|
||||
if (!SignatureAlgorithm._alreadyInitialized) {
|
||||
SignatureAlgorithm._algorithmHash = new HashMap(10);
|
||||
SignatureAlgorithm._algorithmHash = new HashMap<String, Class<? extends SignatureAlgorithmSpi>>(10);
|
||||
SignatureAlgorithm._alreadyInitialized = true;
|
||||
}
|
||||
}
|
||||
@ -388,6 +388,7 @@ public class SignatureAlgorithm extends Algorithm {
|
||||
* @throws AlgorithmAlreadyRegisteredException if specified algorithmURI is already registered
|
||||
* @throws XMLSignatureException
|
||||
*/
|
||||
@SuppressWarnings("unchecked")
|
||||
public static void register(String algorithmURI, String implementingClass)
|
||||
throws AlgorithmAlreadyRegisteredException,XMLSignatureException {
|
||||
|
||||
@ -396,7 +397,7 @@ public class SignatureAlgorithm extends Algorithm {
|
||||
log.log(java.util.logging.Level.FINE, "Try to register " + algorithmURI + " " + implementingClass);
|
||||
|
||||
// are we already registered?
|
||||
Class registeredClassClass =
|
||||
Class<? extends SignatureAlgorithmSpi> registeredClassClass =
|
||||
SignatureAlgorithm.getImplementingClass(algorithmURI);
|
||||
if (registeredClassClass!=null) {
|
||||
String registeredClass = registeredClassClass.getName();
|
||||
@ -409,7 +410,7 @@ public class SignatureAlgorithm extends Algorithm {
|
||||
}
|
||||
}
|
||||
try {
|
||||
SignatureAlgorithm._algorithmHash.put(algorithmURI, Class.forName(implementingClass));
|
||||
SignatureAlgorithm._algorithmHash.put(algorithmURI, (Class <? extends SignatureAlgorithmSpi>)Class.forName(implementingClass));
|
||||
} catch (ClassNotFoundException ex) {
|
||||
Object exArgs[] = { algorithmURI, ex.getMessage() };
|
||||
|
||||
@ -431,13 +432,13 @@ public class SignatureAlgorithm extends Algorithm {
|
||||
* @param URI
|
||||
* @return the class that implements the URI
|
||||
*/
|
||||
private static Class getImplementingClass(String URI) {
|
||||
private static Class<? extends SignatureAlgorithmSpi> getImplementingClass(String URI) {
|
||||
|
||||
if (SignatureAlgorithm._algorithmHash == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return (Class) SignatureAlgorithm._algorithmHash.get(URI);
|
||||
return SignatureAlgorithm._algorithmHash.get(URI);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -28,6 +28,7 @@ import java.util.Set;
|
||||
|
||||
import javax.xml.parsers.DocumentBuilder;
|
||||
import javax.xml.parsers.DocumentBuilderFactory;
|
||||
import javax.xml.xpath.XPath;
|
||||
|
||||
import com.sun.org.apache.xml.internal.security.exceptions.AlgorithmAlreadyRegisteredException;
|
||||
import org.w3c.dom.Document;
|
||||
@ -83,7 +84,7 @@ public class Canonicalizer {
|
||||
ALGO_ID_C14N11_OMIT_COMMENTS + "#WithComments";
|
||||
|
||||
static boolean _alreadyInitialized = false;
|
||||
static Map _canonicalizerHash = null;
|
||||
static Map<String,Class<? extends CanonicalizerSpi>> _canonicalizerHash = null;
|
||||
|
||||
protected CanonicalizerSpi canonicalizerSpi = null;
|
||||
|
||||
@ -94,7 +95,7 @@ public class Canonicalizer {
|
||||
public static void init() {
|
||||
|
||||
if (!Canonicalizer._alreadyInitialized) {
|
||||
Canonicalizer._canonicalizerHash = new HashMap(10);
|
||||
Canonicalizer._canonicalizerHash = new HashMap<String, Class<? extends CanonicalizerSpi>>(10);
|
||||
Canonicalizer._alreadyInitialized = true;
|
||||
}
|
||||
}
|
||||
@ -109,10 +110,11 @@ public class Canonicalizer {
|
||||
throws InvalidCanonicalizerException {
|
||||
|
||||
try {
|
||||
Class implementingClass = getImplementingClass(algorithmURI);
|
||||
Class<? extends CanonicalizerSpi> implementingClass =
|
||||
getImplementingClass(algorithmURI);
|
||||
|
||||
this.canonicalizerSpi =
|
||||
(CanonicalizerSpi) implementingClass.newInstance();
|
||||
implementingClass.newInstance();
|
||||
this.canonicalizerSpi.reset=true;
|
||||
} catch (Exception e) {
|
||||
Object exArgs[] = { algorithmURI };
|
||||
@ -144,11 +146,12 @@ public class Canonicalizer {
|
||||
* @param implementingClass
|
||||
* @throws AlgorithmAlreadyRegisteredException
|
||||
*/
|
||||
@SuppressWarnings("unchecked")
|
||||
public static void register(String algorithmURI, String implementingClass)
|
||||
throws AlgorithmAlreadyRegisteredException {
|
||||
|
||||
// check whether URI is already registered
|
||||
Class registeredClass = getImplementingClass(algorithmURI);
|
||||
Class<? extends CanonicalizerSpi> registeredClass = getImplementingClass(algorithmURI);
|
||||
|
||||
if (registeredClass != null) {
|
||||
Object exArgs[] = { algorithmURI, registeredClass };
|
||||
@ -158,7 +161,7 @@ public class Canonicalizer {
|
||||
}
|
||||
|
||||
try {
|
||||
_canonicalizerHash.put(algorithmURI, Class.forName(implementingClass));
|
||||
_canonicalizerHash.put(algorithmURI, (Class<? extends CanonicalizerSpi>) Class.forName(implementingClass));
|
||||
} catch (ClassNotFoundException e) {
|
||||
throw new RuntimeException("c14n class not found");
|
||||
}
|
||||
@ -304,7 +307,7 @@ public class Canonicalizer {
|
||||
* @return the result of the c14n.
|
||||
* @throws CanonicalizationException
|
||||
*/
|
||||
public byte[] canonicalizeXPathNodeSet(Set xpathNodeSet)
|
||||
public byte[] canonicalizeXPathNodeSet(Set<Node> xpathNodeSet)
|
||||
throws CanonicalizationException {
|
||||
return this.canonicalizerSpi.engineCanonicalizeXPathNodeSet(xpathNodeSet);
|
||||
}
|
||||
@ -317,7 +320,7 @@ public class Canonicalizer {
|
||||
* @return the result of the c14n.
|
||||
* @throws CanonicalizationException
|
||||
*/
|
||||
public byte[] canonicalizeXPathNodeSet(Set xpathNodeSet,
|
||||
public byte[] canonicalizeXPathNodeSet(Set<Node> xpathNodeSet,
|
||||
String inclusiveNamespaces) throws CanonicalizationException {
|
||||
return this.canonicalizerSpi.engineCanonicalizeXPathNodeSet(xpathNodeSet,
|
||||
inclusiveNamespaces);
|
||||
@ -347,8 +350,8 @@ public class Canonicalizer {
|
||||
* @param URI
|
||||
* @return the name of the class that implements the given URI
|
||||
*/
|
||||
private static Class getImplementingClass(String URI) {
|
||||
return (Class) _canonicalizerHash.get(URI);
|
||||
private static Class<? extends CanonicalizerSpi> getImplementingClass(String URI) {
|
||||
return _canonicalizerHash.get(URI);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -28,6 +28,7 @@ import java.util.Set;
|
||||
|
||||
import javax.xml.parsers.DocumentBuilder;
|
||||
import javax.xml.parsers.DocumentBuilderFactory;
|
||||
import javax.xml.xpath.XPath;
|
||||
|
||||
import com.sun.org.apache.xml.internal.security.utils.XMLUtils;
|
||||
import org.w3c.dom.Document;
|
||||
@ -151,7 +152,7 @@ public abstract class CanonicalizerSpi {
|
||||
* @return the c14n bytes
|
||||
* @throws CanonicalizationException
|
||||
*/
|
||||
public abstract byte[] engineCanonicalizeXPathNodeSet(Set xpathNodeSet)
|
||||
public abstract byte[] engineCanonicalizeXPathNodeSet(Set<Node> xpathNodeSet)
|
||||
throws CanonicalizationException;
|
||||
|
||||
/**
|
||||
@ -162,7 +163,7 @@ public abstract class CanonicalizerSpi {
|
||||
* @return the c14n bytes
|
||||
* @throws CanonicalizationException
|
||||
*/
|
||||
public abstract byte[] engineCanonicalizeXPathNodeSet(Set xpathNodeSet, String inclusiveNamespaces)
|
||||
public abstract byte[] engineCanonicalizeXPathNodeSet(Set<Node> xpathNodeSet, String inclusiveNamespaces)
|
||||
throws CanonicalizationException;
|
||||
|
||||
/**
|
||||
|
@ -41,7 +41,7 @@ import java.util.Comparator;
|
||||
*
|
||||
* @author Christian Geuer-Pollmann
|
||||
*/
|
||||
public class AttrCompare implements Comparator, Serializable {
|
||||
public class AttrCompare implements Comparator<Attr>, Serializable {
|
||||
|
||||
private final static long serialVersionUID = -7113259629930576230L;
|
||||
private final static int ATTR0_BEFORE_ATTR1 = -1;
|
||||
@ -62,16 +62,14 @@ public class AttrCompare implements Comparator, Serializable {
|
||||
* key (an empty namespace URI is lexicographically least).
|
||||
* </UL>
|
||||
*
|
||||
* @param obj0 casted Attr
|
||||
* @param obj1 casted Attr
|
||||
* @param attr0
|
||||
* @param attr1
|
||||
* @return returns a negative integer, zero, or a positive integer as
|
||||
* obj0 is less than, equal to, or greater than obj1
|
||||
*
|
||||
*/
|
||||
public int compare(Object obj0, Object obj1) {
|
||||
public int compare(Attr attr0, Attr attr1) {
|
||||
|
||||
Attr attr0 = (Attr) obj0;
|
||||
Attr attr1 = (Attr) obj1;
|
||||
String namespaceURI0 = attr0.getNamespaceURI();
|
||||
String namespaceURI1 = attr1.getNamespaceURI();
|
||||
|
||||
|
@ -25,6 +25,7 @@ import java.net.URI;
|
||||
import java.net.URISyntaxException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Comparator;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
@ -33,6 +34,7 @@ import java.util.Set;
|
||||
import java.util.SortedSet;
|
||||
import java.util.TreeSet;
|
||||
import javax.xml.parsers.ParserConfigurationException;
|
||||
import javax.xml.xpath.XPath;
|
||||
import org.w3c.dom.Attr;
|
||||
import org.w3c.dom.Document;
|
||||
import org.w3c.dom.Element;
|
||||
@ -59,7 +61,7 @@ import com.sun.org.apache.xml.internal.security.utils.XMLUtils;
|
||||
*/
|
||||
public abstract class Canonicalizer11 extends CanonicalizerBase {
|
||||
boolean firstCall = true;
|
||||
final SortedSet result = new TreeSet(COMPARE);
|
||||
final SortedSet<Attr> result = new TreeSet<Attr>(COMPARE);
|
||||
static final String XMLNS_URI = Constants.NamespaceSpecNS;
|
||||
static final String XML_LANG_URI = Constants.XML_LANG_SPACE_SpecNS;
|
||||
|
||||
@ -72,9 +74,9 @@ public abstract class Canonicalizer11 extends CanonicalizerBase {
|
||||
static class XmlsStackElement {
|
||||
int level;
|
||||
boolean rendered = false;
|
||||
List nodes = new ArrayList();
|
||||
List<Attr> nodes = new ArrayList<Attr>();
|
||||
};
|
||||
List levels = new ArrayList();
|
||||
List<XmlsStackElement> levels = new ArrayList<XmlsStackElement>();
|
||||
void push(int level) {
|
||||
currentLevel = level;
|
||||
if (currentLevel == -1)
|
||||
@ -86,7 +88,7 @@ public abstract class Canonicalizer11 extends CanonicalizerBase {
|
||||
lastlevel = 0;
|
||||
return;
|
||||
}
|
||||
lastlevel=((XmlsStackElement)levels.get(levels.size()-1)).level;
|
||||
lastlevel=(levels.get(levels.size()-1)).level;
|
||||
}
|
||||
}
|
||||
void addXmlnsAttr(Attr n) {
|
||||
@ -98,7 +100,7 @@ public abstract class Canonicalizer11 extends CanonicalizerBase {
|
||||
}
|
||||
cur.nodes.add(n);
|
||||
}
|
||||
void getXmlnsAttr(Collection col) {
|
||||
void getXmlnsAttr(Collection<Attr> col) {
|
||||
if (cur == null) {
|
||||
cur = new XmlsStackElement();
|
||||
cur.level = currentLevel;
|
||||
@ -111,7 +113,7 @@ public abstract class Canonicalizer11 extends CanonicalizerBase {
|
||||
if (size == -1) {
|
||||
parentRendered = true;
|
||||
} else {
|
||||
e = (XmlsStackElement) levels.get(size);
|
||||
e = levels.get(size);
|
||||
if (e.rendered && e.level+1 == currentLevel)
|
||||
parentRendered = true;
|
||||
}
|
||||
@ -121,17 +123,17 @@ public abstract class Canonicalizer11 extends CanonicalizerBase {
|
||||
return;
|
||||
}
|
||||
|
||||
Map loa = new HashMap();
|
||||
List baseAttrs = new ArrayList();
|
||||
Map<String, Attr> loa = new HashMap<String, Attr>();
|
||||
List<Attr> baseAttrs = new ArrayList<Attr>();
|
||||
boolean successiveOmitted = true;
|
||||
for (;size>=0;size--) {
|
||||
e = (XmlsStackElement) levels.get(size);
|
||||
e = levels.get(size);
|
||||
if (e.rendered) {
|
||||
successiveOmitted = false;
|
||||
}
|
||||
Iterator it = e.nodes.iterator();
|
||||
Iterator<Attr> it = e.nodes.iterator();
|
||||
while (it.hasNext() && successiveOmitted) {
|
||||
Attr n = (Attr) it.next();
|
||||
Attr n = it.next();
|
||||
if (n.getLocalName().equals("base")) {
|
||||
if (!e.rendered) {
|
||||
baseAttrs.add(n);
|
||||
@ -141,11 +143,11 @@ public abstract class Canonicalizer11 extends CanonicalizerBase {
|
||||
}
|
||||
}
|
||||
if (!baseAttrs.isEmpty()) {
|
||||
Iterator it = cur.nodes.iterator();
|
||||
Iterator<Attr> it = cur.nodes.iterator();
|
||||
String base = null;
|
||||
Attr baseAttr = null;
|
||||
while (it.hasNext()) {
|
||||
Attr n = (Attr) it.next();
|
||||
Attr n = it.next();
|
||||
if (n.getLocalName().equals("base")) {
|
||||
base = n.getValue();
|
||||
baseAttr = n;
|
||||
@ -154,7 +156,7 @@ public abstract class Canonicalizer11 extends CanonicalizerBase {
|
||||
}
|
||||
it = baseAttrs.iterator();
|
||||
while (it.hasNext()) {
|
||||
Attr n = (Attr) it.next();
|
||||
Attr n = it.next();
|
||||
if (base == null) {
|
||||
base = n.getValue();
|
||||
baseAttr = n;
|
||||
@ -202,13 +204,13 @@ public abstract class Canonicalizer11 extends CanonicalizerBase {
|
||||
* @return the Attr[]s to be outputted
|
||||
* @throws CanonicalizationException
|
||||
*/
|
||||
Iterator handleAttributesSubtree(Element E, NameSpaceSymbTable ns)
|
||||
Iterator<Attr> handleAttributesSubtree(Element E, NameSpaceSymbTable ns)
|
||||
throws CanonicalizationException {
|
||||
if (!E.hasAttributes() && !firstCall) {
|
||||
return null;
|
||||
}
|
||||
// result will contain the attrs which have to be outputted
|
||||
final SortedSet result = this.result;
|
||||
final SortedSet<Attr> result = this.result;
|
||||
result.clear();
|
||||
NamedNodeMap attrs = E.getAttributes();
|
||||
int attrsLength = attrs.getLength();
|
||||
@ -236,7 +238,7 @@ public abstract class Canonicalizer11 extends CanonicalizerBase {
|
||||
|
||||
if (n != null) {
|
||||
// Render the ns definition
|
||||
result.add(n);
|
||||
result.add((Attr)n);
|
||||
if (C14nHelper.namespaceIsRelative(N)) {
|
||||
Object exArgs[] = {E.getTagName(), NName, N.getNodeValue()};
|
||||
throw new CanonicalizationException(
|
||||
@ -251,13 +253,15 @@ public abstract class Canonicalizer11 extends CanonicalizerBase {
|
||||
// to the output.
|
||||
ns.getUnrenderedNodes(result);
|
||||
// output the attributes in the xml namespace.
|
||||
xmlattrStack.getXmlnsAttr(result);
|
||||
xmlattrStack.getXmlnsAttr(getSortedSetAsCollection(result));
|
||||
firstCall = false;
|
||||
}
|
||||
|
||||
return result.iterator();
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Returns the Attr[]s to be outputted for the given element.
|
||||
* <br>
|
||||
@ -271,7 +275,7 @@ public abstract class Canonicalizer11 extends CanonicalizerBase {
|
||||
* @return the Attr[]s to be outputted
|
||||
* @throws CanonicalizationException
|
||||
*/
|
||||
Iterator handleAttributes(Element E, NameSpaceSymbTable ns)
|
||||
Iterator<Attr> handleAttributes(Element E, NameSpaceSymbTable ns)
|
||||
throws CanonicalizationException {
|
||||
// result will contain the attrs which have to be output
|
||||
xmlattrStack.push(ns.getLevel());
|
||||
@ -283,11 +287,11 @@ public abstract class Canonicalizer11 extends CanonicalizerBase {
|
||||
attrsLength = attrs.getLength();
|
||||
}
|
||||
|
||||
SortedSet result = this.result;
|
||||
SortedSet<Attr> result = this.result;
|
||||
result.clear();
|
||||
|
||||
for (int i = 0; i < attrsLength; i++) {
|
||||
Attr N = (Attr) attrs.item(i);
|
||||
Attr N = (Attr)attrs.item(i);
|
||||
String NUri = N.getNamespaceURI();
|
||||
|
||||
if (XMLNS_URI != NUri) {
|
||||
@ -332,7 +336,7 @@ public abstract class Canonicalizer11 extends CanonicalizerBase {
|
||||
// (NName, NValue, N, isRealVisible);
|
||||
Node n = ns.addMappingAndRender(NName, NValue, N);
|
||||
if (n != null) {
|
||||
result.add(n);
|
||||
result.add((Attr)n);
|
||||
if (C14nHelper.namespaceIsRelative(N)) {
|
||||
Object exArgs[] =
|
||||
{ E.getTagName(), NName, N.getNodeValue() };
|
||||
@ -362,7 +366,7 @@ public abstract class Canonicalizer11 extends CanonicalizerBase {
|
||||
}
|
||||
// output the xmlns def if needed.
|
||||
if (n != null) {
|
||||
result.add(n);
|
||||
result.add((Attr)n);
|
||||
}
|
||||
// Float all xml:* attributes of the unselected parent elements to
|
||||
// this one. addXmlAttributes(E,result);
|
||||
@ -381,7 +385,7 @@ public abstract class Canonicalizer11 extends CanonicalizerBase {
|
||||
* @return none it always fails
|
||||
* @throws CanonicalizationException always
|
||||
*/
|
||||
public byte[] engineCanonicalizeXPathNodeSet(Set xpathNodeSet,
|
||||
public byte[] engineCanonicalizeXPathNodeSet(Set<Node> xpathNodeSet,
|
||||
String inclusiveNamespaces) throws CanonicalizationException {
|
||||
throw new CanonicalizationException(
|
||||
"c14n.Canonicalizer.UnsupportedOperation");
|
||||
|
@ -57,7 +57,7 @@ import org.xml.sax.SAXException;
|
||||
*/
|
||||
public abstract class Canonicalizer20010315 extends CanonicalizerBase {
|
||||
boolean firstCall=true;
|
||||
final SortedSet result= new TreeSet(COMPARE);
|
||||
final SortedSet<Attr> result= new TreeSet<Attr>(COMPARE);
|
||||
static final String XMLNS_URI=Constants.NamespaceSpecNS;
|
||||
static final String XML_LANG_URI=Constants.XML_LANG_SPACE_SpecNS;
|
||||
static class XmlAttrStack {
|
||||
@ -67,9 +67,9 @@ public abstract class Canonicalizer20010315 extends CanonicalizerBase {
|
||||
static class XmlsStackElement {
|
||||
int level;
|
||||
boolean rendered=false;
|
||||
List nodes=new ArrayList();
|
||||
List<Attr> nodes=new ArrayList<Attr>();
|
||||
};
|
||||
List levels=new ArrayList();
|
||||
List<XmlsStackElement> levels=new ArrayList<XmlsStackElement>();
|
||||
void push(int level) {
|
||||
currentLevel=level;
|
||||
if (currentLevel==-1)
|
||||
@ -81,7 +81,7 @@ public abstract class Canonicalizer20010315 extends CanonicalizerBase {
|
||||
lastlevel=0;
|
||||
return;
|
||||
}
|
||||
lastlevel=((XmlsStackElement)levels.get(levels.size()-1)).level;
|
||||
lastlevel=(levels.get(levels.size()-1)).level;
|
||||
}
|
||||
}
|
||||
void addXmlnsAttr(Attr n) {
|
||||
@ -93,7 +93,7 @@ public abstract class Canonicalizer20010315 extends CanonicalizerBase {
|
||||
}
|
||||
cur.nodes.add(n);
|
||||
}
|
||||
void getXmlnsAttr(Collection col) {
|
||||
void getXmlnsAttr(Collection<Attr> col) {
|
||||
int size=levels.size()-1;
|
||||
if (cur==null) {
|
||||
cur=new XmlsStackElement();
|
||||
@ -106,7 +106,7 @@ public abstract class Canonicalizer20010315 extends CanonicalizerBase {
|
||||
if (size==-1) {
|
||||
parentRendered=true;
|
||||
} else {
|
||||
e=(XmlsStackElement)levels.get(size);
|
||||
e=levels.get(size);
|
||||
if (e.rendered && e.level+1==currentLevel)
|
||||
parentRendered=true;
|
||||
|
||||
@ -117,12 +117,12 @@ public abstract class Canonicalizer20010315 extends CanonicalizerBase {
|
||||
return;
|
||||
}
|
||||
|
||||
Map loa = new HashMap();
|
||||
Map<String,Attr> loa = new HashMap<String,Attr>();
|
||||
for (;size>=0;size--) {
|
||||
e=(XmlsStackElement)levels.get(size);
|
||||
Iterator it=e.nodes.iterator();
|
||||
e=levels.get(size);
|
||||
Iterator<Attr> it=e.nodes.iterator();
|
||||
while (it.hasNext()) {
|
||||
Attr n=(Attr)it.next();
|
||||
Attr n=it.next();
|
||||
if (!loa.containsKey(n.getName()))
|
||||
loa.put(n.getName(),n);
|
||||
}
|
||||
@ -161,13 +161,13 @@ public abstract class Canonicalizer20010315 extends CanonicalizerBase {
|
||||
* @return the Attr[]s to be outputted
|
||||
* @throws CanonicalizationException
|
||||
*/
|
||||
Iterator handleAttributesSubtree(Element E, NameSpaceSymbTable ns )
|
||||
Iterator<Attr> handleAttributesSubtree(Element E, NameSpaceSymbTable ns )
|
||||
throws CanonicalizationException {
|
||||
if (!E.hasAttributes() && !firstCall) {
|
||||
return null;
|
||||
}
|
||||
// result will contain the attrs which have to be outputted
|
||||
final SortedSet result = this.result;
|
||||
final SortedSet<Attr> result = this.result;
|
||||
result.clear();
|
||||
NamedNodeMap attrs = E.getAttributes();
|
||||
int attrsLength = attrs.getLength();
|
||||
@ -194,7 +194,7 @@ public abstract class Canonicalizer20010315 extends CanonicalizerBase {
|
||||
|
||||
if (n!=null) {
|
||||
//Render the ns definition
|
||||
result.add(n);
|
||||
result.add((Attr)n);
|
||||
if (C14nHelper.namespaceIsRelative(N)) {
|
||||
Object exArgs[] = { E.getTagName(), NName, N.getNodeValue() };
|
||||
throw new CanonicalizationException(
|
||||
@ -206,7 +206,7 @@ public abstract class Canonicalizer20010315 extends CanonicalizerBase {
|
||||
if (firstCall) {
|
||||
//It is the first node of the subtree
|
||||
//Obtain all the namespaces defined in the parents, and added to the output.
|
||||
ns.getUnrenderedNodes(result);
|
||||
ns.getUnrenderedNodes(getSortedSetAsCollection(result));
|
||||
//output the attributes in the xml namespace.
|
||||
xmlattrStack.getXmlnsAttr(result);
|
||||
firstCall=false;
|
||||
@ -227,7 +227,7 @@ public abstract class Canonicalizer20010315 extends CanonicalizerBase {
|
||||
* @return the Attr[]s to be outputted
|
||||
* @throws CanonicalizationException
|
||||
*/
|
||||
Iterator handleAttributes(Element E, NameSpaceSymbTable ns ) throws CanonicalizationException {
|
||||
Iterator<Attr> handleAttributes(Element E, NameSpaceSymbTable ns ) throws CanonicalizationException {
|
||||
// result will contain the attrs which have to be outputted
|
||||
xmlattrStack.push(ns.getLevel());
|
||||
boolean isRealVisible=isVisibleDO(E,ns.getLevel())==1;
|
||||
@ -239,7 +239,7 @@ public abstract class Canonicalizer20010315 extends CanonicalizerBase {
|
||||
}
|
||||
|
||||
|
||||
SortedSet result = this.result;
|
||||
SortedSet<Attr> result = this.result;
|
||||
result.clear();
|
||||
|
||||
for (int i = 0; i < attrsLength; i++) {
|
||||
@ -277,7 +277,7 @@ public abstract class Canonicalizer20010315 extends CanonicalizerBase {
|
||||
//Node n=ns.addMappingAndRenderXNodeSet(NName,NValue,N,isRealVisible);
|
||||
Node n=ns.addMappingAndRender(NName,NValue,N);
|
||||
if (n!=null) {
|
||||
result.add(n);
|
||||
result.add((Attr)n);
|
||||
if (C14nHelper.namespaceIsRelative(N)) {
|
||||
Object exArgs[] = { E.getTagName(), NName, N.getNodeValue() };
|
||||
throw new CanonicalizationException(
|
||||
@ -306,12 +306,12 @@ public abstract class Canonicalizer20010315 extends CanonicalizerBase {
|
||||
}
|
||||
//output the xmlns def if needed.
|
||||
if (n!=null) {
|
||||
result.add(n);
|
||||
result.add((Attr)n);
|
||||
}
|
||||
//Float all xml:* attributes of the unselected parent elements to this one.
|
||||
//addXmlAttributes(E,result);
|
||||
xmlattrStack.getXmlnsAttr(result);
|
||||
ns.getUnrenderedNodes(result);
|
||||
ns.getUnrenderedNodes(getSortedSetAsCollection(result));
|
||||
|
||||
}
|
||||
|
||||
@ -325,7 +325,7 @@ public abstract class Canonicalizer20010315 extends CanonicalizerBase {
|
||||
* @return none it always fails
|
||||
* @throws CanonicalizationException always
|
||||
*/
|
||||
public byte[] engineCanonicalizeXPathNodeSet(Set xpathNodeSet, String inclusiveNamespaces)
|
||||
public byte[] engineCanonicalizeXPathNodeSet(Set<Node> xpathNodeSet, String inclusiveNamespaces)
|
||||
throws CanonicalizationException {
|
||||
|
||||
/** $todo$ well, should we throw UnsupportedOperationException ? */
|
||||
|
@ -61,9 +61,9 @@ public abstract class Canonicalizer20010315Excl extends CanonicalizerBase {
|
||||
* This Set contains the names (Strings like "xmlns" or "xmlns:foo") of
|
||||
* the inclusive namespaces.
|
||||
*/
|
||||
TreeSet _inclusiveNSSet = new TreeSet();
|
||||
TreeSet<String> _inclusiveNSSet = new TreeSet<String>();
|
||||
static final String XMLNS_URI=Constants.NamespaceSpecNS;
|
||||
final SortedSet result = new TreeSet(COMPARE);
|
||||
final SortedSet<Attr> result = new TreeSet<Attr>(COMPARE);
|
||||
/**
|
||||
* Constructor Canonicalizer20010315Excl
|
||||
*
|
||||
@ -106,8 +106,7 @@ public abstract class Canonicalizer20010315Excl extends CanonicalizerBase {
|
||||
*/
|
||||
public byte[] engineCanonicalizeSubTree(Node rootNode,
|
||||
String inclusiveNamespaces,Node excl) throws CanonicalizationException {
|
||||
this._inclusiveNSSet = (TreeSet)InclusiveNamespaces
|
||||
.prefixStr2Set(inclusiveNamespaces);
|
||||
this._inclusiveNSSet = getInclusiveNameSpace(inclusiveNamespaces);
|
||||
return super.engineCanonicalizeSubTree(rootNode,excl);
|
||||
}
|
||||
/**
|
||||
@ -117,10 +116,10 @@ public abstract class Canonicalizer20010315Excl extends CanonicalizerBase {
|
||||
* @return the rootNode c14n.
|
||||
* @throws CanonicalizationException
|
||||
*/
|
||||
@SuppressWarnings("unchecked")
|
||||
public byte[] engineCanonicalize(XMLSignatureInput rootNode,
|
||||
String inclusiveNamespaces) throws CanonicalizationException {
|
||||
this._inclusiveNSSet = (TreeSet)InclusiveNamespaces
|
||||
.prefixStr2Set(inclusiveNamespaces);
|
||||
this._inclusiveNSSet = getInclusiveNameSpace(inclusiveNamespaces);
|
||||
return super.engineCanonicalize(rootNode);
|
||||
}
|
||||
|
||||
@ -130,12 +129,12 @@ public abstract class Canonicalizer20010315Excl extends CanonicalizerBase {
|
||||
* @param E
|
||||
* @throws CanonicalizationException
|
||||
*/
|
||||
Iterator handleAttributesSubtree(Element E,NameSpaceSymbTable ns)
|
||||
Iterator<Attr> handleAttributesSubtree(Element E,NameSpaceSymbTable ns)
|
||||
throws CanonicalizationException {
|
||||
// System.out.println("During the traversal, I encountered " +
|
||||
// XMLUtils.getXPath(E));
|
||||
// result will contain the attrs which have to be outputted
|
||||
SortedSet result = this.result;
|
||||
SortedSet<Attr> result = this.result;
|
||||
result.clear();
|
||||
NamedNodeMap attrs=null;
|
||||
|
||||
@ -145,7 +144,7 @@ public abstract class Canonicalizer20010315Excl extends CanonicalizerBase {
|
||||
attrsLength = attrs.getLength();
|
||||
}
|
||||
//The prefix visibly utilized(in the attribute or in the name) in the element
|
||||
SortedSet visiblyUtilized =(SortedSet) _inclusiveNSSet.clone();
|
||||
SortedSet<String> visiblyUtilized = getNSSetClone();
|
||||
|
||||
for (int i = 0; i < attrsLength; i++) {
|
||||
Attr N = (Attr) attrs.item(i);
|
||||
@ -187,9 +186,9 @@ public abstract class Canonicalizer20010315Excl extends CanonicalizerBase {
|
||||
visiblyUtilized.add(prefix);
|
||||
|
||||
//This can be optimezed by I don't have time
|
||||
Iterator it=visiblyUtilized.iterator();
|
||||
Iterator<String> it=visiblyUtilized.iterator();
|
||||
while (it.hasNext()) {
|
||||
String s=(String)it.next();
|
||||
String s=it.next();
|
||||
Attr key=ns.getMapping(s);
|
||||
if (key==null) {
|
||||
continue;
|
||||
@ -207,25 +206,35 @@ public abstract class Canonicalizer20010315Excl extends CanonicalizerBase {
|
||||
* @param inclusiveNamespaces
|
||||
* @throws CanonicalizationException
|
||||
*/
|
||||
public byte[] engineCanonicalizeXPathNodeSet(Set xpathNodeSet,
|
||||
public byte[] engineCanonicalizeXPathNodeSet(Set<Node> xpathNodeSet,
|
||||
String inclusiveNamespaces) throws CanonicalizationException {
|
||||
|
||||
|
||||
this._inclusiveNSSet = (TreeSet)InclusiveNamespaces
|
||||
.prefixStr2Set(inclusiveNamespaces);
|
||||
this._inclusiveNSSet = getInclusiveNameSpace(inclusiveNamespaces);
|
||||
return super.engineCanonicalizeXPathNodeSet(xpathNodeSet);
|
||||
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
private TreeSet<String> getInclusiveNameSpace(String inclusiveNameSpaces) {
|
||||
return (TreeSet<String>)InclusiveNamespaces.prefixStr2Set(inclusiveNameSpaces);
|
||||
}
|
||||
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
private SortedSet<String> getNSSetClone() {
|
||||
return (SortedSet<String>) this._inclusiveNSSet.clone();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
* @param E
|
||||
* @throws CanonicalizationException
|
||||
*/
|
||||
final Iterator handleAttributes(Element E, NameSpaceSymbTable ns)
|
||||
final Iterator<Attr> handleAttributes(Element E, NameSpaceSymbTable ns)
|
||||
throws CanonicalizationException {
|
||||
// result will contain the attrs which have to be outputted
|
||||
SortedSet result = this.result;
|
||||
SortedSet<Attr> result = this.result;
|
||||
result.clear();
|
||||
NamedNodeMap attrs = null;
|
||||
int attrsLength = 0;
|
||||
@ -234,11 +243,11 @@ public abstract class Canonicalizer20010315Excl extends CanonicalizerBase {
|
||||
attrsLength = attrs.getLength();
|
||||
}
|
||||
//The prefix visibly utilized(in the attribute or in the name) in the element
|
||||
Set visiblyUtilized =null;
|
||||
Set<String> visiblyUtilized =null;
|
||||
//It's the output selected.
|
||||
boolean isOutputElement=isVisibleDO(E,ns.getLevel())==1;
|
||||
if (isOutputElement) {
|
||||
visiblyUtilized = (Set) this._inclusiveNSSet.clone();
|
||||
visiblyUtilized = getNSSetClone();
|
||||
}
|
||||
|
||||
for (int i = 0; i < attrsLength; i++) {
|
||||
@ -272,7 +281,7 @@ public abstract class Canonicalizer20010315Excl extends CanonicalizerBase {
|
||||
if (!isOutputElement && isVisible(N) && _inclusiveNSSet.contains(NName) && !ns.removeMappingIfRender(NName)) {
|
||||
Node n=ns.addMappingAndRender(NName,NNodeValue,N);
|
||||
if (n!=null) {
|
||||
result.add(n);
|
||||
result.add((Attr)n);
|
||||
if (C14nHelper.namespaceIsRelative(N)) {
|
||||
Object exArgs[] = { E.getTagName(), NName, N.getNodeValue() };
|
||||
throw new CanonicalizationException(
|
||||
@ -315,9 +324,9 @@ public abstract class Canonicalizer20010315Excl extends CanonicalizerBase {
|
||||
}
|
||||
//This can be optimezed by I don't have time
|
||||
//visiblyUtilized.addAll(this._inclusiveNSSet);
|
||||
Iterator it=visiblyUtilized.iterator();
|
||||
Iterator<String> it=visiblyUtilized.iterator();
|
||||
while (it.hasNext()) {
|
||||
String s=(String)it.next();
|
||||
String s=it.next();
|
||||
Attr key=ns.getMapping(s);
|
||||
if (key==null) {
|
||||
continue;
|
||||
|
@ -33,9 +33,12 @@ import java.util.List;
|
||||
import java.util.ListIterator;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.SortedSet;
|
||||
import java.util.Collection;
|
||||
|
||||
import javax.xml.parsers.DocumentBuilderFactory;
|
||||
import javax.xml.parsers.ParserConfigurationException;
|
||||
import javax.xml.xpath.XPath;
|
||||
|
||||
import com.sun.org.apache.xml.internal.security.c14n.CanonicalizationException;
|
||||
import com.sun.org.apache.xml.internal.security.c14n.CanonicalizerSpi;
|
||||
@ -94,10 +97,10 @@ public abstract class CanonicalizerBase extends CanonicalizerSpi {
|
||||
}
|
||||
}
|
||||
|
||||
List nodeFilter;
|
||||
List<NodeFilter> nodeFilter;
|
||||
|
||||
boolean _includeComments;
|
||||
Set _xpathNodeSet = null;
|
||||
Set<Node> _xpathNodeSet = null;
|
||||
/**
|
||||
* The node to be skiped/excluded from the DOM tree
|
||||
* in subtree canonicalizations.
|
||||
@ -130,7 +133,7 @@ public abstract class CanonicalizerBase extends CanonicalizerSpi {
|
||||
* @param xpathNodeSet
|
||||
* @throws CanonicalizationException
|
||||
*/
|
||||
public byte[] engineCanonicalizeXPathNodeSet(Set xpathNodeSet)
|
||||
public byte[] engineCanonicalizeXPathNodeSet(Set<Node> xpathNodeSet)
|
||||
throws CanonicalizationException {
|
||||
this._xpathNodeSet = xpathNodeSet;
|
||||
return engineCanonicalizeXPathNodeSetInternal(XMLUtils.getOwnerDocument(this._xpathNodeSet));
|
||||
@ -251,7 +254,7 @@ public abstract class CanonicalizerBase extends CanonicalizerSpi {
|
||||
final OutputStream writer=this._writer;
|
||||
final Node excludeNode=this._excludeNode;
|
||||
final boolean includeComments=this._includeComments;
|
||||
Map cache=new HashMap();
|
||||
Map<String, byte[]> cache=new HashMap<String, byte[]>();
|
||||
do {
|
||||
switch (currentNode.getNodeType()) {
|
||||
|
||||
@ -298,11 +301,11 @@ public abstract class CanonicalizerBase extends CanonicalizerSpi {
|
||||
String name=currentElement.getTagName();
|
||||
UtfHelpper.writeByte(name,writer,cache);
|
||||
|
||||
Iterator attrs = this.handleAttributesSubtree(currentElement,ns);
|
||||
Iterator<Attr> attrs = this.handleAttributesSubtree(currentElement,ns);
|
||||
if (attrs!=null) {
|
||||
//we output all Attrs which are available
|
||||
while (attrs.hasNext()) {
|
||||
Attr attr = (Attr) attrs.next();
|
||||
Attr attr = attrs.next();
|
||||
outputAttrToWriter(attr.getNodeName(),attr.getNodeValue(), writer,cache);
|
||||
}
|
||||
}
|
||||
@ -394,7 +397,7 @@ public abstract class CanonicalizerBase extends CanonicalizerSpi {
|
||||
Node parentNode=null;
|
||||
OutputStream writer=this._writer;
|
||||
int documentLevel=NODE_BEFORE_DOCUMENT_ELEMENT;
|
||||
Map cache=new HashMap();
|
||||
Map<String, byte[]> cache=new HashMap<String,byte[]>();
|
||||
do {
|
||||
switch (currentNode.getNodeType()) {
|
||||
|
||||
@ -464,11 +467,11 @@ public abstract class CanonicalizerBase extends CanonicalizerSpi {
|
||||
ns.push();
|
||||
}
|
||||
|
||||
Iterator attrs = handleAttributes(currentElement,ns);
|
||||
Iterator<Attr> attrs = handleAttributes(currentElement,ns);
|
||||
if (attrs!=null) {
|
||||
//we output all Attrs which are available
|
||||
while (attrs.hasNext()) {
|
||||
Attr attr = (Attr) attrs.next();
|
||||
Attr attr = attrs.next();
|
||||
outputAttrToWriter(attr.getNodeName(),attr.getNodeValue(), writer,cache);
|
||||
}
|
||||
}
|
||||
@ -522,9 +525,9 @@ public abstract class CanonicalizerBase extends CanonicalizerSpi {
|
||||
}
|
||||
int isVisibleDO(Node currentNode,int level) {
|
||||
if (nodeFilter!=null) {
|
||||
Iterator it=nodeFilter.iterator();
|
||||
Iterator<NodeFilter> it=nodeFilter.iterator();
|
||||
while (it.hasNext()) {
|
||||
int i=((NodeFilter)it.next()).isNodeIncludeDO(currentNode,level);
|
||||
int i=(it.next()).isNodeIncludeDO(currentNode,level);
|
||||
if (i!=1)
|
||||
return i;
|
||||
}
|
||||
@ -535,9 +538,9 @@ public abstract class CanonicalizerBase extends CanonicalizerSpi {
|
||||
}
|
||||
int isVisibleInt(Node currentNode) {
|
||||
if (nodeFilter!=null) {
|
||||
Iterator it=nodeFilter.iterator();
|
||||
Iterator<NodeFilter> it=nodeFilter.iterator();
|
||||
while (it.hasNext()) {
|
||||
int i=((NodeFilter)it.next()).isNodeInclude(currentNode);
|
||||
int i=(it.next()).isNodeInclude(currentNode);
|
||||
if (i!=1)
|
||||
return i;
|
||||
}
|
||||
@ -549,9 +552,9 @@ public abstract class CanonicalizerBase extends CanonicalizerSpi {
|
||||
|
||||
boolean isVisible(Node currentNode) {
|
||||
if (nodeFilter!=null) {
|
||||
Iterator it=nodeFilter.iterator();
|
||||
Iterator<NodeFilter> it=nodeFilter.iterator();
|
||||
while (it.hasNext()) {
|
||||
if (((NodeFilter)it.next()).isNodeInclude(currentNode)!=1)
|
||||
if ((it.next()).isNodeInclude(currentNode)!=1)
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@ -589,7 +592,7 @@ public abstract class CanonicalizerBase extends CanonicalizerSpi {
|
||||
* @param ns
|
||||
*/
|
||||
final void getParentNameSpaces(Element el,NameSpaceSymbTable ns) {
|
||||
List parents=new ArrayList(10);
|
||||
List<Element> parents=new ArrayList<Element>(10);
|
||||
Node n1=el.getParentNode();
|
||||
if (!(n1 instanceof Element)) {
|
||||
return;
|
||||
@ -605,9 +608,9 @@ public abstract class CanonicalizerBase extends CanonicalizerSpi {
|
||||
parent=(Element)n;
|
||||
}
|
||||
//Visit them in reverse order.
|
||||
ListIterator it=parents.listIterator(parents.size());
|
||||
ListIterator<Element> it=parents.listIterator(parents.size());
|
||||
while (it.hasPrevious()) {
|
||||
Element ele=(Element)it.previous();
|
||||
Element ele=it.previous();
|
||||
handleParent(ele, ns);
|
||||
}
|
||||
Attr nsprefix;
|
||||
@ -624,7 +627,7 @@ public abstract class CanonicalizerBase extends CanonicalizerSpi {
|
||||
* @return the attributes nodes to output.
|
||||
* @throws CanonicalizationException
|
||||
*/
|
||||
abstract Iterator handleAttributes(Element E, NameSpaceSymbTable ns )
|
||||
abstract Iterator<Attr> handleAttributes(Element E, NameSpaceSymbTable ns )
|
||||
throws CanonicalizationException;
|
||||
|
||||
/**
|
||||
@ -635,7 +638,7 @@ public abstract class CanonicalizerBase extends CanonicalizerSpi {
|
||||
* @return the attributes nodes to output.
|
||||
* @throws CanonicalizationException
|
||||
*/
|
||||
abstract Iterator handleAttributesSubtree(Element E, NameSpaceSymbTable ns)
|
||||
abstract Iterator<Attr> handleAttributesSubtree(Element E, NameSpaceSymbTable ns)
|
||||
throws CanonicalizationException;
|
||||
|
||||
abstract void circumventBugIfNeeded(XMLSignatureInput input) throws CanonicalizationException, ParserConfigurationException, IOException, SAXException;
|
||||
@ -660,7 +663,7 @@ public abstract class CanonicalizerBase extends CanonicalizerSpi {
|
||||
* @throws IOException
|
||||
*/
|
||||
static final void outputAttrToWriter(final String name, final String value, final OutputStream writer,
|
||||
final Map cache) throws IOException {
|
||||
final Map<String, byte[]> cache) throws IOException {
|
||||
writer.write(' ');
|
||||
UtfHelpper.writeByte(name,writer,cache);
|
||||
writer.write(equalsStr);
|
||||
@ -841,4 +844,10 @@ public abstract class CanonicalizerBase extends CanonicalizerSpi {
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
protected Collection<Attr> getSortedSetAsCollection(SortedSet<Attr> result) {
|
||||
return (Collection<Attr>)(Collection)result;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
@ -44,7 +44,7 @@ public class NameSpaceSymbTable {
|
||||
/**The level of nameSpaces (for Inclusive visibility).*/
|
||||
int nameSpaces=0;
|
||||
/**The stacks for removing the definitions when doing pop.*/
|
||||
List level;
|
||||
List<SymbMap> level;
|
||||
boolean cloned=true;
|
||||
static final String XMLNS="xmlns";
|
||||
final static SymbMap initialMap=new SymbMap();
|
||||
@ -57,7 +57,7 @@ public class NameSpaceSymbTable {
|
||||
* Default constractor
|
||||
**/
|
||||
public NameSpaceSymbTable() {
|
||||
level = new ArrayList(10);
|
||||
level = new ArrayList<SymbMap>(10);
|
||||
//Insert the default binding for xmlns.
|
||||
symb=(SymbMap) initialMap.clone();
|
||||
}
|
||||
@ -67,11 +67,11 @@ public class NameSpaceSymbTable {
|
||||
* For Inclusive rendering
|
||||
* @param result the list where to fill the unrendered xmlns definitions.
|
||||
**/
|
||||
public void getUnrenderedNodes(Collection result) {
|
||||
public void getUnrenderedNodes(Collection<Attr> result) {
|
||||
//List result=new ArrayList();
|
||||
Iterator it=symb.entrySet().iterator();
|
||||
Iterator<NameSpaceSymbEntry> it=symb.entrySet().iterator();
|
||||
while (it.hasNext()) {
|
||||
NameSpaceSymbEntry n=(NameSpaceSymbEntry)(it.next());
|
||||
NameSpaceSymbEntry n= it.next();
|
||||
//put them rendered?
|
||||
if ((!n.rendered) && (n.n!=null)) {
|
||||
n=(NameSpaceSymbEntry) n.clone();
|
||||
@ -339,8 +339,8 @@ class SymbMap implements Cloneable {
|
||||
}
|
||||
}
|
||||
|
||||
List entrySet() {
|
||||
List a=new ArrayList();
|
||||
List<NameSpaceSymbEntry> entrySet() {
|
||||
List<NameSpaceSymbEntry> a=new ArrayList<NameSpaceSymbEntry>();
|
||||
for (int i=0;i<entries.length;i++) {
|
||||
if ((entries[i]!=null) && !("".equals(entries[i].uri))) {
|
||||
a.add(entries[i]);
|
||||
|
4
jdk/src/share/classes/com/sun/org/apache/xml/internal/security/c14n/implementations/UtfHelpper.java
4
jdk/src/share/classes/com/sun/org/apache/xml/internal/security/c14n/implementations/UtfHelpper.java
@ -6,8 +6,8 @@ import java.util.Map;
|
||||
|
||||
public class UtfHelpper {
|
||||
|
||||
final static void writeByte(final String str,final OutputStream out,Map cache) throws IOException {
|
||||
byte []result=(byte[]) cache.get(str);
|
||||
final static void writeByte(final String str,final OutputStream out,Map<String,byte[]> cache) throws IOException {
|
||||
byte []result= cache.get(str);
|
||||
if (result==null) {
|
||||
result=getStringInUtf8(str);
|
||||
cache.put(str,result);
|
||||
|
@ -95,7 +95,7 @@ public interface AgreementMethod {
|
||||
* Returns aditional information regarding the <code>AgreementMethod</code>.
|
||||
* @return
|
||||
*/
|
||||
Iterator getAgreementMethodInformation();
|
||||
Iterator<Element> getAgreementMethodInformation();
|
||||
|
||||
/**
|
||||
* Adds additional <code>AgreementMethod</code> information.
|
||||
|
@ -89,7 +89,7 @@ public interface EncryptionMethod {
|
||||
* @return an <code>Iterator</code> over all the additional infomation
|
||||
* about the <code>EncryptionMethod</code>.
|
||||
*/
|
||||
Iterator getEncryptionMethodInformation();
|
||||
Iterator<Element> getEncryptionMethodInformation();
|
||||
|
||||
/**
|
||||
* Adds encryption method information.
|
||||
|
2
jdk/src/share/classes/com/sun/org/apache/xml/internal/security/encryption/EncryptionProperties.java
2
jdk/src/share/classes/com/sun/org/apache/xml/internal/security/encryption/EncryptionProperties.java
@ -67,7 +67,7 @@ public interface EncryptionProperties {
|
||||
*
|
||||
* @return an <code>Iterator</code> over all the encryption properties.
|
||||
*/
|
||||
Iterator getEncryptionProperties();
|
||||
Iterator<EncryptionProperty> getEncryptionProperties();
|
||||
|
||||
/**
|
||||
* Adds an <code>EncryptionProperty</code>.
|
||||
|
@ -101,7 +101,7 @@ public interface EncryptionProperty {
|
||||
* @return an <code>Iterator</code> over all the addiitonal encryption
|
||||
* information contained in this class.
|
||||
*/
|
||||
Iterator getEncryptionInformation();
|
||||
Iterator<Element> getEncryptionInformation();
|
||||
|
||||
/**
|
||||
* Adds encryption information.
|
||||
|
@ -74,7 +74,7 @@ public interface Reference {
|
||||
*
|
||||
* @return child elements.
|
||||
*/
|
||||
Iterator getElementRetrievalInformation();
|
||||
Iterator<Element> getElementRetrievalInformation();
|
||||
|
||||
/**
|
||||
* Adds retrieval information.
|
||||
|
@ -87,7 +87,7 @@ public interface ReferenceList {
|
||||
*
|
||||
* @return Iterator.
|
||||
*/
|
||||
public Iterator getReferences();
|
||||
public Iterator<Reference> getReferences();
|
||||
|
||||
/**
|
||||
* <code>DataReference</code> factory method. Returns a
|
||||
|
@ -2772,7 +2772,7 @@ public class XMLCipher {
|
||||
// </complexType>
|
||||
private class AgreementMethodImpl implements AgreementMethod {
|
||||
private byte[] kaNonce = null;
|
||||
private List agreementMethodInformation = null;
|
||||
private List<Element> agreementMethodInformation = null;
|
||||
private KeyInfo originatorKeyInfo = null;
|
||||
private KeyInfo recipientKeyInfo = null;
|
||||
private String algorithmURI = null;
|
||||
@ -2781,7 +2781,7 @@ public class XMLCipher {
|
||||
* @param algorithm
|
||||
*/
|
||||
public AgreementMethodImpl(String algorithm) {
|
||||
agreementMethodInformation = new LinkedList();
|
||||
agreementMethodInformation = new LinkedList<Element>();
|
||||
URI tmpAlgorithm = null;
|
||||
try {
|
||||
tmpAlgorithm = new URI(algorithm);
|
||||
@ -2802,7 +2802,7 @@ public class XMLCipher {
|
||||
}
|
||||
|
||||
/** @inheritDoc */
|
||||
public Iterator getAgreementMethodInformation() {
|
||||
public Iterator<Element> getAgreementMethodInformation() {
|
||||
return (agreementMethodInformation.iterator());
|
||||
}
|
||||
|
||||
@ -2879,9 +2879,9 @@ public class XMLCipher {
|
||||
_contextDocument.createTextNode(new String(kaNonce)));
|
||||
}
|
||||
if (!agreementMethodInformation.isEmpty()) {
|
||||
Iterator itr = agreementMethodInformation.iterator();
|
||||
Iterator<Element> itr = agreementMethodInformation.iterator();
|
||||
while (itr.hasNext()) {
|
||||
result.appendChild((Element) itr.next());
|
||||
result.appendChild(itr.next());
|
||||
}
|
||||
}
|
||||
if (null != originatorKeyInfo) {
|
||||
@ -3486,7 +3486,7 @@ public class XMLCipher {
|
||||
private String algorithm = null;
|
||||
private int keySize = Integer.MIN_VALUE;
|
||||
private byte[] oaepParams = null;
|
||||
private List encryptionMethodInformation = null;
|
||||
private List<Element> encryptionMethodInformation = null;
|
||||
/**
|
||||
*
|
||||
* @param algorithm
|
||||
@ -3499,7 +3499,7 @@ public class XMLCipher {
|
||||
// complain
|
||||
}
|
||||
this.algorithm = tmpAlgorithm.toString();
|
||||
encryptionMethodInformation = new LinkedList();
|
||||
encryptionMethodInformation = new LinkedList<Element>();
|
||||
}
|
||||
/** @inheritDoc */
|
||||
public String getAlgorithm() {
|
||||
@ -3522,7 +3522,7 @@ public class XMLCipher {
|
||||
oaepParams = params;
|
||||
}
|
||||
/** @inheritDoc */
|
||||
public Iterator getEncryptionMethodInformation() {
|
||||
public Iterator<Element> getEncryptionMethodInformation() {
|
||||
return (encryptionMethodInformation.iterator());
|
||||
}
|
||||
/** @inheritDoc */
|
||||
@ -3565,8 +3565,8 @@ public class XMLCipher {
|
||||
new String(oaepParams))));
|
||||
}
|
||||
if (!encryptionMethodInformation.isEmpty()) {
|
||||
Iterator itr = encryptionMethodInformation.iterator();
|
||||
result.appendChild((Element) itr.next());
|
||||
Iterator<Element> itr = encryptionMethodInformation.iterator();
|
||||
result.appendChild(itr.next());
|
||||
}
|
||||
|
||||
return (result);
|
||||
@ -3582,13 +3582,13 @@ public class XMLCipher {
|
||||
// </complexType>
|
||||
private class EncryptionPropertiesImpl implements EncryptionProperties {
|
||||
private String id = null;
|
||||
private List encryptionProperties = null;
|
||||
private List<EncryptionProperty> encryptionProperties = null;
|
||||
/**
|
||||
*
|
||||
*
|
||||
*/
|
||||
public EncryptionPropertiesImpl() {
|
||||
encryptionProperties = new LinkedList();
|
||||
encryptionProperties = new LinkedList<EncryptionProperty>();
|
||||
}
|
||||
/** @inheritDoc */
|
||||
public String getId() {
|
||||
@ -3599,7 +3599,7 @@ public class XMLCipher {
|
||||
this.id = id;
|
||||
}
|
||||
/** @inheritDoc */
|
||||
public Iterator getEncryptionProperties() {
|
||||
public Iterator<EncryptionProperty> getEncryptionProperties() {
|
||||
return (encryptionProperties.iterator());
|
||||
}
|
||||
/** @inheritDoc */
|
||||
@ -3625,7 +3625,7 @@ public class XMLCipher {
|
||||
if (null != id) {
|
||||
result.setAttributeNS(null, EncryptionConstants._ATT_ID, id);
|
||||
}
|
||||
Iterator itr = getEncryptionProperties();
|
||||
Iterator<EncryptionProperty> itr = getEncryptionProperties();
|
||||
while (itr.hasNext()) {
|
||||
result.appendChild(((EncryptionPropertyImpl)
|
||||
itr.next()).toElement());
|
||||
@ -3647,15 +3647,15 @@ public class XMLCipher {
|
||||
private class EncryptionPropertyImpl implements EncryptionProperty {
|
||||
private String target = null;
|
||||
private String id = null;
|
||||
private HashMap attributeMap = new HashMap();
|
||||
private List encryptionInformation = null;
|
||||
private HashMap<String,String> attributeMap = new HashMap<String,String>();
|
||||
private List<Element> encryptionInformation = null;
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
*/
|
||||
public EncryptionPropertyImpl() {
|
||||
encryptionInformation = new LinkedList();
|
||||
encryptionInformation = new LinkedList<Element>();
|
||||
}
|
||||
/** @inheritDoc */
|
||||
public String getTarget() {
|
||||
@ -3692,14 +3692,14 @@ public class XMLCipher {
|
||||
}
|
||||
/** @inheritDoc */
|
||||
public String getAttribute(String attribute) {
|
||||
return (String) attributeMap.get(attribute);
|
||||
return attributeMap.get(attribute);
|
||||
}
|
||||
/** @inheritDoc */
|
||||
public void setAttribute(String attribute, String value) {
|
||||
attributeMap.put(attribute, value);
|
||||
}
|
||||
/** @inheritDoc */
|
||||
public Iterator getEncryptionInformation() {
|
||||
public Iterator<Element> getEncryptionInformation() {
|
||||
return (encryptionInformation.iterator());
|
||||
}
|
||||
/** @inheritDoc */
|
||||
@ -3821,8 +3821,8 @@ public class XMLCipher {
|
||||
// </complexType>
|
||||
//</element>
|
||||
private class ReferenceListImpl implements ReferenceList {
|
||||
private Class sentry;
|
||||
private List references;
|
||||
private Class<?> sentry;
|
||||
private List<Reference> references;
|
||||
/**
|
||||
*
|
||||
* @param type
|
||||
@ -3835,7 +3835,7 @@ public class XMLCipher {
|
||||
} else {
|
||||
throw new IllegalArgumentException();
|
||||
}
|
||||
references = new LinkedList();
|
||||
references = new LinkedList<Reference>();
|
||||
}
|
||||
/** @inheritDoc */
|
||||
public void add(Reference reference) {
|
||||
@ -3860,7 +3860,7 @@ public class XMLCipher {
|
||||
return (references.isEmpty());
|
||||
}
|
||||
/** @inheritDoc */
|
||||
public Iterator getReferences() {
|
||||
public Iterator<Reference> getReferences() {
|
||||
return (references.iterator());
|
||||
}
|
||||
|
||||
@ -3869,9 +3869,9 @@ public class XMLCipher {
|
||||
_contextDocument,
|
||||
EncryptionConstants.EncryptionSpecNS,
|
||||
EncryptionConstants._TAG_REFERENCELIST);
|
||||
Iterator eachReference = references.iterator();
|
||||
Iterator<Reference> eachReference = references.iterator();
|
||||
while (eachReference.hasNext()) {
|
||||
Reference reference = (Reference) eachReference.next();
|
||||
Reference reference = eachReference.next();
|
||||
result.appendChild(
|
||||
((ReferenceImpl) reference).toElement());
|
||||
}
|
||||
@ -3894,18 +3894,18 @@ public class XMLCipher {
|
||||
*/
|
||||
private abstract class ReferenceImpl implements Reference {
|
||||
private String uri;
|
||||
private List referenceInformation;
|
||||
private List<Element> referenceInformation;
|
||||
|
||||
ReferenceImpl(String _uri) {
|
||||
this.uri = _uri;
|
||||
referenceInformation = new LinkedList();
|
||||
referenceInformation = new LinkedList<Element>();
|
||||
}
|
||||
/** @inheritDoc */
|
||||
public String getURI() {
|
||||
return (uri);
|
||||
}
|
||||
/** @inheritDoc */
|
||||
public Iterator getElementRetrievalInformation() {
|
||||
public Iterator<Element> getElementRetrievalInformation() {
|
||||
return (referenceInformation.iterator());
|
||||
}
|
||||
/** @inheritDoc */
|
||||
|
@ -97,12 +97,12 @@ public class KeyInfo extends SignatureElementProxy {
|
||||
/** {@link java.util.logging} logging facility */
|
||||
static java.util.logging.Logger log =
|
||||
java.util.logging.Logger.getLogger(KeyInfo.class.getName());
|
||||
List x509Datas=null;
|
||||
List encryptedKeys=null;
|
||||
List<X509Data> x509Datas=null;
|
||||
List<EncryptedKey> encryptedKeys=null;
|
||||
|
||||
static final List nullList;
|
||||
static final List<StorageResolver> nullList;
|
||||
static {
|
||||
List list = new ArrayList();
|
||||
List<StorageResolver> list = new ArrayList<StorageResolver>(1);
|
||||
list.add(null);
|
||||
nullList = Collections.unmodifiableList(list);
|
||||
}
|
||||
@ -297,7 +297,7 @@ public class KeyInfo extends SignatureElementProxy {
|
||||
*/
|
||||
public void add(X509Data x509data) {
|
||||
if (x509Datas==null)
|
||||
x509Datas=new ArrayList();
|
||||
x509Datas=new ArrayList<X509Data>();
|
||||
x509Datas.add(x509data);
|
||||
this._constructionElement.appendChild(x509data.getElement());
|
||||
XMLUtils.addReturnToElement(this._constructionElement);
|
||||
@ -313,7 +313,7 @@ public class KeyInfo extends SignatureElementProxy {
|
||||
public void add(EncryptedKey encryptedKey)
|
||||
throws XMLEncryptionException {
|
||||
if (encryptedKeys==null)
|
||||
encryptedKeys=new ArrayList();
|
||||
encryptedKeys=new ArrayList<EncryptedKey>();
|
||||
encryptedKeys.add(encryptedKey);
|
||||
XMLCipher cipher = XMLCipher.getInstance();
|
||||
this._constructionElement.appendChild(cipher.martial(encryptedKey));
|
||||
@ -541,7 +541,7 @@ public class KeyInfo extends SignatureElementProxy {
|
||||
*/
|
||||
public X509Data itemX509Data(int i) throws XMLSecurityException {
|
||||
if (x509Datas!=null) {
|
||||
return (X509Data) x509Datas.get(i);
|
||||
return x509Datas.get(i);
|
||||
}
|
||||
Element e = XMLUtils.selectDsNode(this._constructionElement.getFirstChild(),
|
||||
Constants._TAG_X509DATA,i);
|
||||
@ -562,7 +562,7 @@ public class KeyInfo extends SignatureElementProxy {
|
||||
|
||||
public EncryptedKey itemEncryptedKey(int i) throws XMLSecurityException {
|
||||
if (encryptedKeys!=null) {
|
||||
return (EncryptedKey) encryptedKeys.get(i);
|
||||
return encryptedKeys.get(i);
|
||||
}
|
||||
Element e =
|
||||
XMLUtils.selectXencNode(this._constructionElement.getFirstChild(),
|
||||
@ -728,16 +728,16 @@ public class KeyInfo extends SignatureElementProxy {
|
||||
PublicKey getPublicKeyFromStaticResolvers() throws KeyResolverException {
|
||||
int length=KeyResolver.length();
|
||||
int storageLength=this._storageResolvers.size();
|
||||
Iterator it= KeyResolver.iterator();
|
||||
Iterator<KeyResolverSpi> it= KeyResolver.iterator();
|
||||
for (int i = 0; i < length; i++) {
|
||||
KeyResolverSpi keyResolver = (KeyResolverSpi) it.next();
|
||||
KeyResolverSpi keyResolver = it.next();
|
||||
Node currentChild=this._constructionElement.getFirstChild();
|
||||
String uri= this.getBaseURI();
|
||||
while (currentChild!=null) {
|
||||
if (currentChild.getNodeType() == Node.ELEMENT_NODE) {
|
||||
for (int k = 0; k < storageLength; k++) {
|
||||
StorageResolver storage =
|
||||
(StorageResolver) this._storageResolvers.get(k);
|
||||
this._storageResolvers.get(k);
|
||||
|
||||
PublicKey pk =
|
||||
keyResolver.engineLookupAndResolvePublicKey((Element) currentChild,
|
||||
@ -776,7 +776,7 @@ public class KeyInfo extends SignatureElementProxy {
|
||||
if (currentChild.getNodeType() == Node.ELEMENT_NODE) {
|
||||
for (int k = 0; k < storageLength; k++) {
|
||||
StorageResolver storage =
|
||||
(StorageResolver) this._storageResolvers.get(k);
|
||||
this._storageResolvers.get(k);
|
||||
PublicKey pk = keyResolver
|
||||
.engineLookupAndResolvePublicKey((Element) currentChild, uri, storage);
|
||||
|
||||
@ -845,9 +845,9 @@ public class KeyInfo extends SignatureElementProxy {
|
||||
String uri=this.getBaseURI();
|
||||
int length= KeyResolver.length();
|
||||
int storageLength=this._storageResolvers.size();
|
||||
Iterator it = KeyResolver.iterator();
|
||||
Iterator<KeyResolverSpi> it = KeyResolver.iterator();
|
||||
for (int i = 0; i <length; i++) {
|
||||
KeyResolverSpi keyResolver = (KeyResolverSpi) it.next();
|
||||
KeyResolverSpi keyResolver = it.next();
|
||||
X509Certificate cert= applyCurrentResolver(uri, storageLength, keyResolver);
|
||||
if (cert!=null) {
|
||||
KeyResolver.hit(it);
|
||||
@ -863,7 +863,7 @@ public class KeyInfo extends SignatureElementProxy {
|
||||
if (currentChild.getNodeType() == Node.ELEMENT_NODE) {
|
||||
for (int k = 0; k < storageLength; k++) {
|
||||
StorageResolver storage =
|
||||
(StorageResolver) this._storageResolvers.get(k);
|
||||
this._storageResolvers.get(k);
|
||||
|
||||
X509Certificate cert = keyResolver
|
||||
.engineLookupResolveX509Certificate((Element) currentChild, uri,
|
||||
@ -944,9 +944,9 @@ public class KeyInfo extends SignatureElementProxy {
|
||||
SecretKey getSecretKeyFromStaticResolvers() throws KeyResolverException {
|
||||
final int length=KeyResolver.length();
|
||||
int storageLength=this._storageResolvers.size();
|
||||
Iterator it = KeyResolver.iterator();
|
||||
Iterator<KeyResolverSpi> it = KeyResolver.iterator();
|
||||
for (int i = 0; i < length; i++) {
|
||||
KeyResolverSpi keyResolver = (KeyResolverSpi) it.next();
|
||||
KeyResolverSpi keyResolver = it.next();
|
||||
|
||||
Node currentChild=this._constructionElement.getFirstChild();
|
||||
String uri=this.getBaseURI();
|
||||
@ -954,7 +954,7 @@ public class KeyInfo extends SignatureElementProxy {
|
||||
if (currentChild.getNodeType() == Node.ELEMENT_NODE) {
|
||||
for (int k = 0; k < storageLength; k++) {
|
||||
StorageResolver storage =
|
||||
(StorageResolver) this._storageResolvers.get(k);
|
||||
this._storageResolvers.get(k);
|
||||
|
||||
SecretKey sk =
|
||||
keyResolver.engineLookupAndResolveSecretKey((Element) currentChild,
|
||||
@ -992,7 +992,7 @@ public class KeyInfo extends SignatureElementProxy {
|
||||
if (currentChild.getNodeType() == Node.ELEMENT_NODE) {
|
||||
for (int k = 0; k < storageLength; k++) {
|
||||
StorageResolver storage =
|
||||
(StorageResolver) this._storageResolvers.get(k);
|
||||
this._storageResolvers.get(k);
|
||||
|
||||
SecretKey sk = keyResolver
|
||||
.engineLookupAndResolveSecretKey((Element) currentChild, uri, storage);
|
||||
@ -1012,7 +1012,7 @@ public class KeyInfo extends SignatureElementProxy {
|
||||
/**
|
||||
* Stores the individual (per-KeyInfo) {@link KeyResolver}s
|
||||
*/
|
||||
List _internalKeyResolvers = null;
|
||||
List<KeyResolverSpi> _internalKeyResolvers = null;
|
||||
|
||||
/**
|
||||
* This method is used to add a custom {@link KeyResolverSpi} to a KeyInfo
|
||||
@ -1022,7 +1022,7 @@ public class KeyInfo extends SignatureElementProxy {
|
||||
*/
|
||||
public void registerInternalKeyResolver(KeyResolverSpi realKeyResolver) {
|
||||
if (_internalKeyResolvers==null) {
|
||||
_internalKeyResolvers=new ArrayList();
|
||||
_internalKeyResolvers=new ArrayList<KeyResolverSpi>();
|
||||
}
|
||||
this._internalKeyResolvers.add(realKeyResolver);
|
||||
}
|
||||
@ -1044,11 +1044,11 @@ public class KeyInfo extends SignatureElementProxy {
|
||||
* @return the KeyResolverSpi for the index.
|
||||
*/
|
||||
KeyResolverSpi itemInternalKeyResolver(int i) {
|
||||
return (KeyResolverSpi) this._internalKeyResolvers.get(i);
|
||||
return this._internalKeyResolvers.get(i);
|
||||
}
|
||||
|
||||
/** Field _storageResolvers */
|
||||
List _storageResolvers = nullList;
|
||||
List<StorageResolver> _storageResolvers = nullList;
|
||||
|
||||
/**
|
||||
* Method addStorageResolver
|
||||
@ -1057,7 +1057,7 @@ public class KeyInfo extends SignatureElementProxy {
|
||||
*/
|
||||
public void addStorageResolver(StorageResolver storageResolver) {
|
||||
if (_storageResolvers == nullList ){
|
||||
_storageResolvers=new ArrayList();
|
||||
_storageResolvers=new ArrayList<StorageResolver>();
|
||||
}
|
||||
this._storageResolvers.add(storageResolver);
|
||||
|
||||
|
@ -52,7 +52,7 @@ public class KeyResolver {
|
||||
static boolean _alreadyInitialized = false;
|
||||
|
||||
/** Field _resolverVector */
|
||||
static List _resolverVector = null;
|
||||
static List<KeyResolver> _resolverVector = null;
|
||||
|
||||
/** Field _resolverSpi */
|
||||
protected KeyResolverSpi _resolverSpi = null;
|
||||
@ -85,12 +85,12 @@ public class KeyResolver {
|
||||
return KeyResolver._resolverVector.size();
|
||||
}
|
||||
|
||||
public static void hit(Iterator hintI) {
|
||||
public static void hit(Iterator<KeyResolverSpi> hintI) {
|
||||
ResolverIterator hint = (ResolverIterator) hintI;
|
||||
int i = hint.i;
|
||||
if (i!=1 && hint.res ==_resolverVector) {
|
||||
List resolverVector=(List)((ArrayList)_resolverVector).clone();
|
||||
Object ob=resolverVector.remove(i-1);
|
||||
List<KeyResolver> resolverVector=getResolverVectorClone();
|
||||
KeyResolver ob=resolverVector.remove(i-1);
|
||||
resolverVector.add(0,ob);
|
||||
_resolverVector=resolverVector;
|
||||
} else {
|
||||
@ -113,12 +113,9 @@ public class KeyResolver {
|
||||
throws KeyResolverException {
|
||||
|
||||
// use the old vector to not be hit by updates
|
||||
List resolverVector = KeyResolver._resolverVector;
|
||||
for (int i = 0; i < resolverVector.size(); i++) {
|
||||
KeyResolver resolver=
|
||||
(KeyResolver) resolverVector.get(i);
|
||||
|
||||
if (resolver==null) {
|
||||
List<KeyResolver> resolverVector = KeyResolver._resolverVector;
|
||||
for (KeyResolver resolver : resolverVector) {
|
||||
if (resolver==null) {
|
||||
Object exArgs[] = {
|
||||
(((element != null)
|
||||
&& (element.getNodeType() == Node.ELEMENT_NODE))
|
||||
@ -157,10 +154,8 @@ public class KeyResolver {
|
||||
Element element, String BaseURI, StorageResolver storage)
|
||||
throws KeyResolverException {
|
||||
|
||||
List resolverVector = KeyResolver._resolverVector;
|
||||
for (int i = 0; i < resolverVector.size(); i++) {
|
||||
KeyResolver resolver=
|
||||
(KeyResolver) resolverVector.get(i);
|
||||
List<KeyResolver> resolverVector = KeyResolver._resolverVector;
|
||||
for (KeyResolver resolver : resolverVector) {
|
||||
|
||||
if (resolver==null) {
|
||||
Object exArgs[] = {
|
||||
@ -176,11 +171,11 @@ public class KeyResolver {
|
||||
|
||||
PublicKey cert=resolver.resolvePublicKey(element, BaseURI, storage);
|
||||
if (cert!=null) {
|
||||
if (i!=0 && resolverVector==_resolverVector) {
|
||||
if (resolverVector.indexOf(resolver)!=0 && resolverVector==_resolverVector) {
|
||||
//update resolver.
|
||||
resolverVector=(List)((ArrayList)_resolverVector).clone();
|
||||
Object ob=resolverVector.remove(i);
|
||||
resolverVector.add(0,ob);
|
||||
resolverVector=getResolverVectorClone();
|
||||
resolverVector.remove(resolver);
|
||||
resolverVector.add(0,resolver);
|
||||
_resolverVector=resolverVector;
|
||||
}
|
||||
return cert;
|
||||
@ -195,13 +190,19 @@ public class KeyResolver {
|
||||
throw new KeyResolverException("utils.resolver.noClass", exArgs);
|
||||
}
|
||||
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
private static List<KeyResolver> getResolverVectorClone() {
|
||||
return (List<KeyResolver>)((ArrayList<KeyResolver>)_resolverVector).clone();
|
||||
}
|
||||
|
||||
/**
|
||||
* The init() function is called by com.sun.org.apache.xml.internal.security.Init.init()
|
||||
*/
|
||||
public static void init() {
|
||||
|
||||
if (!KeyResolver._alreadyInitialized) {
|
||||
KeyResolver._resolverVector = new ArrayList(10);
|
||||
KeyResolver._resolverVector = new ArrayList<KeyResolver>(10);
|
||||
_alreadyInitialized = true;
|
||||
}
|
||||
}
|
||||
@ -230,8 +231,8 @@ public class KeyResolver {
|
||||
*
|
||||
* @param className
|
||||
*/
|
||||
public static void registerAtStart(String className) {
|
||||
KeyResolver._resolverVector.add(0, className);
|
||||
public static void registerAtStart(String className) throws ClassNotFoundException, IllegalAccessException, InstantiationException {
|
||||
register(className);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -322,11 +323,11 @@ public class KeyResolver {
|
||||
return this._resolverSpi.getClass().getName();
|
||||
}
|
||||
|
||||
static class ResolverIterator implements Iterator {
|
||||
List res;
|
||||
Iterator it;
|
||||
static class ResolverIterator implements Iterator<KeyResolverSpi> {
|
||||
List<KeyResolver> res;
|
||||
Iterator<KeyResolver> it;
|
||||
int i;
|
||||
public ResolverIterator(List list) {
|
||||
public ResolverIterator(List<KeyResolver> list) {
|
||||
res = list;
|
||||
it = res.iterator();
|
||||
}
|
||||
@ -335,9 +336,9 @@ public class KeyResolver {
|
||||
return it.hasNext();
|
||||
}
|
||||
|
||||
public Object next() {
|
||||
public KeyResolverSpi next() {
|
||||
i++;
|
||||
KeyResolver resolver = (KeyResolver) it.next();
|
||||
KeyResolver resolver = it.next();
|
||||
if (resolver==null) {
|
||||
throw new RuntimeException("utils.resolver.noClass");
|
||||
}
|
||||
@ -351,7 +352,7 @@ public class KeyResolver {
|
||||
}
|
||||
|
||||
};
|
||||
public static Iterator iterator() {
|
||||
public static Iterator<KeyResolverSpi> iterator() {
|
||||
return new ResolverIterator(_resolverVector);
|
||||
}
|
||||
}
|
||||
|
8
jdk/src/share/classes/com/sun/org/apache/xml/internal/security/keys/keyresolver/KeyResolverSpi.java
8
jdk/src/share/classes/com/sun/org/apache/xml/internal/security/keys/keyresolver/KeyResolverSpi.java
@ -32,7 +32,7 @@ import org.w3c.dom.Element;
|
||||
/**
|
||||
* This class is abstract class for a child KeyInfo Elemnet.
|
||||
*
|
||||
* If you want the your KeyResolver, at firstly you must extand this class, and register
|
||||
* If you want your KeyResolver, at first you must extend this class, and register
|
||||
* as following in config.xml
|
||||
* <PRE>
|
||||
* <KeyResolver URI="http://www.w3.org/2000/09/xmldsig#KeyValue"
|
||||
@ -177,7 +177,7 @@ public abstract class KeyResolverSpi {
|
||||
}
|
||||
|
||||
/** Field _properties */
|
||||
protected java.util.Map _properties = null;
|
||||
protected java.util.Map<String,String> _properties = null;
|
||||
|
||||
protected boolean globalResolver=false;
|
||||
|
||||
@ -189,7 +189,7 @@ public abstract class KeyResolverSpi {
|
||||
*/
|
||||
public void engineSetProperty(String key, String value) {
|
||||
if (_properties==null)
|
||||
_properties=new HashMap();
|
||||
_properties=new HashMap<String,String>();
|
||||
this._properties.put(key, value);
|
||||
}
|
||||
|
||||
@ -203,7 +203,7 @@ public abstract class KeyResolverSpi {
|
||||
if (_properties==null)
|
||||
return null;
|
||||
|
||||
return (String) this._properties.get(key);
|
||||
return this._properties.get(key);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -278,18 +278,18 @@ public class RetrievalMethodResolver extends KeyResolverSpi {
|
||||
return null;
|
||||
}
|
||||
|
||||
static Element getDocumentElement(Set set) {
|
||||
Iterator it=set.iterator();
|
||||
static Element getDocumentElement(Set<Node> set) {
|
||||
Iterator<Node> it=set.iterator();
|
||||
Element e=null;
|
||||
while (it.hasNext()) {
|
||||
Node currentNode=(Node)it.next();
|
||||
Node currentNode=it.next();
|
||||
if (currentNode instanceof Element) {
|
||||
e=(Element)currentNode;
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
List parents=new ArrayList(10);
|
||||
List<Element> parents=new ArrayList<Element>(10);
|
||||
|
||||
//Obtain all the parents of the elemnt
|
||||
do {
|
||||
@ -301,10 +301,10 @@ public class RetrievalMethodResolver extends KeyResolverSpi {
|
||||
e=(Element)n;
|
||||
} while (e!=null);
|
||||
//Visit them in reverse order.
|
||||
ListIterator it2=parents.listIterator(parents.size()-1);
|
||||
ListIterator<Element> it2=parents.listIterator(parents.size()-1);
|
||||
Element ele=null;
|
||||
while (it2.hasPrevious()) {
|
||||
ele=(Element)it2.previous();
|
||||
ele=it2.previous();
|
||||
if (set.contains(ele)) {
|
||||
return ele;
|
||||
}
|
||||
|
@ -42,10 +42,10 @@ public class StorageResolver {
|
||||
java.util.logging.Logger.getLogger(StorageResolver.class.getName());
|
||||
|
||||
/** Field _storageResolvers */
|
||||
List _storageResolvers = null;
|
||||
List<Object> _storageResolvers = null;
|
||||
|
||||
/** Field _iterator */
|
||||
Iterator _iterator = null;
|
||||
Iterator<Object> _iterator = null;
|
||||
|
||||
/**
|
||||
* Constructor StorageResolver
|
||||
@ -69,7 +69,7 @@ public class StorageResolver {
|
||||
*/
|
||||
public void add(StorageResolverSpi resolver) {
|
||||
if (_storageResolvers==null)
|
||||
_storageResolvers=new ArrayList();
|
||||
_storageResolvers=new ArrayList<Object>();
|
||||
this._storageResolvers.add(resolver);
|
||||
|
||||
this._iterator = null;
|
||||
@ -121,11 +121,11 @@ public class StorageResolver {
|
||||
* @return the iterator for the resolvers.
|
||||
*
|
||||
*/
|
||||
public Iterator getIterator() {
|
||||
public Iterator<Object> getIterator() {
|
||||
|
||||
if (this._iterator == null) {
|
||||
if (_storageResolvers==null)
|
||||
_storageResolvers=new ArrayList();
|
||||
_storageResolvers=new ArrayList<Object>();
|
||||
this._iterator = new StorageResolverIterator(this._storageResolvers.iterator());
|
||||
}
|
||||
|
||||
@ -141,7 +141,7 @@ public class StorageResolver {
|
||||
|
||||
if (this._iterator == null) {
|
||||
if (_storageResolvers==null)
|
||||
_storageResolvers=new ArrayList();
|
||||
_storageResolvers=new ArrayList<Object>();
|
||||
this._iterator = new StorageResolverIterator(this._storageResolvers.iterator());
|
||||
}
|
||||
|
||||
@ -163,17 +163,17 @@ public class StorageResolver {
|
||||
* @author $Author: mullan $
|
||||
* @version $Revision: 1.5 $
|
||||
*/
|
||||
static class StorageResolverIterator implements Iterator {
|
||||
static class StorageResolverIterator implements Iterator<Object> {
|
||||
|
||||
/** Field _resolvers */
|
||||
Iterator _resolvers = null;
|
||||
Iterator<Object> _resolvers = null;
|
||||
|
||||
/**
|
||||
* Constructor FilesystemIterator
|
||||
*
|
||||
* @param resolvers
|
||||
*/
|
||||
public StorageResolverIterator(Iterator resolvers) {
|
||||
public StorageResolverIterator(Iterator<Object> resolvers) {
|
||||
this._resolvers = resolvers;
|
||||
}
|
||||
|
||||
|
2
jdk/src/share/classes/com/sun/org/apache/xml/internal/security/keys/storage/StorageResolverSpi.java
2
jdk/src/share/classes/com/sun/org/apache/xml/internal/security/keys/storage/StorageResolverSpi.java
@ -36,5 +36,5 @@ public abstract class StorageResolverSpi {
|
||||
*
|
||||
* @return the iterator for the storage
|
||||
*/
|
||||
public abstract Iterator getIterator();
|
||||
public abstract Iterator<?> getIterator();
|
||||
}
|
||||
|
@ -54,10 +54,10 @@ public class CertsInFilesystemDirectoryResolver extends StorageResolverSpi {
|
||||
String _merlinsCertificatesDir = null;
|
||||
|
||||
/** Field _certs */
|
||||
private List _certs = new ArrayList();
|
||||
private List<X509Certificate> _certs = new ArrayList<X509Certificate>();
|
||||
|
||||
/** Field _iterator */
|
||||
Iterator _iterator = null;
|
||||
Iterator<X509Certificate> _iterator = null;
|
||||
|
||||
/**
|
||||
*
|
||||
@ -83,7 +83,7 @@ public class CertsInFilesystemDirectoryResolver extends StorageResolverSpi {
|
||||
private void readCertsFromHarddrive() throws StorageResolverException {
|
||||
|
||||
File certDir = new File(this._merlinsCertificatesDir);
|
||||
ArrayList al = new ArrayList();
|
||||
ArrayList<String> al = new ArrayList<String>();
|
||||
String[] names = certDir.list();
|
||||
|
||||
for (int i = 0; i < names.length; i++) {
|
||||
@ -108,7 +108,7 @@ public class CertsInFilesystemDirectoryResolver extends StorageResolverSpi {
|
||||
|
||||
for (int i = 0; i < al.size(); i++) {
|
||||
String filename = certDir.getAbsolutePath() + File.separator
|
||||
+ (String) al.get(i);
|
||||
+ al.get(i);
|
||||
File file = new File(filename);
|
||||
boolean added = false;
|
||||
String dn = null;
|
||||
@ -146,7 +146,7 @@ public class CertsInFilesystemDirectoryResolver extends StorageResolverSpi {
|
||||
}
|
||||
|
||||
/** @inheritDoc */
|
||||
public Iterator getIterator() {
|
||||
public Iterator<X509Certificate> getIterator() {
|
||||
return this._iterator;
|
||||
}
|
||||
|
||||
@ -156,10 +156,10 @@ public class CertsInFilesystemDirectoryResolver extends StorageResolverSpi {
|
||||
* @author $Author: mullan $
|
||||
* @version $Revision: 1.5 $
|
||||
*/
|
||||
private static class FilesystemIterator implements Iterator {
|
||||
private static class FilesystemIterator implements Iterator<X509Certificate> {
|
||||
|
||||
/** Field _certs */
|
||||
List _certs = null;
|
||||
List<X509Certificate> _certs = null;
|
||||
|
||||
/** Field _i */
|
||||
int _i;
|
||||
@ -169,7 +169,7 @@ public class CertsInFilesystemDirectoryResolver extends StorageResolverSpi {
|
||||
*
|
||||
* @param certs
|
||||
*/
|
||||
public FilesystemIterator(List certs) {
|
||||
public FilesystemIterator(List<X509Certificate> certs) {
|
||||
this._certs = certs;
|
||||
this._i = 0;
|
||||
}
|
||||
@ -180,7 +180,7 @@ public class CertsInFilesystemDirectoryResolver extends StorageResolverSpi {
|
||||
}
|
||||
|
||||
/** @inheritDoc */
|
||||
public Object next() {
|
||||
public X509Certificate next() {
|
||||
return this._certs.get(this._i++);
|
||||
}
|
||||
|
||||
@ -206,8 +206,8 @@ public class CertsInFilesystemDirectoryResolver extends StorageResolverSpi {
|
||||
new CertsInFilesystemDirectoryResolver(
|
||||
"data/ie/baltimore/merlin-examples/merlin-xmldsig-eighteen/certs");
|
||||
|
||||
for (Iterator i = krs.getIterator(); i.hasNext(); ) {
|
||||
X509Certificate cert = (X509Certificate) i.next();
|
||||
for (Iterator<X509Certificate> i = krs.getIterator(); i.hasNext(); ) {
|
||||
X509Certificate cert = i.next();
|
||||
byte[] ski =
|
||||
com.sun.org.apache.xml.internal.security.keys.content.x509.XMLX509SKI
|
||||
.getSKIBytesFromCert(cert);
|
||||
|
@ -42,7 +42,7 @@ public class KeyStoreResolver extends StorageResolverSpi {
|
||||
KeyStore _keyStore = null;
|
||||
|
||||
/** Field _iterator */
|
||||
Iterator _iterator = null;
|
||||
Iterator<X509Certificate> _iterator = null;
|
||||
|
||||
/**
|
||||
* Constructor KeyStoreResolver
|
||||
@ -56,7 +56,7 @@ public class KeyStoreResolver extends StorageResolverSpi {
|
||||
}
|
||||
|
||||
/** @inheritDoc */
|
||||
public Iterator getIterator() {
|
||||
public Iterator<X509Certificate> getIterator() {
|
||||
return this._iterator;
|
||||
}
|
||||
|
||||
@ -66,13 +66,13 @@ public class KeyStoreResolver extends StorageResolverSpi {
|
||||
* @author $Author: mullan $
|
||||
* @version $Revision: 1.5 $
|
||||
*/
|
||||
static class KeyStoreIterator implements Iterator {
|
||||
static class KeyStoreIterator implements Iterator<X509Certificate> {
|
||||
|
||||
/** Field _keyStore */
|
||||
KeyStore _keyStore = null;
|
||||
|
||||
/** Field _aliases */
|
||||
Enumeration _aliases = null;
|
||||
Enumeration<String> _aliases = null;
|
||||
|
||||
/**
|
||||
* Constructor KeyStoreIterator
|
||||
@ -97,12 +97,13 @@ public class KeyStoreResolver extends StorageResolverSpi {
|
||||
}
|
||||
|
||||
/** @inheritDoc */
|
||||
public Object next() {
|
||||
@SuppressWarnings("unchecked")
|
||||
public X509Certificate next() {
|
||||
|
||||
String alias = (String) this._aliases.nextElement();
|
||||
String alias = this._aliases.nextElement();
|
||||
|
||||
try {
|
||||
return this._keyStore.getCertificate(alias);
|
||||
return (X509Certificate)this._keyStore.getCertificate(alias);
|
||||
} catch (KeyStoreException ex) {
|
||||
return null;
|
||||
}
|
||||
@ -135,8 +136,8 @@ public class KeyStoreResolver extends StorageResolverSpi {
|
||||
|
||||
KeyStoreResolver krs = new KeyStoreResolver(ks);
|
||||
|
||||
for (Iterator i = krs.getIterator(); i.hasNext(); ) {
|
||||
X509Certificate cert = (X509Certificate) i.next();
|
||||
for (Iterator<X509Certificate> i = krs.getIterator(); i.hasNext(); ) {
|
||||
X509Certificate cert = i.next();
|
||||
byte[] ski =
|
||||
com.sun.org.apache.xml.internal.security.keys.content.x509.XMLX509SKI
|
||||
.getSKIBytesFromCert(cert);
|
||||
|
@ -38,7 +38,7 @@ public class SingleCertificateResolver extends StorageResolverSpi {
|
||||
X509Certificate _certificate = null;
|
||||
|
||||
/** Field _iterator */
|
||||
Iterator _iterator = null;
|
||||
Iterator<X509Certificate> _iterator = null;
|
||||
|
||||
/**
|
||||
*
|
||||
@ -51,7 +51,7 @@ public class SingleCertificateResolver extends StorageResolverSpi {
|
||||
}
|
||||
|
||||
/** @inheritDoc */
|
||||
public Iterator getIterator() {
|
||||
public Iterator<X509Certificate> getIterator() {
|
||||
return this._iterator;
|
||||
}
|
||||
|
||||
@ -61,7 +61,7 @@ public class SingleCertificateResolver extends StorageResolverSpi {
|
||||
* @author $Author: mullan $
|
||||
* @version $Revision: 1.5 $
|
||||
*/
|
||||
static class InternalIterator implements Iterator {
|
||||
static class InternalIterator implements Iterator<X509Certificate> {
|
||||
|
||||
/** Field _alreadyReturned */
|
||||
boolean _alreadyReturned = false;
|
||||
@ -84,7 +84,7 @@ public class SingleCertificateResolver extends StorageResolverSpi {
|
||||
}
|
||||
|
||||
/** @inheritDoc */
|
||||
public Object next() {
|
||||
public X509Certificate next() {
|
||||
|
||||
this._alreadyReturned = true;
|
||||
|
||||
|
@ -28,6 +28,7 @@ import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.Map;
|
||||
|
||||
import javax.xml.parsers.ParserConfigurationException;
|
||||
|
||||
@ -62,17 +63,17 @@ public class Manifest extends SignatureElementProxy {
|
||||
java.util.logging.Logger.getLogger(Manifest.class.getName());
|
||||
|
||||
/** Field _references */
|
||||
List _references;
|
||||
List<Reference> _references;
|
||||
Element[] _referencesEl;
|
||||
|
||||
/** Field verificationResults[] */
|
||||
private boolean verificationResults[] = null;
|
||||
|
||||
/** Field _resolverProperties */
|
||||
HashMap _resolverProperties = null;
|
||||
Map<String,String> _resolverProperties = null;
|
||||
|
||||
/** Field _perManifestResolvers */
|
||||
List _perManifestResolvers = null;
|
||||
List<ResourceResolver> _perManifestResolvers = null;
|
||||
|
||||
/**
|
||||
* Consturts {@link Manifest}
|
||||
@ -85,7 +86,7 @@ public class Manifest extends SignatureElementProxy {
|
||||
|
||||
XMLUtils.addReturnToElement(this._constructionElement);
|
||||
|
||||
this._references = new ArrayList();
|
||||
this._references = new ArrayList<Reference>();
|
||||
}
|
||||
|
||||
/**
|
||||
@ -117,7 +118,7 @@ public class Manifest extends SignatureElementProxy {
|
||||
}
|
||||
|
||||
// create Vector
|
||||
this._references = new ArrayList(le);
|
||||
this._references = new ArrayList<Reference>(le);
|
||||
|
||||
for (int i = 0; i < le; i++) {
|
||||
this._references.add(null);
|
||||
@ -175,7 +176,7 @@ public class Manifest extends SignatureElementProxy {
|
||||
for (int i = 0; i < this.getLength(); i++) {
|
||||
|
||||
// update the cached Reference object, the Element content is automatically updated
|
||||
Reference currentRef = (Reference) this._references.get(i);
|
||||
Reference currentRef = this._references.get(i);
|
||||
|
||||
currentRef.generateDigestValue();
|
||||
}
|
||||
@ -208,7 +209,7 @@ public class Manifest extends SignatureElementProxy {
|
||||
this._references.set(i, ref);
|
||||
}
|
||||
|
||||
return (Reference) this._references.get(i);
|
||||
return this._references.get(i);
|
||||
|
||||
}
|
||||
|
||||
@ -323,12 +324,12 @@ public class Manifest extends SignatureElementProxy {
|
||||
try {
|
||||
XMLSignatureInput signedManifestNodes =
|
||||
currentRef.dereferenceURIandPerformTransforms(null);
|
||||
Set nl = signedManifestNodes.getNodeSet();
|
||||
Set<Node> nl = signedManifestNodes.getNodeSet();
|
||||
Manifest referencedManifest = null;
|
||||
Iterator nlIterator = nl.iterator();
|
||||
Iterator<Node> nlIterator = nl.iterator();
|
||||
|
||||
findManifest: while (nlIterator.hasNext()) {
|
||||
Node n = (Node) nlIterator.next();
|
||||
Node n = nlIterator.next();
|
||||
|
||||
if ((n.getNodeType() == Node.ELEMENT_NODE) && ((Element) n)
|
||||
.getNamespaceURI()
|
||||
@ -449,7 +450,7 @@ public class Manifest extends SignatureElementProxy {
|
||||
return;
|
||||
}
|
||||
if (_perManifestResolvers==null)
|
||||
_perManifestResolvers = new ArrayList();
|
||||
_perManifestResolvers = new ArrayList<ResourceResolver>();
|
||||
this._perManifestResolvers.add(resolver);
|
||||
|
||||
}
|
||||
@ -465,7 +466,7 @@ public class Manifest extends SignatureElementProxy {
|
||||
return;
|
||||
}
|
||||
if (_perManifestResolvers==null)
|
||||
_perManifestResolvers = new ArrayList();
|
||||
_perManifestResolvers = new ArrayList<ResourceResolver>();
|
||||
this._perManifestResolvers.add(new ResourceResolver(resolverSpi));
|
||||
|
||||
}
|
||||
@ -479,7 +480,7 @@ public class Manifest extends SignatureElementProxy {
|
||||
*/
|
||||
public void setResolverProperty(String key, String value) {
|
||||
if (_resolverProperties==null) {
|
||||
_resolverProperties=new HashMap(10);
|
||||
_resolverProperties=new HashMap<String, String>(10);
|
||||
}
|
||||
this._resolverProperties.put(key, value);
|
||||
}
|
||||
@ -491,7 +492,7 @@ public class Manifest extends SignatureElementProxy {
|
||||
* @return the value
|
||||
*/
|
||||
public String getResolverProperty(String key) {
|
||||
return (String) this._resolverProperties.get(key);
|
||||
return this._resolverProperties.get(key);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -436,6 +436,7 @@ private Element digestValueElement;
|
||||
*
|
||||
* @deprecated use getContentsBeforeTransformation
|
||||
*/
|
||||
@Deprecated
|
||||
public XMLSignatureInput getTransformsInput() throws ReferenceNotInitializedException
|
||||
{
|
||||
XMLSignatureInput input=getContentsBeforeTransformation();
|
||||
@ -557,7 +558,7 @@ private Element digestValueElement;
|
||||
|
||||
try {
|
||||
XMLSignatureInput nodes = this.getNodesetBeforeFirstCanonicalization();
|
||||
Set inclusiveNamespaces = new HashSet();
|
||||
Set<String> inclusiveNamespaces = new HashSet<String>();
|
||||
|
||||
{
|
||||
Transforms transforms = this.getTransforms();
|
||||
@ -710,7 +711,7 @@ private Element digestValueElement;
|
||||
XMLSignatureInput output=this.dereferenceURIandPerformTransforms(os);
|
||||
// if signing and c14n11 property == true explicitly add
|
||||
// C14N11 transform if needed
|
||||
if (this.useC14N11 && !validating &&
|
||||
if (Reference.useC14N11 && !validating &&
|
||||
!output.isOutputStreamSet() && !output.isOctetStream()) {
|
||||
if (transforms == null) {
|
||||
transforms = new Transforms(this._doc);
|
||||
|
@ -74,7 +74,7 @@ public class XMLSignatureInput implements Cloneable {
|
||||
/**
|
||||
* The original NodeSet for this XMLSignatureInput
|
||||
*/
|
||||
Set _inputNodeSet = null;
|
||||
Set<Node> _inputNodeSet = null;
|
||||
/**
|
||||
* The original Element
|
||||
*/
|
||||
@ -107,7 +107,7 @@ public class XMLSignatureInput implements Cloneable {
|
||||
/**
|
||||
* Node Filter list.
|
||||
*/
|
||||
List nodeFilters=new ArrayList();
|
||||
List<NodeFilter> nodeFilters=new ArrayList<NodeFilter>();
|
||||
|
||||
boolean needsToBeExpanded=false;
|
||||
OutputStream outputStream=null;
|
||||
@ -164,6 +164,7 @@ public class XMLSignatureInput implements Cloneable {
|
||||
* @deprecated
|
||||
* @param inputStr the input String which including XML document or node
|
||||
*/
|
||||
@Deprecated
|
||||
public XMLSignatureInput(String inputStr) {
|
||||
this(inputStr.getBytes());
|
||||
}
|
||||
@ -179,6 +180,7 @@ public class XMLSignatureInput implements Cloneable {
|
||||
* @param encoding the encoding of <code>inputStr</code>
|
||||
* @throws UnsupportedEncodingException
|
||||
*/
|
||||
@Deprecated
|
||||
public XMLSignatureInput(String inputStr, String encoding)
|
||||
throws UnsupportedEncodingException {
|
||||
this(inputStr.getBytes(encoding));
|
||||
@ -201,7 +203,7 @@ public class XMLSignatureInput implements Cloneable {
|
||||
* @param inputNodeSet
|
||||
* @param usedXPathAPI
|
||||
*/
|
||||
public XMLSignatureInput(Set inputNodeSet) {
|
||||
public XMLSignatureInput(Set<Node> inputNodeSet) {
|
||||
this._inputNodeSet = inputNodeSet;
|
||||
}
|
||||
|
||||
@ -215,7 +217,7 @@ public class XMLSignatureInput implements Cloneable {
|
||||
* @throws ParserConfigurationException
|
||||
* @throws CanonicalizationException
|
||||
*/
|
||||
public Set getNodeSet() throws CanonicalizationException,
|
||||
public Set<Node> getNodeSet() throws CanonicalizationException,
|
||||
ParserConfigurationException, IOException, SAXException {
|
||||
return getNodeSet(false);
|
||||
}
|
||||
@ -231,7 +233,7 @@ public class XMLSignatureInput implements Cloneable {
|
||||
* @throws ParserConfigurationException
|
||||
* @throws CanonicalizationException
|
||||
*/
|
||||
public Set getNodeSet(boolean circumvent)
|
||||
public Set<Node> getNodeSet(boolean circumvent)
|
||||
throws ParserConfigurationException, IOException, SAXException,
|
||||
CanonicalizationException {
|
||||
if (this._inputNodeSet!=null) {
|
||||
@ -242,13 +244,13 @@ public class XMLSignatureInput implements Cloneable {
|
||||
if (circumvent) {
|
||||
XMLUtils.circumventBug2650(XMLUtils.getOwnerDocument(_subNode));
|
||||
}
|
||||
this._inputNodeSet = new HashSet();
|
||||
this._inputNodeSet = new HashSet<Node>();
|
||||
XMLUtils.getSet(_subNode,this._inputNodeSet, excludeNode, this.excludeComments);
|
||||
|
||||
return this._inputNodeSet;
|
||||
} else if (this.isOctetStream()) {
|
||||
convertToNodes();
|
||||
HashSet result=new HashSet();
|
||||
HashSet<Node> result=new HashSet<Node>();
|
||||
XMLUtils.getSet(_subNode, result,null,false);
|
||||
//this._inputNodeSet=result;
|
||||
return result;
|
||||
@ -447,7 +449,7 @@ public class XMLSignatureInput implements Cloneable {
|
||||
* @throws XMLSignatureException
|
||||
* @return The HTML representation for this XMLSignature
|
||||
*/
|
||||
public String getHTMLRepresentation(Set inclusiveNamespaces)
|
||||
public String getHTMLRepresentation(Set<String> inclusiveNamespaces)
|
||||
throws XMLSignatureException {
|
||||
|
||||
XMLSignatureInputDebugger db = new XMLSignatureInputDebugger( this,
|
||||
@ -584,7 +586,7 @@ public class XMLSignatureInput implements Cloneable {
|
||||
/**
|
||||
* @return the node filters
|
||||
*/
|
||||
public List getNodeFilters() {
|
||||
public List<NodeFilter> getNodeFilters() {
|
||||
// TODO Auto-generated method stub
|
||||
return nodeFilters;
|
||||
}
|
||||
|
@ -47,9 +47,9 @@ public class XMLSignatureInputDebugger {
|
||||
|
||||
|
||||
/** Field _xmlSignatureInput */
|
||||
private Set _xpathNodeSet;
|
||||
private Set<Node> _xpathNodeSet;
|
||||
|
||||
private Set _inclusiveNamespaces;
|
||||
private Set<String> _inclusiveNamespaces;
|
||||
|
||||
/** Field _doc */
|
||||
private Document _doc = null;
|
||||
@ -159,7 +159,7 @@ public class XMLSignatureInputDebugger {
|
||||
* @param inclusiveNamespace
|
||||
*/
|
||||
public XMLSignatureInputDebugger(
|
||||
XMLSignatureInput xmlSignatureInput, Set inclusiveNamespace) {
|
||||
XMLSignatureInput xmlSignatureInput, Set<String> inclusiveNamespace) {
|
||||
|
||||
this(xmlSignatureInput);
|
||||
|
||||
@ -182,7 +182,7 @@ public class XMLSignatureInputDebugger {
|
||||
{
|
||||
|
||||
// get only a single node as anchor to fetch the owner document
|
||||
Node n = (Node) this._xpathNodeSet.iterator().next();
|
||||
Node n = this._xpathNodeSet.iterator().next();
|
||||
|
||||
this._doc = XMLUtils.getOwnerDocument(n);
|
||||
}
|
||||
@ -341,10 +341,10 @@ public class XMLSignatureInputDebugger {
|
||||
// we output all Attrs which are available
|
||||
NamedNodeMap attrs = currentElement.getAttributes();
|
||||
int attrsLength = attrs.getLength();
|
||||
Object attrs2[] = new Object[attrsLength];
|
||||
Attr attrs2[] = new Attr[attrsLength];
|
||||
|
||||
for (int i = 0; i < attrsLength; i++) {
|
||||
attrs2[i] = attrs.item(i);
|
||||
attrs2[i] = (Attr)attrs.item(i);
|
||||
}
|
||||
|
||||
Arrays.sort(attrs2, ATTR_COMPARE);
|
||||
|
@ -25,6 +25,7 @@ import java.io.OutputStream;
|
||||
import java.security.AccessController;
|
||||
import java.security.PrivilegedAction;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import javax.xml.parsers.ParserConfigurationException;
|
||||
|
||||
import com.sun.org.apache.xml.internal.security.c14n.CanonicalizationException;
|
||||
@ -65,9 +66,9 @@ public final class Transform extends SignatureElementProxy {
|
||||
private static boolean alreadyInitialized = false;
|
||||
|
||||
/** All available Transform classes are registered here */
|
||||
private static HashMap transformClassHash = null;
|
||||
private static Map<String, Class<?>> transformClassHash = null;
|
||||
|
||||
private static HashMap transformSpiHash = new HashMap();
|
||||
private static Map<String, TransformSpi> transformSpiHash = new HashMap<String, TransformSpi>();
|
||||
|
||||
private TransformSpi transformSpi = null;
|
||||
|
||||
@ -209,7 +210,7 @@ public final class Transform extends SignatureElementProxy {
|
||||
*/
|
||||
public static void init() {
|
||||
if (!alreadyInitialized) {
|
||||
transformClassHash = new HashMap(10);
|
||||
transformClassHash = new HashMap<String,Class<?>>(10);
|
||||
// make sure builtin algorithms are all registered first
|
||||
com.sun.org.apache.xml.internal.security.Init.init();
|
||||
alreadyInitialized = true;
|
||||
@ -231,7 +232,7 @@ public final class Transform extends SignatureElementProxy {
|
||||
throws AlgorithmAlreadyRegisteredException {
|
||||
|
||||
// are we already registered?
|
||||
Class registeredClass = getImplementingClass(algorithmURI);
|
||||
Class<? extends TransformSpi> registeredClass = getImplementingClass(algorithmURI);
|
||||
if ((registeredClass != null) ) {
|
||||
Object exArgs[] = { algorithmURI, registeredClass };
|
||||
throw new AlgorithmAlreadyRegisteredException(
|
||||
@ -331,20 +332,21 @@ public final class Transform extends SignatureElementProxy {
|
||||
* @param URI
|
||||
* @return The name of the class implementing the URI.
|
||||
*/
|
||||
private static Class getImplementingClass(String URI) {
|
||||
return (Class) transformClassHash.get(URI);
|
||||
@SuppressWarnings("unchecked")
|
||||
private static Class<? extends TransformSpi> getImplementingClass(String URI) {
|
||||
return (Class<? extends TransformSpi>)transformClassHash.get(URI);
|
||||
}
|
||||
|
||||
private static TransformSpi getTransformSpi(String URI)
|
||||
throws InvalidTransformException {
|
||||
try {
|
||||
Object value = transformSpiHash.get(URI);
|
||||
TransformSpi value = transformSpiHash.get(URI);
|
||||
if (value != null) {
|
||||
return (TransformSpi) value;
|
||||
return value;
|
||||
}
|
||||
Class cl = (Class) transformClassHash.get(URI);
|
||||
Class<? extends TransformSpi> cl = getImplementingClass(URI);
|
||||
if (cl != null) {
|
||||
TransformSpi tr = (TransformSpi) cl.newInstance();
|
||||
TransformSpi tr = cl.newInstance();
|
||||
transformSpiHash.put(URI, tr);
|
||||
return tr;
|
||||
}
|
||||
|
@ -41,6 +41,7 @@ public abstract class TransformSpi {
|
||||
* For API compatibility not thread safe.
|
||||
* @deprecated
|
||||
*/
|
||||
@Deprecated
|
||||
protected Transform _transformObject = null;
|
||||
/**
|
||||
* Set the transform object.
|
||||
@ -48,6 +49,7 @@ public abstract class TransformSpi {
|
||||
* @param transform the Transform
|
||||
* @deprecated
|
||||
*/
|
||||
@Deprecated
|
||||
protected void setTransform(Transform transform) {
|
||||
this._transformObject = transform;
|
||||
}
|
||||
@ -120,6 +122,7 @@ public abstract class TransformSpi {
|
||||
* @throws SAXException
|
||||
* @throws TransformationException
|
||||
*/
|
||||
@Deprecated
|
||||
protected XMLSignatureInput enginePerformTransform(
|
||||
XMLSignatureInput input)
|
||||
throws IOException,
|
||||
|
@ -154,6 +154,7 @@ public class FuncHere extends Function {
|
||||
* @param vars
|
||||
* @param globalsSize
|
||||
*/
|
||||
@SuppressWarnings("rawtypes")
|
||||
public void fixupVariables(java.util.Vector vars, int globalsSize) {
|
||||
|
||||
// do nothing
|
||||
|
@ -96,9 +96,9 @@ public class TransformXPath2Filter extends TransformSpi {
|
||||
throws TransformationException {
|
||||
CachedXPathAPIHolder.setDoc(_transformObject.getElement().getOwnerDocument());
|
||||
try {
|
||||
List unionNodes=new ArrayList();
|
||||
List substractNodes=new ArrayList();
|
||||
List intersectNodes=new ArrayList();
|
||||
List<NodeList> unionNodes=new ArrayList<NodeList>();
|
||||
List<NodeList> substractNodes=new ArrayList<NodeList>();
|
||||
List<NodeList> intersectNodes=new ArrayList<NodeList>();
|
||||
|
||||
CachedXPathFuncHereAPI xPathFuncHereAPI =
|
||||
new CachedXPathFuncHereAPI(CachedXPathAPIHolder.getCachedXPathAPI());
|
||||
@ -170,18 +170,15 @@ public class TransformXPath2Filter extends TransformSpi {
|
||||
throw new TransformationException("empty", ex);
|
||||
}
|
||||
}
|
||||
static Set convertNodeListToSet(List l){
|
||||
Set result=new HashSet();
|
||||
for (int j=0;j<l.size();j++) {
|
||||
NodeList rootNodes=(NodeList) l.get(j);
|
||||
int length = rootNodes.getLength();
|
||||
static Set<Node> convertNodeListToSet(List<NodeList> l){
|
||||
Set<Node> result=new HashSet<Node>();
|
||||
|
||||
for (NodeList rootNodes : l) {
|
||||
int length = rootNodes.getLength();
|
||||
for (int i = 0; i < length; i++) {
|
||||
Node rootNode = rootNodes.item(i);
|
||||
result.add(rootNode);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
return result;
|
||||
}
|
||||
@ -191,8 +188,8 @@ class XPath2NodeFilter implements NodeFilter {
|
||||
boolean hasUnionNodes;
|
||||
boolean hasSubstractNodes;
|
||||
boolean hasIntersectNodes;
|
||||
XPath2NodeFilter(Set unionNodes, Set substractNodes,
|
||||
Set intersectNodes) {
|
||||
XPath2NodeFilter(Set<Node> unionNodes, Set<Node> substractNodes,
|
||||
Set<Node> intersectNodes) {
|
||||
this.unionNodes=unionNodes;
|
||||
hasUnionNodes=!unionNodes.isEmpty();
|
||||
this.substractNodes=substractNodes;
|
||||
@ -200,9 +197,9 @@ class XPath2NodeFilter implements NodeFilter {
|
||||
this.intersectNodes=intersectNodes;
|
||||
hasIntersectNodes=!intersectNodes.isEmpty();
|
||||
}
|
||||
Set unionNodes;
|
||||
Set substractNodes;
|
||||
Set intersectNodes;
|
||||
Set<Node> unionNodes;
|
||||
Set<Node> substractNodes;
|
||||
Set<Node> intersectNodes;
|
||||
|
||||
|
||||
/**
|
||||
@ -282,16 +279,15 @@ class XPath2NodeFilter implements NodeFilter {
|
||||
*
|
||||
* @return if rooted bye the rootnodes
|
||||
*/
|
||||
static boolean rooted(Node currentNode, Set nodeList ) {
|
||||
static boolean rooted(Node currentNode, Set<Node> nodeList ) {
|
||||
if (nodeList.contains(currentNode)) {
|
||||
return true;
|
||||
}
|
||||
Iterator it=nodeList.iterator();
|
||||
while (it.hasNext()) {
|
||||
Node rootNode = (Node) it.next();
|
||||
if (XMLUtils.isDescendantOrSelf(rootNode,currentNode)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
for(Node rootNode : nodeList) {
|
||||
if (XMLUtils.isDescendantOrSelf(rootNode,currentNode)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
@ -303,7 +299,7 @@ class XPath2NodeFilter implements NodeFilter {
|
||||
*
|
||||
* @return if rooted bye the rootnodes
|
||||
*/
|
||||
static boolean inList(Node currentNode, Set nodeList ) {
|
||||
static boolean inList(Node currentNode, Set<Node> nodeList ) {
|
||||
return nodeList.contains(currentNode);
|
||||
}
|
||||
}
|
||||
|
@ -62,14 +62,6 @@ public class TransformXSLT extends TransformSpi {
|
||||
static final String defaultXSLTSpecNSprefix = "xslt";
|
||||
static final String XSLTSTYLESHEET = "stylesheet";
|
||||
|
||||
// check for secure processing feature
|
||||
private static Class xClass = null;
|
||||
static {
|
||||
try {
|
||||
xClass = Class.forName("javax.xml.XMLConstants");
|
||||
} catch (Exception e) {}
|
||||
}
|
||||
|
||||
static java.util.logging.Logger log =
|
||||
java.util.logging.Logger.getLogger(
|
||||
TransformXSLT.class.getName());
|
||||
@ -101,10 +93,6 @@ public class TransformXSLT extends TransformSpi {
|
||||
protected XMLSignatureInput enginePerformTransform(XMLSignatureInput input,OutputStream baos, Transform _transformObject)
|
||||
throws IOException,
|
||||
TransformationException {
|
||||
if (xClass == null) {
|
||||
Object exArgs[] = { "SECURE_PROCESSING_FEATURE not supported" };
|
||||
throw new TransformationException("generic.EmptyMessage", exArgs);
|
||||
}
|
||||
try {
|
||||
Element transformElement = _transformObject.getElement();
|
||||
|
||||
@ -119,11 +107,9 @@ public class TransformXSLT extends TransformSpi {
|
||||
}
|
||||
|
||||
TransformerFactory tFactory = TransformerFactory.newInstance();
|
||||
Class c = tFactory.getClass();
|
||||
Method m = c.getMethod("setFeature", new Class[] {String.class, boolean.class});
|
||||
// Process XSLT stylesheets in a secure manner
|
||||
m.invoke(tFactory, new Object[] {"http://javax.xml.XMLConstants/feature/secure-processing", Boolean.TRUE});
|
||||
|
||||
// Process XSLT stylesheets in a secure manner
|
||||
tFactory.setFeature("http://javax.xml.XMLConstants/feature/secure-processing", Boolean.TRUE);
|
||||
/*
|
||||
* This transform requires an octet stream as input. If the actual
|
||||
* input is an XPath node-set, then the signature application should
|
||||
@ -192,18 +178,6 @@ public class TransformXSLT extends TransformSpi {
|
||||
} catch (TransformerException ex) {
|
||||
Object exArgs[] = { ex.getMessage() };
|
||||
|
||||
throw new TransformationException("generic.EmptyMessage", exArgs, ex);
|
||||
} catch (NoSuchMethodException ex) {
|
||||
Object exArgs[] = { ex.getMessage() };
|
||||
|
||||
throw new TransformationException("generic.EmptyMessage", exArgs, ex);
|
||||
} catch (IllegalAccessException ex) {
|
||||
Object exArgs[] = { ex.getMessage() };
|
||||
|
||||
throw new TransformationException("generic.EmptyMessage", exArgs, ex);
|
||||
} catch (java.lang.reflect.InvocationTargetException ex) {
|
||||
Object exArgs[] = { ex.getMessage() };
|
||||
|
||||
throw new TransformationException("generic.EmptyMessage", exArgs, ex);
|
||||
}
|
||||
}
|
||||
|
@ -74,19 +74,16 @@ public class InclusiveNamespaces extends ElementProxy
|
||||
* @param doc
|
||||
* @param prefixes
|
||||
*/
|
||||
public InclusiveNamespaces(Document doc, Set prefixes) {
|
||||
public InclusiveNamespaces(Document doc, Set<String> prefixes) {
|
||||
|
||||
super(doc);
|
||||
|
||||
StringBuffer sb = new StringBuffer();
|
||||
SortedSet prefixList = new TreeSet(prefixes);
|
||||
SortedSet<String> prefixList = new TreeSet<String>(prefixes);
|
||||
|
||||
|
||||
Iterator it = prefixList.iterator();
|
||||
|
||||
while (it.hasNext()) {
|
||||
String prefix = (String) it.next();
|
||||
|
||||
for (String prefix : prefixList) {
|
||||
if (prefix.equals("xmlns")) {
|
||||
sb.append("#default ");
|
||||
} else {
|
||||
@ -138,9 +135,9 @@ public class InclusiveNamespaces extends ElementProxy
|
||||
* @param inclusiveNamespaces
|
||||
* @return A set to string
|
||||
*/
|
||||
public static SortedSet prefixStr2Set(String inclusiveNamespaces) {
|
||||
public static SortedSet<String> prefixStr2Set(String inclusiveNamespaces) {
|
||||
|
||||
SortedSet prefixes = new TreeSet();
|
||||
SortedSet<String> prefixes = new TreeSet<String>();
|
||||
|
||||
if ((inclusiveNamespaces == null)
|
||||
|| (inclusiveNamespaces.length() == 0)) {
|
||||
|
@ -28,8 +28,8 @@ import org.w3c.dom.Document;
|
||||
*/
|
||||
public class CachedXPathAPIHolder {
|
||||
|
||||
static ThreadLocal local=new ThreadLocal();
|
||||
static ThreadLocal localDoc=new ThreadLocal();
|
||||
static ThreadLocal<CachedXPathAPI> local=new ThreadLocal<CachedXPathAPI>();
|
||||
static ThreadLocal<Document> localDoc=new ThreadLocal<Document>();
|
||||
|
||||
/**
|
||||
* Sets the doc for the xpath transformation. Resets the cache if needed
|
||||
@ -37,7 +37,7 @@ public class CachedXPathAPIHolder {
|
||||
*/
|
||||
public static void setDoc(Document doc) {
|
||||
if (localDoc.get()!=doc) {
|
||||
CachedXPathAPI cx=(CachedXPathAPI)local.get();
|
||||
CachedXPathAPI cx=local.get();
|
||||
if (cx==null) {
|
||||
cx=new CachedXPathAPI();
|
||||
local.set(cx);
|
||||
@ -54,7 +54,7 @@ public class CachedXPathAPIHolder {
|
||||
* @return the cachexpathapi for this thread
|
||||
*/
|
||||
public static CachedXPathAPI getCachedXPathAPI() {
|
||||
CachedXPathAPI cx=(CachedXPathAPI)local.get();
|
||||
CachedXPathAPI cx=local.get();
|
||||
if (cx==null) {
|
||||
cx=new CachedXPathAPI();
|
||||
local.set(cx);
|
||||
|
@ -173,6 +173,7 @@ public class CachedXPathFuncHereAPI {
|
||||
* @throws TransformerException
|
||||
* @deprecated
|
||||
*/
|
||||
@Deprecated
|
||||
public NodeIterator selectNodeIterator(
|
||||
Node contextNode, Node xpathnode, Node namespaceNode)
|
||||
throws TransformerException {
|
||||
@ -195,6 +196,7 @@ public class CachedXPathFuncHereAPI {
|
||||
* @throws TransformerException
|
||||
* @deprecated
|
||||
*/
|
||||
@Deprecated
|
||||
public NodeList selectNodeList(Node contextNode, Node xpathnode)
|
||||
throws TransformerException {
|
||||
return selectNodeList(contextNode, xpathnode, getStrFromNode(xpathnode), contextNode);
|
||||
@ -239,6 +241,7 @@ public class CachedXPathFuncHereAPI {
|
||||
* @throws TransformerException
|
||||
* @deprecated
|
||||
*/
|
||||
@Deprecated
|
||||
public XObject eval(Node contextNode, Node xpathnode)
|
||||
throws TransformerException {
|
||||
return eval(contextNode, xpathnode, getStrFromNode(xpathnode),contextNode);
|
||||
@ -375,12 +378,12 @@ public class CachedXPathFuncHereAPI {
|
||||
|
||||
private XPath createXPath(String str, PrefixResolver prefixResolver) throws TransformerException {
|
||||
XPath xpath = null;
|
||||
Class[] classes = new Class[]{String.class, SourceLocator.class, PrefixResolver.class, int.class,
|
||||
Class<?>[] classes = new Class<?>[]{String.class, SourceLocator.class, PrefixResolver.class, int.class,
|
||||
ErrorListener.class, FunctionTable.class};
|
||||
Object[] objects = new Object[]{str, null, prefixResolver, new Integer(XPath.SELECT), null, _funcTable};
|
||||
try {
|
||||
Constructor constructor = XPath.class.getConstructor(classes);
|
||||
xpath = (XPath) constructor.newInstance(objects);
|
||||
Constructor<XPath> constructor = XPath.class.getConstructor(classes);
|
||||
xpath = constructor.newInstance(objects);
|
||||
} catch (Throwable t) {
|
||||
}
|
||||
if (xpath == null) {
|
||||
|
@ -24,6 +24,7 @@ package com.sun.org.apache.xml.internal.security.utils;
|
||||
|
||||
import java.math.BigInteger;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import com.sun.org.apache.xml.internal.security.exceptions.Base64DecodingException;
|
||||
import com.sun.org.apache.xml.internal.security.exceptions.XMLSecurityException;
|
||||
@ -370,6 +371,7 @@ public abstract class ElementProxy {
|
||||
* @return the bytes
|
||||
* @throws XMLSecurityException
|
||||
*/
|
||||
@Deprecated
|
||||
public byte[] getBytesFromChildElement(String localname, String namespace)
|
||||
throws XMLSecurityException {
|
||||
|
||||
@ -392,14 +394,12 @@ public abstract class ElementProxy {
|
||||
*/
|
||||
public String getTextFromChildElement(String localname, String namespace) {
|
||||
|
||||
Text t =
|
||||
(Text) XMLUtils.selectNode(
|
||||
this._constructionElement.getFirstChild(),
|
||||
namespace,
|
||||
localname,
|
||||
0).getFirstChild();
|
||||
return XMLUtils.selectNode(
|
||||
this._constructionElement.getFirstChild(),
|
||||
namespace,
|
||||
localname,
|
||||
0).getFirstChild().getNodeValue();
|
||||
|
||||
return t.getData();
|
||||
}
|
||||
|
||||
/**
|
||||
@ -493,8 +493,8 @@ public abstract class ElementProxy {
|
||||
}
|
||||
|
||||
/** Field _prefixMappings */
|
||||
static HashMap _prefixMappings = new HashMap();
|
||||
static HashMap _prefixMappingsBindings = new HashMap();
|
||||
static Map<String, String> _prefixMappings = new HashMap<String,String>();
|
||||
static Map<String, String> _prefixMappingsBindings = new HashMap<String,String>();
|
||||
|
||||
/**
|
||||
* Method setDefaultPrefix
|
||||
@ -533,10 +533,10 @@ public abstract class ElementProxy {
|
||||
* @return the default prefix bind to this element.
|
||||
*/
|
||||
public static String getDefaultPrefix(String namespace) {
|
||||
return (String) ElementProxy._prefixMappings.get(namespace);
|
||||
return ElementProxy._prefixMappings.get(namespace);
|
||||
}
|
||||
|
||||
public static String getDefaultPrefixBindings(String namespace) {
|
||||
return (String) ElementProxy._prefixMappingsBindings.get(namespace);
|
||||
return ElementProxy._prefixMappingsBindings.get(namespace);
|
||||
}
|
||||
}
|
||||
|
@ -21,6 +21,7 @@
|
||||
package com.sun.org.apache.xml.internal.security.utils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.w3c.dom.Document;
|
||||
import org.w3c.dom.Node;
|
||||
@ -34,7 +35,7 @@ import org.w3c.dom.NodeList;
|
||||
public class HelperNodeList implements NodeList {
|
||||
|
||||
/** Field nodes */
|
||||
ArrayList nodes = new ArrayList(20);
|
||||
List<Node> nodes = new ArrayList<Node>(20);
|
||||
boolean _allNodesMustHaveSameParent = false;
|
||||
|
||||
/**
|
||||
@ -62,7 +63,7 @@ public class HelperNodeList implements NodeList {
|
||||
|
||||
// log.log(java.util.logging.Level.FINE, "item(" + index + ") of " + this.getLength() + " nodes");
|
||||
|
||||
return (Node) nodes.get(index);
|
||||
return nodes.get(index);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -23,6 +23,7 @@ package com.sun.org.apache.xml.internal.security.utils;
|
||||
import java.lang.ref.WeakReference;
|
||||
import java.util.Arrays;
|
||||
import java.util.WeakHashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import org.w3c.dom.Attr;
|
||||
import org.w3c.dom.Document;
|
||||
@ -52,7 +53,8 @@ public class IdResolver {
|
||||
private static java.util.logging.Logger log =
|
||||
java.util.logging.Logger.getLogger(IdResolver.class.getName());
|
||||
|
||||
private static WeakHashMap docMap = new WeakHashMap();
|
||||
private static Map<Document, Map<String, WeakReference<Element>>> docMap =
|
||||
new WeakHashMap<Document, Map<String, WeakReference<Element>>>();
|
||||
|
||||
/**
|
||||
* Constructor IdResolver
|
||||
@ -70,15 +72,15 @@ public class IdResolver {
|
||||
*/
|
||||
public static void registerElementById(Element element, String idValue) {
|
||||
Document doc = element.getOwnerDocument();
|
||||
WeakHashMap elementMap;
|
||||
Map<String, WeakReference<Element>> elementMap;
|
||||
synchronized (docMap) {
|
||||
elementMap = (WeakHashMap) docMap.get(doc);
|
||||
elementMap = docMap.get(doc);
|
||||
if (elementMap == null) {
|
||||
elementMap = new WeakHashMap();
|
||||
elementMap = new WeakHashMap<String, WeakReference<Element>>();
|
||||
docMap.put(doc, elementMap);
|
||||
}
|
||||
}
|
||||
elementMap.put(idValue, new WeakReference(element));
|
||||
elementMap.put(idValue, new WeakReference<Element>(element));
|
||||
}
|
||||
|
||||
/**
|
||||
@ -156,20 +158,20 @@ public class IdResolver {
|
||||
private static Element getElementByIdType(Document doc, String id) {
|
||||
if (log.isLoggable(java.util.logging.Level.FINE))
|
||||
log.log(java.util.logging.Level.FINE, "getElementByIdType() Search for ID " + id);
|
||||
WeakHashMap elementMap;
|
||||
Map<String, WeakReference<Element>> elementMap;
|
||||
synchronized (docMap) {
|
||||
elementMap = (WeakHashMap) docMap.get(doc);
|
||||
elementMap = docMap.get(doc);
|
||||
}
|
||||
if (elementMap != null) {
|
||||
WeakReference weakReference = (WeakReference) elementMap.get(id);
|
||||
WeakReference<Element> weakReference = elementMap.get(id);
|
||||
if (weakReference != null) {
|
||||
return (Element) weakReference.get();
|
||||
return weakReference.get();
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private static java.util.List names;
|
||||
private static java.util.List<String> names;
|
||||
private static int namesLength;
|
||||
static {
|
||||
String namespaces[]={
|
||||
|
6
jdk/src/share/classes/com/sun/org/apache/xml/internal/security/utils/UnsyncBufferedOutputStream.java
6
jdk/src/share/classes/com/sun/org/apache/xml/internal/security/utils/UnsyncBufferedOutputStream.java
@ -33,8 +33,8 @@ public class UnsyncBufferedOutputStream extends OutputStream {
|
||||
|
||||
final byte[] buf;
|
||||
static final int size=8*1024;
|
||||
private static ThreadLocal bufCahce = new ThreadLocal() {
|
||||
protected synchronized Object initialValue() {
|
||||
private static ThreadLocal<byte[]> bufCahce = new ThreadLocal<byte[]>() {
|
||||
protected synchronized byte[] initialValue() {
|
||||
return new byte[size];
|
||||
}
|
||||
};
|
||||
@ -44,7 +44,7 @@ public class UnsyncBufferedOutputStream extends OutputStream {
|
||||
* @param out the outputstream to buffer
|
||||
*/
|
||||
public UnsyncBufferedOutputStream(OutputStream out) {
|
||||
buf=(byte[])bufCahce.get();
|
||||
buf=bufCahce.get();
|
||||
this.out=out;
|
||||
}
|
||||
|
||||
|
@ -29,8 +29,8 @@ import java.io.OutputStream;
|
||||
*/
|
||||
public class UnsyncByteArrayOutputStream extends OutputStream {
|
||||
private static final int INITIAL_SIZE = 8192;
|
||||
private static ThreadLocal bufCache = new ThreadLocal() {
|
||||
protected synchronized Object initialValue() {
|
||||
private static ThreadLocal<byte[]> bufCache = new ThreadLocal<byte[]>() {
|
||||
protected synchronized byte[] initialValue() {
|
||||
return new byte[INITIAL_SIZE];
|
||||
}
|
||||
};
|
||||
@ -40,7 +40,7 @@ public class UnsyncByteArrayOutputStream extends OutputStream {
|
||||
private int pos = 0;
|
||||
|
||||
public UnsyncByteArrayOutputStream() {
|
||||
buf = (byte[])bufCache.get();
|
||||
buf = bufCache.get();
|
||||
}
|
||||
|
||||
public void write(byte[] arg0) {
|
||||
|
@ -82,13 +82,15 @@ public class XMLUtils {
|
||||
* @param exclude
|
||||
* @param com wheather comments or not
|
||||
*/
|
||||
public static void getSet(Node rootNode,Set result,Node exclude ,boolean com) {
|
||||
public static void getSet(Node rootNode,Set<Node> result,Node exclude ,boolean com) {
|
||||
if ((exclude!=null) && isDescendantOrSelf(exclude,rootNode)){
|
||||
return;
|
||||
}
|
||||
getSetRec(rootNode,result,exclude,com);
|
||||
}
|
||||
static final void getSetRec(final Node rootNode,final Set result,
|
||||
|
||||
@SuppressWarnings("fallthrough")
|
||||
static final void getSetRec(final Node rootNode,final Set<Node> result,
|
||||
final Node exclude ,final boolean com) {
|
||||
//Set result = new HashSet();
|
||||
if (rootNode==exclude) {
|
||||
@ -104,7 +106,7 @@ public class XMLUtils {
|
||||
result.add(nl.item(i));
|
||||
}
|
||||
}
|
||||
//no return keep working
|
||||
//no return keep working - ignore fallthrough warning
|
||||
case Node.DOCUMENT_NODE:
|
||||
for (Node r=rootNode.getFirstChild();r!=null;r=r.getNextSibling()){
|
||||
if (r.getNodeType()==Node.TEXT_NODE) {
|
||||
@ -230,7 +232,7 @@ public class XMLUtils {
|
||||
|
||||
|
||||
static String dsPrefix=null;
|
||||
static Map namePrefixes=new HashMap();
|
||||
static Map<String, String> namePrefixes=new HashMap<String, String>();
|
||||
/**
|
||||
* Creates an Element in the XML Signature specification namespace.
|
||||
*
|
||||
@ -248,7 +250,7 @@ public class XMLUtils {
|
||||
if ((dsPrefix == null) || (dsPrefix.length() == 0)) {
|
||||
return doc.createElementNS(Constants.SignatureSpecNS, elementName);
|
||||
}
|
||||
String namePrefix=(String) namePrefixes.get(elementName);
|
||||
String namePrefix= namePrefixes.get(elementName);
|
||||
if (namePrefix==null) {
|
||||
StringBuffer tag=new StringBuffer(dsPrefix);
|
||||
tag.append(':');
|
||||
@ -318,11 +320,9 @@ public class XMLUtils {
|
||||
* @param xpathNodeSet
|
||||
* @return the owner document
|
||||
*/
|
||||
public static Document getOwnerDocument(Set xpathNodeSet) {
|
||||
public static Document getOwnerDocument(Set<Node> xpathNodeSet) {
|
||||
NullPointerException npe = null;
|
||||
Iterator iterator = xpathNodeSet.iterator();
|
||||
while(iterator.hasNext()) {
|
||||
Node node = (Node) iterator.next();
|
||||
for (Node node : xpathNodeSet) {
|
||||
int nodeType =node.getNodeType();
|
||||
if (nodeType == Node.DOCUMENT_NODE) {
|
||||
return (Document) node;
|
||||
@ -397,14 +397,14 @@ public class XMLUtils {
|
||||
* @param xpathNodeSet
|
||||
* @return the set with the nodelist
|
||||
*/
|
||||
public static Set convertNodelistToSet(NodeList xpathNodeSet) {
|
||||
public static Set<Node> convertNodelistToSet(NodeList xpathNodeSet) {
|
||||
|
||||
if (xpathNodeSet == null) {
|
||||
return new HashSet();
|
||||
return new HashSet<Node>();
|
||||
}
|
||||
|
||||
int length = xpathNodeSet.getLength();
|
||||
Set set = new HashSet(length);
|
||||
Set<Node> set = new HashSet<Node>(length);
|
||||
|
||||
for (int i = 0; i < length; i++) {
|
||||
set.add(xpathNodeSet.item(i));
|
||||
@ -446,6 +446,7 @@ public class XMLUtils {
|
||||
* @param node
|
||||
* @see <A HREF="http://nagoya.apache.org/bugzilla/show_bug.cgi?id=2650">Namespace axis resolution is not XPath compliant </A>
|
||||
*/
|
||||
@SuppressWarnings("fallthrough")
|
||||
private static void circumventBug2650internal(Node node) {
|
||||
Node parent=null;
|
||||
Node sibling=null;
|
||||
@ -642,12 +643,12 @@ public class XMLUtils {
|
||||
* @param inputSet
|
||||
* @return nodes with the constrain
|
||||
*/
|
||||
public static Set excludeNodeFromSet(Node signatureElement, Set inputSet) {
|
||||
Set resultSet = new HashSet();
|
||||
Iterator iterator = inputSet.iterator();
|
||||
public static Set<Node> excludeNodeFromSet(Node signatureElement, Set<Node> inputSet) {
|
||||
Set<Node> resultSet = new HashSet<Node>();
|
||||
Iterator<Node> iterator = inputSet.iterator();
|
||||
|
||||
while (iterator.hasNext()) {
|
||||
Node inputNode = (Node) iterator.next();
|
||||
Node inputNode = iterator.next();
|
||||
|
||||
if (!XMLUtils
|
||||
.isDescendantOrSelf(signatureElement, inputNode)) {
|
||||
|
25
jdk/src/share/classes/com/sun/org/apache/xml/internal/security/utils/resolver/ResourceResolver.java
25
jdk/src/share/classes/com/sun/org/apache/xml/internal/security/utils/resolver/ResourceResolver.java
@ -56,7 +56,7 @@ public class ResourceResolver {
|
||||
static boolean _alreadyInitialized = false;
|
||||
|
||||
/** these are the system-wide resolvers */
|
||||
static List _resolverVector = null;
|
||||
static List<ResourceResolver> _resolverVector = null;
|
||||
|
||||
static boolean allThreadSafeInList=true;
|
||||
|
||||
@ -102,7 +102,7 @@ public class ResourceResolver {
|
||||
int length=ResourceResolver._resolverVector.size();
|
||||
for (int i = 0; i < length; i++) {
|
||||
ResourceResolver resolver =
|
||||
(ResourceResolver) ResourceResolver._resolverVector.get(i);
|
||||
ResourceResolver._resolverVector.get(i);
|
||||
ResourceResolver resolverTmp=null;
|
||||
try {
|
||||
resolverTmp = allThreadSafeInList || resolver._resolverSpi.engineIsThreadSafe() ? resolver :
|
||||
@ -120,7 +120,7 @@ public class ResourceResolver {
|
||||
if (i!=0) {
|
||||
//update resolver.
|
||||
//System.out.println("Swaping");
|
||||
List resolverVector=(List)((ArrayList)_resolverVector).clone();
|
||||
List<ResourceResolver> resolverVector=getResolverVectorClone();
|
||||
resolverVector.remove(i);
|
||||
resolverVector.add(0,resolver);
|
||||
_resolverVector=resolverVector;
|
||||
@ -139,6 +139,17 @@ public class ResourceResolver {
|
||||
throw new ResourceResolverException("utils.resolver.noClass", exArgs,
|
||||
uri, BaseURI);
|
||||
}
|
||||
|
||||
/**
|
||||
* Method getResolverVectorClone
|
||||
*
|
||||
* @return clone of _resolverVector
|
||||
*/
|
||||
@SuppressWarnings("unchecked")
|
||||
private static List<ResourceResolver> getResolverVectorClone() {
|
||||
return (List<ResourceResolver>)((ArrayList<ResourceResolver>)_resolverVector).clone();
|
||||
}
|
||||
|
||||
/**
|
||||
* Method getInstance
|
||||
*
|
||||
@ -150,7 +161,7 @@ public class ResourceResolver {
|
||||
* @throws ResourceResolverException
|
||||
*/
|
||||
public static final ResourceResolver getInstance(
|
||||
Attr uri, String BaseURI, List individualResolvers)
|
||||
Attr uri, String BaseURI, List<ResourceResolver> individualResolvers)
|
||||
throws ResourceResolverException {
|
||||
if (log.isLoggable(java.util.logging.Level.FINE)) {
|
||||
|
||||
@ -163,7 +174,7 @@ public class ResourceResolver {
|
||||
if ((individualResolvers != null) && ((size=individualResolvers.size()) > 0)) {
|
||||
for (int i = 0; i < size; i++) {
|
||||
ResourceResolver resolver =
|
||||
(ResourceResolver) individualResolvers.get(i);
|
||||
individualResolvers.get(i);
|
||||
|
||||
if (resolver != null) {
|
||||
String currentClass = resolver._resolverSpi.getClass().getName();
|
||||
@ -186,7 +197,7 @@ public class ResourceResolver {
|
||||
public static void init() {
|
||||
|
||||
if (!ResourceResolver._alreadyInitialized) {
|
||||
ResourceResolver._resolverVector = new ArrayList(10);
|
||||
ResourceResolver._resolverVector = new ArrayList<ResourceResolver>(10);
|
||||
_alreadyInitialized = true;
|
||||
}
|
||||
}
|
||||
@ -288,7 +299,7 @@ public class ResourceResolver {
|
||||
*
|
||||
* @param properties
|
||||
*/
|
||||
public void addProperties(Map properties) {
|
||||
public void addProperties(Map<String,String> properties) {
|
||||
this._resolverSpi.engineAddProperies(properties);
|
||||
}
|
||||
|
||||
|
@ -41,7 +41,7 @@ public abstract class ResourceResolverSpi {
|
||||
ResourceResolverSpi.class.getName());
|
||||
|
||||
/** Field _properties */
|
||||
protected java.util.Map _properties = null;
|
||||
protected java.util.Map<String,String> _properties = null;
|
||||
|
||||
/**
|
||||
* This is the workhorse method used to resolve resources.
|
||||
@ -63,7 +63,7 @@ public abstract class ResourceResolverSpi {
|
||||
*/
|
||||
public void engineSetProperty(String key, String value) {
|
||||
if (_properties==null) {
|
||||
_properties=new HashMap();
|
||||
_properties=new HashMap<String,String>();
|
||||
}
|
||||
this._properties.put(key, value);
|
||||
}
|
||||
@ -78,17 +78,17 @@ public abstract class ResourceResolverSpi {
|
||||
if (_properties==null) {
|
||||
return null;
|
||||
}
|
||||
return (String) this._properties.get(key);
|
||||
return this._properties.get(key);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param properties
|
||||
*/
|
||||
public void engineAddProperies(Map properties) {
|
||||
public void engineAddProperies(Map<String,String> properties) {
|
||||
if (properties!=null) {
|
||||
if (_properties==null) {
|
||||
_properties=new HashMap();
|
||||
_properties=new HashMap<String,String>();
|
||||
}
|
||||
this._properties.putAll(properties);
|
||||
}
|
||||
|
@ -289,7 +289,7 @@ public class ResolverDirectHTTP extends ResourceResolverSpi {
|
||||
* @inheritDoc
|
||||
*/
|
||||
public String[] engineGetPropertyKeys() {
|
||||
return (String[]) ResolverDirectHTTP.properties.clone();
|
||||
return ResolverDirectHTTP.properties.clone();
|
||||
}
|
||||
|
||||
private URI getNewURI(String uri, String BaseURI)
|
||||
|
@ -725,7 +725,7 @@ public class Krb5LoginModule implements LoginModule {
|
||||
cred = builder.action().getCreds();
|
||||
}
|
||||
if (storeKey) {
|
||||
encKeys = builder.getKeys();
|
||||
encKeys = builder.getKeys(isInitiator);
|
||||
// When encKeys is empty, the login actually fails.
|
||||
// For compatibility, exception is thrown in commit().
|
||||
}
|
||||
|
@ -44,7 +44,7 @@ abstract class AbstractPlainDatagramSocketImpl extends DatagramSocketImpl
|
||||
int timeout = 0;
|
||||
boolean connected = false;
|
||||
private int trafficClass = 0;
|
||||
private InetAddress connectedAddress = null;
|
||||
protected InetAddress connectedAddress = null;
|
||||
private int connectedPort = -1;
|
||||
|
||||
/* cached socket options */
|
||||
|
@ -71,7 +71,7 @@ abstract class AbstractPlainSocketImpl extends SocketImpl
|
||||
|
||||
/* whether this Socket is a stream (TCP) socket or not (UDP)
|
||||
*/
|
||||
private boolean stream;
|
||||
protected boolean stream;
|
||||
|
||||
/**
|
||||
* Load net library into runtime.
|
||||
@ -86,10 +86,11 @@ abstract class AbstractPlainSocketImpl extends SocketImpl
|
||||
* is a stream socket (true) or an unconnected UDP socket (false).
|
||||
*/
|
||||
protected synchronized void create(boolean stream) throws IOException {
|
||||
fd = new FileDescriptor();
|
||||
this.stream = stream;
|
||||
if (!stream) {
|
||||
ResourceManager.beforeUdpCreate();
|
||||
// only create the fd after we know we will be able to create the socket
|
||||
fd = new FileDescriptor();
|
||||
try {
|
||||
socketCreate(false);
|
||||
} catch (IOException ioe) {
|
||||
@ -98,6 +99,7 @@ abstract class AbstractPlainSocketImpl extends SocketImpl
|
||||
throw ioe;
|
||||
}
|
||||
} else {
|
||||
fd = new FileDescriptor();
|
||||
socketCreate(true);
|
||||
}
|
||||
if (socket != null)
|
||||
|
@ -287,7 +287,7 @@ class DatagramSocket implements java.io.Closeable {
|
||||
AccessController.doPrivileged(
|
||||
new PrivilegedExceptionAction<Void>() {
|
||||
public Void run() throws NoSuchMethodException {
|
||||
Class[] cl = new Class[1];
|
||||
Class<?>[] cl = new Class<?>[1];
|
||||
cl[0] = DatagramPacket.class;
|
||||
impl.getClass().getDeclaredMethod("peekData", cl);
|
||||
return null;
|
||||
|
@ -91,8 +91,10 @@ class InMemoryCookieStore implements CookieStore {
|
||||
if (cookie.getDomain() != null) {
|
||||
addIndex(domainIndex, cookie.getDomain(), cookie);
|
||||
}
|
||||
// add it to uri index, too
|
||||
addIndex(uriIndex, getEffectiveURI(uri), cookie);
|
||||
if (uri != null) {
|
||||
// add it to uri index, too
|
||||
addIndex(uriIndex, getEffectiveURI(uri), cookie);
|
||||
}
|
||||
}
|
||||
} finally {
|
||||
lock.unlock();
|
||||
|
@ -899,6 +899,7 @@ public abstract class Signature extends SignatureSpi {
|
||||
* and its original parent (Object).
|
||||
*/
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
private static class Delegate extends Signature {
|
||||
|
||||
// The provider implementation (delegate)
|
||||
@ -1203,6 +1204,7 @@ public abstract class Signature extends SignatureSpi {
|
||||
}
|
||||
|
||||
// adapter for RSA/ECB/PKCS1Padding ciphers
|
||||
@SuppressWarnings("deprecation")
|
||||
private static class CipherAdapter extends SignatureSpi {
|
||||
|
||||
private final Cipher cipher;
|
||||
|
@ -117,7 +117,7 @@ public final class PrivateCredentialPermission extends Permission {
|
||||
* The set contains elements of type,
|
||||
* <code>PrivateCredentialPermission.CredOwner</code>.
|
||||
*/
|
||||
private Set principals; // ignored - kept around for compatibility
|
||||
private Set<Principal> principals; // ignored - kept around for compatibility
|
||||
private transient CredOwner[] credOwners;
|
||||
|
||||
/**
|
||||
|
@ -1291,6 +1291,7 @@ public final class Subject implements java.io.Serializable {
|
||||
oos.writeFields();
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
private void readObject(ObjectInputStream ois)
|
||||
throws IOException, ClassNotFoundException
|
||||
{
|
||||
@ -1329,6 +1330,7 @@ public final class Subject implements java.io.Serializable {
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked") /*To suppress warning from line 1374*/
|
||||
private void populateSet() {
|
||||
final Iterator<?> iterator;
|
||||
switch(which) {
|
||||
|
@ -56,6 +56,7 @@ public class SubjectDomainCombiner implements java.security.DomainCombiner {
|
||||
sun.security.util.Debug.getInstance("combiner",
|
||||
"\t[SubjectDomainCombiner]");
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
// Note: check only at classloading time, not dynamically during combine()
|
||||
private static final boolean useJavaxPolicy =
|
||||
javax.security.auth.Policy.isCustomPolicySet(debug);
|
||||
@ -300,6 +301,7 @@ public class SubjectDomainCombiner implements java.security.DomainCombiner {
|
||||
if (!allowCaching) {
|
||||
java.security.AccessController.doPrivileged
|
||||
(new PrivilegedAction<Void>() {
|
||||
@SuppressWarnings("deprecation")
|
||||
public Void run() {
|
||||
// Call refresh only caching is disallowed
|
||||
javax.security.auth.Policy.getPolicy().refresh();
|
||||
@ -308,6 +310,7 @@ public class SubjectDomainCombiner implements java.security.DomainCombiner {
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
int cLen = (currentDomains == null ? 0 : currentDomains.length);
|
||||
int aLen = (assignedDomains == null ? 0 : assignedDomains.length);
|
||||
|
||||
@ -348,13 +351,13 @@ public class SubjectDomainCombiner implements java.security.DomainCombiner {
|
||||
// get the original perms
|
||||
Permissions perms = new Permissions();
|
||||
PermissionCollection coll = pd.getPermissions();
|
||||
java.util.Enumeration e;
|
||||
java.util.Enumeration<Permission> e;
|
||||
if (coll != null) {
|
||||
synchronized (coll) {
|
||||
e = coll.elements();
|
||||
while (e.hasMoreElements()) {
|
||||
Permission newPerm =
|
||||
(Permission)e.nextElement();
|
||||
e.nextElement();
|
||||
perms.add(newPerm);
|
||||
}
|
||||
}
|
||||
@ -367,6 +370,7 @@ public class SubjectDomainCombiner implements java.security.DomainCombiner {
|
||||
PermissionCollection newPerms =
|
||||
java.security.AccessController.doPrivileged
|
||||
(new PrivilegedAction<PermissionCollection>() {
|
||||
@SuppressWarnings("deprecation")
|
||||
public PermissionCollection run() {
|
||||
return
|
||||
javax.security.auth.Policy.getPolicy().getPermissions
|
||||
@ -379,7 +383,7 @@ public class SubjectDomainCombiner implements java.security.DomainCombiner {
|
||||
synchronized (newPerms) {
|
||||
e = newPerms.elements();
|
||||
while (e.hasMoreElements()) {
|
||||
Permission newPerm = (Permission)e.nextElement();
|
||||
Permission newPerm = e.nextElement();
|
||||
if (!perms.implies(newPerm)) {
|
||||
perms.add(newPerm);
|
||||
if (debug != null)
|
||||
|
@ -375,6 +375,7 @@ final class KrbDelegationPermissionCollection extends PermissionCollection
|
||||
/*
|
||||
* Reads in a Vector of DelegationPermissions and saves them in the perms field.
|
||||
*/
|
||||
@SuppressWarnings("unchecked")
|
||||
private void readObject(ObjectInputStream in) throws IOException,
|
||||
ClassNotFoundException {
|
||||
// Don't call defaultReadObject()
|
||||
|
@ -583,6 +583,7 @@ final class KrbServicePermissionCollection extends PermissionCollection
|
||||
/*
|
||||
* Reads in a Vector of ServicePermissions and saves them in the perms field.
|
||||
*/
|
||||
@SuppressWarnings("unchecked")
|
||||
private void readObject(ObjectInputStream in) throws IOException,
|
||||
ClassNotFoundException {
|
||||
// Don't call defaultReadObject()
|
||||
|
@ -214,14 +214,14 @@ public class LoginContext {
|
||||
private boolean subjectProvided = false;
|
||||
private boolean loginSucceeded = false;
|
||||
private CallbackHandler callbackHandler;
|
||||
private Map state = new HashMap();
|
||||
private Map<String,?> state = new HashMap<String,Object>();
|
||||
|
||||
private Configuration config;
|
||||
private boolean configProvided = false;
|
||||
private AccessControlContext creatorAcc = null;
|
||||
private ModuleInfo[] moduleStack;
|
||||
private ClassLoader contextClassLoader = null;
|
||||
private static final Class[] PARAMS = { };
|
||||
private static final Class<?>[] PARAMS = { };
|
||||
|
||||
// state saved in the event a user-specified asynchronous exception
|
||||
// was specified and thrown
|
||||
@ -306,7 +306,7 @@ public class LoginContext {
|
||||
(DEFAULT_HANDLER);
|
||||
if (defaultHandler == null || defaultHandler.length() == 0)
|
||||
return null;
|
||||
Class c = Class.forName(defaultHandler,
|
||||
Class<?> c = Class.forName(defaultHandler,
|
||||
true,
|
||||
finalLoader);
|
||||
return (CallbackHandler)c.newInstance();
|
||||
@ -743,12 +743,12 @@ public class LoginContext {
|
||||
} else {
|
||||
|
||||
// instantiate the LoginModule
|
||||
Class c = Class.forName
|
||||
Class<?> c = Class.forName
|
||||
(moduleStack[i].entry.getLoginModuleName(),
|
||||
true,
|
||||
contextClassLoader);
|
||||
|
||||
Constructor constructor = c.getConstructor(PARAMS);
|
||||
Constructor<?> constructor = c.getConstructor(PARAMS);
|
||||
Object[] args = { };
|
||||
|
||||
// allow any object to be a LoginModule
|
||||
|
@ -118,7 +118,7 @@ public final class X500Principal implements Principal, java.io.Serializable {
|
||||
* is improperly specified
|
||||
*/
|
||||
public X500Principal(String name) {
|
||||
this(name, (Map<String, String>) Collections.EMPTY_MAP);
|
||||
this(name, Collections.<String, String>emptyMap());
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -41,6 +41,7 @@ package javax.security.cert;
|
||||
*/
|
||||
public class CertificateEncodingException extends CertificateException {
|
||||
|
||||
private static final long serialVersionUID = -8187642723048403470L;
|
||||
/**
|
||||
* Constructs a CertificateEncodingException with no detail message. A
|
||||
* detail message is a String that describes this particular
|
||||
|
@ -41,6 +41,7 @@ package javax.security.cert;
|
||||
*/
|
||||
public class CertificateException extends Exception {
|
||||
|
||||
private static final long serialVersionUID = -5757213374030785290L;
|
||||
/**
|
||||
* Constructs a certificate exception with no detail message. A detail
|
||||
* message is a String that describes this particular exception.
|
||||
|
@ -43,6 +43,7 @@ package javax.security.cert;
|
||||
*/
|
||||
public class CertificateExpiredException extends CertificateException {
|
||||
|
||||
private static final long serialVersionUID = 5091601212177261883L;
|
||||
/**
|
||||
* Constructs a CertificateExpiredException with no detail message. A
|
||||
* detail message is a String that describes this particular
|
||||
|
@ -43,6 +43,7 @@ package javax.security.cert;
|
||||
*/
|
||||
public class CertificateNotYetValidException extends CertificateException {
|
||||
|
||||
private static final long serialVersionUID = -8976172474266822818L;
|
||||
/**
|
||||
* Constructs a CertificateNotYetValidException with no detail message. A
|
||||
* detail message is a String that describes this particular
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -42,6 +42,8 @@ package javax.security.cert;
|
||||
*/
|
||||
public class CertificateParsingException extends CertificateException {
|
||||
|
||||
private static final long serialVersionUID = -8449352422951136229L;
|
||||
|
||||
/**
|
||||
* Constructs a CertificateParsingException with no detail message. A
|
||||
* detail message is a String that describes this particular
|
||||
|
@ -219,11 +219,11 @@ public abstract class X509Certificate extends Certificate {
|
||||
className = "com.sun.security.cert.internal.x509.X509V1CertImpl";
|
||||
}
|
||||
try {
|
||||
Class[] params = null;
|
||||
Class<?>[] params = null;
|
||||
if (value instanceof InputStream) {
|
||||
params = new Class[] { InputStream.class };
|
||||
params = new Class<?>[] { InputStream.class };
|
||||
} else if (value instanceof byte[]) {
|
||||
params = new Class[] { value.getClass() };
|
||||
params = new Class<?>[] { value.getClass() };
|
||||
} else
|
||||
throw new CertificateException("Unsupported argument type");
|
||||
Class<?> certClass = Class.forName(className);
|
||||
|
@ -395,7 +395,7 @@ public class Sasl {
|
||||
* will be thrown.
|
||||
*/
|
||||
ClassLoader cl = p.getClass().getClassLoader();
|
||||
Class implClass;
|
||||
Class<?> implClass;
|
||||
implClass = Class.forName(className, true, cl);
|
||||
return implClass.newInstance();
|
||||
} catch (ClassNotFoundException e) {
|
||||
@ -576,7 +576,7 @@ public class Sasl {
|
||||
classes.clear();
|
||||
|
||||
// Check the keys for each provider.
|
||||
for (Enumeration e = providers[i].keys(); e.hasMoreElements(); ) {
|
||||
for (Enumeration<Object> e = providers[i].keys(); e.hasMoreElements(); ) {
|
||||
String currentKey = (String)e.nextElement();
|
||||
if (currentKey.startsWith(serviceName)) {
|
||||
// We should skip the currentKey if it contains a
|
||||
|
@ -113,7 +113,7 @@ public final class TerminalFactory {
|
||||
type = "PC/SC";
|
||||
Provider sun = Security.getProvider("SunPCSC");
|
||||
if (sun == null) {
|
||||
Class clazz = Class.forName("sun.security.smartcardio.SunPCSC");
|
||||
Class<?> clazz = Class.forName("sun.security.smartcardio.SunPCSC");
|
||||
sun = (Provider)clazz.newInstance();
|
||||
}
|
||||
factory = TerminalFactory.getInstance(type, null, sun);
|
||||
@ -131,6 +131,8 @@ public final class TerminalFactory {
|
||||
}
|
||||
|
||||
private static final class NoneProvider extends Provider {
|
||||
|
||||
private static final long serialVersionUID = 2745808869881593918L;
|
||||
final static Provider INSTANCE = new NoneProvider();
|
||||
private NoneProvider() {
|
||||
super("None", 1.0d, "none");
|
||||
|
@ -24,20 +24,17 @@
|
||||
*/
|
||||
package javax.swing;
|
||||
|
||||
import java.applet.Applet;
|
||||
import java.awt.*;
|
||||
import java.awt.event.*;
|
||||
import java.awt.image.*;
|
||||
import java.lang.reflect.*;
|
||||
import java.lang.ref.WeakReference;
|
||||
import java.security.AccessController;
|
||||
import java.util.*;
|
||||
|
||||
import com.sun.java.swing.SwingUtilities3;
|
||||
|
||||
import sun.awt.SubRegionShowable;
|
||||
import sun.java2d.SunGraphics2D;
|
||||
import sun.security.action.GetPropertyAction;
|
||||
import sun.java2d.pipe.hw.ExtendedBufferCapabilities;
|
||||
import sun.awt.SunToolkit;
|
||||
import sun.util.logging.PlatformLogger;
|
||||
@ -119,10 +116,6 @@ class BufferStrategyPaintManager extends RepaintManager.PaintManager {
|
||||
* Farthest JComponent ancestor for the current paint/copyArea.
|
||||
*/
|
||||
private JComponent rootJ;
|
||||
/**
|
||||
* Parent Applet/Window for the current paint/copyArea
|
||||
*/
|
||||
private Container root;
|
||||
/**
|
||||
* Location of component being painted relative to root.
|
||||
*/
|
||||
@ -278,7 +271,9 @@ class BufferStrategyPaintManager extends RepaintManager.PaintManager {
|
||||
public boolean paint(JComponent paintingComponent,
|
||||
JComponent bufferComponent, Graphics g,
|
||||
int x, int y, int w, int h) {
|
||||
if (prepare(paintingComponent, true, x, y, w, h)) {
|
||||
Container root = fetchRoot(paintingComponent);
|
||||
|
||||
if (prepare(paintingComponent, root, true, x, y, w, h)) {
|
||||
if ((g instanceof SunGraphics2D) &&
|
||||
((SunGraphics2D)g).getDestination() == root) {
|
||||
// BufferStrategy may have already constrained the Graphics. To
|
||||
@ -319,7 +314,9 @@ class BufferStrategyPaintManager extends RepaintManager.PaintManager {
|
||||
//
|
||||
// If the buffer isn't in sync there is no point in doing a copyArea,
|
||||
// it has garbage.
|
||||
if (prepare(c, false, 0, 0, 0, 0) && bufferInfo.isInSync()) {
|
||||
Container root = fetchRoot(c);
|
||||
|
||||
if (prepare(c, root, false, 0, 0, 0, 0) && bufferInfo.isInSync()) {
|
||||
if (clip) {
|
||||
Rectangle cBounds = c.getVisibleRect();
|
||||
int relX = xOffset + x;
|
||||
@ -500,14 +497,14 @@ class BufferStrategyPaintManager extends RepaintManager.PaintManager {
|
||||
*
|
||||
* @return true if should use buffering per window in painting.
|
||||
*/
|
||||
private boolean prepare(JComponent c, boolean isPaint, int x, int y,
|
||||
private boolean prepare(JComponent c, Container root, boolean isPaint, int x, int y,
|
||||
int w, int h) {
|
||||
if (bsg != null) {
|
||||
bsg.dispose();
|
||||
bsg = null;
|
||||
}
|
||||
bufferStrategy = null;
|
||||
if (fetchRoot(c)) {
|
||||
if (root != null) {
|
||||
boolean contentsLost = false;
|
||||
BufferInfo bufferInfo = getBufferInfo(root);
|
||||
if (bufferInfo == null) {
|
||||
@ -567,10 +564,10 @@ class BufferStrategyPaintManager extends RepaintManager.PaintManager {
|
||||
return false;
|
||||
}
|
||||
|
||||
private boolean fetchRoot(JComponent c) {
|
||||
private Container fetchRoot(JComponent c) {
|
||||
boolean encounteredHW = false;
|
||||
rootJ = c;
|
||||
root = c;
|
||||
Container root = c;
|
||||
xOffset = yOffset = 0;
|
||||
while (root != null &&
|
||||
(!(root instanceof Window) &&
|
||||
@ -597,7 +594,7 @@ class BufferStrategyPaintManager extends RepaintManager.PaintManager {
|
||||
// heavyweights. If we didn't do this when we
|
||||
// went to show the descendants of the nested hw
|
||||
// you would see nothing, so, we bail out here.
|
||||
return false;
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -613,11 +610,11 @@ class BufferStrategyPaintManager extends RepaintManager.PaintManager {
|
||||
// bit tricky with Swing. This gives a good approximation
|
||||
// of the various ways to turn on double buffering for
|
||||
// components.
|
||||
return true;
|
||||
return root;
|
||||
}
|
||||
}
|
||||
// Don't do true double buffering.
|
||||
return false;
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1661,7 +1661,7 @@ public class HttpURLConnection extends java.net.HttpURLConnection {
|
||||
public IOException run() throws Exception {
|
||||
return (IOException)
|
||||
rememberedException.getClass()
|
||||
.getConstructor(new Class[] { String.class })
|
||||
.getConstructor(new Class<?>[] { String.class })
|
||||
.newInstance(args);
|
||||
}
|
||||
});
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2006, 2011, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -51,6 +51,7 @@ public final class ECPublicKeyImpl extends X509Key implements ECPublicKey {
|
||||
* Construct a key from its components. Used by the
|
||||
* ECKeyFactory and SunPKCS11.
|
||||
*/
|
||||
@SuppressWarnings("deprecation")
|
||||
public ECPublicKeyImpl(ECPoint w, ECParameterSpec params)
|
||||
throws InvalidKeyException {
|
||||
this.w = w;
|
||||
@ -85,6 +86,7 @@ public final class ECPublicKeyImpl extends X509Key implements ECPublicKey {
|
||||
|
||||
// Internal API to get the encoded point. Currently used by SunPKCS11.
|
||||
// This may change/go away depending on what we do with the public API.
|
||||
@SuppressWarnings("deprecation")
|
||||
public byte[] getEncodedPublicValue() {
|
||||
return key.clone();
|
||||
}
|
||||
@ -92,6 +94,7 @@ public final class ECPublicKeyImpl extends X509Key implements ECPublicKey {
|
||||
/**
|
||||
* Parse the key. Called by X509Key.
|
||||
*/
|
||||
@SuppressWarnings("deprecation")
|
||||
protected void parseKeyBits() throws InvalidKeyException {
|
||||
try {
|
||||
AlgorithmParameters algParams = this.algid.getParameters();
|
||||
|
@ -94,7 +94,7 @@ class AcceptSecContextToken extends InitialToken {
|
||||
*/
|
||||
EncryptionKey subKey = apRep.getSubKey();
|
||||
if (subKey != null) {
|
||||
context.setKey(subKey);
|
||||
context.setKey(Krb5Context.ACCEPTOR_SUBKEY, subKey);
|
||||
/*
|
||||
System.out.println("\n\nSub-Session key from AP-REP is: " +
|
||||
getHexBytes(subKey.getBytes()) + "\n");
|
||||
|
@ -74,9 +74,9 @@ class InitSecContextToken extends InitialToken {
|
||||
|
||||
EncryptionKey subKey = apReq.getSubKey();
|
||||
if (subKey != null)
|
||||
context.setKey(subKey);
|
||||
context.setKey(Krb5Context.INITIATOR_SUBKEY, subKey);
|
||||
else
|
||||
context.setKey(serviceTicket.getSessionKey());
|
||||
context.setKey(Krb5Context.SESSION_KEY, serviceTicket.getSessionKey());
|
||||
|
||||
if (!mutualRequired)
|
||||
context.resetPeerSequenceNumber(0);
|
||||
@ -117,13 +117,13 @@ class InitSecContextToken extends InitialToken {
|
||||
|
||||
EncryptionKey subKey = apReq.getSubKey();
|
||||
if (subKey != null) {
|
||||
context.setKey(subKey);
|
||||
context.setKey(Krb5Context.INITIATOR_SUBKEY, subKey);
|
||||
/*
|
||||
System.out.println("Sub-Session key from authenticator is: " +
|
||||
getHexBytes(subKey.getBytes()) + "\n");
|
||||
*/
|
||||
} else {
|
||||
context.setKey(sessionKey);
|
||||
context.setKey(Krb5Context.SESSION_KEY, sessionKey);
|
||||
//System.out.println("Sub-Session Key Missing in Authenticator.\n");
|
||||
}
|
||||
|
||||
|
@ -67,6 +67,10 @@ class Krb5Context implements GSSContextSpi {
|
||||
|
||||
private int state = STATE_NEW;
|
||||
|
||||
public static final int SESSION_KEY = 0;
|
||||
public static final int INITIATOR_SUBKEY = 1;
|
||||
public static final int ACCEPTOR_SUBKEY = 2;
|
||||
|
||||
/*
|
||||
* Optional features that the application can set and their default
|
||||
* values.
|
||||
@ -82,6 +86,7 @@ class Krb5Context implements GSSContextSpi {
|
||||
|
||||
private int mySeqNumber;
|
||||
private int peerSeqNumber;
|
||||
private int keySrc;
|
||||
private TokenTracker peerTokenTracker;
|
||||
|
||||
private CipherHelper cipherHelper = null;
|
||||
@ -384,12 +389,17 @@ class Krb5Context implements GSSContextSpi {
|
||||
}
|
||||
}
|
||||
|
||||
final void setKey(EncryptionKey key) throws GSSException {
|
||||
final void setKey(int keySrc, EncryptionKey key) throws GSSException {
|
||||
this.key = key;
|
||||
this.keySrc = keySrc;
|
||||
// %%% to do: should clear old cipherHelper first
|
||||
cipherHelper = new CipherHelper(key); // Need to use new key
|
||||
}
|
||||
|
||||
public final int getKeySrc() {
|
||||
return keySrc;
|
||||
}
|
||||
|
||||
private final EncryptionKey getKey() {
|
||||
return key;
|
||||
}
|
||||
|
@ -141,6 +141,7 @@ abstract class MessageToken_v2 extends Krb5Token {
|
||||
// Context properties
|
||||
private boolean confState = true;
|
||||
private boolean initiator = true;
|
||||
private boolean have_acceptor_subkey = false;
|
||||
|
||||
/* cipher instance used by the corresponding GSSContext */
|
||||
CipherHelper cipherHelper = null;
|
||||
@ -233,7 +234,6 @@ abstract class MessageToken_v2 extends Krb5Token {
|
||||
}
|
||||
|
||||
if (tokenId == Krb5Token.WRAP_ID_v2) {
|
||||
// Does non-confidential data needs a rotate?
|
||||
rotate();
|
||||
}
|
||||
|
||||
@ -312,8 +312,7 @@ abstract class MessageToken_v2 extends Krb5Token {
|
||||
}
|
||||
|
||||
// Create a new gss token header as defined in RFC 4121
|
||||
tokenHeader = new MessageTokenHeader(tokenId,
|
||||
prop.getPrivacy(), true);
|
||||
tokenHeader = new MessageTokenHeader(tokenId, prop.getPrivacy());
|
||||
// debug("\n\t Message Header = " +
|
||||
// getHexBytes(tokenHeader.getBytes(), tokenHeader.getBytes().length));
|
||||
|
||||
@ -421,10 +420,12 @@ abstract class MessageToken_v2 extends Krb5Token {
|
||||
int conf_flag = tokenHeaderBytes[TOKEN_FLAG_POS] &
|
||||
FLAG_WRAP_CONFIDENTIAL;
|
||||
|
||||
// clear EC in token header for checksum calculation
|
||||
// clear EC and RRC in token header for checksum calculation
|
||||
if ((conf_flag == 0) && (tokenId == WRAP_ID_v2)) {
|
||||
tokenHeaderBytes[4] = 0;
|
||||
tokenHeaderBytes[5] = 0;
|
||||
tokenHeaderBytes[6] = 0;
|
||||
tokenHeaderBytes[7] = 0;
|
||||
}
|
||||
return cipherHelper.calculateChecksum(tokenHeaderBytes, data,
|
||||
offset, len, key_usage);
|
||||
@ -460,6 +461,8 @@ abstract class MessageToken_v2 extends Krb5Token {
|
||||
|
||||
this.initiator = context.isInitiator();
|
||||
|
||||
this.have_acceptor_subkey = context.getKeySrc() == Krb5Context.ACCEPTOR_SUBKEY;
|
||||
|
||||
this.cipherHelper = context.getCipherHelper(null);
|
||||
// debug("In MessageToken.Cons");
|
||||
}
|
||||
@ -500,8 +503,7 @@ abstract class MessageToken_v2 extends Krb5Token {
|
||||
private byte[] bytes = new byte[TOKEN_HEADER_SIZE];
|
||||
|
||||
// Writes a new token header
|
||||
public MessageTokenHeader(int tokenId, boolean conf,
|
||||
boolean have_acceptor_subkey) throws GSSException {
|
||||
public MessageTokenHeader(int tokenId, boolean conf) throws GSSException {
|
||||
|
||||
this.tokenId = tokenId;
|
||||
|
||||
|
@ -144,15 +144,18 @@ public final class KrbAsReqBuilder {
|
||||
|
||||
/**
|
||||
* Retrieves an array of secret keys for the client. This is used when
|
||||
* the client supplies password but need keys to act as an acceptor
|
||||
* (in JAAS words, isInitiator=true and storeKey=true)
|
||||
* the client supplies password but need keys to act as an acceptor. For
|
||||
* an initiator, it must be called after AS-REQ is performed (state is OK).
|
||||
* For an acceptor, it can be called when this KrbAsReqBuilder object is
|
||||
* constructed (state is INIT).
|
||||
* @param isInitiator if the caller is an initiator
|
||||
* @return generated keys from password. PA-DATA from server might be used.
|
||||
* All "default_tkt_enctypes" keys will be generated, Never null.
|
||||
* @throws IllegalStateException if not constructed from a password
|
||||
* @throws KrbException
|
||||
*/
|
||||
public EncryptionKey[] getKeys() throws KrbException {
|
||||
checkState(State.REQ_OK, "Cannot get keys");
|
||||
public EncryptionKey[] getKeys(boolean isInitiator) throws KrbException {
|
||||
checkState(isInitiator?State.REQ_OK:State.INIT, "Cannot get keys");
|
||||
if (password != null) {
|
||||
int[] eTypes = EType.getDefaults("default_tkt_enctypes");
|
||||
EncryptionKey[] result = new EncryptionKey[eTypes.length];
|
||||
|
@ -1335,10 +1335,10 @@ public final class SunPKCS11 extends AuthProvider {
|
||||
return null;
|
||||
}
|
||||
|
||||
Class c = Class.forName
|
||||
(defaultHandler,
|
||||
true,
|
||||
Thread.currentThread().getContextClassLoader());
|
||||
Class<?> c = Class.forName
|
||||
(defaultHandler,
|
||||
true,
|
||||
Thread.currentThread().getContextClassLoader());
|
||||
return (CallbackHandler)c.newInstance();
|
||||
}
|
||||
});
|
||||
|
@ -327,6 +327,7 @@ public final class PKIXValidator extends Validator {
|
||||
* Set the check date (for debugging).
|
||||
*/
|
||||
private void setDate(PKIXBuilderParameters params) {
|
||||
@SuppressWarnings("deprecation")
|
||||
Date date = validationDate;
|
||||
if (date != null) {
|
||||
params.setDate(date);
|
||||
|
@ -131,6 +131,7 @@ public final class SimpleValidator extends Validator {
|
||||
// make sure chain includes a trusted cert
|
||||
chain = buildTrustedChain(chain);
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
Date date = validationDate;
|
||||
if (date == null) {
|
||||
date = new Date();
|
||||
|
@ -1323,7 +1323,7 @@ public class X509CertImpl extends X509Certificate implements DerEncoder {
|
||||
|
||||
for (Extension ex : exts.getAllExtensions()) {
|
||||
ObjectIdentifier inCertOID = ex.getExtensionId();
|
||||
if (inCertOID.equals(findOID)) {
|
||||
if (inCertOID.equals((Object)findOID)) {
|
||||
certExt = ex;
|
||||
break;
|
||||
}
|
||||
|
@ -40,6 +40,7 @@ import java.util.ResourceBundle.Control;
|
||||
import java.util.ServiceLoader;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.concurrent.ConcurrentMap;
|
||||
import java.util.spi.LocaleServiceProvider;
|
||||
|
||||
import sun.util.logging.PlatformLogger;
|
||||
@ -57,8 +58,8 @@ public final class LocaleServiceProviderPool {
|
||||
* A Map that holds singleton instances of this class. Each instance holds a
|
||||
* set of provider implementations of a particular locale sensitive service.
|
||||
*/
|
||||
private static Map<Class, LocaleServiceProviderPool> poolOfPools =
|
||||
new ConcurrentHashMap<Class, LocaleServiceProviderPool>();
|
||||
private static ConcurrentMap<Class, LocaleServiceProviderPool> poolOfPools =
|
||||
new ConcurrentHashMap<>();
|
||||
|
||||
/**
|
||||
* A Set containing locale service providers that implement the
|
||||
@ -109,7 +110,7 @@ public final class LocaleServiceProviderPool {
|
||||
if (pool == null) {
|
||||
LocaleServiceProviderPool newPool =
|
||||
new LocaleServiceProviderPool(providerClass);
|
||||
pool = poolOfPools.put(providerClass, newPool);
|
||||
pool = poolOfPools.putIfAbsent(providerClass, newPool);
|
||||
if (pool == null) {
|
||||
pool = newPool;
|
||||
}
|
||||
@ -257,10 +258,11 @@ public final class LocaleServiceProviderPool {
|
||||
synchronized (LocaleServiceProviderPool.class) {
|
||||
if (availableJRELocales == null) {
|
||||
Locale[] allLocales = LocaleData.getAvailableLocales();
|
||||
availableJRELocales = new ArrayList<Locale>(allLocales.length);
|
||||
List<Locale> tmpList = new ArrayList<>(allLocales.length);
|
||||
for (Locale locale : allLocales) {
|
||||
availableJRELocales.add(getLookupLocale(locale));
|
||||
tmpList.add(getLookupLocale(locale));
|
||||
}
|
||||
availableJRELocales = tmpList;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -820,7 +820,6 @@ GetJREPath(char *path, jint pathsize, const char * arch, jboolean speculative)
|
||||
jboolean
|
||||
LoadJavaVM(const char *jvmpath, InvocationFunctions *ifn)
|
||||
{
|
||||
Dl_info dlinfo;
|
||||
void *libjvm;
|
||||
|
||||
JLI_TraceLauncher("JVM path is %s\n", jvmpath);
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1999, 2004, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -30,13 +30,13 @@
|
||||
#include <limits.h>
|
||||
#include <errno.h>
|
||||
#include <stddef.h>
|
||||
|
||||
#ifdef __linux__
|
||||
#include <string.h>
|
||||
#include <dirent.h>
|
||||
#include <sys/stat.h>
|
||||
#include <sys/types.h>
|
||||
#include <string.h>
|
||||
#include <dirent.h>
|
||||
#include <unistd.h>
|
||||
#ifdef __solaris__
|
||||
#include <libscf.h>
|
||||
#endif
|
||||
|
||||
#include "jvm.h"
|
||||
@ -54,17 +54,22 @@
|
||||
static const char *ETC_TIMEZONE_FILE = "/etc/timezone";
|
||||
static const char *ZONEINFO_DIR = "/usr/share/zoneinfo";
|
||||
static const char *DEFAULT_ZONEINFO_FILE = "/etc/localtime";
|
||||
#else
|
||||
static const char *SYS_INIT_FILE = "/etc/default/init";
|
||||
static const char *ZONEINFO_DIR = "/usr/share/lib/zoneinfo";
|
||||
static const char *DEFAULT_ZONEINFO_FILE = "/usr/share/lib/zoneinfo/localtime";
|
||||
#endif /*__linux__*/
|
||||
|
||||
/*
|
||||
* Returns a point to the zone ID portion of the given zoneinfo file
|
||||
* name.
|
||||
* Returns a pointer to the zone ID portion of the given zoneinfo file
|
||||
* name, or NULL if the given string doesn't contain "zoneinfo/".
|
||||
*/
|
||||
static char *
|
||||
getZoneName(char *str)
|
||||
{
|
||||
static const char *zidir = "zoneinfo/";
|
||||
|
||||
char * pos = strstr((const char *)str, zidir);
|
||||
char *pos = strstr((const char *)str, zidir);
|
||||
if (pos == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
@ -74,7 +79,7 @@ getZoneName(char *str)
|
||||
/*
|
||||
* Returns a path name created from the given 'dir' and 'name' under
|
||||
* UNIX. This function allocates memory for the pathname calling
|
||||
* malloc().
|
||||
* malloc(). NULL is returned if malloc() fails.
|
||||
*/
|
||||
static char *
|
||||
getPathName(const char *dir, const char *name) {
|
||||
@ -89,19 +94,18 @@ getPathName(const char *dir, const char *name) {
|
||||
|
||||
/*
|
||||
* Scans the specified directory and its subdirectories to find a
|
||||
* zoneinfo file which has the same content as /etc/localtime given in
|
||||
* 'buf'. Returns a zone ID if found, otherwise, NULL is returned.
|
||||
* zoneinfo file which has the same content as /etc/localtime on Linux
|
||||
* or /usr/share/lib/zoneinfo/localtime (most likely a symbolic link)
|
||||
* on Solaris given in 'buf'. Returns a zone ID if found, otherwise,
|
||||
* NULL is returned.
|
||||
*/
|
||||
static char *
|
||||
findZoneinfoFile(char *buf, size_t size, const char *dir)
|
||||
{
|
||||
DIR *dirp = NULL;
|
||||
struct stat statbuf;
|
||||
union {
|
||||
struct dirent d;
|
||||
char b[offsetof (struct dirent, d_name) + NAME_MAX + 1];
|
||||
} entry;
|
||||
struct dirent *dp;
|
||||
struct dirent *dp = NULL;
|
||||
struct dirent *entry = NULL;
|
||||
char *pathname = NULL;
|
||||
int fd = -1;
|
||||
char *dbuf = NULL;
|
||||
@ -112,7 +116,19 @@ findZoneinfoFile(char *buf, size_t size, const char *dir)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
while (readdir_r(dirp, &entry.d, &dp) == 0 && dp != NULL) {
|
||||
entry = (struct dirent *) malloc((size_t) pathconf(dir, _PC_NAME_MAX));
|
||||
if (entry == NULL) {
|
||||
(void) closedir(dirp);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
#if defined(__linux__) || (defined(__solaris__) && (defined(_POSIX_PTHREAD_SEMANTICS) || \
|
||||
defined(_LP64)))
|
||||
while (readdir_r(dirp, entry, &dp) == 0 && dp != NULL) {
|
||||
#else
|
||||
while ((dp = readdir_r(dirp, entry)) != NULL) {
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Skip '.' and '..' (and possibly other .* files)
|
||||
*/
|
||||
@ -121,11 +137,17 @@ findZoneinfoFile(char *buf, size_t size, const char *dir)
|
||||
}
|
||||
|
||||
/*
|
||||
* Skip "ROC", "posixrules", and "localtime" since Java doesn't
|
||||
* support them.
|
||||
* Skip "ROC", "posixrules", and "localtime".
|
||||
*/
|
||||
if ((strcmp(dp->d_name, "ROC") == 0)
|
||||
|| (strcmp(dp->d_name, "posixrules") == 0)
|
||||
#ifdef __solaris__
|
||||
/*
|
||||
* Skip the "src" and "tab" directories on Solaris.
|
||||
*/
|
||||
|| (strcmp(dp->d_name, "src") == 0)
|
||||
|| (strcmp(dp->d_name, "tab") == 0)
|
||||
#endif
|
||||
|| (strcmp(dp->d_name, "localtime") == 0)) {
|
||||
continue;
|
||||
}
|
||||
@ -149,7 +171,6 @@ findZoneinfoFile(char *buf, size_t size, const char *dir)
|
||||
break;
|
||||
}
|
||||
if ((fd = open(pathname, O_RDONLY)) == -1) {
|
||||
fd = 0;
|
||||
break;
|
||||
}
|
||||
if (read(fd, dbuf, size) != (ssize_t) size) {
|
||||
@ -165,19 +186,22 @@ findZoneinfoFile(char *buf, size_t size, const char *dir)
|
||||
free((void *) dbuf);
|
||||
dbuf = NULL;
|
||||
(void) close(fd);
|
||||
fd = 0;
|
||||
fd = -1;
|
||||
}
|
||||
free((void *) pathname);
|
||||
pathname = NULL;
|
||||
}
|
||||
|
||||
if (entry != NULL) {
|
||||
free((void *) entry);
|
||||
}
|
||||
if (dirp != NULL) {
|
||||
(void) closedir(dirp);
|
||||
}
|
||||
if (pathname != NULL) {
|
||||
free((void *) pathname);
|
||||
}
|
||||
if (fd != 0) {
|
||||
if (fd != -1) {
|
||||
(void) close(fd);
|
||||
}
|
||||
if (dbuf != NULL) {
|
||||
@ -186,8 +210,10 @@ findZoneinfoFile(char *buf, size_t size, const char *dir)
|
||||
return tz;
|
||||
}
|
||||
|
||||
#ifdef __linux__
|
||||
|
||||
/*
|
||||
* Performs libc implementation specific mapping and returns a zone ID
|
||||
* Performs Linux specific mapping and returns a zone ID
|
||||
* if found. Otherwise, NULL is returned.
|
||||
*/
|
||||
static char *
|
||||
@ -408,12 +434,11 @@ filegets(char *s, int n, FILE *stream)
|
||||
}
|
||||
#endif /* not __sparcv9 */
|
||||
|
||||
static const char *sys_init_file = "/etc/default/init";
|
||||
|
||||
/*
|
||||
* Performs libc implementation dependent mapping. Returns a zone ID
|
||||
* if found. Otherwise, NULL is returned. Solaris libc looks up
|
||||
* "/etc/default/init" to get a default TZ value if TZ is not defined
|
||||
* Performs Solaris dependent mapping. Returns a zone ID if
|
||||
* found. Otherwise, NULL is returned. Solaris libc looks up
|
||||
* "/etc/default/init" to get the default TZ value if TZ is not defined
|
||||
* as an environment variable.
|
||||
*/
|
||||
static char *
|
||||
@ -425,7 +450,7 @@ getPlatformTimeZoneID()
|
||||
/*
|
||||
* Try the TZ entry in /etc/default/init.
|
||||
*/
|
||||
if ((fp = fileopen(sys_init_file, "r")) != NULL) {
|
||||
if ((fp = fileopen(SYS_INIT_FILE, "r")) != NULL) {
|
||||
char line[256];
|
||||
char quote = '\0';
|
||||
|
||||
@ -473,8 +498,113 @@ getPlatformTimeZoneID()
|
||||
return tz;
|
||||
}
|
||||
|
||||
#endif
|
||||
#endif
|
||||
#define TIMEZONE_FMRI "svc:/system/timezone:default"
|
||||
#define TIMEZONE_PG "timezone"
|
||||
#define LOCALTIME_PROP "localtime"
|
||||
|
||||
static void
|
||||
cleanupScf(scf_handle_t *h,
|
||||
scf_snapshot_t *snap,
|
||||
scf_instance_t *inst,
|
||||
scf_propertygroup_t *pg,
|
||||
scf_property_t *prop,
|
||||
scf_value_t *val,
|
||||
char *buf) {
|
||||
if (buf != NULL) {
|
||||
free(buf);
|
||||
}
|
||||
if (snap != NULL) {
|
||||
scf_snapshot_destroy(snap);
|
||||
}
|
||||
if (val != NULL) {
|
||||
scf_value_destroy(val);
|
||||
}
|
||||
if (prop != NULL) {
|
||||
scf_property_destroy(prop);
|
||||
}
|
||||
if (pg != NULL) {
|
||||
scf_pg_destroy(pg);
|
||||
}
|
||||
if (inst != NULL) {
|
||||
scf_instance_destroy(inst);
|
||||
}
|
||||
if (h != NULL) {
|
||||
scf_handle_destroy(h);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Retruns a zone ID of Solaris when the TZ value is "localtime".
|
||||
* First, it tries scf. If scf fails, it looks for the same file as
|
||||
* /usr/share/lib/zoneinfo/localtime under /usr/share/lib/zoneinfo/.
|
||||
*/
|
||||
static char *
|
||||
getSolarisDefaultZoneID() {
|
||||
char *tz = NULL;
|
||||
struct stat statbuf;
|
||||
size_t size;
|
||||
char *buf;
|
||||
int fd;
|
||||
/* scf specific variables */
|
||||
scf_handle_t *h = NULL;
|
||||
scf_snapshot_t *snap = NULL;
|
||||
scf_instance_t *inst = NULL;
|
||||
scf_propertygroup_t *pg = NULL;
|
||||
scf_property_t *prop = NULL;
|
||||
scf_value_t *val = NULL;
|
||||
|
||||
if ((h = scf_handle_create(SCF_VERSION)) != NULL
|
||||
&& scf_handle_bind(h) == 0
|
||||
&& (inst = scf_instance_create(h)) != NULL
|
||||
&& (snap = scf_snapshot_create(h)) != NULL
|
||||
&& (pg = scf_pg_create(h)) != NULL
|
||||
&& (prop = scf_property_create(h)) != NULL
|
||||
&& (val = scf_value_create(h)) != NULL
|
||||
&& scf_handle_decode_fmri(h, TIMEZONE_FMRI, NULL, NULL, inst,
|
||||
NULL, NULL, SCF_DECODE_FMRI_REQUIRE_INSTANCE) == 0
|
||||
&& scf_instance_get_snapshot(inst, "running", snap) == 0
|
||||
&& scf_instance_get_pg_composed(inst, snap, TIMEZONE_PG, pg) == 0
|
||||
&& scf_pg_get_property(pg, LOCALTIME_PROP, prop) == 0
|
||||
&& scf_property_get_value(prop, val) == 0) {
|
||||
ssize_t len;
|
||||
|
||||
/* Gets the length of the zone ID string */
|
||||
len = scf_value_get_astring(val, NULL, 0);
|
||||
if (len != -1) {
|
||||
tz = malloc(++len); /* +1 for a null byte */
|
||||
if (tz != NULL && scf_value_get_astring(val, tz, len) != -1) {
|
||||
cleanupScf(h, snap, inst, pg, prop, val, NULL);
|
||||
return tz;
|
||||
}
|
||||
}
|
||||
}
|
||||
cleanupScf(h, snap, inst, pg, prop, val, tz);
|
||||
|
||||
if (stat(DEFAULT_ZONEINFO_FILE, &statbuf) == -1) {
|
||||
return NULL;
|
||||
}
|
||||
size = (size_t) statbuf.st_size;
|
||||
buf = malloc(size);
|
||||
if (buf == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
if ((fd = open(DEFAULT_ZONEINFO_FILE, O_RDONLY)) == -1) {
|
||||
free((void *) buf);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (read(fd, buf, size) != (ssize_t) size) {
|
||||
(void) close(fd);
|
||||
free((void *) buf);
|
||||
return NULL;
|
||||
}
|
||||
(void) close(fd);
|
||||
tz = findZoneinfoFile(buf, size, ZONEINFO_DIR);
|
||||
free((void *) buf);
|
||||
return tz;
|
||||
}
|
||||
#endif /*__solaris__*/
|
||||
#endif /*__linux__*/
|
||||
|
||||
/*
|
||||
* findJavaTZ_md() maps platform time zone ID to Java time zone ID
|
||||
@ -504,10 +634,21 @@ findJavaTZ_md(const char *java_home_dir, const char *country)
|
||||
freetz = tz;
|
||||
}
|
||||
|
||||
/*
|
||||
* Remove any preceding ':'
|
||||
*/
|
||||
if (tz != NULL && *tz == ':') {
|
||||
tz++;
|
||||
}
|
||||
|
||||
#ifdef __solaris__
|
||||
if (strcmp(tz, "localtime") == 0) {
|
||||
tz = getSolarisDefaultZoneID();
|
||||
freetz = tz;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (tz != NULL) {
|
||||
if (*tz == ':') {
|
||||
tz++;
|
||||
}
|
||||
#ifdef __linux__
|
||||
/*
|
||||
* Ignore "posix/" prefix.
|
||||
@ -525,24 +666,36 @@ findJavaTZ_md(const char *java_home_dir, const char *country)
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a GMT-offset-based time zone ID. (e.g., "GMT-08:00")
|
||||
* Returns a GMT-offset-based zone ID. (e.g., "GMT-08:00")
|
||||
*/
|
||||
char *
|
||||
getGMTOffsetID()
|
||||
{
|
||||
time_t offset;
|
||||
char sign, buf[16];
|
||||
char sign, buf[32];
|
||||
#ifdef __solaris__
|
||||
struct tm localtm;
|
||||
time_t currenttime;
|
||||
|
||||
if (timezone == 0) {
|
||||
currenttime = time(NULL);
|
||||
if (localtime_r(¤ttime, &localtm) == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
offset = localtm.tm_isdst ? altzone : timezone;
|
||||
#else
|
||||
offset = timezone;
|
||||
#endif /*__linux__*/
|
||||
|
||||
if (offset == 0) {
|
||||
return strdup("GMT");
|
||||
}
|
||||
|
||||
/* Note that the time offset direction is opposite. */
|
||||
if (timezone > 0) {
|
||||
offset = timezone;
|
||||
if (offset > 0) {
|
||||
sign = '-';
|
||||
} else {
|
||||
offset = -timezone;
|
||||
offset = -offset;
|
||||
sign = '+';
|
||||
}
|
||||
sprintf(buf, (const char *)"GMT%c%02d:%02d",
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2005, 2008, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2005, 2011, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -334,6 +334,7 @@ SplashRedrawWindow(Splash * splash) {
|
||||
XDestroyImage(ximage);
|
||||
SplashRemoveDecoration(splash);
|
||||
XMapWindow(splash->display, splash->window);
|
||||
XFlush(splash->display);
|
||||
}
|
||||
|
||||
void SplashReconfigureNow(Splash * splash) {
|
||||
|
@ -70,7 +70,7 @@ class TwoStacksPlainDatagramSocketImpl extends AbstractPlainDatagramSocketImpl
|
||||
fd1 = new FileDescriptor();
|
||||
try {
|
||||
super.create();
|
||||
} catch (IOException e) {
|
||||
} catch (SocketException e) {
|
||||
fd1 = null;
|
||||
throw e;
|
||||
}
|
||||
@ -99,10 +99,11 @@ class TwoStacksPlainDatagramSocketImpl extends AbstractPlainDatagramSocketImpl
|
||||
}
|
||||
|
||||
if (optID == SO_BINDADDR) {
|
||||
if (fd != null && fd1 != null) {
|
||||
if ((fd != null && fd1 != null) && !connected) {
|
||||
return anyLocalBoundAddr;
|
||||
}
|
||||
return socketGetOption(optID);
|
||||
int family = connectedAddress == null ? -1 : connectedAddress.family;
|
||||
return socketLocalAddress(family);
|
||||
} else
|
||||
return super.getOption(optID);
|
||||
}
|
||||
@ -161,6 +162,8 @@ class TwoStacksPlainDatagramSocketImpl extends AbstractPlainDatagramSocketImpl
|
||||
|
||||
protected native void connect0(InetAddress address, int port) throws SocketException;
|
||||
|
||||
protected native Object socketLocalAddress(int family) throws SocketException;
|
||||
|
||||
protected native void disconnect0(int family);
|
||||
|
||||
/**
|
||||
|
@ -26,6 +26,7 @@ package java.net;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.FileDescriptor;
|
||||
import sun.net.ResourceManager;
|
||||
|
||||
/*
|
||||
* This class defines the plain SocketImpl that is used for all
|
||||
@ -81,7 +82,12 @@ class TwoStacksPlainSocketImpl extends AbstractPlainSocketImpl
|
||||
*/
|
||||
protected synchronized void create(boolean stream) throws IOException {
|
||||
fd1 = new FileDescriptor();
|
||||
super.create(stream);
|
||||
try {
|
||||
super.create(stream);
|
||||
} catch (IOException e) {
|
||||
fd1 = null;
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@ -120,6 +126,9 @@ class TwoStacksPlainSocketImpl extends AbstractPlainSocketImpl
|
||||
protected void close() throws IOException {
|
||||
synchronized(fdLock) {
|
||||
if (fd != null || fd1 != null) {
|
||||
if (!stream) {
|
||||
ResourceManager.afterUdpClose();
|
||||
}
|
||||
if (fdUseCount == 0) {
|
||||
if (closePending) {
|
||||
return;
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user