/home/dko/projects/mobilec/trunk/src/security/xyssl-0.9/include/xyssl/ssl.h File Reference
#include <time.h>
#include "xyssl/net.h"
#include "xyssl/dhm.h"
#include "xyssl/rsa.h"
#include "xyssl/md5.h"
#include "xyssl/sha1.h"
#include "xyssl/x509.h"
Go to the source code of this file.
Data Structures
Defines
Typedefs
Enumerations
enum
ssl_states {
SSL_HELLO_REQUEST,
SSL_CLIENT_HELLO,
SSL_SERVER_HELLO,
SSL_SERVER_CERTIFICATE,
SSL_SERVER_KEY_EXCHANGE,
SSL_CERTIFICATE_REQUEST,
SSL_SERVER_HELLO_DONE,
SSL_CLIENT_CERTIFICATE,
SSL_CLIENT_KEY_EXCHANGE,
SSL_CERTIFICATE_VERIFY,
SSL_CLIENT_CHANGE_CIPHER_SPEC,
SSL_CLIENT_FINISHED,
SSL_SERVER_CHANGE_CIPHER_SPEC,
SSL_SERVER_FINISHED,
SSL_FLUSH_BUFFERS,
SSL_HANDSHAKE_OVER
}
Functions
Initialize an SSL context.
Set the current endpoint type.
Set the certificate verification mode.
Set the random number generator callback.
Set the debug callback.
Set the underlying BIO read and write callbacks.
Set the session callbacks (server-side only).
Set the session resuming flag, timeout and data.
Set the list of allowed ciphersuites.
Set the data required to verify peer certificate.
Set own certificate and private key.
Set the Diffie-Hellman public P and G values, read as hexadecimal strings (server-side only).
Set hostname for ServerName TLS Extension.
Return the number of data bytes available to read.
Return the result of the certificate verification.
Return the name of the current cipher.
Perform the SSL handshake.
Read at most 'len' application data bytes.
Write exactly 'len' application data bytes.
Notify the peer that the connection is being closed.
Free an SSL context.
Variables
Detailed Description
Definition in file ssl.h.
Define Documentation
#define SSL_ALERT_CLOSE_NOTIFY 0
Definition at line 87 of file ssl.h.
#define SSL_ALERT_FATAL 2
Definition at line 89 of file ssl.h.
#define SSL_ALERT_NO_CERTIFICATE 41
Definition at line 90 of file ssl.h.
#define SSL_ALERT_WARNING 1
Definition at line 88 of file ssl.h.
#define SSL_BUFFER_LEN (SSL_MAX_CONTENT_LEN + 512)
Definition at line 66 of file ssl.h.
#define SSL_COMPRESS_NULL 0
Definition at line 54 of file ssl.h.
#define SSL_EDH_RSA_AES_256_SHA 57
#define SSL_EDH_RSA_DES_168_SHA 22
#define SSL_HS_CERTIFICATE 11
Definition at line 95 of file ssl.h.
#define SSL_HS_CERTIFICATE_REQUEST 13
Definition at line 97 of file ssl.h.
#define SSL_HS_CERTIFICATE_VERIFY 15
Definition at line 99 of file ssl.h.
#define SSL_HS_CLIENT_HELLO 1
Definition at line 93 of file ssl.h.
#define SSL_HS_CLIENT_KEY_EXCHANGE 16
#define SSL_HS_FINISHED 20
#define SSL_HS_HELLO_REQUEST 0
Definition at line 92 of file ssl.h.
#define SSL_HS_SERVER_HELLO 2
Definition at line 94 of file ssl.h.
#define SSL_HS_SERVER_HELLO_DONE 14
Definition at line 98 of file ssl.h.
#define SSL_HS_SERVER_KEY_EXCHANGE 12
Definition at line 96 of file ssl.h.
#define SSL_MAJOR_VERSION_3 3
Definition at line 47 of file ssl.h.
#define SSL_MAX_CONTENT_LEN 16384
Definition at line 60 of file ssl.h.
#define SSL_MINOR_VERSION_0 0
SSL v3.0
Definition at line 48 of file ssl.h.
#define SSL_MINOR_VERSION_1 1
TLS v1.0
Definition at line 49 of file ssl.h.
#define SSL_MINOR_VERSION_2 2
TLS v1.1
Definition at line 50 of file ssl.h.
Definition at line 83 of file ssl.h.
#define SSL_MSG_APPLICATION_DATA 23
Definition at line 85 of file ssl.h.
#define SSL_MSG_CHANGE_CIPHER_SPEC 20
Definition at line 82 of file ssl.h.
#define SSL_MSG_HANDSHAKE 22
Definition at line 84 of file ssl.h.
#define SSL_RSA_AES_128_SHA 47
#define SSL_RSA_AES_256_SHA 53
#define SSL_RSA_DES_168_SHA 10
#define SSL_RSA_RC4_128_MD5 4
#define SSL_RSA_RC4_128_SHA 5
#define SSL_VERIFY_NONE 0
#define SSL_VERIFY_OPTIONAL 1
#define SSL_VERIFY_REQUIRED 2
Definition at line 58 of file ssl.h.
#define TLS_EXT_SERVERNAME 0
#define TLS_EXT_SERVERNAME_HOSTNAME 0
#define XYSSL_ERR_SSL_BAD_HS_CERTIFICATE -0xA800
Definition at line 35 of file ssl.h.
#define XYSSL_ERR_SSL_BAD_HS_CERTIFICATE_REQUEST -0xB000
Definition at line 36 of file ssl.h.
#define XYSSL_ERR_SSL_BAD_HS_CERTIFICATE_VERIFY -0xD000
Definition at line 40 of file ssl.h.
#define XYSSL_ERR_SSL_BAD_HS_CHANGE_CIPHER_SPEC -0xD800
Definition at line 41 of file ssl.h.
#define XYSSL_ERR_SSL_BAD_HS_CLIENT_HELLO -0x9800
Definition at line 33 of file ssl.h.
#define XYSSL_ERR_SSL_BAD_HS_CLIENT_KEY_EXCHANGE -0xC800
Definition at line 39 of file ssl.h.
#define XYSSL_ERR_SSL_BAD_HS_FINISHED -0xE000
Definition at line 42 of file ssl.h.
#define XYSSL_ERR_SSL_BAD_HS_SERVER_HELLO -0xA000
Definition at line 34 of file ssl.h.
#define XYSSL_ERR_SSL_BAD_HS_SERVER_HELLO_DONE -0xC000
Definition at line 38 of file ssl.h.
#define XYSSL_ERR_SSL_BAD_HS_SERVER_KEY_EXCHANGE -0xB800
Definition at line 37 of file ssl.h.
#define XYSSL_ERR_SSL_BAD_INPUT_DATA -0x1800
Definition at line 17 of file ssl.h.
#define XYSSL_ERR_SSL_CA_CHAIN_REQUIRED -0x7000
Definition at line 28 of file ssl.h.
#define XYSSL_ERR_SSL_CERTIFICATE_REQUIRED -0x6000
Definition at line 26 of file ssl.h.
#define XYSSL_ERR_SSL_CERTIFICATE_TOO_LARGE -0x5800
Definition at line 25 of file ssl.h.
#define XYSSL_ERR_SSL_FATAL_ALERT_MESSAGE -0x8000
Definition at line 30 of file ssl.h.
#define XYSSL_ERR_SSL_FEATURE_UNAVAILABLE -0x1000
Definition at line 16 of file ssl.h.
#define XYSSL_ERR_SSL_INVALID_MAC -0x2000
Definition at line 18 of file ssl.h.
#define XYSSL_ERR_SSL_INVALID_MODULUS_SIZE -0x3000
Definition at line 20 of file ssl.h.
#define XYSSL_ERR_SSL_INVALID_RECORD -0x2800
Definition at line 19 of file ssl.h.
#define XYSSL_ERR_SSL_NO_CIPHER_CHOSEN -0x4000
Definition at line 22 of file ssl.h.
#define XYSSL_ERR_SSL_NO_CLIENT_CERTIFICATE -0x5000
Definition at line 24 of file ssl.h.
#define XYSSL_ERR_SSL_NO_SESSION_FOUND -0x4800
Definition at line 23 of file ssl.h.
#define XYSSL_ERR_SSL_PEER_CLOSE_NOTIFY -0x9000
#define XYSSL_ERR_SSL_PEER_VERIFY_FAILED -0x8800
Definition at line 31 of file ssl.h.
#define XYSSL_ERR_SSL_PRIVATE_KEY_REQUIRED -0x6800
Definition at line 27 of file ssl.h.
#define XYSSL_ERR_SSL_UNEXPECTED_MESSAGE -0x7800
Definition at line 29 of file ssl.h.
#define XYSSL_ERR_SSL_UNKNOWN_CIPHER -0x3800
Definition at line 21 of file ssl.h.
Typedef Documentation
Enumeration Type Documentation
- Enumerator:
-
SSL_HELLO_REQUEST
SSL_CLIENT_HELLO
SSL_SERVER_HELLO
SSL_SERVER_CERTIFICATE
SSL_SERVER_KEY_EXCHANGE
SSL_CERTIFICATE_REQUEST
SSL_SERVER_HELLO_DONE
SSL_CLIENT_CERTIFICATE
SSL_CLIENT_KEY_EXCHANGE
SSL_CERTIFICATE_VERIFY
SSL_CLIENT_CHANGE_CIPHER_SPEC
SSL_CLIENT_FINISHED
SSL_SERVER_CHANGE_CIPHER_SPEC
SSL_SERVER_FINISHED
SSL_FLUSH_BUFFERS
SSL_HANDSHAKE_OVER
Definition at line 112 of file ssl.h.
Function Documentation
Notify the peer that the connection is being closed.
Referenced by main(), and ssl_test().
Return the number of data bytes available to read.
- Parameters:
-
ssl SSL context
- Returns:
- how many bytes are available in the read buffer
Return the name of the current cipher.
- Parameters:
-
ssl SSL context
- Returns:
- a string containing the cipher name
Referenced by main().
Return the result of the certificate verification.
- Parameters:
-
ssl SSL context
- Returns:
- 0 if successful, or a combination of: BADCERT_EXPIRED BADCERT_REVOKED BADCERT_CN_MISMATCH BADCERT_NOT_TRUSTED
Referenced by main().
Perform the SSL handshake.
- Parameters:
-
ssl SSL context
- Returns:
- 0 if successful, XYSSL_ERR_NET_TRY_AGAIN, or a specific SSL error code.
Referenced by main().
Initialize an SSL context.
- Parameters:
-
ssl SSL context
- Returns:
- 0 if successful, or 1 if memory allocation failed
Referenced by main(), and ssl_test().
Read at most 'len' application data bytes.
- Parameters:
-
ssl SSL context
buf buffer that will hold the data
len how many bytes must be read
- Returns:
- This function returns the number of bytes read, or a negative error code.
Referenced by main(), and ssl_test().
Set the certificate verification mode.
- Parameters:
-
ssl SSL context
mode can be:
SSL_VERIFY_NONE: peer certificate is not checked (default), this is insecure and SHOULD be avoided.
SSL_VERIFY_OPTIONAL: peer certificate is checked, however the handshake continues even if verification failed; ssl_get_verify_result() can be called after the handshake is complete.
SSL_VERIFY_REQUIRED: peer *must* present a valid certificate, handshake is aborted if verification failed.
Referenced by main(), and ssl_test().
int(*)(void *, unsigned char *,
int)
f_recv,
void *
p_recv,
int(*)(void *, unsigned char *,
int)
f_send,
void *
p_send
)
Set the underlying BIO read and write callbacks.
- Parameters:
-
ssl SSL context
f_recv read callback
p_recv read parameter
f_send write callback
p_send write parameter
Referenced by main(), and ssl_test().
Set the data required to verify peer certificate.
- Parameters:
-
ssl SSL context
ca_chain trusted CA chain
peer_cn expected peer CommonName (or NULL)
- Note:
- TODO: add two more parameters: depth and crl
Referenced by main(), and ssl_test().
Set the list of allowed ciphersuites.
- Parameters:
-
ssl SSL context
ciphers 0-terminated list of allowed ciphers
Referenced by main(), and ssl_test().
void(*)(void *,
int, char *)
f_dbg,
void *
p_dbg
)
Set the debug callback.
- Parameters:
-
ssl SSL context
f_dbg debug function
p_dbg debug parameter
Referenced by main(), and ssl_test().
char *
dhm_P,
char *
dhm_G
)
Set the Diffie-Hellman public P and G values, read as hexadecimal strings (server-side only).
- Parameters:
-
ssl SSL context
dhm_P Diffie-Hellman-Merkle modulus
dhm_G Diffie-Hellman-Merkle generator
- Returns:
- 0 if successful
Referenced by main(), and ssl_test().
Set the current endpoint type.
- Parameters:
-
ssl SSL context
endpoint must be SSL_IS_CLIENT or SSL_IS_SERVER
Referenced by main(), and ssl_test().
Set hostname for ServerName TLS Extension.
- Parameters:
-
ssl SSL context
hostname the server hostname
- Returns:
- 0 if successful
Referenced by main().
Set own certificate and private key.
- Parameters:
-
ssl SSL context
own_cert own public certificate
rsa_key own private RSA key
Referenced by main(), and ssl_test().
Set the random number generator callback.
- Parameters:
-
ssl SSL context
f_rng RNG function
p_rng RNG parameter
Referenced by main(), and ssl_test().
Set the session callbacks (server-side only).
- Parameters:
-
ssl SSL context
s_get session get callback
s_set session set callback
Referenced by main().
Set the session resuming flag, timeout and data.
- Parameters:
-
ssl SSL context
resume if 0 (default), the session will not be resumed
timeout session timeout in seconds, or 0 (no timeout)
session session context
Referenced by main(), and ssl_test().
Write exactly 'len' application data bytes.
- Parameters:
-
ssl SSL context
buf buffer holding the data
len how many bytes must be written
- Returns:
- This function returns the number of bytes written, or a negative error code.
- Note:
- When this function returns XYSSL_ERR_NET_TRY_AGAIN, it must be called later with the *same* arguments, until it returns a positive value.
Referenced by main(), and ssl_test().
Variable Documentation