#ifndef SqueakSSL_H
#define SqueakSSL_H
/*************************/
/* SSL connection states */
/*************************/
#define SQSSL_UNUSED 0
#define SQSSL_ACCEPTING 1
#define SQSSL_CONNECTING 2
#define SQSSL_CONNECTED 3
/********************************************/
/* Return codes from the core SSL functions */
/********************************************/
#define SQSSL_OK 0
#define SQSSL_NEED_MORE_DATA -1
#define SQSSL_INVALID_STATE -2
#define SQSSL_BUFFER_TOO_SMALL -3
#define SQSSL_INPUT_TOO_LARGE -4
#define SQSSL_GENERIC_ERROR -5
#define SQSSL_OUT_OF_MEMORY -6
/**************************************/
/* SqueakSSL certificate status bits. */
/**************************************/
#define SQSSL_NO_CERTIFICATE -1
#define SQSSL_OTHER_ISSUE 0x0001
#define SQSSL_UNTRUSTED_ROOT 0x0002
#define SQSSL_CERT_EXPIRED 0x0004
#define SQSSL_WRONG_USAGE 0x0008
#define SQSSL_INVALID_CN 0x0010
#define SQSSL_CERT_REVOKED 0x0020
/****************************************/
/* SqueakSSL getInt/setInt property IDs */
/****************************************/
#define SQSSL_PROP_VERSION 0
#define SQSSL_PROP_LOGLEVEL 1
#define SQSSL_PROP_SSLSTATE 2
#define SQSSL_PROP_CERTSTATE 3
/**********************************************/
/* SqueakSSL getString/setString property IDs */
/**********************************************/
#define SQSSL_PROP_PEERNAME 0
#define SQSSL_PROP_CERTNAME 1
/* sqCreateSSL: Creates a new SSL instance.
Arguments: None.
Returns: SSL handle.
*/
sqInt sqCreateSSL(void);
/* sqDestroySSL: Destroys an SSL instance.
Arguments:
handle - the SSL handle
Returns: Non-zero if successful.
*/
sqInt sqDestroySSL(sqInt handle);
/* sqAcceptSSL: Start/continue an SSL server handshake.
Arguments:
handle - the SSL handle
srcBuf - the input token sent by the remote peer
srcLen - the size of the input token
dstBuf - the output buffer for a new token
dstLen - the size of the output buffer
Returns: The size of the output token or an error code.
*/
sqInt sqAcceptSSL(sqInt handle, char* srcBuf, sqInt srcLen, char *dstBuf, sqInt dstLen);
/* sqConnectSSL: Start/continue an SSL client handshake.
Arguments:
handle - the SSL handle
srcBuf - the input token sent by the remote peer
srcLen - the size of the input token
dstBuf - the output buffer for a new token
dstLen - the size of the output buffer
Returns: The size of the output token or an error code.
*/
sqInt sqConnectSSL(sqInt handle, char* srcBuf, sqInt srcLen, char *dstBuf, sqInt dstLen);
/* sqEncryptSSL: Encrypt data for SSL transmission.
Arguments:
handle - the SSL handle
srcBuf - the unencrypted input data
srcLen - the size of the input data
dstBuf - the output buffer for the encrypted contents
dstLen - the size of the output buffer
Returns: The size of the output generated or an error code.
*/
sqInt sqEncryptSSL(sqInt handle, char* srcBuf, sqInt srcLen, char *dstBuf, sqInt dstLen);
/* sqDecryptSSL: Decrypt data for SSL transmission.
Arguments:
handle - the SSL handle
srcBuf - the encrypted input data
srcLen - the size of the input data
dstBuf - the output buffer for the decrypted contents
dstLen - the size of the output buffer
Returns: The size of the output generated or an error code.
*/
sqInt sqDecryptSSL(sqInt handle, char* srcBuf, sqInt srcLen, char *dstBuf, sqInt dstLen);
/* sqGetStringPropertySSL: Retrieve a string property from SSL.
Arguments:
handle - the ssl handle
propID - the property id to retrieve
Returns: The string value of the property.
*/
char* sqGetStringPropertySSL(sqInt handle, int propID);
/* sqSetStringPropertySSL: Set a string property in SSL.
Arguments:
handle - the ssl handle
propID - the property id to retrieve
propName - the property string
propLen - the length of the property string
Returns: Non-zero if successful.
*/
sqInt sqSetStringPropertySSL(sqInt handle, int propID, char *propName, sqInt propLen);
/* sqGetIntPropertySSL: Retrieve an integer property from SSL.
Arguments:
handle - the ssl handle
propID - the property id to retrieve
Returns: The integer value of the property.
*/
sqInt sqGetIntPropertySSL(sqInt handle, sqInt propID);
/* sqSetIntPropertySSL: Set an integer property in SSL.
Arguments:
handle - the ssl handle
propID - the property id to retrieve
propValue - the property value
Returns: Non-zero if successful.
*/
sqInt sqSetIntPropertySSL(sqInt handle, sqInt propID, sqInt propValue);
#endif
|