Package org.sdnplatform.sync.client

Source Code of org.sdnplatform.sync.client.AuthTool

package org.sdnplatform.sync.client;

import java.io.Console;
import org.kohsuke.args4j.CmdLineException;
import org.kohsuke.args4j.CmdLineParser;
import org.kohsuke.args4j.Option;
import org.sdnplatform.sync.internal.config.AuthScheme;
import org.sdnplatform.sync.internal.util.CryptoUtil;

/**
* Command-line tool for setting up authentication credentials
* @author readams
*/
public class AuthTool {
    protected static class AuthToolSettings {
        @Option(name="--help", aliases="-h",
                usage="Show help")
        protected boolean help;
       
        @Option(name="--keyStorePath", aliases="-ks",
                usage="Path to JCEKS key store where credentials should " +
                       "be stored")
        protected String keyStorePath;
       
        @Option(name="--keyStorePassword", aliases="-kp",
                usage="Password for key store")
        protected String keyStorePassword;   

        @Option(name="--authScheme", aliases="-a",
                usage="Auth scheme for which we should set up credentials " +
                      "(default NO_AUTH)")
        protected AuthScheme authScheme = AuthScheme.NO_AUTH;

        CmdLineParser parser = new CmdLineParser(this);

        protected void init(String[] args) {
            try {
                parser.parseArgument(args);
            } catch (CmdLineException e) {
                System.err.println(e.getMessage());
                parser.printUsage(System.err);
                System.exit(1);
            }
            if (help) {
                parser.printUsage(System.err);
                System.exit(1);
            }
            if (!AuthScheme.NO_AUTH.equals(authScheme)) {
                if (keyStorePath == null) {
                    System.err.println("keyStorePath is required when " +
                                       "authScheme is " + authScheme);
                    parser.printUsage(System.err);
                    System.exit(1);
                }
                if (keyStorePassword == null) {
                    Console con = System.console();
                    char[] password = con.readPassword("Enter key store password: ");
                    keyStorePassword = new String(password);
                }
            }
        }
    }
   
    public static void main(String[] args) throws Exception {
        AuthToolSettings settings = new AuthToolSettings();
        settings.init(args);       
       
        switch (settings.authScheme) {
            case NO_AUTH:
                System.err.println("No credentials required for NO_AUTH");
                break;
            case CHALLENGE_RESPONSE:
                CryptoUtil.writeSharedSecret(settings.keyStorePath,
                                             settings.keyStorePassword,
                                             CryptoUtil.secureRandom(16));
                System.out.println("Wrote random 128-bit secret to " +
                                   settings.keyStorePath);
                break;
        }       
    }
}
TOP

Related Classes of org.sdnplatform.sync.client.AuthTool

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.