http://git-wip-us.apache.org/repos/asf/airavata/blob/13c2e79e/tools/gsissh/src/main/java/edu/illinois/ncsa/BCGSS/BCGSSContextImpl.java
----------------------------------------------------------------------
diff --git 
a/tools/gsissh/src/main/java/edu/illinois/ncsa/BCGSS/BCGSSContextImpl.java 
b/tools/gsissh/src/main/java/edu/illinois/ncsa/BCGSS/BCGSSContextImpl.java
deleted file mode 100644
index be8478f..0000000
--- a/tools/gsissh/src/main/java/edu/illinois/ncsa/BCGSS/BCGSSContextImpl.java
+++ /dev/null
@@ -1,1447 +0,0 @@
-///*
-// *
-// * Licensed to the Apache Software Foundation (ASF) under one
-// * or more contributor license agreements.  See the NOTICE file
-// * distributed with this work for additional information
-// * regarding copyright ownership.  The ASF licenses this file
-// * to you under the Apache License, Version 2.0 (the
-// * "License"); you may not use this file except in compliance
-// * with the License.  You may obtain a copy of the License at
-// *
-// *   http://www.apache.org/licenses/LICENSE-2.0
-// *
-// * Unless required by applicable law or agreed to in writing,
-// * software distributed under the License is distributed on an
-// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// * KIND, either express or implied.  See the License for the
-// * specific language governing permissions and limitations
-// * under the License.
-// *
-// */
-//
-//package edu.illinois.ncsa.BCGSS;
-//
-//import org.bouncycastle.jce.provider.X509CertificateObject;
-//import org.globus.gsi.*;
-//import org.globus.gsi.bc.*;
-//import org.globus.gsi.gssapi.*;
-//import org.globus.gsi.util.*;
-//import org.gridforum.jgss.*;
-//import org.ietf.jgss.*;
-//import org.ietf.jgss.Oid;
-//import sun.reflect.generics.reflectiveObjects.NotImplementedException;
-//
-//import java.io.*;
-//import java.security.*;
-//import java.security.cert.*;
-//import java.security.cert.Certificate;
-//import java.util.*;
-//
-//public class BCGSSContextImpl implements ExtendedGSSContext {
-//    /**
-//     * Used to distinguish between a token created by
-//     * <code>wrap</code> with {@link GSSConstants#GSI_BIG
-//     * GSSConstants.GSI_BIG}
-//     * QoP and a regular token created by <code>wrap</code>.
-//     */
-//    public static final int GSI_WRAP = 26;
-//    /**
-//     * SSL3_RT_GSSAPI_OPENSSL
-//     */
-//
-//    private static final int GSI_SEQUENCE_SIZE = 8;
-//
-//    private static final int GSI_MESSAGE_DIGEST_PADDING = 12;
-//
-//    private static final byte[] SSLHANDSHAKE_PAD_1 = {0x36};
-//
-//    private static final String[] NO_ENCRYPTION = {"SSL_RSA_WITH_NULL_MD5"};
-//
-//    private static final String[] ENABLED_PROTOCOLS = {"TLSv1", "SSLv3"};
-//
-//    private static final byte[] DELEGATION_TOKEN =
-//            new byte[]{GSIConstants.DELEGATION_CHAR};
-//
-//    /**
-//     * Handshake state
-//     */
-//    protected int state = HANDSHAKE;
-//
-//    /* handshake states */
-//    private static final int
-//            HANDSHAKE = 0,
-//            CLIENT_START_DEL = 2,
-//            CLIENT_END_DEL = 3,
-//            SERVER_START_DEL = 4,
-//            SERVER_END_DEL = 5;
-//
-//    /**
-//     * Delegation state
-//     */
-//    protected int delegationState = DELEGATION_START;
-//
-//    /* delegation states */
-//    private static final int
-//            DELEGATION_START = 0,
-//            DELEGATION_SIGN_CERT = 1,
-//            DELEGATION_COMPLETE_CRED = 2;
-//
-//    /**
-//     * Delegation finished indicator
-//     */
-//    protected boolean delegationFinished = false;
-//
-//    // gss context state variables
-//    protected boolean credentialDelegation = false;
-//    protected boolean anonymity = false;
-//    protected boolean encryption = false;
-//    protected boolean established = false;
-//
-//    /**
-//     * The name of the context initiator
-//     */
-//    protected GSSName sourceName = null;
-//
-//    /**
-//     * The name of the context acceptor
-//     */
-//    protected GSSName targetName = null;
-//
-//    // these can be set via setOption
-//    protected GSIConstants.DelegationType delegationType =
-//            GSIConstants.DelegationType.LIMITED;
-//    protected Integer gssMode = GSIConstants.MODE_GSI;
-//    protected Boolean checkContextExpiration = Boolean.FALSE;
-//    protected Boolean rejectLimitedProxy = Boolean.FALSE;
-//    protected Boolean requireClientAuth = Boolean.TRUE;
-//    protected Boolean acceptNoClientCerts = Boolean.FALSE;
-//    protected Boolean requireAuthzWithDelegation = Boolean.TRUE;
-//
-//    // *** implementation-specific variables ***
-//
-//    /**
-//     * Credential of this context. Might be anonymous
-//     */
-//    protected GlobusGSSCredentialImpl ctxCred;
-//
-//    /**
-//     * Expected target name. Used for authorization in initiator
-//     */
-//    protected GSSName expectedTargetName = null;
-//
-//    /**
-//     * Context expiration date.
-//     */
-//    protected Date goodUntil = null;
-//
-//    protected boolean conn = false;
-//
-//    protected BouncyCastleCertProcessingFactory certFactory;
-//
-//    protected Map proxyPolicyHandlers;
-//
-//    /**
-//     * Limited peer credentials
-//     */
-//    protected Boolean peerLimited = null;
-//
-//    private TlsHandlerUtil tlsHU = null;
-//    private GlobusTlsClient tlsClient = null;
-//    private GlobusTlsCipherFactory cipherFactory = null;
-//
-//    /**
-//     *
-//     * @param target
-//     * @param cred
-//     * @throws org.ietf.jgss.GSSException
-//     */
-//    public BCGSSContextImpl(GSSName target, GlobusGSSCredentialImpl cred)
-//            throws GSSException {
-//        if (cred == null) {
-//            throw new GSSException(GSSException.NO_CRED);
-//        }
-//
-//        this.expectedTargetName = target;
-//        this.ctxCred = cred;
-//    }
-//
-//    /**
-//     *
-//     * @throws org.globus.gsi.gssapi.GlobusGSSException
-//     */
-//    private void init() throws GlobusGSSException {
-//        this.certFactory = BouncyCastleCertProcessingFactory.getDefault();
-//        this.state = HANDSHAKE;
-//
-//
-//        try {
-//            this.cipherFactory = new GlobusTlsCipherFactory();
-//            this.tlsClient =
-//                    new GlobusTlsClient(this.ctxCred.getX509Credential(),
-//                                        this.cipherFactory);
-//        } catch (Exception e) {
-//            throw new GlobusGSSException(GSSException.FAILURE, e);
-//        }
-//
-//        // TODO: set enabled cipher suites in client?
-//        // TODO: enable null encryption ciphers on user request?
-//
-//        /*
-//       TlsProtocolVersion[] tlsVersion =
-//            new TlsProtocolVersion[] {TlsProtocolVersion.TLSv10,
-//                                      TlsProtocolVersion.SSLv3};
-//                                      */
-//            //new TlsProtocolVersion[] {TlsProtocolVersion.TLSv10};
-//            //new TlsProtocolVersion[] {TlsProtocolVersion.SSLv3};
-//
-//       //this.tlsHU = new TlsHandlerUtil(this.tlsClient, tlsVersion);
-//        this.tlsHU = new TlsHandlerUtil(this.tlsClient);
-//    }
-//
-//    /**
-//     *
-//     * @param cert
-//     * @return
-//     * @throws GSSException
-//     */
-//    private X509Certificate bcConvert(X509Certificate cert)
-//            throws GSSException {
-//        if (!(cert instanceof X509CertificateObject)) {
-//            try {
-//                return CertificateLoadUtil.loadCertificate(new 
ByteArrayInputStream(cert.getEncoded()));
-//            } catch (Exception e) {
-//                throw new GlobusGSSException(GSSException.FAILURE, e);
-//            }
-//        } else {
-//            return cert;
-//        }
-//    }
-//
-//    private void handshakeFinished()
-//            throws IOException {
-//        //TODO: enable encryption depending on cipher suite decided in 
handshake
-//        this.encryption = true;
-//        //System.out.println("encryption alg: " + cs);
-//    }
-//
-//    /**
-//     *
-//     */
-//    private void setDone() {
-//        this.established = true;
-//    }
-//
-//    /**
-//     *
-//     * @param date
-//     */
-//    private void setGoodUntil(Date date) {
-//        if (this.goodUntil == null) {
-//            this.goodUntil = date;
-//        } else if (date.before(this.goodUntil)) {
-//            this.goodUntil = date;
-//        }
-//    }
-//
-//    /**
-//     *
-//     * @throws GSSException
-//     */
-//    protected void checkContext()
-//            throws GSSException {
-//        if (!this.conn || !isEstablished()) {
-//            throw new GSSException(GSSException.NO_CONTEXT);
-//        }
-//
-//        if (this.checkContextExpiration && getLifetime() <= 0) {
-//            throw new GSSException(GSSException.CONTEXT_EXPIRED);
-//        }
-//    }
-//
-//    /**
-//     *
-//     * @param value
-//     * @throws GSSException
-//     */
-//    protected void setGssMode(Object value)
-//            throws GSSException {
-//        if (!(value instanceof Integer)) {
-//            throw new GlobusGSSException(GSSException.FAILURE,
-//                    GlobusGSSException.BAD_OPTION_TYPE,
-//                    "badType",
-//                    new Object[]{"GSS mode", Integer.class});
-//        }
-//        Integer v = (Integer) value;
-//        if (v.equals(GSIConstants.MODE_GSI) ||
-//                v.equals(GSIConstants.MODE_SSL)) {
-//            this.gssMode = v;
-//        } else {
-//            throw new GlobusGSSException(GSSException.FAILURE,
-//                    GlobusGSSException.BAD_OPTION,
-//                    "badGssMode");
-//        }
-//    }
-//
-//    /**
-//     *
-//     * @param value
-//     * @throws GSSException
-//     */
-//    protected void setDelegationType(Object value)
-//            throws GSSException {
-//        GSIConstants.DelegationType v;
-//        if (value instanceof GSIConstants.DelegationType)
-//            v = (GSIConstants.DelegationType) value;
-//        else if (value instanceof Integer) {
-//            v = GSIConstants.DelegationType.get(((Integer) 
value).intValue());
-//        } else {
-//            throw new GlobusGSSException(GSSException.FAILURE,
-//                    GlobusGSSException.BAD_OPTION_TYPE,
-//                    "badType",
-//                    new Object[]{"delegation type",
-//                            GSIConstants.DelegationType.class});
-//        }
-//        if (v == GSIConstants.DelegationType.FULL ||
-//                v == GSIConstants.DelegationType.LIMITED) {
-//            this.delegationType = v;
-//        } else {
-//            throw new GlobusGSSException(GSSException.FAILURE,
-//                    GlobusGSSException.BAD_OPTION,
-//                    "badDelegType");
-//        }
-//    }
-//
-//    /**
-//     *
-//     * @param value
-//     * @throws GSSException
-//     */
-//    protected void setCheckContextExpired(Object value)
-//            throws GSSException {
-//        if (!(value instanceof Boolean)) {
-//            throw new GlobusGSSException(GSSException.FAILURE,
-//                    GlobusGSSException.BAD_OPTION_TYPE,
-//                    "badType",
-//                    new Object[]{"check context expired", Boolean.class});
-//        }
-//        this.checkContextExpiration = (Boolean) value;
-//    }
-//
-//    /**
-//     *
-//     * @param value
-//     * @throws GSSException
-//     */
-//    protected void setRejectLimitedProxy(Object value)
-//            throws GSSException {
-//        if (!(value instanceof Boolean)) {
-//            throw new GlobusGSSException(GSSException.FAILURE,
-//                    GlobusGSSException.BAD_OPTION_TYPE,
-//                    "badType",
-//                    new Object[]{"reject limited proxy", Boolean.class});
-//        }
-//        this.rejectLimitedProxy = (Boolean) value;
-//    }
-//
-//    /**
-//     *
-//     * @param value
-//     * @throws GSSException
-//     */
-//    protected void setRequireClientAuth(Object value)
-//            throws GSSException {
-//        if (!(value instanceof Boolean)) {
-//            throw new GlobusGSSException(GSSException.FAILURE,
-//                    GlobusGSSException.BAD_OPTION_TYPE,
-//                    "badType",
-//                    new Object[]{"require client auth", Boolean.class});
-//        }
-//        this.requireClientAuth = (Boolean) value;
-//    }
-//
-//    /**
-//     *
-//     * @param value
-//     * @throws GSSException
-//     */
-//    protected void setRequireAuthzWithDelegation(Object value)
-//            throws GSSException {
-//
-//        if (!(value instanceof Boolean)) {
-//            throw new GlobusGSSException(GSSException.FAILURE,
-//                    GlobusGSSException.BAD_OPTION_TYPE,
-//                    "badType",
-//                    new Object[]{"require authz with delehation",
-//                            Boolean.class});
-//        }
-//        this.requireAuthzWithDelegation = (Boolean) value;
-//    }
-//
-//    /**
-//     *
-//     * @param value
-//     * @throws GSSException
-//     */
-//    protected void setAcceptNoClientCerts(Object value)
-//            throws GSSException {
-//        if (!(value instanceof Boolean)) {
-//            throw new GlobusGSSException(GSSException.FAILURE,
-//                    GlobusGSSException.BAD_OPTION_TYPE,
-//                    "badType",
-//                    new Object[]{"accept no client certs", Boolean.class});
-//        }
-//        this.acceptNoClientCerts = (Boolean) value;
-//    }
-//
-//    /**
-//     *
-//     * @param value
-//     * @throws GSSException
-//     */
-//    protected void setProxyPolicyHandlers(Object value)
-//            throws GSSException {
-//        if (!(value instanceof Map)) {
-//            throw new GlobusGSSException(GSSException.FAILURE,
-//                    GlobusGSSException.BAD_OPTION_TYPE,
-//                    "badType",
-//                    new Object[]{"Proxy policy handlers",
-//                            Map.class});
-//        }
-//        this.proxyPolicyHandlers = (Map) value;
-//    }
-//
-//    /////////////////////////////////////////////////////////////////////
-//    /////////////////////////////////////////////////////////////////////
-//    /////////////////////////////////////////////////////////////////////
-//
-//    // Methods below are part of the (Extended)GSSContext implementation
-//
-//    /////////////////////////////////////////////////////////////////////
-//    /////////////////////////////////////////////////////////////////////
-//    /////////////////////////////////////////////////////////////////////
-//
-//    /**
-//     *
-//     * @param option
-//     *        option type.
-//     * @param value
-//     *        option value.
-//     * @throws GSSException
-//     */
-//    public void setOption(Oid option, Object value) throws GSSException {
-//        if (option == null) {
-//            throw new GlobusGSSException(GSSException.FAILURE,
-//                    GlobusGSSException.BAD_ARGUMENT,
-//                    "nullOption");
-//        }
-//        if (value == null) {
-//            throw new GlobusGSSException(GSSException.FAILURE,
-//                    GlobusGSSException.BAD_ARGUMENT,
-//                    "nullOptionValue");
-//        }
-//
-//        if (option.equals(GSSConstants.GSS_MODE)) {
-//            setGssMode(value);
-//        } else if (option.equals(GSSConstants.DELEGATION_TYPE)) {
-//            setDelegationType(value);
-//        } else if (option.equals(GSSConstants.CHECK_CONTEXT_EXPIRATION)) {
-//            setCheckContextExpired(value);
-//        } else if (option.equals(GSSConstants.REJECT_LIMITED_PROXY)) {
-//            setRejectLimitedProxy(value);
-//        } else if (option.equals(GSSConstants.REQUIRE_CLIENT_AUTH)) {
-//            setRequireClientAuth(value);
-//        } else if (option.equals(GSSConstants.TRUSTED_CERTIFICATES)) {
-//            // setTrustedCertificates(value);
-//            throw new GSSException(GSSException.UNAVAILABLE);
-//        } else if (option.equals(GSSConstants.PROXY_POLICY_HANDLERS)) {
-//            setProxyPolicyHandlers(value);
-//        } else if (option.equals(GSSConstants.ACCEPT_NO_CLIENT_CERTS)) {
-//            setAcceptNoClientCerts(value);
-//        } else if (option.equals(GSSConstants
-//                .AUTHZ_REQUIRED_WITH_DELEGATION)) {
-//            setRequireAuthzWithDelegation(value);
-//        } else {
-//            throw new GlobusGSSException(GSSException.FAILURE,
-//                    GlobusGSSException.UNKNOWN_OPTION,
-//                    "unknownOption",
-//                    new Object[]{option});
-//        }
-//    }
-//
-//    /**
-//     *
-//     * @param option
-//     * @return
-//     * @throws GSSException
-//     */
-//    public Object getOption(Oid option) throws GSSException {
-//        if (option == null) {
-//            throw new GlobusGSSException(GSSException.FAILURE,
-//                    GlobusGSSException.BAD_ARGUMENT,
-//                    "nullOption");
-//        }
-//
-//        if (option.equals(GSSConstants.GSS_MODE)) {
-//            return this.gssMode;
-//        } else if (option.equals(GSSConstants.DELEGATION_TYPE)) {
-//            return this.delegationType;
-//        } else if (option.equals(GSSConstants.CHECK_CONTEXT_EXPIRATION)) {
-//            return this.checkContextExpiration;
-//        } else if (option.equals(GSSConstants.REJECT_LIMITED_PROXY)) {
-//            return this.rejectLimitedProxy;
-//        } else if (option.equals(GSSConstants.REQUIRE_CLIENT_AUTH)) {
-//            return this.requireClientAuth;
-//        } else if (option.equals(GSSConstants.TRUSTED_CERTIFICATES)) {
-//            // return this.tc;
-//            throw new GSSException(GSSException.UNAVAILABLE);
-//        } else if (option.equals(GSSConstants.PROXY_POLICY_HANDLERS)) {
-//            // return this.proxyPolicyHandlers;
-//            throw new GSSException(GSSException.UNAVAILABLE);
-//        } else if (option.equals(GSSConstants.ACCEPT_NO_CLIENT_CERTS)) {
-//            return this.acceptNoClientCerts;
-//        }
-//
-//        return null;
-//    }
-//
-//    /**
-//     * Initiate the delegation of a credential.
-//     *
-//     * This function drives the initiating side of the credential
-//     * delegation process. It is expected to be called in tandem with the
-//     * {@link #acceptDelegation(int, byte[], int, int) acceptDelegation}
-//     * function.
-//     * <BR>
-//     * The behavior of this function can be modified by
-//     * {@link GSSConstants#DELEGATION_TYPE GSSConstants.DELEGATION_TYPE}
-//     * and
-//     * {@link GSSConstants#GSS_MODE GSSConstants.GSS_MODE} context
-//     * options.
-//     * The {@link GSSConstants#DELEGATION_TYPE GSSConstants.DELEGATION_TYPE}
-//     * option controls delegation type to be performed. The
-//     * {@link GSSConstants#GSS_MODE GSSConstants.GSS_MODE}
-//     * option if set to
-//     * {@link org.globus.gsi.GSIConstants#MODE_SSL GSIConstants.MODE_SSL}
-//     * results in tokens that are not wrapped.
-//     *
-//     * @param credential
-//     *        The credential to be delegated. May be null
-//     *        in which case the credential associated with the security
-//     *        context is used.
-//     * @param mechanism
-//     *        The desired security mechanism. May be null.
-//     * @param lifetime
-//     *        The requested period of validity (seconds) of the delegated
-//     *        credential.
-//     * @return A token that should be passed to 
<code>acceptDelegation</code> if
-//     *         <code>isDelegationFinished</code> returns false. May be null.
-//     * @exception GSSException containing the following major error codes:
-//     *            <code>GSSException.FAILURE</code>
-//     */
-//    public byte[] initDelegation(GSSCredential credential, Oid mechanism,
-//                                 int lifetime, byte[] buf, int off, int len)
-//            throws GSSException {
-//        //TODO: implement this
-//        return new byte[0];
-//    }
-//
-//    /*
-//     *  acceptDelegation unimplemented
-//     */
-//    public byte[] acceptDelegation(int i, byte[] bytes, int i1, int i2)
-//            throws GSSException {
-//        throw new GSSException(GSSException.UNAVAILABLE);
-//    }
-//
-//    /*
-//        getDelegatedCredential unimplemented (would be set by 
acceptDelegation)
-//     */
-//    public GSSCredential getDelegatedCredential() {
-//        return null;
-//    }
-//
-//    /**
-//     *
-//     * @return
-//     */
-//    public boolean isDelegationFinished() {
-//        return this.delegationFinished;
-//    }
-//
-//    /**
-//     * Retrieves arbitrary data about this context.
-//     * Currently supported oid: <UL>
-//     * <LI>
-//     * {@link GSSConstants#X509_CERT_CHAIN GSSConstants.X509_CERT_CHAIN}
-//     * returns certificate chain of the peer 
(<code>X509Certificate[]</code>).
-//     * </LI>
-//     * </UL>
-//     *
-//     * @param oid the oid of the information desired.
-//     * @return the information desired. Might be null.
-//     * @exception GSSException containing the following major error codes:
-//     *            <code>GSSException.FAILURE</code>
-//     */
-//    public Object inquireByOid(Oid oid) throws GSSException {
-//        if (oid == null) {
-//            throw new GlobusGSSException(GSSException.FAILURE,
-//                    GlobusGSSException.BAD_ARGUMENT,
-//                    "nullOption");
-//        }
-//
-//        if (oid.equals(GSSConstants.X509_CERT_CHAIN)) {
-//            if (isEstablished()) {
-//                // converting certs is slower but keeping converted certs
-//                // takes lots of memory.
-//                try {
-//                    Certificate[] peerCerts;
-//                    //TODO:  used to get this from
-//                    //  SSLEngine.getSession().getPeerCertificates()
-//                    peerCerts = null;
-//                    if (peerCerts != null && peerCerts.length > 0) {
-//                        return (X509Certificate[]) peerCerts;
-//                    } else {
-//                        return null;
-//                    }
-//                } catch (Exception e) {
-//                    throw new GlobusGSSException(
-//                            GSSException.DEFECTIVE_CREDENTIAL,
-//                            e
-//                    );
-//                }
-//            }
-//        } else if (oid.equals(GSSConstants.RECEIVED_LIMITED_PROXY)) {
-//            return this.peerLimited;
-//        }
-//
-//        return null;
-//    }
-//
-//    public void setBannedCiphers(String[] strings) {
-//        //To change body of implemented methods use File | Settings | File 
Templates.
-//        throw new NotImplementedException();
-//    }
-//
-//    /**
-//     * This function drives the initiating side of the context establishment
-//     * process. It is expected to be called in tandem with the
-//     * {@link #acceptSecContext(byte[], int, int) acceptSecContext} function.
-//     * <BR>
-//     * The behavior of context establishment process can be modified by
-//     * {@link GSSConstants#GSS_MODE GSSConstants.GSS_MODE},
-//     * {@link GSSConstants#DELEGATION_TYPE GSSConstants.DELEGATION_TYPE}, and
-//     * {@link GSSConstants#REJECT_LIMITED_PROXY 
GSSConstants.REJECT_LIMITED_PROXY}
-//     * context options. If the {@link GSSConstants#GSS_MODE 
GSSConstants.GSS_MODE}
-//     * option is set to
-//     * {@link org.globus.gsi.GSIConstants#MODE_SSL GSIConstants.MODE_SSL}
-//     * the context establishment process will be compatible with regular SSL
-//     * (no credential delegation support). If the option is set to
-//     * {@link org.globus.gsi.GSIConstants#MODE_GSI GSIConstants.GSS_MODE_GSI}
-//     * credential delegation during context establishment process will 
performed.
-//     * The delegation type to be performed can be set using the
-//     * {@link GSSConstants#DELEGATION_TYPE GSSConstants.DELEGATION_TYPE}
-//     * context option. If the {@link GSSConstants#REJECT_LIMITED_PROXY
-//     * GSSConstants.REJECT_LIMITED_PROXY} option is enabled,
-//     * a peer presenting limited proxy credential will be automatically
-//     * rejected and the context establishment process will be aborted.
-//     *
-//     * @return a byte[] containing the token to be sent to the peer.
-//     *         null indicates that no token is generated (needs more data).
-//     */
-//    public byte[] initSecContext(byte[] inBuff, int off, int len)
-//            throws GSSException {
-//
-//        if (!this.conn) {
-//            //System.out.println("enter initializing in initSecContext");
-//            if (this.credentialDelegation) {
-//                if (this.gssMode.equals(GSIConstants.MODE_SSL)) {
-//                    throw new GlobusGSSException(GSSException.FAILURE,
-//                            GlobusGSSException.BAD_ARGUMENT,
-//                            "initCtx00");
-//                }
-//                if (this.anonymity) {
-//                    throw new GlobusGSSException(GSSException.FAILURE,
-//                            GlobusGSSException.BAD_ARGUMENT,
-//                            "initCtx01");
-//                }
-//            }
-//
-//            if (this.anonymity || this.ctxCred.getName().isAnonymous()) {
-//                this.anonymity = true;
-//            } else {
-//                this.anonymity = false;
-//
-//                if (ctxCred.getUsage() != GSSCredential.INITIATE_ONLY &&
-//                    ctxCred.getUsage() != GSSCredential.INITIATE_AND_ACCEPT) 
{
-//                    throw new GlobusGSSException(
-//                            GSSException.DEFECTIVE_CREDENTIAL,
-//                            GlobusGSSException.UNKNOWN,
-//                            "badCredUsage");
-//                }
-//            }
-//
-//            init();
-//
-//            this.conn = true;
-//        }
-//
-//        // Unless explicitly disabled, check if delegation is
-//        // requested and expected target is null
-//        if (!Boolean.FALSE.equals(this.requireAuthzWithDelegation)) {
-//
-//            if (this.expectedTargetName == null &&
-//                    this.credentialDelegation) {
-//                throw new GlobusGSSException(GSSException.FAILURE,
-//                        GlobusGSSException.BAD_ARGUMENT,
-//                        "initCtx02");
-//            }
-//        }
-//
-//        byte[] returnToken = null;
-//
-//        switch (state) {
-//            case HANDSHAKE:
-//                try {
-//                    returnToken = this.tlsHU.nextHandshakeToken(inBuff);
-//
-//                    if (this.tlsHU.isHandshakeFinished()) {
-//                        //System.out.println("initSecContext handshake 
finished");
-//                        handshakeFinished(); // just enable encryption
-//
-//                        Certificate[] chain = this.tlsClient.getPeerCerts();
-//                        if (!(chain instanceof X509Certificate[])) {
-//                            throw new Exception(
-//                               "Certificate chain not of type 
X509Certificate");
-//                        }
-//
-//                        for (X509Certificate cert : (X509Certificate[]) 
chain) {
-//                            setGoodUntil(cert.getNotAfter());
-//                        }
-//
-//                        String identity = BouncyCastleUtil.getIdentity(
-//                                bcConvert(
-//                                        
BouncyCastleUtil.getIdentityCertificate(
-//                                                (X509Certificate[]) chain)));
-//                        this.targetName =
-//                                new GlobusGSSName(CertificateUtil.toGlobusID(
-//                                        identity, false));
-//
-//                        this.peerLimited = 
ProxyCertificateUtil.isLimitedProxy(
-//                                BouncyCastleUtil.getCertificateType(
-//                                        (X509Certificate) chain[0]));
-//
-//                        // initiator
-//                        if (this.anonymity) {
-//                            this.sourceName = new GlobusGSSName();
-//                        } else {
-//                            for (X509Certificate cert :
-//                                    ctxCred.getCertificateChain()) {
-//                                setGoodUntil(cert.getNotAfter());
-//                            }
-//                            this.sourceName = this.ctxCred.getName();
-//                        }
-//
-//                        // mutual authentication test
-//                        if (this.expectedTargetName != null &&
-//                           !this.expectedTargetName.equals(this.targetName)) 
{
-//                            throw new GlobusGSSException(
-//                                    GSSException.UNAUTHORIZED,
-//                                    GlobusGSSException.BAD_NAME,
-//                                    "authFailed00",
-//                                    new Object[]{this.expectedTargetName,
-//                                            this.targetName});
-//                        }
-//
-//                        if (this.gssMode.equals(GSIConstants.MODE_GSI)) {
-//                            this.state = CLIENT_START_DEL;
-//                            // if there is a token to return then break
-//                            // otherwise we fall through to delegation
-//                            if (returnToken != null && returnToken.length > 
0) {
-//                                break;
-//                            }
-//                        } else {
-//                            setDone();
-//                            break;
-//                        }
-//
-//                    } else { // handshake not complete yet
-//                        break;
-//                    }
-//                } catch (IOException e) {
-//                    throw new GlobusGSSException(GSSException.FAILURE, e);
-//                } catch (Exception e) {
-//                    throw new GlobusGSSException(GSSException.FAILURE, e);
-//                }
-//
-//            case CLIENT_START_DEL:
-//
-//                // sanity check - might be invalid state
-//                if (this.state != CLIENT_START_DEL ||
-//                        (returnToken != null && returnToken.length > 0) ) {
-//                    throw new GSSException(GSSException.FAILURE);
-//                }
-//
-//                try {
-//                    String deleg;
-//
-//                    if (getCredDelegState()) {
-//                        deleg = Character.toString(
-//                                GSIConstants.DELEGATION_CHAR);
-//                        this.state = CLIENT_END_DEL;
-//                    } else {
-//                        deleg = Character.toString('0');
-//                        setDone();
-//                    }
-//
-//                    // TODO: Force ASCII encoding?
-//                    byte[] a = deleg.getBytes();
-//                    // SSL wrap the delegation token
-//                    returnToken = this.tlsHU.wrap(a);
-//                } catch (Exception e) {
-//                    throw new GlobusGSSException(GSSException.FAILURE, e);
-//                }
-//
-//                break;
-//
-//            case CLIENT_END_DEL:
-//
-//                if (inBuff == null || inBuff.length == 0) {
-//                    throw new GSSException(GSSException.DEFECTIVE_TOKEN);
-//                }
-//
-//                try {
-//                    // SSL unwrap the token on the inBuff (it's a CSR)
-//                    byte[] certReq = this.tlsHU.unwrap(inBuff);
-//
-//                    if (certReq.length == 0) break;
-//
-//                    X509Certificate[] chain =
-//                            this.ctxCred.getCertificateChain();
-//
-//                    X509Certificate cert = 
this.certFactory.createCertificate(
-//                            new ByteArrayInputStream(certReq),
-//                            chain[0],
-//                            this.ctxCred.getPrivateKey(),
-//                            -1,
-//                            
BouncyCastleCertProcessingFactory.decideProxyType(
-//                                    chain[0], this.delegationType));
-//
-//                    byte[] enc = cert.getEncoded();
-//                    // SSL wrap the encoded cert and return that buffer
-//                    returnToken = this.tlsHU.wrap(enc);
-//                    setDone();
-//                } catch (GeneralSecurityException e) {
-//                    throw new GlobusGSSException(GSSException.FAILURE, e);
-//                } catch (IOException e) {
-//                    throw new GlobusGSSException(GSSException.FAILURE, e);
-//                }
-//
-//                break;
-//
-//            default:
-//                throw new GSSException(GSSException.FAILURE);
-//        }
-//
-//        //TODO: Why is there a check for CLIENT_START_DEL?
-//        if (returnToken != null && returnToken.length > 0 ||
-//            this.state == CLIENT_START_DEL) {
-//            return returnToken;
-//        } else
-//            return null;
-//    }
-//
-//    /**
-//     * It works just like
-//     * {@link #initSecContext(byte[], int, int) initSecContext} method.
-//     * It reads one SSL token from input stream, calls
-//     * {@link #initSecContext(byte[], int, int) acceptSecContext} method and
-//     * writes the output token to the output stream (if any)
-//     * SSL token is not read on the initial call.
-//     */
-//    public int initSecContext(InputStream in, OutputStream out)
-//            throws GSSException {
-//        byte[] inToken = null;
-//        try {
-//            if (!this.conn) {
-//                inToken = new byte[0];
-//            } else {
-//                inToken = SSLUtil.readSslMessage(in);
-//            }
-//            byte[] outToken = initSecContext(inToken, 0, inToken.length);
-//            if (outToken != null) {
-//                out.write(outToken);
-//                return outToken.length;
-//            } else {
-//                return 0;
-//            }
-//        } catch (IOException e) {
-//            throw new GlobusGSSException(GSSException.FAILURE, e);
-//        }
-//    }
-//
-//    /*
-//        acceptSecContext not implemented
-//     */
-//    public byte[] acceptSecContext(byte[] bytes, int i, int i1)
-//            throws GSSException {
-//        throw new GSSException(GSSException.UNAVAILABLE);
-//    }
-//
-//    /*
-//        acceptSecContext not implemented
-//     */
-//    public void acceptSecContext(InputStream in, OutputStream out)
-//            throws GSSException {
-//        throw new GSSException(GSSException.UNAVAILABLE);
-//    }
-//
-//    /**
-//     *
-//     * @return
-//     */
-//    public boolean isEstablished() {
-//        return this.established;
-//    }
-//
-//    /**
-//     *
-//     * @throws GSSException
-//     */
-//    public void dispose() throws GSSException {
-//        // does nothing
-//    }
-//
-//    /*
-//        getWrapSizeLimit unimplemented
-//     */
-//    public int getWrapSizeLimit(int i, boolean b, int i1) throws 
GSSException {
-//        throw new GSSException(GSSException.UNAVAILABLE);
-//    }
-//
-//
-//    /**
-//     * Wraps a message for integrity and protection.
-//     * Returns a GSI-wrapped token when privacy is not requested and
-//     * QOP requested is set to
-//     * {@link GSSConstants#GSI_BIG GSSConstants.GSI_BIG}. Otherwise
-//     * a regular SSL-wrapped token is returned.
-//     */
-//    public byte[] wrap(byte[] inBuf, int off, int len, MessageProp prop)
-//            throws GSSException {
-//        checkContext();
-//
-//        byte[] token = null;
-//        boolean doGSIWrap = false;
-//
-//        if (prop != null) {
-//            if (prop.getQOP() != 0 && prop.getQOP() != GSSConstants.GSI_BIG) 
{
-//                throw new GSSException(GSSException.BAD_QOP);
-//            }
-//            doGSIWrap = (!prop.getPrivacy() &&
-//                    prop.getQOP() == GSSConstants.GSI_BIG);
-//        }
-//
-//        if (doGSIWrap) {
-//            throw new GSSException(GSSException.UNAVAILABLE);
-//        } else {
-//            try {
-//                token = this.tlsHU.wrap(inBuf, off, len);
-//            } catch (IOException e) {
-//                throw new GlobusGSSException(GSSException.FAILURE, e);
-//            }
-//
-//            if (prop != null) {
-//                prop.setPrivacy(this.encryption);
-//                prop.setQOP(0);
-//            }
-//        }
-//
-//        return token;
-//    }
-//
-//    /*
-//        wrap(InputStream, OutputStream) unimplemented
-//     */
-//    public void wrap(InputStream in, OutputStream out, MessageProp msgProp)
-//            throws GSSException {
-//        throw new GSSException(GSSException.UNAVAILABLE);
-//    }
-//
-//    /**
-//     * Unwraps a token generated by <code>wrap</code> method on the other 
side
-//     * of the context.  The input token can either be a regular SSL-wrapped
-//     * token or GSI-wrapped token. Upon return from the method the
-//     * <code>MessageProp</code> object will contain the applied QOP and 
privacy
-//     * state of the message. In case of GSI-wrapped token the applied QOP 
will
-//     * be set to {@link GSSConstants#GSI_BIG GSSConstants.GSI_BIG}
-//     */
-//    public byte[] unwrap(byte[] inBuf, int off, int len, MessageProp prop)
-//            throws GSSException {
-//        checkContext();
-//
-//        byte[] token = null;
-//
-//        /*
-//         * see if the token is a straight SSL packet or
-//         * one of ours made by wrap using get_mic
-//         */
-//        if (inBuf[off] == GSI_WRAP &&
-//                inBuf[off + 1] == 3 &&
-//                inBuf[off + 2] == 0) {
-//            throw new GSSException(GSSException.UNAVAILABLE);
-//        } else {
-//            try {
-//                token = this.tlsHU.unwrap(inBuf, off, len);
-//            } catch (IOException e) {
-//                throw new GlobusGSSException(GSSException.FAILURE, e);
-//            }
-//
-//            if (prop != null) {
-//                prop.setPrivacy(this.encryption);
-//                prop.setQOP(0);
-//            }
-//        }
-//
-//        return token;
-//    }
-//
-//    /*
-//        unwrap(InputStream, OutputStream) unimplemented
-//     */
-//    public void unwrap(InputStream in, OutputStream out, MessageProp msgProp)
-//            throws GSSException {
-//        throw new GSSException(GSSException.UNAVAILABLE);
-//    }
-//
-//    /**
-//     *
-//     * @param inBuf
-//     * @param off
-//     * @param len
-//     * @param prop
-//     * @return
-//     * @throws GSSException
-//     */
-//    public byte[] getMIC(byte[] inBuf, int off, int len, MessageProp prop)
-//            throws GSSException {
-//        checkContext();
-//
-//        if (prop != null && (prop.getQOP() != 0 || prop.getPrivacy())) {
-//            throw new GSSException(GSSException.BAD_QOP);
-//        }
-//
-//        long sequence = this.cipherFactory.getTlsBlockCipher().getWriteMac()
-//                .getSequenceNumber();
-//
-//        int md_size = this.cipherFactory.getDigest().getDigestSize();
-//
-//        byte[] mic = new byte[GSI_MESSAGE_DIGEST_PADDING + md_size];
-//
-//        System.arraycopy(toBytes(sequence), 0, mic, 0, GSI_SEQUENCE_SIZE);
-//        System.arraycopy(toBytes(len, 4), 0, mic, GSI_SEQUENCE_SIZE, 4);
-//
-//        this.cipherFactory.getTlsBlockCipher().getWriteMac().incSequence();
-//
-//        int pad_ct = (48 / md_size) * md_size;
-//
-//        try {
-//            MessageDigest md = MessageDigest.getInstance(
-//                    this.cipherFactory.getDigest().getAlgorithmName());
-//
-//            md.update(this.cipherFactory.getTlsBlockCipher().getWriteMac()
-//                    .getMACSecret());
-//            for (int i = 0; i < pad_ct; i++) {
-//                md.update(SSLHANDSHAKE_PAD_1);
-//            }
-//            md.update(mic, 0, GSI_MESSAGE_DIGEST_PADDING);
-//            md.update(inBuf, off, len);
-//
-//            byte[] digest = md.digest();
-//
-//            System.arraycopy(digest, 0, mic, GSI_MESSAGE_DIGEST_PADDING, 
digest.length);
-//        } catch (NoSuchAlgorithmException e) {
-//            throw new GlobusGSSException(GSSException.FAILURE, e);
-//        }
-//
-//        if (prop != null) {
-//            prop.setPrivacy(false);
-//            prop.setQOP(0);
-//        }
-//
-//        return mic;
-//    }
-//
-//    /*
-//        getMIC(InputStream, OutputStream) unimplemented
-//     */
-//    public void getMIC(InputStream in, OutputStream out, MessageProp msgProp)
-//            throws GSSException {
-//        throw new GSSException(GSSException.UNAVAILABLE);
-//    }
-//
-//    /**
-//     *
-//     * @param inTok
-//     * @param tokOff
-//     * @param tokLen
-//     * @param inMsg
-//     * @param msgOff
-//     * @param msgLen
-//     * @param prop
-//     * @throws GSSException
-//     */
-//    public void verifyMIC(byte[] inTok, int tokOff, int tokLen,
-//                          byte[] inMsg, int msgOff, int msgLen,
-//                          MessageProp prop) throws GSSException {
-//                checkContext();
-//
-//        String digestAlg = this.cipherFactory.getDigest().getAlgorithmName();
-//        int md_size = this.cipherFactory.getDigest().getDigestSize();
-//
-//        if (tokLen != (GSI_MESSAGE_DIGEST_PADDING + md_size)) {
-//            throw new GlobusGSSException(GSSException.DEFECTIVE_TOKEN,
-//                                         GlobusGSSException.TOKEN_FAIL,
-//                                         "tokenFail00",
-//                                         new Object[] {new Integer(tokLen),
-//                                                       new 
Integer(GSI_MESSAGE_DIGEST_PADDING +
-//                                                                   
md_size)});
-//        }
-//
-//        int bufLen = SSLUtil.toInt(inTok, tokOff + GSI_SEQUENCE_SIZE);
-//        if (bufLen != msgLen) {
-//            throw new GlobusGSSException(GSSException.DEFECTIVE_TOKEN,
-//                                         GlobusGSSException.TOKEN_FAIL,
-//                                         "tokenFail01",
-//                                         new Object[] {new Integer(msgLen), 
new Integer(bufLen)});
-//        }
-//
-//        int pad_ct = (48 / md_size) * md_size;
-//
-//        byte [] digest = null;
-//
-//        try {
-//            MessageDigest md =
-//                MessageDigest.getInstance(digestAlg);
-//
-//            md.update(this.cipherFactory.getTlsBlockCipher().getReadMac()
-//                    .getMACSecret());
-//            for(int i=0;i<pad_ct;i++) {
-//                md.update(SSLHANDSHAKE_PAD_1);
-//            }
-//            md.update(inTok, tokOff, GSI_MESSAGE_DIGEST_PADDING);
-//            md.update(inMsg, msgOff, msgLen);
-//
-//            digest = md.digest();
-//        } catch (NoSuchAlgorithmException e) {
-//            throw new GlobusGSSException(GSSException.FAILURE, e);
-//        }
-//
-//        byte [] token = new byte[tokLen-GSI_MESSAGE_DIGEST_PADDING];
-//        System.arraycopy(inTok, tokOff+GSI_MESSAGE_DIGEST_PADDING, token, 0, 
token.length);
-//
-//        if (!Arrays.equals(digest, token)) {
-//            throw new GlobusGSSException(GSSException.BAD_MIC,
-//                                         GlobusGSSException.BAD_MIC,
-//                                         "tokenFail02");
-//        }
-//
-//        long tokSeq = SSLUtil.toLong(inTok, tokOff);
-//        long readSeq = this.cipherFactory.getTlsBlockCipher().getReadMac()
-//                .getSequenceNumber();
-//        long seqTest = tokSeq - readSeq;
-//
-//        if (seqTest > 0) {
-//            // gap token
-//            throw new GSSException(GSSException.GAP_TOKEN);
-//        } else if (seqTest < 0) {
-//            // old token
-//            throw new GSSException(GSSException.OLD_TOKEN);
-//        } else {
-//            
this.cipherFactory.getTlsBlockCipher().getReadMac().incSequence();
-//        }
-//
-//        if (prop != null) {
-//            prop.setPrivacy(false);
-//            prop.setQOP(0);
-//        }
-//    }
-//
-//    /*
-//        verifyMIC(InputStream, InputStream) unimplemented
-//    */
-//    public void verifyMIC(InputStream tokStream, InputStream msgStream,
-//                          MessageProp msgProp) throws GSSException {
-//        throw new GSSException(GSSException.UNAVAILABLE);
-//    }
-//
-//    /*
-//        export not implemented
-//     */
-//    public byte[] export() throws GSSException {
-//        throw new GSSException(GSSException.UNAVAILABLE);
-//    }
-//
-//    /**
-//     *
-//     * @param state
-//     * @throws GSSException
-//     */
-//    public void requestMutualAuth(boolean state) throws GSSException {
-//        if (!state) {
-//            throw new GlobusGSSException(GSSException.FAILURE,
-//                    GlobusGSSException.BAD_OPTION,
-//                    "mutualAuthOn");
-//        }
-//    }
-//
-//    /**
-//     *
-//     * @param state
-//     * @throws GSSException
-//     */
-//    public void requestReplayDet(boolean state) throws GSSException {
-//        if (!state) {
-//            throw new GlobusGSSException(GSSException.FAILURE,
-//                    GlobusGSSException.BAD_OPTION,
-//                    "replayDet");
-//        }
-//    }
-//
-//    /**
-//     *
-//     * @param state
-//     * @throws GSSException
-//     */
-//    public void requestSequenceDet(boolean state) throws GSSException {
-//        if (!state) {
-//            throw new GlobusGSSException(GSSException.FAILURE,
-//                    GlobusGSSException.BAD_OPTION,
-//                    "seqDet");
-//        }
-//    }
-//
-//    /**
-//     *
-//     * @param state
-//     * @throws GSSException
-//     */
-//    public void requestCredDeleg(boolean state) throws GSSException {
-//        this.credentialDelegation = state;
-//    }
-//
-//    /**
-//     *
-//     * @param state
-//     * @throws GSSException
-//     */
-//    public void requestAnonymity(boolean state) throws GSSException {
-//        this.anonymity = state;
-//    }
-//
-//    /**
-//     *
-//     * @param state
-//     * @throws GSSException
-//     */
-//    public void requestConf(boolean state) throws GSSException {
-//        //TODO: unencrypted not possible
-//        this.encryption = true;
-//    }
-//
-//    /**
-//     *
-//     * @param state
-//     * @throws GSSException
-//     */
-//    public void requestInteg(boolean state) throws GSSException {
-//        if (!state) {
-//            throw new GlobusGSSException(GSSException.FAILURE,
-//                    GlobusGSSException.BAD_OPTION,
-//                    "integOn");
-//        }
-//    }
-//
-//    /**
-//     *
-//     * @param lifetime
-//     * @throws GSSException
-//     */
-//    public void requestLifetime(int lifetime) throws GSSException {
-//        if (lifetime == GSSContext.INDEFINITE_LIFETIME) {
-//            throw new GlobusGSSException(GSSException.FAILURE,
-//                    GlobusGSSException.UNKNOWN,
-//                    "badLifetime00");
-//        }
-//
-//        if (lifetime != GSSContext.DEFAULT_LIFETIME) {
-//            Calendar calendar = Calendar.getInstance();
-//            calendar.add(Calendar.SECOND, lifetime);
-//            setGoodUntil(calendar.getTime());
-//        }
-//    }
-//
-//    /*
-//        setChannelBinding unimplemented
-//     */
-//    public void setChannelBinding(ChannelBinding cb) throws GSSException {
-//        throw new GSSException(GSSException.UNAVAILABLE);
-//    }
-//
-//    /**
-//     *
-//     * @return
-//     */
-//    public boolean getCredDelegState() {
-//        return this.credentialDelegation;
-//    }
-//
-//    /**
-//     *
-//     * @return
-//     */
-//    public boolean getMutualAuthState() {
-//        return true;  // always on with gsi
-//    }
-//
-//    /**
-//     *
-//     * @return
-//     */
-//    public boolean getReplayDetState() {
-//        return true;  // always on with ssl
-//    }
-//
-//    /**
-//     *
-//     * @return
-//     */
-//    public boolean getSequenceDetState() {
-//        return true;  // always on with ssl
-//    }
-//
-//    /**
-//     *
-//     * @return
-//     */
-//    public boolean getAnonymityState() {
-//        return this.anonymity;
-//    }
-//
-//    /*
-//        isTransferable unimplemented
-//     */
-//    public boolean isTransferable() throws GSSException {
-//        throw new GSSException(GSSException.UNAVAILABLE);
-//    }
-//
-//    /**
-//     *
-//     * @return
-//     */
-//    public boolean isProtReady() {
-//        return isEstablished();
-//    }
-//
-//    /**
-//     *
-//     * @return
-//     */
-//    public boolean getConfState() {
-//        return this.encryption;
-//    }
-//
-//    public boolean getIntegState() {
-//        return true;  // always on with ssl
-//    }
-//
-//    /**
-//     *
-//     * @return
-//     */
-//    public int getLifetime() {
-//        if (goodUntil != null) {
-//            return (int) ((goodUntil.getTime() - System.currentTimeMillis())
-//                    / 1000);
-//        } else {
-//            return -1;
-//        }
-//    }
-//
-//    /**
-//     *
-//     * @return
-//     * @throws GSSException
-//     */
-//    public GSSName getSrcName() throws GSSException {
-//        return this.sourceName;
-//    }
-//
-//    /**
-//     *
-//     * @return
-//     * @throws GSSException
-//     */
-//    public GSSName getTargName() throws GSSException {
-//        return this.targetName;
-//    }
-//
-//    /**
-//     *
-//     * @return
-//     * @throws GSSException
-//     */
-//    public Oid getMech() throws GSSException {
-//        return GSSConstants.MECH_OID;
-//    }
-//
-//    /*
-//        getDelegCred unimplemented (would have been set by acceptSecContext
-//     */
-//    public GSSCredential getDelegCred() throws GSSException {
-//        throw new GSSException(GSSException.UNAVAILABLE);
-//    }
-//
-//    /**
-//     *
-//     * @return
-//     * @throws GSSException
-//     */
-//    public boolean isInitiator() throws GSSException {
-//        return true;  // acceptor side currently isn't implemented
-//    }
-//
-//    /**
-//     *
-//     * @param val
-//     * @return
-//     */
-//    public static byte[] toBytes(long val){
-//        return toBytes(val,8);
-//    }
-//
-//    /**
-//     *
-//     * @param val
-//     * @return
-//     */
-//    public static byte[] toBytes(short val){
-//        return toBytes((long)val,2);
-//    }
-//
-//    /**
-//     *
-//     * @param val
-//     * @param bytes
-//     * @return
-//     */
-//    public static byte[] toBytes(long val,int bytes){
-//        byte[] retval=new byte[bytes];
-//
-//        while(bytes-->0){
-//            retval[bytes]=(byte)(val & 0xff);
-//            val>>=8;
-//        }
-//
-//        return retval;
-//    }
-//}

http://git-wip-us.apache.org/repos/asf/airavata/blob/13c2e79e/tools/gsissh/src/main/java/edu/illinois/ncsa/BCGSS/CircularByteBuffer.java
----------------------------------------------------------------------
diff --git 
a/tools/gsissh/src/main/java/edu/illinois/ncsa/BCGSS/CircularByteBuffer.java 
b/tools/gsissh/src/main/java/edu/illinois/ncsa/BCGSS/CircularByteBuffer.java
deleted file mode 100644
index 47a946f..0000000
--- a/tools/gsissh/src/main/java/edu/illinois/ncsa/BCGSS/CircularByteBuffer.java
+++ /dev/null
@@ -1,824 +0,0 @@
-///*
-// *
-// * Licensed to the Apache Software Foundation (ASF) under one
-// * or more contributor license agreements.  See the NOTICE file
-// * distributed with this work for additional information
-// * regarding copyright ownership.  The ASF licenses this file
-// * to you under the Apache License, Version 2.0 (the
-// * "License"); you may not use this file except in compliance
-// * with the License.  You may obtain a copy of the License at
-// *
-// *   http://www.apache.org/licenses/LICENSE-2.0
-// *
-// * Unless required by applicable law or agreed to in writing,
-// * software distributed under the License is distributed on an
-// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// * KIND, either express or implied.  See the License for the
-// * specific language governing permissions and limitations
-// * under the License.
-// *
-// */
-//package edu.illinois.ncsa.BCGSS;
-///*
-// * Circular Byte Buffer
-// * Copyright (C) 2002 Stephen Ostermiller
-// * http://ostermiller.org/contact.pl?regarding=Java+Utilities
-// *
-// * This program is free software; you can redistribute it and/or modify
-// * it under the terms of the GNU General Public License as published by
-// * the Free Software Foundation; either version 2 of the License, or
-// * (at your option) any later version.
-// *
-// * This program is distributed in the hope that it will be useful,
-// * but WITHOUT ANY WARRANTY; without even the implied warranty of
-// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// * GNU General Public License for more details.
-// *
-// * See COPYING.TXT for details.
-// */
-//
-//
-//import java.io.*;
-//import java.nio.*;
-//
-///**
-// * Implements the Circular Buffer producer/consumer model for bytes.
-// * More information about this class is available from <a target="_top" href=
-// * 
"http://ostermiller.org/utils/CircularByteBuffer.html";>ostermiller.org</a>.
-// * <p>
-// * Using this class is a simpler alternative to using a PipedInputStream
-// * and a PipedOutputStream. PipedInputStreams and PipedOutputStreams don't 
support the
-// * mark operation, don't allow you to control buffer sizes that they use,
-// * and have a more complicated API that requires instantiating two
-// * classes and connecting them.
-// * <p>
-// * This class is thread safe.
-// *
-// */
-//public class CircularByteBuffer {
-//
-//     /**
-//      * The default size for a circular byte buffer.
-//      *
-//      * @since ostermillerutils 1.00.00
-//      */
-//     private final static int DEFAULT_SIZE = 1024;
-//
-//     /**
-//      * A buffer that will grow as things are added.
-//      *
-//      * @since ostermillerutils 1.00.00
-//      */
-//     public final static int INFINITE_SIZE = -1;
-//
-//     /**
-//      * The circular buffer.
-//      * <p>
-//      * The actual capacity of the buffer is one less than the actual length
-//      * of the buffer so that an empty and a full buffer can be
-//      * distinguished.  An empty buffer will have the markPostion and the
-//      * writePosition equal to each other.  A full buffer will have
-//      * the writePosition one less than the markPostion.
-//      * <p>
-//      * There are three important indexes into the buffer:
-//      * The readPosition, the writePosition, and the markPosition.
-//      * If the InputStream has never been marked, the readPosition and
-//      * the markPosition should always be the same.  The bytes
-//      * available to be read go from the readPosition to the writePosition,
-//      * wrapping around the end of the buffer.  The space available for 
writing
-//      * goes from the write position to one less than the markPosition,
-//      * wrapping around the end of the buffer.  The bytes that have
-//      * been saved to support a reset() of the InputStream go from 
markPosition
-//      * to readPosition, wrapping around the end of the buffer.
-//      *
-//      * @since ostermillerutils 1.00.00
-//      */
-//     protected byte[] buffer;
-//     /**
-//      * Index of the first byte available to be read.
-//      *
-//      * @since ostermillerutils 1.00.00
-//      */
-//     protected volatile int readPosition = 0;
-//     /**
-//      * Index of the first byte available to be written.
-//      *
-//      * @since ostermillerutils 1.00.00
-//      */
-//     protected volatile int writePosition = 0;
-//     /**
-//      * Index of the first saved byte. (To support stream marking.)
-//      *
-//      * @since ostermillerutils 1.00.00
-//      */
-//     protected volatile int markPosition = 0;
-//     /**
-//      * Number of bytes that have to be saved
-//      * to support mark() and reset() on the InputStream.
-//      *
-//      * @since ostermillerutils 1.00.00
-//      */
-//     protected volatile int markSize = 0;
-//     /**
-//      * If this buffer is infinite (should resize itself when full)
-//      *
-//      * @since ostermillerutils 1.00.00
-//      */
-//     protected volatile boolean infinite = false;
-//     /**
-//      * True if a write to a full buffer should block until the buffer
-//      * has room, false if the write method should throw an IOException
-//      *
-//      * @since ostermillerutils 1.00.00
-//      */
-//     protected boolean blockingWrite = true;
-//     /**
-//      * The InputStream that can empty this buffer.
-//      *
-//      * @since ostermillerutils 1.00.00
-//      */
-//     protected InputStream in = new CircularByteBufferInputStream();
-//     /**
-//      * true if the close() method has been called on the InputStream
-//      *
-//      * @since ostermillerutils 1.00.00
-//      */
-//     protected boolean inputStreamClosed = false;
-//     /**
-//      * The OutputStream that can fill this buffer.
-//      *
-//      * @since ostermillerutils 1.00.00
-//      */
-//     protected OutputStream out = new CircularByteBufferOutputStream();
-//     /**
-//      * true if the close() method has been called on the OutputStream
-//      *
-//      * @since ostermillerutils 1.00.00
-//      */
-//     protected boolean outputStreamClosed = false;
-//
-//     /**
-//      * Make this buffer ready for reuse.  The contents of the buffer
-//      * will be cleared and the streams associated with this buffer
-//      * will be reopened if they had been closed.
-//      *
-//      * @since ostermillerutils 1.00.00
-//      */
-//     public void clear(){
-//             synchronized (this){
-//                     readPosition = 0;
-//                     writePosition = 0;
-//                     markPosition = 0;
-//                     outputStreamClosed = false;
-//                     inputStreamClosed = false;
-//             }
-//     }
-//
-//     /**
-//      * Retrieve a OutputStream that can be used to fill
-//      * this buffer.
-//      * <p>
-//      * Write methods may throw a BufferOverflowException if
-//      * the buffer is not large enough.  A large enough buffer
-//      * size must be chosen so that this does not happen or
-//      * the caller must be prepared to catch the exception and
-//      * try again once part of the buffer has been consumed.
-//      *
-//      *
-//      * @return the producer for this buffer.
-//      *
-//      * @since ostermillerutils 1.00.00
-//      */
-//     public OutputStream getOutputStream(){
-//             return out;
-//     }
-//
-//     /**
-//      * Retrieve a InputStream that can be used to empty
-//      * this buffer.
-//      * <p>
-//      * This InputStream supports marks at the expense
-//      * of the buffer size.
-//      *
-//      * @return the consumer for this buffer.
-//      *
-//      * @since ostermillerutils 1.00.00
-//      */
-//     public InputStream getInputStream(){
-//             return in;
-//     }
-//
-//     /**
-//      * Get number of bytes that are available to be read.
-//      * <p>
-//      * Note that the number of bytes available plus
-//      * the number of bytes free may not add up to the
-//      * capacity of this buffer, as the buffer may reserve some
-//      * space for other purposes.
-//      *
-//      * @return the size in bytes of this buffer
-//      *
-//      * @since ostermillerutils 1.00.00
-//      */
-//     public int getAvailable(){
-//             synchronized (this){
-//                     return available();
-//             }
-//     }
-//
-//     /**
-//      * Get the number of bytes this buffer has free for
-//      * writing.
-//      * <p>
-//      * Note that the number of bytes available plus
-//      * the number of bytes free may not add up to the
-//      * capacity of this buffer, as the buffer may reserve some
-//      * space for other purposes.
-//      *
-//      * @return the available space in bytes of this buffer
-//      *
-//      * @since ostermillerutils 1.00.00
-//      */
-//     public int getSpaceLeft(){
-//             synchronized (this){
-//                     return spaceLeft();
-//             }
-//     }
-//
-//     /**
-//      * Get the capacity of this buffer.
-//      * <p>
-//      * Note that the number of bytes available plus
-//      * the number of bytes free may not add up to the
-//      * capacity of this buffer, as the buffer may reserve some
-//      * space for other purposes.
-//      *
-//      * @return the size in bytes of this buffer
-//      *
-//      * @since ostermillerutils 1.00.00
-//      */
-//     public int getSize(){
-//             synchronized (this){
-//                     return buffer.length;
-//             }
-//     }
-//
-//     /**
-//      * double the size of the buffer
-//      *
-//      * @since ostermillerutils 1.00.00
-//      */
-//     private void resize(){
-//             byte[] newBuffer = new byte[buffer.length * 2];
-//             int marked = marked();
-//             int available = available();
-//             if (markPosition <= writePosition){
-//                     // any space between the mark and
-//                     // the first write needs to be saved.
-//                     // In this case it is all in one piece.
-//                     int length = writePosition - markPosition;
-//                     System.arraycopy(buffer, markPosition, newBuffer, 0, 
length);
-//             } else {
-//                     int length1 = buffer.length - markPosition;
-//                     System.arraycopy(buffer, markPosition, newBuffer, 0, 
length1);
-//                     int length2 = writePosition;
-//                     System.arraycopy(buffer, 0, newBuffer, length1, 
length2);
-//             }
-//             buffer = newBuffer;
-//             markPosition = 0;
-//             readPosition = marked;
-//             writePosition = marked + available;
-//     }
-//
-//     /**
-//      * Space available in the buffer which can be written.
-//      *
-//      * @since ostermillerutils 1.00.00
-//      */
-//     private int spaceLeft(){
-//             if (writePosition < markPosition){
-//                     // any space between the first write and
-//                     // the mark except one byte is available.
-//                     // In this case it is all in one piece.
-//                     return (markPosition - writePosition - 1);
-//             }
-//             // space at the beginning and end.
-//             return ((buffer.length - 1) - (writePosition - markPosition));
-//     }
-//
-//     /**
-//      * Bytes available for reading.
-//      *
-//      * @since ostermillerutils 1.00.00
-//      */
-//     private int available(){
-//             if (readPosition <= writePosition){
-//                     // any space between the first read and
-//                     // the first write is available.  In this case i
-//                     // is all in one piece.
-//                     return (writePosition - readPosition);
-//             }
-//             // space at the beginning and end.
-//             return (buffer.length - (readPosition - writePosition));
-//     }
-//
-//     /**
-//      * Bytes saved for supporting marks.
-//      *
-//      * @since ostermillerutils 1.00.00
-//      */
-//     private int marked(){
-//             if (markPosition <= readPosition){
-//                     // any space between the markPosition and
-//                     // the first write is marked.  In this case i
-//                     // is all in one piece.
-//                     return (readPosition - markPosition);
-//             }
-//             // space at the beginning and end.
-//             return (buffer.length - (markPosition - readPosition));
-//     }
-//
-//     /**
-//      * If we have passed the markSize reset the
-//      * mark so that the space can be used.
-//      *
-//      * @since ostermillerutils 1.00.00
-//      */
-//     private void ensureMark(){
-//             if (marked() >= markSize){
-//                     markPosition = readPosition;
-//                     markSize = 0;
-//             }
-//     }
-//
-//     /**
-//      * Create a new buffer with a default capacity.
-//      * Writing to a full buffer will block until space
-//      * is available rather than throw an exception.
-//      *
-//      * @since ostermillerutils 1.00.00
-//      */
-//     public CircularByteBuffer(){
-//             this (DEFAULT_SIZE, true);
-//     }
-//
-//     /**
-//      * Create a new buffer with given capacity.
-//      * Writing to a full buffer will block until space
-//      * is available rather than throw an exception.
-//      * <p>
-//      * Note that the buffer may reserve some bytes for
-//      * special purposes and capacity number of bytes may
-//      * not be able to be written to the buffer.
-//      * <p>
-//      * Note that if the buffer is of INFINITE_SIZE it will
-//      * neither block or throw exceptions, but rather grow
-//      * without bound.
-//      *
-//      * @param size desired capacity of the buffer in bytes or 
CircularByteBuffer.INFINITE_SIZE.
-//      *
-//      * @since ostermillerutils 1.00.00
-//      */
-//     public CircularByteBuffer(int size){
-//             this (size, true);
-//     }
-//
-//     /**
-//      * Create a new buffer with a default capacity and
-//      * given blocking behavior.
-//      *
-//      * @param blockingWrite true writing to a full buffer should block
-//      *        until space is available, false if an exception should
-//      *        be thrown instead.
-//      *
-//      * @since ostermillerutils 1.00.00
-//      */
-//     public CircularByteBuffer(boolean blockingWrite){
-//             this (DEFAULT_SIZE, blockingWrite);
-//     }
-//
-//     /**
-//      * Create a new buffer with the given capacity and
-//      * blocking behavior.
-//      * <p>
-//      * Note that the buffer may reserve some bytes for
-//      * special purposes and capacity number of bytes may
-//      * not be able to be written to the buffer.
-//      * <p>
-//      * Note that if the buffer is of INFINITE_SIZE it will
-//      * neither block or throw exceptions, but rather grow
-//      * without bound.
-//      *
-//      * @param size desired capacity of the buffer in bytes or 
CircularByteBuffer.INFINITE_SIZE.
-//      * @param blockingWrite true writing to a full buffer should block
-//      *        until space is available, false if an exception should
-//      *        be thrown instead.
-//      *
-//      * @since ostermillerutils 1.00.00
-//      */
-//     public CircularByteBuffer(int size, boolean blockingWrite){
-//             if (size == INFINITE_SIZE){
-//                     buffer = new byte[DEFAULT_SIZE];
-//                     infinite = true;
-//             } else {
-//                     buffer = new byte[size];
-//                     infinite = false;
-//             }
-//             this.blockingWrite = blockingWrite;
-//     }
-//
-//     /**
-//      * Class for reading from a circular byte buffer.
-//      *
-//      * @since ostermillerutils 1.00.00
-//      */
-//     protected class CircularByteBufferInputStream extends InputStream {
-//
-//             /**
-//              * Returns the number of bytes that can be read (or skipped 
over) from this
-//              * input stream without blocking by the next caller of a method 
for this input
-//              * stream. The next caller might be the same thread or or 
another thread.
-//              *
-//              * @return the number of bytes that can be read from this input 
stream without blocking.
-//              * @throws IOException if the stream is closed.
-//              *
-//              * @since ostermillerutils 1.00.00
-//              */
-//             @Override public int available() throws IOException {
-//                     synchronized (CircularByteBuffer.this){
-//                             if (inputStreamClosed) throw new 
IOException("InputStream has been closed, it is not ready.");
-//                             return (CircularByteBuffer.this.available());
-//                     }
-//             }
-//
-//             /**
-//              * Close the stream. Once a stream has been closed, further 
read(), available(),
-//              * mark(), or reset() invocations will throw an IOException. 
Closing a
-//              * previously-closed stream, however, has no effect.
-//              *
-//              * @throws IOException never.
-//              *
-//              * @since ostermillerutils 1.00.00
-//              */
-//             @Override public void close() throws IOException {
-//                     synchronized (CircularByteBuffer.this){
-//                             inputStreamClosed = true;
-//                     }
-//             }
-//
-//             /**
-//              * Mark the present position in the stream. Subsequent calls to 
reset() will
-//              * attempt to reposition the stream to this point.
-//              * <p>
-//              * The readAheadLimit must be less than the size of circular 
buffer, otherwise
-//              * this method has no effect.
-//              *
-//              * @param readAheadLimit Limit on the number of bytes that may 
be read while
-//              *    still preserving the mark. After reading this many bytes, 
attempting to
-//              *    reset the stream will fail.
-//              *
-//              * @since ostermillerutils 1.00.00
-//              */
-//             @Override public void mark(int readAheadLimit) {
-//                     synchronized (CircularByteBuffer.this){
-//                             //if (inputStreamClosed) throw new 
IOException("InputStream has been closed; cannot mark a closed InputStream.");
-//                             if (buffer.length - 1 > readAheadLimit) {
-//                                     markSize = readAheadLimit;
-//                                     markPosition = readPosition;
-//                             }
-//                     }
-//             }
-//
-//             /**
-//              * Tell whether this stream supports the mark() operation.
-//              *
-//              * @return true, mark is supported.
-//              *
-//              * @since ostermillerutils 1.00.00
-//              */
-//             @Override public boolean markSupported() {
-//                     return true;
-//             }
-//
-//             /**
-//              * Read a single byte.
-//              * This method will block until a byte is available, an I/O 
error occurs,
-//              * or the end of the stream is reached.
-//              *
-//              * @return The byte read, as an integer in the range 0 to 255 
(0x00-0xff),
-//              *     or -1 if the end of the stream has been reached
-//              * @throws IOException if the stream is closed.
-//              *
-//              * @since ostermillerutils 1.00.00
-//              */
-//             @Override public int read() throws IOException {
-//                     while (true){
-//                             synchronized (CircularByteBuffer.this){
-//                                     if (inputStreamClosed) throw new 
IOException("InputStream has been closed; cannot read from a closed 
InputStream.");
-//                                     int available = 
CircularByteBuffer.this.available();
-//                                     if (available > 0){
-//                                             int result = 
buffer[readPosition] & 0xff;
-//                                             readPosition++;
-//                                             if (readPosition == 
buffer.length){
-//                                                     readPosition = 0;
-//                                             }
-//                                             ensureMark();
-//                                             return result;
-//                                     } else if (outputStreamClosed){
-//                                             return -1;
-//                                     }
-//                             }
-//                             try {
-//                                     Thread.sleep(100);
-//                             } catch(Exception x){
-//                                     throw new IOException("Blocking read 
operation interrupted.");
-//                             }
-//                     }
-//             }
-//
-//             /**
-//              * Read bytes into an array.
-//              * This method will block until some input is available,
-//              * an I/O error occurs, or the end of the stream is reached.
-//              *
-//              * @param cbuf Destination buffer.
-//              * @return The number of bytes read, or -1 if the end of
-//              *   the stream has been reached
-//              * @throws IOException if the stream is closed.
-//              *
-//              * @since ostermillerutils 1.00.00
-//              */
-//             @Override public int read(byte[] cbuf) throws IOException {
-//                     return read(cbuf, 0, cbuf.length);
-//             }
-//
-//             /**
-//              * Read bytes into a portion of an array.
-//              * This method will block until some input is available,
-//              * an I/O error occurs, or the end of the stream is reached.
-//              *
-//              * @param cbuf Destination buffer.
-//              * @param off Offset at which to start storing bytes.
-//              * @param len Maximum number of bytes to read.
-//              * @return The number of bytes read, or -1 if the end of
-//              *   the stream has been reached
-//              * @throws IOException if the stream is closed.
-//              *
-//              * @since ostermillerutils 1.00.00
-//              */
-//             @Override public int read(byte[] cbuf, int off, int len) throws 
IOException {
-//                     while (true){
-//                             synchronized (CircularByteBuffer.this){
-//                                     if (inputStreamClosed) throw new 
IOException("InputStream has been closed; cannot read from a closed 
InputStream.");
-//                                     int available = 
CircularByteBuffer.this.available();
-//                                     if (available > 0){
-//                                             int length = Math.min(len, 
available);
-//                                             int firstLen = Math.min(length, 
buffer.length - readPosition);
-//                                             int secondLen = length - 
firstLen;
-//                                             System.arraycopy(buffer, 
readPosition, cbuf, off, firstLen);
-//                                             if (secondLen > 0){
-//                                                     
System.arraycopy(buffer, 0, cbuf, off+firstLen,  secondLen);
-//                                                     readPosition = 
secondLen;
-//                                             } else {
-//                                                     readPosition += length;
-//                                             }
-//                                             if (readPosition == 
buffer.length) {
-//                                                     readPosition = 0;
-//                                             }
-//                                             ensureMark();
-//                                             return length;
-//                                     } else if (outputStreamClosed){
-//                                             return -1;
-//                                     }
-//                             }
-//                             try {
-//                                     Thread.sleep(100);
-//                             } catch(Exception x){
-//                                     throw new IOException("Blocking read 
operation interrupted.");
-//                             }
-//                     }
-//             }
-//
-//             /**
-//              * Reset the stream.
-//              * If the stream has been marked, then attempt to reposition i
-//              * at the mark. If the stream has not been marked, or more bytes
-//              * than the readAheadLimit have been read, this method has no 
effect.
-//              *
-//              * @throws IOException if the stream is closed.
-//              *
-//              * @since ostermillerutils 1.00.00
-//              */
-//             @Override public void reset() throws IOException {
-//                     synchronized (CircularByteBuffer.this){
-//                             if (inputStreamClosed) throw new 
IOException("InputStream has been closed; cannot reset a closed InputStream.");
-//                             readPosition = markPosition;
-//                     }
-//             }
-//
-//             /**
-//              * Skip bytes.
-//              * This method will block until some bytes are available,
-//              * an I/O error occurs, or the end of the stream is reached.
-//              *
-//              * @param n The number of bytes to skip
-//              * @return The number of bytes actually skipped
-//              * @throws IllegalArgumentException if n is negative.
-//              * @throws IOException if the stream is closed.
-//              *
-//              * @since ostermillerutils 1.00.00
-//              */
-//             @Override public long skip(long n) throws IOException, 
IllegalArgumentException {
-//                     while (true){
-//                             synchronized (CircularByteBuffer.this){
-//                                     if (inputStreamClosed) throw new 
IOException("InputStream has been closed; cannot skip bytes on a closed 
InputStream.");
-//                                     int available = 
CircularByteBuffer.this.available();
-//                                     if (available > 0){
-//                                             int length = Math.min((int)n, 
available);
-//                                             int firstLen = Math.min(length, 
buffer.length - readPosition);
-//                                             int secondLen = length - 
firstLen;
-//                                             if (secondLen > 0){
-//                                                     readPosition = 
secondLen;
-//                                             } else {
-//                                                     readPosition += length;
-//                                             }
-//                                             if (readPosition == 
buffer.length) {
-//                                                     readPosition = 0;
-//                                             }
-//                                             ensureMark();
-//                                             return length;
-//                                     } else if (outputStreamClosed){
-//                                             return 0;
-//                                     }
-//                             }
-//                             try {
-//                                     Thread.sleep(100);
-//                             } catch(Exception x){
-//                                     throw new IOException("Blocking read 
operation interrupted.");
-//                             }
-//                     }
-//             }
-//     }
-//
-//     /**
-//      * Class for writing to a circular byte buffer.
-//      * If the buffer is full, the writes will either block
-//      * until there is some space available or throw an IOException
-//      * based on the CircularByteBuffer's preference.
-//      *
-//      * @since ostermillerutils 1.00.00
-//      */
-//     protected class CircularByteBufferOutputStream extends OutputStream {
-//
-//             /**
-//              * Close the stream, flushing it first.
-//              * This will cause the InputStream associated with this 
circular buffer
-//              * to read its last bytes once it empties the buffer.
-//              * Once a stream has been closed, further write() or flush() 
invocations
-//              * will cause an IOException to be thrown. Closing a 
previously-closed stream,
-//              * however, has no effect.
-//              *
-//              * @throws IOException never.
-//              *
-//              * @since ostermillerutils 1.00.00
-//              */
-//             @Override public void close() throws IOException {
-//                     synchronized (CircularByteBuffer.this){
-//                             if (!outputStreamClosed){
-//                                     flush();
-//                             }
-//                             outputStreamClosed = true;
-//                     }
-//             }
-//
-//             /**
-//              * Flush the stream.
-//              *
-//              * @throws IOException if the stream is closed.
-//              *
-//              * @since ostermillerutils 1.00.00
-//              */
-//             @Override public void flush() throws IOException {
-//                     if (outputStreamClosed) throw new 
IOException("OutputStream has been closed; cannot flush a closed 
OutputStream.");
-//                     if (inputStreamClosed) throw new IOException("Buffer 
closed by inputStream; cannot flush.");
-//                     // this method needs to do nothing
-//             }
-//
-//             /**
-//              * Write an array of bytes.
-//              * If the buffer allows blocking writes, this method will block 
until
-//              * all the data has been written rather than throw an 
IOException.
-//              *
-//              * @param cbuf Array of bytes to be written
-//              * @throws BufferOverflowException if buffer does not allow 
blocking writes
-//              *   and the buffer is full.  If the exception is thrown, no 
data
-//              *   will have been written since the buffer was set to be 
non-blocking.
-//              * @throws IOException if the stream is closed, or the write is 
interrupted.
-//              *
-//              * @since ostermillerutils 1.00.00
-//              */
-//             @Override public void write(byte[] cbuf) throws IOException {
-//                     write(cbuf, 0, cbuf.length);
-//             }
-//
-//             /**
-//              * Write a portion of an array of bytes.
-//              * If the buffer allows blocking writes, this method will block 
until
-//              * all the data has been written rather than throw an 
IOException.
-//              *
-//              * @param cbuf Array of bytes
-//              * @param off Offset from which to start writing bytes
-//              * @param len - Number of bytes to write
-//              * @throws BufferOverflowException if buffer does not allow 
blocking writes
-//              *   and the buffer is full.  If the exception is thrown, no 
data
-//              *   will have been written since the buffer was set to be 
non-blocking.
-//              * @throws IOException if the stream is closed, or the write is 
interrupted.
-//              *
-//              * @since ostermillerutils 1.00.00
-//              */
-//             @Override public void write(byte[] cbuf, int off, int len) 
throws IOException {
-//                     while (len > 0){
-//                             synchronized (CircularByteBuffer.this){
-//                                     if (outputStreamClosed) throw new 
IOException("OutputStream has been closed; cannot write to a closed 
OutputStream.");
-//                                     if (inputStreamClosed) throw new 
IOException("Buffer closed by InputStream; cannot write to a closed buffer.");
-//                                     int spaceLeft = spaceLeft();
-//                                     while (infinite && spaceLeft < len){
-//                                             resize();
-//                                             spaceLeft = spaceLeft();
-//                                     }
-//                                     if (!blockingWrite && spaceLeft < len) 
throw new BufferOverflowException();
-//                                     int realLen = Math.min(len, spaceLeft);
-//                                     int firstLen = Math.min(realLen, 
buffer.length - writePosition);
-//                                     int secondLen = Math.min(realLen - 
firstLen, buffer.length - markPosition - 1);
-//                                     int written = firstLen + secondLen;
-//                                     if (firstLen > 0){
-//                                             System.arraycopy(cbuf, off, 
buffer, writePosition, firstLen);
-//                                     }
-//                                     if (secondLen > 0){
-//                                             System.arraycopy(cbuf, 
off+firstLen, buffer, 0, secondLen);
-//                                             writePosition = secondLen;
-//                                     } else {
-//                                             writePosition += written;
-//                                     }
-//                                     if (writePosition == buffer.length) {
-//                                             writePosition = 0;
-//                                     }
-//                                     off += written;
-//                                     len -= written;
-//                             }
-//                             if (len > 0){
-//                                     try {
-//                                             Thread.sleep(100);
-//                                     } catch(Exception x){
-//                                             throw new IOException("Waiting 
for available space in buffer interrupted.");
-//                                     }
-//                             }
-//                     }
-//             }
-//
-//             /**
-//              * Write a single byte.
-//              * The byte to be written is contained in the 8 low-order bits 
of the
-//              * given integer value; the 24 high-order bits are ignored.
-//              * If the buffer allows blocking writes, this method will block 
until
-//              * all the data has been written rather than throw an 
IOException.
-//              *
-//              * @param c number of bytes to be written
-//              * @throws BufferOverflowException if buffer does not allow 
blocking writes
-//              *   and the buffer is full.
-//              * @throws IOException if the stream is closed, or the write is 
interrupted.
-//              *
-//              * @since ostermillerutils 1.00.00
-//              */
-//             @Override public void write(int c) throws IOException {
-//                     boolean written = false;
-//                     while (!written){
-//                             synchronized (CircularByteBuffer.this){
-//                                     if (outputStreamClosed) throw new 
IOException("OutputStream has been closed; cannot write to a closed 
OutputStream.");
-//                                     if (inputStreamClosed) throw new 
IOException("Buffer closed by InputStream; cannot write to a closed buffer.");
-//                                     int spaceLeft = spaceLeft();
-//                                     while (infinite && spaceLeft < 1){
-//                                             resize();
-//                                             spaceLeft = spaceLeft();
-//                                     }
-//                                     if (!blockingWrite && spaceLeft < 1) 
throw new BufferOverflowException();
-//                                     if (spaceLeft > 0){
-//                                             buffer[writePosition] = 
(byte)(c & 0xff);
-//                                             writePosition++;
-//                                             if (writePosition == 
buffer.length) {
-//                                                     writePosition = 0;
-//                                             }
-//                                             written = true;
-//                                     }
-//                             }
-//                             if (!written){
-//                                     try {
-//                                             Thread.sleep(100);
-//                                     } catch(Exception x){
-//                                             throw new IOException("Waiting 
for available space in buffer interrupted.");
-//                                     }
-//                             }
-//                     }
-//             }
-//     }
-//}

http://git-wip-us.apache.org/repos/asf/airavata/blob/13c2e79e/tools/gsissh/src/main/java/edu/illinois/ncsa/BCGSS/GlobusTlsCipherFactory.java
----------------------------------------------------------------------
diff --git 
a/tools/gsissh/src/main/java/edu/illinois/ncsa/BCGSS/GlobusTlsCipherFactory.java
 
b/tools/gsissh/src/main/java/edu/illinois/ncsa/BCGSS/GlobusTlsCipherFactory.java
deleted file mode 100644
index 18d282a..0000000
--- 
a/tools/gsissh/src/main/java/edu/illinois/ncsa/BCGSS/GlobusTlsCipherFactory.java
+++ /dev/null
@@ -1,63 +0,0 @@
-///*
-// *
-// * Licensed to the Apache Software Foundation (ASF) under one
-// * or more contributor license agreements.  See the NOTICE file
-// * distributed with this work for additional information
-// * regarding copyright ownership.  The ASF licenses this file
-// * to you under the Apache License, Version 2.0 (the
-// * "License"); you may not use this file except in compliance
-// * with the License.  You may obtain a copy of the License at
-// *
-// *   http://www.apache.org/licenses/LICENSE-2.0
-// *
-// * Unless required by applicable law or agreed to in writing,
-// * software distributed under the License is distributed on an
-// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// * KIND, either express or implied.  See the License for the
-// * specific language governing permissions and limitations
-// * under the License.
-// *
-// */
-//
-//package edu.illinois.ncsa.BCGSS;
-//
-//import edu.illinois.ncsa.bouncycastle.crypto.Digest;
-//import edu.illinois.ncsa.bouncycastle.crypto.tls.AlertDescription;
-//import edu.illinois.ncsa.bouncycastle.crypto.tls.DefaultTlsCipherFactory;
-//import edu.illinois.ncsa.bouncycastle.crypto.tls.TlsBlockCipher;
-//import edu.illinois.ncsa.bouncycastle.crypto.tls.TlsCipher;
-//import edu.illinois.ncsa.bouncycastle.crypto.tls.TlsClientContext;
-//import edu.illinois.ncsa.bouncycastle.crypto.tls.TlsFatalAlert;
-//
-//import java.io.IOException;
-//
-//public class GlobusTlsCipherFactory extends DefaultTlsCipherFactory {
-//    protected TlsBlockCipher tlsBlockCipher;
-//    protected Digest digest;
-//
-//    public TlsBlockCipher getTlsBlockCipher() {
-//        return tlsBlockCipher;
-//    }
-//
-//    public Digest getDigest() {
-//        return digest;
-//    }
-//
-//    public TlsCipher createCipher(TlsClientContext context,
-//                                     int encAlg, int digestAlg)
-//            throws IOException {
-//        TlsCipher cipher = super.createCipher(context, encAlg, digestAlg);
-//        if (cipher instanceof TlsBlockCipher) {
-//            tlsBlockCipher = (TlsBlockCipher) cipher;
-//        } else {
-//            throw new TlsFatalAlert(AlertDescription.internal_error);
-//        }
-//
-//        return cipher;
-//    }
-//
-//    protected Digest createDigest(int digestAlgorithm) throws IOException {
-//        digest = super.createDigest(digestAlgorithm);
-//        return digest;
-//    }
-//}

Reply via email to