/* Open and close the SSL module. These routines are called once in the lifetime of the application and initialize and clean up the library respectively. */ int32 matrixSslOpen(void) { /* Use copyright to avoid compiler warning about it being unused */ if (*copyright != 'C') { return PS_FAILURE; } if (psCoreOpen() < 0) { psError("pscore open failure\n"); return PS_FAILURE; } psInitPrng(&gMatrixsslPrng); #ifdef USE_SERVER_SIDE_SSL memset(sessionTable, 0x0, sizeof(sslSessionEntry_t) * SSL_SESSION_TABLE_SIZE); #ifdef USE_MULTITHREADING psCreateMutex(&sessionTableLock); psCreateMutex(&prngLock); #endif /* USE_MULTITHREADING */ #endif /* USE_SERVER_SIDE_SSL */ return PS_SUCCESS; }
/* Invoked from psCryptoOpen */ int32_t psCrlOpen() { # ifdef USE_MULTITHREADING psCreateMutex(&g_crlTableLock, 0); # endif return PS_SUCCESS; }
/* One-time global prng lock creation and prng context */ void psOpenPrng(void) { #ifdef USE_MULTITHREADING psCreateMutex(&prngLock); #endif /* NOTE: if a PRNG is enabled, the low level psGetEntropy call can't have a useful userPtr context becuase there will be no session context at this early stage */ psInitPrng(&gMatrixPrng, NULL); gPrngInit = 1; return; }