Crypt-MatrixSSL
view release on metacpan or search on metacpan
matrixssl-1-8-6-open/src/matrixInternal.h view on Meta::CPAN
#define SSL_FLAGS_PUBLIC_SECURE 0x8
#define SSL_FLAGS_RESUMED 0x10
#define SSL_FLAGS_CLOSED 0x20
#define SSL_FLAGS_NEED_ENCODE 0x40
#define SSL_FLAGS_ERROR 0x80
#define SSL2_HEADER_LEN 2
#define SSL3_HEADER_LEN 5
#define SSL3_HANDSHAKE_HEADER_LEN 4
/*
These are defines rather than enums because we want to store them as char,
not int32 (enum size)
*/
#define SSL_RECORD_TYPE_CHANGE_CIPHER_SPEC 20
#define SSL_RECORD_TYPE_ALERT 21
#define SSL_RECORD_TYPE_HANDSHAKE 22
#define SSL_RECORD_TYPE_APPLICATION_DATA 23
#define SSL_HS_HELLO_REQUEST 0
#define SSL_HS_CLIENT_HELLO 1
#define SSL_HS_SERVER_HELLO 2
#define SSL_HS_HELLO_VERIFY_REQUEST 3
#define SSL_HS_CERTIFICATE 11
#define SSL_HS_SERVER_KEY_EXCHANGE 12
#define SSL_HS_CERTIFICATE_REQUEST 13
#define SSL_HS_SERVER_HELLO_DONE 14
#define SSL_HS_CERTIFICATE_VERIFY 15
#define SSL_HS_CLIENT_KEY_EXCHANGE 16
#define SSL_HS_FINISHED 20
#define SSL_HS_DONE 255 /* Handshake complete (internal) */
#define INIT_ENCRYPT_CIPHER 0
#define INIT_DECRYPT_CIPHER 1
#define RSA_SIGN 1
/*
Additional ssl alert value, indicating no error has ocurred.
*/
#define SSL_ALERT_NONE 255 /* No error */
#define SSL_HS_RANDOM_SIZE 32
#define SSL_HS_RSA_PREMASTER_SIZE 48
#define SSL2_MAJ_VER 2
#define SSL3_MAJ_VER 3
#define SSL3_MIN_VER 0
#define TLS_MIN_VER 1
/*
SSL cipher suite values
*/
#define SSL_NULL_WITH_NULL_NULL 0x0000
#define SSL_RSA_WITH_NULL_MD5 0x0001
#define SSL_RSA_WITH_NULL_SHA 0x0002
#define SSL_RSA_WITH_RC4_128_MD5 0x0004
#define SSL_RSA_WITH_RC4_128_SHA 0x0005
#define SSL_RSA_WITH_3DES_EDE_CBC_SHA 0x000A
/*
Maximum key block size for any defined cipher
This must be validated if new ciphers are added
Value is largest total among all cipher suites for
2*macSize + 2*keySize + 2*ivSize
*/
#define SSL_MAX_KEY_BLOCK_SIZE 2*20 + 2*24 + 2*8
/*
Master secret is 48 bytes, sessionId is 32 bytes max
*/
#define SSL_HS_MASTER_SIZE 48
#define SSL_MAX_SESSION_ID_SIZE 32
/*
Round up the given length to the correct length with SSLv3 padding
*/
#define sslRoundup018(LEN, BLOCKSIZE) \
BLOCKSIZE <= 1 ? BLOCKSIZE : (((LEN) + 8) & ~7)
/******************************************************************************/
/*
SSL record and session structures
*/
typedef struct {
unsigned short len;
unsigned char majVer;
unsigned char minVer;
unsigned char type;
unsigned char pad[3]; /* Padding for 64 bit compat */
} sslRec_t;
typedef struct {
unsigned char clientRandom[SSL_HS_RANDOM_SIZE]; /* From ClientHello */
unsigned char serverRandom[SSL_HS_RANDOM_SIZE]; /* From ServerHello */
unsigned char masterSecret[SSL_HS_MASTER_SIZE];
unsigned char *premaster; /* variable size */
int32 premasterSize;
unsigned char keyBlock[SSL_MAX_KEY_BLOCK_SIZE]; /* Storage for the next six items */
unsigned char *wMACptr;
unsigned char *rMACptr;
unsigned char *wKeyptr;
unsigned char *rKeyptr;
unsigned char *wIVptr;
unsigned char *rIVptr;
/* All maximum sizes for current cipher suites */
unsigned char writeMAC[SSL_MAX_MAC_SIZE];
unsigned char readMAC[SSL_MAX_MAC_SIZE];
unsigned char writeKey[SSL_MAX_SYM_KEY_SIZE];
unsigned char readKey[SSL_MAX_SYM_KEY_SIZE];
unsigned char writeIV[SSL_MAX_IV_SIZE];
unsigned char readIV[SSL_MAX_IV_SIZE];
unsigned char seq[8];
unsigned char remSeq[8];
( run in 0.780 second using v1.01-cache-2.11-cpan-e1769b4cff6 )