This is the mail archive of the
java-patches@gcc.gnu.org
mailing list for the Java project.
Re: Serialization of empty vector over a socket
- From: Mark Wielaard <mark at klomp dot org>
- To: Mark Wielaard <mark at klomp dot org>
- Cc: "Robertson, Jason V" <jason dot v dot robertson at intel dot com>, "'java at gcc dot gnu dot org'" <java at gcc dot gnu dot org>, java-patches at gcc dot gnu dot org
- Date: 21 Jul 2002 21:33:06 +0200
- Subject: Re: Serialization of empty vector over a socket
- References: <0DCC27458EB5D51181840002A507069E0451D18B@orsmsx117.jf.intel.com> <1027266781.12693.96.camel@elsschot>
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());
}
}