//Sample code file: var/ndk/webBuildengine/tmp/viewable_samples/a4ad0b48-dd95-46b6-8289-721e99c8dc76/login_method/mgmt/ldap/src/SetClrPwd.java //Warning: This code has been marked up for HTML

import com.novell.ldap.LDAPConnection;
import com.novell.ldap.LDAPException;
import com.novell.ldap.LDAPDSConstants;
import com.novell.security.nmas.mgmt.NMASLoginDataMgr;
import com.novell.security.nmas.mgmt.NMASLoginDataException;
import com.novell.security.nmas.mgmt.LoginDataJLdapTransport;
import com.novell.ldap.LDAPJSSESecureSocketFactory;
import java.security.Security;
import javax.swing.*;

public class SetClrPwd
{
   private String hostAddress=null;
   private int hostPort=0;
   private String keyStore=null;
   private String loginDN=null;
   private String password=null;
   private String objectDN=null;
   private String secret=null;

   SetClrPwd(String host, int port, String path, String lgnDN, String lgnpswd, String objDN, String objpswd) {
      hostAddress = host;
      hostPort = port;
      keyStore = path;
      loginDN = lgnDN;
      password = lgnpswd;
      objectDN = objDN;
      secret = objpswd;
   }   
//   public static void main(String[] args) 
   public void setPassword(JTextArea results)
   {
/*       if (args.length != 7) {
                System.err.println("Usage:   java SetClrPwd "
                                + "<host Name> <port number> <login dn> <password> "
                                + "<object dn> <data value> <keystore path>");
                System.err.println("Example: java SetClrPwd acme.com 636 "
                                + "\"cn=admin,o=acme\" secret "
                                + "\"cn=james,o=acme\" "
                                + "dude /certs/sslkey.keystore");
                System.exit(1);
            }

      int ldapVersion = LDAPConnection.LDAP_V3;
      String ldapHost = args[0];
      int ldapPort   = Integer.parseInt(args[1]);
      String loginDN   = args[2];
      String password = args[3];
      String objectDN = args[4];
      String dataStr  = args[5];
      String keyStore = args[6];*/

                int ldapVersion = LDAPConnection.LDAP_V3;
      LDAPConnection ld  = null;

     // Dynamically set JSSE as a security provider
      Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());

     // Dynamically set the property that JSSE uses to identify
     // the keystore that holds trusted root certificates
      System.setProperty("javax.net.ssl.trustStore", keyStore);

      ld = new LDAPConnection(new LDAPJSSESecureSocketFactory());

      results.append("Doing an SSL Bind\r\n");

      int methodID[] = {0x01};

      String tagName = "Clear Password";
 
      try {
         ld.connect( hostAddress, hostPort); // connect to the server

            ld.bind( ldapVersion, loginDN, password.getBytes() );
         results.append( "bind() succeeded\r\n");
      
         NMASLoginDataMgr mgr = new NMASLoginDataMgr(new LoginDataJLdapTransport(ld));

        // ===============> Put Login Secret <=================
         mgr.putLoginSecret("", objectDN, methodID, tagName, secret.getBytes());   
         results.append("putLoginSecret() succeeded:\r\n");

         /* Done, so disconnect */
         if ( ld.isConnected() )
         {
            ld.disconnect();
         }
      }
      catch( LDAPException e )
      {
         results.append( "Error: " + e.toString() + "\r\n");
      }
      catch( NMASLoginDataException lde )
      {
         results.append( "Error: " + lde.toString() + "\r\n");
      }

   }
}