SEP Profile
1. Add session cache index to CYASSL structure. 2. Add accessor for cache index in CYASSL structure. 3. Add copy function for session cache item.
This commit is contained in:
parent
505b1a8a67
commit
1357cdb0e4
@ -1823,6 +1823,9 @@ struct CYASSL {
|
||||
#endif
|
||||
#ifdef HAVE_NETX
|
||||
NetX_Ctx nxCtx; /* NetX IO Context */
|
||||
#endif
|
||||
#ifdef SESSION_INDEX
|
||||
int sessionIndex; /* Session's location in the cache. */
|
||||
#endif
|
||||
CYASSL_ALERT_HISTORY alert_history;
|
||||
};
|
||||
|
@ -247,6 +247,11 @@ CYASSL_API void CyaSSL_flush_sessions(CYASSL_CTX *ctx, long tm);
|
||||
CYASSL_API int CyaSSL_SetServerID(CYASSL* ssl, const unsigned char*,
|
||||
int, int);
|
||||
|
||||
#ifdef SESSION_INDEX
|
||||
CYASSL_API int CyaSSL_GetSessionIndex(CYASSL* ssl);
|
||||
CYASSL_API int CyaSSL_GetSessionAtIndex(int index, CYASSL_SESSION* session);
|
||||
#endif
|
||||
|
||||
typedef int (*VerifyCallback)(int, CYASSL_X509_STORE_CTX*);
|
||||
typedef int (*pem_password_cb)(char*, int, int, void*);
|
||||
|
||||
|
34
src/ssl.c
34
src/ssl.c
@ -4532,6 +4532,9 @@ int AddSession(CYASSL* ssl)
|
||||
return BAD_MUTEX_ERROR;
|
||||
|
||||
idx = SessionCache[row].nextIdx++;
|
||||
#ifdef SESSION_INDEX
|
||||
ssl->sessionIndex = (row << 4) | idx;
|
||||
#endif
|
||||
|
||||
XMEMCPY(SessionCache[row].Sessions[idx].masterSecret,
|
||||
ssl->arrays->masterSecret, SECRET_LEN);
|
||||
@ -4587,6 +4590,37 @@ int AddSession(CYASSL* ssl)
|
||||
}
|
||||
|
||||
|
||||
#ifdef SESSION_INDEX
|
||||
int CyaSSL_GetSessionIndex(CYASSL* ssl)
|
||||
{
|
||||
return ssl->sessionIndex;
|
||||
}
|
||||
|
||||
|
||||
int CyaSSL_GetSessionAtIndex(int index, CYASSL_SESSION* session)
|
||||
{
|
||||
int row, col, result = SSL_FAILURE;
|
||||
|
||||
row = index >> 4;
|
||||
col = index & 0x0F;
|
||||
|
||||
if (LockMutex(&session_mutex) != 0)
|
||||
return BAD_MUTEX_ERROR;
|
||||
|
||||
if (row < SESSION_ROWS && col < SessionCache[row].totalCount) {
|
||||
XMEMCPY(session,
|
||||
&SessionCache[row].Sessions[col], sizeof(CYASSL_SESSION));
|
||||
result = SSL_SUCCESS;
|
||||
}
|
||||
|
||||
if (UnLockMutex(&session_mutex) != 0)
|
||||
return BAD_MUTEX_ERROR;
|
||||
|
||||
return result;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef SESSION_STATS
|
||||
|
||||
CYASSL_API
|
||||
|
Loading…
Reference in New Issue
Block a user