forked from wolfSSL/wolfssl
OpenSSL Compat layer
Implement/stub: - wolfSSL_X509V3_EXT_add_nconf - wolfSSL_EVP_PKEY_copy_parameters
This commit is contained in:
101
src/ssl.c
101
src/ssl.c
@ -8862,6 +8862,20 @@ int wolfSSL_X509V3_EXT_print(WOLFSSL_BIO *out, WOLFSSL_X509_EXTENSION *ext,
|
|||||||
}
|
}
|
||||||
#endif /* !NO_BIO */
|
#endif /* !NO_BIO */
|
||||||
|
|
||||||
|
#ifndef NO_WOLFSSL_STUB
|
||||||
|
int wolfSSL_X509V3_EXT_add_nconf(WOLFSSL_CONF *conf, WOLFSSL_X509V3_CTX *ctx,
|
||||||
|
const char *section, WOLFSSL_X509 *cert)
|
||||||
|
{
|
||||||
|
WOLFSSL_ENTER("wolfSSL_X509V3_EXT_add_nconf");
|
||||||
|
WOLFSSL_STUB("wolfSSL_X509V3_EXT_add_nconf");
|
||||||
|
(void)conf;
|
||||||
|
(void)ctx;
|
||||||
|
(void)section;
|
||||||
|
(void)cert;
|
||||||
|
return WOLFSSL_SUCCESS;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Returns crit flag in X509_EXTENSION object */
|
/* Returns crit flag in X509_EXTENSION object */
|
||||||
int wolfSSL_X509_EXTENSION_get_critical(const WOLFSSL_X509_EXTENSION* ex)
|
int wolfSSL_X509_EXTENSION_get_critical(const WOLFSSL_X509_EXTENSION* ex)
|
||||||
{
|
{
|
||||||
@ -18726,6 +18740,9 @@ int wolfSSL_sk_push(WOLFSSL_STACK* sk, const void *data)
|
|||||||
sizeof(WOLFSSL_CIPHER)) == 0) {
|
sizeof(WOLFSSL_CIPHER)) == 0) {
|
||||||
sk->data.cipher = *(WOLFSSL_CIPHER*)data;
|
sk->data.cipher = *(WOLFSSL_CIPHER*)data;
|
||||||
sk->num = 1;
|
sk->num = 1;
|
||||||
|
if (sk->hash_fn) {
|
||||||
|
sk->hash = sk->hash_fn(&sk->data.cipher);
|
||||||
|
}
|
||||||
return WOLFSSL_SUCCESS;
|
return WOLFSSL_SUCCESS;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -18735,6 +18752,9 @@ int wolfSSL_sk_push(WOLFSSL_STACK* sk, const void *data)
|
|||||||
if (!sk->data.generic) {
|
if (!sk->data.generic) {
|
||||||
sk->data.generic = (void*)data;
|
sk->data.generic = (void*)data;
|
||||||
sk->num = 1;
|
sk->num = 1;
|
||||||
|
if (sk->hash_fn) {
|
||||||
|
sk->hash = sk->hash_fn(sk->data.generic);
|
||||||
|
}
|
||||||
return WOLFSSL_SUCCESS;
|
return WOLFSSL_SUCCESS;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -19265,32 +19285,35 @@ WOLFSSL_CONF_VALUE *wolfSSL_CONF_VALUE_new_values(char* section,
|
|||||||
|
|
||||||
if (section) {
|
if (section) {
|
||||||
len = XSTRLEN(section);
|
len = XSTRLEN(section);
|
||||||
ret->section = (char*)XMALLOC(len, NULL, DYNAMIC_TYPE_OPENSSL);
|
ret->section = (char*)XMALLOC(len+1, NULL, DYNAMIC_TYPE_OPENSSL);
|
||||||
if (!ret->section) {
|
if (!ret->section) {
|
||||||
WOLFSSL_MSG("malloc error");
|
WOLFSSL_MSG("malloc error");
|
||||||
wolfSSL_X509V3_conf_free(ret);
|
wolfSSL_X509V3_conf_free(ret);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
XMEMCPY(ret->section, section, len+1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (name) {
|
if (name) {
|
||||||
len = XSTRLEN(name);
|
len = XSTRLEN(name);
|
||||||
ret->name = (char*)XMALLOC(len, NULL, DYNAMIC_TYPE_OPENSSL);
|
ret->name = (char*)XMALLOC(len+1, NULL, DYNAMIC_TYPE_OPENSSL);
|
||||||
if (!ret->name) {
|
if (!ret->name) {
|
||||||
WOLFSSL_MSG("malloc error");
|
WOLFSSL_MSG("malloc error");
|
||||||
wolfSSL_X509V3_conf_free(ret);
|
wolfSSL_X509V3_conf_free(ret);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
XMEMCPY(ret->name, name, len+1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (value) {
|
if (value) {
|
||||||
len = XSTRLEN(value);
|
len = XSTRLEN(value);
|
||||||
ret->value = (char*)XMALLOC(len, NULL, DYNAMIC_TYPE_OPENSSL);
|
ret->value = (char*)XMALLOC(len+1, NULL, DYNAMIC_TYPE_OPENSSL);
|
||||||
if (!ret->value) {
|
if (!ret->value) {
|
||||||
WOLFSSL_MSG("malloc error");
|
WOLFSSL_MSG("malloc error");
|
||||||
wolfSSL_X509V3_conf_free(ret);
|
wolfSSL_X509V3_conf_free(ret);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
XMEMCPY(ret->value, value, len+1);
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
@ -19346,6 +19369,7 @@ WOLFSSL_CONF_VALUE *wolfSSL_CONF_new_section(WOLFSSL_CONF *conf,
|
|||||||
WOLFSSL_MSG("section malloc error");
|
WOLFSSL_MSG("section malloc error");
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
|
XMEMCPY(ret->section, section, slen+1);
|
||||||
|
|
||||||
if (!(sk = wolfSSL_sk_CONF_VALUE_new(NULL))) {
|
if (!(sk = wolfSSL_sk_CONF_VALUE_new(NULL))) {
|
||||||
WOLFSSL_MSG("wolfSSL_sk_CONF_VALUE_new error");
|
WOLFSSL_MSG("wolfSSL_sk_CONF_VALUE_new error");
|
||||||
@ -19409,8 +19433,14 @@ WOLFSSL_CONF *wolfSSL_NCONF_new(void *meth)
|
|||||||
}
|
}
|
||||||
|
|
||||||
ret = (WOLFSSL_CONF*)XMALLOC(sizeof(WOLFSSL_CONF), NULL, DYNAMIC_TYPE_OPENSSL);
|
ret = (WOLFSSL_CONF*)XMALLOC(sizeof(WOLFSSL_CONF), NULL, DYNAMIC_TYPE_OPENSSL);
|
||||||
if (ret)
|
if (ret) {
|
||||||
XMEMSET(ret, 0, sizeof(WOLFSSL_CONF));
|
XMEMSET(ret, 0, sizeof(WOLFSSL_CONF));
|
||||||
|
ret->data = wolfSSL_sk_CONF_VALUE_new(NULL);
|
||||||
|
if (!ret->data) {
|
||||||
|
wolfSSL_NCONF_free(ret);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -19539,7 +19569,7 @@ int wolfSSL_NCONF_load(WOLFSSL_CONF *conf, const char *file, long *eline)
|
|||||||
WOLFSSL_MSG("malloc error");
|
WOLFSSL_MSG("malloc error");
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
if (wolfSSL_BIO_read(in, buf, bufLen) != WOLFSSL_SUCCESS) {
|
if (wolfSSL_BIO_read(in, buf, bufLen) != bufLen) {
|
||||||
WOLFSSL_MSG("wolfSSL_BIO_read error");
|
WOLFSSL_MSG("wolfSSL_BIO_read error");
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
@ -19573,6 +19603,13 @@ int wolfSSL_NCONF_load(WOLFSSL_CONF *conf, const char *file, long *eline)
|
|||||||
char* sectionName;
|
char* sectionName;
|
||||||
int sectionNameLen;
|
int sectionNameLen;
|
||||||
|
|
||||||
|
if (idx < maxIdx)
|
||||||
|
idx++;
|
||||||
|
else {
|
||||||
|
WOLFSSL_MSG("Invalid section definition.");
|
||||||
|
goto cleanup;
|
||||||
|
}
|
||||||
|
|
||||||
SKIP_WHITESPACE(idx, maxIdx);
|
SKIP_WHITESPACE(idx, maxIdx);
|
||||||
sectionName = idx;
|
sectionName = idx;
|
||||||
/* Find end of section name */
|
/* Find end of section name */
|
||||||
@ -19613,10 +19650,10 @@ int wolfSSL_NCONF_load(WOLFSSL_CONF *conf, const char *file, long *eline)
|
|||||||
SKIP_WHITESPACE(idx, maxIdx);
|
SKIP_WHITESPACE(idx, maxIdx);
|
||||||
value = idx;
|
value = idx;
|
||||||
/* Find end of value */
|
/* Find end of value */
|
||||||
idx = maxIdx;
|
idx = maxIdx-1;
|
||||||
while (*idx == ' ' || *idx == '\t')
|
while (*idx == ' ' || *idx == '\t')
|
||||||
idx--;
|
idx--;
|
||||||
valueLen = idx - value;
|
valueLen = idx - value + 1;
|
||||||
|
|
||||||
/* Sanity checks */
|
/* Sanity checks */
|
||||||
if (nameLen <= 0 || valueLen <= 0) {
|
if (nameLen <= 0 || valueLen <= 0) {
|
||||||
@ -21151,7 +21188,7 @@ WOLFSSL_TXT_DB *wolfSSL_TXT_DB_read(WOLFSSL_BIO *in, int num)
|
|||||||
|
|
||||||
bufSz = wolfSSL_BIO_get_len(in);
|
bufSz = wolfSSL_BIO_get_len(in);
|
||||||
if (bufSz <= 0 ||
|
if (bufSz <= 0 ||
|
||||||
!(buf = (char*)XMALLOC(sizeof(bufSz+1), NULL,
|
!(buf = (char*)XMALLOC(bufSz+1, NULL,
|
||||||
DYNAMIC_TYPE_TMP_BUFFER))) {
|
DYNAMIC_TYPE_TMP_BUFFER))) {
|
||||||
WOLFSSL_MSG("malloc error or no data in BIO");
|
WOLFSSL_MSG("malloc error or no data in BIO");
|
||||||
goto error;
|
goto error;
|
||||||
@ -21163,6 +21200,7 @@ WOLFSSL_TXT_DB *wolfSSL_TXT_DB_read(WOLFSSL_BIO *in, int num)
|
|||||||
}
|
}
|
||||||
|
|
||||||
buf[bufSz] = '\0';
|
buf[bufSz] = '\0';
|
||||||
|
idx = buf;
|
||||||
for (bufEnd = buf + bufSz; idx < bufEnd; idx = lineEnd + 1) {
|
for (bufEnd = buf + bufSz; idx < bufEnd; idx = lineEnd + 1) {
|
||||||
char* strBuf = NULL;
|
char* strBuf = NULL;
|
||||||
char** fieldPtr = NULL;
|
char** fieldPtr = NULL;
|
||||||
@ -21183,6 +21221,7 @@ WOLFSSL_TXT_DB *wolfSSL_TXT_DB_read(WOLFSSL_BIO *in, int num)
|
|||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
XMEMCPY(strBuf + fieldsSz, idx, lineEnd - idx + 1); /* + 1 for NULL */
|
XMEMCPY(strBuf + fieldsSz, idx, lineEnd - idx + 1); /* + 1 for NULL */
|
||||||
|
XMEMSET(strBuf, 0, fieldsSz);
|
||||||
/* Check for appropriate number of fields */
|
/* Check for appropriate number of fields */
|
||||||
fieldPtr = (char**)strBuf;
|
fieldPtr = (char**)strBuf;
|
||||||
fieldCheckIdx = strBuf + fieldsSz;
|
fieldCheckIdx = strBuf + fieldsSz;
|
||||||
@ -25063,8 +25102,8 @@ void wolfSSL_X509_CRL_free(WOLFSSL_X509_CRL *crl)
|
|||||||
{
|
{
|
||||||
WOLFSSL_ENTER("wolfSSL_X509_CRL_free");
|
WOLFSSL_ENTER("wolfSSL_X509_CRL_free");
|
||||||
|
|
||||||
|
if (crl)
|
||||||
FreeCRL(crl, 1);
|
FreeCRL(crl, 1);
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
#endif /* HAVE_CRL && (OPENSSL_EXTRA || WOLFSSL_WPAS_SMALL) */
|
#endif /* HAVE_CRL && (OPENSSL_EXTRA || WOLFSSL_WPAS_SMALL) */
|
||||||
|
|
||||||
@ -28661,10 +28700,24 @@ WOLFSSL_ASN1_TIME *wolfSSL_ASN1_TIME_set(WOLFSSL_ASN1_TIME *s, time_t t)
|
|||||||
|
|
||||||
int wolfSSL_ASN1_TIME_set_string(WOLFSSL_ASN1_TIME *s, const char *str)
|
int wolfSSL_ASN1_TIME_set_string(WOLFSSL_ASN1_TIME *s, const char *str)
|
||||||
{
|
{
|
||||||
WOLFSSL_STUB("wolfSSL_ASN1_TIME_set_string");
|
int slen;
|
||||||
(void)s;
|
WOLFSSL_ENTER("wolfSSL_ASN1_TIME_set_string");
|
||||||
(void)str;
|
|
||||||
|
if (!str) {
|
||||||
|
WOLFSSL_MSG("Bad parameter");
|
||||||
return WOLFSSL_FAILURE;
|
return WOLFSSL_FAILURE;
|
||||||
|
}
|
||||||
|
slen = XSTRLEN(str)+1;
|
||||||
|
if (slen > CTC_DATE_SIZE) {
|
||||||
|
WOLFSSL_MSG("Date string too long");
|
||||||
|
return WOLFSSL_FAILURE;
|
||||||
|
}
|
||||||
|
if (s) {
|
||||||
|
XMEMCPY(s->data, str, slen);
|
||||||
|
s->length = slen;
|
||||||
|
s->type = slen == ASN_UTC_TIME_SIZE ? ASN_UTC_TIME : ASN_GENERALIZED_TIME;
|
||||||
|
}
|
||||||
|
return WOLFSSL_SUCCESS;
|
||||||
}
|
}
|
||||||
#endif /* !NO_WOLFSSL_STUB */
|
#endif /* !NO_WOLFSSL_STUB */
|
||||||
|
|
||||||
@ -40850,7 +40903,10 @@ err:
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (loc <= DN_NAMES_MAX + name->fullName.dcNum) {
|
if (loc <= DN_NAMES_MAX + name->fullName.dcNum) {
|
||||||
name->fullName.loc[loc] = ASN_DN_NULL;
|
XMEMMOVE(&name->fullName.loc[loc], &name->fullName.loc[loc+1],
|
||||||
|
DN_NAMES_MAX + name->fullName.dcNum - loc - 1);
|
||||||
|
if (name->fullName.dcNum > 0)
|
||||||
|
name->fullName.dcNum--;
|
||||||
}
|
}
|
||||||
else if (name->fullName.dcMode) {
|
else if (name->fullName.dcMode) {
|
||||||
if (name->fullName.fullName != NULL) {
|
if (name->fullName.fullName != NULL) {
|
||||||
@ -40862,6 +40918,12 @@ err:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if (loc == name->fullName.cnIdx && name->x509 != NULL) {
|
||||||
|
name->fullName.cnIdx = -1;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
WOLFSSL_MSG("Couldn't find name entry");
|
||||||
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@ -46104,7 +46166,7 @@ int wolfSSL_a2i_ASN1_INTEGER(WOLFSSL_BIO *bio, WOLFSSL_ASN1_INTEGER *asn1,
|
|||||||
WOLFSSL_MSG("wolfSSL_BIO_gets error");
|
WOLFSSL_MSG("wolfSSL_BIO_gets error");
|
||||||
return WOLFSSL_FAILURE;
|
return WOLFSSL_FAILURE;
|
||||||
}
|
}
|
||||||
while (lineLen && buf[lineLen-1] == '\n' && buf[lineLen-1] == '\r')
|
while (lineLen && (buf[lineLen-1] == '\n' || buf[lineLen-1] == '\r'))
|
||||||
lineLen--;
|
lineLen--;
|
||||||
if (buf[lineLen-1] == '\\')
|
if (buf[lineLen-1] == '\\')
|
||||||
readNextLine = 1;
|
readNextLine = 1;
|
||||||
@ -46157,8 +46219,13 @@ int wolfSSL_a2i_ASN1_INTEGER(WOLFSSL_BIO *bio, WOLFSSL_ASN1_INTEGER *asn1,
|
|||||||
XMEMMOVE(asn1->data + outLen + 1, asn1->data, asn1->length);
|
XMEMMOVE(asn1->data + outLen + 1, asn1->data, asn1->length);
|
||||||
asn1->data[0] = ASN_INTEGER;
|
asn1->data[0] = ASN_INTEGER;
|
||||||
(void)SetLength(asn1->length, asn1->data + 1);
|
(void)SetLength(asn1->length, asn1->data + 1);
|
||||||
if (asn1->data[outLen+1] == 0x80)
|
if (asn1->data[outLen+1] == 0x80) {
|
||||||
asn1->data[outLen] = 0;
|
asn1->data[outLen] = 0;
|
||||||
|
asn1->dataMax = asn1->length += 1 + outLen + 1;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
asn1->dataMax = asn1->length += 1 + outLen;
|
||||||
|
}
|
||||||
|
|
||||||
return WOLFSSL_SUCCESS;
|
return WOLFSSL_SUCCESS;
|
||||||
}
|
}
|
||||||
@ -46649,14 +46716,14 @@ WOLF_STACK_OF(WOLFSSL_STRING)* wolfSSL_sk_WOLFSSL_STRING_new(void)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
char* wolfSSL_sk_WOLFSSL_STRING_value(WOLF_STACK_OF(WOLFSSL_STRING)* strings,
|
WOLFSSL_STRING* wolfSSL_sk_WOLFSSL_STRING_value(WOLF_STACK_OF(WOLFSSL_STRING)* strings,
|
||||||
int idx)
|
int idx)
|
||||||
{
|
{
|
||||||
for (; idx > 0 && strings != NULL; idx--)
|
for (; idx > 0 && strings != NULL; idx--)
|
||||||
strings = strings->next;
|
strings = strings->next;
|
||||||
if (strings == NULL)
|
if (strings == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
return strings->data.string;
|
return (WOLFSSL_STRING*)strings->data.string;
|
||||||
}
|
}
|
||||||
|
|
||||||
int wolfSSL_sk_WOLFSSL_STRING_num(WOLF_STACK_OF(WOLFSSL_STRING)* strings)
|
int wolfSSL_sk_WOLFSSL_STRING_num(WOLF_STACK_OF(WOLFSSL_STRING)* strings)
|
||||||
|
@ -9443,7 +9443,7 @@ int ParseCertRelative(DecodedCert* cert, int type, int verify, void* cm)
|
|||||||
int ret = 0;
|
int ret = 0;
|
||||||
int checkPathLen = 0;
|
int checkPathLen = 0;
|
||||||
int decrementMaxPathLen = 0;
|
int decrementMaxPathLen = 0;
|
||||||
word32 confirmOID;
|
word32 confirmOID = 0;
|
||||||
#if defined(WOLFSSL_RENESAS_TSIP)
|
#if defined(WOLFSSL_RENESAS_TSIP)
|
||||||
int idx = 0;
|
int idx = 0;
|
||||||
#endif
|
#endif
|
||||||
|
@ -1885,6 +1885,87 @@ int wolfSSL_EVP_PKEY_size(WOLFSSL_EVP_PKEY *pkey)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int wolfSSL_EVP_PKEY_copy_parameters(WOLFSSL_EVP_PKEY *to,
|
||||||
|
const WOLFSSL_EVP_PKEY *from)
|
||||||
|
{
|
||||||
|
WOLFSSL_ENTER("wolfSSL_EVP_PKEY_copy_parameters");
|
||||||
|
|
||||||
|
if (!to || !from) {
|
||||||
|
WOLFSSL_MSG("Bad parameter");
|
||||||
|
return WOLFSSL_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (to->type == EVP_PKEY_NONE) {
|
||||||
|
to->type = from->type;
|
||||||
|
}
|
||||||
|
else if (to->type != from->type) {
|
||||||
|
WOLFSSL_MSG("Different key types");
|
||||||
|
return WOLFSSL_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch(from->type) {
|
||||||
|
#ifdef HAVE_ECC
|
||||||
|
case EVP_PKEY_EC:
|
||||||
|
if (from->ecc) {
|
||||||
|
if (!to->ecc && !(to->ecc = wolfSSL_EC_KEY_new())) {
|
||||||
|
WOLFSSL_MSG("wolfSSL_EC_KEY_new error");
|
||||||
|
return WOLFSSL_FAILURE;
|
||||||
|
}
|
||||||
|
to->ecc->group->curve_idx = from->ecc->group->curve_idx;
|
||||||
|
to->ecc->group->curve_nid = from->ecc->group->curve_nid;
|
||||||
|
to->ecc->group->curve_oid = from->ecc->group->curve_oid;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
WOLFSSL_MSG("Missing ECC struct");
|
||||||
|
return WOLFSSL_FAILURE;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
|
#ifndef NO_DSA
|
||||||
|
case EVP_PKEY_DSA:
|
||||||
|
if (from->dsa) {
|
||||||
|
WOLFSSL_BIGNUM cpy;
|
||||||
|
if (!to->dsa && !(to->dsa = wolfSSL_DSA_new())) {
|
||||||
|
WOLFSSL_MSG("wolfSSL_DSA_new error");
|
||||||
|
return WOLFSSL_FAILURE;
|
||||||
|
}
|
||||||
|
if (!(cpy = wolfSSL_BN_dup(from->dsa->p))) {
|
||||||
|
WOLFSSL_MSG("wolfSSL_BN_dup error");
|
||||||
|
return WOLFSSL_FAILURE;
|
||||||
|
}
|
||||||
|
to->dsa->p = cpy;
|
||||||
|
if (!(cpy = wolfSSL_BN_dup(from->dsa->q)) {
|
||||||
|
WOLFSSL_MSG("wolfSSL_BN_dup error");
|
||||||
|
return WOLFSSL_FAILURE;
|
||||||
|
}
|
||||||
|
to->dsa->q = cpy;
|
||||||
|
if (!(cpy = wolfSSL_BN_dup(from->dsa->g)) {
|
||||||
|
WOLFSSL_MSG("wolfSSL_BN_dup error");
|
||||||
|
return WOLFSSL_FAILURE;
|
||||||
|
}
|
||||||
|
to->dsa->g = cpy;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
WOLFSSL_MSG("Missing DSA struct");
|
||||||
|
return WOLFSSL_FAILURE;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
|
#ifndef NO_RSA
|
||||||
|
case EVP_PKEY_RSA:
|
||||||
|
#endif
|
||||||
|
#ifndef NO_DH
|
||||||
|
case EVP_PKEY_DH:
|
||||||
|
#endif
|
||||||
|
default:
|
||||||
|
WOLFSSL_MSG("Copy parameters not available for this key type");
|
||||||
|
return WOLFSSL_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
|
return WOLFSSL_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
#ifndef NO_WOLFSSL_STUB
|
#ifndef NO_WOLFSSL_STUB
|
||||||
WOLFSSL_API int wolfSSL_EVP_PKEY_missing_parameters(WOLFSSL_EVP_PKEY *pkey)
|
WOLFSSL_API int wolfSSL_EVP_PKEY_missing_parameters(WOLFSSL_EVP_PKEY *pkey)
|
||||||
{
|
{
|
||||||
@ -3183,11 +3264,21 @@ const WOLFSSL_EVP_MD *wolfSSL_EVP_get_digestbyname(const char *name)
|
|||||||
{"SHA", "SHA1"},
|
{"SHA", "SHA1"},
|
||||||
{ NULL, NULL}
|
{ NULL, NULL}
|
||||||
};
|
};
|
||||||
|
char nameUpper[15]; /* 15 bytes should be enough for any name */
|
||||||
|
size_t i;
|
||||||
|
|
||||||
const struct alias *al;
|
const struct alias *al;
|
||||||
const struct s_ent *ent;
|
const struct s_ent *ent;
|
||||||
|
|
||||||
|
for (i = 0; i < sizeof(nameUpper) && name[i] != '\0'; i++) {
|
||||||
|
nameUpper[i] = XTOUPPER(name[i]);
|
||||||
|
}
|
||||||
|
if (i < sizeof(nameUpper))
|
||||||
|
nameUpper[i] = '\0';
|
||||||
|
else
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
name = nameUpper;
|
||||||
for (al = alias_tbl; al->name != NULL; al++)
|
for (al = alias_tbl; al->name != NULL; al++)
|
||||||
if(XSTRNCMP(name, al->alias, XSTRLEN(al->alias)+1) == 0) {
|
if(XSTRNCMP(name, al->alias, XSTRLEN(al->alias)+1) == 0) {
|
||||||
name = al->name;
|
name = al->name;
|
||||||
|
@ -572,6 +572,7 @@ WOLFSSL_API WOLFSSL_EVP_PKEY *wolfSSL_EVP_PKEY_new(void);
|
|||||||
WOLFSSL_API WOLFSSL_EVP_PKEY* wolfSSL_EVP_PKEY_new_ex(void* heap);
|
WOLFSSL_API WOLFSSL_EVP_PKEY* wolfSSL_EVP_PKEY_new_ex(void* heap);
|
||||||
WOLFSSL_API void wolfSSL_EVP_PKEY_free(WOLFSSL_EVP_PKEY*);
|
WOLFSSL_API void wolfSSL_EVP_PKEY_free(WOLFSSL_EVP_PKEY*);
|
||||||
WOLFSSL_API int wolfSSL_EVP_PKEY_size(WOLFSSL_EVP_PKEY *pkey);
|
WOLFSSL_API int wolfSSL_EVP_PKEY_size(WOLFSSL_EVP_PKEY *pkey);
|
||||||
|
WOLFSSL_API int wolfSSL_EVP_PKEY_copy_parameters(WOLFSSL_EVP_PKEY *to, const WOLFSSL_EVP_PKEY *from);
|
||||||
WOLFSSL_API int wolfSSL_EVP_PKEY_missing_parameters(WOLFSSL_EVP_PKEY *pkey);
|
WOLFSSL_API int wolfSSL_EVP_PKEY_missing_parameters(WOLFSSL_EVP_PKEY *pkey);
|
||||||
WOLFSSL_API int wolfSSL_EVP_PKEY_cmp(const WOLFSSL_EVP_PKEY *a, const WOLFSSL_EVP_PKEY *b);
|
WOLFSSL_API int wolfSSL_EVP_PKEY_cmp(const WOLFSSL_EVP_PKEY *a, const WOLFSSL_EVP_PKEY *b);
|
||||||
WOLFSSL_API int wolfSSL_EVP_PKEY_type(int type);
|
WOLFSSL_API int wolfSSL_EVP_PKEY_type(int type);
|
||||||
@ -829,6 +830,7 @@ typedef WOLFSSL_EVP_CIPHER_CTX EVP_CIPHER_CTX;
|
|||||||
#define EVP_PKEY_free wolfSSL_EVP_PKEY_free
|
#define EVP_PKEY_free wolfSSL_EVP_PKEY_free
|
||||||
#define EVP_PKEY_up_ref wolfSSL_EVP_PKEY_up_ref
|
#define EVP_PKEY_up_ref wolfSSL_EVP_PKEY_up_ref
|
||||||
#define EVP_PKEY_size wolfSSL_EVP_PKEY_size
|
#define EVP_PKEY_size wolfSSL_EVP_PKEY_size
|
||||||
|
#define EVP_PKEY_copy_parameters wolfSSL_EVP_PKEY_copy_parameters
|
||||||
#define EVP_PKEY_missing_parameters wolfSSL_EVP_PKEY_missing_parameters
|
#define EVP_PKEY_missing_parameters wolfSSL_EVP_PKEY_missing_parameters
|
||||||
#define EVP_PKEY_cmp wolfSSL_EVP_PKEY_cmp
|
#define EVP_PKEY_cmp wolfSSL_EVP_PKEY_cmp
|
||||||
#define EVP_PKEY_type wolfSSL_EVP_PKEY_type
|
#define EVP_PKEY_type wolfSSL_EVP_PKEY_type
|
||||||
|
@ -505,6 +505,7 @@ typedef STACK_OF(ACCESS_DESCRIPTION) AUTHORITY_INFO_ACCESS;
|
|||||||
#define X509_NAME_add_entry wolfSSL_X509_NAME_add_entry
|
#define X509_NAME_add_entry wolfSSL_X509_NAME_add_entry
|
||||||
#define X509_NAME_add_entry_by_txt wolfSSL_X509_NAME_add_entry_by_txt
|
#define X509_NAME_add_entry_by_txt wolfSSL_X509_NAME_add_entry_by_txt
|
||||||
#define X509_NAME_add_entry_by_NID wolfSSL_X509_NAME_add_entry_by_NID
|
#define X509_NAME_add_entry_by_NID wolfSSL_X509_NAME_add_entry_by_NID
|
||||||
|
#define X509_NAME_delete_entry wolfSSL_X509_NAME_delete_entry
|
||||||
#define X509_NAME_oneline wolfSSL_X509_NAME_oneline
|
#define X509_NAME_oneline wolfSSL_X509_NAME_oneline
|
||||||
#define X509_NAME_get_index_by_NID wolfSSL_X509_NAME_get_index_by_NID
|
#define X509_NAME_get_index_by_NID wolfSSL_X509_NAME_get_index_by_NID
|
||||||
#define X509_NAME_print_ex wolfSSL_X509_NAME_print_ex
|
#define X509_NAME_print_ex wolfSSL_X509_NAME_print_ex
|
||||||
@ -730,6 +731,9 @@ wolfSSL_X509_STORE_set_verify_cb((WOLFSSL_X509_STORE *)(s), (WOLFSSL_X509_STORE_
|
|||||||
#define ASN1_STRING_print_ex wolfSSL_ASN1_STRING_print_ex
|
#define ASN1_STRING_print_ex wolfSSL_ASN1_STRING_print_ex
|
||||||
#define ASN1_STRING_print(x, y) wolfSSL_ASN1_STRING_print ((WOLFSSL_BIO*)(x), (WOLFSSL_ASN1_STRING*)(y))
|
#define ASN1_STRING_print(x, y) wolfSSL_ASN1_STRING_print ((WOLFSSL_BIO*)(x), (WOLFSSL_ASN1_STRING*)(y))
|
||||||
#define d2i_DISPLAYTEXT wolfSSL_d2i_DISPLAYTEXT
|
#define d2i_DISPLAYTEXT wolfSSL_d2i_DISPLAYTEXT
|
||||||
|
#ifndef NO_WOLFSSL_STUB
|
||||||
|
#define ASN1_STRING_set_default_mask_asc(...) 1
|
||||||
|
#endif
|
||||||
|
|
||||||
#define ASN1_PRINTABLE_type(...) V_ASN1_PRINTABLESTRING
|
#define ASN1_PRINTABLE_type(...) V_ASN1_PRINTABLESTRING
|
||||||
|
|
||||||
@ -1303,6 +1307,10 @@ wolfSSL_X509_STORE_set_verify_cb((WOLFSSL_X509_STORE *)(s), (WOLFSSL_X509_STORE_
|
|||||||
|
|
||||||
#define OpenSSL_version(x) wolfSSL_OpenSSL_version()
|
#define OpenSSL_version(x) wolfSSL_OpenSSL_version()
|
||||||
|
|
||||||
|
#ifndef NO_WOLFSSL_STUB
|
||||||
|
#define OBJ_create_objects(...)
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
} /* extern "C" */
|
} /* extern "C" */
|
||||||
#endif
|
#endif
|
||||||
|
@ -101,6 +101,8 @@ WOLFSSL_API char* wolfSSL_i2s_ASN1_STRING(WOLFSSL_v3_ext_method *method,
|
|||||||
const WOLFSSL_ASN1_STRING *s);
|
const WOLFSSL_ASN1_STRING *s);
|
||||||
WOLFSSL_API int wolfSSL_X509V3_EXT_print(WOLFSSL_BIO *out,
|
WOLFSSL_API int wolfSSL_X509V3_EXT_print(WOLFSSL_BIO *out,
|
||||||
WOLFSSL_X509_EXTENSION *ext, unsigned long flag, int indent);
|
WOLFSSL_X509_EXTENSION *ext, unsigned long flag, int indent);
|
||||||
|
WOLFSSL_API int wolfSSL_X509V3_EXT_add_nconf(WOLFSSL_CONF *conf, WOLFSSL_X509V3_CTX *ctx,
|
||||||
|
const char *section, WOLFSSL_X509 *cert);
|
||||||
|
|
||||||
#define BASIC_CONSTRAINTS_free wolfSSL_BASIC_CONSTRAINTS_free
|
#define BASIC_CONSTRAINTS_free wolfSSL_BASIC_CONSTRAINTS_free
|
||||||
#define AUTHORITY_KEYID_free wolfSSL_AUTHORITY_KEYID_free
|
#define AUTHORITY_KEYID_free wolfSSL_AUTHORITY_KEYID_free
|
||||||
@ -109,8 +111,8 @@ WOLFSSL_API int wolfSSL_X509V3_EXT_print(WOLFSSL_BIO *out,
|
|||||||
#define ASN1_OCTET_STRING WOLFSSL_ASN1_STRING
|
#define ASN1_OCTET_STRING WOLFSSL_ASN1_STRING
|
||||||
#define X509V3_EXT_get wolfSSL_X509V3_EXT_get
|
#define X509V3_EXT_get wolfSSL_X509V3_EXT_get
|
||||||
#define X509V3_EXT_d2i wolfSSL_X509V3_EXT_d2i
|
#define X509V3_EXT_d2i wolfSSL_X509V3_EXT_d2i
|
||||||
|
#define X509V3_EXT_add_nconf wolfSSL_X509V3_EXT_add_nconf
|
||||||
#ifndef NO_WOLFSSL_STUB
|
#ifndef NO_WOLFSSL_STUB
|
||||||
#define X509V3_EXT_add_nconf(...) 0
|
|
||||||
#define X509V3_parse_list(...) NULL
|
#define X509V3_parse_list(...) NULL
|
||||||
#endif
|
#endif
|
||||||
#define i2s_ASN1_OCTET_STRING wolfSSL_i2s_ASN1_STRING
|
#define i2s_ASN1_OCTET_STRING wolfSSL_i2s_ASN1_STRING
|
||||||
|
@ -3658,8 +3658,8 @@ WOLFSSL_API void wolfSSL_sk_X509_INFO_pop_free(WOLF_STACK_OF(WOLFSSL_X509_INFO)*
|
|||||||
void (*f) (WOLFSSL_X509_INFO*));
|
void (*f) (WOLFSSL_X509_INFO*));
|
||||||
WOLFSSL_API void wolfSSL_sk_X509_INFO_free(WOLF_STACK_OF(WOLFSSL_X509_INFO)*);
|
WOLFSSL_API void wolfSSL_sk_X509_INFO_free(WOLF_STACK_OF(WOLFSSL_X509_INFO)*);
|
||||||
|
|
||||||
typedef int (*wolf_sk_compare_cb)(const void* const *a,
|
typedef int (*wolf_sk_compare_cb)(const void* a,
|
||||||
const void* const *b);
|
const void* b);
|
||||||
typedef unsigned long (*wolf_sk_hash_cb) (const void *v);
|
typedef unsigned long (*wolf_sk_hash_cb) (const void *v);
|
||||||
WOLFSSL_API WOLF_STACK_OF(WOLFSSL_X509_NAME)* wolfSSL_sk_X509_NAME_new(
|
WOLFSSL_API WOLF_STACK_OF(WOLFSSL_X509_NAME)* wolfSSL_sk_X509_NAME_new(
|
||||||
wolf_sk_compare_cb);
|
wolf_sk_compare_cb);
|
||||||
@ -3913,7 +3913,7 @@ WOLFSSL_API int wolfSSL_X509_check_issued(WOLFSSL_X509 *issuer,
|
|||||||
WOLFSSL_X509 *subject);
|
WOLFSSL_X509 *subject);
|
||||||
|
|
||||||
WOLFSSL_API WOLF_STACK_OF(WOLFSSL_STRING)* wolfSSL_sk_WOLFSSL_STRING_new(void);
|
WOLFSSL_API WOLF_STACK_OF(WOLFSSL_STRING)* wolfSSL_sk_WOLFSSL_STRING_new(void);
|
||||||
WOLFSSL_API char* wolfSSL_sk_WOLFSSL_STRING_value(
|
WOLFSSL_API WOLFSSL_STRING* wolfSSL_sk_WOLFSSL_STRING_value(
|
||||||
WOLF_STACK_OF(WOLFSSL_STRING)* strings, int idx);
|
WOLF_STACK_OF(WOLFSSL_STRING)* strings, int idx);
|
||||||
WOLFSSL_API int wolfSSL_sk_WOLFSSL_STRING_num(
|
WOLFSSL_API int wolfSSL_sk_WOLFSSL_STRING_num(
|
||||||
WOLF_STACK_OF(WOLFSSL_STRING)* strings);
|
WOLF_STACK_OF(WOLFSSL_STRING)* strings);
|
||||||
|
Reference in New Issue
Block a user