Annotation of embedaddon/axTLS/bindings/java/SSL.java, revision 1.1.1.1
1.1 misho 1: /*
2: * Copyright (c) 2007, Cameron Rich
3: *
4: * All rights reserved.
5: *
6: * Redistribution and use in source and binary forms, with or without
7: * modification, are permitted provided that the following conditions are met:
8: *
9: * * Redistributions of source code must retain the above copyright notice,
10: * this list of conditions and the following disclaimer.
11: * * Redistributions in binary form must reproduce the above copyright notice,
12: * this list of conditions and the following disclaimer in the documentation
13: * and/or other materials provided with the distribution.
14: * * Neither the name of the axTLS project nor the names of its contributors
15: * may be used to endorse or promote products derived from this software
16: * without specific prior written permission.
17: *
18: * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19: * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20: * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
21: * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
22: * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
23: * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
24: * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
25: * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
26: * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
27: * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
28: * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29: */
30:
31: /*
32: * A wrapper around the unmanaged interface to give a semi-decent Java API
33: */
34:
35: package axTLSj;
36:
37: import java.io.*;
38: import java.util.*;
39:
40: /**
41: * @defgroup java_api Java API.
42: *
43: * Ensure that the appropriate dispose() methods are called when finished with
44: * various objects - otherwise memory leaks will result.
45: */
46:
47: /**
48: * @class SSL
49: * @ingroup java_api
50: * @brief A representation of an SSL connection.
51: *
52: */
53: public class SSL
54: {
55: public int m_ssl; /**< A pointer to the real SSL type */
56:
57: /**
58: * @brief Store the reference to an SSL context.
59: * @param ip [in] A reference to an SSL object.
60: */
61: public SSL(int ip)
62: {
63: m_ssl = ip;
64: }
65:
66: /**
67: * @brief Free any used resources on this connection.
68: *
69: * A "Close Notify" message is sent on this connection (if possible). It
70: * is up to the application to close the socket.
71: */
72: public void dispose()
73: {
74: axtlsj.ssl_free(m_ssl);
75: }
76:
77: /**
78: * @brief Return the result of a handshake.
79: * @return SSL_OK if the handshake is complete and ok.
80: * @see ssl.h for the error code list.
81: */
82: public int handshakeStatus()
83: {
84: return axtlsj.ssl_handshake_status(m_ssl);
85: }
86:
87: /**
88: * @brief Return the SSL cipher id.
89: * @return The cipher id which is one of:
90: * - SSL_AES128_SHA (0x2f)
91: * - SSL_AES256_SHA (0x35)
92: * - SSL_RC4_128_SHA (0x05)
93: * - SSL_RC4_128_MD5 (0x04)
94: */
95: public byte getCipherId()
96: {
97: return axtlsj.ssl_get_cipher_id(m_ssl);
98: }
99:
100: /**
101: * @brief Get the session id for a handshake.
102: *
103: * This will be a 32 byte sequence and is available after the first
104: * handshaking messages are sent.
105: * @return The session id as a 32 byte sequence.
106: * @note A SSLv23 handshake may have only 16 valid bytes.
107: */
108: public byte[] getSessionId()
109: {
110: return axtlsj.ssl_get_session_id(m_ssl);
111: }
112:
113: /**
114: * @brief Retrieve an X.509 distinguished name component.
115: *
116: * When a handshake is complete and a certificate has been exchanged,
117: * then the details of the remote certificate can be retrieved.
118: *
119: * This will usually be used by a client to check that the server's common
120: * name matches the URL.
121: *
122: * A full handshake needs to occur for this call to work.
123: *
124: * @param component [in] one of:
125: * - SSL_X509_CERT_COMMON_NAME
126: * - SSL_X509_CERT_ORGANIZATION
127: * - SSL_X509_CERT_ORGANIZATIONAL_NAME
128: * - SSL_X509_CA_CERT_COMMON_NAME
129: * - SSL_X509_CA_CERT_ORGANIZATION
130: * - SSL_X509_CA_CERT_ORGANIZATIONAL_NAME
131: * @return The appropriate string (or null if not defined)
132: */
133: public String getCertificateDN(int component)
134: {
135: return axtlsj.ssl_get_cert_dn(m_ssl, component);
136: }
137: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>