Gnu.java: New file.

* gnu/java/security/provider/Gnu.java: New file.
	* gnu/java/security/provider/SHA.java: New file.
	* gnu/java/security/provider/SHA1PRNG.java: New file.
	* Makefile.am: Added the above files.
	* Makefile.in: Rebuilt.

	* java/io/ObjectStreamClass.java (setUID): Use Gnu SHA instead of SHS.

From-SVN: r34753
This commit is contained in:
Warren Levy 2000-06-28 11:24:05 +00:00 committed by Warren Levy
parent 0e4aca8830
commit 2017da526c
7 changed files with 444 additions and 8 deletions

View file

@ -36,13 +36,14 @@ import java.lang.reflect.Modifier;
import java.security.DigestOutputStream;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.security.Security;
import java.util.Arrays;
import java.util.Comparator;
import java.util.Hashtable;
import java.util.Vector;
import gnu.java.io.NullOutputStream;
import gnu.java.lang.reflect.TypeSignature;
import gnu.gcj.io.SimpleSHSStream;
import gnu.java.security.provider.Gnu;
public class ObjectStreamClass implements Serializable
@ -420,20 +421,21 @@ public class ObjectStreamClass implements Serializable
MessageDigest md = null;
DigestOutputStream digest_out = null;
DataOutputStream data_out = null;
SimpleSHSStream simple = null;
try
{
md = MessageDigest.getInstance ("SHA");
digest_out = new DigestOutputStream (nullOutputStream, md);
data_out = new DataOutputStream (digest_out);
}
catch (NoSuchAlgorithmException e)
{
simple = new SimpleSHSStream (nullOutputStream);
data_out = new DataOutputStream (simple);
// If a provider already provides SHA, use it; otherwise, use this.
Gnu gnuProvider = new Gnu();
Security.addProvider(gnuProvider);
md = MessageDigest.getInstance ("SHA");
}
digest_out = new DigestOutputStream (nullOutputStream, md);
data_out = new DataOutputStream (digest_out);
data_out.writeUTF (cl.getName ());
int modifiers = cl.getModifiers ();
@ -522,7 +524,7 @@ public class ObjectStreamClass implements Serializable
}
data_out.close ();
byte[] sha = md != null ? md.digest () : simple.digest ();
byte[] sha = md.digest ();
long result = 0;
int len = sha.length < 8 ? sha.length : 8;
for (int i=0; i < len; i++)