/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

struct _ssl_session
struct _ssl_context

Defines

#define XYSSL_ERR_SSL_INVALID_MAC -0x2000
#define SSL_IS_CLIENT 0
#define SSL_IS_SERVER 1
#define SSL_VERIFY_NONE 0
#define SSL_MAX_CONTENT_LEN 16384
#define SSL_BUFFER_LEN (SSL_MAX_CONTENT_LEN + 512)
#define SSL_MSG_ALERT 21
#define SSL_MSG_HANDSHAKE 22
#define SSL_ALERT_FATAL 2
#define SSL_HS_CERTIFICATE 11
#define SSL_HS_FINISHED 20

Typedefs

typedef struct _ssl_session ssl_session
typedef struct _ssl_context ssl_context

Enumerations


Functions

Initialize an SSL context.
void ssl_set_endpoint (ssl_context *ssl, int endpoint)
Set the current endpoint type.
void ssl_set_authmode (ssl_context *ssl, int authmode)
Set the certificate verification mode.
void ssl_set_rng (ssl_context *ssl, int(*f_rng)(void *), void *p_rng)
Set the random number generator callback.
void ssl_set_dbg (ssl_context *ssl, void(*f_dbg)(void *, int, char *), void *p_dbg)
Set the debug callback.
void ssl_set_bio (ssl_context *ssl, int(*f_recv)(void *, unsigned char *, int), void *p_recv, int(*f_send)(void *, unsigned char *, int), void *p_send)
Set the underlying BIO read and write callbacks.
void ssl_set_scb (ssl_context *ssl, int(*s_get)(ssl_context *), int(*s_set)(ssl_context *))
Set the session callbacks (server-side only).
void ssl_set_session (ssl_context *ssl, int resume, int timeout, ssl_session *session)
Set the session resuming flag, timeout and data.
void ssl_set_ciphers (ssl_context *ssl, int *ciphers)
Set the list of allowed ciphersuites.
void ssl_set_ca_chain (ssl_context *ssl, x509_cert *ca_chain, char *peer_cn)
Set the data required to verify peer certificate.
void ssl_set_own_cert (ssl_context *ssl, x509_cert *own_cert, rsa_context *rsa_key)
Set own certificate and private key.
Set the Diffie-Hellman public P and G values, read as hexadecimal strings (server-side only).
int ssl_set_hostname (ssl_context *ssl, char *hostname)
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.
int ssl_read (ssl_context *ssl, unsigned char *buf, int len)
Read at most 'len' application data bytes.
int ssl_write (ssl_context *ssl, unsigned char *buf, int len)
Write exactly 'len' application data bytes.
Notify the peer that the connection is being closed.
void ssl_free (ssl_context *ssl)
Free an SSL context.
void ssl_calc_verify (ssl_context *ssl, unsigned char hash[36])

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

Definition at line 77 of file ssl.h.

Referenced by main().

#define SSL_EDH_RSA_DES_168_SHA 22

Definition at line 74 of file ssl.h.

Referenced by main().

#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

Definition at line 100 of file ssl.h.

#define SSL_HS_FINISHED 20

Definition at line 101 of file ssl.h.

#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_IS_CLIENT 0

Definition at line 52 of file ssl.h.

Referenced by main(), and ssl_test().

#define SSL_IS_SERVER 1

Definition at line 53 of file ssl.h.

Referenced by main(), and ssl_test().

#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.

#define SSL_MSG_ALERT 21

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

Definition at line 75 of file ssl.h.

Referenced by main().

#define SSL_RSA_AES_256_SHA 53

Definition at line 76 of file ssl.h.

Referenced by main().

#define SSL_RSA_DES_168_SHA 10

Definition at line 73 of file ssl.h.

Referenced by main().

#define SSL_RSA_RC4_128_MD5 4

Definition at line 71 of file ssl.h.

Referenced by main().

#define SSL_RSA_RC4_128_SHA 5

Definition at line 72 of file ssl.h.

Referenced by main().

#define SSL_VERIFY_NONE 0

Definition at line 56 of file ssl.h.

Referenced by main(), and ssl_test().

#define SSL_VERIFY_OPTIONAL 1

Definition at line 57 of file ssl.h.

Referenced by main().

#define SSL_VERIFY_REQUIRED 2

Definition at line 58 of file ssl.h.

#define TLS_EXT_SERVERNAME 0

Definition at line 106 of file ssl.h.

#define TLS_EXT_SERVERNAME_HOSTNAME 0

Definition at line 107 of file ssl.h.

#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

Definition at line 32 of file ssl.h.

Referenced by main(), and ssl_test().

#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

typedef struct _ssl_context ssl_context

Definition at line 134 of file ssl.h.

typedef struct _ssl_session ssl_session

Definition at line 133 of file ssl.h.


Enumeration Type Documentation

enum ssl_states

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

void ssl_calc_verify ( ssl_context * ssl,
unsigned char hash[36]
)

int ssl_close_notify ( ssl_context * ssl )

Notify the peer that the connection is being closed.

Referenced by main(), and ssl_test().

int ssl_derive_keys ( ssl_context * ssl )

int ssl_fetch_input ( ssl_context * ssl,
int nb_want
)

int ssl_flush_output ( ssl_context * ssl )

void ssl_free ( ssl_context * ssl )

Free an SSL context.

Referenced by main(), and ssl_test().

int ssl_get_bytes_avail ( ssl_context * ssl )

Return the number of data bytes available to read.

Parameters:
ssl SSL context
Returns:
how many bytes are available in the read buffer

char* ssl_get_cipher ( ssl_context * ssl )

Return the name of the current cipher.

Parameters:
ssl SSL context
Returns:
a string containing the cipher name

Referenced by main().

int ssl_get_verify_result ( ssl_context * ssl )

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().

int ssl_handshake ( ssl_context * ssl )

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().

int ssl_handshake_client ( ssl_context * ssl )

int ssl_handshake_server ( ssl_context * ssl )

int ssl_init ( ssl_context * ssl )

Initialize an SSL context.

Parameters:
ssl SSL context
Returns:
0 if successful, or 1 if memory allocation failed

Referenced by main(), and ssl_test().

int ssl_parse_certificate ( ssl_context * ssl )

int ssl_parse_change_cipher_spec ( ssl_context * ssl )

int ssl_parse_finished ( ssl_context * ssl )

int ssl_read ( ssl_context * ssl,
unsigned char * buf,
int len
)

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().

int ssl_read_record ( ssl_context * ssl )

void ssl_set_authmode ( ssl_context * ssl,
int authmode
)

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().

void ssl_set_bio ( ssl_context * ssl,
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().

void ssl_set_ca_chain ( ssl_context * ssl,
x509_cert * ca_chain,
char * peer_cn
)

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().

void ssl_set_ciphers ( ssl_context * ssl,
int * ciphers
)

Set the list of allowed ciphersuites.

Parameters:
ssl SSL context
ciphers 0-terminated list of allowed ciphers

Referenced by main(), and ssl_test().

void ssl_set_dbg ( ssl_context * ssl,
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().

int ssl_set_dh_param ( ssl_context * ssl,
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().

void ssl_set_endpoint ( ssl_context * ssl,
int endpoint
)

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().

int ssl_set_hostname ( ssl_context * ssl,
char * hostname
)

Set hostname for ServerName TLS Extension.

Parameters:
ssl SSL context
hostname the server hostname
Returns:
0 if successful

Referenced by main().

void ssl_set_own_cert ( ssl_context * ssl,
x509_cert * own_cert,
rsa_context * rsa_key
)

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().

void ssl_set_rng ( ssl_context * ssl,
int(*)(void *) f_rng,
void * p_rng
)

Set the random number generator callback.

Parameters:
ssl SSL context
f_rng RNG function
p_rng RNG parameter

Referenced by main(), and ssl_test().

void ssl_set_scb ( ssl_context * ssl,
int(*)(ssl_context *) s_get,
int(*)(ssl_context *) s_set
)

Set the session callbacks (server-side only).

Parameters:
ssl SSL context
s_get session get callback
s_set session set callback

Referenced by main().

void ssl_set_session ( ssl_context * ssl,
int resume,
int timeout,
ssl_session * session
)

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().

int ssl_write ( ssl_context * ssl,
unsigned char * buf,
int len
)

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().

int ssl_write_certificate ( ssl_context * ssl )

int ssl_write_change_cipher_spec ( ssl_context * ssl )

int ssl_write_finished ( ssl_context * ssl )

int ssl_write_record ( ssl_context * ssl )


Variable Documentation

Referenced by main(), and ssl_test().


Generated on Tue Oct 28 17:03:24 2008 for Mobile-C by doxygen 1.5.5

AltStyle によって変換されたページ (->オリジナル) /