--- Tatsuya Tsurukawa <[EMAIL PROTECTED]>
wrote:
> I'm now testing Apache SOAP 2.2 and TOMCAT 3.2.3 on
> Red Hat Linux 7.2.
> to make simple Web Services. 
> 
> They work well on Sun's JDK1.3.1. Then I tried to
> use Kaffe-1.0.6-6 as
> JVM instead of Sun's JDK, and I found it doesn't
> work. I saw follwing
> errors.

I just had a success to get tomcat 3.2.4 running on
current kaffe from CVS with the attached patches from
Tim Stack.

* how I got it to run:
- got latest kaffe from CVS
- applied attached patches
- compiled and installed
- got the tar.gz package from jakarta.
- extracted it
- added all jars in the lib/ directory to the
classpath
- ran it with
kaffe -Dtomcat.home=<path-to>/jakarta-tomcat-3.2.4/ 
org.apache.tomcat.startup.Tomcat
- tested the servlet examples. all worked for me on
lynx and mozilla.
- the jsp examples failed since the JSP engine wanted
to explicately use sun's javac as the java compiler.
there might be a way to get around it by setting an
option to use jikes instead, but I didn't try it. Just
adding kaffe's rt.jar and classes.zip from JDK 1.1.8
to the classpath worked for me. A better solution
would be to write a KjcCompiler class.

I hope this helps 

regards,

dalibor topic

__________________________________________________
Do You Yahoo!?
Yahoo! - Official partner of 2002 FIFA World Cup
http://fifaworldcup.yahoo.com
Index: SHA.java
===================================================================
RCS file: /cvs/kaffe/kaffe/libraries/javalib/kaffe/security/provider/SHA.java,v
retrieving revision 1.2
diff -u -r1.2 SHA.java
--- SHA.java    22 Nov 2001 06:21:25 -0000      1.2
+++ SHA.java    3 Jun 2002 20:57:57 -0000
@@ -17,7 +17,7 @@
 
 
 public final class SHA extends UpdateDigest {
-       public static final String DIGEST_NAME = "SHA";
+       public static final String DIGEST_NAME = "SHA-1";
        public static final int DIGEST_LENGTH = 20;
 
        public SHA() {
Index: Kaffe.java
===================================================================
RCS file: /cvs/kaffe/kaffe/libraries/javalib/kaffe/security/provider/Kaffe.java,v
retrieving revision 1.3
diff -u -r1.3 Kaffe.java
--- Kaffe.java  4 Jan 2002 05:12:33 -0000       1.3
+++ Kaffe.java  3 Jun 2002 20:57:57 -0000
@@ -39,8 +39,12 @@
                                    "kaffe.security.provider.MD4");
                            put("MessageDigest.MD5",
                                    "kaffe.security.provider.MD5");
-                           put("MessageDigest.SHA",
+                           put("MessageDigest.SHA-1",
                                    "kaffe.security.provider.SHA");
+                           put("Alg.Alias.MessageDigest.SHA1",
+                                   "SHA-1");
+                           put("Alg.Alias.MessageDigest.SHA",
+                                   "SHA-1");
                            put("SecureRandom.SHA1PRNG",
                                    "kaffe.security.provider.SHA1PRNG");
                            return null;
Index: SHA1PRNG.java
===================================================================
RCS file: /cvs/kaffe/kaffe/libraries/javalib/kaffe/security/provider/SHA1PRNG.java,v
retrieving revision 1.3
diff -u -r1.3 SHA1PRNG.java
--- SHA1PRNG.java       12 May 2002 15:08:46 -0000      1.3
+++ SHA1PRNG.java       4 Jun 2002 17:13:40 -0000
@@ -6,10 +6,6 @@
  *
  * See the file "license.terms" for information on usage and redistribution
  * of this file.
- *
- * NB!!!! THIS DOES NOT ACTUALLY IMPLEMENT SHA1PRNG - it uses random and
- *        is a place holder.
- *
  */
 
 package kaffe.security.provider;
@@ -25,14 +21,15 @@
 public class SHA1PRNG
        extends SecureRandomSpi
 {
-       private static final int SEED_SIZE = 20;
-       private static final int DATA_SIZE = 40;
+       private static final int SEED_SIZE = 8;
+       private static final int DATA_SIZE = 16;
        
        private MessageDigest md;
        private byte seed[] = new byte[SEED_SIZE];
        private int seedPos = 0;
        private byte data[] = new byte[DATA_SIZE];
        private int dataPos = 0;
+       private long counter = 0;
        
        public SHA1PRNG()
        {
@@ -43,7 +40,7 @@
                        this.md = MessageDigest.getInstance("SHA-1");
 
                        new Random().nextBytes(this.seed);
-                       digest = this.md.digest(this.data);
+                       digest = this.md.digest(this.seed);
                        System.arraycopy(digest, 0, this.data, 0, SEED_SIZE);
                }
                catch(NoSuchAlgorithmException e)
@@ -77,7 +74,8 @@
        
        protected void engineNextBytes(byte[] bytes)
        {
-               if( bytes.length < (20 - this.dataPos) )
+               this.counter += 1;
+               if( bytes.length < (SEED_SIZE - this.dataPos) )
                {
                        System.arraycopy(this.data, this.dataPos,
                                         bytes, 0,
@@ -110,8 +108,24 @@
                                        System.arraycopy(this.seed,
                                                         0,
                                                         this.data,
-                                                        SEED_SIZE,
+                                                        0,
                                                         SEED_SIZE);
+                                       this.data[SEED_SIZE    ] =
+                                               (byte)(this.counter);
+                                       this.data[SEED_SIZE + 1] =
+                                               (byte)(this.counter >>  8);
+                                       this.data[SEED_SIZE + 2] =
+                                               (byte)(this.counter >> 16);
+                                       this.data[SEED_SIZE + 3] =
+                                               (byte)(this.counter >> 24);
+                                       this.data[SEED_SIZE + 4] =
+                                               (byte)(this.counter >> 32);
+                                       this.data[SEED_SIZE + 5] =
+                                               (byte)(this.counter >> 40);
+                                       this.data[SEED_SIZE + 6] =
+                                               (byte)(this.counter >> 48);
+                                       this.data[SEED_SIZE + 7] =
+                                               (byte)(this.counter >> 56);
                                        digest = this.md.digest(this.data);
                                        System.arraycopy(digest,
                                                         0,

Reply via email to