This commit is contained in:
Igor Veresov 2015-09-07 13:28:41 -07:00
commit f48eceb393
415 changed files with 4106 additions and 1639 deletions

View File

@ -321,3 +321,4 @@ f55df5cfe11c97e4b58998b76f5bd00a73cde12d jdk9-b75
eeea9adfd1e3d075ef82148c00a4847a1aab4d26 jdk9-b76
c25e882cee9622ec75c4e9d60633539a2f0a8809 jdk9-b77
c8753d0be1778944dc512ec86a459941ea1ad2c3 jdk9-b78
3966bd3b8167419aa05c6718a4af1cf54b1e3c58 jdk9-b79

View File

@ -321,3 +321,4 @@ c706ef5ea5da00078dc5e4334660315f7d99c15b jdk9-b71
d82072b699b880a1f647a5e2d7c0f86cec958941 jdk9-b76
7972dc8f2a47f0c4cd8f02fa5662af41f028aa14 jdk9-b77
8c40d4143ee13bdf8170c68cc384c36ab1e9fadb jdk9-b78
ba08a9f79b9849716bae1f39f71333d47f604012 jdk9-b79

View File

@ -321,3 +321,4 @@ f9f3706bd24c42c07cb260fe05730a749b8e52f4 jdk9-b72
d8126bc88fa5cd1ae4e44d86a4b1280ca1c9e2aa jdk9-b76
8bb2441c0fec8b28f7bf11a0ca3ec1642e7ef457 jdk9-b77
182bb7accc5253bcfefd8edc1d4997ec8f9f8694 jdk9-b78
4ab250b8fac66ef8cd15ee78c40f0c651c96e16a jdk9-b79

View File

@ -481,3 +481,4 @@ fff6b54e9770ac4c12c2fb4cab5aa7672affa4bd jdk9-b74
0bc8d1656d6f2b1fdfe803c1305a108bb9939f35 jdk9-b76
e66c3813789debfc06f206afde1bf7a84cb08451 jdk9-b77
20dc06b04fe5ec373879414d60ef82ac70faef98 jdk9-b78
e9e63d93bbfe2c6c23447e2c1f5cc71c98671cba jdk9-b79

View File

@ -321,3 +321,4 @@ eadcb2b55cd1daf77625813aad0f6f3967b1528a jdk9-b74
36801a89a04201b59874ec776ffe85d6253c9ab5 jdk9-b76
be357705874c4ba1a69c38fb211e5e31e35bf9cb jdk9-b77
5b1899c9822db4a80a29cac82af492afea9f8f41 jdk9-b78
cf809edc840ff7546677d38b13ebd8b3cae2bbda jdk9-b79

View File

@ -1,15 +1,15 @@
/*
* reserved comment block
* DO NOT REMOVE OR ALTER!
* Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
*/
/*
* Copyright 2001-2004 The Apache Software Foundation.
* Copyright 2005 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
@ -17,9 +17,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/*
* $Id: MultiDOM.java,v 1.5 2005/09/28 13:48:36 pvedula Exp $
*/
package com.sun.org.apache.xalan.internal.xsltc.dom;
@ -35,6 +32,7 @@ import com.sun.org.apache.xml.internal.dtm.DTMAxisIterator;
import com.sun.org.apache.xml.internal.dtm.DTMManager;
import com.sun.org.apache.xml.internal.dtm.ref.DTMAxisIteratorBase;
import com.sun.org.apache.xml.internal.dtm.ref.DTMDefaultBase;
import com.sun.org.apache.xml.internal.dtm.ref.DTMAxisIterNodeList;
import com.sun.org.apache.xml.internal.utils.SuballocatedIntVector;
import org.w3c.dom.Node;
@ -569,7 +567,7 @@ public final class MultiDOM implements DOM {
public NodeList makeNodeList(DTMAxisIterator iter) {
int index = iter.next();
if (index == DTM.NULL) {
return null;
return new DTMAxisIterNodeList(null, null);
}
iter.reset();
return _adapters[getDTMId(index)].makeNodeList(iter);

View File

@ -324,3 +324,4 @@ f5911c6155c29ac24b6f9068273207e5ebd3a3df jdk9-b69
55bb88306dc57d07f2c854803465f6d9a7eb4aba jdk9-b76
bd6ece68cf8aca34c8d992569892060c82cfd3f1 jdk9-b77
ac1748bab0743137574be3451307b6a6361719eb jdk9-b78
42ae657e0e104fa7877996b8095f2e3ab1596118 jdk9-b79

View File

@ -25,5 +25,3 @@ Simple Build Instructions:
5. Construct the images:
cd make && gnumake images
The resulting JDK image should be found in build/*/j2sdk-image

View File

@ -887,7 +887,8 @@ ifndef BUILD_HEADLESS_ONLY
$(GIFLIB_CFLAGS) $(LIBJPEG_CFLAGS) $(PNG_CFLAGS), \
DISABLED_WARNINGS_gcc := sign-compare type-limits unused-result maybe-uninitialized, \
DISABLED_WARNINGS_clang := incompatible-pointer-types, \
DISABLED_WARNINGS_solstudio := E_NEWLINE_NOT_LAST E_DECLARATION_IN_CODE, \
DISABLED_WARNINGS_solstudio := E_NEWLINE_NOT_LAST E_DECLARATION_IN_CODE \
E_STATEMENT_NOT_REACHED, \
DISABLED_WARNINGS_microsoft := 4018 4244 4267, \
MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libsplashscreen/mapfile-vers, \
LDFLAGS := $(LDFLAGS_JDKLIB) \

View File

@ -146,6 +146,7 @@ $(eval $(call SetupNativeCompilation,BUILD_LIBJAVA, \
OPTIMIZATION := HIGH, \
CFLAGS := $(CFLAGS_JDKLIB) \
$(LIBJAVA_CFLAGS), \
DISABLED_WARNINGS_solstudio := E_STATEMENT_NOT_REACHED, \
MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libjava/mapfile-vers, \
LDFLAGS := $(LDFLAGS_JDKLIB) \
$(call SET_SHARED_LIBRARY_ORIGIN), \
@ -307,7 +308,9 @@ $(eval $(call SetupNativeCompilation,BUILD_LIBJLI, \
EXTRA_FILES := $(LIBJLI_EXTRA_FILES), \
OPTIMIZATION := HIGH, \
CFLAGS := $(LIBJLI_CFLAGS), \
DISABLED_WARNINGS_solstudio := E_ASM_DISABLES_OPTIMIZATION, \
DISABLED_WARNINGS_solstudio := \
E_ASM_DISABLES_OPTIMIZATION \
E_STATEMENT_NOT_REACHED, \
MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libjli/mapfile-vers, \
LDFLAGS := $(LDFLAGS_JDKLIB) \
$(call SET_SHARED_LIBRARY_ORIGIN), \

View File

@ -35,6 +35,7 @@ $(eval $(call SetupNativeCompilation,BUILD_LIBNET, \
DISABLED_WARNINGS_gcc := format-nonliteral, \
DISABLED_WARNINGS_clang := parentheses-equality constant-logical-operand, \
DISABLED_WARNINGS_microsoft := 4244 4047 4133 4996, \
DISABLED_WARNINGS_solstudio := E_ARG_INCOMPATIBLE_WITH_ARG_L, \
MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libnet/mapfile-vers, \
LDFLAGS := $(LDFLAGS_JDKLIB) \
$(call SET_SHARED_LIBRARY_ORIGIN), \

View File

@ -47,7 +47,7 @@ endif
ifeq ($(OPENJDK_TARGET_OS), macosx)
BUILD_LIBNIO_MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libnio/mapfile-$(OPENJDK_TARGET_OS)
BUILD_LIBNIO_EXFILES += \
GnomeFileTypeDetector.c \
GioFileTypeDetector.c \
#
endif

View File

@ -135,8 +135,8 @@ SUNWprivate_1.1 {
Java_sun_nio_ch_UnixAsynchronousServerSocketChannelImpl_accept0;
Java_sun_nio_ch_UnixAsynchronousServerSocketChannelImpl_initIDs;
Java_sun_nio_ch_UnixAsynchronousSocketChannelImpl_checkConnect;
Java_sun_nio_fs_GnomeFileTypeDetector_initializeGio;
Java_sun_nio_fs_GnomeFileTypeDetector_probeGio;
Java_sun_nio_fs_GioFileTypeDetector_initializeGio;
Java_sun_nio_fs_GioFileTypeDetector_probeGio;
Java_sun_nio_fs_MagicFileTypeDetector_initialize0;
Java_sun_nio_fs_MagicFileTypeDetector_probe0;
Java_sun_nio_fs_LinuxWatchService_eventSize;

View File

@ -130,8 +130,8 @@ SUNWprivate_1.1 {
Java_sun_nio_ch_SolarisEventPort_port_1get;
Java_sun_nio_ch_SolarisEventPort_port_1getn;
Java_sun_nio_ch_SolarisEventPort_port_1send;
Java_sun_nio_fs_GnomeFileTypeDetector_initializeGio;
Java_sun_nio_fs_GnomeFileTypeDetector_probeGio;
Java_sun_nio_fs_GioFileTypeDetector_initializeGio;
Java_sun_nio_fs_GioFileTypeDetector_probeGio;
Java_sun_nio_fs_UnixNativeDispatcher_init;
Java_sun_nio_fs_UnixNativeDispatcher_getcwd;
Java_sun_nio_fs_UnixNativeDispatcher_strerror;

View File

@ -43,4 +43,4 @@ build.release = ${build.jdk.version}-opensource
build.number = b00
jdbc.version = ${build.release}-${user.name}-${build.number}
jdbc.args = -debug
javadoc.options=-J-Xmx256m -Xdoclint:none -keywords -quiet
javadoc.options=-J-Xmx256m -Xdoclint:none -keywords -quiet

View File

@ -23,5 +23,3 @@
<a href="CLSFractal.java">The source</a>.
</body>
</html>

View File

@ -14,9 +14,3 @@
<a href="XYZApp.java">The source</a>.
</body>
</html>

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2008, 2012, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2008, 2015, 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
@ -106,7 +106,7 @@ public class LinuxFileSystemProvider extends UnixFileSystemProvider {
new GetPropertyAction("user.home")), ".mime.types");
Path etcMimeTypes = Paths.get("/etc/mime.types");
return chain(new GnomeFileTypeDetector(),
return chain(new GioFileTypeDetector(),
new MimeTypesFileTypeDetector(userMimeTypes),
new MimeTypesFileTypeDetector(etcMimeTypes),
new MagicFileTypeDetector());

View File

@ -1611,8 +1611,13 @@ public class KeyStore {
* First the keystore type is determined by probing the specified file.
* Then a keystore object is instantiated and loaded using the data from
* that file.
* A password may be supplied to unlock the keystore data or perform an
* integrity check.
*
* <p>
* A password may be given to unlock the keystore
* (e.g. the keystore resides on a hardware token device),
* or to check the integrity of the keystore data.
* If a password is not given for integrity checking,
* then integrity checking is not performed.
*
* <p>
* This method traverses the list of registered security

View File

@ -66,5 +66,3 @@ Java_java_util_zip_Adler32_updateByteBuffer(JNIEnv *env, jclass cls, jint adler,
}
return adler;
}

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2008, 2012, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2008, 2015, 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
@ -89,7 +89,7 @@ public class SolarisFileSystemProvider extends UnixFileSystemProvider {
new GetPropertyAction("user.home")), ".mime.types");
Path etcMimeTypes = Paths.get("/etc/mime.types");
return chain(new GnomeFileTypeDetector(),
return chain(new GioFileTypeDetector(),
new MimeTypesFileTypeDetector(userMimeTypes),
new MimeTypesFileTypeDetector(etcMimeTypes));
}

View File

@ -275,6 +275,3 @@ message/rfc822: \
application/xml: \
description=XML document;\
file_extensions=.xml

View File

@ -35,13 +35,13 @@ import java.security.PrivilegedAction;
* MIME type of a file.
*/
public class GnomeFileTypeDetector
public class GioFileTypeDetector
extends AbstractFileTypeDetector
{
// true if GIO is available
private final boolean gioAvailable;
public GnomeFileTypeDetector() {
public GioFileTypeDetector() {
gioAvailable = initializeGio();
}
@ -67,6 +67,10 @@ public class GnomeFileTypeDetector
// GIO
private static native boolean initializeGio();
//
// The probeGIO() method is synchronized to avert potential problems
// such as crashes due to a suspected lack of thread safety in GIO.
//
private static synchronized native byte[] probeGio(long pathAddress);
static {

View File

@ -26,9 +26,11 @@
#include <unistd.h>
#include <fcntl.h>
#include "jni.h"
#include "jni_util.h"
#include "jvm.h"
#include "io_util_md.h"
#include "io_util_md.h"
#include "java_io_FileDescriptor.h"
/*******************************************************************/
@ -47,8 +49,8 @@ jfieldID IO_append_fdID;
JNIEXPORT void JNICALL
Java_java_io_FileDescriptor_initIDs(JNIEnv *env, jclass fdClass) {
IO_fd_fdID = (*env)->GetFieldID(env, fdClass, "fd", "I");
IO_append_fdID = (*env)->GetFieldID(env, fdClass, "append", "Z");
CHECK_NULL(IO_fd_fdID = (*env)->GetFieldID(env, fdClass, "fd", "I"));
CHECK_NULL(IO_append_fdID = (*env)->GetFieldID(env, fdClass, "append", "Z"));
}
/**************************************************************

View File

@ -73,11 +73,11 @@ static g_file_query_info_func g_file_query_info;
static g_file_info_get_content_type_func g_file_info_get_content_type;
#include "sun_nio_fs_GnomeFileTypeDetector.h"
#include "sun_nio_fs_GioFileTypeDetector.h"
JNIEXPORT jboolean JNICALL
Java_sun_nio_fs_GnomeFileTypeDetector_initializeGio
Java_sun_nio_fs_GioFileTypeDetector_initializeGio
(JNIEnv* env, jclass this)
{
void* gio_handle;
@ -120,7 +120,7 @@ Java_sun_nio_fs_GnomeFileTypeDetector_initializeGio
}
JNIEXPORT jbyteArray JNICALL
Java_sun_nio_fs_GnomeFileTypeDetector_probeGio
Java_sun_nio_fs_GioFileTypeDetector_probeGio
(JNIEnv* env, jclass this, jlong pathAddress)
{
char* path = (char*)jlong_to_ptr(pathAddress);

View File

@ -272,5 +272,3 @@ message/rfc822: \
application/xml: \
description=XML document;\
file_extensions=.xml

View File

@ -27,4 +27,4 @@ package com.apple.eawt;
interface _OpenAppHandler {
void handleOpenApp();
}
}

View File

@ -1098,4 +1098,4 @@ public class AquaLookAndFeel extends BasicLookAndFeel {
};
table.putDefaults(uiDefaults);
}
}
}

View File

@ -278,5 +278,3 @@ public class CDataTransferer extends DataTransferer {
return false;
}
}

View File

@ -1406,5 +1406,3 @@ JNF_COCOA_EXIT(env);
return underMouse;
}

View File

@ -289,4 +289,4 @@ JNIEXPORT jboolean JNICALL Java_sun_lwawt_macosx_CClipboard_checkPasteboardWitho
JNF_COCOA_EXIT(env);
return ret;
}
}

View File

@ -183,4 +183,4 @@ public class MultiResolutionCachedImage extends AbstractMultiResolutionImage {
return false;
}
}
}
}

View File

@ -80,5 +80,3 @@ struct Format3AnchorTable : AnchorTable
U_NAMESPACE_END
#endif

View File

@ -104,5 +104,3 @@ public:
U_NAMESPACE_END
#endif

View File

@ -63,5 +63,3 @@ LE_VAR_ARRAY(CursiveAttachmentSubtable, entryExitRecords)
U_NAMESPACE_END
#endif

View File

@ -61,5 +61,3 @@ LE_VAR_ARRAY(DeviceTable, deltaValues)
U_NAMESPACE_END
#endif

View File

@ -63,5 +63,3 @@ private:
U_NAMESPACE_END
#endif

View File

@ -62,5 +62,3 @@ LE_VAR_ARRAY(MarkArray, markRecordArray)
U_NAMESPACE_END
#endif

View File

@ -109,5 +109,3 @@ LE_VAR_ARRAY(PairPositioningFormat2Subtable, class1RecordArray)
U_NAMESPACE_END
#endif

View File

@ -71,5 +71,3 @@ LE_VAR_ARRAY(SinglePositioningFormat2Subtable, valueRecordArray)
U_NAMESPACE_END
#endif

View File

@ -68,5 +68,3 @@ LE_VAR_ARRAY(SingleSubstitutionFormat2Subtable, substituteArray)
U_NAMESPACE_END
#endif

View File

@ -129,5 +129,3 @@ inline ThaiShaping::StateTransition ThaiShaping::getTransition(le_uint8 state, l
U_NAMESPACE_END
#endif

View File

@ -94,5 +94,3 @@ enum ValueFormatBits
U_NAMESPACE_END
#endif

View File

@ -1836,5 +1836,3 @@ cmsBool CMSEXPORT cmsPipelineEvalReverseFloat(cmsFloat32Number Target[],
return TRUE;
}

View File

@ -201,5 +201,3 @@ void CMSEXPORT _cmsMAT3eval(cmsVEC3* r, const cmsMAT3* a, const cmsVEC3* v)
r->n[VY] = a->v[1].n[VX]*v->n[VX] + a->v[1].n[VY]*v->n[VY] + a->v[1].n[VZ]*v->n[VZ];
r->n[VZ] = a->v[2].n[VX]*v->n[VX] + a->v[2].n[VY]*v->n[VY] + a->v[2].n[VZ]*v->n[VZ];
}

View File

@ -989,5 +989,3 @@ void* CMSEXPORT cmsGetContextUserData(cmsContext ContextID)
{
return _cmsContextGetClientChunk(ContextID, UserPtr);
}

View File

@ -376,5 +376,3 @@ cmsBool CMSEXPORT cmsAdaptToIlluminant(cmsCIEXYZ* Result,
return TRUE;
}

View File

@ -234,4 +234,4 @@ JNIEXPORT jfloat JNICALL Java_java_awt_SplashScreen__1getScaleFactor
return 1;
}
return splash->scaleFactor;
}
}

View File

@ -84,5 +84,3 @@ HRESULT DwmAPI::DwmGetWindowAttribute(HWND hwnd, DWORD dwAttribute,
}
throw FunctionUnavailableException();
}

View File

@ -131,5 +131,3 @@ THINGS TO DO:
2. Handle exceptions properly. The current code lacks error checking
and recovery. This leads to random runtime crashes.

View File

@ -126,8 +126,3 @@ Java Logging Overview</a>.
</body>
</html>

View File

@ -132,7 +132,9 @@ public final class DelegationPermission extends BasicPermission
* Checks if this Kerberos delegation permission object "implies" the
* specified permission.
* <P>
* If none of the above are true, {@code implies} returns false.
* This method returns true if this {@code DelegationPermission}
* is equal to {@code p}, and returns false otherwise.
*
* @param p the permission to check against.
*
* @return true if the specified permission is implied by this object,

View File

@ -179,7 +179,16 @@ public final class ServicePermission extends Permission
* Checks if this Kerberos service permission object "implies" the
* specified permission.
* <P>
* If none of the above are true, {@code implies} returns false.
* More specifically, this method returns true if all of the following
* are true (and returns false if any of them are not):
* <ul>
* <li> <i>p</i> is an instanceof {@code ServicePermission},
* <li> <i>p</i>'s actions are a proper subset of this
* {@code ServicePermission}'s actions,
* <li> <i>p</i>'s name is equal to this {@code ServicePermission}'s name
* or this {@code ServicePermission}'s name is "*".
* </ul>
*
* @param p the permission to check against.
*
* @return true if the specified permission is implied by this object,

View File

@ -4467,4 +4467,4 @@ public abstract class BaseRowSet implements Serializable, Cloneable {
static final long serialVersionUID = 4886719666485113312L;
} //end class
} //end class

View File

@ -96,4 +96,4 @@ public interface RowSetFactory{
*/
public WebRowSet createWebRowSet() throws SQLException;
}
}

View File

@ -1,3 +1,3 @@
<HTML><HEAD></HEAD><BODY><P>
algorithm factories.
</P></BODY></HTML>
</P></BODY></HTML>

View File

@ -1,3 +1,3 @@
<HTML><HEAD></HEAD><BODY><P>
basic handlers for elements that can occur inside <CODE>ds:KeyValue</CODE>.
</P></BODY></HTML>
</P></BODY></HTML>

View File

@ -1,3 +1,3 @@
<HTML><HEAD></HEAD><BODY><P>
basic handlers for elements that can occur inside <CODE>ds:KeyInfo</CODE>.
</P></BODY></HTML>
</P></BODY></HTML>

View File

@ -1,3 +1,3 @@
<HTML><HEAD></HEAD><BODY><P>
basic handlers for elements that can occur inside <CODE>ds:X509Data</CODE>.
</P></BODY></HTML>
</P></BODY></HTML>

View File

@ -1,3 +1,3 @@
<HTML><HEAD></HEAD><BODY><P>
implementations for retrieval of certificates and public keys from elements.
</P></BODY></HTML>
</P></BODY></HTML>

View File

@ -1,3 +1,3 @@
<HTML><HEAD></HEAD><BODY><P>
the resolver framework for retrieval of certificates and public keys from elements.
</P></BODY></HTML>
</P></BODY></HTML>

View File

@ -1,3 +1,3 @@
<HTML><HEAD></HEAD><BODY><P>
implementations of resolvers for retrieval for certificates and public keys from user-specified locations.
</P></BODY></HTML>
</P></BODY></HTML>

View File

@ -1,3 +1,3 @@
<HTML><HEAD></HEAD><BODY><P>
a resolver framework for certificates and public keys from user-specified locations.
</P></BODY></HTML>
</P></BODY></HTML>

View File

@ -24,4 +24,4 @@
package com.sun.org.apache.xml.internal.security.transforms;
public interface TransformParam {
}
}

View File

@ -65,8 +65,9 @@ public class ZipFileSystemProvider extends FileSystemProvider {
// only support legacy JAR URL syntax jar:{uri}!/{entry} for now
String spec = uri.getRawSchemeSpecificPart();
int sep = spec.indexOf("!/");
if (sep != -1)
if (sep != -1) {
spec = spec.substring(0, sep);
}
return Paths.get(new URI(spec)).toAbsolutePath();
} catch (URISyntaxException e) {
throw new IllegalArgumentException(e.getMessage(), e);
@ -107,6 +108,9 @@ public class ZipFileSystemProvider extends FileSystemProvider {
// assume NOT a zip/jar file
throw new UnsupportedOperationException();
}
if (realPath == null) { // newly created
realPath = path.toRealPath();
}
filesystems.put(realPath, zipfs);
return zipfs;
}
@ -132,7 +136,6 @@ public class ZipFileSystemProvider extends FileSystemProvider {
@Override
public Path getPath(URI uri) {
String spec = uri.getSchemeSpecificPart();
int sep = spec.indexOf("!/");
if (sep == -1)

View File

@ -32,10 +32,10 @@ import java.nio.file.*;
import java.nio.file.DirectoryStream.Filter;
import java.nio.file.attribute.*;
import java.util.*;
import static java.nio.charset.StandardCharsets.UTF_8;
import static java.nio.file.StandardOpenOption.*;
import static java.nio.file.StandardCopyOption.*;
/**
*
* @author Xueming Shen, Rajendra Gutupalli,Jaya Hangal
@ -180,7 +180,7 @@ class ZipPath implements Path {
public URI toUri() {
try {
return new URI("jar",
zfs.getZipFile().toUri() +
decodeUri(zfs.getZipFile().toUri().toString()) +
"!" +
zfs.getString(toAbsolutePath().path),
null);
@ -866,4 +866,57 @@ class ZipPath implements Path {
}
}
}
private static int decode(char c) {
if ((c >= '0') && (c <= '9'))
return c - '0';
if ((c >= 'a') && (c <= 'f'))
return c - 'a' + 10;
if ((c >= 'A') && (c <= 'F'))
return c - 'A' + 10;
assert false;
return -1;
}
// to avoid double escape
static String decodeUri(String s) {
if (s == null)
return s;
int n = s.length();
if (n == 0)
return s;
if (s.indexOf('%') < 0)
return s;
StringBuilder sb = new StringBuilder(n);
byte[] bb = new byte[n];
boolean betweenBrackets = false;
for (int i = 0; i < n;) {
char c = s.charAt(i);
if (c == '[') {
betweenBrackets = true;
} else if (betweenBrackets && c == ']') {
betweenBrackets = false;
}
if (c != '%' || betweenBrackets ) {
sb.append(c);
i++;
continue;
}
int nb = 0;
while (c == '%') {
assert (n - i >= 2);
bb[nb++] = (byte)(((decode(s.charAt(++i)) & 0xf) << 4) |
(decode(s.charAt(++i)) & 0xf));
if (++i >= n) {
break;
}
c = s.charAt(i);
}
sb.append(new String(bb, 0, nb, UTF_8));
}
return sb.toString();
}
}

View File

@ -54,4 +54,4 @@
<value>4</value>
</entry>
</supportedModules>
</device>
</device>

View File

@ -64,4 +64,4 @@
Sources: <a href="Validator/src/">Validator/src/</a>
</ul>
</body>
</html>
</html>

View File

@ -46,4 +46,4 @@
Source: <a href="src/WC.java">src/WC.java</a>
</ul>
</body>
</html>
</html>

View File

@ -33,4 +33,4 @@
</ul>
</body>
</html>
</html>

View File

@ -319,6 +319,9 @@ javax/sound/midi/Gervill/SoftProvider/GetDevice.java generic-all
# jdk_time
# 8134979
java/time/tck/java/time/chrono/TCKJapaneseChronology.java generic-all
############################################################################
# jdk_tools
@ -384,6 +387,11 @@ sun/tools/jstatd/TestJstatdExternalRegistry.java generic-all
# 6456333
sun/tools/jps/TestJpsJarRelative.java generic-all
# 8134420
sun/tools/jps/TestJpsClass.java generic-all
sun/tools/jps/TestJpsJar.java generic-all
sun/tools/jps/TestJpsSanity.java generic-all
# 6734748
sun/tools/jinfo/JInfoRunningProcessFlagTest.java generic-all

View File

@ -18,7 +18,7 @@ keys=2d dnd i18n intermittent randomness headful
othervm.dirs=java/awt java/beans javax/accessibility javax/imageio javax/sound javax/print javax/management com/sun/awt sun/awt sun/java2d sun/pisces javax/xml/jaxp/testng/validation java/lang/ProcessHandle
# Tests that cannot run concurrently
exclusiveAccess.dirs=java/rmi/Naming java/util/prefs sun/management/jmxremote sun/tools/jstatd sun/security/mscapi java/util/stream javax/rmi sun/tools/jps
exclusiveAccess.dirs=java/rmi/Naming java/util/prefs sun/management/jmxremote sun/tools/jstatd sun/security/mscapi java/util/stream javax/rmi
# Group definitions
groups=TEST.groups [closed/TEST.groups]

View File

@ -374,5 +374,3 @@ class TestDialog extends Dialog
}
}// TestDialog class

View File

@ -0,0 +1,51 @@
/*
* Copyright (c) 2015, 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.
*
* 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.
*/
import java.security.NoSuchAlgorithmException;
/*
* @test
* @bug 8048601
* @library ../
* @summary Test Blowfish cipher with different MODES and padding
*/
public class TestCipherBlowfish extends TestCipher {
TestCipherBlowfish() throws NoSuchAlgorithmException {
super("Blowfish",
new String[]{"CBC", "CTR", "CTS", "ECB", "PCBC",
//CFBx
"CFB", "CFB8", "CFB16", "CFB24", "CFB32", "CFB40", "CFB48", "CFB56",
"CFB64",
//OFBx
"OFB", "OFB8", "OFB16", "OFB24", "OFB32", "OFB40", "OFB48", "OFB56",
"OFB64"},
new String[]{"NoPaDDing", "PKCS5Padding"},
true);
}
public static void main(String[] args) throws Exception {
new TestCipherBlowfish().runAll();
}
}

View File

@ -0,0 +1,48 @@
/*
* Copyright (c) 2015, 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.
*
* 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.
*/
/*
* @test
* @bug 8048601
* @library ../
* @summary Test DES/DESede cipher with different MODES and padding
*/
public class TestCipherDES extends TestCipher {
TestCipherDES() {
super("DES",
new String[]{"CBC", "CTR", "CTS", "ECB", "PCBC",
//CFBx
"CFB", "CFB8", "CFB16", "CFB24", "CFB32", "CFB40", "CFB48", "CFB56",
"CFB64",
//OFBx
"OFB", "OFB8", "OFB16", "OFB24", "OFB32", "OFB40", "OFB48", "OFB56",
"OFB64"},
new String[]{"NoPaDDing", "PKCS5Padding"});
}
public static void main(String[] args) throws Exception {
new TestCipherDES().runAll();
}
}

View File

@ -0,0 +1,48 @@
/*
* Copyright (c) 2015, 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.
*
* 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.
*/
/*
* @test
* @bug 8048601
* @library ../
* @summary Test DES/DESede cipher with different MODES and padding
*/
public class TestCipherDESede extends TestCipher {
TestCipherDESede() {
super("DESede",
new String[]{"CBC", "CTR", "CTS", "ECB", "PCBC",
//CFBx
"CFB", "CFB8", "CFB16", "CFB24", "CFB32", "CFB40", "CFB48", "CFB56",
"CFB64",
//OFBx
"OFB", "OFB8", "OFB16", "OFB24", "OFB32", "OFB40", "OFB48", "OFB56",
"OFB64"},
new String[]{"NoPaDDing", "PKCS5Padding"});
}
public static void main(String[] args) throws Exception {
new TestCipherDESede().runAll();
}
}

View File

@ -0,0 +1,128 @@
/*
* Copyright (c) 2015, 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.
*
* 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.
*/
import static java.lang.System.out;
import java.security.InvalidAlgorithmParameterException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.security.spec.AlgorithmParameterSpec;
import java.security.spec.InvalidKeySpecException;
import java.util.Arrays;
import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.ShortBufferException;
import javax.crypto.spec.PBEKeySpec;
import javax.crypto.spec.PBEParameterSpec;
/*
* @test
* @bug 8048601
* @summary Tests for PBE ciphers
*/
public class TestCipherPBE {
private static final String[] ALGORITHMS = {"PBEWithMD5AndDES",
"PBEWithMD5AndDES/CBC/PKCS5Padding", "PBEWithMD5AndTripleDES",
"PBEWithMD5AndTripleDES/CBC/PKCS5Padding"};
private static final String KEY_ALGO = "pbeWithMD5ANDdes";
private final byte[] SALT;
private final byte[] PLAIN_TEXT;
public TestCipherPBE() {
SALT = generateBytes(8);
PLAIN_TEXT = generateBytes(200);
}
public static void main(String[] args) throws Exception {
new TestCipherPBE().runAll();
}
private void runAll() throws Exception {
for (String algorithm : ALGORITHMS) {
runTest(algorithm);
}
}
private void runTest(String algorithm)
throws InvalidKeySpecException, NoSuchAlgorithmException,
InvalidAlgorithmParameterException, ShortBufferException,
NoSuchPaddingException, IllegalBlockSizeException,
BadPaddingException, InvalidKeyException {
out.println("=> Testing: " + algorithm);
try {
// Initialization
AlgorithmParameterSpec algoParamSpec
= new PBEParameterSpec(SALT, 6);
SecretKey secretKey
= SecretKeyFactory.getInstance(KEY_ALGO).generateSecret(
new PBEKeySpec(("Secret Key Value").toCharArray()));
Cipher ci = Cipher.getInstance(algorithm);
ci.init(Cipher.ENCRYPT_MODE, secretKey, algoParamSpec);
// Encryption
byte[] cipherText = ci.doFinal(PLAIN_TEXT);
// Decryption
ci.init(Cipher.DECRYPT_MODE, secretKey, algoParamSpec);
byte[] recoveredText = ci.doFinal(cipherText);
if (algorithm.contains("TripleDES")) {
throw new RuntimeException(
"Expected InvalidKeyException exception uncaugh");
}
// Comparison
if (!Arrays.equals(PLAIN_TEXT, recoveredText)) {
throw new RuntimeException(
"Test failed: plainText is not equal to recoveredText");
}
out.println("Test Passed.");
} catch (InvalidKeyException ex) {
if (algorithm.contains("TripleDES")) {
out.println("Expected InvalidKeyException raised");
} else {
throw new RuntimeException(ex);
}
}
}
public static byte[] generateBytes(int length) {
byte[] bytes = new byte[length];
for (int i = 0; i < length; i++) {
bytes[i] = (byte) (i & 0xff);
}
return bytes;
}
}

View File

@ -0,0 +1,220 @@
/*
* Copyright (c) 2015, 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.
*
* 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.
*/
import static java.lang.System.out;
import java.security.InvalidAlgorithmParameterException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.security.NoSuchProviderException;
import java.security.spec.AlgorithmParameterSpec;
import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.KeyGenerator;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.SecretKey;
import javax.crypto.ShortBufferException;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
/**
* This is a abstract class used to test various ciphers
*/
public abstract class TestCipher {
private final String SUNJCE = "SunJCE";
private final String ALGORITHM;
private final String[] MODES;
private final String[] PADDINGS;
/* Used to test cipher with different key strengths
Key size tested is increment of KEYCUTTER from MINIMUM_KEY_SIZE to
maximum allowed keysize.
DES/DESede/Blowfish work with currently selected key sizes.
*/
private final int variousKeySize;
private final int KEYCUTTER = 8;
private final int MINIMUM_KEY_SIZE = 32;
// Used to assert that Encryption/Decryption works with same buffer
// TEXT_LEN is multiple of blocks in order to work against ciphers w/ NoPadding
private final int TEXT_LEN = 800;
private final int ENC_OFFSET = 6;
private final int STORAGE_OFFSET = 3;
private final int PAD_BYTES = 16;
private final byte[] IV;
private final byte[] INPUT_TEXT;
TestCipher(String algo, String[] modes, String[] paddings,
boolean keyStrength) throws NoSuchAlgorithmException {
ALGORITHM = algo;
MODES = modes;
PADDINGS = paddings;
this.variousKeySize
= keyStrength ? Cipher.getMaxAllowedKeyLength(ALGORITHM) : 0;
IV = generateBytes(8);
INPUT_TEXT = generateBytes(TEXT_LEN + PAD_BYTES + ENC_OFFSET);
}
TestCipher(String algo, String[] modes, String[] paddings) {
ALGORITHM = algo;
MODES = modes;
PADDINGS = paddings;
variousKeySize = 0;
IV = generateBytes(8);
INPUT_TEXT = generateBytes(TEXT_LEN + PAD_BYTES + ENC_OFFSET);
}
private static byte[] generateBytes(int length) {
byte[] bytes = new byte[length];
for (int i = 0; i < length; i++) {
bytes[i] = (byte) (i & 0xff);
}
return bytes;
}
private boolean isKeyStrenthSupported() {
return (variousKeySize != 0);
}
public void runAll() throws InvalidKeyException,
NoSuchPaddingException, InvalidAlgorithmParameterException,
ShortBufferException, IllegalBlockSizeException,
BadPaddingException, NoSuchAlgorithmException,
NoSuchProviderException {
for (String mode : MODES) {
for (String padding : PADDINGS) {
if (!isKeyStrenthSupported()) {
runTest(mode, padding, 0);
} else {
int keySize = variousKeySize;
while (keySize >= MINIMUM_KEY_SIZE) {
out.println("With Key Strength: " + keySize);
runTest(mode, padding, keySize);
keySize -= KEYCUTTER;
}
}
}
}
}
private void runTest(String mo, String pad, int keySize)
throws NoSuchPaddingException, BadPaddingException,
ShortBufferException, IllegalBlockSizeException,
InvalidAlgorithmParameterException, InvalidKeyException,
NoSuchAlgorithmException, NoSuchProviderException {
String TRANSFORMATION = ALGORITHM + "/" + mo + "/" + pad;
out.println("Testing: " + TRANSFORMATION);
// Initialization
Cipher ci = Cipher.getInstance(TRANSFORMATION, SUNJCE);
KeyGenerator kg = KeyGenerator.getInstance(ALGORITHM, SUNJCE);
if (keySize != 0) {
kg.init(keySize);
}
SecretKey key = kg.generateKey();
SecretKeySpec skeySpec = new SecretKeySpec(key.getEncoded(), ALGORITHM);
AlgorithmParameterSpec aps = new IvParameterSpec(IV);
if (mo.equalsIgnoreCase("ECB")) {
ci.init(Cipher.ENCRYPT_MODE, key);
} else {
ci.init(Cipher.ENCRYPT_MODE, key, aps);
}
// Encryption
int PAD_LEN = 0;
if (pad.equalsIgnoreCase("PKCS5Padding")) {
// Need to consider pad bytes
PAD_LEN = 8;
}
byte[] plainText = INPUT_TEXT.clone();
// Generate cipher and save to separate buffer
byte[] cipherText = ci.doFinal(INPUT_TEXT, ENC_OFFSET, TEXT_LEN);
// Generate cipher and save to same buffer
int offset = ci.update(
INPUT_TEXT, ENC_OFFSET, TEXT_LEN, INPUT_TEXT, STORAGE_OFFSET);
ci.doFinal(INPUT_TEXT, offset + STORAGE_OFFSET);
if (!equalsBlock(
INPUT_TEXT, STORAGE_OFFSET, cipherText, 0, cipherText.length)) {
throw new RuntimeException(
"Different ciphers generated with same buffer");
}
// Decryption
if (mo.equalsIgnoreCase("ECB")) {
ci.init(Cipher.DECRYPT_MODE, skeySpec);
} else {
ci.init(Cipher.DECRYPT_MODE, skeySpec, aps);
}
// Recover text from cipher and save to separate buffer
byte[] recoveredText = ci.doFinal(cipherText, 0, cipherText.length);
if (!equalsBlock(
plainText, ENC_OFFSET, recoveredText, 0,
recoveredText.length)) {
throw new RuntimeException(
"Recovered text not same as plain text");
} else {
out.println("Recovered and plain text are same");
}
// Recover text from cipher and save to same buffer
ci.update(INPUT_TEXT, STORAGE_OFFSET, TEXT_LEN + PAD_LEN, INPUT_TEXT,
ENC_OFFSET);
ci.doFinal(INPUT_TEXT, ENC_OFFSET);
if (!equalsBlock(
plainText, ENC_OFFSET, recoveredText, 0,
recoveredText.length)) {
throw new RuntimeException(
"Recovered text not same as plain text with same buffer");
} else {
out.println("Recovered and plain text are same with same buffer");
}
out.println("Test Passed.");
}
private static boolean equalsBlock(byte[] b1, int off1, byte[] b2, int off2,
int len) {
for (int i = off1, j = off2, k = 0; k < len; i++, j++, k++) {
if (b1[i] != b2[j]) {
return false;
}
}
return true;
}
}

View File

@ -0,0 +1,172 @@
/*
* Copyright (c) 2015, 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.
*
* 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.
*/
import static java.lang.System.out;
import java.security.InvalidAlgorithmParameterException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.security.spec.AlgorithmParameterSpec;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import javax.crypto.BadPaddingException;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.SecretKey;
import javax.crypto.ShortBufferException;
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.spec.IvParameterSpec;
/**
* Wrapper class to test a given DES algorithm.
*/
public class DESCipherWrapper {
private final Cipher ci;
private final byte[] iv;
private final SecretKey key;
private final String algo;
private final String mode;
private final String pad;
private final int keyStrength;
private byte[] resultText = null;
public DESCipherWrapper(String algo, String mode, String pad)
throws NoSuchAlgorithmException, NoSuchPaddingException {
ci = Cipher.getInstance(algo + "/" + mode + "/" + pad);
iv = new byte[8];
for (int i = 0; i < 8; i++) {
iv[i] = (byte) (i & 0xff);
}
KeyGenerator kg = KeyGenerator.getInstance(algo);
key = kg.generateKey();
keyStrength = algo.equalsIgnoreCase("DESede") ? 112
: key.getEncoded().length * 8;
this.algo = algo;
this.mode = mode;
this.pad = pad;
}
public byte[] getResult() {
return resultText.clone();
}
public void execute(int edMode, byte[] inputText)
throws InvalidKeyException, InvalidAlgorithmParameterException,
IllegalBlockSizeException, BadPaddingException,
ShortBufferException, NoSuchAlgorithmException {
AlgorithmParameterSpec aps = null;
try {
if (!mode.equalsIgnoreCase("ECB")) {
aps = new IvParameterSpec(iv);
}
ci.init(edMode, key, aps);
// Generate a resultText using a single-part enc/dec
resultText = ci.doFinal(inputText);
// Generate outputText for each multi-part en/de-cryption
/* Combination #1:
update(byte[], int, int)
doFinal(byte[], int, int)
*/
byte[] part11 = ci.update(inputText, 0, inputText.length);
byte[] part12 = ci.doFinal();
byte[] outputText1 = new byte[part11.length + part12.length];
System.arraycopy(part11, 0, outputText1, 0, part11.length);
System.arraycopy(part12, 0, outputText1, part11.length,
part12.length);
List<byte[]> outputTexts = new ArrayList<>(4);
outputTexts.add(outputText1);
/* Combination #2:
update(byte[], int, int)
doFinal(byte[], int, int, byte[], int)
*/
byte[] part21 = ci.update(inputText, 0, inputText.length - 5);
byte[] part22 = new byte[ci.getOutputSize(inputText.length)];
int len2 = ci
.doFinal(inputText, inputText.length - 5, 5, part22, 0);
byte[] outputText2 = new byte[part21.length + len2];
System.arraycopy(part21, 0, outputText2, 0, part21.length);
System.arraycopy(part22, 0, outputText2, part21.length, len2);
outputTexts.add(outputText2);
/* Combination #3:
update(byte[], int, int, byte[], int)
doFinal(byte[], int, int)
*/
byte[] part31 = new byte[ci.getOutputSize(inputText.length)];
int len3 = ci.update(inputText, 0, inputText.length - 8, part31, 0);
byte[] part32 = ci.doFinal(inputText, inputText.length - 8, 8);
byte[] outputText3 = new byte[len3 + part32.length];
System.arraycopy(part31, 0, outputText3, 0, len3);
System.arraycopy(part32, 0, outputText3, len3, part32.length);
outputTexts.add(outputText3);
/* Combination #4:
update(byte[], int, int, byte[], int)
doFinal(byte[], int, int, byte[], int)
*/
byte[] part41 = new byte[ci.getOutputSize(inputText.length)];
int len4 = ci.update(inputText, 0, inputText.length - 8, part41, 0);
int rest4 = ci.doFinal(inputText, inputText.length - 8, 8, part41,
len4);
byte[] outputText4 = new byte[len4 + rest4];
System.arraycopy(part41, 0, outputText4, 0, outputText4.length);
outputTexts.add(outputText4);
// Compare results
for (int k = 0; k < outputTexts.size(); k++) {
if (!Arrays.equals(resultText, outputTexts.get(k))) {
out.println(" Testing: " + algo + "/" + mode + "/" + pad);
throw new RuntimeException(
"Compare value of resultText and combination " + k
+ " are not same. Test failed.");
}
}
if (keyStrength > Cipher.getMaxAllowedKeyLength(algo)) {
throw new RuntimeException(
"Expected exception uncaught, keyStrength "
+ keyStrength);
}
} catch (InvalidKeyException ex) {
if (keyStrength <= Cipher.getMaxAllowedKeyLength(algo)) {
out.println("Unexpected exception in " + algo + "/" + mode
+ "/" + pad + " , KeySize " + keyStrength);
throw ex;
}
out.println("Caught InvalidKeyException as expected");
}
}
}

View File

@ -0,0 +1,258 @@
/*
* Copyright (c) 2015, 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.
*
* 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.
*/
import java.security.AlgorithmParameters;
import java.security.InvalidAlgorithmParameterException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.security.spec.AlgorithmParameterSpec;
import java.security.spec.InvalidKeySpecException;
import java.security.spec.InvalidParameterSpecException;
import java.util.Arrays;
import java.util.List;
import java.util.ArrayList;
import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.ShortBufferException;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.PBEKeySpec;
import javax.crypto.spec.PBEParameterSpec;
import javax.crypto.spec.SecretKeySpec;
/**
* PBECipherWrapper is the abstract class for all concrete PBE Cipher wrappers.
*/
public abstract class PBECipherWrapper {
public static final int ITERATION_COUNT = 1000;
private final String algorithm;
private final byte[] salt;
protected SecretKey key;
protected Cipher ci;
protected String baseAlgo;
protected byte[] resultText = null;
protected AlgorithmParameterSpec aps = null;
public PBECipherWrapper(String algorithm, int saltSize) {
this.algorithm = algorithm;
baseAlgo = algorithm.split("/")[0].toUpperCase();
salt = generateSalt(saltSize);
}
protected abstract void initCipher(int mode) throws InvalidKeyException,
InvalidAlgorithmParameterException, InvalidParameterSpecException;
public void execute(int edMode, byte[] inputText)
throws InvalidAlgorithmParameterException,
InvalidParameterSpecException, IllegalBlockSizeException,
BadPaddingException, ShortBufferException, InvalidKeyException {
// Initialize
initCipher(edMode);
// Generate a resultText using a single-part enc/dec
resultText = ci.doFinal(inputText);
// Generate outputText for each multi-part en/de-cryption
/* Combination #1:
update(byte[], int, int)
doFinal(byte[], int, int)
*/
byte[] part11 = ci.update(inputText, 0, inputText.length);
byte[] part12 = ci.doFinal();
byte[] outputText1 = new byte[part11.length + part12.length];
System.arraycopy(part11, 0, outputText1, 0, part11.length);
System.arraycopy(part12, 0, outputText1, part11.length, part12.length);
List<byte[]> outputTexts = new ArrayList<>(4);
outputTexts.add(outputText1);
/* Combination #2:
update(byte[], int, int)
doFinal(byte[], int, int, byte[], int)
*/
byte[] part21 = ci.update(inputText, 0, inputText.length - 5);
byte[] part22 = new byte[ci.getOutputSize(inputText.length)];
int len2 = ci.doFinal(inputText, inputText.length - 5, 5, part22, 0);
byte[] outputText2 = new byte[part21.length + len2];
System.arraycopy(part21, 0, outputText2, 0, part21.length);
System.arraycopy(part22, 0, outputText2, part21.length, len2);
outputTexts.add(outputText2);
/* Combination #3:
update(byte[], int, int, byte[], int)
doFinal(byte[], int, int)
*/
byte[] part31 = new byte[ci.getOutputSize(inputText.length)];
int len3 = ci.update(inputText, 0, inputText.length - 8, part31, 0);
byte[] part32 = ci.doFinal(inputText, inputText.length - 8, 8);
byte[] outputText3 = new byte[len3 + part32.length];
System.arraycopy(part31, 0, outputText3, 0, len3);
System.arraycopy(part32, 0, outputText3, len3, part32.length);
outputTexts.add(outputText3);
/* Combination #4:
update(byte[], int, int, byte[], int)
doFinal(byte[], int, int, byte[], int)
*/
byte[] part41 = new byte[ci.getOutputSize(inputText.length)];
int len4 = ci.update(inputText, 0, inputText.length - 8, part41, 0);
int rest4 = ci
.doFinal(inputText, inputText.length - 8, 8, part41, len4);
byte[] outputText4 = new byte[len4 + rest4];
System.arraycopy(part41, 0, outputText4, 0, outputText4.length);
outputTexts.add(outputText4);
// Compare results
for (int k = 0; k < outputTexts.size(); k++) {
if (!Arrays.equals(resultText, outputTexts.get(k))) {
throw new RuntimeException(
"Compare value of resultText and combination " + k
+ " are not same. Test failed.");
}
}
}
public final byte[] generateSalt(int numberOfBytes) {
byte[] aSalt = new byte[numberOfBytes];
for (int i = 0; i < numberOfBytes; i++) {
aSalt[i] = (byte) (i & 0xff);
}
return aSalt;
}
public byte[] getResult() {
return resultText;
}
public String getAlgorithm() {
return algorithm;
}
public byte[] getSalt() {
return salt;
}
/**
* Wrapper class to test a given SecretKeyFactory.PBKDF2 algorithm.
*/
public static class PBKDF2 extends PBECipherWrapper {
private static final int PBKDF2_SALT_SIZE = 64;
private static final int CIPHER_KEY_SIZE = 128;
private static final String CIPHER_TRANSFORMATION = "AES/CBC/PKCS5Padding";
private static final String KEY_ALGORITHM = "AES";
private byte[] iv = null;
public PBKDF2(String algo, String passwd)
throws InvalidKeySpecException, NoSuchAlgorithmException,
NoSuchPaddingException {
super(algo, PBKDF2_SALT_SIZE);
ci = Cipher.getInstance(CIPHER_TRANSFORMATION);
PBEKeySpec pbeKeySpec = new PBEKeySpec(passwd.toCharArray(), getSalt(),
ITERATION_COUNT, CIPHER_KEY_SIZE);
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(algo);
key = keyFactory.generateSecret(pbeKeySpec);
}
@Override
protected void initCipher(int mode) throws InvalidKeyException,
InvalidAlgorithmParameterException, InvalidParameterSpecException {
if (Cipher.ENCRYPT_MODE == mode) {
ci.init(Cipher.ENCRYPT_MODE, new SecretKeySpec(key.getEncoded(),
KEY_ALGORITHM));
iv = ci.getParameters().getParameterSpec(IvParameterSpec.class)
.getIV();
} else {
ci.init(Cipher.DECRYPT_MODE, new SecretKeySpec(key.getEncoded(),
KEY_ALGORITHM), new IvParameterSpec(iv));
}
}
}
/**
* Wrapper class to test a given AES-based PBE algorithm.
*/
public static class AES extends PBECipherWrapper {
private AlgorithmParameters pbeParams;
public AES(String algo, String passwd)
throws NoSuchAlgorithmException, NoSuchPaddingException,
InvalidKeySpecException {
super(algo, 0);
ci = Cipher.getInstance(algo);
SecretKeyFactory skf = SecretKeyFactory.getInstance(algo);
key = skf.generateSecret(new PBEKeySpec(passwd.toCharArray()));
}
@Override
protected void initCipher(int mode) throws InvalidKeyException,
InvalidAlgorithmParameterException, InvalidParameterSpecException {
if (Cipher.ENCRYPT_MODE == mode) {
ci.init(Cipher.ENCRYPT_MODE, key);
pbeParams = ci.getParameters();
} else {
ci.init(Cipher.DECRYPT_MODE, key, pbeParams);
}
}
}
/**
* Wrapper class to test a given PBE algorithm.
*/
public static class Legacy extends PBECipherWrapper {
private static final int PBE_SALT_SIZE = 8;
public Legacy(String algo, String passwd)
throws NoSuchAlgorithmException, NoSuchPaddingException,
InvalidKeySpecException {
super(algo, PBE_SALT_SIZE);
SecretKeyFactory skf = SecretKeyFactory.getInstance(algo.split("/")[0]);
key = skf.generateSecret(new PBEKeySpec(passwd.toCharArray()));
aps = new PBEParameterSpec(getSalt(), ITERATION_COUNT);
ci = Cipher.getInstance(algo);
}
@Override
protected void initCipher(int mode) throws InvalidKeyException,
InvalidAlgorithmParameterException, InvalidParameterSpecException {
ci.init(mode, key, aps);
}
}
}

View File

@ -0,0 +1,136 @@
/*
* Copyright (c) 2015, 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.
*
* 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.
*/
import static java.lang.System.out;
import java.security.NoSuchAlgorithmException;
import java.security.spec.InvalidKeySpecException;
import java.util.Arrays;
import javax.crypto.Cipher;
import javax.crypto.NoSuchPaddingException;
/*
* @test
* @bug 8048601
* @summary Performs multiple-part encryption/decryption depending on the
* specified encryption mode and check if the results obtained by
* different ways are the same.
*/
public class TestCipherTextLength {
/* Algorithms tested by DESCipherWrapper */
private static final String[] DES_ALGORITHMS = {"DES", "DESede",
"Blowfish"};
private static final String[] DES_MODES = {"ECB", "CBC", "PCBC"};
private static final String[] DES_PADDING = {"PKCS5Padding"};
/* Algorithms tested by PBECipherWrapper */
private static final String[] PBE_ALGORITHMS = {"PBEWithMD5AndDES",
"PBEWithMD5AndDES/CBC/PKCS5Padding", "PBEWithMD5ANDTripleDES",
"PBEWithMD5AndTripleDES/CBC/PKCS5Padding", "PBEwithSHA1AndDESede",
"PBEwithSHA1AndDESede/CBC/PKCS5Padding", "PBEwithSHA1AndRC2_40",
"PBEwithSHA1Andrc2_40/CBC/PKCS5Padding", "PBEWithSHA1AndRC2_128",
"PBEWithSHA1andRC2_128/CBC/PKCS5Padding", "PBEWithSHA1AndRC4_40",
"PBEWithsha1AndRC4_40/ECB/NoPadding", "PBEWithSHA1AndRC4_128",
"PBEWithSHA1AndRC4_128/ECB/NoPadding", "PBEWithHmacSHA1AndAES_128",
"PBEWithHmacSHA224AndAES_128", "PBEWithHmacSHA256AndAES_128",
"PBEWithHmacSHA384AndAES_128", "PBEWithHmacSHA512AndAES_128",
"PBEWithHmacSHA1AndAES_256", "PBEWithHmacSHA224AndAES_256",
"PBEWithHmacSHA256AndAES_256", "PBEWithHmacSHA384AndAES_256",
"PBEWithHmacSHA512AndAES_256", "PBKDF2WithHmacSHA1",
"PBKDF2WithHmacSHA224", "PBKDF2WithHmacSHA256",
"PBKDF2WithHmacSHA384", "PBKDF2WithHmacSHA512"};
private static final String PBE_PASSWORD = "Hush, it's a secret!!";
// Algorithm tested by PBKDF2Wrappter
private static final String PBKDF2 = "PBKDF2";
// Algorithm tested by AESPBEWrapper
private static final String AES = "AES";
public static void main(String[] args) throws Exception {
byte[] plainText = new byte[64];
for (int i = 0; i < 64; i++) {
plainText[i] = (byte) (i & 0xff);
}
new TestCipherTextLength().runAll(plainText);
}
public void runAll(byte[] plainText) throws Exception {
// Testing DES/Blowfish Cipher
for (String algorithm : DES_ALGORITHMS) {
for (String desMode : DES_MODES) {
for (String padding : DES_PADDING) {
out.println("=>Testing: " + algorithm + "/" + desMode
+ "/" + padding);
DESCipherWrapper desCi = new DESCipherWrapper(algorithm,
desMode, padding);
desCi.execute(Cipher.ENCRYPT_MODE, plainText);
desCi.execute(Cipher.DECRYPT_MODE, desCi.getResult());
if (!Arrays.equals(plainText, desCi.getResult())) {
throw new RuntimeException(
"Plain and recovered texts are not same for:"
+ algorithm + "/" + desMode + "/"
+ padding);
}
}
}
}
// Testing PBE Cipher
for (String algorithm : PBE_ALGORITHMS) {
int maxKeyLen = Cipher.getMaxAllowedKeyLength(algorithm);
boolean isUnlimited = maxKeyLen == Integer.MAX_VALUE;
if (!isUnlimited
&& (algorithm.contains("TripleDES") || algorithm
.contains("AES_256"))) {
out.println("Test " + algorithm + " will be ignored");
continue;
}
out.println("=>Testing: " + algorithm);
PBECipherWrapper pbeCi = createWrapper(algorithm, PBE_PASSWORD);
pbeCi.execute(Cipher.ENCRYPT_MODE, plainText);
pbeCi.execute(Cipher.DECRYPT_MODE, pbeCi.getResult());
if (!Arrays.equals(plainText, pbeCi.getResult())) {
throw new RuntimeException(
"Plain and recovered texts are not same for:"
+ algorithm);
}
}
}
private PBECipherWrapper createWrapper(String algo, String passwd)
throws InvalidKeySpecException, NoSuchAlgorithmException,
NoSuchPaddingException {
if (algo.contains(PBKDF2)) {
return new PBECipherWrapper.PBKDF2(algo, passwd);
} else if (algo.contains(AES)) {
return new PBECipherWrapper.AES(algo, passwd);
} else {
return new PBECipherWrapper.Legacy(algo, passwd);
}
}
}

View File

@ -76,4 +76,4 @@ class Utils {
interface MacTest {
void doTest(String alg) throws Exception;
}
}

View File

@ -442,6 +442,3 @@ public class InterfaceMethodsTest extends TestScaffold {
}
}
}

View File

@ -1215,5 +1215,3 @@ runit()
# Don't know how this arises
debuggeeFailIfPresent "Internal exception"
}

View File

@ -23,4 +23,4 @@
public enum ConfigKey {
CONSTANT3, CONSTANT2;
}
}

View File

@ -23,4 +23,4 @@
public enum ConfigKey {
CONSTANT1, CONSTANT2;
}
}

View File

@ -29,4 +29,4 @@ public class Ste extends NotificationBroadcasterSupport implements SteMBean {
public void foo() {
sendNotification(new TestNotification("test", this, count++));
}
}
}

View File

@ -23,4 +23,4 @@
public interface SteMBean {
public void foo();
}
}

View File

@ -7,5 +7,3 @@ grant {
//permission java.net.SocketPermission "*:636", "connect";
//permission javax.security.auth.AuthPermission "modifyPrincipals";
};

View File

@ -212,4 +212,4 @@ public final class DimensionEncapsulation implements Runnable {
throw new RuntimeException(e);
}
}
}
}

View File

@ -163,4 +163,4 @@ public final class InsetsEncapsulation implements Runnable {
throw new RuntimeException(e);
}
}
}
}

View File

@ -69,4 +69,4 @@ public final class SetEnabledPerformance {
}
});
}
}
}

View File

@ -29,4 +29,4 @@
<applet CODE="MultiResolutionCursorTest.class" WIDTH=300 HEIGHT=100></applet>
<p> See the dialog box (usually in upper left corner) for instructions</p>
</body>
</html>
</html>

View File

@ -134,4 +134,4 @@ public class FileDialogModalFocusTest {
throw new RuntimeException("file chooser is underneath");
}
}
}
}

View File

@ -135,5 +135,3 @@ public class Test3 {
}
}
}

View File

@ -79,5 +79,3 @@ public class LCDScale extends Component {
}
}
}

View File

@ -156,4 +156,4 @@ public class FramesGC {
refs.add(new PhantomReference<Frame>(frame, que));
}
}
}

View File

@ -76,4 +76,4 @@ public class MaximizedToUnmaximized {
frame.dispose();
}
}
}
}

View File

@ -129,4 +129,4 @@ public final class RemoveHelpMenu {
checkMenuCount(menuBar, 0);
checkHelpMenu(helpMenu, false);
}
}
}

View File

@ -426,5 +426,3 @@ class TestDialog extends Dialog
}
}// TestDialog class

Some files were not shown because too many files have changed in this diff Show More