/**
SSLSocketXInt
Copyright (C) 1999, Claymore Systems, Inc.
All Rights Reserved.
ekr@rtfm.com Wed May 5 08:44:30 1999
This package is a SSLv3/TLS implementation written by Eric Rescorla
<ekr@rtfm.com> and licensed by Claymore Systems, Inc.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
3. All advertising materials mentioning features or use of this software
must display the following acknowledgement:
This product includes software developed by Claymore Systems, Inc.
4. Neither the name of Claymore Systems, Inc. nor the name of Eric
Rescorla may be used to endorse or promote products derived from this
software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
SUCH DAMAGE.
$Id: SSLSocketXInt.java,v 1.1.1.1 2003/05/09 20:36:14 gawor Exp $
*/
package COM.claymoresystems.sslg;
import java.util.Vector;
import java.io.*;
/** Extended socket functions that only apply to SSL Sockets
*/
public interface SSLSocketXInt {
public static final int CLIENT=1;
public static final int SERVER=2;
// Interrogators
/** get the cipherSuite that was negotiated on this socket
@return the cipherSuite as one of the integers defined in SSLPolicyInt
*/
public abstract int getCipherSuite() throws IOException;
/** get the certificate chain presented by the peer. This is relevant
for clients and servers if Client Authentication is being used.
@return the certificate chain as a Vector of Certificates, null if unavailable
*/
public abstract Vector getCertificateChain() throws IOException;
/** Get the policy associated with this socket
@return the policy
*/
public abstract SSLPolicyInt getPolicy();
/** Get the SessionID associated with this session */
public abstract byte[] getSessionID() throws IOException;
/** Get the version of SSL negotiated.
@return 768 (0x300) for SSLv3 or 769 (0x301) for TLSv1
*/
public int getVersion() throws IOException;
/** Renegotiate this connection using the specified policy.
This may be used (for instance) to renegotiate using client
authentication. If renegotiation is successful, this policy
becomes the current policy for this socket
@param the policy specified
@exception IOException if something goes wrong in renegotiation
*/
public abstract void renegotiate (SSLPolicyInt policy) throws IOException;
/** Send our half of the SSL close_notify handshake
@exception IOException if the close_notify alert can't be sent
*/
public abstract void sendClose() throws java.io.IOException;
/** Wait to receive a close_notify from the other side.
@param enforceFinished insist that no more data be present on the connection before the close_notify is received. This ensures that the application has read all the data that the peer sent
@exception IOException if the close_notify couldn't be read or if enforceFinished is true and more data was present.
*/
public abstract void waitForClose(boolean enforceFinished) throws
java.io.IOException;
}