Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-4216736

sun.tools.java.CompilerError: duplicate addition

XMLWordPrintable

    • x86, sparc
    • linux, solaris_2.5.1, solaris_2.6, windows_nt

      Vector.class) in 8 ms]
      [loaded /opt/java/lib/iaik_jce_full.jar(iaik/asn1/structures/Name.class) in 14 ms]
      [loaded /opt/java/lib/iaik_jce_full.jar(iaik/security/provider/IAIK.class) in 13 ms]
      [loaded /opt/java/lib/iaik_jce_full.jar(iaik/pkcs/pkcs8/EncryptedPrivateKeyInfo.class) in 10 ms]
      [loaded /opt/java/lib/iaik_ssl.jar(demo/SSLKeyStore.class) in 7 ms]
      [loaded /usr/java1.2/jre/lib/rt.jar(java/lang/Object.class) in 3 ms]
      [loaded /opt/java/lib/iaik_ssl.jar(demo/KeyStoreConstants.class) in 3 ms]
      [checking class demo.server.SSLServer]
      [loaded /usr/java1.2/jre/lib/rt.jar(java/lang/String.class) in 9 ms]
      [loaded /usr/java1.2/jre/lib/rt.jar(java/io/Serializable.class) in 1 ms]
      [loaded /usr/java1.2/jre/lib/rt.jar(java/lang/Comparable.class) in 0 ms]
      [loaded /usr/java1.2/jre/lib/rt.jar(java/io/IOException.class) in 1 ms]
      [loaded /usr/java1.2/jre/lib/rt.jar(java/lang/Exception.class) in 0 ms]
      [loaded /usr/java1.2/jre/lib/rt.jar(java/lang/Throwable.class) in 2 ms]
      [loaded /usr/java1.2/jre/lib/rt.jar(java/lang/Class.class) in 8 ms]
      [loaded /usr/java1.2/jre/lib/rt.jar(java/security/Provider.class) in 3 ms]
      [loaded /usr/java1.2/jre/lib/rt.jar(java/util/Properties.class) in 4 ms]
      [loaded /usr/java1.2/jre/lib/rt.jar(java/util/Hashtable.class) in 6 ms]
      [loaded /usr/java1.2/jre/lib/rt.jar(java/util/Dictionary.class) in 1 ms]
      [loaded /usr/java1.2/jre/lib/rt.jar(java/util/Map.class) in 1 ms]
      [loaded /usr/java1.2/jre/lib/rt.jar(java/util/Map$Entry.class) in 1 ms]
      [loaded /usr/java1.2/jre/lib/rt.jar(java/lang/Cloneable.class) in 0 ms]
      [loaded /usr/java1.2/jre/lib/rt.jar(java/lang/System.class) in 5 ms]
      [loaded /usr/java1.2/jre/lib/rt.jar(java/io/PrintStream.class) in 3 ms]
      [loaded /usr/java1.2/jre/lib/rt.jar(java/io/FilterOutputStream.class) in 1 ms]
      [loaded /usr/java1.2/jre/lib/rt.jar(java/io/OutputStream.class) in 1 ms]
      [loaded /usr/java1.2/jre/lib/rt.jar(java/security/Security.class) in 8 ms]
      [loaded /usr/java1.2/jre/lib/rt.jar(java/lang/ClassNotFoundException.class) in 1 ms]
      [loaded /usr/java1.2/jre/lib/rt.jar(java/lang/Error.class) in 0 ms]
      [loaded /usr/java1.2/jre/lib/rt.jar(java/lang/RuntimeException.class) in 0 ms]
      [loaded /usr/java1.2/jre/lib/rt.jar(java/lang/InstantiationException.class) in 1 ms]
      [loaded /usr/java1.2/jre/lib/rt.jar(java/lang/IllegalAccessException.class) in 0 ms]
      [loaded /opt/java/lib/iaik_ssl.jar(iaik/security/ssl/SSLSocket.class) in 7 ms]
      sun.tools.java.CompilerError: duplicate addition
              at java.lang.Throwable.fillInStackTrace(Native Method)
              at java.lang.Throwable.fillInStackTrace(Compiled Code)
              at java.lang.Throwable.<init>(Compiled Code)
              at java.lang.Error.<init>(Error.java:50)
              at sun.tools.java.CompilerError.<init>(CompilerError.java:29)
              at sun.tools.java.MethodSet.add(Compiled Code)
              at sun.tools.java.ClassDefinition.collectInheritedMethods(Compiled Code)
              at sun.tools.java.BinaryClass.basicCheck(Compiled Code)
              at sun.tools.java.ClassDeclaration.getClassDefinition(Compiled Code)
              at sun.tools.java.Environment.getQualifiedClassDefinition(Compiled Code)
              at sun.tools.java.Environment.resolve(Compiled Code)
              at sun.tools.tree.IdentifierExpression.toResolvedType(Compiled Code)
              at sun.tools.tree.IdentifierExpression.toType(IdentifierExpression.java:344)
              at sun.tools.tree.DeclarationStatement.checkBlockStatement(Compiled Code)
              at sun.tools.tree.CompoundStatement.check(Compiled Code)
              at sun.tools.tree.Statement.checkMethod(Statement.java:92)
              at sun.tools.javac.SourceMember.check(Compiled Code)
              at sun.tools.javac.SourceClass.checkMembers(Compiled Code)
              at sun.tools.javac.SourceClass.checkInternal(Compiled Code)
              at sun.tools.javac.SourceClass.check(SourceClass.java:511)
              at sun.tools.javac.Main.compile(Compiled Code)
              at sun.tools.javac.Main.main(Main.java:733)
      error: An error has occurred in the compiler; please file a bug report (http://java.sun.com/cgi-bin/bugreport.cgi).
      1 error


      #####
      ##### 4.
      #####

      None...


      #####
      ##### 5.
      #####

      Hmm... do you really need that for at compiler bug???
      Well:
      java -version
      java version "1.2"
      Solaris VM (build Solaris_JDK_1.2_01, native threads, sunwjit)

      java -fullversion
      java full version "Solaris_JDK_1.2_01"


      #####
      ##### 6.
      #####

      None.
      ======================================================================

      Name: tb29552 Date: 05/10/99


      sun.tools.java.CompilerError: duplicate addition
              at sun.tools.java.MethodSet.add(MethodSet.java:92)
              at sun.tools.java.ClassDefinition.collectInheritedMethods(ClassDefinitio
      n.java:1479)
              at sun.tools.java.BinaryClass.basicCheck(BinaryClass.java:80)
              at sun.tools.java.ClassDeclaration.getClassDefinition(ClassDeclaration.j
      ava:137)
              at sun.tools.java.Environment.getQualifiedClassDefinition(Environment.ja
      va:399)
              at sun.tools.java.Environment.resolve(Environment.java:226)
              at sun.tools.tree.FieldExpression.toType(FieldExpression.java:195)
              at sun.tools.tree.DeclarationStatement.checkBlockStatement(DeclarationSt
      atement.java:51)
              at sun.tools.tree.CompoundStatement.check(CompoundStatement.java:65)
              at sun.tools.tree.Statement.checkMethod(Statement.java:92)
              at sun.tools.javac.SourceMember.check(SourceMember.java:539)
              at sun.tools.javac.SourceClass.checkMembers(SourceClass.java:1002)
              at sun.tools.javac.SourceClass.checkInternal(SourceClass.java:612)
              at sun.tools.javac.SourceClass.check(SourceClass.java:511)
              at sun.tools.javac.Main.compile(Main.java:550)
              at sun.tools.javac.Main.main(Main.java:733)
      error: An error has occurred in the compiler; please file a bug report (http://j
      ava.sun.com/cgi-bin/bugreport.cgi).

      I get this error message after compiling my software with a new
      release of the IAIK JCE 2.5 release (with thr 2.5beta 1 everything
      worked fine). I don't think it is a problem with the IAIK-Software,
      because of the internal error
      (Review ID: 58010)
      ======================================================================

      Name: tb29552 Date: 05/14/99


      Whenever we are compiling a code with IAIK JCE 2.5(and before) implementation
      of X509CRL class the following error is reported
      ////Error
      sun.tools.java.CompilerError: duplicate addition
              at sun.tools.java.MethodSet.add(Compiled Code)
              at sun.tools.java.ClassDefinition.collectInheritedMethods(Compiled Code)
              at sun.tools.java.BinaryClass.basicCheck(BinaryClass.java:80)
              at sun.tools.java.ClassDeclaration.getClassDefinition(Compiled Code)
              at sun.tools.java.Environment.getQualifiedClassDefinition(Compiled Code)
              at sun.tools.java.Environment.resolve(Compiled Code)
              at sun.tools.tree.IdentifierExpression.toResolvedType(IdentifierExpression.java
      :312)
              at sun.tools.tree.IdentifierExpression.toType(IdentifierExpression.java:344)
              at sun.tools.tree.DeclarationStatement.checkBlockStatement(Compiled Code)
              at sun.tools.tree.CompoundStatement.check(Compiled Code)
              at sun.tools.tree.Statement.checkMethod(Statement.java:92)
              at sun.tools.javac.SourceMember.check(Compiled Code)
              at sun.tools.javac.SourceClass.checkMembers(Compiled Code)
              at sun.tools.javac.SourceClass.checkInternal(Compiled Code)
              at sun.tools.javac.SourceClass.check(SourceClass.java:511)
              at sun.tools.javac.Main.compile(Compiled Code)
              at sun.tools.javac.Main.main(Main.java:733)
      error: An error has occurred in the compiler; please file a bug report (http://java.sun
      .com/cgi-bin/bugreport.cgi).
      1 error

      //Code below
      //iaik_jce_full.jar class file is included in the class path
      import java.io.*;
      import iaik.x509.X509CRL;
      import java.security.*;

      public class CRLTest {

      public CRLTest(String fIn)throws Exception
      {

      InputStream inFile = new FileInputStream(fIn);
      X509CRL thisCRL = new X509CRL(inFile);
      System.out.println("The CRL is:");
      System.out.println(thisCRL.toString());
      inFile.close();
      }

      public static void main(String[] args) throws Exception
      {
      Security.addProvider(new IAIK());
      CRLTest crl = new CRLTest(args[0]);
      }

      }

      //Configuration: iaik_jce_full.jar has to be added to the class path.
      //Steps to reproduce this problem is to compile the above code
      //This error is coming with Windows 95 also.
      (Review ID: 63181)
      ======================================================================

      Name: tb29552 Date: 05/28/99


      I'm getting the problem when I use IAIK's X509Crl class.

      iaik.x509.X509CRL crl=new iaik.x509.X509CRL;

      The error I'm getting is
      sun.tools.java.CompilerError: duplicate addition
      at sun.tools.java.MethodSet.add(Compiled Code)
      ...
      ...
      ...
      at sun.tools.javaac.Main.main(Main.java)
      (Review ID: 83602)
      ======================================================================


      Name: krT82822 Date: 03/02/99


      I was rejigging several classes at the same time. Attempted a compile of the "new" top level one, and.....

      sun.tools.java.CompilerError: duplicate addition
      at sun.tools.java.MethodSet.add(Compiled Code)
      at sun.tools.java.ClassDefinition.collectInheritedMethods(Compiled Code)
      at sun.tools.java.ClassDefinition.getMethods(Compiled Code)
      at sun.tools.java.ClassDefinition.collectOneClass(Compiled Code)
      at sun.tools.java.ClassDefinition.collectInheritedMethods(Compiled Code)
      at sun.tools.java.BinaryClass.basicCheck(Compiled Code)
      at sun.tools.java.ClassDeclaration.getClassDefinition(Compiled Code)
      at sun.tools.java.BinaryClass.initInnerClasses(Compiled Code)
      at sun.tools.java.BinaryClass.loadNested(Compiled Code)
      at sun.tools.java.BinaryClass.loadNested(Compiled Code)
      at sun.tools.javac.BatchEnvironment.loadDefinition(Compiled Code)
      at sun.tools.java.ClassDeclaration.getClassDefinition(Compiled Code)
      at sun.tools.java.BinaryClass.initInnerClasses(Compiled Code)
      at sun.tools.java.BinaryClass.loadNested(Compiled Code)
      at sun.tools.java.BinaryClass.loadNested(Compiled Code)
      at sun.tools.javac.BatchEnvironment.loadDefinition(Compiled Code)
      at sun.tools.java.Environment.loadDefinition(Compiled Code)
      at sun.tools.java.Environment.loadDefinition(Compiled Code)
      at sun.tools.java.Environment.loadDefinition(Compiled Code)
      at sun.tools.java.ClassDeclaration.getClassDefinition(Compiled Code)
      at sun.tools.java.Environment.getClassDefinition(Compiled Code)
      at sun.tools.java.ClassDefinition.resolveName(Compiled Code)
      at sun.tools.javac.SourceClass.resolveSuper(Compiled Code)
      at sun.tools.javac.SourceClass.resolveSupers(Compiled Code)
      at sun.tools.javac.SourceClass.resolveTypeStructure(Compiled Code)
      at sun.tools.javac.SourceMember.resolveTypeStructure(Compiled Code)
      at sun.tools.javac.SourceClass.resolveTypeStructure(Compiled Code)
      at sun.tools.javac.SourceClass.basicCheck(Compiled Code)
      at sun.tools.java.ClassDeclaration.getClassDefinition(Compiled Code)
      at sun.tools.javac.Main.compile(Compiled Code)
      at sun.tools.javac.Main.main(Compiled Code)
      error: An error has occurred in the compiler; please file a bug report (http://java.sun.com/cgi-bin/bugreport.cgi).
      1 error

      Compilation exited abnormally with code 4 at Tue Feb 16 16:30:38
      (Review ID: 54228)
      ======================================================================

      Name: tb29552 Date: 04/09/99


      #####
      ##### 1.
      #####

      Compile the IAIK SSL implementation (iSaSiLk) demo
      (see: http://jcewww.iaik.tu-graz.ac.at/) with:
      javac -verbose -classpath $CLASSPATH:/opt/java/lib/iaik_ssl.jar:/opt/java/lib/iaik_jce_full.jar SSLServer.java

      (also non-verbose fails)


      #####
      ##### 2.
      #####
      SSLServer:

      // Copyright (C) 1997, 1998, 1999 by DI Wolfgang Platzer, IAIK
      // email: ###@###.###
      //
      // All rights reserved.
      //
      // Redistribution and use in source and binary forms, with or without
      // modification, are permitted provided that the following conditions
      // are met:
      // 1. Redistributions of source code must retain the above copyright
      // notice, this list of conditions and the following disclaimer.
      // 2. Redistributions in binary form must reproduce the above copyright
      // notice, this list of conditions and the following disclaimer in the
      // documentation and/or other materials provided with the distribution.
      //
      // THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
      // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
      // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
      // ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
      // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
      // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
      // OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
      // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
      // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
      // OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
      // SUCH DAMAGE.
      //

      package demo.server;

      import java.io.*;
      import java.net.*;
      import java.security.*;
      import java.math.BigInteger;
      import java.security.spec.InvalidParameterSpecException;
      import java.security.cert.X509Certificate;
      import java.util.Vector;

      import javax.crypto.spec.*;

      import iaik.security.ssl.*;
      import iaik.security.rsa.*;
      import iaik.asn1.structures.Name;
      import iaik.asn1.*;
      import iaik.security.provider.IAIK;
      import iaik.pkcs.*;
      import iaik.security.dh.*;
      import iaik.security.dsa.*;
      import iaik.pkcs.pkcs8.EncryptedPrivateKeyInfo;

      import demo.SSLKeyStore;

      /**
       * Demo SSL server implementation.
       *
       * Waits for a SSL connection from a SSL browser and returns the string:
       * "SSL Test ok.".
       *
       * @author wplatzer
       */
      public class SSLServer implements demo.KeyStoreConstants {

        // shall we renegotiate the cipher suite
        static boolean renegotiate = false;
        static int port = 4433;

        public static void main(String args[]) throws IOException {

          try {
            // first try to locate the IAIK provider
            Class provider = Class.forName("iaik.security.provider.IAIK");
            Provider iaik = (Provider)provider.newInstance();
            
            System.out.println("add Provider "+iaik.getInfo()+"...");
           Security.addProvider(iaik);
          } catch (ClassNotFoundException ex) {
            System.out.println("Provider IAIK not found. Add iaik_jce.jar or iaik_jce_full.jar to your classpath.");
            System.out.println("If you are going to use a different provider please take a look at Readme.html!");
            System.exit(0);
          } catch (Exception ex) {
            System.out.println("Internal Error. Please report this bug to <###@###.###>.");
            System.exit(0);
          }

          // the accepted client SSL socket
          SSLSocket ssl = null;
          // the server context
          SSLServerContext serverContext = new SSLServerContext();
          // use pre-generated Diffi-Hellman parameters
          boolean generateDHParameters = false;
          // the pre-generated Diffi-Hellman parameters
          DHParameterSpec dhparam = null;

          // set a TrustDecider which checks the certificates sent by clients
          DemoServerTrustDecider trustDecider = new DemoServerTrustDecider();
          // no certificate is also ok
          trustDecider.setRequireCertificate(false);
          // client chain need no trusted root
          trustDecider.setRequireTrustedRoot(false);
          // set the trust decider
          serverContext.setTrustDecider(trustDecider);
          // Vector which holds the CAs
          Vector cas = new Vector();

          final SecureRandom random = serverContext.getRandomGenerator();

          // create a new Thread which initializes the Secure Random Number generator
          (new Thread() {
            public void run() {
              try {
              setPriority(Thread.MIN_PRIORITY);
              random.nextInt();
              System.out.println("random number generator initialized...");
              } catch (Exception ex) {
                ex.printStackTrace();
              }
            }
          }).start();

          if (generateDHParameters) {
            System.out.println("generating new DH parameters...\n");

            try {
              int primeLength = 512; // length of prime p to generate
              int exponentLength = 504; // length of random exponent (private)
              DHGenParameterSpec genParamSpec = new DHGenParameterSpec(primeLength, exponentLength);

              AlgorithmParameterGenerator paramGenerator = AlgorithmParameterGenerator.getInstance("DH");
              paramGenerator.init(genParamSpec);
              AlgorithmParameters parameters = paramGenerator.generateParameters();

              // we need the class for getParameterSpec(Class)
              Class classSpec = new DHParameterSpec(null, null).getClass();
              dhparam = (DHParameterSpec)parameters.getParameterSpec(classSpec);

            } catch (NoSuchAlgorithmException ex) {
              System.out.println("Unable to generate DH parameters: "+ex.toString());
              dhparam = null;
            } catch (InvalidAlgorithmParameterException ex) {
              System.out.println("Unable to generate DH parameters: "+ex.toString());
              dhparam = null;
            } catch (InvalidParameterSpecException ex) {
              System.out.println("Unable to generate DH parameters: "+ex.toString());
              dhparam = null;
            }
          }
          else {
            // pre-generated Diffi-Hellman parameters
            BigInteger p = new BigInteger("da583c16d9852289d0e4af756f4cca92dd4be533b804fb0fed94ef9c8a4403ed574650d36999db29d776276ba2d3d412e218f4dd1e084cf6d8003e7c4774e833", 16);
            BigInteger g = BigInteger.valueOf(2);
            dhparam = new DHParameterSpec(p, g);
          }

          // set the DH parameter for empherial and anon cipher suites
          serverContext.setDHParameter(dhparam);

          try {
            // set the RSA certificate/private key for RSA cipher suites
            X509Certificate[] chain = SSLKeyStore.getCertificateChain(RSA, SERVER);
            serverContext.setRSACertificate(chain, SSLKeyStore.getPrivateKey(RSA, SERVER));
                
            // add the RSA CA certificate
            Principal dn = trustDecider.addTrustedSigner(chain[1]);
            cas.addElement(dn);

            // set the temporary RSA key pair for RSA_EXPORT cipher suites
            serverContext.setRSATempKeyPair(SSLKeyStore.getRSATempKeyPair());

          } catch (Exception ex) {
            System.out.println("Unable to get RSA server certificate from KeyStore.");
            System.out.println("RSA cipher-suites can not be used.");
          }

          try {
            // set the DSA certificate/private key for DSA cipher suites
            X509Certificate[] chain = SSLKeyStore.getCertificateChain(DSA, SERVER);
            serverContext.setDSACertificate(chain, SSLKeyStore.getPrivateKey(DSA, SERVER));

            // add the DSA CA certificate
            Principal dn = trustDecider.addTrustedSigner(chain[1]);
            cas.addElement(dn);

          } catch (Exception ex) {
            System.out.println("Unable to get DSA server certificate from KeyStore.");
            System.out.println("DSA cipher-suites can not be used.");
          }

          try {
              // set the DH certificate/private key for DH cipher suites
            serverContext.setDHCertificate(
                SSLKeyStore.getCertificateChain(DH, SERVER),
                SSLKeyStore.getPrivateKey(DH, SERVER));
          } catch (Exception ex) {
            System.out.println("Unable to get Diffie-Hellman server certificate from KeyStore.");
            System.out.println("Diffie-Hellman cipher-suites can not be used.");
          }

          // for testing the cipher suites
          CipherSuite[] cs = {
            CipherSuite.SSL_RSA_WITH_NULL_MD5,
            CipherSuite.SSL_RSA_WITH_NULL_SHA,
            CipherSuite.SSL_RSA_EXPORT_WITH_RC4_40_MD5,
            CipherSuite.SSL_RSA_WITH_RC4_MD5,
            CipherSuite.SSL_RSA_WITH_RC4_SHA,
            CipherSuite.SSL_RSA_EXPORT_WITH_RC2_CBC_40_MD5,
            CipherSuite.SSL_RSA_WITH_IDEA_CBC_SHA,
            CipherSuite.SSL_RSA_EXPORT_WITH_DES40_CBC_SHA,
            CipherSuite.SSL_RSA_WITH_DES_CBC_SHA,
            CipherSuite.SSL_RSA_WITH_3DES_EDE_CBC_SHA,

            CipherSuite.SSL_DH_DSS_EXPORT_WITH_DES40_CBC_SHA,
            CipherSuite.SSL_DH_DSS_WITH_DES_CBC_SHA,
            CipherSuite.SSL_DH_DSS_WITH_3DES_EDE_CBC_SHA,

            CipherSuite.SSL_DH_RSA_EXPORT_WITH_DES40_CBC_SHA,
            CipherSuite.SSL_DH_RSA_WITH_DES_CBC_SHA,
            CipherSuite.SSL_DH_RSA_WITH_3DES_EDE_CBC_SHA,

            CipherSuite.SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA,
            CipherSuite.SSL_DHE_DSS_WITH_DES_CBC_SHA,
            CipherSuite.SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA,

            CipherSuite.SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA,
            CipherSuite.SSL_DHE_RSA_WITH_DES_CBC_SHA,
            CipherSuite.SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA,

            CipherSuite.SSL_DH_anon_EXPORT_WITH_RC4_40_MD5,
            CipherSuite.SSL_DH_anon_WITH_RC4_MD5,
            CipherSuite.SSL_DH_anon_EXPORT_WITH_DES40_CBC_SHA,
            CipherSuite.SSL_DH_anon_WITH_DES_CBC_SHA,
            CipherSuite.SSL_DH_anon_WITH_3DES_EDE_CBC_SHA,
          };
      // serverContext.setEnabledCipherSuites(cs);
      // enable all possible cipher suites
          CipherSuite[] enabledCS = serverContext.updateCipherSuites();

          // require a client certificate ?
          Name[] acceptedCAs = new Name[cas.size()];
          cas.copyInto(acceptedCAs);

          byte[] types = {
            ClientTrustDecider.rsa_sign,
            ClientTrustDecider.dss_sign
          };

          serverContext.setRequireClientCertificate(types, acceptedCAs);
          
          System.out.println(serverContext);

          System.out.println("listening on port "+port+"...");
          SSLServerSocket server = new SSLServerSocket(port, serverContext);

          while (true) {
            try {

              ssl = (SSLSocket)server.accept();

              ssl.setDebugStream(System.out); // debug information to System.out
              ssl.setSoTimeout(1000*60*5); // we just wait for 5 minutes

              OutputStream os = ssl.getOutputStream();
              InputStream is = ssl.getInputStream();

              System.out.println("Client Request:");
              BufferedReader reader = new BufferedReader(new InputStreamReader(is));
              String line;
              do {
                line = reader.readLine();
                System.out.println(line);
              } while ((line != null) && (line.length() > 0));
              System.out.println();

              if (renegotiate) {
                System.out.println("renegotiating cipher-suite...");

                // at this time we only allow one cipher-suite
                CipherSuite[] new_cs = new CipherSuite[] {CipherSuite.SSL_RSA_EXPORT_WITH_RC4_40_MD5};
                SSLContext context = ssl.getContext();
                context.setEnabledCipherSuites(new_cs);
                ssl.setContext(context);
                ssl.renegotiate();
              }

              System.out.println("sending reply...");

              PrintWriter writer = new PrintWriter(new BufferedWriter(new OutputStreamWriter(os), 2000));

              writer.println("HTTP/1.0 200 OK");
              writer.println("Content-Type: text/html");
              writer.println("Server: IAIK-SSL Testserver");
              writer.println();
              writer.println("<HTML><HEAD>");
              writer.println("<META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html;CHARSET=iso-8859-1\">");
              writer.println("<TITLE>SSL Test</TITLE>");
              writer.println("</HEAD>");
              writer.println("<BODY>");
              writer.println("<H1>SSL Test ok.</H1>");
              writer.println("</BODY>");
              writer.println("</HTML>");

              writer.flush();
              writer.close();

            } catch (UnknownHostException ex) {
              System.out.println("UnknownHostException: "+ex.getMessage());
            } catch (SSLException ex) {
              System.out.println("SSLException: "+ex.getMessage());
            } catch (IOException ex) {
              System.out.println("IOException: "+ex.getMessage());
            }
          }
        }
      }


      #####
      ##### 3.
      #####

      [parsed SSLServer.java in 976 ms]
      [loaded /usr/java1.2/jre/lib/rt.jar(java/math/BigInteger.class) in 69 ms]
      [loaded /usr/java1.2/jre/lib/rt.jar(java/security/spec/InvalidParameterSpecException.class) in 1 ms]
      [loaded /usr/java1.2/jre/lib/rt.jar(java/security/cert/X509Certificate.class) in 3 ms]
      [loaded /usr/java1.2/jre/lib/rt.jar(java/util/

            wmaddoxsunw William Maddox (Inactive)
            kryansunw Kevin Ryan (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: