mirror of
https://github.com/wolfSSL/wolfssl.git
synced 2025-08-01 19:54:40 +02:00
added buffer version of CertManagerLoadCABuffer
This commit is contained in:
75
src/ssl.c
75
src/ssl.c
@@ -2801,6 +2801,60 @@ static int ProcessChainBuffer(WOLFSSL_CTX* ctx, const unsigned char* buff,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static INLINE WOLFSSL_METHOD* cm_pick_method(void)
|
||||||
|
{
|
||||||
|
#ifndef NO_WOLFSSL_CLIENT
|
||||||
|
#ifdef NO_OLD_TLS
|
||||||
|
return wolfTLSv1_2_client_method();
|
||||||
|
#else
|
||||||
|
return wolfSSLv3_client_method();
|
||||||
|
#endif
|
||||||
|
#elif !defined(NO_WOLFSSL_SERVER)
|
||||||
|
#ifdef NO_OLD_TLS
|
||||||
|
return wolfTLSv1_2_server_method();
|
||||||
|
#else
|
||||||
|
return wolfSSLv3_server_method();
|
||||||
|
#endif
|
||||||
|
#else
|
||||||
|
return NULL;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* like load verify locations, 1 for success, < 0 for error */
|
||||||
|
int wolfSSL_CertManagerLoadCABuffer(WOLFSSL_CERT_MANAGER* cm,
|
||||||
|
const unsigned char* in, long sz, int format)
|
||||||
|
{
|
||||||
|
int ret = SSL_FATAL_ERROR;
|
||||||
|
WOLFSSL_CTX* tmp;
|
||||||
|
|
||||||
|
WOLFSSL_ENTER("wolfSSL_CertManagerLoadCABuffer");
|
||||||
|
|
||||||
|
if (cm == NULL) {
|
||||||
|
WOLFSSL_MSG("No CertManager error");
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
tmp = wolfSSL_CTX_new(cm_pick_method());
|
||||||
|
|
||||||
|
if (tmp == NULL) {
|
||||||
|
WOLFSSL_MSG("CTX new failed");
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* for tmp use */
|
||||||
|
wolfSSL_CertManagerFree(tmp->cm);
|
||||||
|
tmp->cm = cm;
|
||||||
|
|
||||||
|
ret = wolfSSL_CTX_load_verify_buffer(tmp, in, sz, format);
|
||||||
|
|
||||||
|
/* don't loose our good one */
|
||||||
|
tmp->cm = NULL;
|
||||||
|
wolfSSL_CTX_free(tmp);
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Verify the ceritficate, SSL_SUCCESS for ok, < 0 for error */
|
/* Verify the ceritficate, SSL_SUCCESS for ok, < 0 for error */
|
||||||
int wolfSSL_CertManagerVerifyBuffer(WOLFSSL_CERT_MANAGER* cm, const byte* buff,
|
int wolfSSL_CertManagerVerifyBuffer(WOLFSSL_CERT_MANAGER* cm, const byte* buff,
|
||||||
long sz, int format)
|
long sz, int format)
|
||||||
@@ -3337,26 +3391,6 @@ int wolfSSL_CertManagerVerify(WOLFSSL_CERT_MANAGER* cm, const char* fname,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static INLINE WOLFSSL_METHOD* cm_pick_method(void)
|
|
||||||
{
|
|
||||||
#ifndef NO_WOLFSSL_CLIENT
|
|
||||||
#ifdef NO_OLD_TLS
|
|
||||||
return wolfTLSv1_2_client_method();
|
|
||||||
#else
|
|
||||||
return wolfSSLv3_client_method();
|
|
||||||
#endif
|
|
||||||
#elif !defined(NO_WOLFSSL_SERVER)
|
|
||||||
#ifdef NO_OLD_TLS
|
|
||||||
return wolfTLSv1_2_server_method();
|
|
||||||
#else
|
|
||||||
return wolfSSLv3_server_method();
|
|
||||||
#endif
|
|
||||||
#else
|
|
||||||
return NULL;
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* like load verify locations, 1 for success, < 0 for error */
|
/* like load verify locations, 1 for success, < 0 for error */
|
||||||
int wolfSSL_CertManagerLoadCA(WOLFSSL_CERT_MANAGER* cm, const char* file,
|
int wolfSSL_CertManagerLoadCA(WOLFSSL_CERT_MANAGER* cm, const char* file,
|
||||||
const char* path)
|
const char* path)
|
||||||
@@ -3391,7 +3425,6 @@ int wolfSSL_CertManagerLoadCA(WOLFSSL_CERT_MANAGER* cm, const char* file,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* turn on CRL if off and compiled in, set options */
|
/* turn on CRL if off and compiled in, set options */
|
||||||
int wolfSSL_CertManagerEnableCRL(WOLFSSL_CERT_MANAGER* cm, int options)
|
int wolfSSL_CertManagerEnableCRL(WOLFSSL_CERT_MANAGER* cm, int options)
|
||||||
{
|
{
|
||||||
|
@@ -1202,6 +1202,8 @@ WOLFSSL_API void* wolfSSL_GetRsaDecCtx(WOLFSSL* ssl);
|
|||||||
|
|
||||||
WOLFSSL_API int wolfSSL_CertManagerLoadCA(WOLFSSL_CERT_MANAGER*, const char* f,
|
WOLFSSL_API int wolfSSL_CertManagerLoadCA(WOLFSSL_CERT_MANAGER*, const char* f,
|
||||||
const char* d);
|
const char* d);
|
||||||
|
WOLFSSL_API int wolfSSL_CertManagerLoadCABuffer(WOLFSSL_CERT_MANAGER*,
|
||||||
|
const unsigned char* in, long sz, int format);
|
||||||
WOLFSSL_API int wolfSSL_CertManagerUnloadCAs(WOLFSSL_CERT_MANAGER* cm);
|
WOLFSSL_API int wolfSSL_CertManagerUnloadCAs(WOLFSSL_CERT_MANAGER* cm);
|
||||||
WOLFSSL_API int wolfSSL_CertManagerVerify(WOLFSSL_CERT_MANAGER*, const char* f,
|
WOLFSSL_API int wolfSSL_CertManagerVerify(WOLFSSL_CERT_MANAGER*, const char* f,
|
||||||
int format);
|
int format);
|
||||||
|
Reference in New Issue
Block a user