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 <[EMAIL PROTECTED]> * libraries/javalib/java/text/AttributedString.java: Resynced with GNU Classpath. 2004-08-16 Tom Tromey <[EMAIL PROTECTED]> 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 <[EMAIL PROTECTED]> * 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 <[EMAIL PROTECTED]> * java/lang/Compiler.java: Rewrote in terms of VMCompiler. * vm/reference/java/lang/VMCompiler.java: New file. 2004-08-15 Dalibor Topic <[EMAIL PROTECTED]> * libraries/javalib/java/io/File.java: Resynced with GNU Classpath. 2004-08-16 Jeroen Frijters <[EMAIL PROTECTED]> * java/io/File.java File(String,String): Fixed handling of empty path. 2004-08-15 Dalibor Topic <[EMAIL PROTECTED]> * 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 <[EMAIL PROTECTED]> * 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 <[EMAIL PROTECTED]> + * libraries/javalib/java/text/AttributedString.java: + Resynced with GNU Classpath. + + 2004-08-16 Tom Tromey <[EMAIL PROTECTED]> + + 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 <[EMAIL PROTECTED]> + + * libraries/javalib/javax/swing/JDesktopPane.java, + libraries/javalib/javax/swing/plaf/basic/BasicSplitPaneUI.java: + Resynced with GNU Classpath. + + 2004-08-16 Tom Tromey <[EMAIL PROTECTED]> + + 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 <[EMAIL PROTECTED]> + + * libraries/javalib/java/rmi/server/UID.java: + Resynced with GNU Classpath. + + 2004-08-16 Tom Tromey <[EMAIL PROTECTED]> + + Bug 9944. + * java/rmi/server/UID.java (UID): Read `nextCount', not count. + +2004-08-15 Dalibor Topic <[EMAIL PROTECTED]> + + * 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 <[EMAIL PROTECTED]> + + * java/lang/Compiler.java: Rewrote in terms of VMCompiler. + * vm/reference/java/lang/VMCompiler.java: New file. + +2004-08-15 Dalibor Topic <[EMAIL PROTECTED]> + + * libraries/javalib/java/io/File.java: + Resynced with GNU Classpath. + + 2004-08-16 Jeroen Frijters <[EMAIL PROTECTED]> + + * java/io/File.java File(String,String): Fixed handling of empty + path. + +2004-08-15 Dalibor Topic <[EMAIL PROTECTED]> + + * 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 <[EMAIL PROTECTED]> + + * 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 <[EMAIL PROTECTED]> + * 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 <[EMAIL PROTECTED]> - */ - 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 + * [EMAIL PROTECTED] 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 [EMAIL PROTECTED] 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 [EMAIL PROTECTED] AlgorithmParameterSpec} + * argument. One also has a [EMAIL PROTECTED] SecureRandom} argument, while the the + * other uses the [EMAIL PROTECTED] SecureRandom} implementation of the highest-priority + * installed provider as the source of randomness. (If none of the installed + * providers supply an implementation of [EMAIL PROTECTED] 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 [EMAIL PROTECTED] + * 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 & 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 + * & 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 & 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 + * & 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 *** _______________________________________________ kaffe mailing list [EMAIL PROTECTED] http://kaffe.org/cgi-bin/mailman/listinfo/kaffe