Crypt-MatrixSSL
view release on metacpan or search on metacpan
matrixssl-1-8-6-open/src/matrixInternal.h view on Meta::CPAN
unsigned char seq[8];
unsigned char remSeq[8];
#ifdef USE_CLIENT_SIDE_SSL
sslRsaCert_t *cert;
int32 (*validateCert)(sslCertInfo_t *certInfo, void *arg);
void *validateCertArg;
int32 certMatch;
#endif /* USE_CLIENT_SIDE_SSL */
sslMd5Context_t msgHashMd5;
sslSha1Context_t msgHashSha1;
sslCipherContext_t encryptCtx;
sslCipherContext_t decryptCtx;
int32 anon;
} sslSec_t;
typedef struct {
uint32 id;
unsigned char macSize;
unsigned char keySize;
unsigned char ivSize;
unsigned char blockSize;
/* Init function */
int32 (*init)(sslSec_t *sec, int32 type);
/* Cipher functions */
int32 (*encrypt)(sslCipherContext_t *ctx, unsigned char *in,
unsigned char *out, int32 len);
int32 (*decrypt)(sslCipherContext_t *ctx, unsigned char *in,
unsigned char *out, int32 len);
int32 (*encryptPub)(psPool_t *pool, sslRsaKey_t *key,
unsigned char *in, int32 inlen,
unsigned char *out, int32 outlen);
int32 (*decryptPriv)(psPool_t *pool, sslRsaKey_t *key,
unsigned char *in, int32 inlen,
unsigned char *out, int32 outlen);
int32 (*generateMac)(void *ssl, unsigned char type, unsigned char *data,
int32 len, unsigned char *mac);
int32 (*verifyMac)(void *ssl, unsigned char type, unsigned char *data,
int32 len, unsigned char *mac);
} sslCipherSpec_t;
typedef struct ssl {
sslRec_t rec; /* Current SSL record information*/
sslSec_t sec; /* Security structure */
sslKeys_t *keys; /* SSL public and private keys */
psPool_t *pool; /* SSL session pool */
psPool_t *hsPool; /* Full session handshake pool */
unsigned char sessionIdLen;
char sessionId[SSL_MAX_SESSION_ID_SIZE];
/* Pointer to the negotiated cipher information */
sslCipherSpec_t *cipher;
/* Symmetric cipher callbacks
We duplicate these here from 'cipher' because we need to set the
various callbacks at different times in the handshake protocol
Also, there are 64 bit alignment issues in using the function pointers
within 'cipher' directly
*/
int32 (*encrypt)(sslCipherContext_t *ctx, unsigned char *in,
unsigned char *out, int32 len);
int32 (*decrypt)(sslCipherContext_t *ctx, unsigned char *in,
unsigned char *out, int32 len);
/* Public key ciphers */
int32 (*encryptPub)(psPool_t *pool, sslRsaKey_t *key,
unsigned char *in, int32 inlen,
unsigned char *out, int32 outlen);
int32 (*decryptPriv)(psPool_t *pool, sslRsaKey_t *key,
unsigned char *in, int32 inlen,
unsigned char *out, int32 outlen);
/* Message Authentication Codes */
int32 (*generateMac)(void *ssl, unsigned char type, unsigned char *data,
int32 len, unsigned char *mac);
int32 (*verifyMac)(void *ssl, unsigned char type, unsigned char *data,
int32 len, unsigned char *mac);
/* Current encryption/decryption parameters */
unsigned char enMacSize;
unsigned char enIvSize;
unsigned char enBlockSize;
unsigned char deMacSize;
unsigned char deIvSize;
unsigned char deBlockSize;
int32 flags;
int32 hsState; /* Next expected handshake message type */
int32 err; /* SSL errno of last api call */
int32 ignoredMessageCount;
unsigned char reqMajVer;
unsigned char reqMinVer;
unsigned char majVer;
unsigned char minVer;
int32 recordHeadLen;
int32 hshakeHeadLen;
} ssl_t;
typedef struct {
unsigned char id[SSL_MAX_SESSION_ID_SIZE];
unsigned char masterSecret[SSL_HS_MASTER_SIZE];
uint32 cipherId;
} sslSessionId_t;
typedef struct {
unsigned char id[SSL_MAX_SESSION_ID_SIZE];
unsigned char masterSecret[SSL_HS_MASTER_SIZE];
sslCipherSpec_t *cipher;
unsigned char majVer;
unsigned char minVer;
char flag;
sslTime_t startTime;
sslTime_t accessTime;
int32 inUse;
} sslSessionEntry_t;
/******************************************************************************/
( run in 1.117 second using v1.01-cache-2.11-cpan-39bf76dae61 )