This is the mail archive of the java-patches@gcc.gnu.org mailing list for the Java project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Serialization of empty vector over a socket


Hi,

On Sun, 2002-07-21 at 17:53, Mark Wielaard wrote:
> [...] When I link with -static (which gives
> nicer stack traces when libgcj is compiled with debugging symbols) then
> I get a java.lang.RuntimeException: The SHA algorithm was not found to
> use in computing the Serial Version UID for class [Ljava.lang.Object;

Sigh. Linking with -static shows a completely different problem then you
have. The SHA implementation class is not linked with the program since
it is only referenced indirectly through Class.forName(String). I made a
patch for the Gnu security provider and now get the same exception as
you have. But I have still not figured out what goes wrong.

2002-07-21  Mark Wielaard  <mark@klomp.org>

    * gnu/java/security/provider/Gnu.java: Reference all implementation
    classes by using Class.getName().

With this patch static linking automatically includes all Gnu provider
implementation classes when needed since ObjectInputStream references
gnu.java.security.provider.Gnu directly (as backup provider to get at
the SHA algorithm). It also fixed two (!) typos in class names.

OK to commit?

Cheers,

Mark
Index: gnu/java/security/provider/Gnu.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/gnu/java/security/provider/Gnu.java,v
retrieving revision 1.2
diff -u -r1.2 Gnu.java
--- gnu/java/security/provider/Gnu.java	22 Jan 2002 22:40:02 -0000	1.2
+++ gnu/java/security/provider/Gnu.java	21 Jul 2002 19:21:12 -0000
@@ -1,5 +1,5 @@
 /* Gnu.java --- Gnu provider main class
-   Copyright (C) 1999 Free Software Foundation, Inc.
+   Copyright (C) 1999, 2002 Free Software Foundation, Inc.
 
 This file is part of GNU Classpath.
 
@@ -45,8 +45,13 @@
   {
     super( "GNU", 1.0, "GNU provider v1.0 implementing SHA-1, MD5, DSA");
 
+    // Note that all implementation class names are referenced by using
+    // Class.getName(). That way when we staticly link the Gnu provider
+    // we automatically get all the implementation classes.
+
     // Signature
-    put("Signature.SHA1withDSA", "gnu.java.security.provider.DSASignature");
+    put("Signature.SHA1withDSA",
+	gnu.java.security.provider.DSASignature.class.getName());
 
     put("Alg.Alias.Signature.DSS", "SHA1withDSA");
     put("Alg.Alias.Signature.DSA", "SHA1withDSA");
@@ -62,29 +67,32 @@
     put("Alg.Alias.Signature.1.3.14.3.2.27", "SHA1withDSA");
 
     // Key Pair Generator
-    put("KeyPairGenerator.DSA", "gnu.java.security.provider.DSAKeyPairGenerator");
+    put("KeyPairGenerator.DSA",
+	gnu.java.security.provider.DSAKeyPairGenerator.class.getName());
 
     put("Alg.Alias.KeyPairGenerator.OID.1.2.840.10040.4.1", "DSA");
     put("Alg.Alias.KeyPairGenerator.1.2.840.10040.4.1", "DSA");
     put("Alg.Alias.KeyPairGenerator.1.3.14.3.2.12", "DSA");
 
     // Message Digests
-    put("MessageDigest.SHA", "gnu.java.security.provider.SHA");
-    put("MessageDigest.MD5", "gnu.java.security.provider.MD5");
+    put("MessageDigest.SHA", gnu.java.security.provider.SHA.class.getName());
+    put("MessageDigest.MD5", gnu.java.security.provider.MD5.class.getName());
 
     // Format "Alias", "Actual Name"
     put("Alg.Alias.MessageDigest.SHA1", "SHA");
     put("Alg.Alias.MessageDigest.SHA-1", "SHA");
 
     // Algorithm Parameters
-    put("AlgorithmParameters.DSA", "gnu.java.security.provider.DSAAlgorithmParameters");
+    put("AlgorithmParameters.DSA",
+	gnu.java.security.provider.DSAParameters.class.getName());
 
     // Algorithm Parameter Generator
-    put("AlgorithmParameterGenerator.DSA", "gnu.java.security.provider.DSAAlgorithmParameterGenerator");
+    put("AlgorithmParameterGenerator.DSA",
+     gnu.java.security.provider.DSAParameterGenerator.class.getName());
 
     // SecureRandom
-    put("SecureRandom.SHA1PRNG", "gnu.java.security.provider.SHA1PRNG");
-
+    put("SecureRandom.SHA1PRNG",
+	gnu.java.security.provider.SHA1PRNG.class.getName());
 
   }
 }

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]