flush out x509 object stack deep copy and md get flag

This commit is contained in:
JacobBarthelmeh
2024-11-27 16:02:02 -07:00
parent f9e289881b
commit 3b23a05157
3 changed files with 62 additions and 6 deletions

View File

@@ -15041,6 +15041,7 @@ word32 wolfSSL_lib_version_hex(void)
WOLF_STACK_OF(WOLFSSL_CIPHER)* wolfSSL_get_client_ciphers(WOLFSSL* ssl)
{
WOLFSSL_STUB("wolfSSL_get_client_ciphers");
(void)ssl;
return NULL;
}
#endif
@@ -17611,6 +17612,31 @@ static void wolfSSL_CIPHER_copy(WOLFSSL_CIPHER* in, WOLFSSL_CIPHER* out)
*out = *in;
}
static WOLFSSL_X509_OBJECT* wolfSSL_X509_OBJECT_dup(WOLFSSL_X509_OBJECT* obj)
{
WOLFSSL_X509_OBJECT* ret = NULL;
if (obj) {
ret = wolfSSL_X509_OBJECT_new();
if (ret) {
ret->type = obj->type;
switch (ret->type) {
case WOLFSSL_X509_LU_NONE:
break;
case WOLFSSL_X509_LU_X509:
ret->data.x509 = wolfSSL_X509_dup(obj->data.x509);
break;
case WOLFSSL_X509_LU_CRL:
#if defined(HAVE_CRL)
ret->data.crl = wolfSSL_X509_CRL_dup(obj->data.crl);
#endif
break;
}
}
}
return ret;
}
WOLFSSL_STACK* wolfSSL_sk_dup(WOLFSSL_STACK* sk)
{
@@ -17673,6 +17699,15 @@ WOLFSSL_STACK* wolfSSL_sk_dup(WOLFSSL_STACK* sk)
goto error;
}
break;
case STACK_TYPE_X509_OBJ:
if (!sk->data.x509_obj)
break;
cur->data.x509_obj = wolfSSL_X509_OBJECT_dup(sk->data.x509_obj);
if (!cur->data.x509_obj) {
WOLFSSL_MSG("wolfSSL_X509_OBJECT_dup error");
goto error;
}
break;
case STACK_TYPE_BIO:
case STACK_TYPE_STRING:
case STACK_TYPE_ACCESS_DESCRIPTION:
@@ -17685,7 +17720,6 @@ WOLFSSL_STACK* wolfSSL_sk_dup(WOLFSSL_STACK* sk)
case STACK_TYPE_X509_INFO:
case STACK_TYPE_BY_DIR_entry:
case STACK_TYPE_BY_DIR_hash:
case STACK_TYPE_X509_OBJ:
case STACK_TYPE_DIST_POINT:
case STACK_TYPE_X509_CRL:
default:

View File

@@ -485,12 +485,17 @@ int wolfSSL_X509_get_ext_by_OBJ(const WOLFSSL_X509 *x,
int wolfSSL_X509_OBJECT_set1_X509(WOLFSSL_X509_OBJECT *a, WOLFSSL_X509 *obj)
{
WOLFSSL_STUB("wolfSSL_X509_OBJECT_set1_X509");
(void)a;
(void)obj;
return 1;
}
int wolfSSL_X509_OBJECT_set1_X509_CRL(WOLFSSL_X509_OBJECT *a, WOLFSSL_X509_CRL *obj)
int wolfSSL_X509_OBJECT_set1_X509_CRL(WOLFSSL_X509_OBJECT *a,
WOLFSSL_X509_CRL *obj)
{
WOLFSSL_STUB("wolfSSL_X509_OBJECT_set1_X509_CRL");
(void)a;
(void)obj;
return 1;
}
@@ -10378,7 +10383,7 @@ WOLF_STACK_OF(WOLFSSL_X509_OBJECT)* wolfSSL_sk_X509_OBJECT_deep_copy(
{
(void)f; /* free function */
(void)c; /* copy function */
return wolfSSL_sk_dup(sk);
return wolfSSL_sk_dup((WOLFSSL_STACK*)sk);
}
#endif

View File

@@ -10882,15 +10882,32 @@ int wolfSSL_EVP_MD_type(const WOLFSSL_EVP_MD* type)
int wolfSSL_EVP_DigestFinalXOF(WOLFSSL_EVP_MD_CTX *ctx, unsigned char *md,
size_t sz)
{
unsigned int len;
WOLFSSL_ENTER("wolfSSL_EVP_DigestFinalXOF");
//@TODO
return WOLFSSL_SUCCESS;
len = (unsigned int)sz;
return wolfSSL_EVP_DigestFinal(ctx, md, &len);
}
unsigned long wolfSSL_EVP_MD_flags(const WOLFSSL_EVP_MD *md)
{
return 0;
enum wc_HashType macType;
macType = EvpMd2MacType(md);
switch ((int)macType) {
case WC_HASH_TYPE_BLAKE2B:
case WC_HASH_TYPE_BLAKE2S:
#if defined(WOLFSSL_SHA3) && defined(WOLFSSL_SHAKE128)
case WC_HASH_TYPE_SHAKE128:
#endif
#if defined(WOLFSSL_SHA3) && defined(WOLFSSL_SHAKE256)
case WC_HASH_TYPE_SHAKE256:
#endif
return EVP_MD_FLAG_XOF;
default:
return 0;
}
}