| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 | /* Additional defines for WolfSSL, see * https://github.com/civetweb/civetweb/issues/583 *//* Required for WOLFSSL_X509 */#include <openssl/../internal.h>#define i2d_X509 cw_i2d_X509#define EVP_Digest cw_EVP_Digest/* i2d_X509 has no valid implementation in wolfssl * * The letters i and d in for example i2d_X509 stand for "internal" (that is an *internal C structure) * and " DER ". So that i2d_X509 converts from internal to DER. * * For OpenSSL 0.9.7 and later if *out is NULL memory will be allocated for a *buffer and the encoded * data written to it. In this case *out is not incremented and it points to the *start of the data * just written. */intcw_i2d_X509(struct WOLFSSL_X509 *x, unsigned char **out){	if (!x || !x->derCert) {		return -1;	}	const int ret = (int)x->derCert->length;	if (out && (ret > 0)) {		if (*out == NULL) {			*out = mg_malloc(ret);		}		if (*out != NULL) {			memcpy(*out, x->derCert->buffer, ret);		}	}	return ret;}/* EVP_Digest not in wolfssl */intcw_EVP_Digest(const void *data,              size_t count,              unsigned char *md,              unsigned int *size,              const EVP_MD *type,              ENGINE *impl){	EVP_MD_CTX *ctx = EVP_MD_CTX_new();	int ret;	if (ctx == NULL)		return 0;	/* EVP_MD_CTX_set_flags(ctx, EVP_MD_CTX_FLAG_ONESHOT); */	ret = EVP_DigestInit_ex(ctx, type, impl)	      && EVP_DigestUpdate(ctx, data, count)	      && EVP_DigestFinal_ex(ctx, md, size);	EVP_MD_CTX_free(ctx);	return ret;}/* * the variable SSL_OP_NO_TLSv1_1 is not defined within the context of * wolfssl but since the methods using the value are all stubs, we can * define it arbitrarily and it will not have any consequences */#define SSL_OP_NO_TLSv1_1 (0x10000000L)
 |