diff --git a/directory/java-sdk/ldapjdk/com/netscape/sasl/mechanisms/SASLExternalMechanism.java b/directory/java-sdk/ldapjdk/com/netscape/sasl/mechanisms/SASLExternalMechanism.java
new file mode 100644
index 000000000000..8a88ed51fc9a
--- /dev/null
+++ b/directory/java-sdk/ldapjdk/com/netscape/sasl/mechanisms/SASLExternalMechanism.java
@@ -0,0 +1,104 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+ *
+ * The contents of this file are subject to the Netscape Public License
+ * Version 1.0 (the "NPL"); you may not use this file except in
+ * compliance with the NPL. You may obtain a copy of the NPL at
+ * http://www.mozilla.org/NPL/
+ *
+ * Software distributed under the NPL is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
+ * for the specific language governing rights and limitations under the
+ * NPL.
+ *
+ * The Initial Developer of this code under the NPL is Netscape
+ * Communications Corporation. Portions created by Netscape are
+ * Copyright (C) 1998 Netscape Communications Corporation. All Rights
+ * Reserved.
+ */
+
+package com.netscape.sasl.mechanisms;
+
+import com.netscape.sasl.*;
+
+/**
+ * This class provides the implementation of the EXTERNAL mechanism driver.
+ * This mechanism is passed in the SASL External bind request to retrieve the
+ * current result code from the server.
+ */
+public class SASLExternalMechanism implements SASLClientMechanismDriver {
+
+ /**
+ * Default constructor
+ */
+ public SASLExternalMechanism() {
+ m_mechanismName = MECHANISM_NAME;
+ }
+
+ /**
+ * This method prepares a byte array to use for the initial request to
+ * authenticate.
+ * @param id Protocol-dependent identification, for this class, it is ignored.
+ * @param protocol A protocol supported by the mechanism driver, e.g.
+ * "pop3", "ldap"
+ * @param serverName For this class, it is ignored.
+ * @param props Additional configuration for the session. For this class,
+ * it is ignored.
+ * @param authCB An optional object which can be invoked by the mechanism
+ * driver to acquire additional authentication information, such
+ * as user name and password. For this class, it is ignored.
+ * @return An byte array. For the case of the SASL External bind, it is
+ * always null.
+ * @exception SASLException Never thrown by this class.
+ */
+ public byte[] startAuthentication(String id, String protocol,
+ String serverName, java.util.Properties props, SASLClientCB authCB)
+ throws SASLException {
+ return null;
+ }
+
+ /**
+ * Returns the name of mechanism driver.
+ * @return The mechanism name.
+ */
+ public String getMechanismName() {
+ return m_mechanismName;
+ }
+
+ /**
+ * The protocol driver prepares an appropriate next request to submit
+ * to the server based on the challenge received from the server.
+ * @param challenge For this class, it is ignored.
+ * @return Request to submit to server. For this class, it is always null.
+ * @exception SASLException Never thrown by this class.
+ */
+ public byte[] evaluateResponse(byte[] challenge) throws SASLException {
+ return null;
+ }
+
+ /**
+ * The method may be called at any time to determine if the authentication
+ * process is finished.
+ * @return true
if authentication is complete. For this class,
+ * always returns true
.
+ */
+ public boolean isComplete() {
+ return true;
+ }
+
+ /**
+ * The protocol driver calls the method to obtain an object capable of
+ * encoding/decoding data content for the rest of the session (or until
+ * there is a new round of authentication). An exception is thrown if
+ * authentication is not yet complete.
+ * @return A SASLSecurityLayer object. For this class, it is always null.
+ * @exception SASLException Never thrown by this class.
+ */
+ public SASLSecurityLayer getSecurityLayer() throws SASLException {
+ return null;
+ }
+
+ private final static String LDAP_PROTOCOL = "LDAP";
+ private final static String MECHANISM_NAME = "EXTERNAL";
+ private String m_packageName;
+ private String m_mechanismName;
+}
diff --git a/directory/java-sdk/ldapjdk/netscape/ldap/LDAPSSLSocketFactoryExt.java b/directory/java-sdk/ldapjdk/netscape/ldap/LDAPSSLSocketFactoryExt.java
new file mode 100644
index 000000000000..2a877823fbd9
--- /dev/null
+++ b/directory/java-sdk/ldapjdk/netscape/ldap/LDAPSSLSocketFactoryExt.java
@@ -0,0 +1,48 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+ *
+ * The contents of this file are subject to the Netscape Public License
+ * Version 1.0 (the "NPL"); you may not use this file except in
+ * compliance with the NPL. You may obtain a copy of the NPL at
+ * http://www.mozilla.org/NPL/
+ *
+ * Software distributed under the NPL is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
+ * for the specific language governing rights and limitations under the
+ * NPL.
+ *
+ * The Initial Developer of this code under the NPL is Netscape
+ * Communications Corporation. Portions created by Netscape are
+ * Copyright (C) 1998 Netscape Communications Corporation. All Rights
+ * Reserved.
+ */
+package netscape.ldap;
+
+import netscape.ldap.*;
+
+/**
+ * Represents a SSL socket connection that you can use to connect to an
+ * LDAP server. This interface extends the base interface LDAPSocketFactory
+ * and it provides the methods for SSL specific matters.
+ *
+ *
+ * @version 1.0
+ * @see LDAPSocketFactory
+ * @see LDAPConnection#LDAPConnection(netscape.ldap.LDAPSocketFactory)
+ */
+public interface LDAPSSLSocketFactoryExt extends LDAPSocketFactory {
+
+ /**
+ * Returns true
if client authentication is enabled.
+ * @see netscape.ldap.LDAPSSLSocketFactory#enableClientAuth
+ */
+ public boolean isClientAuth();
+
+ /**
+ * Returns the suite of ciphers used for SSL connections made through
+ * sockets created by this factory.
+ *
+ * @return The suite of ciphers used.
+ */
+ public Object getCipherSuites();
+}
+