forked from wolfSSL/wolfssl
Nginx 1.19.6
- Implement X509_pubkey_digest - Initialize entire WOLFSSL_X509_NAME struct to zero - Set raw and rawLen when copying WOLFSSL_X509_NAME
This commit is contained in:
@@ -3393,15 +3393,9 @@ void InitX509Name(WOLFSSL_X509_NAME* name, int dynamicFlag, void* heap)
|
|||||||
(void)heap;
|
(void)heap;
|
||||||
|
|
||||||
if (name != NULL) {
|
if (name != NULL) {
|
||||||
|
XMEMSET(name, 0, sizeof(WOLFSSL_X509_NAME));
|
||||||
name->name = name->staticName;
|
name->name = name->staticName;
|
||||||
name->dynamicName = 0;
|
|
||||||
name->sz = 0;
|
|
||||||
name->heap = heap;
|
name->heap = heap;
|
||||||
#if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL)
|
|
||||||
XMEMSET(name->entry, 0, sizeof(name->entry));
|
|
||||||
name->x509 = NULL;
|
|
||||||
name->entrySz = 0;
|
|
||||||
#endif /* OPENSSL_EXTRA */
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
34
src/ssl.c
34
src/ssl.c
@@ -10402,6 +10402,29 @@ int wolfSSL_X509_digest(const WOLFSSL_X509* x509, const WOLFSSL_EVP_MD* digest,
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
int wolfSSL_X509_pubkey_digest(const WOLFSSL_X509 *x509,
|
||||||
|
const WOLFSSL_EVP_MD *digest, unsigned char* buf, unsigned int* len)
|
||||||
|
{
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
WOLFSSL_ENTER("wolfSSL_X509_pubkey_digest");
|
||||||
|
|
||||||
|
if (x509 == NULL || digest == NULL) {
|
||||||
|
WOLFSSL_MSG("Null argument found");
|
||||||
|
return WOLFSSL_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (x509->pubKey.buffer == NULL || x509->pubKey.length == 0) {
|
||||||
|
WOLFSSL_MSG("No DER public key stored in X509");
|
||||||
|
return WOLFSSL_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
|
ret = wolfSSL_EVP_Digest(x509->pubKey.buffer, x509->pubKey.length, buf,
|
||||||
|
len, digest, NULL);
|
||||||
|
WOLFSSL_LEAVE("wolfSSL_X509_pubkey_digest", ret);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
int wolfSSL_use_PrivateKey(WOLFSSL* ssl, WOLFSSL_EVP_PKEY* pkey)
|
int wolfSSL_use_PrivateKey(WOLFSSL* ssl, WOLFSSL_EVP_PKEY* pkey)
|
||||||
{
|
{
|
||||||
WOLFSSL_ENTER("wolfSSL_use_PrivateKey");
|
WOLFSSL_ENTER("wolfSSL_use_PrivateKey");
|
||||||
@@ -52896,6 +52919,17 @@ int wolfSSL_X509_NAME_copy(WOLFSSL_X509_NAME* from, WOLFSSL_X509_NAME* to)
|
|||||||
return BAD_FUNC_ARG;
|
return BAD_FUNC_ARG;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(OPENSSL_ALL) || defined(WOLFSSL_NGINX) || defined(HAVE_LIGHTY)
|
||||||
|
if (from->rawLen > 0) {
|
||||||
|
if (from->rawLen > ASN_NAME_MAX) {
|
||||||
|
WOLFSSL_MSG("Bad raw size");
|
||||||
|
return BAD_FUNC_ARG;
|
||||||
|
}
|
||||||
|
XMEMCPY(to->raw, from->raw, from->rawLen);
|
||||||
|
to->rawLen = from->rawLen;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
if (from->dynamicName) {
|
if (from->dynamicName) {
|
||||||
to->name = (char*)XMALLOC(from->sz, to->heap, DYNAMIC_TYPE_SUBJECT_CN);
|
to->name = (char*)XMALLOC(from->sz, to->heap, DYNAMIC_TYPE_SUBJECT_CN);
|
||||||
if (to->name == NULL)
|
if (to->name == NULL)
|
||||||
|
@@ -409,6 +409,7 @@ typedef STACK_OF(ACCESS_DESCRIPTION) AUTHORITY_INFO_ACCESS;
|
|||||||
#define X509_free wolfSSL_X509_free
|
#define X509_free wolfSSL_X509_free
|
||||||
#define X509_load_certificate_file wolfSSL_X509_load_certificate_file
|
#define X509_load_certificate_file wolfSSL_X509_load_certificate_file
|
||||||
#define X509_digest wolfSSL_X509_digest
|
#define X509_digest wolfSSL_X509_digest
|
||||||
|
#define X509_pubkey_digest wolfSSL_X509_pubkey_digest
|
||||||
#define X509_get_ext_count wolfSSL_X509_get_ext_count
|
#define X509_get_ext_count wolfSSL_X509_get_ext_count
|
||||||
#define X509_get_ext_d2i wolfSSL_X509_get_ext_d2i
|
#define X509_get_ext_d2i wolfSSL_X509_get_ext_d2i
|
||||||
#define X509V3_EXT_i2d wolfSSL_X509V3_EXT_i2d
|
#define X509V3_EXT_i2d wolfSSL_X509V3_EXT_i2d
|
||||||
@@ -1126,6 +1127,7 @@ wolfSSL_X509_STORE_set_verify_cb((WOLFSSL_X509_STORE *)(s), (WOLFSSL_X509_STORE_
|
|||||||
|
|
||||||
#define SSL3_AD_BAD_CERTIFICATE bad_certificate
|
#define SSL3_AD_BAD_CERTIFICATE bad_certificate
|
||||||
#define SSL_AD_BAD_CERTIFICATE SSL3_AD_BAD_CERTIFICATE
|
#define SSL_AD_BAD_CERTIFICATE SSL3_AD_BAD_CERTIFICATE
|
||||||
|
#define SSL_AD_UNRECOGNIZED_NAME unrecognized_name
|
||||||
|
|
||||||
#define ASN1_STRFLGS_ESC_MSB 4
|
#define ASN1_STRFLGS_ESC_MSB 4
|
||||||
|
|
||||||
|
@@ -3477,6 +3477,8 @@ WOLFSSL_API void wolfSSL_X509V3_set_ctx(WOLFSSL_X509V3_CTX* ctx,
|
|||||||
WOLFSSL_API void wolfSSL_X509V3_set_ctx_nodb(WOLFSSL_X509V3_CTX* ctx);
|
WOLFSSL_API void wolfSSL_X509V3_set_ctx_nodb(WOLFSSL_X509V3_CTX* ctx);
|
||||||
WOLFSSL_API int wolfSSL_X509_digest(const WOLFSSL_X509* x509,
|
WOLFSSL_API int wolfSSL_X509_digest(const WOLFSSL_X509* x509,
|
||||||
const WOLFSSL_EVP_MD* digest, unsigned char* buf, unsigned int* len);
|
const WOLFSSL_EVP_MD* digest, unsigned char* buf, unsigned int* len);
|
||||||
|
WOLFSSL_API int wolfSSL_X509_pubkey_digest(const WOLFSSL_X509 *x509,
|
||||||
|
const WOLFSSL_EVP_MD *digest, unsigned char* buf, unsigned int* len);
|
||||||
WOLFSSL_API int wolfSSL_use_certificate(WOLFSSL* ssl, WOLFSSL_X509* x509);
|
WOLFSSL_API int wolfSSL_use_certificate(WOLFSSL* ssl, WOLFSSL_X509* x509);
|
||||||
WOLFSSL_API int wolfSSL_use_PrivateKey(WOLFSSL* ssl, WOLFSSL_EVP_PKEY* pkey);
|
WOLFSSL_API int wolfSSL_use_PrivateKey(WOLFSSL* ssl, WOLFSSL_EVP_PKEY* pkey);
|
||||||
WOLFSSL_API int wolfSSL_use_PrivateKey_ASN1(int pri, WOLFSSL* ssl,
|
WOLFSSL_API int wolfSSL_use_PrivateKey_ASN1(int pri, WOLFSSL* ssl,
|
||||||
|
Reference in New Issue
Block a user