mturk       2005/06/06 08:13:26

  Modified:    jni/native/src sslcontext.c
  Log:
  Be more verbose when throwing exceptions by including
  OpenSSL error strings.
  
  Revision  Changes    Path
  1.21      +26 -12    jakarta-tomcat-connectors/jni/native/src/sslcontext.c
  
  Index: sslcontext.c
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-connectors/jni/native/src/sslcontext.c,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- sslcontext.c      6 Jun 2005 06:54:19 -0000       1.20
  +++ sslcontext.c      6 Jun 2005 15:13:26 -0000       1.21
  @@ -255,7 +255,9 @@
           return JNI_FALSE;
   
       if (!SSL_CTX_set_cipher_list(c->ctx, J2S(ciphers))) {
  -        tcn_Throw(e, "Unable to configure permitted SSL ciphers");
  +        char err[256];
  +        ERR_error_string(ERR_get_error(), err);
  +        tcn_Throw(e, "Unable to configure permitted SSL ciphers (%s)", err);
           rv = JNI_FALSE;
       }
       TCN_FREE_CSTRING(ciphers);
  @@ -271,6 +273,7 @@
       TCN_ALLOC_CSTRING(path);
       jboolean rv = JNI_FALSE;
       X509_LOOKUP *lookup;
  +    char err[256];
   
       UNREFERENCED(o);
       TCN_ASSERT(ctx != 0);
  @@ -284,9 +287,10 @@
       if (J2S(file)) {
           lookup = X509_STORE_add_lookup(c->crl, X509_LOOKUP_file());
           if (lookup == NULL) {
  +            ERR_error_string(ERR_get_error(), err);
               X509_STORE_free(c->crl);
               c->crl = NULL;
  -            tcn_Throw(e, "Lookup failed for file %s", J2S(file));
  +            tcn_Throw(e, "Lookup failed for file %s (%s)", J2S(file), err);
               goto cleanup;
           }
           X509_LOOKUP_load_file(lookup, J2S(file), X509_FILETYPE_PEM);
  @@ -294,9 +298,10 @@
       if (J2S(path)) {
           lookup = X509_STORE_add_lookup(c->crl, X509_LOOKUP_hash_dir());
           if (lookup == NULL) {
  +            ERR_error_string(ERR_get_error(), err);
               X509_STORE_free(c->crl);
               c->crl = NULL;
  -            tcn_Throw(e, "Lookup failed for path %s", J2S(file));
  +            tcn_Throw(e, "Lookup failed for path %s (%s)", J2S(file), err);
               goto cleanup;
           }
           X509_LOOKUP_add_dir(lookup, J2S(path), X509_FILETYPE_PEM);
  @@ -344,8 +349,10 @@
        */
       if (!SSL_CTX_load_verify_locations(c->ctx,
                                          J2S(file), J2S(path))) {
  +        char err[256];
  +        ERR_error_string(ERR_get_error(), err);
           tcn_Throw(e, "Unable to configure locations "
  -                  "for client authentication");
  +                  "for client authentication (%s)", err);
           rv = JNI_FALSE;
           goto cleanup;
       }
  @@ -462,6 +469,7 @@
       TCN_ALLOC_CSTRING(key);
       TCN_ALLOC_CSTRING(password);
       const char *key_file, *cert_file;
  +    char err[256];
   
       UNREFERENCED(o);
       TCN_ASSERT(ctx != 0);
  @@ -480,29 +488,35 @@
       if (!key_file)
           key_file = cert_file;
       if ((c->keys[idx] = load_pem_key(c, key_file)) == NULL) {
  -        tcn_Throw(e, "Unable to load Certificate Key %",
  -                  key_file);
  +        ERR_error_string(ERR_get_error(), err);
  +        tcn_Throw(e, "Unable to load certificate key %s (%s)",
  +                  key_file, err);
           rv = JNI_FALSE;
           goto cleanup;
       }
       if ((c->certs[idx] = load_pem_cert(cert_file)) == NULL) {
  -        tcn_Throw(e, "Unable to load Certificate %",
  -                  cert_file);
  +        ERR_error_string(ERR_get_error(), err);
  +        tcn_Throw(e, "Unable to load certificate %s (%s)",
  +                  cert_file, err);
           rv = JNI_FALSE;
           goto cleanup;
       }
       if (SSL_CTX_use_certificate(c->ctx, c->certs[idx]) <= 0) {
  -        tcn_Throw(e, "error setting certificate");
  +        ERR_error_string(ERR_get_error(), err);
  +        tcn_Throw(e, "Error setting certificate (%s)", err);
           rv = JNI_FALSE;
           goto cleanup;
       }
       if (SSL_CTX_use_PrivateKey(c->ctx, c->keys[idx]) <= 0) {
  -        tcn_Throw(e, "error setting private key");
  +        ERR_error_string(ERR_get_error(), err);
  +        tcn_Throw(e, "Error setting private key (%s)", err);
           rv = JNI_FALSE;
           goto cleanup;
       }
       if (SSL_CTX_check_private_key(c->ctx) <= 0) {
  -        tcn_Throw(e, "Private key does not match the certificate public 
key");
  +        ERR_error_string(ERR_get_error(), err);
  +        tcn_Throw(e, "Private key does not match the certificate public key 
(%s)",
  +                  err);
           rv = JNI_FALSE;
           goto cleanup;
       }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to