7197071: Makefiles for various security providers aren't including the default manifest
Reviewed-by: valeriep, mullan, katleman
This commit is contained in:
parent
28475942c9
commit
30dd7eee31
@ -198,9 +198,9 @@ ifndef OPENJDK
|
||||
#
|
||||
# Build ucrypto.jar.
|
||||
#
|
||||
$(UNSIGNED_DIR)/ucrypto.jar: build
|
||||
$(UNSIGNED_DIR)/ucrypto.jar: build $(JCE_MANIFEST_FILE)
|
||||
$(prep-target)
|
||||
$(BOOT_JAR_CMD) cf $@ $(JAR_DIRS) \
|
||||
$(BOOT_JAR_CMD) cmf $(JCE_MANIFEST_FILE) $@ $(JAR_DIRS) \
|
||||
$(BOOT_JAR_JFLAGS)
|
||||
@$(java-vm-cleanup)
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2007, 2012, 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
|
||||
@ -31,7 +31,7 @@ include $(BUILDDIR)/common/Release.gmk
|
||||
JCE_MANIFEST_FILE = $(TEMPDIR)/manifest.mf
|
||||
$(JCE_MANIFEST_FILE): $(MAINMANIFEST)
|
||||
$(prep-target)
|
||||
$(SED) -e "s#@@RELEASE@@#$(RELEASE)#" \
|
||||
$(SED) -e "s#@@RELEASE@@#$(JDK_VERSION)#" \
|
||||
-e "s#@@COMPANY_NAME@@#$(COMPANY_NAME)#" \
|
||||
$(MAINMANIFEST) >> $@
|
||||
$(ECHO) "Extension-Name: javax.crypto" >> $@
|
||||
|
@ -246,9 +246,9 @@ build-jar: $(UNSIGNED_DIR)/sunec.jar
|
||||
#
|
||||
# Build sunec.jar.
|
||||
#
|
||||
$(UNSIGNED_DIR)/sunec.jar: build
|
||||
$(UNSIGNED_DIR)/sunec.jar: build $(JCE_MANIFEST_FILE)
|
||||
$(prep-target)
|
||||
$(BOOT_JAR_CMD) cf $@ $(JAR_DIRS) \
|
||||
$(BOOT_JAR_CMD) cmf $(JCE_MANIFEST_FILE) $@ $(JAR_DIRS) \
|
||||
$(BOOT_JAR_JFLAGS)
|
||||
@$(java-vm-cleanup)
|
||||
|
||||
|
@ -209,9 +209,9 @@ build-jar: $(UNSIGNED_DIR)/sunmscapi.jar
|
||||
#
|
||||
# Build sunmscapi.jar.
|
||||
#
|
||||
$(UNSIGNED_DIR)/sunmscapi.jar: build
|
||||
$(UNSIGNED_DIR)/sunmscapi.jar: build $(JCE_MANIFEST_FILE)
|
||||
$(prep-target)
|
||||
$(BOOT_JAR_CMD) cf $@ $(JAR_DIRS) \
|
||||
$(BOOT_JAR_CMD) cmf $(JCE_MANIFEST_FILE) $@ $(JAR_DIRS) \
|
||||
$(BOOT_JAR_JFLAGS)
|
||||
@$(java-vm-cleanup)
|
||||
|
||||
|
@ -225,9 +225,9 @@ build-jar: $(UNSIGNED_DIR)/sunpkcs11.jar
|
||||
#
|
||||
# Build sunpkcs11.jar.
|
||||
#
|
||||
$(UNSIGNED_DIR)/sunpkcs11.jar: build
|
||||
$(UNSIGNED_DIR)/sunpkcs11.jar: build $(JCE_MANIFEST_FILE)
|
||||
$(prep-target)
|
||||
$(BOOT_JAR_CMD) cf $@ $(JAR_DIRS) \
|
||||
$(BOOT_JAR_CMD) cmf $(JCE_MANIFEST_FILE) $@ $(JAR_DIRS) \
|
||||
$(BOOT_JAR_JFLAGS)
|
||||
@$(java-vm-cleanup)
|
||||
|
||||
|
123
jdk/test/javax/crypto/sanity/CheckManifestForRelease.java
Normal file
123
jdk/test/javax/crypto/sanity/CheckManifestForRelease.java
Normal file
@ -0,0 +1,123 @@
|
||||
/*
|
||||
* Copyright (c) 2012, 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 7197071
|
||||
* @summary Makefiles for various security providers aren't including
|
||||
* the default manifest.
|
||||
*/
|
||||
import java.net.*;
|
||||
import java.io.*;
|
||||
|
||||
/**
|
||||
* When the Java specification version is incremented, all of the providers
|
||||
* must be recompiled with the proper implementation version to match.
|
||||
*/
|
||||
public class CheckManifestForRelease {
|
||||
|
||||
/**
|
||||
* @param args the command line arguments
|
||||
*/
|
||||
public static void main(String[] args) throws Exception {
|
||||
checkFileManifests();
|
||||
}
|
||||
|
||||
/*
|
||||
* Iterate over the files of interest: JCE framework and providers
|
||||
*/
|
||||
static private void checkFileManifests() throws Exception {
|
||||
System.out.println("=============");
|
||||
String libDirName = System.getProperty("java.home", ".") + "/lib";
|
||||
String extDirName = libDirName + "/ext";
|
||||
|
||||
System.out.println("Checking Manifest in directory: \n " +
|
||||
extDirName);
|
||||
|
||||
/*
|
||||
* Current list of JCE providers, all of which currently live in
|
||||
* the extensions directory. Add if more are created.
|
||||
*/
|
||||
String[] providers = new String[]{
|
||||
"sunjce_provider.jar",
|
||||
"sunec.jar",
|
||||
"sunmscapi.jar",
|
||||
"sunpkcs11.jar",
|
||||
"ucrypto.jar"
|
||||
};
|
||||
|
||||
checkManifest(libDirName, "jce.jar");
|
||||
for (String provider : providers) {
|
||||
checkManifest(extDirName, provider);
|
||||
}
|
||||
System.out.println("Passed.");
|
||||
}
|
||||
|
||||
// Helper method to format the URL properly.
|
||||
static private String formatURL(String dir, String file) {
|
||||
return "jar:file:///" + dir + "/" + file + "!/";
|
||||
}
|
||||
|
||||
static private String specVersion =
|
||||
System.getProperty("java.specification.version");
|
||||
|
||||
/*
|
||||
* Test the root cause, which is that there were no manifest values
|
||||
* for many of the providers, and for those that had them, there was
|
||||
* no test to make sure that the impl version was appropriate for
|
||||
* the spec version.
|
||||
*/
|
||||
static private void checkManifest(String dir, String file)
|
||||
throws Exception {
|
||||
|
||||
System.out.println("Checking: " + file);
|
||||
|
||||
String url = formatURL(dir, file);
|
||||
JarURLConnection urlc =
|
||||
(JarURLConnection) (new URL(url).openConnection());
|
||||
|
||||
String implVersion;
|
||||
try {
|
||||
implVersion = urlc.getManifest().getMainAttributes().getValue(
|
||||
"Implementation-Version");
|
||||
} catch (FileNotFoundException e) {
|
||||
/*
|
||||
* If the file doesn't exist (e.g. mscapi on solaris),
|
||||
* skip it. If there are other problems, fail out.
|
||||
*/
|
||||
System.out.println(" " + file + " not found, skipping...");
|
||||
return;
|
||||
}
|
||||
|
||||
if (implVersion == null) {
|
||||
throw new Exception(
|
||||
"Implementation-Version not found in Manifest");
|
||||
}
|
||||
|
||||
if (!implVersion.startsWith(specVersion)) {
|
||||
throw new Exception(
|
||||
"Implementation-Version does not match " +
|
||||
"Specification-Version");
|
||||
}
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user