>From 806d5ed6cc2e16c5d5ad06530d06a98b4ee68bb1 Mon Sep 17 00:00:00 2001
From: "Endi S. Dewata" <edewata@redhat.com>
Date: Wed, 15 Mar 2017 18:41:52 +0100
Subject: [PATCH] Added exception chaining for EInvalidCredentials.

A new constructor has been added into EInvalidCredentials to
support exception chaining.
---
 .../netscape/certsrv/authentication/EInvalidCredentials.java   |  4 ++++
 .../netscape/cms/authentication/AgentCertAuthentication.java   |  6 +++---
 .../cms/authentication/SSLclientCertAuthentication.java        | 10 +++++-----
 3 files changed, 12 insertions(+), 8 deletions(-)

diff --git a/base/common/src/com/netscape/certsrv/authentication/EInvalidCredentials.java b/base/common/src/com/netscape/certsrv/authentication/EInvalidCredentials.java
index a562d69e5e609115cb4754221a7d6afb82466193..f6d8e2d775b0b490fb2c0856272abc2b77771450 100644
--- a/base/common/src/com/netscape/certsrv/authentication/EInvalidCredentials.java
+++ b/base/common/src/com/netscape/certsrv/authentication/EInvalidCredentials.java
@@ -35,4 +35,8 @@ public class EInvalidCredentials extends EAuthException {
     public EInvalidCredentials(String errorString) {
         super(errorString);
     }
+
+    public EInvalidCredentials(String errorString, Exception cause) {
+        super(errorString, cause);
+    }
 }
diff --git a/base/server/cms/src/com/netscape/cms/authentication/AgentCertAuthentication.java b/base/server/cms/src/com/netscape/cms/authentication/AgentCertAuthentication.java
index c65dd397148c989fd9aa4d0e1e4ae7faf735342d..e7f50fbc23b6659d2233572747e2717e9f60892c 100644
--- a/base/server/cms/src/com/netscape/cms/authentication/AgentCertAuthentication.java
+++ b/base/server/cms/src/com/netscape/cms/authentication/AgentCertAuthentication.java
@@ -22,8 +22,6 @@ import java.security.cert.X509Certificate;
 import java.util.Enumeration;
 import java.util.Locale;
 
-import netscape.security.x509.X509CertImpl;
-
 import com.netscape.certsrv.apps.CMS;
 import com.netscape.certsrv.authentication.AuthToken;
 import com.netscape.certsrv.authentication.EInvalidCredentials;
@@ -46,6 +44,8 @@ import com.netscape.certsrv.usrgrp.ICertUserLocator;
 import com.netscape.certsrv.usrgrp.IUGSubsystem;
 import com.netscape.certsrv.usrgrp.IUser;
 
+import netscape.security.x509.X509CertImpl;
+
 /**
  * Certificate server agent authentication.
  * Maps a SSL client authenticate certificate to a user (agent) entry in the
@@ -196,7 +196,7 @@ public class AgentCertAuthentication implements IAuthManager,
         try {
             user = mCULocator.locateUser(certs);
         } catch (EUsrGrpException e) {
-            throw new EInvalidCredentials(CMS.getUserMessage("CMS_AUTHENTICATION_INVALID_CREDENTIAL"));
+            throw new EInvalidCredentials(CMS.getUserMessage("CMS_AUTHENTICATION_INVALID_CREDENTIAL"), e);
         } catch (netscape.ldap.LDAPException e) {
             throw new EBaseException(CMS.getUserMessage("CMS_BASE_INTERNAL_ERROR",
                         e.toString()));
diff --git a/base/server/cms/src/com/netscape/cms/authentication/SSLclientCertAuthentication.java b/base/server/cms/src/com/netscape/cms/authentication/SSLclientCertAuthentication.java
index 2bec1b68d183b6a40a25ab0b797b851ff25ab44f..a9b0ccc775b6718389f39dc186ce76a441da8e0a 100644
--- a/base/server/cms/src/com/netscape/cms/authentication/SSLclientCertAuthentication.java
+++ b/base/server/cms/src/com/netscape/cms/authentication/SSLclientCertAuthentication.java
@@ -24,9 +24,6 @@ import java.util.Enumeration;
 import java.util.Locale;
 import java.util.StringTokenizer;
 
-import netscape.security.x509.BasicConstraintsExtension;
-import netscape.security.x509.X509CertImpl;
-
 import com.netscape.certsrv.apps.CMS;
 import com.netscape.certsrv.authentication.AuthToken;
 import com.netscape.certsrv.authentication.EInvalidCredentials;
@@ -45,6 +42,9 @@ import com.netscape.certsrv.property.IDescriptor;
 import com.netscape.certsrv.request.IRequest;
 import com.netscape.certsrv.usrgrp.Certificates;
 
+import netscape.security.x509.BasicConstraintsExtension;
+import netscape.security.x509.X509CertImpl;
+
 /**
  * Certificate server SSL client authentication.
  *
@@ -189,7 +189,7 @@ public class SSLclientCertAuthentication implements IAuthManager,
                     } catch (Exception e) {
                         CMS.debug("SSLclientCertAuthentication: authenticate: exception:" +
                                  e.toString());
-                        throw new EInvalidCredentials(CMS.getUserMessage("CMS_AUTHENTICATION_INVALID_CREDENTIAL"));
+                        throw new EInvalidCredentials(CMS.getUserMessage("CMS_AUTHENTICATION_INVALID_CREDENTIAL"), e);
                     }
                 }
             }
@@ -199,7 +199,7 @@ public class SSLclientCertAuthentication implements IAuthManager,
             }
         } catch (CertificateException e) {
             CMS.debug(e.toString());
-            throw new EInvalidCredentials(CMS.getUserMessage("CMS_AUTHENTICATION_INVALID_CREDENTIAL"));
+            throw new EInvalidCredentials(CMS.getUserMessage("CMS_AUTHENTICATION_INVALID_CREDENTIAL"), e);
         }
 
         // check if certificate(s) is revoked
-- 
2.9.3

