[kaffe] CVS kaffe (dalibor): Resynced with GNU Classpath

Kaffe CVS cvs-commits at kaffe.org
Tue Aug 17 10:58:49 PDT 2004


PatchSet 5072 
Date: 2004/08/17 17:54:56
Author: dalibor
Branch: HEAD
Tag: (none) 
Log:
Resynced with GNU Classpath

2004-08-15  Dalibor Topic  <robilad at kaffe.org>

        * libraries/javalib/java/text/AttributedString.java:
        Resynced with GNU Classpath.

        2004-08-16  Tom Tromey  <tromey at redhat.com>

        Bug 9949.
        * java/text/AttributedString.java (AttributedString): Use
        ArrayList to build array of attribute ranges.  Don't use
        nextCount', not count.

2004-08-15  Dalibor Topic  <robilad at kaffe.org>

        * libraries/javalib/java/lang/Compiler.java:
        Resynced with GNU Classpath.

        * libraries/javalib/java/lang/VMCompiler.java:
        New file. Taken from GNU Classpath.

        * libraries/javalib/Makefile.am,
        libraries/javalib/Makefile.in,
        libraries/javalib/all.files:
        Regenerated.

        2004-08-16  Tom Tromey  <tromey at redhat.com>

        * java/lang/Compiler.java: Rewrote in terms of VMCompiler.
        * vm/reference/java/lang/VMCompiler.java: New file.

2004-08-15  Dalibor Topic  <robilad at kaffe.org>

        * libraries/javalib/java/io/File.java:
        Resynced with GNU Classpath.

        2004-08-16  Jeroen Frijters  <jeroen at frijters.net>

        * java/io/File.java File(String,String): Fixed handling of empty
        path.
2004-08-15  Dalibor Topic  <robilad at kaffe.org>

        * libraries/javalib/java/security/DummyKeyPairGenerator.java,
        libraries/javalib/java/security/DummyMessageDigest.java,
        libraries/javalib/java/security/DummySignature.java,
        libraries/javalib/java/security/MessageDigest.java,
        libraries/javalib/java/security/MessageDigestSpi.java,
        libraries/javalib/java/security/Signature.java,
        libraries/javalib/java/security/SignatureSpi.java,
        libraries/javalib/javax/crypto/MacSpi.java:
        Resynced with GNU Classpath.

        * libraries/javalib/java/security/KeyPairGenerator.java,
        libraries/javalib/java/security/KeyPairGeneratorSpi.java:
        Replaced by implementation from GNU Classpath.

        2004-08-15  Casey Marshall  <csm at gnu.org>

        * java/security/DummyKeyPairGenerator.java (clone): removed
        useless instanceof check.
        * java/security/DummyMessageDigest.java (clone): likewise.
        * java/security/DummySignature.java (clone): likewise.
        * java/security/MessageDigest.java (clone): remove useless
        instanceof check.
        * java/security/MessageDigestSpi.java (clone): likewise.
        * java/security/Signature.java (clone): provide meaningful
        implementation.
        * java/security/SignatureSpi.java (clone): likewise.
        * javax/crypto/MacSpi.java (clone): likewise.

Members: 
	ChangeLog:1.2630->1.2631 
	libraries/javalib/Makefile.am:1.222->1.223 
	libraries/javalib/Makefile.in:1.299->1.300 
	libraries/javalib/all.files:1.16->1.17 
	libraries/javalib/java/io/File.java:1.53->1.54 
	libraries/javalib/java/lang/Compiler.java:1.5->1.6 
	libraries/javalib/java/lang/VMCompiler.java:INITIAL->1.1 
	libraries/javalib/java/rmi/server/UID.java:1.3->1.4 
	libraries/javalib/java/security/DummyKeyPairGenerator.java:INITIAL->1.1 
	libraries/javalib/java/security/DummyMessageDigest.java:1.1->1.2 
	libraries/javalib/java/security/DummySignature.java:INITIAL->1.1 
	libraries/javalib/java/security/KeyPairGenerator.java:1.3->1.4 
	libraries/javalib/java/security/KeyPairGeneratorSpi.java:1.1->1.2 
	libraries/javalib/java/security/MessageDigest.java:1.6->1.7 
	libraries/javalib/java/security/MessageDigestSpi.java:1.2->1.3 
	libraries/javalib/java/security/Signature.java:1.5->1.6 
	libraries/javalib/java/security/SignatureSpi.java:1.3->1.4 
	libraries/javalib/java/text/AttributedString.java:1.7->1.8 
	libraries/javalib/javax/crypto/MacSpi.java:1.1->1.2 
	libraries/javalib/javax/swing/JDesktopPane.java:1.1->1.2 
	libraries/javalib/javax/swing/plaf/basic/BasicSplitPaneUI.java:1.2->1.3 

Index: kaffe/ChangeLog
diff -u kaffe/ChangeLog:1.2630 kaffe/ChangeLog:1.2631
--- kaffe/ChangeLog:1.2630	Mon Aug 16 10:33:34 2004
+++ kaffe/ChangeLog	Tue Aug 17 17:54:56 2004
@@ -6,6 +6,100 @@
 
 2004-08-15  Dalibor Topic  <robilad at kaffe.org>
 
+	* libraries/javalib/java/text/AttributedString.java:
+	Resynced with GNU Classpath.
+
+	2004-08-16  Tom Tromey  <tromey at redhat.com>
+
+        Bug 9949.
+        * java/text/AttributedString.java (AttributedString): Use
+        ArrayList to build array of attribute ranges.  Don't use
+        `attribs' before it is set.
+
+2004-08-15  Dalibor Topic  <robilad at kaffe.org>
+
+	* libraries/javalib/javax/swing/JDesktopPane.java,
+	libraries/javalib/javax/swing/plaf/basic/BasicSplitPaneUI.java:
+	Resynced with GNU Classpath.
+
+	2004-08-16  Tom Tromey  <tromey at redhat.com>
+
+        Bug 9948.
+        * javax/swing/JDesktopPane.java (LIVE_DRAG_MODE): Now final.
+        (OUTLINE_DRAG_MODE): LIVE_DRAG_MODE.
+        * javax/swing/plaf/basic/BasicSplitPaneUI.java
+        (NON_CONTINUOUS_DIVIDER): Now final.  Initialize.
+
+2004-08-15  Dalibor Topic  <robilad at kaffe.org>
+
+	* libraries/javalib/java/rmi/server/UID.java:
+	Resynced with GNU Classpath.
+
+	2004-08-16  Tom Tromey  <tromey at redhat.com>
+
+        Bug 9944.
+        * java/rmi/server/UID.java (UID): Read `nextCount', not count.
+
+2004-08-15  Dalibor Topic  <robilad at kaffe.org>
+
+	* libraries/javalib/java/lang/Compiler.java:
+	Resynced with GNU Classpath.
+
+	* libraries/javalib/java/lang/VMCompiler.java:
+	New file. Taken from GNU Classpath.
+
+	* libraries/javalib/Makefile.am,
+	libraries/javalib/Makefile.in,
+	libraries/javalib/all.files:
+	Regenerated.
+
+	2004-08-16  Tom Tromey  <tromey at redhat.com>
+
+        * java/lang/Compiler.java: Rewrote in terms of VMCompiler.
+        * vm/reference/java/lang/VMCompiler.java: New file.
+
+2004-08-15  Dalibor Topic  <robilad at kaffe.org>
+
+	* libraries/javalib/java/io/File.java:
+	Resynced with GNU Classpath.
+
+	2004-08-16  Jeroen Frijters  <jeroen at frijters.net>
+
+        * java/io/File.java File(String,String): Fixed handling of empty
+        path.
+
+2004-08-15  Dalibor Topic  <robilad at kaffe.org>
+
+	* libraries/javalib/java/security/DummyKeyPairGenerator.java,
+	libraries/javalib/java/security/DummyMessageDigest.java,
+	libraries/javalib/java/security/DummySignature.java,
+	libraries/javalib/java/security/MessageDigest.java,
+	libraries/javalib/java/security/MessageDigestSpi.java,
+	libraries/javalib/java/security/Signature.java,
+	libraries/javalib/java/security/SignatureSpi.java,
+	libraries/javalib/javax/crypto/MacSpi.java:
+	Resynced with GNU Classpath.
+
+	* libraries/javalib/java/security/KeyPairGenerator.java,
+	libraries/javalib/java/security/KeyPairGeneratorSpi.java:
+	Replaced by implementation from GNU Classpath.
+
+	2004-08-15  Casey Marshall  <csm at gnu.org>
+
+        * java/security/DummyKeyPairGenerator.java (clone): removed
+        useless instanceof check.
+        * java/security/DummyMessageDigest.java (clone): likewise.
+        * java/security/DummySignature.java (clone): likewise.
+        * java/security/MessageDigest.java (clone): remove useless
+        instanceof check.
+        * java/security/MessageDigestSpi.java (clone): likewise.
+        * java/security/Signature.java (clone): provide meaningful
+        implementation.
+        * java/security/SignatureSpi.java (clone): likewise.
+        * javax/crypto/MacSpi.java (clone): likewise.
+
+2004-08-15  Dalibor Topic  <robilad at kaffe.org>
+
         * include/Makefile.am:
 	Added new libxmlj includes, and remove no longer needed ones.
 
Index: kaffe/libraries/javalib/Makefile.am
diff -u kaffe/libraries/javalib/Makefile.am:1.222 kaffe/libraries/javalib/Makefile.am:1.223
--- kaffe/libraries/javalib/Makefile.am:1.222	Mon Aug 16 02:43:44 2004
+++ kaffe/libraries/javalib/Makefile.am	Tue Aug 17 17:54:58 2004
@@ -1922,6 +1922,7 @@
 	java/lang/UnsatisfiedLinkError.java \
 	java/lang/UnsupportedClassVersionError.java \
 	java/lang/UnsupportedOperationException.java \
+	java/lang/VMCompiler.java \
 	java/lang/VMObject.java \
 	java/lang/VMSecurityManager.java \
 	java/lang/VMThread.java \
@@ -2171,7 +2172,9 @@
 	java/security/DigestInputStream.java \
 	java/security/DigestOutputStream.java \
 	java/security/DomainCombiner.java \
+	java/security/DummyKeyPairGenerator.java \
 	java/security/DummyMessageDigest.java \
+	java/security/DummySignature.java \
 	java/security/GeneralSecurityException.java \
 	java/security/Guard.java \
 	java/security/GuardedObject.java \
Index: kaffe/libraries/javalib/Makefile.in
diff -u kaffe/libraries/javalib/Makefile.in:1.299 kaffe/libraries/javalib/Makefile.in:1.300
--- kaffe/libraries/javalib/Makefile.in:1.299	Mon Aug 16 02:43:44 2004
+++ kaffe/libraries/javalib/Makefile.in	Tue Aug 17 17:55:00 2004
@@ -2390,6 +2390,7 @@
 	java/lang/UnsatisfiedLinkError.java \
 	java/lang/UnsupportedClassVersionError.java \
 	java/lang/UnsupportedOperationException.java \
+	java/lang/VMCompiler.java \
 	java/lang/VMObject.java \
 	java/lang/VMSecurityManager.java \
 	java/lang/VMThread.java \
@@ -2654,7 +2655,9 @@
 	java/security/DigestInputStream.java \
 	java/security/DigestOutputStream.java \
 	java/security/DomainCombiner.java \
+	java/security/DummyKeyPairGenerator.java \
 	java/security/DummyMessageDigest.java \
+	java/security/DummySignature.java \
 	java/security/GeneralSecurityException.java \
 	java/security/Guard.java \
 	java/security/GuardedObject.java \
Index: kaffe/libraries/javalib/all.files
diff -u kaffe/libraries/javalib/all.files:1.16 kaffe/libraries/javalib/all.files:1.17
--- kaffe/libraries/javalib/all.files:1.16	Mon Aug 16 02:43:46 2004
+++ kaffe/libraries/javalib/all.files	Tue Aug 17 17:55:00 2004
@@ -1502,6 +1502,7 @@
 java/lang/UnsatisfiedLinkError.java
 java/lang/UnsupportedClassVersionError.java
 java/lang/UnsupportedOperationException.java
+java/lang/VMCompiler.java
 java/lang/VMObject.java
 java/lang/VMSecurityManager.java
 java/lang/VMThread.java
@@ -1736,7 +1737,9 @@
 java/security/DigestInputStream.java
 java/security/DigestOutputStream.java
 java/security/DomainCombiner.java
+java/security/DummyKeyPairGenerator.java
 java/security/DummyMessageDigest.java
+java/security/DummySignature.java
 java/security/GeneralSecurityException.java
 java/security/Guard.java
 java/security/GuardedObject.java
Index: kaffe/libraries/javalib/java/io/File.java
diff -u kaffe/libraries/javalib/java/io/File.java:1.53 kaffe/libraries/javalib/java/io/File.java:1.54
--- kaffe/libraries/javalib/java/io/File.java:1.53	Sun Aug 15 22:12:50 2004
+++ kaffe/libraries/javalib/java/io/File.java	Tue Aug 17 17:55:01 2004
@@ -364,9 +364,9 @@
 	    if (separatorChar == '\\' /* TODO use ON_WINDOWS */)
 	      {
 		int skip = 0;
-		while(name.length() > skip &&
-		    (name.charAt(skip) == separatorChar ||
-		    name.charAt(skip) == '/'))
+		while(name.length() > skip
+		    && (name.charAt(skip) == separatorChar
+		    || name.charAt(skip) == '/'))
 		  {
 		    skip++;
 		  }
Index: kaffe/libraries/javalib/java/lang/Compiler.java
diff -u kaffe/libraries/javalib/java/lang/Compiler.java:1.5 kaffe/libraries/javalib/java/lang/Compiler.java:1.6
--- kaffe/libraries/javalib/java/lang/Compiler.java:1.5	Tue May 18 01:10:27 2004
+++ kaffe/libraries/javalib/java/lang/Compiler.java	Tue Aug 17 17:55:01 2004
@@ -1,5 +1,5 @@
 /* Compiler.java -- placeholder for Java-to-native runtime compilers
-   Copyright (C) 1998, 1999, 2001, 2002 Free Software Foundation, Inc.
+   Copyright (C) 1998, 1999, 2001, 2002, 2004 Free Software Foundation, Inc.
 
 This file is part of GNU Classpath.
 
@@ -76,8 +76,7 @@
    */
   public static boolean compileClass(Class oneClass)
   {
-    // Never succeed.
-    return false;
+    return VMCompiler.compileClass(oneClass);
   }
 
   /**
@@ -90,8 +89,7 @@
    */
   public static boolean compileClasses(String classNames)
   {
-    // Note the incredibly lame interface.  Always fail.
-    return false;
+    return VMCompiler.compileClasses(classNames);
   }
 
   /**
@@ -105,8 +103,7 @@
    */
   public static Object command(Object arg)
   {
-    // Our implementation defines this to a no-op.
-    return null;
+    return VMCompiler.command(arg);
   }
 
   /**
@@ -116,6 +113,7 @@
    */
   public static void enable()
   {
+    VMCompiler.enable();
   }
 
   /**
@@ -124,5 +122,6 @@
    */
   public static void disable()
   {
+    VMCompiler.disable();
   }
 }
===================================================================
Checking out kaffe/libraries/javalib/java/lang/VMCompiler.java
RCS:  /home/cvs/kaffe/kaffe/libraries/javalib/java/lang/VMCompiler.java,v
VERS: 1.1
***************
--- /dev/null	Sun Aug  4 19:57:58 2002
+++ kaffe/libraries/javalib/java/lang/VMCompiler.java	Tue Aug 17 17:58:49 2004
@@ -0,0 +1,112 @@
+/* VMClassLoader.java -- Reference implementation of compiler interface
+   Copyright (C) 2004 Free Software Foundation
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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 for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING.  If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library.  Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module.  An independent module is a module which is not derived from
+or based on this library.  If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so.  If you do not wish to do so, delete this
+exception statement from your version. */
+
+package java.lang;
+
+/**
+ * This class is just a per-VM reflection of java.lang.Compiler.
+ * All methods are defined identically.
+ */
+final class VMCompiler
+{
+  /**
+   * Don't allow new `Compiler's to be made.
+   */
+  private VMCompiler()
+  {
+  }
+
+  /**
+   * Compile the class named by <code>oneClass</code>.
+   *
+   * @param oneClass the class to compile
+   * @return <code>false</code> if no compiler is available or
+   *         compilation failed, <code>true</code> if compilation succeeded
+   * @throws NullPointerException if oneClass is null
+   */
+  public static boolean compileClass(Class oneClass)
+  {
+    // Never succeed.
+    return false;
+  }
+
+  /**
+   * Compile the classes whose name matches <code>classNames</code>.
+   *
+   * @param classNames the name of classes to compile
+   * @return <code>false</code> if no compiler is available or
+   *         compilation failed, <code>true</code> if compilation succeeded
+   * @throws NullPointerException if classNames is null
+   */
+  public static boolean compileClasses(String classNames)
+  {
+    // Note the incredibly lame interface.  Always fail.
+    return false;
+  }
+
+  /**
+   * This method examines the argument and performs an operation
+   * according to the compilers documentation.  No specific operation
+   * is required.
+   *
+   * @param arg a compiler-specific argument
+   * @return a compiler-specific value, including null
+   * @throws NullPointerException if the compiler doesn't like a null arg
+   */
+  public static Object command(Object arg)
+  {
+    // Our implementation defines this to a no-op.
+    return null;
+  }
+
+  /**
+   * Calling <code>Compiler.enable()</code> will cause the compiler
+   * to resume operation if it was previously disabled; provided that a
+   * compiler even exists.
+   */
+  public static void enable()
+  {
+  }
+
+  /**
+   * Calling <code>Compiler.disable()</code> will cause the compiler
+   * to be suspended; provided that a compiler even exists.
+   */
+  public static void disable()
+  {
+  }
+}
Index: kaffe/libraries/javalib/java/rmi/server/UID.java
diff -u kaffe/libraries/javalib/java/rmi/server/UID.java:1.3 kaffe/libraries/javalib/java/rmi/server/UID.java:1.4
--- kaffe/libraries/javalib/java/rmi/server/UID.java:1.3	Mon Mar 22 11:24:58 2004
+++ kaffe/libraries/javalib/java/rmi/server/UID.java	Tue Aug 17 17:55:01 2004
@@ -1,5 +1,5 @@
 /*
-  Copyright (c) 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
+  Copyright (c) 1996, 1997, 1998, 1999, 2004 Free Software Foundation, Inc.
 
 This file is part of GNU Classpath.
 
@@ -37,10 +37,13 @@
 
 package java.rmi.server;
 
-import java.io.DataInput;
+import java.io.Serializable;
 import java.io.DataOutput;
+import java.io.DataInput;
 import java.io.IOException;
-import java.io.Serializable;
+import java.util.Random;
+import java.lang.Thread;
+import java.lang.InterruptedException;
 
 public final class UID
 	implements Serializable {
@@ -62,7 +65,7 @@
  */
 public UID() {
 	synchronized (lock) {
-		if (count == Short.MAX_VALUE) {
+		if (nextCount == Short.MAX_VALUE) {
 			long newtime;
 			for (;;) {
 				newtime = System.currentTimeMillis();
===================================================================
Checking out kaffe/libraries/javalib/java/security/DummyKeyPairGenerator.java
RCS:  /home/cvs/kaffe/kaffe/libraries/javalib/java/security/DummyKeyPairGenerator.java,v
VERS: 1.1
***************
--- /dev/null	Sun Aug  4 19:57:58 2002
+++ kaffe/libraries/javalib/java/security/DummyKeyPairGenerator.java	Tue Aug 17 17:58:49 2004
@@ -0,0 +1,75 @@
+/* DummyKeyPairGenerator.java - Wrapper for KeyPairGeneratorSpi
+   Copyright (C) 1999, 2002 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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 for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING.  If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library.  Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module.  An independent module is a module which is not derived from
+or based on this library.  If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so.  If you do not wish to do so, delete this
+exception statement from your version. */
+
+package java.security;
+
+import java.security.spec.AlgorithmParameterSpec;
+
+final class DummyKeyPairGenerator extends KeyPairGenerator
+{
+  private KeyPairGeneratorSpi kpgSpi = null;
+
+  public DummyKeyPairGenerator(KeyPairGeneratorSpi kpgSpi, String algorithm)
+  {
+    super(algorithm);
+    this.kpgSpi = kpgSpi;
+  }
+
+  public Object clone() throws CloneNotSupportedException
+  {
+    KeyPairGenerator result = new DummyKeyPairGenerator
+            ((KeyPairGeneratorSpi) kpgSpi.clone(), this.getAlgorithm());
+    result.provider = this.getProvider();
+    return result;
+  }
+
+  public void initialize(int keysize, SecureRandom random)
+  {
+    kpgSpi.initialize(keysize, random);
+  }
+
+  public void initialize(AlgorithmParameterSpec params, SecureRandom random)
+    throws InvalidAlgorithmParameterException
+  {
+    kpgSpi.initialize(params, random);
+  }
+
+  public KeyPair generateKeyPair()
+  {
+    return kpgSpi.generateKeyPair();
+  }
+}
Index: kaffe/libraries/javalib/java/security/DummyMessageDigest.java
diff -u kaffe/libraries/javalib/java/security/DummyMessageDigest.java:1.1 kaffe/libraries/javalib/java/security/DummyMessageDigest.java:1.2
--- kaffe/libraries/javalib/java/security/DummyMessageDigest.java:1.1	Mon Aug 16 00:41:23 2004
+++ kaffe/libraries/javalib/java/security/DummyMessageDigest.java	Tue Aug 17 17:55:02 2004
@@ -49,11 +49,8 @@
 
   public Object clone() throws CloneNotSupportedException
   {
-    if (!(mdSpi instanceof Cloneable))
-      throw new CloneNotSupportedException();
-
     MessageDigest result = new DummyMessageDigest
-	((MessageDigestSpi) mdSpi.clone(), this.getAlgorithm());
+        ((MessageDigestSpi) mdSpi.clone(), this.getAlgorithm());
     result.provider = this.getProvider();
     return result;
   }
===================================================================
Checking out kaffe/libraries/javalib/java/security/DummySignature.java
RCS:  /home/cvs/kaffe/kaffe/libraries/javalib/java/security/DummySignature.java,v
VERS: 1.1
***************
--- /dev/null	Sun Aug  4 19:57:58 2002
+++ kaffe/libraries/javalib/java/security/DummySignature.java	Tue Aug 17 17:58:49 2004
@@ -0,0 +1,102 @@
+/* DummySignature.java - Signature wrapper for SignatureSpi.
+   Copyright (C) 1999, 2002 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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 for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING.  If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library.  Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module.  An independent module is a module which is not derived from
+or based on this library.  If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so.  If you do not wish to do so, delete this
+exception statement from your version. */
+
+package java.security;
+
+final class DummySignature extends Signature
+{
+  private SignatureSpi sigSpi = null;
+
+  public DummySignature(SignatureSpi sigSpi, String algorithm)
+  {
+    super(algorithm);
+    this.sigSpi = sigSpi;
+  }
+
+  public Object clone() throws CloneNotSupportedException
+  {
+    Signature result = new DummySignature
+            ((SignatureSpi) sigSpi.clone(), this.getAlgorithm());
+    result.provider = this.getProvider();
+    return result;
+  }
+
+  protected void engineInitVerify(PublicKey publicKey)
+    throws InvalidKeyException
+  {
+    sigSpi.engineInitVerify(publicKey);
+  }
+
+  protected void engineInitSign(PrivateKey privateKey)
+    throws InvalidKeyException
+  {
+    sigSpi.engineInitSign(privateKey);
+  }
+
+  protected void engineUpdate(byte b) throws SignatureException
+  {
+    sigSpi.engineUpdate(b);
+  }
+
+  protected void engineUpdate(byte[]b, int off, int len)
+    throws SignatureException
+  {
+    sigSpi.engineUpdate(b, off, len);
+  }
+
+  protected byte[] engineSign() throws SignatureException
+  {
+    return sigSpi.engineSign();
+  }
+
+  protected boolean engineVerify(byte[]sigBytes) throws SignatureException
+  {
+    return sigSpi.engineVerify(sigBytes);
+  }
+
+  protected void engineSetParameter(String param, Object value)
+    throws InvalidParameterException
+  {
+    sigSpi.engineSetParameter(param, value);
+  }
+
+  protected Object engineGetParameter(String param)
+    throws InvalidParameterException
+  {
+    return sigSpi.engineGetParameter(param);
+  }
+}
Index: kaffe/libraries/javalib/java/security/KeyPairGenerator.java
diff -u kaffe/libraries/javalib/java/security/KeyPairGenerator.java:1.3 kaffe/libraries/javalib/java/security/KeyPairGenerator.java:1.4
--- kaffe/libraries/javalib/java/security/KeyPairGenerator.java:1.3	Thu Feb 20 13:52:09 2003
+++ kaffe/libraries/javalib/java/security/KeyPairGenerator.java	Tue Aug 17 17:55:02 2004
@@ -1,85 +1,397 @@
+/* KeyPairGenerator.java --- Key Pair Generator Class
+   Copyright (C) 1999, 2002, 2003 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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 for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING.  If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library.  Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module.  An independent module is a module which is not derived from
+or based on this library.  If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so.  If you do not wish to do so, delete this
+exception statement from your version. */
 
-/*
- * Java core library component.
- *
- * Copyright (c) 1999
- *	Archie L. Cobbs.  All rights reserved.
- * Copyright (c) 1999
- *	Transvirtual Technologies, Inc.  All rights reserved.
- *
- * See the file "license.terms" for information on usage and redistribution
- * of this file.
- *
- * Author: Archie L. Cobbs <archie at whistle.com>
- */
- 
 package java.security;
 
 import java.security.spec.AlgorithmParameterSpec;
 
-// See MessageDigest for a description of why this extends KeyPairGeneratorSpi
-// and the weirdness it causes.
+import gnu.java.security.Engine;
 
-public abstract class KeyPairGenerator extends KeyPairGeneratorSpi {
-	static final String ENGINE_CLASS = "KeyPairGenerator";
-	private final String algorithm;
-	private Provider provider;
-
-	protected KeyPairGenerator(String algorithm) {
-		this.algorithm = algorithm;
-	}
-
-	public String getAlgorithm() {
-		return algorithm;
-	}
-
-	public static KeyPairGenerator getInstance(String alg)
-			throws NoSuchAlgorithmException {
-		return getInstance(Security.getCryptInstance(
-			ENGINE_CLASS, alg));
-	}
-
-	public static KeyPairGenerator getInstance(String alg, String provider)
-			throws NoSuchAlgorithmException,
-				NoSuchProviderException {
-		return getInstance(Security.getCryptInstance(
-			ENGINE_CLASS, alg, provider));
-	}
-
-	private static KeyPairGenerator getInstance(Security.Engine e) {
-		// weirdness
-		KeyPairGenerator k = (KeyPairGenerator)e.getEngine();
-		k.provider = e.getProvider();
-		return k;
-	}
-
-	public final Provider getProvider() {
-		return provider;
-	}
-
-	public void initialize(int keysize) {
-		initialize(keysize, new SecureRandom());
-	}
-
-	// this class must be overridden by provider's class
-	public void initialize(int keysize, SecureRandom random) {
-		throw new UnsupportedOperationException();
-	}
-
-	public void initialize(AlgorithmParameterSpec params)
-			throws InvalidAlgorithmParameterException {
-		initialize(params, new SecureRandom());
-	}
-
-	// this class must be overridden by provider's class
-	public void initialize(AlgorithmParameterSpec params, SecureRandom r)
-                throws InvalidAlgorithmParameterException
-	{
-		throw new UnsupportedOperationException();
-	}
-
-	public final KeyPair genKeyPair() {
-		return /*engine.*/generateKeyPair();
-	}
+/**
+ * <p>The <code>KeyPairGenerator</code> class is used to generate pairs of
+ * public and private keys. Key pair generators are constructed using the
+ * <code>getInstance()</code> factory methods (static methods that return
+ * instances of a given class).</p>
+ *
+ * <p>A Key pair generator for a particular algorithm creates a public/private
+ * key pair that can be used with this algorithm. It also associates
+ * algorithm-specific parameters with each of the generated keys.</p>
+ *
+ * <p>There are two ways to generate a key pair: in an algorithm-independent
+ * manner, and in an algorithm-specific manner. The only difference between the
+ * two is the initialization of the object:</p>
+ *
+ * <ul>
+ * <li><b>Algorithm-Independent Initialization</b><br/>
+ *     All key pair generators share the concepts of a <i>keysize</i> and a
+ *     <i>source of randomness</i>. The <i>keysize</i> is interpreted differently
+ *     for different algorithms (e.g., in the case of the <i>DSA</i> algorithm,
+ *     the <i>keysize</i> corresponds to the length of the modulus). There is an
+ *     <code>initialize()</code> method in this <code>KeyPairGenerator</code>
+ *     class that takes these two universally shared types of arguments. There
+ *     is also one that takes just a <i>keysize</i> argument, and uses the
+ *     {@link SecureRandom} implementation of the highest-priority installed
+ *     provider as the <i>source of randomness</i>. (If none of the installed
+ *     providers supply an implementation of {@link SecureRandom}, a
+ *     system-provided source of randomness is used.)
+ *
+ *     <p>Since no other parameters are specified when you call the above
+ *     algorithm-independent initialize methods, it is up to the provider what
+ *     to do about the algorithm-specific parameters (if any) to be associated
+ *     with each of the keys.</p>
+ *
+ *     <p>If the algorithm is the <i>DSA</i> algorithm, and the <i>keysize</i>
+ *     (modulus size) is <code>512</code>, <code>768</code>, or <code>1024</code>,
+ *     then the <b>GNU</b> provider uses a set of precomputed values for the
+ *     <code>p</code>, <code>q</code>, and <code>g</code> parameters. If the
+ *     <i>modulus size</i> is not one of the above values, the <b>GNU</b>
+ *     provider creates a new set of parameters. Other providers might have
+ *     precomputed parameter sets for more than just the three modulus sizes
+ *     mentioned above. Still others might not have a list of precomputed
+ *     parameters at all and instead always create new parameter sets.</p></li>
+ * <li><b>Algorithm-Specific Initialization</b><br/>
+ *     For situations where a set of algorithm-specific parameters already
+ *     exists (e.g., so-called <i>community parameters</i> in <i>DSA</i>), there
+ *     are two initialize methods that have an {@link AlgorithmParameterSpec}
+ *     argument. One also has a {@link SecureRandom} argument, while the the
+ *     other uses the {@link SecureRandom} implementation of the highest-priority
+ *     installed provider as the source of randomness. (If none of the installed
+ *     providers supply an implementation of {@link SecureRandom}, a
+ *     system-provided source of randomness is used.)</li>
+ * </ul>
+ *
+ * <p>In case the client does not explicitly initialize the
+ * <code>KeyPairGenerator</code> (via a call to an initialize method), each
+ * provider must supply (and document) a default initialization. For example,
+ * the <b>GNU</b> provider uses a default modulus size (keysize) of
+ * <code>1024</code> bits.</p>
+ *
+ * <p>Note that this class is abstract and extends from {@link
+ * KeyPairGeneratorSpi} for historical reasons. Application developers should
+ * only take notice of the methods defined in this <code>KeyPairGenerator</code>
+ * class; all the methods in the superclass are intended for cryptographic
+ * service providers who wish to supply their own implementations of key pair
+ * generators.</p>
+ *
+ * @see Signature
+ * @see KeyPair
+ * @see AlgorithmParameterSpec
+ * @author Mark Benvenuto
+ * @author Casey Marshall
+ */
+public abstract class KeyPairGenerator extends KeyPairGeneratorSpi
+{
+  /** The service name for key pair generators. */
+  private static final String KEY_PAIR_GENERATOR = "KeyPairGenerator";
+
+  Provider provider;
+  private String algorithm;
+
+  /**
+   * Creates a <code>KeyPairGenerator</code> object for the specified 
+   * algorithm.
+   *
+   * @param algorithm the standard string name of the algorithm. 
+   * See Appendix A in the Java Cryptography Architecture API 
+   * Specification &amp; Reference for information about standard 
+   * algorithm names.
+   */
+  protected KeyPairGenerator(String algorithm)
+  {
+    this.algorithm = algorithm;
+    this.provider = null;
+  }
+
+  /**
+   * Returns the standard name of the algorithm for this key pair generator.
+   * See Appendix A in the Java Cryptography Architecture API Specification
+   * &amp; Reference for information about standard algorithm names.
+   *
+   * @return the standard string name of the algorithm.
+   */
+  public String getAlgorithm()
+  {
+    return algorithm;
+  }
+
+  /**
+   * Generates a <code>KeyPairGenerator</code> object that implements the
+   * specified digest algorithm. If the default provider package provides an
+   * implementation of the requested digest algorithm, an instance of
+   * <code>KeyPairGenerator</code> containing that implementation is returned.
+   * If the algorithm is not available in the default package, other packages
+   * are searched.
+   *
+   * @param algorithm the standard string name of the algorithm. See Appendix A
+   * in the Java Cryptography Architecture API Specification &amp; Reference for
+   * information about standard algorithm names.
+   * @return the new <code>KeyPairGenerator</code> object.
+   * @throws NoSuchAlgorithmException if the algorithm is not available in the
+   * environment.
+   */
+  public static KeyPairGenerator getInstance(String algorithm)
+    throws NoSuchAlgorithmException
+  {
+    Provider[] p = Security.getProviders();
+    for (int i = 0; i < p.length; i++)
+      {
+        try
+          {
+            return getInstance(algorithm, p[i]);
+	  }
+        catch (NoSuchAlgorithmException ignored) {}
+      }
+
+    throw new NoSuchAlgorithmException(algorithm);
+  }
+
+  /**
+   * Generates a <code>KeyPairGenerator</code> object implementing the 
+   * specified algorithm, as supplied from the specified provider, if 
+   * such an algorithm is available from the provider.
+   *
+   * @param algorithm the standard string name of the algorithm. See 
+   * Appendix A in the Java Cryptography Architecture API Specification 
+   * &amp; Reference for information about standard algorithm names.
+   * @param provider the string name of the provider.
+   * @return the new <code>KeyPairGenerator</code> object.
+   * @throws NoSuchAlgorithmException if the algorithm is not available 
+   * from the provider.
+   * @throws NoSuchProviderException if the provider is not available in the
+   * environment.
+   * @throws IllegalArgumentException if the provider name is <code>null</code>
+   * or empty.
+   * @see Provider
+   */
+  public static KeyPairGenerator getInstance(String algorithm, String provider)
+    throws NoSuchAlgorithmException, NoSuchProviderException
+  {
+    Provider p = Security.getProvider(provider);
+    if (p == null)
+      throw new NoSuchProviderException(provider);
+
+    return getInstance(algorithm, p);
+  }

*** Patch too long, truncated ***




More information about the kaffe mailing list