mirror of
https://github.com/wolfSSL/wolfssl.git
synced 2025-07-30 10:47:28 +02:00
Merge pull request #3738 from embhorn/cmp_layer_high
Compatibility layer API
This commit is contained in:
113
src/ssl.c
113
src/ssl.c
@ -24301,6 +24301,37 @@ WOLFSSL_X509_LOOKUP_METHOD* wolfSSL_X509_LOOKUP_file(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int wolfSSL_X509_LOOKUP_ctrl(WOLFSSL_X509_LOOKUP *ctx, int cmd,
|
||||||
|
const char *argc, long argl, char **ret)
|
||||||
|
{
|
||||||
|
/* control commands:
|
||||||
|
* X509_L_FILE_LOAD, X509_L_ADD_DIR, X509_L_ADD_STORE, X509_L_LOAD_STORE
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* returns -1 if the X509_LOOKUP doesn't have an associated X509_LOOKUP_METHOD */
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if (ctx != NULL) {
|
||||||
|
switch (cmd) {
|
||||||
|
case WOLFSSL_X509_L_FILE_LOAD:
|
||||||
|
case WOLFSSL_X509_L_ADD_DIR:
|
||||||
|
case WOLFSSL_X509_L_ADD_STORE:
|
||||||
|
case WOLFSSL_X509_L_LOAD_STORE:
|
||||||
|
return WOLFSSL_SUCCESS;
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
(void)argc; (void)argl; (void)ret;
|
||||||
|
|
||||||
|
return WOLFSSL_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
WOLFSSL_X509_LOOKUP* wolfSSL_X509_STORE_add_lookup(WOLFSSL_X509_STORE* store,
|
WOLFSSL_X509_LOOKUP* wolfSSL_X509_STORE_add_lookup(WOLFSSL_X509_STORE* store,
|
||||||
WOLFSSL_X509_LOOKUP_METHOD* m)
|
WOLFSSL_X509_LOOKUP_METHOD* m)
|
||||||
{
|
{
|
||||||
@ -25331,10 +25362,26 @@ void wolfSSL_X509_STORE_CTX_free(WOLFSSL_X509_STORE_CTX* ctx)
|
|||||||
|
|
||||||
void wolfSSL_X509_STORE_CTX_cleanup(WOLFSSL_X509_STORE_CTX* ctx)
|
void wolfSSL_X509_STORE_CTX_cleanup(WOLFSSL_X509_STORE_CTX* ctx)
|
||||||
{
|
{
|
||||||
(void)ctx;
|
if (ctx != NULL) {
|
||||||
/* Do nothing */
|
#ifdef OPENSSL_EXTRA
|
||||||
|
if (ctx->param != NULL){
|
||||||
|
XFREE(ctx->param,NULL,DYNAMIC_TYPE_OPENSSL);
|
||||||
|
ctx->param = NULL;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
wolfSSL_X509_STORE_CTX_init(ctx, NULL, NULL, NULL);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void wolfSSL_X509_STORE_CTX_trusted_stack(WOLFSSL_X509_STORE_CTX *ctx, WOLF_STACK_OF(WOLFSSL_X509) *sk)
|
||||||
|
{
|
||||||
|
if (ctx != NULL) {
|
||||||
|
ctx->chain = sk;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Returns corresponding X509 error from internal ASN error <e> */
|
/* Returns corresponding X509 error from internal ASN error <e> */
|
||||||
static int GetX509Error(int e)
|
static int GetX509Error(int e)
|
||||||
{
|
{
|
||||||
@ -25746,6 +25793,68 @@ char* wolfSSL_CONF_get1_default_config_file(void)
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
WOLFSSL_X509_VERIFY_PARAM* wolfSSL_X509_VERIFY_PARAM_new(void)
|
||||||
|
{
|
||||||
|
WOLFSSL_X509_VERIFY_PARAM *param = NULL;
|
||||||
|
param = (WOLFSSL_X509_VERIFY_PARAM*)XMALLOC(
|
||||||
|
sizeof(WOLFSSL_X509_VERIFY_PARAM), NULL, DYNAMIC_TYPE_OPENSSL);
|
||||||
|
if (param != NULL)
|
||||||
|
XMEMSET(param, 0, sizeof(WOLFSSL_X509_VERIFY_PARAM ));
|
||||||
|
|
||||||
|
return(param);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void wolfSSL_X509_VERIFY_PARAM_free(WOLFSSL_X509_VERIFY_PARAM *param)
|
||||||
|
{
|
||||||
|
if (param != NULL)
|
||||||
|
XFREE(param, NULL, DYNAMIC_TYPE_OPENSSL);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Sets flags by OR'ing with existing value. */
|
||||||
|
int wolfSSL_X509_VERIFY_PARAM_set_flags(WOLFSSL_X509_VERIFY_PARAM *param,
|
||||||
|
unsigned long flags)
|
||||||
|
{
|
||||||
|
int ret = WOLFSSL_FAILURE;
|
||||||
|
|
||||||
|
if (param != NULL) {
|
||||||
|
param->flags |= flags;
|
||||||
|
ret = WOLFSSL_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int wolfSSL_X509_VERIFY_PARAM_get_flags(WOLFSSL_X509_VERIFY_PARAM *param)
|
||||||
|
{
|
||||||
|
int ret = 0;
|
||||||
|
|
||||||
|
if (param != NULL) {
|
||||||
|
ret = (int)param->flags;
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int wolfSSL_X509_VERIFY_PARAM_clear_flags(WOLFSSL_X509_VERIFY_PARAM *param,
|
||||||
|
unsigned long flags)
|
||||||
|
{
|
||||||
|
int ret = WOLFSSL_FAILURE;
|
||||||
|
|
||||||
|
if (param != NULL) {
|
||||||
|
param->flags &= ~flags;
|
||||||
|
ret = WOLFSSL_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
* wolfSSL_X509_VERIFY_PARAM_set1_host - sets the DNS hostname to name
|
* wolfSSL_X509_VERIFY_PARAM_set1_host - sets the DNS hostname to name
|
||||||
* hostnames is cleared if name is NULL or empty.
|
* hostnames is cleared if name is NULL or empty.
|
||||||
|
20
tests/api.c
20
tests/api.c
@ -29793,11 +29793,7 @@ static void test_wolfSSL_X509_VERIFY_PARAM(void)
|
|||||||
|
|
||||||
printf(testingFmt, "wolfSSL_X509()");
|
printf(testingFmt, "wolfSSL_X509()");
|
||||||
|
|
||||||
/* Initializer function is not ported */
|
param = wolfSSL_X509_VERIFY_PARAM_new();
|
||||||
/* param = wolfSSL_X509_VERIFY_PARAM_new(); */
|
|
||||||
|
|
||||||
param = (WOLFSSL_X509_VERIFY_PARAM *)XMALLOC(
|
|
||||||
sizeof(WOLFSSL_X509_VERIFY_PARAM), NULL, DYNAMIC_TYPE_OPENSSL);
|
|
||||||
AssertNotNull(param);
|
AssertNotNull(param);
|
||||||
|
|
||||||
XMEMSET(param, 0, sizeof(WOLFSSL_X509_VERIFY_PARAM ));
|
XMEMSET(param, 0, sizeof(WOLFSSL_X509_VERIFY_PARAM ));
|
||||||
@ -29821,7 +29817,19 @@ static void test_wolfSSL_X509_VERIFY_PARAM(void)
|
|||||||
AssertIntEQ(1, ret);
|
AssertIntEQ(1, ret);
|
||||||
AssertIntEQ(0, XSTRNCMP(param->ipasc, testIPv6, WOLFSSL_MAX_IPSTR));
|
AssertIntEQ(0, XSTRNCMP(param->ipasc, testIPv6, WOLFSSL_MAX_IPSTR));
|
||||||
|
|
||||||
XFREE(param, NULL, DYNAMIC_TYPE_OPENSSL);
|
ret = wolfSSL_X509_VERIFY_PARAM_set_flags(param, WOLFSSL_CRL_CHECKALL);
|
||||||
|
AssertIntEQ(1, ret);
|
||||||
|
|
||||||
|
ret = wolfSSL_X509_VERIFY_PARAM_get_flags(param);
|
||||||
|
AssertIntEQ(WOLFSSL_CRL_CHECKALL, ret);
|
||||||
|
|
||||||
|
ret = wolfSSL_X509_VERIFY_PARAM_clear_flags(param, WOLFSSL_CRL_CHECKALL);
|
||||||
|
AssertIntEQ(1, ret);
|
||||||
|
|
||||||
|
ret = wolfSSL_X509_VERIFY_PARAM_get_flags(param);
|
||||||
|
AssertIntEQ(0, ret);
|
||||||
|
|
||||||
|
wolfSSL_X509_VERIFY_PARAM_free(param);
|
||||||
|
|
||||||
printf(resultFmt, passed);
|
printf(resultFmt, passed);
|
||||||
|
|
||||||
|
@ -112,6 +112,11 @@ typedef WOLFSSL_BUF_MEM BUF_MEM;
|
|||||||
typedef WOLFSSL_GENERAL_NAMES GENERAL_NAMES;
|
typedef WOLFSSL_GENERAL_NAMES GENERAL_NAMES;
|
||||||
typedef WOLFSSL_GENERAL_NAME GENERAL_NAME;
|
typedef WOLFSSL_GENERAL_NAME GENERAL_NAME;
|
||||||
|
|
||||||
|
#define X509_L_FILE_LOAD WOLFSSL_X509_L_FILE_LOAD
|
||||||
|
#define X509_L_ADD_DIR WOLFSSL_X509_L_ADD_DIR
|
||||||
|
#define X509_L_ADD_STORE WOLFSSL_X509_L_ADD_STORE
|
||||||
|
#define X509_L_LOAD_STORE WOLFSSL_X509_L_LOAD_STORE
|
||||||
|
|
||||||
#define ASN1_UTCTIME WOLFSSL_ASN1_TIME
|
#define ASN1_UTCTIME WOLFSSL_ASN1_TIME
|
||||||
#define ASN1_GENERALIZEDTIME WOLFSSL_ASN1_TIME
|
#define ASN1_GENERALIZEDTIME WOLFSSL_ASN1_TIME
|
||||||
|
|
||||||
@ -569,6 +574,7 @@ typedef WOLFSSL_X509_NAME_ENTRY X509_NAME_ENTRY;
|
|||||||
wolfSSL_X509_STORE_CTX_get0_current_issuer
|
wolfSSL_X509_STORE_CTX_get0_current_issuer
|
||||||
#define X509_STORE_CTX_get0_store wolfSSL_X509_STORE_CTX_get0_store
|
#define X509_STORE_CTX_get0_store wolfSSL_X509_STORE_CTX_get0_store
|
||||||
#define X509_STORE_CTX_get0_cert wolfSSL_X509_STORE_CTX_get0_cert
|
#define X509_STORE_CTX_get0_cert wolfSSL_X509_STORE_CTX_get0_cert
|
||||||
|
#define X509_STORE_CTX_trusted_stack wolfSSL_X509_STORE_CTX_trusted_stack
|
||||||
|
|
||||||
#define X509_STORE_set_verify_cb(s, c) \
|
#define X509_STORE_set_verify_cb(s, c) \
|
||||||
wolfSSL_X509_STORE_set_verify_cb((WOLFSSL_X509_STORE *)(s), (WOLFSSL_X509_STORE_CTX_verify_cb)(c))
|
wolfSSL_X509_STORE_set_verify_cb((WOLFSSL_X509_STORE *)(s), (WOLFSSL_X509_STORE_CTX_verify_cb)(c))
|
||||||
@ -586,6 +592,11 @@ wolfSSL_X509_STORE_set_verify_cb((WOLFSSL_X509_STORE *)(s), (WOLFSSL_X509_STORE_
|
|||||||
#define X509_STORE_get_by_subject wolfSSL_X509_STORE_get_by_subject
|
#define X509_STORE_get_by_subject wolfSSL_X509_STORE_get_by_subject
|
||||||
#define X509_STORE_CTX_get1_issuer wolfSSL_X509_STORE_CTX_get1_issuer
|
#define X509_STORE_CTX_get1_issuer wolfSSL_X509_STORE_CTX_get1_issuer
|
||||||
#define X509_STORE_CTX_set_time wolfSSL_X509_STORE_CTX_set_time
|
#define X509_STORE_CTX_set_time wolfSSL_X509_STORE_CTX_set_time
|
||||||
|
#define X509_VERIFY_PARAM_new wolfSSL_X509_VERIFY_PARAM_new
|
||||||
|
#define X509_VERIFY_PARAM_free wolfSSL_X509_VERIFY_PARAM_free
|
||||||
|
#define X509_VERIFY_PARAM_set_flags wolfSSL_X509_VERIFY_PARAM_set_flags
|
||||||
|
#define X509_VERIFY_PARAM_get_flags wolfSSL_X509_VERIFY_PARAM_get_flags
|
||||||
|
#define X509_VERIFY_PARAM_clear_flags wolfSSL_X509_VERIFY_PARAM_clear_flags
|
||||||
#define X509_VERIFY_PARAM_set_hostflags wolfSSL_X509_VERIFY_PARAM_set_hostflags
|
#define X509_VERIFY_PARAM_set_hostflags wolfSSL_X509_VERIFY_PARAM_set_hostflags
|
||||||
#define X509_VERIFY_PARAM_set1_host wolfSSL_X509_VERIFY_PARAM_set1_host
|
#define X509_VERIFY_PARAM_set1_host wolfSSL_X509_VERIFY_PARAM_set1_host
|
||||||
#define X509_VERIFY_PARAM_set1_ip_asc wolfSSL_X509_VERIFY_PARAM_set1_ip_asc
|
#define X509_VERIFY_PARAM_set1_ip_asc wolfSSL_X509_VERIFY_PARAM_set1_ip_asc
|
||||||
@ -595,6 +606,7 @@ wolfSSL_X509_STORE_set_verify_cb((WOLFSSL_X509_STORE *)(s), (WOLFSSL_X509_STORE_
|
|||||||
#define X509_LOOKUP_load_file wolfSSL_X509_LOOKUP_load_file
|
#define X509_LOOKUP_load_file wolfSSL_X509_LOOKUP_load_file
|
||||||
#define X509_LOOKUP_hash_dir wolfSSL_X509_LOOKUP_hash_dir
|
#define X509_LOOKUP_hash_dir wolfSSL_X509_LOOKUP_hash_dir
|
||||||
#define X509_LOOKUP_file wolfSSL_X509_LOOKUP_file
|
#define X509_LOOKUP_file wolfSSL_X509_LOOKUP_file
|
||||||
|
#define X509_LOOKUP_ctrl wolfSSL_X509_LOOKUP_ctrl
|
||||||
|
|
||||||
#define d2i_X509_CRL wolfSSL_d2i_X509_CRL
|
#define d2i_X509_CRL wolfSSL_d2i_X509_CRL
|
||||||
#define d2i_X509_CRL_fp wolfSSL_d2i_X509_CRL_fp
|
#define d2i_X509_CRL_fp wolfSSL_d2i_X509_CRL_fp
|
||||||
|
@ -520,6 +520,11 @@ typedef struct WOLFSSL_COMP {
|
|||||||
WOLFSSL_COMP_METHOD *method;
|
WOLFSSL_COMP_METHOD *method;
|
||||||
} WOLFSSL_COMP;
|
} WOLFSSL_COMP;
|
||||||
|
|
||||||
|
#define WOLFSSL_X509_L_FILE_LOAD 0x1
|
||||||
|
#define WOLFSSL_X509_L_ADD_DIR 0x2
|
||||||
|
#define WOLFSSL_X509_L_ADD_STORE 0x3
|
||||||
|
#define WOLFSSL_X509_L_LOAD_STORE 0x4
|
||||||
|
|
||||||
struct WOLFSSL_X509_LOOKUP_METHOD {
|
struct WOLFSSL_X509_LOOKUP_METHOD {
|
||||||
int type;
|
int type;
|
||||||
};
|
};
|
||||||
@ -1449,6 +1454,8 @@ WOLFSSL_API int wolfSSL_X509_LOOKUP_load_file(WOLFSSL_X509_LOOKUP*, const char*,
|
|||||||
long);
|
long);
|
||||||
WOLFSSL_API WOLFSSL_X509_LOOKUP_METHOD* wolfSSL_X509_LOOKUP_hash_dir(void);
|
WOLFSSL_API WOLFSSL_X509_LOOKUP_METHOD* wolfSSL_X509_LOOKUP_hash_dir(void);
|
||||||
WOLFSSL_API WOLFSSL_X509_LOOKUP_METHOD* wolfSSL_X509_LOOKUP_file(void);
|
WOLFSSL_API WOLFSSL_X509_LOOKUP_METHOD* wolfSSL_X509_LOOKUP_file(void);
|
||||||
|
WOLFSSL_API int wolfSSL_X509_LOOKUP_ctrl(WOLFSSL_X509_LOOKUP *ctx, int cmd,
|
||||||
|
const char *argc, long argl, char **ret);
|
||||||
|
|
||||||
WOLFSSL_API WOLFSSL_X509_LOOKUP* wolfSSL_X509_STORE_add_lookup(WOLFSSL_X509_STORE*,
|
WOLFSSL_API WOLFSSL_X509_LOOKUP* wolfSSL_X509_STORE_add_lookup(WOLFSSL_X509_STORE*,
|
||||||
WOLFSSL_X509_LOOKUP_METHOD*);
|
WOLFSSL_X509_LOOKUP_METHOD*);
|
||||||
@ -1472,6 +1479,8 @@ WOLFSSL_API int wolfSSL_X509_STORE_CTX_init(WOLFSSL_X509_STORE_CTX*,
|
|||||||
WOLFSSL_X509_STORE*, WOLFSSL_X509*, WOLF_STACK_OF(WOLFSSL_X509)*);
|
WOLFSSL_X509_STORE*, WOLFSSL_X509*, WOLF_STACK_OF(WOLFSSL_X509)*);
|
||||||
WOLFSSL_API void wolfSSL_X509_STORE_CTX_free(WOLFSSL_X509_STORE_CTX*);
|
WOLFSSL_API void wolfSSL_X509_STORE_CTX_free(WOLFSSL_X509_STORE_CTX*);
|
||||||
WOLFSSL_API void wolfSSL_X509_STORE_CTX_cleanup(WOLFSSL_X509_STORE_CTX*);
|
WOLFSSL_API void wolfSSL_X509_STORE_CTX_cleanup(WOLFSSL_X509_STORE_CTX*);
|
||||||
|
WOLFSSL_API void wolfSSL_X509_STORE_CTX_trusted_stack(WOLFSSL_X509_STORE_CTX *ctx,
|
||||||
|
WOLF_STACK_OF(WOLFSSL_X509) *sk);
|
||||||
|
|
||||||
WOLFSSL_API WOLFSSL_ASN1_TIME* wolfSSL_X509_CRL_get_lastUpdate(WOLFSSL_X509_CRL*);
|
WOLFSSL_API WOLFSSL_ASN1_TIME* wolfSSL_X509_CRL_get_lastUpdate(WOLFSSL_X509_CRL*);
|
||||||
WOLFSSL_API WOLFSSL_ASN1_TIME* wolfSSL_X509_CRL_get_nextUpdate(WOLFSSL_X509_CRL*);
|
WOLFSSL_API WOLFSSL_ASN1_TIME* wolfSSL_X509_CRL_get_nextUpdate(WOLFSSL_X509_CRL*);
|
||||||
@ -1505,6 +1514,13 @@ WOLFSSL_API int wolfSSL_sk_X509_REVOKED_num(WOLFSSL_X509_REVOKED*);
|
|||||||
WOLFSSL_API void wolfSSL_X509_STORE_CTX_set_time(WOLFSSL_X509_STORE_CTX*,
|
WOLFSSL_API void wolfSSL_X509_STORE_CTX_set_time(WOLFSSL_X509_STORE_CTX*,
|
||||||
unsigned long flags,
|
unsigned long flags,
|
||||||
time_t t);
|
time_t t);
|
||||||
|
WOLFSSL_API WOLFSSL_X509_VERIFY_PARAM* wolfSSL_X509_VERIFY_PARAM_new(void);
|
||||||
|
WOLFSSL_API void wolfSSL_X509_VERIFY_PARAM_free(WOLFSSL_X509_VERIFY_PARAM *param);
|
||||||
|
WOLFSSL_API int wolfSSL_X509_VERIFY_PARAM_set_flags(WOLFSSL_X509_VERIFY_PARAM *param,
|
||||||
|
unsigned long flags);
|
||||||
|
WOLFSSL_API int wolfSSL_X509_VERIFY_PARAM_get_flags(WOLFSSL_X509_VERIFY_PARAM *param);
|
||||||
|
WOLFSSL_API int wolfSSL_X509_VERIFY_PARAM_clear_flags(WOLFSSL_X509_VERIFY_PARAM *param,
|
||||||
|
unsigned long flags);
|
||||||
WOLFSSL_API void wolfSSL_X509_VERIFY_PARAM_set_hostflags(
|
WOLFSSL_API void wolfSSL_X509_VERIFY_PARAM_set_hostflags(
|
||||||
WOLFSSL_X509_VERIFY_PARAM* param, unsigned int flags);
|
WOLFSSL_X509_VERIFY_PARAM* param, unsigned int flags);
|
||||||
WOLFSSL_API int wolfSSL_X509_VERIFY_PARAM_set1_host(WOLFSSL_X509_VERIFY_PARAM* pParam,
|
WOLFSSL_API int wolfSSL_X509_VERIFY_PARAM_set1_host(WOLFSSL_X509_VERIFY_PARAM* pParam,
|
||||||
|
Reference in New Issue
Block a user