From 0f57ab51ea1ab48ad9550fbdf28081a9f11e276d Mon Sep 17 00:00:00 2001 From: dgsga <181612+dgsga@users.noreply.github.com> Date: Mon, 27 May 2024 19:52:00 +0100 Subject: [PATCH] Embedded SSL: Remove unused headers --- include/wolfssl/openssl/aes.h | 110 --- include/wolfssl/openssl/asn1.h | 192 ---- include/wolfssl/openssl/bio.h | 189 ---- include/wolfssl/openssl/buffer.h | 54 -- include/wolfssl/openssl/cmac.h | 62 -- include/wolfssl/openssl/conf.h | 113 --- include/wolfssl/openssl/crypto.h | 160 ---- include/wolfssl/openssl/dsa.h | 157 ---- include/wolfssl/openssl/ec.h | 414 --------- include/wolfssl/openssl/ec25519.h | 46 - include/wolfssl/openssl/ec448.h | 46 - include/wolfssl/openssl/ecdh.h | 49 - include/wolfssl/openssl/ecdsa.h | 81 -- include/wolfssl/openssl/ed25519.h | 49 - include/wolfssl/openssl/ed448.h | 49 - include/wolfssl/openssl/evp.h | 1291 --------------------------- include/wolfssl/openssl/fips_rand.h | 125 --- include/wolfssl/openssl/hmac.h | 94 -- include/wolfssl/openssl/kdf.h | 37 - include/wolfssl/openssl/lhash.h | 64 -- include/wolfssl/openssl/modes.h | 45 - include/wolfssl/openssl/objects.h | 78 -- include/wolfssl/openssl/opensslv.h | 66 -- include/wolfssl/openssl/pem.h | 280 ------ include/wolfssl/openssl/pkcs7.h | 110 --- include/wolfssl/openssl/rc4.h | 59 -- include/wolfssl/openssl/ripemd.h | 58 -- include/wolfssl/openssl/rsa.h | 249 ------ include/wolfssl/openssl/sha.h | 331 ------- include/wolfssl/openssl/sha3.h | 153 ---- include/wolfssl/openssl/stack.h | 61 -- include/wolfssl/openssl/tls1.h | 52 -- include/wolfssl/openssl/txt_db.h | 60 -- include/wolfssl/openssl/x509.h | 199 ----- include/wolfssl/openssl/x509_vfy.h | 47 - include/wolfssl/openssl/x509v3.h | 176 ---- 36 files changed, 5406 deletions(-) delete mode 100644 include/wolfssl/openssl/aes.h delete mode 100644 include/wolfssl/openssl/asn1.h delete mode 100644 include/wolfssl/openssl/bio.h delete mode 100644 include/wolfssl/openssl/buffer.h delete mode 100644 include/wolfssl/openssl/cmac.h delete mode 100644 include/wolfssl/openssl/conf.h delete mode 100644 include/wolfssl/openssl/crypto.h delete mode 100644 include/wolfssl/openssl/dsa.h delete mode 100644 include/wolfssl/openssl/ec.h delete mode 100644 include/wolfssl/openssl/ec25519.h delete mode 100644 include/wolfssl/openssl/ec448.h delete mode 100644 include/wolfssl/openssl/ecdh.h delete mode 100644 include/wolfssl/openssl/ecdsa.h delete mode 100644 include/wolfssl/openssl/ed25519.h delete mode 100644 include/wolfssl/openssl/ed448.h delete mode 100644 include/wolfssl/openssl/evp.h delete mode 100644 include/wolfssl/openssl/fips_rand.h delete mode 100644 include/wolfssl/openssl/hmac.h delete mode 100644 include/wolfssl/openssl/kdf.h delete mode 100644 include/wolfssl/openssl/lhash.h delete mode 100644 include/wolfssl/openssl/modes.h delete mode 100644 include/wolfssl/openssl/objects.h delete mode 100644 include/wolfssl/openssl/opensslv.h delete mode 100644 include/wolfssl/openssl/pem.h delete mode 100644 include/wolfssl/openssl/pkcs7.h delete mode 100644 include/wolfssl/openssl/rc4.h delete mode 100644 include/wolfssl/openssl/ripemd.h delete mode 100644 include/wolfssl/openssl/rsa.h delete mode 100644 include/wolfssl/openssl/sha.h delete mode 100644 include/wolfssl/openssl/sha3.h delete mode 100644 include/wolfssl/openssl/stack.h delete mode 100644 include/wolfssl/openssl/tls1.h delete mode 100644 include/wolfssl/openssl/txt_db.h delete mode 100644 include/wolfssl/openssl/x509.h delete mode 100644 include/wolfssl/openssl/x509_vfy.h delete mode 100644 include/wolfssl/openssl/x509v3.h diff --git a/include/wolfssl/openssl/aes.h b/include/wolfssl/openssl/aes.h deleted file mode 100644 index 38e71ae5b0..0000000000 --- a/include/wolfssl/openssl/aes.h +++ /dev/null @@ -1,110 +0,0 @@ -/* aes.h - * - * Copyright (C) 2006-2023 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - - - -/* aes.h defines mini des openssl compatibility layer - * - */ - - -#ifndef WOLFSSL_AES_H_ -#define WOLFSSL_AES_H_ - -#include - -#ifndef NO_AES -#include - -#if !defined(WOLFSSL_NO_OPENSSL_AES_LOW_LEVEL_API) && \ - defined(WC_AESFREE_IS_MANDATORY) -#define WOLFSSL_NO_OPENSSL_AES_LOW_LEVEL_API -#endif - -#ifndef WOLFSSL_NO_OPENSSL_AES_LOW_LEVEL_API - -#include /* for size_t */ - -#ifdef __cplusplus - extern "C" { -#endif - -/* This structure wrapper is done because there is no aes_new function with - * OpenSSL compatibility layer. This makes code working with an AES structure - * to need the size of the structure. */ -typedef struct WOLFSSL_AES_KEY { - ALIGN16 void *buf[(sizeof(Aes) / sizeof(void *)) + 1]; -} WOLFSSL_AES_KEY; -typedef WOLFSSL_AES_KEY AES_KEY; - -WOLFSSL_API int wolfSSL_AES_set_encrypt_key( - const unsigned char *key, const int bits, AES_KEY *aes); -WOLFSSL_API int wolfSSL_AES_set_decrypt_key( - const unsigned char *key, const int bits, AES_KEY *aes); -WOLFSSL_API void wolfSSL_AES_cbc_encrypt( - const unsigned char *in, unsigned char* out, size_t len, AES_KEY *key, - unsigned char* iv, const int enc); -WOLFSSL_API void wolfSSL_AES_ecb_encrypt( - const unsigned char *in, unsigned char* out, AES_KEY *key, const int enc); -WOLFSSL_API void wolfSSL_AES_cfb128_encrypt( - const unsigned char *in, unsigned char* out, size_t len, AES_KEY *key, - unsigned char* iv, int* num, const int enc); -WOLFSSL_API int wolfSSL_AES_wrap_key( - AES_KEY *key, const unsigned char *iv, unsigned char *out, - const unsigned char *in, unsigned int inlen); -WOLFSSL_API int wolfSSL_AES_unwrap_key( - AES_KEY *key, const unsigned char *iv, unsigned char *out, - const unsigned char *in, unsigned int inlen); - -#define AES_cbc_encrypt wolfSSL_AES_cbc_encrypt -#define AES_ecb_encrypt wolfSSL_AES_ecb_encrypt -#define AES_cfb128_encrypt wolfSSL_AES_cfb128_encrypt -#define AES_set_encrypt_key wolfSSL_AES_set_encrypt_key -#define AES_set_decrypt_key wolfSSL_AES_set_decrypt_key -#define AES_wrap_key wolfSSL_AES_wrap_key -#define AES_unwrap_key wolfSSL_AES_unwrap_key - -#ifdef WOLFSSL_AES_DIRECT -WOLFSSL_API void wolfSSL_AES_encrypt( - const unsigned char* input, unsigned char* output, AES_KEY *key); -WOLFSSL_API void wolfSSL_AES_decrypt( - const unsigned char* input, unsigned char* output, AES_KEY *key); - -#define AES_encrypt wolfSSL_AES_encrypt -#define AES_decrypt wolfSSL_AES_decrypt -#endif /* WOLFSSL_AES_DIRECT */ - -#ifndef AES_ENCRYPT -#define AES_ENCRYPT AES_ENCRYPTION -#endif -#ifndef AES_DECRYPT -#define AES_DECRYPT AES_DECRYPTION -#endif - -#ifdef __cplusplus - } /* extern "C" */ -#endif - -#endif /* !WOLFSSL_NO_OPENSSL_AES_LOW_LEVEL_API */ - -#endif /* NO_AES */ - -#endif /* WOLFSSL_AES_H_ */ diff --git a/include/wolfssl/openssl/asn1.h b/include/wolfssl/openssl/asn1.h deleted file mode 100644 index 12ad369807..0000000000 --- a/include/wolfssl/openssl/asn1.h +++ /dev/null @@ -1,192 +0,0 @@ -/* asn1.h - * - * Copyright (C) 2006-2023 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -/* asn1.h for openssl */ - -#ifndef WOLFSSL_ASN1_H_ -#define WOLFSSL_ASN1_H_ - -#include - -#define ASN1_STRING_new wolfSSL_ASN1_STRING_new -#define ASN1_STRING_type_new wolfSSL_ASN1_STRING_type_new -#define ASN1_STRING_type wolfSSL_ASN1_STRING_type -#define ASN1_STRING_set wolfSSL_ASN1_STRING_set -#define ASN1_OCTET_STRING_set wolfSSL_ASN1_STRING_set -#define ASN1_STRING_free wolfSSL_ASN1_STRING_free - -#define ASN1_get_object wolfSSL_ASN1_get_object -#define d2i_ASN1_OBJECT wolfSSL_d2i_ASN1_OBJECT -#define c2i_ASN1_OBJECT wolfSSL_c2i_ASN1_OBJECT - -#define V_ASN1_INTEGER 0x02 -#define V_ASN1_OCTET_STRING 0x04 /* tag for ASN1_OCTET_STRING */ -#define V_ASN1_NEG 0x100 -#define V_ASN1_NEG_INTEGER (2 | V_ASN1_NEG) -#define V_ASN1_NEG_ENUMERATED (10 | V_ASN1_NEG) - -/* Type for ASN1_print_ex */ -# define ASN1_STRFLGS_ESC_2253 1 -# define ASN1_STRFLGS_ESC_CTRL 2 -# define ASN1_STRFLGS_ESC_MSB 4 -# define ASN1_STRFLGS_ESC_QUOTE 8 -# define ASN1_STRFLGS_UTF8_CONVERT 0x10 -# define ASN1_STRFLGS_IGNORE_TYPE 0x20 -# define ASN1_STRFLGS_SHOW_TYPE 0x40 -# define ASN1_STRFLGS_DUMP_ALL 0x80 -# define ASN1_STRFLGS_DUMP_UNKNOWN 0x100 -# define ASN1_STRFLGS_DUMP_DER 0x200 -# define ASN1_STRFLGS_RFC2253 (ASN1_STRFLGS_ESC_2253 | \ - ASN1_STRFLGS_ESC_CTRL | \ - ASN1_STRFLGS_ESC_MSB | \ - ASN1_STRFLGS_UTF8_CONVERT | \ - ASN1_STRFLGS_DUMP_UNKNOWN | \ - ASN1_STRFLGS_DUMP_DER) - -#define MBSTRING_UTF8 0x1000 -#define MBSTRING_ASC 0x1001 -#define MBSTRING_BMP 0x1002 -#define MBSTRING_UNIV 0x1004 - -#define ASN1_UTCTIME_print wolfSSL_ASN1_UTCTIME_print -#define ASN1_TIME_check wolfSSL_ASN1_TIME_check -#define ASN1_TIME_diff wolfSSL_ASN1_TIME_diff -#define ASN1_TIME_compare wolfSSL_ASN1_TIME_compare -#define ASN1_TIME_set wolfSSL_ASN1_TIME_set - -#define V_ASN1_EOC 0 -#define V_ASN1_NULL 5 -#define V_ASN1_OBJECT 6 -#define V_ASN1_UTF8STRING 12 -#define V_ASN1_SEQUENCE 16 -#define V_ASN1_SET 17 -#define V_ASN1_PRINTABLESTRING 19 -#define V_ASN1_T61STRING 20 -#define V_ASN1_IA5STRING 22 -#define V_ASN1_UTCTIME 23 -#define V_ASN1_GENERALIZEDTIME 24 -#define V_ASN1_UNIVERSALSTRING 28 -#define V_ASN1_BMPSTRING 30 - - -#define V_ASN1_CONSTRUCTED 0x20 - -#define ASN1_STRING_FLAG_BITS_LEFT 0x008 -#define ASN1_STRING_FLAG_NDEF 0x010 -#define ASN1_STRING_FLAG_CONT 0x020 -#define ASN1_STRING_FLAG_MSTRING 0x040 -#define ASN1_STRING_FLAG_EMBED 0x080 - -/* X.509 PKI size limits from RFC2459 (appendix A) */ -/* internally our limit is CTC_NAME_SIZE (64) - overridden with WC_CTC_NAME_SIZE */ -#define ub_name CTC_NAME_SIZE /* 32768 */ -#define ub_common_name CTC_NAME_SIZE /* 64 */ -#define ub_locality_name CTC_NAME_SIZE /* 128 */ -#define ub_state_name CTC_NAME_SIZE /* 128 */ -#define ub_organization_name CTC_NAME_SIZE /* 64 */ -#define ub_organization_unit_name CTC_NAME_SIZE /* 64 */ -#define ub_title CTC_NAME_SIZE /* 64 */ -#define ub_email_address CTC_NAME_SIZE /* 128 */ - - -WOLFSSL_API WOLFSSL_ASN1_INTEGER *wolfSSL_BN_to_ASN1_INTEGER( - const WOLFSSL_BIGNUM *bn, WOLFSSL_ASN1_INTEGER *ai); - -WOLFSSL_API void wolfSSL_ASN1_TYPE_set(WOLFSSL_ASN1_TYPE *a, int type, void *value); - -WOLFSSL_API int wolfSSL_ASN1_get_object(const unsigned char **in, long *len, int *tag, - int *cls, long inLen); - -WOLFSSL_API WOLFSSL_ASN1_OBJECT *wolfSSL_c2i_ASN1_OBJECT(WOLFSSL_ASN1_OBJECT **a, - const unsigned char **pp, long len); - -#ifdef OPENSSL_ALL -/* IMPLEMENT_ASN1_FUNCTIONS is strictly for external use only. Internally - * we don't use this. Some projects use OpenSSL to implement ASN1 types and - * this section is only to provide those projects with ASN1 functionality. */ -typedef struct { - size_t offset; /* Offset of this field in structure */ - byte type; /* The type of the member as defined in - * WOLFSSL_ASN1_TYPES */ -} WOLFSSL_ASN1_TEMPLATE; - -typedef struct { - byte type; /* One of the ASN_Tags types */ - const WOLFSSL_ASN1_TEMPLATE *members; /* If SEQUENCE or CHOICE this - * contains the contents */ - size_t mcount; /* Number of members if SEQUENCE - * or CHOICE */ - size_t size; /* Structure size */ -} WOLFSSL_ASN1_ITEM; - -typedef enum { - WOLFSSL_X509_ALGOR_ASN1 = 0, - WOLFSSL_ASN1_BIT_STRING_ASN1, - WOLFSSL_ASN1_INTEGER_ASN1, -} WOLFSSL_ASN1_TYPES; - -#define ASN1_SEQUENCE(type) \ - static const WOLFSSL_ASN1_TEMPLATE type##_member_data[] - -#define ASN1_SIMPLE(type, member, member_type) \ - { OFFSETOF(type, member), \ - WOLFSSL_##member_type##_ASN1 } - -#define ASN1_SEQUENCE_END(type) \ - ; \ - const WOLFSSL_ASN1_ITEM type##_template_data = { \ - ASN_SEQUENCE, \ - type##_member_data, \ - sizeof(type##_member_data) / sizeof(WOLFSSL_ASN1_TEMPLATE), \ - sizeof(type) \ - }; - -WOLFSSL_API void *wolfSSL_ASN1_item_new(const WOLFSSL_ASN1_ITEM *tpl); -WOLFSSL_API void wolfSSL_ASN1_item_free(void *val, const WOLFSSL_ASN1_ITEM *tpl); -WOLFSSL_API int wolfSSL_ASN1_item_i2d(const void *src, byte **dest, - const WOLFSSL_ASN1_ITEM *tpl); - -/* Need function declaration otherwise compiler complains */ -/* // NOLINTBEGIN(readability-named-parameter) */ -#define IMPLEMENT_ASN1_FUNCTIONS(type) \ - type *type##_new(void); \ - type *type##_new(void){ \ - return (type*)wolfSSL_ASN1_item_new(&type##_template_data); \ - } \ - void type##_free(type *t); \ - void type##_free(type *t){ \ - wolfSSL_ASN1_item_free(t, &type##_template_data); \ - } \ - int i2d_##type(type *src, byte **dest); \ - int i2d_##type(type *src, byte **dest) \ - { \ - return wolfSSL_ASN1_item_i2d(src, dest, &type##_template_data);\ - } -/* // NOLINTEND(readability-named-parameter) */ - -#endif /* OPENSSL_ALL */ - -#define BN_to_ASN1_INTEGER wolfSSL_BN_to_ASN1_INTEGER -#define ASN1_TYPE_set wolfSSL_ASN1_TYPE_set -#define ASN1_TYPE_new wolfSSL_ASN1_TYPE_new -#define ASN1_TYPE_free wolfSSL_ASN1_TYPE_free - -#endif /* WOLFSSL_ASN1_H_ */ diff --git a/include/wolfssl/openssl/bio.h b/include/wolfssl/openssl/bio.h deleted file mode 100644 index 9206b092a9..0000000000 --- a/include/wolfssl/openssl/bio.h +++ /dev/null @@ -1,189 +0,0 @@ -/* bio.h - * - * Copyright (C) 2006-2023 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -/* bio.h for openssl */ - - -#ifndef WOLFSSL_BIO_H_ -#define WOLFSSL_BIO_H_ - -#include - -#ifdef __cplusplus - extern "C" { -#endif - -#if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL) - -#define BIO_FLAGS_BASE64_NO_NL WOLFSSL_BIO_FLAG_BASE64_NO_NL -#define BIO_FLAGS_READ WOLFSSL_BIO_FLAG_READ -#define BIO_FLAGS_WRITE WOLFSSL_BIO_FLAG_WRITE -#define BIO_FLAGS_IO_SPECIAL WOLFSSL_BIO_FLAG_IO_SPECIAL -#define BIO_FLAGS_SHOULD_RETRY WOLFSSL_BIO_FLAG_RETRY - -#define BIO_new_fp wolfSSL_BIO_new_fp -#if defined(OPENSSL_ALL) \ - || defined(HAVE_STUNNEL) \ - || defined(HAVE_LIGHTY) \ - || defined(WOLFSSL_MYSQL_COMPATIBLE) \ - || defined(WOLFSSL_HAPROXY) \ - || defined(OPENSSL_EXTRA) -#define BIO_new_file wolfSSL_BIO_new_file -#endif -#define BIO_new_fp wolfSSL_BIO_new_fp -#define BIO_ctrl wolfSSL_BIO_ctrl -#define BIO_ctrl_pending wolfSSL_BIO_ctrl_pending -#define BIO_wpending wolfSSL_BIO_wpending -#define BIO_get_mem_ptr wolfSSL_BIO_get_mem_ptr -#ifdef OPENSSL_ALL -#define BIO_set_mem_buf wolfSSL_BIO_set_mem_buf -#endif -#define BIO_int_ctrl wolfSSL_BIO_int_ctrl -#define BIO_reset wolfSSL_BIO_reset -#define BIO_s_file wolfSSL_BIO_s_file -#define BIO_s_bio wolfSSL_BIO_s_bio -#define BIO_s_socket wolfSSL_BIO_s_socket -#define BIO_s_accept wolfSSL_BIO_s_socket -#define BIO_set_fd wolfSSL_BIO_set_fd -#define BIO_set_close wolfSSL_BIO_set_close -#define BIO_ctrl_reset_read_request wolfSSL_BIO_ctrl_reset_read_request -#define BIO_set_write_buf_size wolfSSL_BIO_set_write_buf_size -#define BIO_make_bio_pair wolfSSL_BIO_make_bio_pair -#define BIO_up_ref wolfSSL_BIO_up_ref - -#define BIO_new_fd wolfSSL_BIO_new_fd -#define BIO_set_fp wolfSSL_BIO_set_fp -#define BIO_get_fp wolfSSL_BIO_get_fp -#define BIO_seek wolfSSL_BIO_seek -#define BIO_tell wolfSSL_BIO_tell -#define BIO_write_filename wolfSSL_BIO_write_filename -#define BIO_set_mem_eof_return wolfSSL_BIO_set_mem_eof_return - -#define BIO_find_type wolfSSL_BIO_find_type -#define BIO_next wolfSSL_BIO_next -#define BIO_gets wolfSSL_BIO_gets -#define BIO_puts wolfSSL_BIO_puts - -#define BIO_should_retry wolfSSL_BIO_should_retry -#define BIO_should_read wolfSSL_BIO_should_read -#define BIO_should_write wolfSSL_BIO_should_write - -#define BIO_TYPE_FILE WOLFSSL_BIO_FILE -#define BIO_TYPE_BIO WOLFSSL_BIO_BIO -#define BIO_TYPE_MEM WOLFSSL_BIO_MEMORY -#define BIO_TYPE_BASE64 WOLFSSL_BIO_BASE64 - -#define BIO_vprintf wolfSSL_BIO_vprintf -#define BIO_printf wolfSSL_BIO_printf -#define BIO_dump wolfSSL_BIO_dump - -/* BIO info callback */ -#define BIO_CB_FREE WOLFSSL_BIO_CB_FREE -#define BIO_CB_READ WOLFSSL_BIO_CB_READ -#define BIO_CB_WRITE WOLFSSL_BIO_CB_WRITE -#define BIO_CB_PUTS WOLFSSL_BIO_CB_PUTS -#define BIO_CB_GETS WOLFSSL_BIO_CB_GETS -#define BIO_CB_CTRL WOLFSSL_BIO_CB_CTRL -#define BIO_CB_RETURN WOLFSSL_BIO_CB_RETURN - -#define BIO_set_callback wolfSSL_BIO_set_callback -#define BIO_get_callback wolfSSL_BIO_get_callback -#define BIO_set_callback_arg wolfSSL_BIO_set_callback_arg -#define BIO_get_callback_arg wolfSSL_BIO_get_callback_arg - -/* BIO for 1.1.0 or later */ -#define BIO_set_init wolfSSL_BIO_set_init -#define BIO_get_data wolfSSL_BIO_get_data -#define BIO_set_data wolfSSL_BIO_set_data -#define BIO_get_shutdown wolfSSL_BIO_get_shutdown -#define BIO_set_shutdown wolfSSL_BIO_set_shutdown - -#define BIO_get_fd wolfSSL_BIO_get_fd - -#define BIO_clear_flags wolfSSL_BIO_clear_flags -#define BIO_set_ex_data wolfSSL_BIO_set_ex_data -#define BIO_get_ex_data wolfSSL_BIO_get_ex_data - -/* helper to set specific retry/read flags */ -#define BIO_set_retry_read(bio)\ - wolfSSL_BIO_set_flags((bio), WOLFSSL_BIO_FLAG_RETRY | WOLFSSL_BIO_FLAG_READ) -#define BIO_set_retry_write(bio)\ - wolfSSL_BIO_set_flags((bio), WOLFSSL_BIO_FLAG_RETRY | WOLFSSL_BIO_FLAG_WRITE) - -#define BIO_clear_retry_flags wolfSSL_BIO_clear_retry_flags - -#define BIO_meth_new wolfSSL_BIO_meth_new -#define BIO_meth_set_write wolfSSL_BIO_meth_set_write -#define BIO_meth_free wolfSSL_BIO_meth_free -#define BIO_meth_set_write wolfSSL_BIO_meth_set_write -#define BIO_meth_set_read wolfSSL_BIO_meth_set_read -#define BIO_meth_set_puts wolfSSL_BIO_meth_set_puts -#define BIO_meth_set_gets wolfSSL_BIO_meth_set_gets -#define BIO_meth_set_ctrl wolfSSL_BIO_meth_set_ctrl -#define BIO_meth_set_create wolfSSL_BIO_meth_set_create -#define BIO_meth_set_destroy wolfSSL_BIO_meth_set_destroy - -#define BIO_snprintf XSNPRINTF - -/* BIO CTRL */ -#define BIO_CTRL_RESET 1 -#define BIO_CTRL_EOF 2 -#define BIO_CTRL_INFO 3 -#define BIO_CTRL_SET 4 -#define BIO_CTRL_GET 5 -#define BIO_CTRL_PUSH 6 -#define BIO_CTRL_POP 7 -#define BIO_CTRL_GET_CLOSE 8 -#define BIO_CTRL_SET_CLOSE 9 -#define BIO_CTRL_PENDING 10 -#define BIO_CTRL_FLUSH 11 -#define BIO_CTRL_DUP 12 -#define BIO_CTRL_WPENDING 13 - -#define BIO_C_SET_FILE_PTR 106 -#define BIO_C_GET_FILE_PTR 107 -#define BIO_C_SET_FILENAME 108 -#define BIO_C_SET_BUF_MEM 114 -#define BIO_C_GET_BUF_MEM_PTR 115 -#define BIO_C_FILE_SEEK 128 -#define BIO_C_SET_BUF_MEM_EOF_RETURN 130 -#define BIO_C_SET_WRITE_BUF_SIZE 136 -#define BIO_C_MAKE_BIO_PAIR 138 - -#define BIO_CTRL_DGRAM_QUERY_MTU 40 - -#define BIO_FP_TEXT 0x00 -#define BIO_NOCLOSE 0x00 -#define BIO_CLOSE 0x01 - -#define BIO_FP_WRITE 0x04 - -/* You shouldn't free up or change the data if BIO_FLAGS_MEM_RDONLY is set */ -#define BIO_FLAGS_MEM_RDONLY 0x200 - -#endif /* OPENSSL_EXTRA || OPENSSL_EXTRA_X509_SMALL */ - - -#ifdef __cplusplus - } /* extern "C" */ -#endif - -#endif /* WOLFSSL_BIO_H_ */ diff --git a/include/wolfssl/openssl/buffer.h b/include/wolfssl/openssl/buffer.h deleted file mode 100644 index 52a7813ed3..0000000000 --- a/include/wolfssl/openssl/buffer.h +++ /dev/null @@ -1,54 +0,0 @@ -/* buffer.h - * - * Copyright (C) 2006-2023 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - - -#ifndef WOLFSSL_BUFFER_H_ -#define WOLFSSL_BUFFER_H_ - -#include -#include - -#ifdef __cplusplus - extern "C" { -#endif - - -WOLFSSL_API WOLFSSL_BUF_MEM* wolfSSL_BUF_MEM_new(void); -WOLFSSL_API int wolfSSL_BUF_MEM_grow(WOLFSSL_BUF_MEM* buf, size_t len); -WOLFSSL_API int wolfSSL_BUF_MEM_grow_ex(WOLFSSL_BUF_MEM* buf, size_t len, - char zeroFill); -WOLFSSL_API int wolfSSL_BUF_MEM_resize(WOLFSSL_BUF_MEM* buf, size_t len); -WOLFSSL_API void wolfSSL_BUF_MEM_free(WOLFSSL_BUF_MEM* buf); - - -#define BUF_MEM_new wolfSSL_BUF_MEM_new -#define BUF_MEM_grow wolfSSL_BUF_MEM_grow -#define BUF_MEM_free wolfSSL_BUF_MEM_free - -#define BUF_strdup strdup -#define BUF_strlcpy wc_strlcpy -#define BUF_strlcat wc_strlcat - -#ifdef __cplusplus - } /* extern "C" */ -#endif - -#endif /* WOLFSSL_BUFFER_H_ */ diff --git a/include/wolfssl/openssl/cmac.h b/include/wolfssl/openssl/cmac.h deleted file mode 100644 index 5ae013c124..0000000000 --- a/include/wolfssl/openssl/cmac.h +++ /dev/null @@ -1,62 +0,0 @@ -/* cmac.h - * - * Copyright (C) 2006-2023 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -#ifndef WOLFSSL_CMAC_H_ -#define WOLFSSL_CMAC_H_ - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct WOLFSSL_CMAC_CTX { - void* internal; /* internal Cmac object */ - WOLFSSL_EVP_CIPHER_CTX* cctx; -} WOLFSSL_CMAC_CTX; - -typedef WOLFSSL_CMAC_CTX CMAC_CTX; - -WOLFSSL_API WOLFSSL_CMAC_CTX* wolfSSL_CMAC_CTX_new(void); -WOLFSSL_API void wolfSSL_CMAC_CTX_free(WOLFSSL_CMAC_CTX *ctx); -WOLFSSL_API WOLFSSL_EVP_CIPHER_CTX* wolfSSL_CMAC_CTX_get0_cipher_ctx( - WOLFSSL_CMAC_CTX* ctx); -WOLFSSL_API int wolfSSL_CMAC_Init( - WOLFSSL_CMAC_CTX* ctx, const void *key, size_t keyLen, - const WOLFSSL_EVP_CIPHER* cipher, WOLFSSL_ENGINE* engine); -WOLFSSL_API int wolfSSL_CMAC_Update( - WOLFSSL_CMAC_CTX* ctx, const void* data, size_t len); -WOLFSSL_API int wolfSSL_CMAC_Final( - WOLFSSL_CMAC_CTX* ctx, unsigned char* out, size_t* len); - -#define CMAC_CTX_new wolfSSL_CMAC_CTX_new -#define CMAC_CTX_free wolfSSL_CMAC_CTX_free -#define CMAC_CTX_get0_cipher_ctx wolfSSL_CMAC_CTX_get0_cipher_ctx -#define CMAC_Init wolfSSL_CMAC_Init -#define CMAC_Update wolfSSL_CMAC_Update -#define CMAC_Final wolfSSL_CMAC_Final - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* WOLFSSL_CMAC_H_ */ diff --git a/include/wolfssl/openssl/conf.h b/include/wolfssl/openssl/conf.h deleted file mode 100644 index 7c3d721067..0000000000 --- a/include/wolfssl/openssl/conf.h +++ /dev/null @@ -1,113 +0,0 @@ -/* conf.h - * - * Copyright (C) 2006-2023 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -/* conf.h for openSSL */ - -#ifndef WOLFSSL_conf_H_ -#define WOLFSSL_conf_H_ - -#ifdef __cplusplus - extern "C" { -#endif - -#include -#include - -typedef struct WOLFSSL_CONF_VALUE { - char *section; - char *name; - char *value; -} WOLFSSL_CONF_VALUE; - -/* ssl.h requires WOLFSSL_CONF_VALUE */ -#include - -typedef struct WOLFSSL_CONF { - void *meth_data; - WOLF_LHASH_OF(WOLFSSL_CONF_VALUE) *data; -} WOLFSSL_CONF; - -typedef WOLFSSL_CONF CONF; -typedef WOLFSSL_CONF_VALUE CONF_VALUE; - -#ifdef OPENSSL_EXTRA - -WOLFSSL_API WOLFSSL_CONF_VALUE *wolfSSL_CONF_VALUE_new(void); -WOLFSSL_API int wolfSSL_CONF_add_string(WOLFSSL_CONF *conf, - WOLFSSL_CONF_VALUE *section, WOLFSSL_CONF_VALUE *value); -WOLFSSL_API void wolfSSL_X509V3_conf_free(WOLFSSL_CONF_VALUE *val); - -WOLFSSL_API WOLFSSL_CONF *wolfSSL_NCONF_new(void *meth); -WOLFSSL_API char *wolfSSL_NCONF_get_string(const WOLFSSL_CONF *conf, - const char *group, const char *name); -WOLFSSL_API int wolfSSL_NCONF_get_number(const CONF *conf, const char *group, - const char *name, long *result); -WOLFSSL_API WOLFSSL_STACK *wolfSSL_NCONF_get_section( - const WOLFSSL_CONF *conf, const char *section); -WOLFSSL_API int wolfSSL_NCONF_load(WOLFSSL_CONF *conf, const char *file, long *eline); -WOLFSSL_API void wolfSSL_NCONF_free(WOLFSSL_CONF *conf); - -WOLFSSL_API WOLFSSL_CONF_VALUE *wolfSSL_lh_WOLFSSL_CONF_VALUE_retrieve( - WOLF_LHASH_OF(WOLFSSL_CONF_VALUE) *sk, WOLFSSL_CONF_VALUE *data); - -WOLFSSL_API int wolfSSL_CONF_modules_load(const WOLFSSL_CONF *cnf, const char *appname, - unsigned long flags); -WOLFSSL_API WOLFSSL_CONF_VALUE *wolfSSL_CONF_new_section(WOLFSSL_CONF *conf, - const char *section); -WOLFSSL_API WOLFSSL_CONF_VALUE *wolfSSL_CONF_get_section(WOLFSSL_CONF *conf, - const char *section); - -WOLFSSL_API WOLFSSL_X509_EXTENSION* wolfSSL_X509V3_EXT_nconf_nid(WOLFSSL_CONF* conf, - WOLFSSL_X509V3_CTX *ctx, int nid, const char *value); -WOLFSSL_API WOLFSSL_X509_EXTENSION* wolfSSL_X509V3_EXT_nconf(WOLFSSL_CONF *conf, - WOLFSSL_X509V3_CTX *ctx, const char *sName, const char *value); - -#define sk_CONF_VALUE_new wolfSSL_sk_CONF_VALUE_new -#define sk_CONF_VALUE_free wolfSSL_sk_CONF_VALUE_free -#define sk_CONF_VALUE_pop_free(a,b) wolfSSL_sk_CONF_VALUE_free(a) -#define sk_CONF_VALUE_num wolfSSL_sk_CONF_VALUE_num -#define sk_CONF_VALUE_value wolfSSL_sk_CONF_VALUE_value - -#define lh_CONF_VALUE_retrieve wolfSSL_lh_WOLFSSL_CONF_VALUE_retrieve -#define lh_CONF_VALUE_insert wolfSSL_sk_CONF_VALUE_push - -#define NCONF_new wolfSSL_NCONF_new -#define NCONF_free wolfSSL_NCONF_free -#define NCONF_get_string wolfSSL_NCONF_get_string -#define NCONF_get_section wolfSSL_NCONF_get_section -#define NCONF_get_number wolfSSL_NCONF_get_number -#define NCONF_load wolfSSL_NCONF_load - -#define CONF_modules_load wolfSSL_CONF_modules_load -#define _CONF_new_section wolfSSL_CONF_new_section -#define _CONF_get_section wolfSSL_CONF_get_section - -#define X509V3_EXT_nconf_nid wolfSSL_X509V3_EXT_nconf_nid -#define X509V3_EXT_nconf wolfSSL_X509V3_EXT_nconf -#define X509V3_conf_free wolfSSL_X509V3_conf_free - -#endif /* OPENSSL_EXTRA */ - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* WOLFSSL_conf_H_ */ diff --git a/include/wolfssl/openssl/crypto.h b/include/wolfssl/openssl/crypto.h deleted file mode 100644 index a787da28d1..0000000000 --- a/include/wolfssl/openssl/crypto.h +++ /dev/null @@ -1,160 +0,0 @@ -/* crypto.h - * - * Copyright (C) 2006-2023 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -/* crypto.h for openSSL */ - -#ifndef WOLFSSL_CRYPTO_H_ -#define WOLFSSL_CRYPTO_H_ - -#include - -typedef struct WOLFSSL_INIT_SETTINGS { - char* appname; -} WOLFSSL_INIT_SETTINGS; -typedef WOLFSSL_INIT_SETTINGS OPENSSL_INIT_SETTINGS; - -typedef struct WOLFSSL_CRYPTO_THREADID { - int dummy; -} WOLFSSL_CRYPTO_THREADID; -typedef struct crypto_threadid_st CRYPTO_THREADID; - -typedef struct CRYPTO_EX_DATA CRYPTO_EX_DATA; - -#ifdef HAVE_EX_DATA -typedef WOLFSSL_CRYPTO_EX_new CRYPTO_new_func; -typedef WOLFSSL_CRYPTO_EX_dup CRYPTO_dup_func; -typedef WOLFSSL_CRYPTO_EX_free CRYPTO_free_func; -#endif - -#include -#include - -#ifdef WOLFSSL_PREFIX -#include "prefix_crypto.h" -#endif - -#ifdef __cplusplus - extern "C" { -#endif - -WOLFSSL_API const char* wolfSSLeay_version(int type); -WOLFSSL_API unsigned long wolfSSLeay(void); -WOLFSSL_API unsigned long wolfSSL_OpenSSL_version_num(void); - -#if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL) -WOLFSSL_API void wolfSSL_OPENSSL_free(void* p); -#endif - -#ifdef OPENSSL_EXTRA -WOLFSSL_API void *wolfSSL_OPENSSL_malloc(size_t a); -WOLFSSL_API int wolfSSL_OPENSSL_hexchar2int(unsigned char c); -WOLFSSL_API unsigned char *wolfSSL_OPENSSL_hexstr2buf(const char *str, long *len); - -WOLFSSL_API int wolfSSL_OPENSSL_init_crypto(word64 opts, const OPENSSL_INIT_SETTINGS *settings); -#endif - -/* class index for wolfSSL_CRYPTO_get_ex_new_index */ -#define CRYPTO_EX_INDEX_SSL WOLF_CRYPTO_EX_INDEX_SSL -#define CRYPTO_EX_INDEX_SSL_CTX WOLF_CRYPTO_EX_INDEX_SSL_CTX -#define CRYPTO_EX_INDEX_SSL_SESSION WOLF_CRYPTO_EX_INDEX_SSL_SESSION -#define CRYPTO_EX_INDEX_X509 WOLF_CRYPTO_EX_INDEX_X509 -#define CRYPTO_EX_INDEX_X509_STORE WOLF_CRYPTO_EX_INDEX_X509_STORE -#define CRYPTO_EX_INDEX_X509_STORE_CTX WOLF_CRYPTO_EX_INDEX_X509_STORE_CTX -#define CRYPTO_EX_INDEX_DH WOLF_CRYPTO_EX_INDEX_DH -#define CRYPTO_EX_INDEX_DSA WOLF_CRYPTO_EX_INDEX_DSA -#define CRYPTO_EX_INDEX_EC_KEY WOLF_CRYPTO_EX_INDEX_EC_KEY -#define CRYPTO_EX_INDEX_RSA WOLF_CRYPTO_EX_INDEX_RSA -#define CRYPTO_EX_INDEX_ENGINE WOLF_CRYPTO_EX_INDEX_ENGINE -#define CRYPTO_EX_INDEX_UI WOLF_CRYPTO_EX_INDEX_UI -#define CRYPTO_EX_INDEX_BIO WOLF_CRYPTO_EX_INDEX_BIO -#define CRYPTO_EX_INDEX_APP WOLF_CRYPTO_EX_INDEX_APP -#define CRYPTO_EX_INDEX_UI_METHOD WOLF_CRYPTO_EX_INDEX_UI_METHOD -#define CRYPTO_EX_INDEX_DRBG WOLF_CRYPTO_EX_INDEX_DRBG -#define CRYPTO_EX_INDEX__COUNT WOLF_CRYPTO_EX_INDEX__COUNT - -#define crypto_threadid_st WOLFSSL_CRYPTO_THREADID -#define CRYPTO_THREADID WOLFSSL_CRYPTO_THREADID - -#define SSLeay_version wolfSSLeay_version -#define SSLeay wolfSSLeay -#define OpenSSL_version_num wolfSSL_OpenSSL_version_num -#define SSLEAY_VERSION_NUMBER OPENSSL_VERSION_NUMBER -#define SSLEAY_VERSION OPENSSL_VERSION - -#define CRYPTO_lock wc_LockMutex_ex - -/* this function was used to set the default malloc, free, and realloc */ -#define CRYPTO_malloc_init() 0 /* CRYPTO_malloc_init is not needed */ - -#define OPENSSL_free wolfSSL_OPENSSL_free -#define OPENSSL_malloc wolfSSL_OPENSSL_malloc -#define OPENSSL_hexchar2int wolfSSL_OPENSSL_hexchar2int -#define OPENSSL_hexstr2buf wolfSSL_OPENSSL_hexstr2buf - -#define OPENSSL_INIT_ENGINE_ALL_BUILTIN 0x00000001L -#define OPENSSL_INIT_ADD_ALL_CIPHERS 0x00000004L -#define OPENSSL_INIT_ADD_ALL_DIGESTS 0x00000008L -#define OPENSSL_INIT_LOAD_CONFIG 0x00000040L - -#define OPENSSL_init_crypto wolfSSL_OPENSSL_init_crypto - -#ifdef WOLFSSL_OPENVPN -# define OPENSSL_assert(e) \ - if (!(e)) { \ - fprintf(stderr, "%s:%d wolfSSL internal error: assertion failed: " #e, \ - __FILE__, __LINE__); \ - raise(SIGABRT); \ - _exit(3); \ - } -#endif - -#if defined(OPENSSL_ALL) || defined(HAVE_STUNNEL) || defined(WOLFSSL_NGINX) || \ - defined(WOLFSSL_HAPROXY) || defined(OPENSSL_EXTRA) || defined(HAVE_EX_DATA) -#define CRYPTO_set_mem_ex_functions wolfSSL_CRYPTO_set_mem_ex_functions -#define FIPS_mode wolfSSL_FIPS_mode -#define FIPS_mode_set wolfSSL_FIPS_mode_set -#define CRYPTO_THREADID_set_callback wolfSSL_THREADID_set_callback -#define CRYPTO_THREADID_set_numeric wolfSSL_THREADID_set_numeric -#define CRYPTO_THREADID_current wolfSSL_THREADID_current -#define CRYPTO_THREADID_hash wolfSSL_THREADID_hash - -#define CRYPTO_r_lock wc_LockMutex_ex -#define CRYPTO_unlock wc_LockMutex_ex - -#define CRYPTO_THREAD_lock wc_LockMutex -#define CRYPTO_THREAD_r_lock wc_LockMutex -#define CRYPTO_THREAD_unlock wc_UnLockMutex - -#define CRYPTO_THREAD_lock_new wc_InitAndAllocMutex -#define CRYPTO_THREAD_read_lock wc_LockMutex -#define CRYPTO_THREAD_write_lock wc_LockMutex -#define CRYPTO_THREAD_lock_free wc_FreeMutex - -#define CRYPTO_get_ex_data wolfSSL_CRYPTO_get_ex_data -#define CRYPTO_set_ex_data wolfSSL_CRYPTO_set_ex_data - -#endif /* OPENSSL_ALL || HAVE_STUNNEL || WOLFSSL_NGINX || WOLFSSL_HAPROXY || HAVE_EX_DATA */ - -#ifdef __cplusplus - } /* extern "C" */ -#endif - -#endif /* header */ diff --git a/include/wolfssl/openssl/dsa.h b/include/wolfssl/openssl/dsa.h deleted file mode 100644 index 5a8c31c708..0000000000 --- a/include/wolfssl/openssl/dsa.h +++ /dev/null @@ -1,157 +0,0 @@ -/* dsa.h - * - * Copyright (C) 2006-2023 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -/* dsa.h for openSSL */ - - -#ifndef WOLFSSL_DSA_H_ -#define WOLFSSL_DSA_H_ - -#include - -#ifdef __cplusplus - extern "C" { -#endif - -typedef struct WOLFSSL_DSA_SIG { - WOLFSSL_BIGNUM *r; - WOLFSSL_BIGNUM *s; -} WOLFSSL_DSA_SIG; - -#ifndef WOLFSSL_DSA_TYPE_DEFINED /* guard on redeclaration */ -typedef struct WOLFSSL_DSA WOLFSSL_DSA; -#define WOLFSSL_DSA_TYPE_DEFINED -#endif - -struct WOLFSSL_DSA { - WOLFSSL_BIGNUM* p; - WOLFSSL_BIGNUM* q; - WOLFSSL_BIGNUM* g; - WOLFSSL_BIGNUM* pub_key; /* our y */ - WOLFSSL_BIGNUM* priv_key; /* our x */ - void* internal; /* our Dsa Key */ - char inSet; /* internal set from external ? */ - char exSet; /* external set from internal ? */ -}; - - -WOLFSSL_API WOLFSSL_DSA* wolfSSL_DSA_new(void); -WOLFSSL_API void wolfSSL_DSA_free(WOLFSSL_DSA* dsa); -#if !defined(NO_FILESYSTEM) && !defined(NO_STDIO_FILESYSTEM) -WOLFSSL_API int wolfSSL_DSA_print_fp(XFILE fp, WOLFSSL_DSA* dsa, int indent); -#endif /* !NO_FILESYSTEM && NO_STDIO_FILESYSTEM */ - -WOLFSSL_API int wolfSSL_DSA_generate_key(WOLFSSL_DSA* dsa); - -typedef void (*WOLFSSL_BN_CB)(int i, int j, void* exArg); -WOLFSSL_API WOLFSSL_DSA* wolfSSL_DSA_generate_parameters(int bits, - unsigned char* seed, int seedLen, int* counterRet, - unsigned long* hRet, WOLFSSL_BN_CB cb, void* CBArg); -WOLFSSL_API int wolfSSL_DSA_generate_parameters_ex(WOLFSSL_DSA* dsa, int bits, - unsigned char* seed, int seedLen, int* counterRet, - unsigned long* hRet, void* cb); - -WOLFSSL_API void wolfSSL_DSA_get0_pqg(const WOLFSSL_DSA *d, const WOLFSSL_BIGNUM **p, - const WOLFSSL_BIGNUM **q, const WOLFSSL_BIGNUM **g); -WOLFSSL_API int wolfSSL_DSA_set0_pqg(WOLFSSL_DSA *d, WOLFSSL_BIGNUM *p, - WOLFSSL_BIGNUM *q, WOLFSSL_BIGNUM *g); - -WOLFSSL_API void wolfSSL_DSA_get0_key(const WOLFSSL_DSA *d, - const WOLFSSL_BIGNUM **pub_key, const WOLFSSL_BIGNUM **priv_key); -WOLFSSL_API int wolfSSL_DSA_set0_key(WOLFSSL_DSA *d, WOLFSSL_BIGNUM *pub_key, - WOLFSSL_BIGNUM *priv_key); - - -WOLFSSL_API int wolfSSL_DSA_LoadDer( - WOLFSSL_DSA* dsa, const unsigned char* derBuf, int derSz); - -WOLFSSL_API int wolfSSL_DSA_LoadDer_ex( - WOLFSSL_DSA* dsa, const unsigned char* derBuf, int derSz, int opt); - -WOLFSSL_API int wolfSSL_DSA_do_sign( - const unsigned char* d, unsigned char* sigRet, WOLFSSL_DSA* dsa); - -WOLFSSL_API int wolfSSL_DSA_do_verify( - const unsigned char* d, unsigned char* sig, WOLFSSL_DSA* dsa, int *dsacheck); - -WOLFSSL_API int wolfSSL_DSA_bits(const WOLFSSL_DSA *d); - -WOLFSSL_API WOLFSSL_DSA_SIG* wolfSSL_DSA_SIG_new(void); -WOLFSSL_API void wolfSSL_DSA_SIG_free(WOLFSSL_DSA_SIG *sig); - -WOLFSSL_API void wolfSSL_DSA_SIG_get0(const WOLFSSL_DSA_SIG *sig, - const WOLFSSL_BIGNUM **r, const WOLFSSL_BIGNUM **s); -WOLFSSL_API int wolfSSL_DSA_SIG_set0(WOLFSSL_DSA_SIG *sig, WOLFSSL_BIGNUM *r, - WOLFSSL_BIGNUM *s); - -WOLFSSL_API int wolfSSL_i2d_DSA_SIG(const WOLFSSL_DSA_SIG *sig, byte **out); -WOLFSSL_API WOLFSSL_DSA_SIG* wolfSSL_d2i_DSA_SIG(WOLFSSL_DSA_SIG **sig, - const unsigned char **pp, long length); -WOLFSSL_API WOLFSSL_DSA_SIG* wolfSSL_DSA_do_sign_ex(const unsigned char* digest, - int inLen, WOLFSSL_DSA* dsa); -WOLFSSL_API int wolfSSL_DSA_do_verify_ex(const unsigned char* digest, int digest_len, - WOLFSSL_DSA_SIG* sig, WOLFSSL_DSA* dsa); - -WOLFSSL_API int wolfSSL_i2d_DSAparams( - const WOLFSSL_DSA* dsa, unsigned char** out); -WOLFSSL_API WOLFSSL_DSA* wolfSSL_d2i_DSAparams( - WOLFSSL_DSA** dsa, const unsigned char** der, long derLen); - -#if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL) - -typedef WOLFSSL_DSA DSA; - -#define WOLFSSL_DSA_LOAD_PRIVATE 1 -#define WOLFSSL_DSA_LOAD_PUBLIC 2 - -#define DSA_new wolfSSL_DSA_new -#define DSA_free wolfSSL_DSA_free -#define DSA_print_fp wolfSSL_DSA_print_fp - -#define DSA_LoadDer wolfSSL_DSA_LoadDer -#define DSA_generate_key wolfSSL_DSA_generate_key -#define DSA_generate_parameters wolfSSL_DSA_generate_parameters -#define DSA_generate_parameters_ex wolfSSL_DSA_generate_parameters_ex -#define DSA_get0_pqg wolfSSL_DSA_get0_pqg -#define DSA_set0_pqg wolfSSL_DSA_set0_pqg -#define DSA_get0_key wolfSSL_DSA_get0_key -#define DSA_set0_key wolfSSL_DSA_set0_key - -#define DSA_SIG_new wolfSSL_DSA_SIG_new -#define DSA_SIG_free wolfSSL_DSA_SIG_free -#define DSA_SIG_get0 wolfSSL_DSA_SIG_get0 -#define DSA_SIG_set0 wolfSSL_DSA_SIG_set0 -#define i2d_DSA_SIG wolfSSL_i2d_DSA_SIG -#define d2i_DSA_SIG wolfSSL_d2i_DSA_SIG -#define DSA_do_sign wolfSSL_DSA_do_sign_ex -#define DSA_do_verify wolfSSL_DSA_do_verify_ex -#define i2d_DSAparams wolfSSL_i2d_DSAparams -#define d2i_DSAparams wolfSSL_d2i_DSAparams - -#define DSA_SIG WOLFSSL_DSA_SIG - -#endif /* OPENSSL_EXTRA || OPENSSL_EXTRA_X509_SMALL */ - -#ifdef __cplusplus - } /* extern "C" */ -#endif - -#endif /* header */ diff --git a/include/wolfssl/openssl/ec.h b/include/wolfssl/openssl/ec.h deleted file mode 100644 index 23ef5e9a29..0000000000 --- a/include/wolfssl/openssl/ec.h +++ /dev/null @@ -1,414 +0,0 @@ -/* ec.h - * - * Copyright (C) 2006-2023 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -/* ec.h for openssl */ - -#ifndef WOLFSSL_EC_H_ -#define WOLFSSL_EC_H_ - -#include -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL) -/* Map OpenSSL NID value */ -enum { - POINT_CONVERSION_COMPRESSED = 2, - POINT_CONVERSION_UNCOMPRESSED = 4, - -#ifdef HAVE_ECC - /* Use OpenSSL NIDs. NIDs can be mapped to ecc_curve_id enum values by - calling NIDToEccEnum() in ssl.c */ - NID_X9_62_prime192v1 = 409, - NID_X9_62_prime192v2 = 410, - NID_X9_62_prime192v3 = 411, - NID_X9_62_prime239v1 = 412, - NID_X9_62_prime239v2 = 413, - NID_X9_62_prime239v3 = 418, /* Previous value conflicted with AES128CBCb */ - NID_X9_62_prime256v1 = 415, - NID_secp112r1 = 704, - NID_secp112r2 = 705, - NID_secp128r1 = 706, - NID_secp128r2 = 707, - NID_secp160r1 = 709, - NID_secp160r2 = 710, - NID_secp224r1 = 713, - NID_secp384r1 = 715, - NID_secp521r1 = 716, - NID_secp160k1 = 708, - NID_secp192k1 = 711, - NID_secp224k1 = 712, - NID_secp256k1 = 714, - NID_brainpoolP160r1 = 921, - NID_brainpoolP192r1 = 923, - NID_brainpoolP224r1 = 925, - NID_brainpoolP256r1 = 927, - NID_brainpoolP320r1 = 929, - NID_brainpoolP384r1 = 931, - NID_brainpoolP512r1 = 933, -#endif - -#ifdef HAVE_ED448 - NID_ED448 = ED448k, -#endif -#ifdef HAVE_ED25519 - NID_ED25519 = ED25519k, -#endif - - OPENSSL_EC_EXPLICIT_CURVE = 0x000, - OPENSSL_EC_NAMED_CURVE = 0x001, -}; -#endif /* OPENSSL_EXTRA || OPENSSL_EXTRA_X509_SMALL */ - -#ifndef WOLFSSL_EC_TYPE_DEFINED /* guard on redeclaration */ - typedef struct WOLFSSL_EC_KEY WOLFSSL_EC_KEY; - typedef struct WOLFSSL_EC_POINT WOLFSSL_EC_POINT; - typedef struct WOLFSSL_EC_GROUP WOLFSSL_EC_GROUP; - typedef struct WOLFSSL_EC_BUILTIN_CURVE WOLFSSL_EC_BUILTIN_CURVE; - /* WOLFSSL_EC_METHOD is just an alias of WOLFSSL_EC_GROUP for now */ - typedef struct WOLFSSL_EC_GROUP WOLFSSL_EC_METHOD; - - #define WOLFSSL_EC_TYPE_DEFINED -#endif - -struct WOLFSSL_EC_POINT { - WOLFSSL_BIGNUM *X; - WOLFSSL_BIGNUM *Y; - WOLFSSL_BIGNUM *Z; - - void* internal; /* our ECC point */ - char inSet; /* internal set from external ? */ - char exSet; /* external set from internal ? */ -}; - -struct WOLFSSL_EC_GROUP { - int curve_idx; /* index of curve, used by WolfSSL as reference */ - int curve_nid; /* NID of curve, used by OpenSSL/OpenSSH as reference */ - int curve_oid; /* OID of curve, used by OpenSSL/OpenSSH as reference */ -}; - -struct WOLFSSL_EC_KEY { - WOLFSSL_EC_GROUP *group; - WOLFSSL_EC_POINT *pub_key; - WOLFSSL_BIGNUM *priv_key; - - void* internal; /* our ECC Key */ - void* heap; - unsigned char form; /* Either POINT_CONVERSION_UNCOMPRESSED or - * POINT_CONVERSION_COMPRESSED */ - word16 pkcs8HeaderSz; - - /* option bits */ - byte inSet:1; /* internal set from external ? */ - byte exSet:1; /* external set from internal ? */ - - wolfSSL_Ref ref; /* Reference count information. */ -}; - -struct WOLFSSL_EC_BUILTIN_CURVE { - int nid; - const char *comment; -}; - -#define WOLFSSL_EC_KEY_LOAD_PRIVATE 1 -#define WOLFSSL_EC_KEY_LOAD_PUBLIC 2 - -typedef int point_conversion_form_t; - -WOLFSSL_API -size_t wolfSSL_EC_get_builtin_curves(WOLFSSL_EC_BUILTIN_CURVE *r,size_t nitems); - -WOLFSSL_API -WOLFSSL_EC_KEY *wolfSSL_EC_KEY_dup(const WOLFSSL_EC_KEY *src); -WOLFSSL_API -int wolfSSL_EC_KEY_up_ref(WOLFSSL_EC_KEY* key); - -WOLFSSL_API -int wolfSSL_ECPoint_i2d(const WOLFSSL_EC_GROUP *curve, - const WOLFSSL_EC_POINT *p, - unsigned char *out, unsigned int *len); -WOLFSSL_API -int wolfSSL_ECPoint_d2i(const unsigned char *in, unsigned int len, - const WOLFSSL_EC_GROUP *curve, WOLFSSL_EC_POINT *p); -WOLFSSL_API -size_t wolfSSL_EC_POINT_point2oct(const WOLFSSL_EC_GROUP *group, - const WOLFSSL_EC_POINT *p, - int form, - byte *buf, size_t len, WOLFSSL_BN_CTX *ctx); -WOLFSSL_API -int wolfSSL_EC_POINT_oct2point(const WOLFSSL_EC_GROUP *group, - WOLFSSL_EC_POINT *p, const unsigned char *buf, - size_t len, WOLFSSL_BN_CTX *ctx); -WOLFSSL_API -WOLFSSL_EC_KEY *wolfSSL_o2i_ECPublicKey(WOLFSSL_EC_KEY **a, const unsigned char **in, - long len); -WOLFSSL_API -int wolfSSL_i2o_ECPublicKey(const WOLFSSL_EC_KEY *in, unsigned char **out); -WOLFSSL_API -WOLFSSL_EC_KEY *wolfSSL_d2i_ECPrivateKey(WOLFSSL_EC_KEY **key, const unsigned char **in, - long len); -WOLFSSL_API -int wolfSSL_i2d_ECPrivateKey(const WOLFSSL_EC_KEY *in, unsigned char **out); -WOLFSSL_API -void wolfSSL_EC_KEY_set_conv_form(WOLFSSL_EC_KEY *eckey, int form); -WOLFSSL_API -point_conversion_form_t wolfSSL_EC_KEY_get_conv_form(const WOLFSSL_EC_KEY* key); -WOLFSSL_API -WOLFSSL_BIGNUM *wolfSSL_EC_POINT_point2bn(const WOLFSSL_EC_GROUP *group, - const WOLFSSL_EC_POINT *p, - int form, - WOLFSSL_BIGNUM *in, WOLFSSL_BN_CTX *ctx); -WOLFSSL_API -int wolfSSL_EC_POINT_is_on_curve(const WOLFSSL_EC_GROUP *group, - const WOLFSSL_EC_POINT *point, - WOLFSSL_BN_CTX *ctx); - -WOLFSSL_API -int wolfSSL_EC_KEY_LoadDer(WOLFSSL_EC_KEY* key, - const unsigned char* der, int derSz); -WOLFSSL_API -int wolfSSL_EC_KEY_LoadDer_ex(WOLFSSL_EC_KEY* key, - const unsigned char* der, int derSz, int opt); -WOLFSSL_API -void wolfSSL_EC_KEY_free(WOLFSSL_EC_KEY *key); -WOLFSSL_API -WOLFSSL_EC_POINT *wolfSSL_EC_KEY_get0_public_key(const WOLFSSL_EC_KEY *key); -WOLFSSL_API -const WOLFSSL_EC_GROUP *wolfSSL_EC_KEY_get0_group(const WOLFSSL_EC_KEY *key); -WOLFSSL_API -int wolfSSL_EC_KEY_set_private_key(WOLFSSL_EC_KEY *key, - const WOLFSSL_BIGNUM *priv_key); -WOLFSSL_API -WOLFSSL_BIGNUM *wolfSSL_EC_KEY_get0_private_key(const WOLFSSL_EC_KEY *key); -WOLFSSL_API -WOLFSSL_EC_KEY *wolfSSL_EC_KEY_new_by_curve_name(int nid); -WOLFSSL_API const char* wolfSSL_EC_curve_nid2nist(int nid); -WOLFSSL_API int wolfSSL_EC_curve_nist2nid(const char* name); -WOLFSSL_API -WOLFSSL_EC_KEY *wolfSSL_EC_KEY_new_ex(void* heap, int devId); -WOLFSSL_API -WOLFSSL_EC_KEY *wolfSSL_EC_KEY_new(void); -WOLFSSL_API -int wolfSSL_EC_KEY_set_group(WOLFSSL_EC_KEY *key, WOLFSSL_EC_GROUP *group); -WOLFSSL_API -int wolfSSL_EC_KEY_generate_key(WOLFSSL_EC_KEY *key); -WOLFSSL_API -void wolfSSL_EC_KEY_set_asn1_flag(WOLFSSL_EC_KEY *key, int asn1_flag); -WOLFSSL_API -int wolfSSL_EC_KEY_set_public_key(WOLFSSL_EC_KEY *key, - const WOLFSSL_EC_POINT *pub); -WOLFSSL_API int wolfSSL_EC_KEY_check_key(const WOLFSSL_EC_KEY *key); -#if !defined(NO_FILESYSTEM) && !defined(NO_STDIO_FILESYSTEM) -WOLFSSL_API int wolfSSL_EC_KEY_print_fp(XFILE fp, WOLFSSL_EC_KEY* key, - int indent); -#endif /* !NO_FILESYSTEM && !NO_STDIO_FILESYSTEM */ -WOLFSSL_API int wolfSSL_ECDSA_size(const WOLFSSL_EC_KEY *key); -WOLFSSL_API int wolfSSL_ECDSA_sign(int type, const unsigned char *digest, - int digestSz, unsigned char *sig, - unsigned int *sigSz, WOLFSSL_EC_KEY *key); -WOLFSSL_API int wolfSSL_ECDSA_verify(int type, const unsigned char *digest, - int digestSz, const unsigned char *sig, - int sigSz, WOLFSSL_EC_KEY *key); - - -#if defined HAVE_ECC && (defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL)) -WOLFSSL_API int EccEnumToNID(int n); -#endif - -WOLFSSL_API -void wolfSSL_EC_GROUP_set_asn1_flag(WOLFSSL_EC_GROUP *group, int flag); -WOLFSSL_API -WOLFSSL_EC_GROUP *wolfSSL_EC_GROUP_new_by_curve_name(int nid); -WOLFSSL_API -int wolfSSL_EC_GROUP_cmp(const WOLFSSL_EC_GROUP *a, const WOLFSSL_EC_GROUP *b, - WOLFSSL_BN_CTX *ctx); -WOLFSSL_API -WOLFSSL_EC_GROUP *wolfSSL_EC_GROUP_dup(const WOLFSSL_EC_GROUP *src); -WOLFSSL_API -int wolfSSL_EC_GROUP_get_curve_name(const WOLFSSL_EC_GROUP *group); -WOLFSSL_API -int wolfSSL_EC_GROUP_get_degree(const WOLFSSL_EC_GROUP *group); -WOLFSSL_API -int wolfSSL_EC_GROUP_get_order(const WOLFSSL_EC_GROUP *group, - WOLFSSL_BIGNUM *order, WOLFSSL_BN_CTX *ctx); -WOLFSSL_API -int wolfSSL_EC_GROUP_order_bits(const WOLFSSL_EC_GROUP *group); -WOLFSSL_API -void wolfSSL_EC_GROUP_free(WOLFSSL_EC_GROUP *group); -WOLFSSL_API -const WOLFSSL_EC_METHOD* wolfSSL_EC_GROUP_method_of( - const WOLFSSL_EC_GROUP *group); -WOLFSSL_API -int wolfSSL_EC_METHOD_get_field_type(const WOLFSSL_EC_METHOD *meth); -WOLFSSL_API -WOLFSSL_EC_POINT *wolfSSL_EC_POINT_new(const WOLFSSL_EC_GROUP *group); -WOLFSSL_LOCAL -int ec_point_convert_to_affine(const WOLFSSL_EC_GROUP *group, - WOLFSSL_EC_POINT *point); -WOLFSSL_API -int wolfSSL_EC_POINT_get_affine_coordinates_GFp(const WOLFSSL_EC_GROUP *group, - const WOLFSSL_EC_POINT *p, - WOLFSSL_BIGNUM *x, - WOLFSSL_BIGNUM *y, - WOLFSSL_BN_CTX *ctx); -WOLFSSL_API -int wolfSSL_EC_POINT_set_affine_coordinates_GFp(const WOLFSSL_EC_GROUP *group, - WOLFSSL_EC_POINT *point, - const WOLFSSL_BIGNUM *x, - const WOLFSSL_BIGNUM *y, - WOLFSSL_BN_CTX *ctx); -WOLFSSL_API -int wolfSSL_EC_POINT_add(const WOLFSSL_EC_GROUP *group, WOLFSSL_EC_POINT *r, - const WOLFSSL_EC_POINT *p1, - const WOLFSSL_EC_POINT *p2, WOLFSSL_BN_CTX *ctx); -WOLFSSL_API -int wolfSSL_EC_POINT_mul(const WOLFSSL_EC_GROUP *group, WOLFSSL_EC_POINT *r, - const WOLFSSL_BIGNUM *n, - const WOLFSSL_EC_POINT *q, const WOLFSSL_BIGNUM *m, - WOLFSSL_BN_CTX *ctx); -WOLFSSL_API -int wolfSSL_EC_POINT_invert(const WOLFSSL_EC_GROUP *group, WOLFSSL_EC_POINT *a, - WOLFSSL_BN_CTX *ctx); -WOLFSSL_API -void wolfSSL_EC_POINT_clear_free(WOLFSSL_EC_POINT *point); -WOLFSSL_API -int wolfSSL_EC_POINT_cmp(const WOLFSSL_EC_GROUP *group, - const WOLFSSL_EC_POINT *a, const WOLFSSL_EC_POINT *b, - WOLFSSL_BN_CTX *ctx); -WOLFSSL_API int wolfSSL_EC_POINT_copy(WOLFSSL_EC_POINT *dest, - const WOLFSSL_EC_POINT *src); -WOLFSSL_API -void wolfSSL_EC_POINT_free(WOLFSSL_EC_POINT *point); -WOLFSSL_API -int wolfSSL_EC_POINT_is_at_infinity(const WOLFSSL_EC_GROUP *group, - const WOLFSSL_EC_POINT *a); - -#ifndef HAVE_SELFTEST -WOLFSSL_API -char* wolfSSL_EC_POINT_point2hex(const WOLFSSL_EC_GROUP* group, - const WOLFSSL_EC_POINT* point, int form, - WOLFSSL_BN_CTX* ctx); -#endif - -#if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL) - -typedef WOLFSSL_EC_KEY EC_KEY; -typedef WOLFSSL_EC_GROUP EC_GROUP; -typedef WOLFSSL_EC_GROUP EC_METHOD; -typedef WOLFSSL_EC_POINT EC_POINT; -typedef WOLFSSL_EC_BUILTIN_CURVE EC_builtin_curve; - -#ifndef HAVE_ECC -#define OPENSSL_NO_EC -#endif - -#define EC_KEY_new wolfSSL_EC_KEY_new -#define EC_KEY_free wolfSSL_EC_KEY_free -#define EC_KEY_up_ref wolfSSL_EC_KEY_up_ref -#define EC_KEY_dup wolfSSL_EC_KEY_dup -#define EC_KEY_get0_public_key wolfSSL_EC_KEY_get0_public_key -#define EC_KEY_get0_group wolfSSL_EC_KEY_get0_group -#define EC_KEY_set_private_key wolfSSL_EC_KEY_set_private_key -#define EC_KEY_get0_private_key wolfSSL_EC_KEY_get0_private_key -#define EC_KEY_new_by_curve_name wolfSSL_EC_KEY_new_by_curve_name -#define EC_KEY_set_group wolfSSL_EC_KEY_set_group -#define EC_KEY_generate_key wolfSSL_EC_KEY_generate_key -#define EC_KEY_set_asn1_flag wolfSSL_EC_KEY_set_asn1_flag -#define EC_KEY_set_public_key wolfSSL_EC_KEY_set_public_key -#define EC_KEY_check_key wolfSSL_EC_KEY_check_key -#define EC_KEY_print_fp wolfSSL_EC_KEY_print_fp - -#define ECDSA_size wolfSSL_ECDSA_size -#define ECDSA_sign wolfSSL_ECDSA_sign -#define ECDSA_verify wolfSSL_ECDSA_verify - -#define EC_GROUP_free wolfSSL_EC_GROUP_free -#define EC_GROUP_set_asn1_flag wolfSSL_EC_GROUP_set_asn1_flag -#define EC_GROUP_new_by_curve_name wolfSSL_EC_GROUP_new_by_curve_name -#define EC_GROUP_cmp wolfSSL_EC_GROUP_cmp -#define EC_GROUP_dup wolfSSL_EC_GROUP_dup -#define EC_GROUP_get_curve_name wolfSSL_EC_GROUP_get_curve_name -#define EC_GROUP_get_degree wolfSSL_EC_GROUP_get_degree -#define EC_GROUP_get_order wolfSSL_EC_GROUP_get_order -#define EC_GROUP_order_bits wolfSSL_EC_GROUP_order_bits -#define EC_GROUP_method_of wolfSSL_EC_GROUP_method_of -#ifndef NO_WOLFSSL_STUB -#define EC_GROUP_set_point_conversion_form(...) WC_DO_NOTHING -#endif - -#define EC_METHOD_get_field_type wolfSSL_EC_METHOD_get_field_type - -#define EC_POINT_new wolfSSL_EC_POINT_new -#define EC_POINT_free wolfSSL_EC_POINT_free -#define EC_POINT_get_affine_coordinates_GFp \ - wolfSSL_EC_POINT_get_affine_coordinates_GFp -#define EC_POINT_get_affine_coordinates \ - wolfSSL_EC_POINT_get_affine_coordinates_GFp -#define EC_POINT_set_affine_coordinates_GFp \ - wolfSSL_EC_POINT_set_affine_coordinates_GFp -#define EC_POINT_set_affine_coordinates \ - wolfSSL_EC_POINT_set_affine_coordinates_GFp -#define EC_POINT_add wolfSSL_EC_POINT_add -#define EC_POINT_mul wolfSSL_EC_POINT_mul -#define EC_POINT_invert wolfSSL_EC_POINT_invert -#define EC_POINT_clear_free wolfSSL_EC_POINT_clear_free -#define EC_POINT_cmp wolfSSL_EC_POINT_cmp -#define EC_POINT_copy wolfSSL_EC_POINT_copy -#define EC_POINT_is_at_infinity wolfSSL_EC_POINT_is_at_infinity - -#define EC_get_builtin_curves wolfSSL_EC_get_builtin_curves - -#define ECPoint_i2d wolfSSL_ECPoint_i2d -#define ECPoint_d2i wolfSSL_ECPoint_d2i -#define EC_POINT_point2oct wolfSSL_EC_POINT_point2oct -#define EC_POINT_oct2point wolfSSL_EC_POINT_oct2point -#define EC_POINT_point2bn wolfSSL_EC_POINT_point2bn -#define EC_POINT_is_on_curve wolfSSL_EC_POINT_is_on_curve -#define o2i_ECPublicKey wolfSSL_o2i_ECPublicKey -#define i2o_ECPublicKey wolfSSL_i2o_ECPublicKey -#define i2d_EC_PUBKEY wolfSSL_i2o_ECPublicKey -#define d2i_ECPrivateKey wolfSSL_d2i_ECPrivateKey -#define i2d_ECPrivateKey wolfSSL_i2d_ECPrivateKey -#define EC_KEY_set_conv_form wolfSSL_EC_KEY_set_conv_form -#define EC_KEY_get_conv_form wolfSSL_EC_KEY_get_conv_form - -#ifndef HAVE_SELFTEST - #define EC_POINT_point2hex wolfSSL_EC_POINT_point2hex -#endif - -#define EC_POINT_dump wolfSSL_EC_POINT_dump -#define EC_get_builtin_curves wolfSSL_EC_get_builtin_curves - -#define EC_curve_nid2nist wolfSSL_EC_curve_nid2nist -#define EC_curve_nist2nid wolfSSL_EC_curve_nist2nid - -#endif /* OPENSSL_EXTRA || OPENSSL_EXTRA_X509_SMALL */ - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* header */ diff --git a/include/wolfssl/openssl/ec25519.h b/include/wolfssl/openssl/ec25519.h deleted file mode 100644 index 6090311068..0000000000 --- a/include/wolfssl/openssl/ec25519.h +++ /dev/null @@ -1,46 +0,0 @@ -/* ec25519.h - * - * Copyright (C) 2006-2023 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -/* ec25519.h */ - -#ifndef WOLFSSL_EC25519_H_ -#define WOLFSSL_EC25519_H_ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -WOLFSSL_API -int wolfSSL_EC25519_generate_key(unsigned char *priv, unsigned int *privSz, - unsigned char *pub, unsigned int *pubSz); - -WOLFSSL_API -int wolfSSL_EC25519_shared_key(unsigned char *shared, unsigned int *sharedSz, - const unsigned char *priv, unsigned int privSz, - const unsigned char *pub, unsigned int pubSz); - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* header */ diff --git a/include/wolfssl/openssl/ec448.h b/include/wolfssl/openssl/ec448.h deleted file mode 100644 index 06ce1ddfc4..0000000000 --- a/include/wolfssl/openssl/ec448.h +++ /dev/null @@ -1,46 +0,0 @@ -/* ec448.h - * - * Copyright (C) 2006-2023 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -/* ec448.h */ - -#ifndef WOLFSSL_EC448_H_ -#define WOLFSSL_EC448_H_ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -WOLFSSL_API -int wolfSSL_EC448_generate_key(unsigned char *priv, unsigned int *privSz, - unsigned char *pub, unsigned int *pubSz); - -WOLFSSL_API -int wolfSSL_EC448_shared_key(unsigned char *shared, unsigned int *sharedSz, - const unsigned char *priv, unsigned int privSz, - const unsigned char *pub, unsigned int pubSz); - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* header */ diff --git a/include/wolfssl/openssl/ecdh.h b/include/wolfssl/openssl/ecdh.h deleted file mode 100644 index 9f816b25fe..0000000000 --- a/include/wolfssl/openssl/ecdh.h +++ /dev/null @@ -1,49 +0,0 @@ -/* ecdh.h - * - * Copyright (C) 2006-2023 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -/* ecdh.h for openssl */ - -#ifndef WOLFSSL_ECDH_H_ -#define WOLFSSL_ECDH_H_ - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - - -WOLFSSL_API int wolfSSL_ECDH_compute_key(void *out, size_t outlen, - const WOLFSSL_EC_POINT *pub_key, - WOLFSSL_EC_KEY *ecdh, - void *(*KDF) (const void *in, - size_t inlen, - void *out, - size_t *outlen)); - -#define ECDH_compute_key wolfSSL_ECDH_compute_key - -#ifdef __cplusplus -} /* extern C */ -#endif - -#endif /* header */ diff --git a/include/wolfssl/openssl/ecdsa.h b/include/wolfssl/openssl/ecdsa.h deleted file mode 100644 index 385e5c06b2..0000000000 --- a/include/wolfssl/openssl/ecdsa.h +++ /dev/null @@ -1,81 +0,0 @@ -/* ecdsa.h - * - * Copyright (C) 2006-2023 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -/* ecdsa.h for openssl */ - -#ifndef WOLFSSL_ECDSA_H_ -#define WOLFSSL_ECDSA_H_ - -#include -#include - - -#ifdef __cplusplus -extern "C" { -#endif - -#ifndef WOLFSSL_ECDSA_TYPE_DEFINED /* guard on redeclaration */ -typedef struct WOLFSSL_ECDSA_SIG WOLFSSL_ECDSA_SIG; -#define WOLFSSL_ECDSA_TYPE_DEFINED -#endif - -typedef WOLFSSL_ECDSA_SIG ECDSA_SIG; - -struct WOLFSSL_ECDSA_SIG { - WOLFSSL_BIGNUM *r; - WOLFSSL_BIGNUM *s; -}; - -WOLFSSL_API void wolfSSL_ECDSA_SIG_free(WOLFSSL_ECDSA_SIG *sig); -WOLFSSL_API WOLFSSL_ECDSA_SIG *wolfSSL_ECDSA_SIG_new(void); -WOLFSSL_API void wolfSSL_ECDSA_SIG_get0(const WOLFSSL_ECDSA_SIG* sig, - const WOLFSSL_BIGNUM** r, const WOLFSSL_BIGNUM** s); -WOLFSSL_API int wolfSSL_ECDSA_SIG_set0(WOLFSSL_ECDSA_SIG* sig, WOLFSSL_BIGNUM* r, - WOLFSSL_BIGNUM* s); -WOLFSSL_API WOLFSSL_ECDSA_SIG *wolfSSL_ECDSA_do_sign(const unsigned char *dgst, - int dgst_len, - WOLFSSL_EC_KEY *eckey); -WOLFSSL_API int wolfSSL_ECDSA_do_verify(const unsigned char *dgst, - int dgst_len, - const WOLFSSL_ECDSA_SIG *sig, - WOLFSSL_EC_KEY *eckey); - -WOLFSSL_API WOLFSSL_ECDSA_SIG *wolfSSL_d2i_ECDSA_SIG(WOLFSSL_ECDSA_SIG **sig, - const unsigned char **pp, - long len); -WOLFSSL_API int wolfSSL_i2d_ECDSA_SIG(const WOLFSSL_ECDSA_SIG *sig, - unsigned char **pp); - -#define ECDSA_SIG_free wolfSSL_ECDSA_SIG_free -#define ECDSA_SIG_new wolfSSL_ECDSA_SIG_new -#define ECDSA_SIG_get0 wolfSSL_ECDSA_SIG_get0 -#define ECDSA_SIG_set0 wolfSSL_ECDSA_SIG_set0 -#define ECDSA_do_sign wolfSSL_ECDSA_do_sign -#define ECDSA_do_verify wolfSSL_ECDSA_do_verify -#define d2i_ECDSA_SIG wolfSSL_d2i_ECDSA_SIG -#define i2d_ECDSA_SIG wolfSSL_i2d_ECDSA_SIG - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* header */ - diff --git a/include/wolfssl/openssl/ed25519.h b/include/wolfssl/openssl/ed25519.h deleted file mode 100644 index a4f2a3ac4e..0000000000 --- a/include/wolfssl/openssl/ed25519.h +++ /dev/null @@ -1,49 +0,0 @@ -/* ed25519.h - * - * Copyright (C) 2006-2023 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -/* ed25519.h */ - -#ifndef WOLFSSL_ED25519_H_ -#define WOLFSSL_ED25519_H_ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -WOLFSSL_API -int wolfSSL_ED25519_generate_key(unsigned char *priv, unsigned int *privSz, - unsigned char *pub, unsigned int *pubSz); -WOLFSSL_API -int wolfSSL_ED25519_sign(const unsigned char *msg, unsigned int msgSz, - const unsigned char *priv, unsigned int privSz, - unsigned char *sig, unsigned int *sigSz); -WOLFSSL_API -int wolfSSL_ED25519_verify(const unsigned char *msg, unsigned int msgSz, - const unsigned char *pub, unsigned int pubSz, - const unsigned char *sig, unsigned int sigSz); - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* header */ diff --git a/include/wolfssl/openssl/ed448.h b/include/wolfssl/openssl/ed448.h deleted file mode 100644 index 2d2b4b74eb..0000000000 --- a/include/wolfssl/openssl/ed448.h +++ /dev/null @@ -1,49 +0,0 @@ -/* ed448.h - * - * Copyright (C) 2006-2023 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -/* ed448.h */ - -#ifndef WOLFSSL_ED448_H_ -#define WOLFSSL_ED448_H_ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -WOLFSSL_API -int wolfSSL_ED448_generate_key(unsigned char *priv, unsigned int *privSz, - unsigned char *pub, unsigned int *pubSz); -WOLFSSL_API -int wolfSSL_ED448_sign(const unsigned char *msg, unsigned int msgSz, - const unsigned char *priv, unsigned int privSz, - unsigned char *sig, unsigned int *sigSz); -WOLFSSL_API -int wolfSSL_ED448_verify(const unsigned char *msg, unsigned int msgSz, - const unsigned char *pub, unsigned int pubSz, - const unsigned char *sig, unsigned int sigSz); - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* header */ diff --git a/include/wolfssl/openssl/evp.h b/include/wolfssl/openssl/evp.h deleted file mode 100644 index 3f8fa5bb7d..0000000000 --- a/include/wolfssl/openssl/evp.h +++ /dev/null @@ -1,1291 +0,0 @@ -/* evp.h - * - * Copyright (C) 2006-2023 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - - - -/*! - \file wolfssl/openssl/evp.h - \brief evp.h defines mini evp openssl compatibility layer - */ - - -#ifndef WOLFSSL_EVP_H_ -#define WOLFSSL_EVP_H_ - -#include - -#ifdef WOLFSSL_PREFIX -#include "prefix_evp.h" -#endif - -#ifndef NO_MD4 - #include -#endif -#ifndef NO_MD5 - #include -#endif -#include -#include -#ifndef EMBEDDED_SSL -#include -#endif -#include -#ifndef EMBEDDED_SSL -#include -#include -#endif -#include -#include -#include - -#include -#include -#include -#ifndef EMBEDDED_SSL -#include -#endif -#include -#include -#ifdef WOLFSSL_SM3 - #include -#endif -#ifdef WOLFSSL_SM4 - #include -#endif - -#if defined(WOLFSSL_BASE64_ENCODE) || defined(WOLFSSL_BASE64_DECODE) -#include -#endif - -#ifdef HAVE_ARIA - #include -#endif - -#ifdef __cplusplus - extern "C" { -#endif - - -#ifndef NO_MD4 - WOLFSSL_API const WOLFSSL_EVP_MD* wolfSSL_EVP_md4(void); -#endif -#ifndef NO_MD5 - WOLFSSL_API const WOLFSSL_EVP_MD* wolfSSL_EVP_md5(void); -#endif -WOLFSSL_API void wolfSSL_EVP_set_pw_prompt(const char *prompt); -WOLFSSL_API const WOLFSSL_EVP_MD* wolfSSL_EVP_mdc2(void); -WOLFSSL_API const WOLFSSL_EVP_MD* wolfSSL_EVP_sha1(void); -WOLFSSL_API const WOLFSSL_EVP_MD* wolfSSL_EVP_sha224(void); -WOLFSSL_API const WOLFSSL_EVP_MD* wolfSSL_EVP_sha256(void); -WOLFSSL_API const WOLFSSL_EVP_MD* wolfSSL_EVP_sha384(void); -WOLFSSL_API const WOLFSSL_EVP_MD* wolfSSL_EVP_sha512(void); -WOLFSSL_API const WOLFSSL_EVP_MD* wolfSSL_EVP_shake128(void); -WOLFSSL_API const WOLFSSL_EVP_MD* wolfSSL_EVP_shake256(void); -WOLFSSL_API const WOLFSSL_EVP_MD *wolfSSL_EVP_sha512_224(void); -WOLFSSL_API const WOLFSSL_EVP_MD *wolfSSL_EVP_sha512_256(void); -WOLFSSL_API const WOLFSSL_EVP_MD *wolfSSL_EVP_ripemd160(void); - -WOLFSSL_API const WOLFSSL_EVP_MD* wolfSSL_EVP_sha3_224(void); -WOLFSSL_API const WOLFSSL_EVP_MD* wolfSSL_EVP_sha3_256(void); -WOLFSSL_API const WOLFSSL_EVP_MD* wolfSSL_EVP_sha3_384(void); -WOLFSSL_API const WOLFSSL_EVP_MD* wolfSSL_EVP_sha3_512(void); - -WOLFSSL_API const WOLFSSL_EVP_MD* wolfSSL_EVP_sm3(void); - -WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_aes_128_ecb(void); -WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_aes_192_ecb(void); -WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_aes_256_ecb(void); -WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_aes_128_cbc(void); -#if !defined(NO_AES) && (defined(HAVE_AES_CBC) || defined(WOLFSSL_AES_DIRECT)) -WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_aes_192_cbc(void); -WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_aes_256_cbc(void); -#endif -#ifndef NO_AES -#ifdef WOLFSSL_AES_CFB -WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_aes_128_cfb1(void); -WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_aes_192_cfb1(void); -WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_aes_256_cfb1(void); -WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_aes_128_cfb8(void); -WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_aes_192_cfb8(void); -WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_aes_256_cfb8(void); -WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_aes_128_cfb128(void); -WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_aes_192_cfb128(void); -WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_aes_256_cfb128(void); -#endif -#ifdef WOLFSSL_AES_OFB -WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_aes_128_ofb(void); -WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_aes_192_ofb(void); -WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_aes_256_ofb(void); -#endif -#ifdef WOLFSSL_AES_XTS -WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_aes_128_xts(void); -WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_aes_256_xts(void); -#endif -#endif /* NO_AES */ -#if !defined(NO_AES) && defined(HAVE_AESGCM) -WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_aes_128_gcm(void); -WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_aes_192_gcm(void); -WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_aes_256_gcm(void); -#endif -#if !defined(NO_AES) && defined(HAVE_AESCCM) -WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_aes_128_ccm(void); -WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_aes_192_ccm(void); -WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_aes_256_ccm(void); -#endif -WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_aes_128_ctr(void); -WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_aes_192_ctr(void); -WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_aes_256_ctr(void); -#if defined(HAVE_ARIA) -WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_aria_128_gcm(void); -WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_aria_192_gcm(void); -WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_aria_256_gcm(void); -#endif -WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_des_ecb(void); -WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_des_ede3_ecb(void); -WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_des_cbc(void); -WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_des_ede3_cbc(void); -WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_rc4(void); -WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_enc_null(void); -WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_rc2_cbc(void); -#if defined(HAVE_CHACHA) && defined(HAVE_POLY1305) -WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_chacha20_poly1305(void); -#endif -#ifdef HAVE_CHACHA -/* ChaCha IV + counter is set as one IV in EVP */ -#define WOLFSSL_EVP_CHACHA_IV_BYTES (CHACHA_IV_BYTES + sizeof(word32)) -WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_chacha20(void); -#endif -#ifdef WOLFSSL_SM4_ECB -WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_sm4_ecb(void); -#endif -#ifdef WOLFSSL_SM4_CBC -WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_sm4_cbc(void); -#endif -#ifdef WOLFSSL_SM4_CTR -WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_sm4_ctr(void); -#endif -#ifdef WOLFSSL_SM4_GCM -WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_sm4_gcm(void); -#endif -#ifdef WOLFSSL_SM4_CCM -WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_sm4_ccm(void); -#endif - -typedef union { - #ifndef NO_MD4 - WOLFSSL_MD4_CTX md4; - #endif - #ifndef NO_MD5 - WOLFSSL_MD5_CTX md5; - #endif - #ifndef NO_SHA - WOLFSSL_SHA_CTX sha; - #endif - #ifdef WOLFSSL_SHA224 - WOLFSSL_SHA224_CTX sha224; - #endif - #ifndef NO_SHA256 - WOLFSSL_SHA256_CTX sha256; - #endif - #ifdef WOLFSSL_SHA384 - WOLFSSL_SHA384_CTX sha384; - #endif - #ifdef WOLFSSL_SHA512 - WOLFSSL_SHA512_CTX sha512; - #endif - #ifdef WOLFSSL_RIPEMD - WOLFSSL_RIPEMD_CTX ripemd; - #endif - #ifndef WOLFSSL_NOSHA3_224 - WOLFSSL_SHA3_224_CTX sha3_224; - #endif - #ifndef WOLFSSL_NOSHA3_256 - WOLFSSL_SHA3_256_CTX sha3_256; - #endif - WOLFSSL_SHA3_384_CTX sha3_384; - #ifndef WOLFSSL_NOSHA3_512 - WOLFSSL_SHA3_512_CTX sha3_512; - #endif - #ifdef WOLFSSL_SM3 - wc_Sm3 sm3; - #endif -} WOLFSSL_Hasher; - - -struct WOLFSSL_EVP_MD_CTX { - union { - WOLFSSL_Hasher digest; - #ifndef NO_HMAC - Hmac hmac; - #endif - } hash; - enum wc_HashType macType; - WOLFSSL_EVP_PKEY_CTX *pctx; -#ifndef NO_HMAC - unsigned int isHMAC; -#endif -}; - - -typedef union { -#ifndef NO_AES - Aes aes; -#ifdef WOLFSSL_AES_XTS - XtsAes xts; -#endif -#endif -#ifdef HAVE_ARIA - wc_Aria aria; -#endif -#ifndef NO_DES3 - Des des; - Des3 des3; -#endif - Arc4 arc4; -#ifdef WOLFSSL_QT - int (*ctrl) (WOLFSSL_EVP_CIPHER_CTX *, int type, int arg, void *ptr); -#endif -#if defined(HAVE_CHACHA) && defined(HAVE_POLY1305) - ChaChaPoly_Aead chachaPoly; -#endif -#ifdef HAVE_CHACHA - ChaCha chacha; -#endif -#ifdef WOLFSSL_SM4 - wc_Sm4 sm4; -#endif -} WOLFSSL_Cipher; - -#if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL) - -#define NID_aes_128_cbc 419 -#define NID_aes_192_cbc 423 -#define NID_aes_256_cbc 427 -#define NID_aes_128_ccm 896 -#define NID_aes_192_ccm 899 -#define NID_aes_256_ccm 902 -#define NID_aes_128_gcm 895 -#define NID_aes_192_gcm 898 -#define NID_aes_256_gcm 901 -#define NID_aes_128_ctr 904 -#define NID_aes_192_ctr 905 -#define NID_aes_256_ctr 906 -#define NID_aes_128_ecb 418 -#define NID_aes_192_ecb 422 -#define NID_aes_256_ecb 426 -#define NID_des_cbc 31 -#define NID_des_ecb 29 -#define NID_des_ede3_cbc 44 -#define NID_des_ede3_ecb 33 -#define NID_aes_128_cfb1 650 -#define NID_aes_192_cfb1 651 -#define NID_aes_256_cfb1 652 -#define NID_aes_128_cfb8 653 -#define NID_aes_192_cfb8 654 -#define NID_aes_256_cfb8 655 -#define NID_aes_128_cfb128 421 -#define NID_aes_192_cfb128 425 -#define NID_aes_256_cfb128 429 -#define NID_aes_128_ofb 420 -#define NID_aes_192_ofb 424 -#define NID_aes_256_ofb 428 -#define NID_aes_128_xts 913 -#define NID_aes_256_xts 914 -#define NID_camellia_128_cbc 751 -#define NID_camellia_256_cbc 753 -#define NID_chacha20_poly1305 1018 -#define NID_chacha20 1019 -#define NID_sm4_ecb 1133 -#define NID_sm4_cbc 1134 -#define NID_sm4_ctr 1139 -#define NID_sm4_gcm 1248 -#define NID_sm4_ccm 1249 -#define NID_md5WithRSA 104 -#define NID_md2WithRSAEncryption 9 -#define NID_md5WithRSAEncryption 99 -#define NID_dsaWithSHA1 113 -#define NID_dsaWithSHA1_2 70 -#define NID_sha1WithRSA 115 -#define NID_sha1WithRSAEncryption 65 -#define NID_sha224WithRSAEncryption 671 -#define NID_sha256WithRSAEncryption 668 -#define NID_sha384WithRSAEncryption 669 -#define NID_sha512WithRSAEncryption 670 -#define NID_RSA_SHA3_224 1116 -#define NID_RSA_SHA3_256 1117 -#define NID_RSA_SHA3_384 1118 -#define NID_RSA_SHA3_512 1119 -#define NID_rsassaPss 912 -#define NID_ecdsa_with_SHA1 416 -#define NID_ecdsa_with_SHA224 793 -#define NID_ecdsa_with_SHA256 794 -#define NID_ecdsa_with_SHA384 795 -#define NID_ecdsa_with_SHA512 796 -#define NID_ecdsa_with_SHA3_224 1112 -#define NID_ecdsa_with_SHA3_256 1113 -#define NID_ecdsa_with_SHA3_384 1114 -#define NID_ecdsa_with_SHA3_512 1115 -#define NID_dsa_with_SHA224 802 -#define NID_dsa_with_SHA256 803 -#define NID_sha3_224 1096 -#define NID_sha3_256 1097 -#define NID_sha3_384 1098 -#define NID_sha3_512 1099 -#define NID_blake2b512 1056 -#define NID_blake2s256 1057 -#define NID_shake128 1100 -#define NID_shake256 1101 -#define NID_sha1 64 -#define NID_sha224 675 -#define NID_sm3 1143 -#define NID_md2 77 -#define NID_md4 257 -#define NID_md5 40 -#define NID_hmac 855 -#define NID_hmacWithSHA1 163 -#define NID_hmacWithSHA224 798 -#define NID_hmacWithSHA256 799 -#define NID_hmacWithSHA384 800 -#define NID_hmacWithSHA512 801 -#define NID_hkdf 1036 -#define NID_cmac 894 -#define NID_dhKeyAgreement 28 -#define NID_ffdhe2048 1126 -#define NID_ffdhe3072 1127 -#define NID_ffdhe4096 1128 -#define NID_rc4 5 -#define NID_bf_cbc 91 -#define NID_bf_ecb 92 -#define NID_bf_cfb64 93 -#define NID_bf_ofb64 94 -#define NID_cast5_cbc 108 -#define NID_cast5_ecb 109 -#define NID_cast5_cfb64 110 -#define NID_cast5_ofb64 111 -/* key exchange */ -#define NID_kx_rsa 1037 -#define NID_kx_ecdhe 1038 -#define NID_kx_dhe 1039 -#define NID_kx_ecdhe_psk 1040 -#define NID_kx_dhe_psk 1041 -#define NID_kx_rsa_psk 1042 -#define NID_kx_psk 1043 -#define NID_kx_srp 1044 -#define NID_kx_gost 1045 -#define NID_kx_any 1063 -/* server authentication */ -#define NID_auth_rsa 1046 -#define NID_auth_ecdsa 1047 -#define NID_auth_psk 1048 -#define NID_auth_dss 1049 -#define NID_auth_srp 1052 -#define NID_auth_null 1054 -#define NID_auth_any 1055 -/* Curve */ -#define NID_aria_128_gcm 1123 -#define NID_aria_192_gcm 1124 -#define NID_aria_256_gcm 1125 -#define NID_sm2 1172 - -#define NID_X9_62_id_ecPublicKey EVP_PKEY_EC -#define NID_rsaEncryption EVP_PKEY_RSA -#define NID_dsa EVP_PKEY_DSA - -#define EVP_PKEY_OP_SIGN (1 << 3) -#define EVP_PKEY_OP_VERIFY (1 << 5) -#define EVP_PKEY_OP_ENCRYPT (1 << 6) -#define EVP_PKEY_OP_DECRYPT (1 << 7) -#define EVP_PKEY_OP_DERIVE (1 << 8) - -#define EVP_PKEY_PRINT_INDENT_MAX 128 - -enum { - AES_128_CBC_TYPE = 1, - AES_192_CBC_TYPE = 2, - AES_256_CBC_TYPE = 3, - AES_128_CTR_TYPE = 4, - AES_192_CTR_TYPE = 5, - AES_256_CTR_TYPE = 6, - AES_128_ECB_TYPE = 7, - AES_192_ECB_TYPE = 8, - AES_256_ECB_TYPE = 9, - DES_CBC_TYPE = 10, - DES_ECB_TYPE = 11, - DES_EDE3_CBC_TYPE = 12, - DES_EDE3_ECB_TYPE = 13, - ARC4_TYPE = 14, - NULL_CIPHER_TYPE = 15, - EVP_PKEY_RSA = 16, - EVP_PKEY_DSA = 17, - EVP_PKEY_EC = 18, - AES_128_GCM_TYPE = 21, - AES_192_GCM_TYPE = 22, - AES_256_GCM_TYPE = 23, - EVP_PKEY_DH = NID_dhKeyAgreement, - EVP_PKEY_HMAC = NID_hmac, - EVP_PKEY_CMAC = NID_cmac, - EVP_PKEY_HKDF = NID_hkdf, - EVP_PKEY_FALCON = 300, /* Randomly picked value. */ - EVP_PKEY_DILITHIUM = 301, /* Randomly picked value. */ - AES_128_CFB1_TYPE = 24, - AES_192_CFB1_TYPE = 25, - AES_256_CFB1_TYPE = 26, - AES_128_CFB8_TYPE = 27, - AES_192_CFB8_TYPE = 28, - AES_256_CFB8_TYPE = 29, - AES_128_CFB128_TYPE = 30, - AES_192_CFB128_TYPE = 31, - AES_256_CFB128_TYPE = 32, - AES_128_OFB_TYPE = 33, - AES_192_OFB_TYPE = 34, - AES_256_OFB_TYPE = 35, - AES_128_XTS_TYPE = 36, - AES_256_XTS_TYPE = 37, - CHACHA20_POLY1305_TYPE = 38, - CHACHA20_TYPE = 39, - AES_128_CCM_TYPE = 40, - AES_192_CCM_TYPE = 41, - AES_256_CCM_TYPE = 42, - SM4_ECB_TYPE = 43, - SM4_CBC_TYPE = 44, - SM4_CTR_TYPE = 45, - SM4_GCM_TYPE = 46, - SM4_CCM_TYPE = 47, - ARIA_128_GCM_TYPE = 48, - ARIA_192_GCM_TYPE = 49, - ARIA_256_GCM_TYPE = 50 -}; - -#endif /* OPENSSL_EXTRA || OPENSSL_EXTRA_X509_SMALL */ - - -#define WOLFSSL_EVP_BUF_SIZE 16 -struct WOLFSSL_EVP_CIPHER_CTX { - int keyLen; /* user may set for variable */ - int block_size; - unsigned long flags; - unsigned char enc; /* if encrypt side, then true */ - unsigned char cipherType; -#if !defined(NO_AES) - /* working iv pointer into cipher */ - ALIGN16 unsigned char iv[AES_BLOCK_SIZE]; -#elif defined(WOLFSSL_SM4) - ALIGN16 unsigned char iv[SM4_BLOCK_SIZE]; -#elif defined(HAVE_CHACHA) && defined(HAVE_POLY1305) - ALIGN16 unsigned char iv[CHACHA20_POLY1305_AEAD_IV_SIZE]; -#elif !defined(NO_DES3) - ALIGN16 unsigned char iv[DES_BLOCK_SIZE]; -#endif - WOLFSSL_Cipher cipher; - ALIGN16 byte buf[WOLFSSL_EVP_BUF_SIZE]; - int bufUsed; - ALIGN16 byte lastBlock[WOLFSSL_EVP_BUF_SIZE]; - int lastUsed; -#if !defined(NO_AES) || !defined(NO_DES3) || defined(HAVE_AESGCM) || \ - defined (WOLFSSL_AES_XTS) || (defined(HAVE_CHACHA) || \ - defined(HAVE_POLY1305) || defined(HAVE_AESCCM)) || \ - defined(WOLFSSL_SM4_GCM) || defined(WOLFSSL_SM4_CCM) -#define HAVE_WOLFSSL_EVP_CIPHER_CTX_IV - int ivSz; -#if defined(HAVE_AESGCM) || defined(HAVE_AESCCM) || \ - defined(WOLFSSL_SM4_GCM) || defined(WOLFSSL_SM4_CCM) - byte* authBuffer; - int authBufferLen; - byte* authIn; - int authInSz; -#endif -#if defined(HAVE_CHACHA) && defined(HAVE_POLY1305) - byte* key; /* used in partial Init()s */ -#endif -#if defined(HAVE_AESGCM) || defined(HAVE_AESCCM) || defined(HAVE_ARIA) || \ - defined(WOLFSSL_SM4_GCM) || defined(WOLFSSL_SM4_CCM) || \ - (defined(HAVE_CHACHA) && defined(HAVE_POLY1305)) -#if defined(HAVE_AESGCM) || defined(HAVE_AESCCM) || defined(HAVE_ARIA) - ALIGN16 unsigned char authTag[AES_BLOCK_SIZE]; -#elif defined(WOLFSSL_SM4_GCM) || defined(WOLFSSL_SM4_CCM) - ALIGN16 unsigned char authTag[SM4_BLOCK_SIZE]; -#else - ALIGN16 unsigned char authTag[CHACHA20_POLY1305_AEAD_AUTHTAG_SIZE]; -#endif - int authTagSz; -#endif -#if defined(HAVE_AESGCM) || defined(HAVE_AESCCM) || \ - defined(WOLFSSL_SM4_GCM) || defined(WOLFSSL_SM4_CCM) - byte authIvGenEnable:1; - byte authIncIv:1; -#endif -#endif -}; - -struct WOLFSSL_EVP_PKEY_CTX { - WOLFSSL_EVP_PKEY *pkey; - WOLFSSL_EVP_PKEY *peerKey; - int op; /* operation */ - int padding; - int nbits; -#ifdef HAVE_ECC - int curveNID; -#endif -#ifndef NO_RSA - const WOLFSSL_EVP_MD* md; -#endif -}; - -struct WOLFSSL_ASN1_PCTX { - int dummy; -}; -#if defined(WOLFSSL_BASE64_ENCODE) || defined(WOLFSSL_BASE64_DECODE) - -#define BASE64_ENCODE_BLOCK_SIZE 48 -#define BASE64_ENCODE_RESULT_BLOCK_SIZE 64 -#define BASE64_DECODE_BLOCK_SIZE 4 - -struct WOLFSSL_EVP_ENCODE_CTX { - void* heap; - int remaining; /* num of bytes in data[] */ - byte data[BASE64_ENCODE_BLOCK_SIZE];/* storage for unprocessed raw data */ -}; -typedef struct WOLFSSL_EVP_ENCODE_CTX WOLFSSL_EVP_ENCODE_CTX; - -WOLFSSL_API struct WOLFSSL_EVP_ENCODE_CTX* wolfSSL_EVP_ENCODE_CTX_new(void); -WOLFSSL_API void wolfSSL_EVP_ENCODE_CTX_free(WOLFSSL_EVP_ENCODE_CTX* ctx); -#endif /* WOLFSSL_BASE64_ENCODE || WOLFSSL_BASE64_DECODE */ - -#if defined(WOLFSSL_BASE64_ENCODE) -WOLFSSL_API void wolfSSL_EVP_EncodeInit(WOLFSSL_EVP_ENCODE_CTX* ctx); -WOLFSSL_API int wolfSSL_EVP_EncodeUpdate(WOLFSSL_EVP_ENCODE_CTX* ctx, - unsigned char*out, int *outl, const unsigned char*in, int inl); -WOLFSSL_API void wolfSSL_EVP_EncodeFinal(WOLFSSL_EVP_ENCODE_CTX* ctx, - unsigned char*out, int *outl); -WOLFSSL_API int wolfSSL_EVP_EncodeBlock(unsigned char *out, - const unsigned char *in, int inLen); -WOLFSSL_API int wolfSSL_EVP_DecodeBlock(unsigned char *out, - const unsigned char *in, int inLen); -#endif /* WOLFSSL_BASE64_ENCODE */ - -#if defined(WOLFSSL_BASE64_DECODE) -WOLFSSL_API void wolfSSL_EVP_DecodeInit(WOLFSSL_EVP_ENCODE_CTX* ctx); -WOLFSSL_API int wolfSSL_EVP_DecodeUpdate(WOLFSSL_EVP_ENCODE_CTX* ctx, - unsigned char*out, int *outl, const unsigned char*in, int inl); -WOLFSSL_API int wolfSSL_EVP_DecodeFinal(WOLFSSL_EVP_ENCODE_CTX* ctx, - unsigned char*out, int *outl); -#endif /* WOLFSSL_BASE64_DECODE */ - -WOLFSSL_API const WOLFSSL_EVP_MD* wolfSSL_EVP_blake2b512(void); -WOLFSSL_API const WOLFSSL_EVP_MD* wolfSSL_EVP_blake2s256(void); - -WOLFSSL_API void wolfSSL_EVP_init(void); -WOLFSSL_API int wolfSSL_EVP_MD_size(const WOLFSSL_EVP_MD* type); -WOLFSSL_API int wolfSSL_EVP_MD_type(const WOLFSSL_EVP_MD* type); -WOLFSSL_API int wolfSSL_EVP_MD_block_size(const WOLFSSL_EVP_MD* type); -WOLFSSL_API int wolfSSL_EVP_MD_pkey_type(const WOLFSSL_EVP_MD* type); - -WOLFSSL_API WOLFSSL_EVP_MD_CTX *wolfSSL_EVP_MD_CTX_new (void); -WOLFSSL_API void wolfSSL_EVP_MD_CTX_free(WOLFSSL_EVP_MD_CTX* ctx); -WOLFSSL_API void wolfSSL_EVP_MD_CTX_init(WOLFSSL_EVP_MD_CTX* ctx); -WOLFSSL_API int wolfSSL_EVP_MD_CTX_cleanup(WOLFSSL_EVP_MD_CTX* ctx); -WOLFSSL_API int wolfSSL_EVP_MD_CTX_copy(WOLFSSL_EVP_MD_CTX *out, const WOLFSSL_EVP_MD_CTX *in); -WOLFSSL_API int wolfSSL_EVP_MD_CTX_copy_ex(WOLFSSL_EVP_MD_CTX *out, const WOLFSSL_EVP_MD_CTX *in); -WOLFSSL_API int wolfSSL_EVP_MD_CTX_type(const WOLFSSL_EVP_MD_CTX *ctx); -WOLFSSL_API int wolfSSL_EVP_MD_CTX_size(const WOLFSSL_EVP_MD_CTX *ctx); -WOLFSSL_API int wolfSSL_EVP_MD_CTX_block_size(const WOLFSSL_EVP_MD_CTX *ctx); -WOLFSSL_API const WOLFSSL_EVP_MD *wolfSSL_EVP_MD_CTX_md(const WOLFSSL_EVP_MD_CTX *ctx); -WOLFSSL_API const WOLFSSL_EVP_CIPHER *wolfSSL_EVP_get_cipherbyname(const char *name); -WOLFSSL_API const WOLFSSL_EVP_MD *wolfSSL_EVP_get_digestbyname(const char *name); -WOLFSSL_API int wolfSSL_EVP_CIPHER_nid(const WOLFSSL_EVP_CIPHER *cipher); - -WOLFSSL_API int wolfSSL_EVP_DigestInit(WOLFSSL_EVP_MD_CTX* ctx, - const WOLFSSL_EVP_MD* type); -WOLFSSL_API int wolfSSL_EVP_DigestUpdate(WOLFSSL_EVP_MD_CTX* ctx, const void* data, - size_t sz); -WOLFSSL_API int wolfSSL_EVP_DigestFinal(WOLFSSL_EVP_MD_CTX* ctx, unsigned char* md, - unsigned int* s); -WOLFSSL_API int wolfSSL_EVP_DigestFinal_ex(WOLFSSL_EVP_MD_CTX* ctx, - unsigned char* md, unsigned int* s); -WOLFSSL_API int wolfSSL_EVP_DigestSignUpdate(WOLFSSL_EVP_MD_CTX *ctx, - const void *d, unsigned int cnt); -WOLFSSL_API int wolfSSL_EVP_DigestSignFinal(WOLFSSL_EVP_MD_CTX *ctx, - unsigned char *sig, size_t *siglen); -WOLFSSL_API int wolfSSL_EVP_DigestVerifyUpdate(WOLFSSL_EVP_MD_CTX *ctx, - const void *d, size_t cnt); -WOLFSSL_API int wolfSSL_EVP_DigestVerifyFinal(WOLFSSL_EVP_MD_CTX *ctx, - const unsigned char *sig, - size_t siglen); - -WOLFSSL_API int wolfSSL_EVP_BytesToKey(const WOLFSSL_EVP_CIPHER* type, - const WOLFSSL_EVP_MD* md, const byte* salt, - const byte* data, int sz, int count, byte* key, byte* iv); - -WOLFSSL_API void wolfSSL_EVP_CIPHER_CTX_init(WOLFSSL_EVP_CIPHER_CTX* ctx); -WOLFSSL_API int wolfSSL_EVP_CIPHER_CTX_cleanup(WOLFSSL_EVP_CIPHER_CTX* ctx); -WOLFSSL_API int wolfSSL_EVP_CIPHER_CTX_ctrl(WOLFSSL_EVP_CIPHER_CTX *ctx, \ - int type, int arg, void *ptr); -WOLFSSL_API int wolfSSL_EVP_CIPHER_CTX_iv_length( - const WOLFSSL_EVP_CIPHER_CTX* ctx); -WOLFSSL_API int wolfSSL_EVP_CIPHER_iv_length(const WOLFSSL_EVP_CIPHER* cipher); -WOLFSSL_API int wolfSSL_EVP_Cipher_key_length(const WOLFSSL_EVP_CIPHER* c); - - -WOLFSSL_API int wolfSSL_EVP_CipherInit(WOLFSSL_EVP_CIPHER_CTX* ctx, - const WOLFSSL_EVP_CIPHER* type, - const unsigned char* key, - const unsigned char* iv, - int enc); -WOLFSSL_API int wolfSSL_EVP_CipherUpdate(WOLFSSL_EVP_CIPHER_CTX *ctx, - unsigned char *out, int *outl, - const unsigned char *in, int inl); -WOLFSSL_API int wolfSSL_EVP_CipherFinal(WOLFSSL_EVP_CIPHER_CTX *ctx, - unsigned char *out, int *outl); -WOLFSSL_API int wolfSSL_EVP_CipherFinal_ex(WOLFSSL_EVP_CIPHER_CTX *ctx, - unsigned char *out, int *outl, int enc); -WOLFSSL_API int wolfSSL_EVP_EncryptFinal(WOLFSSL_EVP_CIPHER_CTX *ctx, - unsigned char *out, int *outl); -WOLFSSL_API int wolfSSL_EVP_EncryptFinal_ex(WOLFSSL_EVP_CIPHER_CTX *ctx, - unsigned char *out, int *outl); -WOLFSSL_API int wolfSSL_EVP_DecryptFinal(WOLFSSL_EVP_CIPHER_CTX *ctx, - unsigned char *out, int *outl); -WOLFSSL_API int wolfSSL_EVP_DecryptFinal_ex(WOLFSSL_EVP_CIPHER_CTX *ctx, - unsigned char *out, int *outl); -WOLFSSL_API int wolfSSL_EVP_DecryptFinal_legacy(WOLFSSL_EVP_CIPHER_CTX *ctx, - unsigned char *out, int *outl); - -WOLFSSL_API WOLFSSL_EVP_CIPHER_CTX *wolfSSL_EVP_CIPHER_CTX_new(void); -WOLFSSL_API void wolfSSL_EVP_CIPHER_CTX_free(WOLFSSL_EVP_CIPHER_CTX *ctx); -WOLFSSL_API int wolfSSL_EVP_CIPHER_CTX_reset(WOLFSSL_EVP_CIPHER_CTX *ctx); -WOLFSSL_API int wolfSSL_EVP_CIPHER_CTX_nid(const WOLFSSL_EVP_CIPHER_CTX *ctx); -WOLFSSL_API int wolfSSL_EVP_CIPHER_CTX_key_length(WOLFSSL_EVP_CIPHER_CTX* ctx); -WOLFSSL_API int wolfSSL_EVP_CIPHER_CTX_set_key_length(WOLFSSL_EVP_CIPHER_CTX* ctx, - int keylen); -WOLFSSL_API int wolfSSL_EVP_CIPHER_CTX_set_iv_length(WOLFSSL_EVP_CIPHER_CTX* ctx, - int ivLen); -WOLFSSL_API int wolfSSL_EVP_CIPHER_CTX_set_iv(WOLFSSL_EVP_CIPHER_CTX* ctx, byte* iv, - int ivLen); -WOLFSSL_API int wolfSSL_EVP_CIPHER_CTX_get_iv(WOLFSSL_EVP_CIPHER_CTX* ctx, byte* iv, - int ivLen); -WOLFSSL_API int wolfSSL_EVP_Cipher(WOLFSSL_EVP_CIPHER_CTX* ctx, - unsigned char* dst, unsigned char* src, - unsigned int len); - -WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_get_cipherbynid(int id); -WOLFSSL_API const WOLFSSL_EVP_MD* wolfSSL_EVP_get_digestbynid(int id); -WOLFSSL_API const WOLFSSL_EVP_CIPHER *wolfSSL_EVP_CIPHER_CTX_cipher(const WOLFSSL_EVP_CIPHER_CTX *ctx); - -WOLFSSL_API int wolfSSL_EVP_PKEY_assign_RSA(WOLFSSL_EVP_PKEY* pkey, - WOLFSSL_RSA* key); -WOLFSSL_API int wolfSSL_EVP_PKEY_assign_EC_KEY(WOLFSSL_EVP_PKEY* pkey, - WOLFSSL_EC_KEY* key); -WOLFSSL_API int wolfSSL_EVP_PKEY_assign_DSA(WOLFSSL_EVP_PKEY* pkey, WOLFSSL_DSA* key); -WOLFSSL_API int wolfSSL_EVP_PKEY_assign_DH(WOLFSSL_EVP_PKEY* pkey, WOLFSSL_DH* key); -WOLFSSL_API WOLFSSL_RSA* wolfSSL_EVP_PKEY_get0_RSA(WOLFSSL_EVP_PKEY *pkey); -WOLFSSL_API WOLFSSL_DSA* wolfSSL_EVP_PKEY_get0_DSA(WOLFSSL_EVP_PKEY *pkey); -WOLFSSL_API WOLFSSL_RSA* wolfSSL_EVP_PKEY_get1_RSA(WOLFSSL_EVP_PKEY* key); -WOLFSSL_API WOLFSSL_DSA* wolfSSL_EVP_PKEY_get1_DSA(WOLFSSL_EVP_PKEY* key); -WOLFSSL_API WOLFSSL_EC_KEY *wolfSSL_EVP_PKEY_get0_EC_KEY(WOLFSSL_EVP_PKEY *pkey); -WOLFSSL_API WOLFSSL_EC_KEY *wolfSSL_EVP_PKEY_get1_EC_KEY(WOLFSSL_EVP_PKEY *key); -WOLFSSL_API WOLFSSL_DH* wolfSSL_EVP_PKEY_get0_DH(WOLFSSL_EVP_PKEY* key); -WOLFSSL_API WOLFSSL_DH* wolfSSL_EVP_PKEY_get1_DH(WOLFSSL_EVP_PKEY* key); -WOLFSSL_API int wolfSSL_EVP_PKEY_set1_RSA(WOLFSSL_EVP_PKEY *pkey, WOLFSSL_RSA *key); -WOLFSSL_API int wolfSSL_EVP_PKEY_set1_DSA(WOLFSSL_EVP_PKEY *pkey, WOLFSSL_DSA *key); -WOLFSSL_API int wolfSSL_EVP_PKEY_set1_DH(WOLFSSL_EVP_PKEY *pkey, WOLFSSL_DH *key); -WOLFSSL_API int wolfSSL_EVP_PKEY_set1_EC_KEY(WOLFSSL_EVP_PKEY *pkey, WOLFSSL_EC_KEY *key); -WOLFSSL_API int wolfSSL_EVP_PKEY_assign(WOLFSSL_EVP_PKEY *pkey, int type, void *key); - -WOLFSSL_API const unsigned char* wolfSSL_EVP_PKEY_get0_hmac(const WOLFSSL_EVP_PKEY* pkey, - size_t* len); -WOLFSSL_API int wolfSSL_EVP_PKEY_sign_init(WOLFSSL_EVP_PKEY_CTX *ctx); -WOLFSSL_API int wolfSSL_EVP_PKEY_sign(WOLFSSL_EVP_PKEY_CTX *ctx, - unsigned char *sig, size_t *siglen, const unsigned char *tbs, size_t tbslen); -WOLFSSL_API int wolfSSL_EVP_PKEY_verify_init(WOLFSSL_EVP_PKEY_CTX *ctx); -WOLFSSL_API int wolfSSL_EVP_PKEY_verify(WOLFSSL_EVP_PKEY_CTX *ctx, const unsigned char *sig, - size_t siglen, const unsigned char *tbs, size_t tbslen); -WOLFSSL_API int wolfSSL_EVP_PKEY_paramgen_init(WOLFSSL_EVP_PKEY_CTX *ctx); -WOLFSSL_API int wolfSSL_EVP_PKEY_CTX_set_ec_paramgen_curve_nid(WOLFSSL_EVP_PKEY_CTX *ctx, - int nid); -WOLFSSL_API int wolfSSL_EVP_PKEY_paramgen(WOLFSSL_EVP_PKEY_CTX* ctx, - WOLFSSL_EVP_PKEY** pkey); -WOLFSSL_API int wolfSSL_EVP_PKEY_CTX_set_ec_param_enc(WOLFSSL_EVP_PKEY_CTX *ctx, - int flag); -WOLFSSL_API int wolfSSL_EVP_PKEY_keygen_init(WOLFSSL_EVP_PKEY_CTX *ctx); -WOLFSSL_API int wolfSSL_EVP_PKEY_keygen(WOLFSSL_EVP_PKEY_CTX *ctx, - WOLFSSL_EVP_PKEY **ppkey); -WOLFSSL_API int wolfSSL_EVP_PKEY_bits(const WOLFSSL_EVP_PKEY *pkey); -#if defined(OPENSSL_VERSION_NUMBER) && OPENSSL_VERSION_NUMBER >= 0x10100000L -WOLFSSL_API void wolfSSL_EVP_PKEY_CTX_free(WOLFSSL_EVP_PKEY_CTX *ctx); -#else -WOLFSSL_API int wolfSSL_EVP_PKEY_CTX_free(WOLFSSL_EVP_PKEY_CTX *ctx); -#endif -WOLFSSL_API int wolfSSL_EVP_PKEY_CTX_set_rsa_padding(WOLFSSL_EVP_PKEY_CTX *ctx, int padding); -WOLFSSL_API int wolfSSL_EVP_PKEY_CTX_set_signature_md(WOLFSSL_EVP_PKEY_CTX *ctx, - const WOLFSSL_EVP_MD* md); -WOLFSSL_API int wolfSSL_EVP_PKEY_CTX_set_rsa_keygen_bits(WOLFSSL_EVP_PKEY_CTX *ctx, int bits); - -WOLFSSL_API int wolfSSL_EVP_PKEY_derive_init(WOLFSSL_EVP_PKEY_CTX *ctx); -WOLFSSL_API int wolfSSL_EVP_PKEY_derive_set_peer(WOLFSSL_EVP_PKEY_CTX *ctx, WOLFSSL_EVP_PKEY *peer); -WOLFSSL_API int wolfSSL_EVP_PKEY_derive(WOLFSSL_EVP_PKEY_CTX *ctx, unsigned char *key, size_t *keylen); - -WOLFSSL_API int wolfSSL_EVP_PKEY_CTX_ctrl_str(WOLFSSL_EVP_PKEY_CTX *ctx, - const char *name, const char *value); - -WOLFSSL_API int wolfSSL_EVP_PKEY_decrypt(WOLFSSL_EVP_PKEY_CTX *ctx, - unsigned char *out, size_t *outlen, - const unsigned char *in, size_t inlen); -WOLFSSL_API int wolfSSL_EVP_PKEY_decrypt_init(WOLFSSL_EVP_PKEY_CTX *ctx); -WOLFSSL_API int wolfSSL_EVP_PKEY_encrypt(WOLFSSL_EVP_PKEY_CTX *ctx, - unsigned char *out, size_t *outlen, - const unsigned char *in, size_t inlen); -WOLFSSL_API int wolfSSL_EVP_PKEY_encrypt_init(WOLFSSL_EVP_PKEY_CTX *ctx); -WOLFSSL_API WOLFSSL_EVP_PKEY *wolfSSL_EVP_PKEY_new(void); -WOLFSSL_API WOLFSSL_EVP_PKEY* wolfSSL_EVP_PKEY_new_ex(void* heap); -WOLFSSL_API void wolfSSL_EVP_PKEY_free(WOLFSSL_EVP_PKEY* key); -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_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_id(const WOLFSSL_EVP_PKEY *pkey); -WOLFSSL_API int wolfSSL_EVP_PKEY_base_id(const WOLFSSL_EVP_PKEY *pkey); -WOLFSSL_API int wolfSSL_EVP_PKEY_get_default_digest_nid(WOLFSSL_EVP_PKEY *pkey, int *pnid); -WOLFSSL_API WOLFSSL_EVP_PKEY* wolfSSL_EVP_PKCS82PKEY(const WOLFSSL_PKCS8_PRIV_KEY_INFO* p8); -WOLFSSL_API WOLFSSL_PKCS8_PRIV_KEY_INFO* wolfSSL_EVP_PKEY2PKCS8(const WOLFSSL_EVP_PKEY* pkey); - -WOLFSSL_API int wolfSSL_EVP_SignFinal(WOLFSSL_EVP_MD_CTX *ctx, unsigned char *sigret, - unsigned int *siglen, WOLFSSL_EVP_PKEY *pkey); -WOLFSSL_API int wolfSSL_EVP_SignInit(WOLFSSL_EVP_MD_CTX *ctx, const WOLFSSL_EVP_MD *type); -WOLFSSL_API int wolfSSL_EVP_SignUpdate(WOLFSSL_EVP_MD_CTX *ctx, const void *data, size_t len); -WOLFSSL_API int wolfSSL_EVP_VerifyFinal(WOLFSSL_EVP_MD_CTX *ctx, - const unsigned char* sig, unsigned int sig_len, WOLFSSL_EVP_PKEY *pkey); -WOLFSSL_API int wolfSSL_EVP_VerifyInit(WOLFSSL_EVP_MD_CTX *ctx, const WOLFSSL_EVP_MD *type); -WOLFSSL_API int wolfSSL_EVP_VerifyUpdate(WOLFSSL_EVP_MD_CTX *ctx, const void *data, size_t len); - - -/* these next ones don't need real OpenSSL type, for OpenSSH compat only */ -WOLFSSL_API void* wolfSSL_EVP_X_STATE(const WOLFSSL_EVP_CIPHER_CTX* ctx); -WOLFSSL_API int wolfSSL_EVP_X_STATE_LEN(const WOLFSSL_EVP_CIPHER_CTX* ctx); - -WOLFSSL_API void wolfSSL_3des_iv(WOLFSSL_EVP_CIPHER_CTX* ctx, int doset, - unsigned char* iv, int len); -WOLFSSL_API void wolfSSL_aes_ctr_iv(WOLFSSL_EVP_CIPHER_CTX* ctx, int doset, - unsigned char* iv, int len); - -WOLFSSL_API int wolfSSL_StoreExternalIV(WOLFSSL_EVP_CIPHER_CTX* ctx); -WOLFSSL_API int wolfSSL_SetInternalIV(WOLFSSL_EVP_CIPHER_CTX* ctx); - -WOLFSSL_API int wolfSSL_EVP_CIPHER_CTX_block_size(const WOLFSSL_EVP_CIPHER_CTX *ctx); -WOLFSSL_API int wolfSSL_EVP_CIPHER_block_size(const WOLFSSL_EVP_CIPHER *cipher); -WOLFSSL_API unsigned long WOLFSSL_EVP_CIPHER_mode(const WOLFSSL_EVP_CIPHER *cipher); -WOLFSSL_API unsigned long WOLFSSL_CIPHER_mode(const WOLFSSL_EVP_CIPHER *cipher); -WOLFSSL_API unsigned long wolfSSL_EVP_CIPHER_flags(const WOLFSSL_EVP_CIPHER *cipher); -WOLFSSL_API void wolfSSL_EVP_CIPHER_CTX_set_flags(WOLFSSL_EVP_CIPHER_CTX *ctx, int flags); -WOLFSSL_API void wolfSSL_EVP_CIPHER_CTX_clear_flags(WOLFSSL_EVP_CIPHER_CTX *ctx, int flags); -WOLFSSL_API unsigned long wolfSSL_EVP_CIPHER_CTX_flags(const WOLFSSL_EVP_CIPHER_CTX *ctx); -WOLFSSL_API unsigned long wolfSSL_EVP_CIPHER_CTX_mode(const WOLFSSL_EVP_CIPHER_CTX *ctx); -WOLFSSL_API int wolfSSL_EVP_CIPHER_CTX_set_padding(WOLFSSL_EVP_CIPHER_CTX *c, int pad); -WOLFSSL_API int wolfSSL_EVP_add_digest(const WOLFSSL_EVP_MD *digest); -WOLFSSL_API int wolfSSL_EVP_add_cipher(const WOLFSSL_EVP_CIPHER *cipher); -WOLFSSL_API void wolfSSL_EVP_cleanup(void); -WOLFSSL_API int wolfSSL_add_all_algorithms(void); -WOLFSSL_API int wolfSSL_OpenSSL_add_all_algorithms_conf(void); -WOLFSSL_API int wolfSSL_OpenSSL_add_all_algorithms_noconf(void); -WOLFSSL_API int wolfSSL_EVP_read_pw_string(char*, int, const char*, int); - -WOLFSSL_API int wolfSSL_PKCS5_PBKDF2_HMAC_SHA1(const char * pass, int passlen, - const unsigned char * salt, - int saltlen, int iter, - int keylen, unsigned char *out); - -WOLFSSL_API int wolfSSL_PKCS5_PBKDF2_HMAC(const char *pass, int passlen, - const unsigned char *salt, - int saltlen, int iter, - const WOLFSSL_EVP_MD *digest, - int keylen, unsigned char *out); - -#if defined(HAVE_SCRYPT) && defined(HAVE_PBKDF2) && !defined(NO_PWDBASED) && \ - !defined(NO_SHA256) -WOLFSSL_API int wolfSSL_EVP_PBE_scrypt(const char *pass, size_t passlen, - const unsigned char *salt, size_t saltlen, - word64 N, word64 r, word64 p, - word64 maxmem, unsigned char *key, size_t keylen); -#endif /* HAVE_SCRYPT && HAVE_PBKDF2 && !NO_PWDBASED && !NO_SHA256 */ - -WOLFSSL_LOCAL int wolfSSL_EVP_get_hashinfo(const WOLFSSL_EVP_MD* evp, - int* pHash, int* pHashSz); - -WOLFSSL_API void wolfSSL_EVP_MD_do_all(void (*fn) (const WOLFSSL_EVP_MD *md, - const char* from, const char* to, - void* xx), void* args); - -#ifdef HAVE_HKDF -WOLFSSL_API int wolfSSL_EVP_PKEY_CTX_set_hkdf_md(WOLFSSL_EVP_PKEY_CTX* ctx, - const WOLFSSL_EVP_MD* md); -WOLFSSL_API int wolfSSL_EVP_PKEY_CTX_set1_hkdf_salt(WOLFSSL_EVP_PKEY_CTX* ctx, - const byte* salt, - int saltSz); -WOLFSSL_API int wolfSSL_EVP_PKEY_CTX_set1_hkdf_key(WOLFSSL_EVP_PKEY_CTX* ctx, - const byte* key, int keySz); -WOLFSSL_API int wolfSSL_EVP_PKEY_CTX_add1_hkdf_info(WOLFSSL_EVP_PKEY_CTX* ctx, - const byte* info, - int infoSz); -WOLFSSL_API int wolfSSL_EVP_PKEY_CTX_hkdf_mode(WOLFSSL_EVP_PKEY_CTX* ctx, - int mode); -#endif - -#define WOLFSSL_EVP_CIPH_MODE 0x0007 -#define WOLFSSL_EVP_CIPH_STREAM_CIPHER 0x0 -#define WOLFSSL_EVP_CIPH_ECB_MODE 0x1 -#define WOLFSSL_EVP_CIPH_CBC_MODE 0x2 -#define WOLFSSL_EVP_CIPH_CFB_MODE 0x3 -#define WOLFSSL_EVP_CIPH_OFB_MODE 0x4 -#define WOLFSSL_EVP_CIPH_CTR_MODE 0x5 -#define WOLFSSL_EVP_CIPH_GCM_MODE 0x6 -#define WOLFSSL_EVP_CIPH_CCM_MODE 0x7 -#define WOLFSSL_EVP_CIPH_XTS_MODE 0x10 -#define WOLFSSL_EVP_CIPH_FLAG_AEAD_CIPHER 0x20 -#define WOLFSSL_EVP_CIPH_NO_PADDING 0x100 -#define WOLFSSL_EVP_CIPH_VARIABLE_LENGTH 0x200 -#define WOLFSSL_EVP_CIPH_LOW_LEVEL_INITED 0x400 -#define WOLFSSL_EVP_CIPH_TYPE_INIT 0xff - - -#if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL) - -/* EVP ENGINE API's */ -WOLFSSL_API WOLFSSL_EVP_PKEY* wolfSSL_EVP_PKEY_new_mac_key(int type, WOLFSSL_ENGINE* e, - const unsigned char* key, int keylen); - -WOLFSSL_API WOLFSSL_EVP_PKEY* wolfSSL_EVP_PKEY_new_CMAC_key(WOLFSSL_ENGINE* e, - const unsigned char* priv, size_t len, - const WOLFSSL_EVP_CIPHER* cipher); - -WOLFSSL_API int wolfSSL_EVP_DigestInit_ex(WOLFSSL_EVP_MD_CTX* ctx, - const WOLFSSL_EVP_MD* type, - WOLFSSL_ENGINE *impl); - -WOLFSSL_API int wolfSSL_EVP_DigestSignInit(WOLFSSL_EVP_MD_CTX *ctx, - WOLFSSL_EVP_PKEY_CTX **pctx, - const WOLFSSL_EVP_MD *type, - WOLFSSL_ENGINE *e, - WOLFSSL_EVP_PKEY *pkey); -WOLFSSL_API int wolfSSL_EVP_DigestVerifyInit(WOLFSSL_EVP_MD_CTX *ctx, - WOLFSSL_EVP_PKEY_CTX **pctx, - const WOLFSSL_EVP_MD *type, - WOLFSSL_ENGINE *e, - WOLFSSL_EVP_PKEY *pkey); -WOLFSSL_API int wolfSSL_EVP_Digest(const unsigned char* in, int inSz, unsigned char* out, - unsigned int* outSz, const WOLFSSL_EVP_MD* evp, - WOLFSSL_ENGINE* eng); -WOLFSSL_API int wolfSSL_EVP_CipherInit_ex(WOLFSSL_EVP_CIPHER_CTX* ctx, - const WOLFSSL_EVP_CIPHER* type, - WOLFSSL_ENGINE *impl, - const unsigned char* key, - const unsigned char* iv, - int enc); -WOLFSSL_API int wolfSSL_EVP_EncryptInit(WOLFSSL_EVP_CIPHER_CTX* ctx, - const WOLFSSL_EVP_CIPHER* type, - const unsigned char* key, - const unsigned char* iv); -WOLFSSL_API int wolfSSL_EVP_EncryptInit_ex(WOLFSSL_EVP_CIPHER_CTX* ctx, - const WOLFSSL_EVP_CIPHER* type, - WOLFSSL_ENGINE *impl, - const unsigned char* key, - const unsigned char* iv); -WOLFSSL_API int wolfSSL_EVP_DecryptInit(WOLFSSL_EVP_CIPHER_CTX* ctx, - const WOLFSSL_EVP_CIPHER* type, - const unsigned char* key, - const unsigned char* iv); -WOLFSSL_API int wolfSSL_EVP_DecryptInit_ex(WOLFSSL_EVP_CIPHER_CTX* ctx, - const WOLFSSL_EVP_CIPHER* type, - WOLFSSL_ENGINE *impl, - const unsigned char* key, - const unsigned char* iv); -WOLFSSL_API WOLFSSL_EVP_PKEY_CTX *wolfSSL_EVP_PKEY_CTX_new(WOLFSSL_EVP_PKEY *pkey, WOLFSSL_ENGINE *e); -WOLFSSL_API WOLFSSL_EVP_PKEY_CTX *wolfSSL_EVP_PKEY_CTX_new_id(int id, WOLFSSL_ENGINE *e); -WOLFSSL_API int wolfSSL_EVP_SignInit_ex(WOLFSSL_EVP_MD_CTX* ctx, - const WOLFSSL_EVP_MD* type, - WOLFSSL_ENGINE *impl); - -#define EVP_CIPH_STREAM_CIPHER WOLFSSL_EVP_CIPH_STREAM_CIPHER -#define EVP_CIPH_VARIABLE_LENGTH WOLFSSL_EVP_CIPH_VARIABLE_LENGTH -#define EVP_CIPH_ECB_MODE WOLFSSL_EVP_CIPH_ECB_MODE -#define EVP_CIPH_CBC_MODE WOLFSSL_EVP_CIPH_CBC_MODE -#define EVP_CIPH_CFB_MODE WOLFSSL_EVP_CIPH_CFB_MODE -#define EVP_CIPH_OFB_MODE WOLFSSL_EVP_CIPH_OFB_MODE -#define EVP_CIPH_CTR_MODE WOLFSSL_EVP_CIPH_CTR_MODE -#define EVP_CIPH_GCM_MODE WOLFSSL_EVP_CIPH_GCM_MODE -#define EVP_CIPH_CCM_MODE WOLFSSL_EVP_CIPH_CCM_MODE -#define EVP_CIPH_XTS_MODE WOLFSSL_EVP_CIPH_XTS_MODE - -#define EVP_CIPH_FLAG_AEAD_CIPHER WOLFSSL_EVP_CIPH_FLAG_AEAD_CIPHER - -#ifndef NO_MD4 - #define EVP_md4 wolfSSL_EVP_md4 -#endif -#ifndef NO_MD5 - #define EVP_md5 wolfSSL_EVP_md5 -#endif -#define EVP_sha1 wolfSSL_EVP_sha1 -#define EVP_mdc2 wolfSSL_EVP_mdc2 -#define EVP_dds1 wolfSSL_EVP_sha1 -#define EVP_sha224 wolfSSL_EVP_sha224 -#define EVP_sha256 wolfSSL_EVP_sha256 -#define EVP_sha384 wolfSSL_EVP_sha384 -#define EVP_sha512 wolfSSL_EVP_sha512 -#define EVP_sha512_224 wolfSSL_EVP_sha512_224 -#define EVP_sha512_256 wolfSSL_EVP_sha512_256 -#define EVP_ripemd160 wolfSSL_EVP_ripemd160 -#define EVP_shake128 wolfSSL_EVP_shake128 -#define EVP_shake256 wolfSSL_EVP_shake256 -#define EVP_sm3 wolfSSL_EVP_sm3 -#define EVP_set_pw_prompt wolfSSL_EVP_set_pw_prompt - -#define EVP_sha3_224 wolfSSL_EVP_sha3_224 -#define EVP_sha3_256 wolfSSL_EVP_sha3_256 -#define EVP_sha3_384 wolfSSL_EVP_sha3_384 -#define EVP_sha3_512 wolfSSL_EVP_sha3_512 - -#define EVP_aes_128_cbc wolfSSL_EVP_aes_128_cbc -#define EVP_aes_192_cbc wolfSSL_EVP_aes_192_cbc -#define EVP_aes_256_cbc wolfSSL_EVP_aes_256_cbc -#define EVP_aes_128_cfb1 wolfSSL_EVP_aes_128_cfb1 -#define EVP_aes_192_cfb1 wolfSSL_EVP_aes_192_cfb1 -#define EVP_aes_256_cfb1 wolfSSL_EVP_aes_256_cfb1 -#define EVP_aes_128_cfb8 wolfSSL_EVP_aes_128_cfb8 -#define EVP_aes_192_cfb8 wolfSSL_EVP_aes_192_cfb8 -#define EVP_aes_256_cfb8 wolfSSL_EVP_aes_256_cfb8 -#define EVP_aes_128_cfb128 wolfSSL_EVP_aes_128_cfb128 -#define EVP_aes_192_cfb128 wolfSSL_EVP_aes_192_cfb128 -#define EVP_aes_256_cfb128 wolfSSL_EVP_aes_256_cfb128 -#define EVP_aes_128_cfb wolfSSL_EVP_aes_128_cfb128 -#define EVP_aes_192_cfb wolfSSL_EVP_aes_192_cfb128 -#define EVP_aes_256_cfb wolfSSL_EVP_aes_256_cfb128 -#define EVP_aes_128_ofb wolfSSL_EVP_aes_128_ofb -#define EVP_aes_192_ofb wolfSSL_EVP_aes_192_ofb -#define EVP_aes_256_ofb wolfSSL_EVP_aes_256_ofb -#define EVP_aes_128_xts wolfSSL_EVP_aes_128_xts -#define EVP_aes_256_xts wolfSSL_EVP_aes_256_xts -#define EVP_aes_128_gcm wolfSSL_EVP_aes_128_gcm -#define EVP_aes_192_gcm wolfSSL_EVP_aes_192_gcm -#define EVP_aes_256_gcm wolfSSL_EVP_aes_256_gcm -#define EVP_aes_128_ccm wolfSSL_EVP_aes_128_ccm -#define EVP_aes_192_ccm wolfSSL_EVP_aes_192_ccm -#define EVP_aes_256_ccm wolfSSL_EVP_aes_256_ccm -#define EVP_aes_128_ecb wolfSSL_EVP_aes_128_ecb -#define EVP_aes_192_ecb wolfSSL_EVP_aes_192_ecb -#define EVP_aes_256_ecb wolfSSL_EVP_aes_256_ecb -#define EVP_aes_128_ctr wolfSSL_EVP_aes_128_ctr -#define EVP_aes_192_ctr wolfSSL_EVP_aes_192_ctr -#define EVP_aes_256_ctr wolfSSL_EVP_aes_256_ctr -#define EVP_des_cbc wolfSSL_EVP_des_cbc -#define EVP_des_ecb wolfSSL_EVP_des_ecb -#define EVP_des_ede3_cbc wolfSSL_EVP_des_ede3_cbc -#define EVP_des_ede3_ecb wolfSSL_EVP_des_ede3_ecb -#define EVP_rc4 wolfSSL_EVP_rc4 -#define EVP_chacha20 wolfSSL_EVP_chacha20 -#define EVP_chacha20_poly1305 wolfSSL_EVP_chacha20_poly1305 -#define EVP_aria_128_gcm wolfSSL_EVP_aria_128_gcm -#define EVP_aria_192_gcm wolfSSL_EVP_aria_192_gcm -#define EVP_aria_256_gcm wolfSSL_EVP_aria_256_gcm -#define EVP_sm4_ecb wolfSSL_EVP_sm4_ecb -#define EVP_sm4_cbc wolfSSL_EVP_sm4_cbc -#define EVP_sm4_ctr wolfSSL_EVP_sm4_ctr -#define EVP_sm4_gcm wolfSSL_EVP_sm4_gcm -#define EVP_sm4_ccm wolfSSL_EVP_sm4_ccm -#define EVP_enc_null wolfSSL_EVP_enc_null - -#define EVP_MD_size wolfSSL_EVP_MD_size -#define EVP_MD_pkey_type wolfSSL_EVP_MD_pkey_type -#define EVP_MD_CTX_new wolfSSL_EVP_MD_CTX_new -#define EVP_MD_CTX_create wolfSSL_EVP_MD_CTX_new -#define EVP_MD_CTX_free wolfSSL_EVP_MD_CTX_free -#define EVP_MD_CTX_destroy wolfSSL_EVP_MD_CTX_free -#define EVP_MD_CTX_init wolfSSL_EVP_MD_CTX_init -#define EVP_MD_CTX_cleanup wolfSSL_EVP_MD_CTX_cleanup -#define EVP_MD_CTX_reset wolfSSL_EVP_MD_CTX_cleanup -#define EVP_MD_CTX_md wolfSSL_EVP_MD_CTX_md -#define EVP_MD_CTX_type wolfSSL_EVP_MD_CTX_type -#define EVP_MD_CTX_size wolfSSL_EVP_MD_CTX_size -#define EVP_MD_CTX_block_size wolfSSL_EVP_MD_CTX_block_size -#define EVP_MD_block_size wolfSSL_EVP_MD_block_size -#define EVP_MD_type wolfSSL_EVP_MD_type -#ifndef NO_WOLFSSL_STUB -#define EVP_MD_CTX_set_flags(...) WC_DO_NOTHING -#endif - -#define EVP_Digest wolfSSL_EVP_Digest -#define EVP_DigestInit wolfSSL_EVP_DigestInit -#define EVP_DigestInit_ex wolfSSL_EVP_DigestInit_ex -#define EVP_DigestUpdate wolfSSL_EVP_DigestUpdate -#define EVP_DigestFinal wolfSSL_EVP_DigestFinal -#define EVP_DigestFinal_ex wolfSSL_EVP_DigestFinal_ex -#define EVP_DigestSignInit wolfSSL_EVP_DigestSignInit -#define EVP_DigestSignUpdate wolfSSL_EVP_DigestSignUpdate -#define EVP_DigestSignFinal wolfSSL_EVP_DigestSignFinal -#define EVP_DigestVerifyInit wolfSSL_EVP_DigestVerifyInit -#define EVP_DigestVerifyUpdate wolfSSL_EVP_DigestVerifyUpdate -#define EVP_DigestVerifyFinal wolfSSL_EVP_DigestVerifyFinal -#define EVP_BytesToKey wolfSSL_EVP_BytesToKey - -#define EVP_get_cipherbyname wolfSSL_EVP_get_cipherbyname -#define EVP_get_digestbyname wolfSSL_EVP_get_digestbyname - -#define EVP_CIPHER_CTX_init wolfSSL_EVP_CIPHER_CTX_init -#define EVP_CIPHER_CTX_cleanup wolfSSL_EVP_CIPHER_CTX_cleanup -#define EVP_CIPHER_CTX_iv_length wolfSSL_EVP_CIPHER_CTX_iv_length -#define EVP_CIPHER_CTX_nid wolfSSL_EVP_CIPHER_CTX_nid -#define EVP_CIPHER_CTX_key_length wolfSSL_EVP_CIPHER_CTX_key_length -#define EVP_CIPHER_CTX_set_key_length wolfSSL_EVP_CIPHER_CTX_set_key_length -#define EVP_CIPHER_CTX_set_iv_length wolfSSL_EVP_CIPHER_CTX_set_iv_length -#define EVP_CIPHER_CTX_mode wolfSSL_EVP_CIPHER_CTX_mode -#define EVP_CIPHER_CTX_cipher wolfSSL_EVP_CIPHER_CTX_cipher - -#define EVP_CIPHER_iv_length wolfSSL_EVP_CIPHER_iv_length -#define EVP_CIPHER_key_length wolfSSL_EVP_Cipher_key_length - -#define EVP_CipherInit wolfSSL_EVP_CipherInit -#define EVP_CipherInit_ex wolfSSL_EVP_CipherInit_ex -#define EVP_EncryptInit wolfSSL_EVP_EncryptInit -#define EVP_EncryptInit_ex wolfSSL_EVP_EncryptInit_ex -#define EVP_DecryptInit wolfSSL_EVP_DecryptInit -#define EVP_DecryptInit_ex wolfSSL_EVP_DecryptInit_ex - -#define EVP_Cipher wolfSSL_EVP_Cipher -#define EVP_CipherUpdate wolfSSL_EVP_CipherUpdate -#define EVP_EncryptUpdate wolfSSL_EVP_CipherUpdate -#define EVP_DecryptUpdate wolfSSL_EVP_CipherUpdate -#define EVP_CipherFinal wolfSSL_EVP_CipherFinal -#define EVP_CipherFinal_ex wolfSSL_EVP_CipherFinal -#define EVP_EncryptFinal wolfSSL_EVP_CipherFinal -#define EVP_EncryptFinal_ex wolfSSL_EVP_CipherFinal -#define EVP_DecryptFinal wolfSSL_EVP_CipherFinal -#define EVP_DecryptFinal_ex wolfSSL_EVP_CipherFinal - -#define EVP_CIPHER_CTX_free wolfSSL_EVP_CIPHER_CTX_free -#define EVP_CIPHER_CTX_reset wolfSSL_EVP_CIPHER_CTX_reset -#define EVP_CIPHER_CTX_new wolfSSL_EVP_CIPHER_CTX_new - -#define EVP_get_cipherbynid wolfSSL_EVP_get_cipherbynid -#define EVP_get_digestbynid wolfSSL_EVP_get_digestbynid -#define EVP_MD_nid wolfSSL_EVP_MD_type - -#define EVP_PKEY_assign wolfSSL_EVP_PKEY_assign -#define EVP_PKEY_assign_RSA wolfSSL_EVP_PKEY_assign_RSA -#define EVP_PKEY_assign_DSA wolfSSL_EVP_PKEY_assign_DSA -#define EVP_PKEY_assign_DH wolfSSL_EVP_PKEY_assign_DH -#define EVP_PKEY_assign_EC_KEY wolfSSL_EVP_PKEY_assign_EC_KEY -#define EVP_PKEY_get1_DSA wolfSSL_EVP_PKEY_get1_DSA -#define EVP_PKEY_set1_DSA wolfSSL_EVP_PKEY_set1_DSA -#define EVP_PKEY_get0_RSA wolfSSL_EVP_PKEY_get0_RSA -#define EVP_PKEY_get1_RSA wolfSSL_EVP_PKEY_get1_RSA -#define EVP_PKEY_set1_RSA wolfSSL_EVP_PKEY_set1_RSA -#define EVP_PKEY_set1_EC_KEY wolfSSL_EVP_PKEY_set1_EC_KEY -#define EVP_PKEY_get1_EC_KEY wolfSSL_EVP_PKEY_get1_EC_KEY -#define EVP_PKEY_set1_DH wolfSSL_EVP_PKEY_set1_DH -#define EVP_PKEY_get0_DH wolfSSL_EVP_PKEY_get0_DH -#define EVP_PKEY_get1_DH wolfSSL_EVP_PKEY_get1_DH -#define EVP_PKEY_get0_EC_KEY wolfSSL_EVP_PKEY_get0_EC_KEY -#define EVP_PKEY_get0_hmac wolfSSL_EVP_PKEY_get0_hmac -#define EVP_PKEY_new_mac_key wolfSSL_EVP_PKEY_new_mac_key -#define EVP_PKEY_new_CMAC_key wolfSSL_EVP_PKEY_new_CMAC_key -#define EVP_MD_CTX_copy wolfSSL_EVP_MD_CTX_copy -#define EVP_MD_CTX_copy_ex wolfSSL_EVP_MD_CTX_copy_ex -#define EVP_PKEY_sign_init wolfSSL_EVP_PKEY_sign_init -#define EVP_PKEY_sign wolfSSL_EVP_PKEY_sign -#define EVP_PKEY_verify_init wolfSSL_EVP_PKEY_verify_init -#define EVP_PKEY_verify wolfSSL_EVP_PKEY_verify -#define EVP_PKEY_paramgen_init wolfSSL_EVP_PKEY_paramgen_init -#define EVP_PKEY_CTX_set_ec_param_enc wolfSSL_EVP_PKEY_CTX_set_ec_param_enc -#define EVP_PKEY_CTX_set_ec_paramgen_curve_nid wolfSSL_EVP_PKEY_CTX_set_ec_paramgen_curve_nid -#define EVP_PKEY_paramgen wolfSSL_EVP_PKEY_paramgen -#define EVP_PKEY_keygen wolfSSL_EVP_PKEY_keygen -#define EVP_PKEY_keygen_init wolfSSL_EVP_PKEY_keygen_init -#define EVP_PKEY_bits wolfSSL_EVP_PKEY_bits -#define EVP_PKEY_CTX_free wolfSSL_EVP_PKEY_CTX_free -#define EVP_PKEY_CTX_new wolfSSL_EVP_PKEY_CTX_new -#define EVP_PKEY_CTX_set_rsa_padding wolfSSL_EVP_PKEY_CTX_set_rsa_padding -#define EVP_PKEY_CTX_set_signature_md wolfSSL_EVP_PKEY_CTX_set_signature_md -#define EVP_PKEY_CTX_new_id wolfSSL_EVP_PKEY_CTX_new_id -#define EVP_PKEY_CTX_set_rsa_keygen_bits wolfSSL_EVP_PKEY_CTX_set_rsa_keygen_bits -#define EVP_PKEY_derive_init wolfSSL_EVP_PKEY_derive_init -#define EVP_PKEY_derive_set_peer wolfSSL_EVP_PKEY_derive_set_peer -#define EVP_PKEY_derive wolfSSL_EVP_PKEY_derive -#define EVP_PKEY_decrypt wolfSSL_EVP_PKEY_decrypt -#define EVP_PKEY_decrypt_init wolfSSL_EVP_PKEY_decrypt_init -#define EVP_PKEY_encrypt wolfSSL_EVP_PKEY_encrypt -#define EVP_PKEY_encrypt_init wolfSSL_EVP_PKEY_encrypt_init -#define EVP_PKEY_new wolfSSL_EVP_PKEY_new -#define EVP_PKEY_free wolfSSL_EVP_PKEY_free -#define EVP_PKEY_up_ref wolfSSL_EVP_PKEY_up_ref -#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_cmp wolfSSL_EVP_PKEY_cmp -#define EVP_PKEY_type wolfSSL_EVP_PKEY_type -#define EVP_PKEY_base_id wolfSSL_EVP_PKEY_base_id -#define EVP_PKEY_get_default_digest_nid wolfSSL_EVP_PKEY_get_default_digest_nid -#define EVP_PKEY_id wolfSSL_EVP_PKEY_id -#define EVP_PKEY_CTX_ctrl_str wolfSSL_EVP_PKEY_CTX_ctrl_str -#define EVP_PKCS82PKEY wolfSSL_EVP_PKCS82PKEY -#define EVP_PKEY2PKCS8 wolfSSL_EVP_PKEY2PKCS8 -#define EVP_SignFinal wolfSSL_EVP_SignFinal -#define EVP_SignInit wolfSSL_EVP_SignInit -#define EVP_SignInit_ex wolfSSL_EVP_SignInit_ex -#define EVP_SignUpdate wolfSSL_EVP_SignUpdate -#define EVP_VerifyFinal wolfSSL_EVP_VerifyFinal -#define EVP_VerifyInit wolfSSL_EVP_VerifyInit -#define EVP_VerifyUpdate wolfSSL_EVP_VerifyUpdate - -#define EVP_CIPHER_CTX_ctrl wolfSSL_EVP_CIPHER_CTX_ctrl -#define EVP_CIPHER_CTX_block_size wolfSSL_EVP_CIPHER_CTX_block_size -#define EVP_CIPHER_block_size wolfSSL_EVP_CIPHER_block_size -#define EVP_CIPHER_flags wolfSSL_EVP_CIPHER_flags -#define EVP_CIPHER_CTX_set_flags wolfSSL_EVP_CIPHER_CTX_set_flags -#define EVP_CIPHER_CTX_clear_flags wolfSSL_EVP_CIPHER_CTX_clear_flags -#define EVP_CIPHER_CTX_set_padding wolfSSL_EVP_CIPHER_CTX_set_padding -#define EVP_CIPHER_CTX_flags wolfSSL_EVP_CIPHER_CTX_flags -#define EVP_CIPHER_CTX_set_iv wolfSSL_EVP_CIPHER_CTX_set_iv -#define EVP_CIPHER_CTX_get_iv wolfSSL_EVP_CIPHER_CTX_get_iv -#define EVP_add_digest wolfSSL_EVP_add_digest -#define EVP_add_cipher wolfSSL_EVP_add_cipher -#define EVP_cleanup wolfSSL_EVP_cleanup -#define EVP_read_pw_string wolfSSL_EVP_read_pw_string -#define EVP_rc2_cbc wolfSSL_EVP_rc2_cbc - -#define OpenSSL_add_all_digests() wolfSSL_EVP_init() -#define OpenSSL_add_all_ciphers() wolfSSL_EVP_init() -#define OpenSSL_add_all_algorithms wolfSSL_add_all_algorithms -#define OpenSSL_add_all_algorithms_noconf wolfSSL_OpenSSL_add_all_algorithms_noconf -#define OpenSSL_add_all_algorithms_conf wolfSSL_OpenSSL_add_all_algorithms_conf - -#define wolfSSL_OPENSSL_add_all_algorithms_noconf wolfSSL_OpenSSL_add_all_algorithms_noconf -#define wolfSSL_OPENSSL_add_all_algorithms_conf wolfSSL_OpenSSL_add_all_algorithms_conf - -/* provides older OpenSSL API compatibility */ -#define OPENSSL_add_all_algorithms OpenSSL_add_all_algorithms -#define OPENSSL_add_all_algorithms_noconf OpenSSL_add_all_algorithms_noconf -#define OPENSSL_add_all_algorithms_conf OpenSSL_add_all_algorithms_conf - -#define NO_PADDING_BLOCK_SIZE 1 - -#define PKCS5_PBKDF2_HMAC_SHA1 wolfSSL_PKCS5_PBKDF2_HMAC_SHA1 -#define PKCS5_PBKDF2_HMAC wolfSSL_PKCS5_PBKDF2_HMAC -#define EVP_PBE_scrypt wolfSSL_EVP_PBE_scrypt - -/* OpenSSL compat. ctrl values */ -#define EVP_CTRL_INIT 0x0 -#define EVP_CTRL_SET_KEY_LENGTH 0x1 -#define EVP_CTRL_SET_RC2_KEY_BITS 0x3 /* needed for qt compilation */ - -#define EVP_CTRL_AEAD_SET_IVLEN 0x9 -#define EVP_CTRL_AEAD_GET_TAG 0x10 -#define EVP_CTRL_AEAD_SET_TAG 0x11 -#define EVP_CTRL_AEAD_SET_IV_FIXED 0x12 -#define EVP_CTRL_GCM_IV_GEN 0x13 -#define EVP_CTRL_GCM_SET_IVLEN EVP_CTRL_AEAD_SET_IVLEN -#define EVP_CTRL_GCM_GET_TAG EVP_CTRL_AEAD_GET_TAG -#define EVP_CTRL_GCM_SET_TAG EVP_CTRL_AEAD_SET_TAG -#define EVP_CTRL_GCM_SET_IV_FIXED EVP_CTRL_AEAD_SET_IV_FIXED -#define EVP_CTRL_CCM_SET_IVLEN EVP_CTRL_AEAD_SET_IVLEN -#define EVP_CTRL_CCM_GET_TAG EVP_CTRL_AEAD_GET_TAG -#define EVP_CTRL_CCM_SET_TAG EVP_CTRL_AEAD_SET_TAG -#define EVP_CTRL_CCM_SET_L 0x14 -#define EVP_CTRL_CCM_SET_MSGLEN 0x15 - -#define EVP_PKEY_print_public wolfSSL_EVP_PKEY_print_public -#define EVP_PKEY_print_private(arg1, arg2, arg3, arg4) WC_DO_NOTHING - -#ifndef EVP_MAX_MD_SIZE - #define EVP_MAX_MD_SIZE 64 /* sha512 */ -#endif - -#ifndef EVP_MAX_KEY_LENGTH -#define EVP_MAX_KEY_LENGTH 64 -#endif - -#ifndef EVP_MAX_IV_LENGTH -#define EVP_MAX_IV_LENGTH 16 -#endif - -#ifndef EVP_MAX_BLOCK_LENGTH - #define EVP_MAX_BLOCK_LENGTH 32 /* 2 * blocklen(AES)? */ - /* They define this as 32. Using the same value here. */ -#endif - -#ifndef EVP_MAX_IV_LENGTH - #define EVP_MAX_IV_LENGTH 16 -#endif - - -#define EVP_R_BAD_DECRYPT (-MIN_CODE_E + 100 + 1) -#define EVP_R_BN_DECODE_ERROR (-MIN_CODE_E + 100 + 2) -#define EVP_R_DECODE_ERROR (-MIN_CODE_E + 100 + 3) -#define EVP_R_PRIVATE_KEY_DECODE_ERROR (-MIN_CODE_E + 100 + 4) - -#define EVP_PKEY_NONE NID_undef -#define EVP_PKEY_DH 28 -#define EVP_CIPHER_mode WOLFSSL_EVP_CIPHER_mode -/* WOLFSSL_EVP_CIPHER is just the string name of the cipher */ -#define EVP_CIPHER_name(x) x -#define EVP_MD_CTX_reset wolfSSL_EVP_MD_CTX_cleanup -/* WOLFSSL_EVP_MD is just the string name of the digest */ -#define EVP_MD_name(x) x -#define EVP_CIPHER_nid wolfSSL_EVP_CIPHER_nid - -/* Base64 encoding/decoding APIs */ -#if defined(WOLFSSL_BASE64_ENCODE) || defined(WOLFSSL_BASE64_DECODE) -#define EVP_ENCODE_CTX WOLFSSL_EVP_ENCODE_CTX -#define EVP_ENCODE_CTX_new wolfSSL_EVP_ENCODE_CTX_new -#define EVP_ENCODE_CTX_free wolfSSL_EVP_ENCODE_CTX_free -#endif /* WOLFSSL_BASE64_ENCODE || WOLFSSL_BASE64_DECODE*/ -#if defined(WOLFSSL_BASE64_ENCODE) -#define EVP_EncodeInit wolfSSL_EVP_EncodeInit -#define EVP_EncodeUpdate wolfSSL_EVP_EncodeUpdate -#define EVP_EncodeFinal wolfSSL_EVP_EncodeFinal -#define EVP_EncodeBlock wolfSSL_EVP_EncodeBlock -#define EVP_DecodeBlock wolfSSL_EVP_DecodeBlock -#endif /* WOLFSSL_BASE64_ENCODE */ -#if defined(WOLFSSL_BASE64_DECODE) -#define EVP_DecodeInit wolfSSL_EVP_DecodeInit -#define EVP_DecodeUpdate wolfSSL_EVP_DecodeUpdate -#define EVP_DecodeFinal wolfSSL_EVP_DecodeFinal -#endif /* WOLFSSL_BASE64_DECODE */ - -#define EVP_blake2b512 wolfSSL_EVP_blake2b512 -#define EVP_blake2s256 wolfSSL_EVP_blake2s256 -#define EVP_MD_do_all wolfSSL_EVP_MD_do_all - -#ifdef HAVE_HKDF -#define EVP_PKEY_CTX_set_hkdf_md wolfSSL_EVP_PKEY_CTX_set_hkdf_md -#define EVP_PKEY_CTX_set1_hkdf_salt wolfSSL_EVP_PKEY_CTX_set1_hkdf_salt -#define EVP_PKEY_CTX_set1_hkdf_key wolfSSL_EVP_PKEY_CTX_set1_hkdf_key -#define EVP_PKEY_CTX_add1_hkdf_info wolfSSL_EVP_PKEY_CTX_add1_hkdf_info -#define EVP_PKEY_CTX_hkdf_mode wolfSSL_EVP_PKEY_CTX_hkdf_mode -#endif - -WOLFSSL_API void printPKEY(WOLFSSL_EVP_PKEY *k); - -#endif /* OPENSSL_EXTRA || OPENSSL_EXTRA_X509_SMALL */ - -#ifdef __cplusplus - } /* extern "C" */ -#endif - -#include - -#endif /* WOLFSSL_EVP_H_ */ diff --git a/include/wolfssl/openssl/fips_rand.h b/include/wolfssl/openssl/fips_rand.h deleted file mode 100644 index 586a9574cd..0000000000 --- a/include/wolfssl/openssl/fips_rand.h +++ /dev/null @@ -1,125 +0,0 @@ -/* fips_rand.h - * - * Copyright (C) 2006-2023 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -/* fips_rand.h for openSSL compatibility */ - -#ifndef WOLFSSL_OPENSSL_FIPS_RAND_H_ -#define WOLFSSL_OPENSSL_FIPS_RAND_H_ - -#include -#include - -#if !defined(WC_NO_RNG) && defined(HAVE_HASHDRBG) - -struct WOLFSSL_DRBG_CTX; - -typedef size_t (*drbg_entropy_get)(struct WOLFSSL_DRBG_CTX* ctx, unsigned char** pout, - int entropy, size_t min_len, size_t max_len); -typedef void (*drbg_entropy_clean)(struct WOLFSSL_DRBG_CTX* ctx, unsigned char* out, - size_t olen); -typedef size_t (*drbg_nonce_get)(struct WOLFSSL_DRBG_CTX* ctx, unsigned char** pout, - int entropy, size_t min_len, size_t max_len); -typedef void (*drbg_nonce_clean)(struct WOLFSSL_DRBG_CTX* ctx, unsigned char* out, - size_t olen); - -typedef struct WOLFSSL_DRBG_CTX { - WC_RNG* rng; - drbg_entropy_get entropy_get; - drbg_entropy_clean entropy_clean; - size_t entropy_blocklen; - drbg_nonce_get none_get; - drbg_nonce_clean nonce_clean; - - int type; - int status; - int xflags; - void* app_data; -} WOLFSSL_DRBG_CTX; - -#define DRBG_FLAG_CTR_USE_DF 0x1 -#define DRBG_FLAG_TEST 0x2 - -#define DRBG_FLAG_NOERR 0x1 -#define DRBG_CUSTOM_RESEED 0x2 - -#define DRBG_STATUS_UNINITIALISED 0 -#define DRBG_STATUS_READY 1 -#define DRBG_STATUS_RESEED 2 -#define DRBG_STATUS_ERROR 3 - -WOLFSSL_API WOLFSSL_DRBG_CTX* wolfSSL_FIPS_drbg_new(int type, - unsigned int flags); - -WOLFSSL_API int wolfSSL_FIPS_drbg_init(WOLFSSL_DRBG_CTX *ctx, - int type, unsigned int flags); - -WOLFSSL_API int wolfSSL_FIPS_drbg_instantiate(WOLFSSL_DRBG_CTX* ctx, - const unsigned char* pers, size_t perslen); - -WOLFSSL_API int wolfSSL_FIPS_drbg_set_callbacks(WOLFSSL_DRBG_CTX* ctx, - drbg_entropy_get entropy_get, drbg_entropy_clean entropy_clean, - size_t entropy_blocklen, - drbg_nonce_get none_get, drbg_nonce_clean nonce_clean); - -WOLFSSL_API void wolfSSL_FIPS_rand_add(const void* buf, int num, - double entropy); -WOLFSSL_API int wolfSSL_FIPS_drbg_reseed(WOLFSSL_DRBG_CTX* ctx, - const unsigned char* adin, size_t adinlen); - -WOLFSSL_API int wolfSSL_FIPS_drbg_generate(WOLFSSL_DRBG_CTX* ctx, - unsigned char* out, size_t outlen, int prediction_resistance, - const unsigned char* adin, size_t adinlen); - -WOLFSSL_API int wolfSSL_FIPS_drbg_uninstantiate(WOLFSSL_DRBG_CTX *ctx); - -WOLFSSL_API void wolfSSL_FIPS_drbg_free(WOLFSSL_DRBG_CTX *ctx); - -WOLFSSL_API WOLFSSL_DRBG_CTX* wolfSSL_FIPS_get_default_drbg(void); - -WOLFSSL_API void wolfSSL_FIPS_get_timevec(unsigned char* buf, - unsigned long* pctr); - -WOLFSSL_API void* wolfSSL_FIPS_drbg_get_app_data(WOLFSSL_DRBG_CTX *ctx); - -WOLFSSL_API void wolfSSL_FIPS_drbg_set_app_data(WOLFSSL_DRBG_CTX *ctx, - void *app_data); - - -/* compatibility mapping */ -typedef WOLFSSL_DRBG_CTX DRBG_CTX; - -#define FIPS_drbg_init wolfSSL_FIPS_drbg_init -#define FIPS_drbg_new wolfSSL_FIPS_drbg_new -#define FIPS_drbg_instantiate wolfSSL_FIPS_drbg_instantiate -#define FIPS_drbg_set_callbacks wolfSSL_FIPS_drbg_set_callbacks -#define FIPS_rand_add wolfSSL_FIPS_rand_add -#define FIPS_drbg_reseed wolfSSL_FIPS_drbg_reseed -#define FIPS_drbg_generate wolfSSL_FIPS_drbg_generate -#define FIPS_drbg_uninstantiate wolfSSL_FIPS_drbg_uninstantiate -#define FIPS_drbg_free wolfSSL_FIPS_drbg_free -#define FIPS_get_default_drbg wolfSSL_FIPS_get_default_drbg -#define FIPS_get_timevec wolfSSL_FIPS_get_timevec -#define FIPS_drbg_get_app_data wolfSSL_FIPS_drbg_get_app_data -#define FIPS_drbg_set_app_data wolfSSL_FIPS_drbg_set_app_data - -#endif /* !WC_NO_RNG && HAVE_HASHDRBG */ - -#endif /* WOLFSSL_OPENSSL_FIPS_RAND_H_ */ diff --git a/include/wolfssl/openssl/hmac.h b/include/wolfssl/openssl/hmac.h deleted file mode 100644 index 427a3d6528..0000000000 --- a/include/wolfssl/openssl/hmac.h +++ /dev/null @@ -1,94 +0,0 @@ -/* hmac.h - * - * Copyright (C) 2006-2023 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - - - -/* hmac.h defines mini hmac openssl compatibility layer - * - */ - - -#ifndef WOLFSSL_HMAC_H_ -#define WOLFSSL_HMAC_H_ - -#include - -#ifdef WOLFSSL_PREFIX -#include "prefix_hmac.h" -#endif - -#include -#include - -#ifdef __cplusplus - extern "C" { -#endif - - -WOLFSSL_API unsigned char* wolfSSL_HMAC(const WOLFSSL_EVP_MD* evp_md, - const void* key, int key_len, - const unsigned char* d, int n, unsigned char* md, - unsigned int* md_len); - -WOLFSSL_API WOLFSSL_HMAC_CTX* wolfSSL_HMAC_CTX_new(void); -WOLFSSL_API int wolfSSL_HMAC_CTX_Init(WOLFSSL_HMAC_CTX* ctx); -WOLFSSL_API int wolfSSL_HMAC_CTX_copy(WOLFSSL_HMAC_CTX* des, - WOLFSSL_HMAC_CTX* src); -WOLFSSL_LOCAL int wolfSSL_HmacCopy(Hmac* des, Hmac* src); -WOLFSSL_API int wolfSSL_HMAC_Init(WOLFSSL_HMAC_CTX* ctx, const void* key, - int keylen, const WOLFSSL_EVP_MD* type); -WOLFSSL_API int wolfSSL_HMAC_Init_ex(WOLFSSL_HMAC_CTX* ctx, const void* key, - int keylen, const WOLFSSL_EVP_MD* type, WOLFSSL_ENGINE* e); -WOLFSSL_API int wolfSSL_HMAC_Update(WOLFSSL_HMAC_CTX* ctx, - const unsigned char* data, int len); -WOLFSSL_API int wolfSSL_HMAC_Final(WOLFSSL_HMAC_CTX* ctx, unsigned char* hash, - unsigned int* len); -WOLFSSL_API int wolfSSL_HMAC_cleanup(WOLFSSL_HMAC_CTX* ctx); -WOLFSSL_API void wolfSSL_HMAC_CTX_cleanup(WOLFSSL_HMAC_CTX* ctx); -WOLFSSL_API void wolfSSL_HMAC_CTX_free(WOLFSSL_HMAC_CTX* ctx); -WOLFSSL_API size_t wolfSSL_HMAC_size(const WOLFSSL_HMAC_CTX *ctx); -WOLFSSL_API const WOLFSSL_EVP_MD *wolfSSL_HMAC_CTX_get_md(const WOLFSSL_HMAC_CTX *ctx); - -typedef struct WOLFSSL_HMAC_CTX HMAC_CTX; - -#define HMAC(a,b,c,d,e,f,g) wolfSSL_HMAC((a),(b),(c),(d),(e),(f),(g)) - -#define HMAC_CTX_new wolfSSL_HMAC_CTX_new -#define HMAC_CTX_init wolfSSL_HMAC_CTX_Init -#define HMAC_CTX_copy wolfSSL_HMAC_CTX_copy -#define HMAC_CTX_free wolfSSL_HMAC_CTX_free -#define HMAC_CTX_cleanup wolfSSL_HMAC_CTX_cleanup -#define HMAC_CTX_reset wolfSSL_HMAC_cleanup -#define HMAC_Init_ex wolfSSL_HMAC_Init_ex -#define HMAC_Init wolfSSL_HMAC_Init -#define HMAC_Update wolfSSL_HMAC_Update -#define HMAC_Final wolfSSL_HMAC_Final -#define HMAC_cleanup wolfSSL_HMAC_cleanup -#define HMAC_size wolfSSL_HMAC_size -#define HMAC_CTX_get_md wolfSSL_HMAC_CTX_get_md - - -#ifdef __cplusplus - } /* extern "C" */ -#endif - - -#endif /* WOLFSSL_HMAC_H_ */ diff --git a/include/wolfssl/openssl/kdf.h b/include/wolfssl/openssl/kdf.h deleted file mode 100644 index 29537df199..0000000000 --- a/include/wolfssl/openssl/kdf.h +++ /dev/null @@ -1,37 +0,0 @@ -/* kdf.h - * - * Copyright (C) 2006-2023 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -#ifndef WOLFSSL_KDF_H_ -#define WOLFSSL_KDF_H_ - -#ifdef __cplusplus - extern "C" { -#endif - -#define EVP_PKEY_HKDEF_MODE_EXTRACT_AND_EXPAND 0 -#define EVP_PKEY_HKDEF_MODE_EXTRACT_ONLY 1 -#define EVP_PKEY_HKDEF_MODE_EXPAND_ONLY 2 - -#ifdef __cplusplus - } /* extern "C" */ -#endif - -#endif /* WOLFSSL_KDF_H_ */ diff --git a/include/wolfssl/openssl/lhash.h b/include/wolfssl/openssl/lhash.h deleted file mode 100644 index 06c62a295e..0000000000 --- a/include/wolfssl/openssl/lhash.h +++ /dev/null @@ -1,64 +0,0 @@ -/* lhash.h - * - * Copyright (C) 2006-2023 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -/* lhash.h for openSSL */ - -#ifndef WOLFSSL_lhash_H_ -#define WOLFSSL_lhash_H_ - -#ifdef __cplusplus - extern "C" { -#endif - -#include - -#ifdef OPENSSL_ALL -#define IMPLEMENT_LHASH_HASH_FN(name, type) \ - unsigned long wolfSSL_##name##_LHASH_HASH(const void *arg) \ - { \ - const type *a = arg; \ - return name##_hash(a); \ - } -#define IMPLEMENT_LHASH_COMP_FN(name, type) \ - int wolfSSL_##name##_LHASH_COMP(const void *p1, const void *p2) \ - { \ - const type *_p1 = p1; \ - const type *_p2 = p2; \ - return name##_cmp(_p1, _p2); \ - } - -#define LHASH_HASH_FN(name) wolfSSL_##name##_LHASH_HASH -#define LHASH_COMP_FN(name) wolfSSL_##name##_LHASH_COMP - -WOLFSSL_API unsigned long wolfSSL_LH_strhash(const char *str); - -WOLFSSL_API void *wolfSSL_lh_retrieve(WOLFSSL_STACK *sk, void *data); - -#define lh_strhash wolfSSL_LH_strhash - -#endif - - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* WOLFSSL_lhash_H_ */ diff --git a/include/wolfssl/openssl/modes.h b/include/wolfssl/openssl/modes.h deleted file mode 100644 index 3288f50fa5..0000000000 --- a/include/wolfssl/openssl/modes.h +++ /dev/null @@ -1,45 +0,0 @@ -/* modes.h - * - * Copyright (C) 2006-2023 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ -#ifndef WOLFSSL_OPENSSL_MODES_H -#define WOLFSSL_OPENSSL_MODES_H - -#include -#include - -typedef void (*WOLFSSL_CBC128_CB) (const unsigned char *in, - unsigned char *out, size_t len, const void *key, - unsigned char *iv, int enc); - -WOLFSSL_API size_t wolfSSL_CRYPTO_cts128_encrypt(const unsigned char *in, - unsigned char *out, size_t len, const void *key, - unsigned char *iv, WOLFSSL_CBC128_CB cbc); -WOLFSSL_API size_t wolfSSL_CRYPTO_cts128_decrypt(const unsigned char *in, - unsigned char *out, size_t len, const void *key, - unsigned char *iv, WOLFSSL_CBC128_CB cbc); - -#define WOLFSSL_CTS128_BLOCK_SZ 16 - -/* Compatibility layer defines */ -#define CRYPTO_cts128_encrypt wolfSSL_CRYPTO_cts128_encrypt -#define CRYPTO_cts128_decrypt wolfSSL_CRYPTO_cts128_decrypt -#define cbc128_f WOLFSSL_CBC128_CB - -#endif /* WOLFSSL_OPENSSL_MODES_H */ diff --git a/include/wolfssl/openssl/objects.h b/include/wolfssl/openssl/objects.h deleted file mode 100644 index 5f8d8f7c00..0000000000 --- a/include/wolfssl/openssl/objects.h +++ /dev/null @@ -1,78 +0,0 @@ -/* objects.h - * - * Copyright (C) 2006-2023 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - - -#ifndef WOLFSSL_OBJECTS_H_ -#define WOLFSSL_OBJECTS_H_ - -#include -#ifndef OPENSSL_EXTRA_SSL_GUARD -#define OPENSSL_EXTRA_SSL_GUARD -#include -#endif /* OPENSSL_EXTRA_SSL_GUARD */ - -#ifdef __cplusplus - extern "C" { -#endif - -#if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL) - -#define OBJ_NAME_TYPE_UNDEF WOLFSSL_OBJ_NAME_TYPE_UNDEF -#define OBJ_NAME_TYPE_MD_METH WOLFSSL_OBJ_NAME_TYPE_MD_METH -#define OBJ_NAME_TYPE_CIPHER_METH WOLFSSL_OBJ_NAME_TYPE_CIPHER_METH -#define OBJ_NAME_TYPE_PKEY_METH WOLFSSL_OBJ_NAME_TYPE_PKEY_METH -#define OBJ_NAME_TYPE_COMP_METH WOLFSSL_OBJ_NAME_TYPE_COMP_METH -#define OBJ_NAME_TYPE_NUM WOLFSSL_OBJ_NAME_TYPE_NUM -#define OBJ_NAME_ALIAS WOLFSSL_OBJ_NAME_ALIAS - -#define OBJ_nid2sn wolfSSL_OBJ_nid2sn -#define OBJ_obj2nid wolfSSL_OBJ_obj2nid -#define OBJ_sn2nid wolfSSL_OBJ_sn2nid -#define OBJ_length wolfSSL_OBJ_length -#define OBJ_get0_data wolfSSL_OBJ_get0_data -#define OBJ_nid2ln wolfSSL_OBJ_nid2ln -#define OBJ_ln2nid wolfSSL_OBJ_ln2nid -#define OBJ_txt2nid wolfSSL_OBJ_txt2nid -#define OBJ_txt2obj wolfSSL_OBJ_txt2obj -#define OBJ_nid2obj wolfSSL_OBJ_nid2obj -#define OBJ_obj2txt wolfSSL_OBJ_obj2txt -#define OBJ_cleanup wolfSSL_OBJ_cleanup -#define OBJ_cmp wolfSSL_OBJ_cmp -#define OBJ_create wolfSSL_OBJ_create -#define ASN1_OBJECT_free wolfSSL_ASN1_OBJECT_free -#define OBJ_NAME_do_all wolfSSL_OBJ_NAME_do_all -#define i2t_ASN1_OBJECT wolfSSL_i2t_ASN1_OBJECT - -/* not required for wolfSSL */ -#define OPENSSL_load_builtin_modules() WC_DO_NOTHING - - -#define NID_ad_OCSP 178 -#define NID_ad_ca_issuers 179 - -#endif /* OPENSSL_EXTRA || OPENSSL_EXTRA_X509_SMALL */ - - -#ifdef __cplusplus - } /* extern "C" */ -#endif - -#endif /* WOLFSSL_OBJECTS_H_ */ diff --git a/include/wolfssl/openssl/opensslv.h b/include/wolfssl/openssl/opensslv.h deleted file mode 100644 index 57404c928d..0000000000 --- a/include/wolfssl/openssl/opensslv.h +++ /dev/null @@ -1,66 +0,0 @@ -/* opensslv.h - * - * Copyright (C) 2006-2023 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -/* opensslv.h compatibility */ - -#ifndef WOLFSSL_OPENSSLV_H_ -#define WOLFSSL_OPENSSLV_H_ - -#include - -#if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL) - -/* api version compatibility */ -#if defined(OPENSSL_VERSION_NUMBER) && (OPENSSL_VERSION_NUMBER == 0x009070dfL) ||\ - defined(OPENSSL_VERSION_NUMBER) && (OPENSSL_VERSION_NUMBER == 0x0090810fL) ||\ - defined(OPENSSL_VERSION_NUMBER) && (OPENSSL_VERSION_NUMBER == 0x10100000L) ||\ - defined(OPENSSL_VERSION_NUMBER) && (OPENSSL_VERSION_NUMBER == 0x10001040L) - /* valid version */ -#elif defined(WOLFSSL_APACHE_HTTPD) || defined(HAVE_LIBEST) || \ - defined(WOLFSSL_BIND) || defined(WOLFSSL_NGINX) || \ - defined(WOLFSSL_RSYSLOG) || defined(WOLFSSL_KRB) || defined(HAVE_STUNNEL) || \ - defined(WOLFSSL_OPENSSH) - /* For Apache httpd, Use 1.1.0 compatibility */ - #define OPENSSL_VERSION_NUMBER 0x10100003L -#elif defined(WOLFSSL_QT) || defined(WOLFSSL_PYTHON) || defined(WOLFSSL_KRB) - /* For Qt and Python 3.8.5 compatibility */ - #define OPENSSL_VERSION_NUMBER 0x10101000L -#elif defined(WOLFSSL_HAPROXY) || defined(WOLFSSL_FFMPEG) - #define OPENSSL_VERSION_NUMBER 0x1010000fL -#elif defined(OPENSSL_ALL) || defined(HAVE_LIGHTY) || \ - defined(WOLFSSL_NGINX) || defined(WOLFSSL_OPENVPN) - /* version number can be increased for Lighty after compatibility for ECDH - is added */ - #define OPENSSL_VERSION_NUMBER 0x10001040L -#else - #define OPENSSL_VERSION_NUMBER 0x0090810fL -#endif - -#define OPENSSL_VERSION_TEXT "wolfSSL " LIBWOLFSSL_VERSION_STRING -#define OPENSSL_VERSION 0 - -#ifndef OPENSSL_IS_WOLFSSL -#define OPENSSL_IS_WOLFSSL -#endif - -#endif /* OPENSSL_EXTRA || OPENSSL_EXTRA_X509_SMALL */ - -#endif /* header */ diff --git a/include/wolfssl/openssl/pem.h b/include/wolfssl/openssl/pem.h deleted file mode 100644 index 221e8d6f97..0000000000 --- a/include/wolfssl/openssl/pem.h +++ /dev/null @@ -1,280 +0,0 @@ -/* pem.h - * - * Copyright (C) 2006-2023 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -/* pem.h for openssl */ - -/*! - \file wolfssl/openssl/pem.h -*/ - - -#ifndef WOLFSSL_PEM_H_ -#define WOLFSSL_PEM_H_ - -#include -#include -#include -#include -#include - -#ifdef __cplusplus - extern "C" { -#endif - -/* RSA */ -WOLFSSL_API -int wolfSSL_PEM_write_bio_RSAPrivateKey(WOLFSSL_BIO* bio, WOLFSSL_RSA* rsa, - const WOLFSSL_EVP_CIPHER* cipher, - unsigned char* passwd, int len, - wc_pem_password_cb* cb, void* arg); -WOLFSSL_API -WOLFSSL_RSA* wolfSSL_PEM_read_bio_RSAPrivateKey(WOLFSSL_BIO* bio, - WOLFSSL_RSA** rsa, wc_pem_password_cb* cb, void* pass); - -WOLFSSL_API -int wolfSSL_PEM_write_bio_RSA_PUBKEY(WOLFSSL_BIO* bio, WOLFSSL_RSA* rsa); - -WOLFSSL_API -WOLFSSL_RSA *wolfSSL_PEM_read_bio_RSA_PUBKEY(WOLFSSL_BIO* bio, - WOLFSSL_RSA** rsa, - wc_pem_password_cb* cb, void *u); - -WOLFSSL_API -WOLFSSL_EC_GROUP* wolfSSL_PEM_read_bio_ECPKParameters(WOLFSSL_BIO* bio, - WOLFSSL_EC_GROUP** group, - wc_pem_password_cb* cb, - void* pass); -WOLFSSL_API -int wolfSSL_PEM_write_mem_RSAPrivateKey(WOLFSSL_RSA* rsa, - const WOLFSSL_EVP_CIPHER* cipher, - unsigned char* passwd, int len, - unsigned char **pem, int *plen); -#if !defined(NO_FILESYSTEM) -WOLFSSL_API -int wolfSSL_PEM_write_RSAPrivateKey(XFILE fp, WOLFSSL_RSA *rsa, - const WOLFSSL_EVP_CIPHER *enc, - unsigned char *kstr, int klen, - wc_pem_password_cb *cb, void *u); - -WOLFSSL_API -WOLFSSL_RSA* wolfSSL_PEM_read_RSAPrivateKey(XFILE fp, WOLFSSL_RSA** rsa, - wc_pem_password_cb* cb, void* pass); - -WOLFSSL_API -WOLFSSL_RSA *wolfSSL_PEM_read_RSAPublicKey(XFILE fp, WOLFSSL_RSA **x, - wc_pem_password_cb *cb, void *u); -WOLFSSL_API -int wolfSSL_PEM_write_RSAPublicKey(XFILE fp, WOLFSSL_RSA* key); - -WOLFSSL_API -int wolfSSL_PEM_write_RSA_PUBKEY(XFILE fp, WOLFSSL_RSA *x); - -WOLFSSL_API -WOLFSSL_RSA *wolfSSL_PEM_read_RSA_PUBKEY(XFILE fp, WOLFSSL_RSA** rsa, - wc_pem_password_cb* cb, void *pass); -#endif /* NO_FILESYSTEM */ - -/* DSA */ -WOLFSSL_API -int wolfSSL_PEM_write_bio_DSAPrivateKey(WOLFSSL_BIO* bio, - WOLFSSL_DSA* dsa, - const WOLFSSL_EVP_CIPHER* cipher, - unsigned char* passwd, int len, - wc_pem_password_cb* cb, void* arg); - -WOLFSSL_API -WOLFSSL_DSA* wolfSSL_PEM_read_bio_DSAPrivateKey(WOLFSSL_BIO* bio, - WOLFSSL_DSA** dsa, - wc_pem_password_cb* cb, - void *pass); - -WOLFSSL_API -WOLFSSL_DSA *wolfSSL_PEM_read_bio_DSA_PUBKEY(WOLFSSL_BIO* bio, - WOLFSSL_DSA** dsa, - wc_pem_password_cb* cb, - void *pass); - -WOLFSSL_API -int wolfSSL_PEM_write_bio_DSA_PUBKEY(WOLFSSL_BIO* bio, WOLFSSL_DSA* dsa); - -WOLFSSL_API -int wolfSSL_PEM_write_mem_DSAPrivateKey(WOLFSSL_DSA* dsa, - const WOLFSSL_EVP_CIPHER* cipher, - unsigned char* passwd, int len, - unsigned char **pem, int *plen); -#if !defined(NO_FILESYSTEM) -WOLFSSL_API -int wolfSSL_PEM_write_DSAPrivateKey(XFILE fp, WOLFSSL_DSA *dsa, - const WOLFSSL_EVP_CIPHER *enc, - unsigned char *kstr, int klen, - wc_pem_password_cb *cb, void *u); -WOLFSSL_API -int wolfSSL_PEM_write_DSA_PUBKEY(XFILE fp, WOLFSSL_DSA *x); -#endif /* NO_FILESYSTEM */ - -/* ECC */ -WOLFSSL_API -int wolfSSL_PEM_write_bio_ECPrivateKey(WOLFSSL_BIO* bio, WOLFSSL_EC_KEY* ec, - const WOLFSSL_EVP_CIPHER* cipher, - unsigned char* passwd, int len, - wc_pem_password_cb* cb, void* arg); -WOLFSSL_API -WOLFSSL_EC_KEY* wolfSSL_PEM_read_bio_ECPrivateKey(WOLFSSL_BIO* bio, - WOLFSSL_EC_KEY** ec, - wc_pem_password_cb* cb, - void *pass); -WOLFSSL_API -int wolfSSL_PEM_write_bio_EC_PUBKEY(WOLFSSL_BIO* bio, WOLFSSL_EC_KEY* ec); - -WOLFSSL_API -int wolfSSL_PEM_write_mem_ECPrivateKey(WOLFSSL_EC_KEY* key, - const WOLFSSL_EVP_CIPHER* cipher, - unsigned char* passwd, int len, - unsigned char **pem, int *plen); -#if !defined(NO_FILESYSTEM) -WOLFSSL_API -int wolfSSL_PEM_write_ECPrivateKey(XFILE fp, WOLFSSL_EC_KEY *key, - const WOLFSSL_EVP_CIPHER *enc, - unsigned char *kstr, int klen, - wc_pem_password_cb *cb, void *u); -WOLFSSL_API -int wolfSSL_PEM_write_EC_PUBKEY(XFILE fp, WOLFSSL_EC_KEY* key); -#endif - -#ifndef NO_BIO -WOLFSSL_API -WOLFSSL_EC_KEY* wolfSSL_PEM_read_bio_EC_PUBKEY(WOLFSSL_BIO* bio, - WOLFSSL_EC_KEY** ec, - wc_pem_password_cb* cb, - void *pass); -#endif /* !NO_BIO */ - -/* EVP_KEY */ -WOLFSSL_API -WOLFSSL_EVP_PKEY* wolfSSL_PEM_read_bio_PrivateKey(WOLFSSL_BIO* bio, - WOLFSSL_EVP_PKEY** key, - wc_pem_password_cb* cb, - void* pass); -WOLFSSL_API -WOLFSSL_EVP_PKEY *wolfSSL_PEM_read_bio_PUBKEY(WOLFSSL_BIO* bio, - WOLFSSL_EVP_PKEY **key, - wc_pem_password_cb *cb, - void *pass); -WOLFSSL_API -int wolfSSL_PEM_write_bio_PrivateKey(WOLFSSL_BIO* bio, WOLFSSL_EVP_PKEY* key, - const WOLFSSL_EVP_CIPHER* cipher, - unsigned char* passwd, int len, - wc_pem_password_cb* cb, void* arg); -WOLFSSL_API -int wolfSSL_PEM_write_bio_PUBKEY(WOLFSSL_BIO* bio, WOLFSSL_EVP_PKEY* key); - - -WOLFSSL_API -int wolfSSL_PEM_read_bio(WOLFSSL_BIO* bio, char **name, char **header, - unsigned char **data, long *len); -WOLFSSL_API -int wolfSSL_PEM_write_bio(WOLFSSL_BIO *bio, const char *name, - const char *header, const unsigned char *data, - long len); -#if !defined(NO_FILESYSTEM) -WOLFSSL_API -int wolfSSL_PEM_read(XFILE fp, char **name, char **header, unsigned char **data, - long *len); -WOLFSSL_API -int wolfSSL_PEM_write(XFILE fp, const char *name, const char *header, - const unsigned char *data, long len); -#endif - -#if !defined(NO_FILESYSTEM) -WOLFSSL_API -WOLFSSL_EVP_PKEY *wolfSSL_PEM_read_PUBKEY(XFILE fp, WOLFSSL_EVP_PKEY **x, - wc_pem_password_cb *cb, void *u); -WOLFSSL_API -WOLFSSL_X509 *wolfSSL_PEM_read_X509(XFILE fp, WOLFSSL_X509 **x, - wc_pem_password_cb *cb, void *u); -WOLFSSL_API -WOLFSSL_EVP_PKEY *wolfSSL_PEM_read_PrivateKey(XFILE fp, WOLFSSL_EVP_PKEY **x, - wc_pem_password_cb *cb, void *u); - -WOLFSSL_API -int wolfSSL_PEM_write_X509(XFILE fp, WOLFSSL_X509 *x); -WOLFSSL_API -int wolfSSL_PEM_write_DHparams(XFILE fp, WOLFSSL_DH* dh); -#endif /* NO_FILESYSTEM */ - -#define PEM_BUFSIZE WOLF_PEM_BUFSIZE - -#define PEM_read wolfSSL_PEM_read -#define PEM_read_bio wolfSSL_PEM_read_bio -#define PEM_write wolfSSL_PEM_write -#define PEM_write_bio wolfSSL_PEM_write_bio - -#define PEM_read_X509 wolfSSL_PEM_read_X509 -#define PEM_read_PrivateKey wolfSSL_PEM_read_PrivateKey -#define PEM_write_X509 wolfSSL_PEM_write_X509 -#define PEM_write_bio_PrivateKey wolfSSL_PEM_write_bio_PrivateKey -#define PEM_write_bio_PKCS8PrivateKey wolfSSL_PEM_write_bio_PKCS8PrivateKey -#define PEM_write_PKCS8PrivateKey wolfSSL_PEM_write_PKCS8PrivateKey - -/* DH */ -#define PEM_write_DHparams wolfSSL_PEM_write_DHparams -/* RSA */ -#define PEM_write_bio_RSAPrivateKey wolfSSL_PEM_write_bio_RSAPrivateKey -#define PEM_read_bio_RSAPrivateKey wolfSSL_PEM_read_bio_RSAPrivateKey -#define PEM_read_RSAPrivateKey wolfSSL_PEM_read_RSAPrivateKey -#define PEM_write_bio_RSA_PUBKEY wolfSSL_PEM_write_bio_RSA_PUBKEY -#define PEM_read_bio_RSA_PUBKEY wolfSSL_PEM_read_bio_RSA_PUBKEY -#define PEM_read_bio_RSAPublicKey wolfSSL_PEM_read_bio_RSA_PUBKEY -#define PEM_read_bio_ECPKParameters wolfSSL_PEM_read_bio_ECPKParameters -#define PEM_write_RSAPrivateKey wolfSSL_PEM_write_RSAPrivateKey -#define PEM_write_RSA_PUBKEY wolfSSL_PEM_write_RSA_PUBKEY -#define PEM_read_RSA_PUBKEY wolfSSL_PEM_read_RSA_PUBKEY -#define PEM_write_RSAPublicKey wolfSSL_PEM_write_RSAPublicKey -#define PEM_read_RSAPublicKey wolfSSL_PEM_read_RSAPublicKey -/* DSA */ -#define PEM_write_bio_DSAPrivateKey wolfSSL_PEM_write_bio_DSAPrivateKey -#define PEM_write_DSAPrivateKey wolfSSL_PEM_write_DSAPrivateKey -#define PEM_write_bio_DSA_PUBKEY wolfSSL_PEM_write_bio_DSA_PUBKEY -#define PEM_write_DSA_PUBKEY wolfSSL_PEM_write_DSA_PUBKEY -#define PEM_read_bio_DSAPrivateKey wolfSSL_PEM_read_bio_DSAPrivateKey -#define PEM_read_bio_DSA_PUBKEY wolfSSL_PEM_read_bio_DSA_PUBKEY -/* ECC */ -#define PEM_write_bio_ECPrivateKey wolfSSL_PEM_write_bio_ECPrivateKey -#define PEM_write_bio_EC_PUBKEY wolfSSL_PEM_write_bio_EC_PUBKEY -#define PEM_write_EC_PUBKEY wolfSSL_PEM_write_EC_PUBKEY -#define PEM_write_ECPrivateKey wolfSSL_PEM_write_ECPrivateKey -#define PEM_read_bio_ECPrivateKey wolfSSL_PEM_read_bio_ECPrivateKey -#define PEM_read_bio_EC_PUBKEY wolfSSL_PEM_read_bio_EC_PUBKEY -#ifndef NO_WOLFSSL_STUB -#define PEM_write_bio_ECPKParameters(...) 0 -#endif -/* EVP_KEY */ -#define PEM_read_bio_PrivateKey wolfSSL_PEM_read_bio_PrivateKey -#define PEM_read_PUBKEY wolfSSL_PEM_read_PUBKEY -#define PEM_read_bio_PUBKEY wolfSSL_PEM_read_bio_PUBKEY -#define PEM_write_bio_PUBKEY wolfSSL_PEM_write_bio_PUBKEY - -#ifdef __cplusplus - } /* extern "C" */ -#endif - -#endif /* WOLFSSL_PEM_H_ */ - diff --git a/include/wolfssl/openssl/pkcs7.h b/include/wolfssl/openssl/pkcs7.h deleted file mode 100644 index 41f890163b..0000000000 --- a/include/wolfssl/openssl/pkcs7.h +++ /dev/null @@ -1,110 +0,0 @@ -/* pkcs7.h - * - * Copyright (C) 2006-2023 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -/* pkcs7.h for openSSL */ - - -#ifndef WOLFSSL_PKCS7_H_ -#define WOLFSSL_PKCS7_H_ - -#include -#include - -#ifdef __cplusplus - extern "C" { -#endif - -#if defined(OPENSSL_ALL) && defined(HAVE_PKCS7) - -#define PKCS7_TEXT 0x1 -#define PKCS7_NOCERTS 0x2 -#define PKCS7_DETACHED 0x40 -#define PKCS7_BINARY 0x80 -#define PKCS7_NOINTERN 0x0010 -#define PKCS7_NOVERIFY 0x0020 -#define PKCS7_STREAM 0x1000 -#define PKCS7_PARTIAL 0x4000 - -typedef struct WOLFSSL_PKCS7 -{ - PKCS7 pkcs7; - unsigned char* data; - int len; - int type; /* from PKCS7_TYPES, for PKCS7_final() */ - WOLFSSL_STACK* certs; -} WOLFSSL_PKCS7; - - -WOLFSSL_API PKCS7* wolfSSL_PKCS7_new(void); -WOLFSSL_API PKCS7_SIGNED* wolfSSL_PKCS7_SIGNED_new(void); -WOLFSSL_API void wolfSSL_PKCS7_free(PKCS7* p7); -WOLFSSL_API void wolfSSL_PKCS7_SIGNED_free(PKCS7_SIGNED* p7); -WOLFSSL_API PKCS7* wolfSSL_d2i_PKCS7(PKCS7** p7, const unsigned char** in, - int len); -WOLFSSL_LOCAL PKCS7* wolfSSL_d2i_PKCS7_ex(PKCS7** p7, const unsigned char** in, - int len, byte* content, word32 contentSz); -WOLFSSL_API PKCS7* wolfSSL_d2i_PKCS7_bio(WOLFSSL_BIO* bio, PKCS7** p7); -WOLFSSL_API int wolfSSL_i2d_PKCS7_bio(WOLFSSL_BIO *bio, PKCS7 *p7); -WOLFSSL_API int wolfSSL_i2d_PKCS7(PKCS7 *p7, unsigned char **out); -WOLFSSL_API PKCS7* wolfSSL_PKCS7_sign(WOLFSSL_X509* signer, - WOLFSSL_EVP_PKEY* pkey, WOLFSSL_STACK* certs, WOLFSSL_BIO* in, int flags); -WOLFSSL_API int wolfSSL_PKCS7_verify(PKCS7* p7, WOLFSSL_STACK* certs, - WOLFSSL_X509_STORE* store, WOLFSSL_BIO* in, WOLFSSL_BIO* out, int flags); -WOLFSSL_API int wolfSSL_PKCS7_final(PKCS7* pkcs7, WOLFSSL_BIO* in, int flags); -WOLFSSL_API int wolfSSL_PKCS7_encode_certs(PKCS7* p7, WOLFSSL_STACK* certs, - WOLFSSL_BIO* out); -WOLFSSL_API WOLFSSL_STACK* wolfSSL_PKCS7_to_stack(PKCS7* pkcs7); -WOLFSSL_API WOLFSSL_STACK* wolfSSL_PKCS7_get0_signers(PKCS7* p7, - WOLFSSL_STACK* certs, int flags); -WOLFSSL_API int wolfSSL_PEM_write_bio_PKCS7(WOLFSSL_BIO* bio, PKCS7* p7); -#if defined(HAVE_SMIME) -WOLFSSL_API PKCS7* wolfSSL_SMIME_read_PKCS7(WOLFSSL_BIO* in, WOLFSSL_BIO** bcont); -WOLFSSL_API int wolfSSL_SMIME_write_PKCS7(WOLFSSL_BIO* out, PKCS7* pkcs7, - WOLFSSL_BIO* in, int flags); -#endif /* HAVE_SMIME */ - - -#define PKCS7_new wolfSSL_PKCS7_new -#define PKCS7_SIGNED_new wolfSSL_PKCS7_SIGNED_new -#define PKCS7_free wolfSSL_PKCS7_free -#define PKCS7_SIGNED_free wolfSSL_PKCS7_SIGNED_free -#define d2i_PKCS7 wolfSSL_d2i_PKCS7 -#define d2i_PKCS7_bio wolfSSL_d2i_PKCS7_bio -#define i2d_PKCS7_bio wolfSSL_i2d_PKCS7_bio -#define i2d_PKCS7 wolfSSL_i2d_PKCS7 -#define PKCS7_sign wolfSSL_PKCS7_sign -#define PKCS7_verify wolfSSL_PKCS7_verify -#define PKCS7_final wolfSSL_PKCS7_final -#define PKCS7_get0_signers wolfSSL_PKCS7_get0_signers -#define PEM_write_bio_PKCS7 wolfSSL_PEM_write_bio_PKCS7 -#if defined(HAVE_SMIME) -#define SMIME_read_PKCS7 wolfSSL_SMIME_read_PKCS7 -#define SMIME_write_PKCS7 wolfSSL_SMIME_write_PKCS7 -#endif /* HAVE_SMIME */ - -#endif /* OPENSSL_ALL && HAVE_PKCS7 */ - -#ifdef __cplusplus - } /* extern "C" */ -#endif - -#endif /* WOLFSSL_PKCS7_H_ */ - diff --git a/include/wolfssl/openssl/rc4.h b/include/wolfssl/openssl/rc4.h deleted file mode 100644 index ca56ac8253..0000000000 --- a/include/wolfssl/openssl/rc4.h +++ /dev/null @@ -1,59 +0,0 @@ -/* rc4.h - * - * Copyright (C) 2006-2023 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - - - -/* rc4.h defines mini des openssl compatibility layer - * - */ - -#ifndef WOLFSSL_RC4_COMPAT_H_ -#define WOLFSSL_RC4_COMPAT_H_ - -#include -#include /* included for size_t */ - -#ifdef __cplusplus - extern "C" { -#endif - -/* applications including wolfssl/openssl/rc4.h are expecting to have access to - * the size of RC4_KEY structures. */ -typedef struct WOLFSSL_RC4_KEY { - /* big enough for Arc4 from wolfssl/wolfcrypt/arc4.h */ - void* holder[(272 + WC_ASYNC_DEV_SIZE) / sizeof(void*)]; -} WOLFSSL_RC4_KEY; -typedef WOLFSSL_RC4_KEY RC4_KEY; - -WOLFSSL_API void wolfSSL_RC4_set_key(WOLFSSL_RC4_KEY* key, int len, - const unsigned char* data); -WOLFSSL_API void wolfSSL_RC4(WOLFSSL_RC4_KEY* key, size_t len, - const unsigned char* in, unsigned char* out); - -#define RC4 wolfSSL_RC4 -#define RC4_set_key wolfSSL_RC4_set_key - -#ifdef __cplusplus - } /* extern "C" */ -#endif - -#endif /* WOLFSSL_RC4_COMPAT_H_ */ - diff --git a/include/wolfssl/openssl/ripemd.h b/include/wolfssl/openssl/ripemd.h deleted file mode 100644 index 7ba600d9a1..0000000000 --- a/include/wolfssl/openssl/ripemd.h +++ /dev/null @@ -1,58 +0,0 @@ -/* ripemd.h - * - * Copyright (C) 2006-2023 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -/* ripemd.h for openssl */ - - -#ifndef WOLFSSL_RIPEMD_H_ -#define WOLFSSL_RIPEMD_H_ - -#include - -#ifdef __cplusplus - extern "C" { -#endif - - -typedef struct WOLFSSL_RIPEMD_CTX { - int holder[32]; /* big enough to hold wolfcrypt, but check on init */ -} WOLFSSL_RIPEMD_CTX; - -WOLFSSL_API void wolfSSL_RIPEMD_Init(WOLFSSL_RIPEMD_CTX*); -WOLFSSL_API void wolfSSL_RIPEMD_Update(WOLFSSL_RIPEMD_CTX*, const void*, - unsigned long); -WOLFSSL_API void wolfSSL_RIPEMD_Final(unsigned char*, WOLFSSL_RIPEMD_CTX*); - - -typedef WOLFSSL_RIPEMD_CTX RIPEMD_CTX; - -#define RIPEMD_Init wolfSSL_RIPEMD_Init -#define RIPEMD_Update wolfSSL_RIPEMD_Update -#define RIPEMD_Final wolfSSL_RIPEMD_Final - - -#ifdef __cplusplus - } /* extern "C" */ -#endif - - -#endif /* WOLFSSL_MD5_H_ */ - diff --git a/include/wolfssl/openssl/rsa.h b/include/wolfssl/openssl/rsa.h deleted file mode 100644 index 7284948ad4..0000000000 --- a/include/wolfssl/openssl/rsa.h +++ /dev/null @@ -1,249 +0,0 @@ -/* rsa.h - * - * Copyright (C) 2006-2023 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -/* rsa.h for openSSL */ - - -#ifndef WOLFSSL_RSA_H_ -#define WOLFSSL_RSA_H_ - -#include -#include -#include - -#ifdef __cplusplus - extern "C" { -#endif - -#if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL) -/* Padding types */ -#define RSA_PKCS1_PADDING 0 -#define RSA_PKCS1_OAEP_PADDING 1 -#define RSA_PKCS1_PSS_PADDING 2 -#define RSA_NO_PADDING 3 - -/* Emulate OpenSSL flags */ -#define RSA_METHOD_FLAG_NO_CHECK (1 << 1) -#define RSA_FLAG_CACHE_PUBLIC (1 << 2) -#define RSA_FLAG_CACHE_PRIVATE (1 << 3) -#define RSA_FLAG_BLINDING (1 << 4) -#define RSA_FLAG_THREAD_SAFE (1 << 5) -#define RSA_FLAG_EXT_PKEY (1 << 6) -#define RSA_FLAG_NO_BLINDING (1 << 7) -#define RSA_FLAG_NO_CONSTTIME (1 << 8) - -/* Salt length same as digest length */ -#define RSA_PSS_SALTLEN_DIGEST (-1) -/* Old max salt length */ -#define RSA_PSS_SALTLEN_MAX_SIGN (-2) -/* Verification only value to indicate to discover salt length. */ -#define RSA_PSS_SALTLEN_AUTO (-2) -/* Max salt length */ -#define RSA_PSS_SALTLEN_MAX (-3) -#endif /* OPENSSL_EXTRA || OPENSSL_EXTRA_X509_SMALL */ - -typedef struct WOLFSSL_RSA_METHOD { - /* Flags of RSA key implementation. */ - int flags; - /* Name of RSA key implementation. */ - char *name; - /* RSA method dynamically allocated. */ - word16 dynamic:1; -} WOLFSSL_RSA_METHOD; - -#ifndef WOLFSSL_RSA_TYPE_DEFINED /* guard on redeclaration */ -#define WOLFSSL_RSA_TYPE_DEFINED -/* RSA key compatible with OpenSSL. */ -typedef struct WOLFSSL_RSA { - WOLFSSL_BIGNUM* n; /* Modulus. */ - WOLFSSL_BIGNUM* e; /* Public exponent. */ - WOLFSSL_BIGNUM* d; /* Private exponent. */ - WOLFSSL_BIGNUM* p; /* First prime. */ - WOLFSSL_BIGNUM* q; /* Second prime. */ - WOLFSSL_BIGNUM* dmp1; /* dP = d mod (p - 1) */ - WOLFSSL_BIGNUM* dmq1; /* dQ = d mod (q - 1) */ - WOLFSSL_BIGNUM* iqmp; /* u = (1 / q) mod p */ - void* heap; /* Heap used for memory allocations. */ - void* internal; /* wolfCrypt RSA key. */ -#if defined(OPENSSL_EXTRA) - const WOLFSSL_RSA_METHOD* meth; /* RSA method. */ -#endif -#ifdef HAVE_EX_DATA - WOLFSSL_CRYPTO_EX_DATA ex_data; /* external data */ -#endif - wolfSSL_Ref ref; /* Reference count information. */ - word16 pkcs8HeaderSz; /* Size of PKCS#8 header from decode. */ - int flags; /* Flags of implementation. */ - - /* bits */ - byte inSet:1; /* Internal set from external. */ - byte exSet:1; /* External set from internal. */ - byte ownRng:1; /* Rng needs to be free'd. */ -} WOLFSSL_RSA; -#endif - -#if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL) -typedef WOLFSSL_RSA RSA; -typedef WOLFSSL_RSA_METHOD RSA_METHOD; -#endif /* OPENSSL_EXTRA || OPENSSL_EXTRA_X509_SMALL */ - -WOLFSSL_API WOLFSSL_RSA* wolfSSL_RSA_new_ex(void* heap, int devId); -WOLFSSL_API WOLFSSL_RSA* wolfSSL_RSA_new(void); -WOLFSSL_API void wolfSSL_RSA_free(WOLFSSL_RSA* rsa); - -WOLFSSL_API int wolfSSL_RSA_generate_key_ex(WOLFSSL_RSA* rsa, int bits, - WOLFSSL_BIGNUM* bn, void* cb); - -WOLFSSL_API int wolfSSL_RSA_blinding_on(WOLFSSL_RSA* rsa, WOLFSSL_BN_CTX* bn); -WOLFSSL_API int wolfSSL_RSA_check_key(const WOLFSSL_RSA* rsa); -WOLFSSL_API int wolfSSL_RSA_public_encrypt(int len, const unsigned char* fr, - unsigned char* to, WOLFSSL_RSA* rsa, - int padding); -WOLFSSL_API int wolfSSL_RSA_private_decrypt(int len, const unsigned char* fr, - unsigned char* to, WOLFSSL_RSA* rsa, - int padding); -WOLFSSL_API int wolfSSL_RSA_private_encrypt(int len, const unsigned char* in, - unsigned char* out, WOLFSSL_RSA* rsa, int padding); - -WOLFSSL_API int wolfSSL_RSA_size(const WOLFSSL_RSA* rsa); -WOLFSSL_API int wolfSSL_RSA_bits(const WOLFSSL_RSA* rsa); -WOLFSSL_API int wolfSSL_RSA_sign(int type, const unsigned char* m, - unsigned int mLen, unsigned char* sigRet, - unsigned int* sigLen, WOLFSSL_RSA* rsa); -WOLFSSL_API int wolfSSL_RSA_sign_ex(int type, const unsigned char* m, - unsigned int mLen, unsigned char* sigRet, - unsigned int* sigLen, WOLFSSL_RSA* rsa, - int flag); -WOLFSSL_API int wolfSSL_RSA_sign_generic_padding(int type, const unsigned char* m, - unsigned int mLen, unsigned char* sigRet, - unsigned int* sigLen, WOLFSSL_RSA* rsa, int flag, - int padding); -WOLFSSL_API int wolfSSL_RSA_verify(int type, const unsigned char* m, - unsigned int mLen, const unsigned char* sig, - unsigned int sigLen, WOLFSSL_RSA* rsa); -WOLFSSL_API int wolfSSL_RSA_verify_ex(int type, const unsigned char* m, - unsigned int mLen, const unsigned char* sig, - unsigned int sigLen, WOLFSSL_RSA* rsa, - int padding); -WOLFSSL_API int wolfSSL_RSA_public_decrypt(int flen, const unsigned char* from, - unsigned char* to, WOLFSSL_RSA* rsa, int padding); -WOLFSSL_API int wolfSSL_RSA_GenAdd(WOLFSSL_RSA* rsa); -WOLFSSL_API int wolfSSL_RSA_LoadDer(WOLFSSL_RSA* rsa, - const unsigned char* derBuf, int derSz); -WOLFSSL_API int wolfSSL_RSA_LoadDer_ex(WOLFSSL_RSA* rsa, - const unsigned char* derBuf, int derSz, int opt); - -WOLFSSL_API WOLFSSL_RSA_METHOD *wolfSSL_RSA_meth_new(const char *name, int flags); -WOLFSSL_API void wolfSSL_RSA_meth_free(WOLFSSL_RSA_METHOD *meth); -WOLFSSL_API int wolfSSL_RSA_meth_set(WOLFSSL_RSA_METHOD *rsa, void* p); -WOLFSSL_API int wolfSSL_RSA_set_method(WOLFSSL_RSA *rsa, WOLFSSL_RSA_METHOD *meth); -WOLFSSL_API const WOLFSSL_RSA_METHOD* wolfSSL_RSA_get_method(const WOLFSSL_RSA *rsa); -WOLFSSL_API const WOLFSSL_RSA_METHOD* wolfSSL_RSA_get_default_method(void); - -WOLFSSL_API void wolfSSL_RSA_get0_crt_params(const WOLFSSL_RSA *r, - const WOLFSSL_BIGNUM **dmp1, - const WOLFSSL_BIGNUM **dmq1, - const WOLFSSL_BIGNUM **iqmp); -WOLFSSL_API int wolfSSL_RSA_set0_crt_params(WOLFSSL_RSA *r, WOLFSSL_BIGNUM *dmp1, - WOLFSSL_BIGNUM *dmq1, WOLFSSL_BIGNUM *iqmp); -WOLFSSL_API void wolfSSL_RSA_get0_factors(const WOLFSSL_RSA *r, const WOLFSSL_BIGNUM **p, - const WOLFSSL_BIGNUM **q); -WOLFSSL_API int wolfSSL_RSA_set0_factors(WOLFSSL_RSA *r, WOLFSSL_BIGNUM *p, WOLFSSL_BIGNUM *q); -WOLFSSL_API void wolfSSL_RSA_get0_key(const WOLFSSL_RSA *r, const WOLFSSL_BIGNUM **n, - const WOLFSSL_BIGNUM **e, const WOLFSSL_BIGNUM **d); -WOLFSSL_API int wolfSSL_RSA_set0_key(WOLFSSL_RSA *r, WOLFSSL_BIGNUM *n, WOLFSSL_BIGNUM *e, - WOLFSSL_BIGNUM *d); -WOLFSSL_API int wolfSSL_RSA_flags(const WOLFSSL_RSA *r); -WOLFSSL_API void wolfSSL_RSA_set_flags(WOLFSSL_RSA *r, int flags); -WOLFSSL_API void wolfSSL_RSA_clear_flags(WOLFSSL_RSA *r, int flags); -WOLFSSL_API int wolfSSL_RSA_test_flags(const WOLFSSL_RSA *r, int flags); - -WOLFSSL_API WOLFSSL_RSA* wolfSSL_RSAPublicKey_dup(WOLFSSL_RSA *rsa); - -WOLFSSL_API void* wolfSSL_RSA_get_ex_data(const WOLFSSL_RSA *rsa, int idx); -WOLFSSL_API int wolfSSL_RSA_set_ex_data(WOLFSSL_RSA *rsa, int idx, void *data); -#ifdef HAVE_EX_DATA_CLEANUP_HOOKS -WOLFSSL_API int wolfSSL_RSA_set_ex_data_with_cleanup( - WOLFSSL_RSA *rsa, - int idx, - void *data, - wolfSSL_ex_data_cleanup_routine_t cleanup_routine); -#endif - -#if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL) -#define WOLFSSL_RSA_LOAD_PRIVATE 1 -#define WOLFSSL_RSA_LOAD_PUBLIC 2 -#define WOLFSSL_RSA_F4 0x10001L - -#define RSA_new wolfSSL_RSA_new -#define RSA_free wolfSSL_RSA_free - -#define RSA_generate_key_ex wolfSSL_RSA_generate_key_ex - -#define RSA_blinding_on wolfSSL_RSA_blinding_on -#define RSA_check_key wolfSSL_RSA_check_key -#define RSA_public_encrypt wolfSSL_RSA_public_encrypt -#define RSA_private_decrypt wolfSSL_RSA_private_decrypt -#define RSA_private_encrypt wolfSSL_RSA_private_encrypt - -#define RSA_size wolfSSL_RSA_size -#define RSA_sign wolfSSL_RSA_sign -#define RSA_verify wolfSSL_RSA_verify -#define RSA_public_decrypt wolfSSL_RSA_public_decrypt - -#define RSA_meth_new wolfSSL_RSA_meth_new -#define RSA_meth_free wolfSSL_RSA_meth_free -#define RSA_meth_set_pub_enc wolfSSL_RSA_meth_set -#define RSA_meth_set_pub_dec wolfSSL_RSA_meth_set -#define RSA_meth_set_priv_enc wolfSSL_RSA_meth_set -#define RSA_meth_set_priv_dec wolfSSL_RSA_meth_set -#define RSA_meth_set_init wolfSSL_RSA_meth_set -#define RSA_meth_set_finish wolfSSL_RSA_meth_set -#define RSA_meth_set0_app_data wolfSSL_RSA_meth_set -#define RSA_get_default_method wolfSSL_RSA_get_default_method -#define RSA_get_method wolfSSL_RSA_get_method -#define RSA_set_method wolfSSL_RSA_set_method -#define RSA_get0_crt_params wolfSSL_RSA_get0_crt_params -#define RSA_set0_crt_params wolfSSL_RSA_set0_crt_params -#define RSA_get0_factors wolfSSL_RSA_get0_factors -#define RSA_set0_factors wolfSSL_RSA_set0_factors -#define RSA_get0_key wolfSSL_RSA_get0_key -#define RSA_set0_key wolfSSL_RSA_set0_key -#define RSA_flags wolfSSL_RSA_flags -#define RSA_set_flags wolfSSL_RSA_set_flags -#define RSA_clear_flags wolfSSL_RSA_clear_flags -#define RSA_test_flags wolfSSL_RSA_test_flags - -#define RSAPublicKey_dup wolfSSL_RSAPublicKey_dup -#define RSA_get_ex_data wolfSSL_RSA_get_ex_data -#define RSA_set_ex_data wolfSSL_RSA_set_ex_data - -#define RSA_get0_key wolfSSL_RSA_get0_key - -#define RSA_F4 WOLFSSL_RSA_F4 - -#endif /* OPENSSL_EXTRA || OPENSSL_EXTRA_X509_SMALL */ - -#ifdef __cplusplus - } /* extern "C" */ -#endif - -#endif /* header */ diff --git a/include/wolfssl/openssl/sha.h b/include/wolfssl/openssl/sha.h deleted file mode 100644 index c36441498f..0000000000 --- a/include/wolfssl/openssl/sha.h +++ /dev/null @@ -1,331 +0,0 @@ -/* sha.h - * - * Copyright (C) 2006-2023 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -/* sha.h for openssl */ - - -#ifndef WOLFSSL_SHA_H_ -#define WOLFSSL_SHA_H_ - -#include -#include - -#ifdef WOLFSSL_PREFIX -#include "prefix_sha.h" -#endif - -#ifdef __cplusplus - extern "C" { -#endif - -/* adder for HW crypto */ -#if defined(STM32_HASH) - #define CTX_SHA_HW_ADDER sizeof(STM32_HASH_Context) -#elif defined(WOLFSSL_IMXRT1170_CAAM) - #define CTX_SHA_HW_ADDER (sizeof(caam_hash_ctx_t) + sizeof(caam_handle_t)) -#elif defined(WOLFSSL_ESP32) && \ - !defined(NO_WOLFSSL_ESP32_CRYPT_HASH) - #define CTX_SHA_HW_ADDER sizeof(WC_ESP32SHA) -#else - #define CTX_SHA_HW_ADDER 0 -#endif - - -#ifndef NO_SHA -typedef struct WOLFSSL_SHA_CTX { - /* big enough to hold wolfcrypt Sha, but check on init */ - void* holder[(112 + WC_ASYNC_DEV_SIZE + CTX_SHA_HW_ADDER) / sizeof(void*)]; -#if defined(WOLFSSL_DEVCRYPTO_HASH) || defined(WOLFSSL_HASH_KEEP) - void* keephash_holder[sizeof(void*) + (2 * sizeof(unsigned int))]; -#endif -#ifdef WOLF_CRYPTO_CB - void* cryptocb_holder[(sizeof(int) + sizeof(void*) + 4) / sizeof(void*)]; -#endif -} WOLFSSL_SHA_CTX; - -WOLFSSL_API int wolfSSL_SHA_Init(WOLFSSL_SHA_CTX* sha); -WOLFSSL_API int wolfSSL_SHA_Update(WOLFSSL_SHA_CTX* sha, const void* input, - unsigned long sz); -WOLFSSL_API int wolfSSL_SHA_Final(byte* input, WOLFSSL_SHA_CTX* sha); -WOLFSSL_API int wolfSSL_SHA_Transform(WOLFSSL_SHA_CTX* sha, - const unsigned char* data); -/* SHA1 points to above, shouldn't use SHA0 ever */ -WOLFSSL_API int wolfSSL_SHA1_Init(WOLFSSL_SHA_CTX* sha); -WOLFSSL_API int wolfSSL_SHA1_Update(WOLFSSL_SHA_CTX* sha, const void* input, - unsigned long sz); -WOLFSSL_API int wolfSSL_SHA1_Final(byte* output, WOLFSSL_SHA_CTX* sha); -WOLFSSL_API int wolfSSL_SHA1_Transform(WOLFSSL_SHA_CTX* sha, - const unsigned char *data); -#if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL) -enum { - SHA_DIGEST_LENGTH = 20 -}; - -typedef WOLFSSL_SHA_CTX SHA_CTX; - -#define SHA_Init wolfSSL_SHA_Init -#define SHA_Update wolfSSL_SHA_Update -#define SHA_Final wolfSSL_SHA_Final -#define SHA_Transform wolfSSL_SHA_Transform - -#if defined(NO_OLD_SHA_NAMES) && !defined(HAVE_SELFTEST) && \ - (!defined(HAVE_FIPS) || \ - (defined(HAVE_FIPS_VERSION) && HAVE_FIPS_VERSION > 2)) - /* SHA is only available in non-fips mode or fips version > 2 mode - * because of SHA enum in FIPS build. */ - #define SHA wolfSSL_SHA1 -#endif - -#define SHA1_Init wolfSSL_SHA1_Init -#define SHA1_Update wolfSSL_SHA1_Update -#define SHA1_Final wolfSSL_SHA1_Final -#define SHA1_Transform wolfSSL_SHA1_Transform - -#endif /* OPENSSL_EXTRA || OPENSSL_EXTRA_X509_SMALL */ -#endif /* !NO_SHA */ - - -#ifdef WOLFSSL_SHA224 - -/* Using ALIGN16 because when AES-NI is enabled digest and buffer in Sha256 - * struct are 16 byte aligned. Any dereference to those elements after casting - * to Sha224, is expected to also be 16 byte aligned addresses. */ -typedef struct WOLFSSL_SHA224_CTX { - /* big enough to hold wolfcrypt Sha224, but check on init */ - ALIGN16 void* holder[(274 + CTX_SHA_HW_ADDER + WC_ASYNC_DEV_SIZE) / - sizeof(void*)]; -#if defined(WOLFSSL_DEVCRYPTO_HASH) || defined(WOLFSSL_HASH_KEEP) - ALIGN16 void* keephash_holder[sizeof(void*) + (2 * sizeof(unsigned int))]; -#endif -#ifdef WOLF_CRYPTO_CB - ALIGN16 void* cryptocb_holder[(sizeof(int) + sizeof(void*) + 4) / - sizeof(void*)]; -#endif -} WOLFSSL_SHA224_CTX; - -WOLFSSL_API int wolfSSL_SHA224_Init(WOLFSSL_SHA224_CTX* sha); -WOLFSSL_API int wolfSSL_SHA224_Update(WOLFSSL_SHA224_CTX* sha, const void* input, - unsigned long sz); -WOLFSSL_API int wolfSSL_SHA224_Final(byte* output, WOLFSSL_SHA224_CTX* sha); -#if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL) -enum { - SHA224_DIGEST_LENGTH = 28 -}; - -typedef WOLFSSL_SHA224_CTX SHA224_CTX; - -#define SHA224_Init wolfSSL_SHA224_Init -#define SHA224_Update wolfSSL_SHA224_Update -#define SHA224_Final wolfSSL_SHA224_Final -#if defined(NO_OLD_SHA_NAMES) && !defined(HAVE_SELFTEST) && \ - (!defined(HAVE_FIPS) || \ - (defined(HAVE_FIPS_VERSION) && HAVE_FIPS_VERSION > 2)) - /* SHA224 is only available in non-fips mode or fips version > 2 mode - * because of SHA224 enum in FIPS build. */ - #define SHA224 wolfSSL_SHA224 -#endif -#endif /* OPENSSL_EXTRA || OPENSSL_EXTRA_X509_SMALL */ -#endif /* WOLFSSL_SHA224 */ - -#ifndef NO_SHA256 -/* Using ALIGN16 because when AES-NI is enabled digest and buffer in Sha256 - * struct are 16 byte aligned. Any dereference to those elements after casting - * to Sha256, is expected to also be 16 byte aligned addresses. */ -typedef struct WOLFSSL_SHA256_CTX { - /* big enough to hold wolfcrypt Sha256, but check on init */ - ALIGN16 void* holder[(274 + CTX_SHA_HW_ADDER + WC_ASYNC_DEV_SIZE) / - sizeof(void*)]; -#if defined(WOLFSSL_DEVCRYPTO_HASH) || defined(WOLFSSL_HASH_KEEP) - ALIGN16 void* keephash_holder[sizeof(void*) + (2 * sizeof(unsigned int))]; -#endif -#ifdef WOLF_CRYPTO_CB - ALIGN16 void* cryptocb_holder[(sizeof(int) + sizeof(void*) + 4) / - sizeof(void*)]; -#endif -} WOLFSSL_SHA256_CTX; - -WOLFSSL_API int wolfSSL_SHA256_Init(WOLFSSL_SHA256_CTX* sha256); -WOLFSSL_API int wolfSSL_SHA256_Update(WOLFSSL_SHA256_CTX* sha, const void* input, - unsigned long sz); -WOLFSSL_API int wolfSSL_SHA256_Final(byte* output, WOLFSSL_SHA256_CTX* sha); -WOLFSSL_API int wolfSSL_SHA256_Transform(WOLFSSL_SHA256_CTX* sha256, - const unsigned char *data); -#if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL) -enum { - SHA256_DIGEST_LENGTH = 32 -}; - -typedef WOLFSSL_SHA256_CTX SHA256_CTX; - -#define SHA256_Init wolfSSL_SHA256_Init -#define SHA256_Update wolfSSL_SHA256_Update -#define SHA256_Final wolfSSL_SHA256_Final -#define SHA256_Transform wolfSSL_SHA256_Transform - -/* "SHA256" has some conflicts - * If not FIPS and NO_OLD_SHA_NAMES defined - * If FIPS V3 or higher and NO_OLD_SHA_NAMES defined - * If FIPS V2 and NO_OLD_SHA256_NAMES defined - * If FIPS v1 not allowed - * If HAVE_SELFTEST not allowed - */ -#if !defined(HAVE_SELFTEST) && \ - (defined(NO_OLD_SHA_NAMES) && !defined(HAVE_FIPS)) || \ - (defined(NO_OLD_SHA_NAMES) && defined(HAVE_FIPS) && \ - defined(HAVE_FIPS_VERSION) && HAVE_FIPS_VERSION >= 3) || \ - (defined(NO_OLD_SHA256_NAMES) && defined(HAVE_FIPS) && \ - defined(HAVE_FIPS_VERSION) && HAVE_FIPS_VERSION == 2) - - #define SHA256 wolfSSL_SHA256 -#endif -#endif /* OPENSSL_EXTRA || OPENSSL_EXTRA_X509_SMALL */ -#endif /* !NO_SHA256 */ - -#ifdef WOLFSSL_SHA384 -typedef struct WOLFSSL_SHA384_CTX { - /* big enough to hold wolfCrypt Sha384, but check on init */ - void* holder[(288 + CTX_SHA_HW_ADDER + WC_ASYNC_DEV_SIZE) / sizeof(void*)]; -#if defined(WOLFSSL_DEVCRYPTO_HASH) || defined(WOLFSSL_HASH_KEEP) - void* keephash_holder[sizeof(void*) + (2 * sizeof(unsigned int))]; -#endif -#ifdef WOLF_CRYPTO_CB - void* cryptocb_holder[(sizeof(int) + sizeof(void*) + 4) / sizeof(void*)]; -#endif -} WOLFSSL_SHA384_CTX; - -WOLFSSL_API int wolfSSL_SHA384_Init(WOLFSSL_SHA384_CTX* sha); -WOLFSSL_API int wolfSSL_SHA384_Update(WOLFSSL_SHA384_CTX* sha, const void* input, - unsigned long sz); -WOLFSSL_API int wolfSSL_SHA384_Final(byte* output, WOLFSSL_SHA384_CTX* sha); -#if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL) -enum { - SHA384_DIGEST_LENGTH = 48 -}; - -typedef WOLFSSL_SHA384_CTX SHA384_CTX; - -#define SHA384_Init wolfSSL_SHA384_Init -#define SHA384_Update wolfSSL_SHA384_Update -#define SHA384_Final wolfSSL_SHA384_Final -#if defined(NO_OLD_SHA_NAMES) && !defined(HAVE_FIPS) && !defined(HAVE_SELFTEST) - /* SHA384 is only available in non-fips mode because of SHA384 enum in FIPS - * build. */ - #define SHA384 wolfSSL_SHA384 -#endif -#endif /* OPENSSL_EXTRA || OPENSSL_EXTRA_X509_SMALL */ - -#endif /* WOLFSSL_SHA384 */ - -#ifdef WOLFSSL_SHA512 -typedef struct WOLFSSL_SHA512_CTX { - /* big enough to hold wolfCrypt Sha384, but check on init */ - void* holder[(288 + CTX_SHA_HW_ADDER + WC_ASYNC_DEV_SIZE) / sizeof(void*)]; -#if defined(WOLFSSL_DEVCRYPTO_HASH) || defined(WOLFSSL_HASH_KEEP) - void* keephash_holder[sizeof(void*) + (2 * sizeof(unsigned int))]; -#endif -#ifdef WOLF_CRYPTO_CB - void* cryptocb_holder[(sizeof(int) + sizeof(void*) + 4) / sizeof(void*)]; -#endif -} WOLFSSL_SHA512_CTX; - -WOLFSSL_API int wolfSSL_SHA512_Init(WOLFSSL_SHA512_CTX* sha); -WOLFSSL_API int wolfSSL_SHA512_Update(WOLFSSL_SHA512_CTX* sha, - const void* input, unsigned long sz); -WOLFSSL_API int wolfSSL_SHA512_Final(byte* output, WOLFSSL_SHA512_CTX* sha); -WOLFSSL_API int wolfSSL_SHA512_Transform(WOLFSSL_SHA512_CTX* sha512, - const unsigned char* data); -#if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL) -enum { - SHA512_DIGEST_LENGTH = 64 -}; - -typedef WOLFSSL_SHA512_CTX SHA512_CTX; - -#define SHA512_Init wolfSSL_SHA512_Init -#define SHA512_Update wolfSSL_SHA512_Update -#define SHA512_Final wolfSSL_SHA512_Final -#define SHA512_Transform wolfSSL_SHA512_Transform -#if defined(NO_OLD_SHA_NAMES) && !defined(HAVE_FIPS) && !defined(HAVE_SELFTEST) - /* SHA512 is only available in non-fips mode because of SHA512 enum in FIPS - * build. */ - #define SHA512 wolfSSL_SHA512 -#endif -#endif /* OPENSSL_EXTRA || OPENSSL_EXTRA_X509_SMALL */ - -#if !defined(WOLFSSL_NOSHA512_224) -typedef struct WOLFSSL_SHA512_CTX WOLFSSL_SHA512_224_CTX; -typedef WOLFSSL_SHA512_224_CTX SHA512_224_CTX; - -WOLFSSL_API int wolfSSL_SHA512_224_Init(WOLFSSL_SHA512_CTX* sha); -WOLFSSL_API int wolfSSL_SHA512_224_Update(WOLFSSL_SHA512_224_CTX* sha, - const void* input, unsigned long sz); -WOLFSSL_API int wolfSSL_SHA512_224_Final(byte* output, - WOLFSSL_SHA512_224_CTX* sha); -WOLFSSL_API int wolfSSL_SHA512_224_Transform(WOLFSSL_SHA512_CTX* sha512, - const unsigned char* data); - -#if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL) -#define SHA512_224_Init wolfSSL_SHA512_224_Init -#define SHA512_224_Update wolfSSL_SHA512_224_Update -#define SHA512_224_Final wolfSSL_SHA512_224_Final -#define SHA512_224_Transform wolfSSL_SHA512_224_Transform - -#if defined(NO_OLD_SHA_NAMES) && !defined(HAVE_FIPS) && !defined(HAVE_SELFTEST) - #define SHA512_224 wolfSSL_SHA512_224 -#endif -#endif /* OPENSSL_EXTRA || OPENSSL_EXTRA_X509_SMALL */ -#endif /* !WOLFSSL_NOSHA512_224 */ - -#if !defined(WOLFSSL_NOSHA512_256) -typedef struct WOLFSSL_SHA512_CTX WOLFSSL_SHA512_256_CTX; -typedef WOLFSSL_SHA512_256_CTX SHA512_256_CTX; - -WOLFSSL_API int wolfSSL_SHA512_256_Init(WOLFSSL_SHA512_CTX* sha); -WOLFSSL_API int wolfSSL_SHA512_256_Update(WOLFSSL_SHA512_256_CTX* sha, - const void* input, unsigned long sz); -WOLFSSL_API int wolfSSL_SHA512_256_Final(byte* output, WOLFSSL_SHA512_256_CTX* sha); -WOLFSSL_API int wolfSSL_SHA512_256_Transform(WOLFSSL_SHA512_CTX* sha512, - const unsigned char* data); - -#if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL) -#define SHA512_256_Init wolfSSL_SHA512_256_Init -#define SHA512_256_Update wolfSSL_SHA512_256_Update -#define SHA512_256_Final wolfSSL_SHA512_256_Final -#define SHA512_256_Transform wolfSSL_SHA512_256_Transform - -#if defined(NO_OLD_SHA_NAMES) && !defined(HAVE_FIPS) && !defined(HAVE_SELFTEST) - #define SHA512_256 wolfSSL_SHA512_256 -#endif -#endif /* OPENSSL_EXTRA || OPENSSL_EXTRA_X509_SMALL */ -#endif /* !WOLFSSL_NOSHA512_256 */ - - -#endif /* WOLFSSL_SHA512 */ - - - - -#ifdef __cplusplus - } /* extern "C" */ -#endif - - -#endif /* WOLFSSL_SHA_H_ */ diff --git a/include/wolfssl/openssl/sha3.h b/include/wolfssl/openssl/sha3.h deleted file mode 100644 index 1b0d63bc51..0000000000 --- a/include/wolfssl/openssl/sha3.h +++ /dev/null @@ -1,153 +0,0 @@ -/* sha3.h - * - * Copyright (C) 2006-2023 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -/* sha3.h for openssl */ - - -#ifndef WOLFSSL_SHA3_H_ -#define WOLFSSL_SHA3_H_ - -#include -#include - -#ifdef WOLFSSL_PREFIX -#include "prefix_sha.h" -#endif - -#ifdef __cplusplus - extern "C" { -#endif - -/* Using ALIGN16 because when AES-NI is enabled digest and buffer in Sha3 - * struct are 16 byte aligned. Any dereference to those elements after casting - * to Sha3 is expected to also be 16 byte aligned addresses. */ -struct WOLFSSL_SHA3_CTX { - /* big enough to hold wolfcrypt Sha3, but check on init */ - ALIGN16 void* holder[(424 + WC_ASYNC_DEV_SIZE) / sizeof(void*)]; -}; - -#ifndef WOLFSSL_NOSHA3_224 -typedef struct WOLFSSL_SHA3_CTX WOLFSSL_SHA3_224_CTX; - -WOLFSSL_API int wolfSSL_SHA3_224_Init(WOLFSSL_SHA3_224_CTX* sha); -WOLFSSL_API int wolfSSL_SHA3_224_Update(WOLFSSL_SHA3_224_CTX* sha, const void* input, - unsigned long sz); -WOLFSSL_API int wolfSSL_SHA3_224_Final(unsigned char* output, - WOLFSSL_SHA3_224_CTX* sha); - -enum { - SHA3_224_DIGEST_LENGTH = 28 -}; - -typedef WOLFSSL_SHA3_224_CTX SHA3_224_CTX; - -#define SHA3_224_Init wolfSSL_SHA3_224_Init -#define SHA3_224_Update wolfSSL_SHA3_224_Update -#define SHA3_224_Final wolfSSL_SHA3_224_Final -#if defined(NO_OLD_WC_NAMES) && !defined(HAVE_FIPS) && !defined(HAVE_SELFTEST) - #define SHA3_224 wolfSSL_SHA3_224 -#endif -#endif /* WOLFSSL_NOSHA3_224 */ - - -#ifndef WOLFSSL_NOSHA3_256 -typedef struct WOLFSSL_SHA3_CTX WOLFSSL_SHA3_256_CTX; - - -WOLFSSL_API int wolfSSL_SHA3_256_Init(WOLFSSL_SHA3_256_CTX* sha); -WOLFSSL_API int wolfSSL_SHA3_256_Update(WOLFSSL_SHA3_256_CTX* sha, - const void* input, unsigned long sz); -WOLFSSL_API int wolfSSL_SHA3_256_Final(unsigned char* output, - WOLFSSL_SHA3_256_CTX* sha); - -enum { - SHA3_256_DIGEST_LENGTH = 32 -}; - - -typedef WOLFSSL_SHA3_256_CTX SHA3_256_CTX; - -#define SHA3_256_Init wolfSSL_SHA3_256_Init -#define SHA3_256_Update wolfSSL_SHA3_256_Update -#define SHA3_256_Final wolfSSL_SHA3_256_Final -#if defined(NO_OLD_WC_NAMES) && !defined(HAVE_FIPS) && !defined(HAVE_SELFTEST) - #define SHA3_256 wolfSSL_SHA3_256 -#endif -#endif /* WOLFSSL_NOSHA3_256 */ - - -typedef struct WOLFSSL_SHA3_CTX WOLFSSL_SHA3_384_CTX; - -WOLFSSL_API int wolfSSL_SHA3_384_Init(WOLFSSL_SHA3_384_CTX* sha); -WOLFSSL_API int wolfSSL_SHA3_384_Update(WOLFSSL_SHA3_384_CTX* sha, - const void* input, unsigned long sz); -WOLFSSL_API int wolfSSL_SHA3_384_Final(unsigned char* output, - WOLFSSL_SHA3_384_CTX* sha); - -enum { - SHA3_384_DIGEST_LENGTH = 48 -}; - -typedef WOLFSSL_SHA3_384_CTX SHA3_384_CTX; - -#define SHA3_384_Init wolfSSL_SHA3_384_Init -#define SHA3_384_Update wolfSSL_SHA3_384_Update -#define SHA3_384_Final wolfSSL_SHA3_384_Final -#if defined(NO_OLD_WC_NAMES) && !defined(HAVE_FIPS) && !defined(HAVE_SELFTEST) - #define SHA3_384 wolfSSL_SHA3_384 -#endif - - -#ifndef WOLFSSL_NOSHA3_512 - -typedef struct WOLFSSL_SHA3_CTX WOLFSSL_SHA3_512_CTX; - -WOLFSSL_API int wolfSSL_SHA3_512_Init(WOLFSSL_SHA3_512_CTX* sha); -WOLFSSL_API int wolfSSL_SHA3_512_Update(WOLFSSL_SHA3_512_CTX* sha, - const void* input, unsigned long sz); -WOLFSSL_API int wolfSSL_SHA3_512_Final(unsigned char* output, - WOLFSSL_SHA3_512_CTX* sha); - -enum { - SHA3_512_DIGEST_LENGTH = 64 -}; - - -typedef WOLFSSL_SHA3_512_CTX SHA3_512_CTX; - -#define SHA3_512_Init wolfSSL_SHA3_512_Init -#define SHA3_512_Update wolfSSL_SHA3_512_Update -#define SHA3_512_Final wolfSSL_SHA3_512_Final -#if defined(NO_OLD_WC_NAMES) && !defined(HAVE_FIPS) && !defined(HAVE_SELFTEST) - #define SHA3_512 wolfSSL_SHA3_512 -#endif -#endif /* WOLFSSL_NOSHA3_512 */ - - - - -#ifdef __cplusplus - } /* extern "C" */ -#endif - - -#endif /* WOLFSSL_SHA3_H_ */ - diff --git a/include/wolfssl/openssl/stack.h b/include/wolfssl/openssl/stack.h deleted file mode 100644 index cee7cfc929..0000000000 --- a/include/wolfssl/openssl/stack.h +++ /dev/null @@ -1,61 +0,0 @@ -/* stack.h - * - * Copyright (C) 2006-2023 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -/* stack.h for openSSL */ - -#ifndef WOLFSSL_STACK_H_ -#define WOLFSSL_STACK_H_ - -#include -#include - -#ifdef __cplusplus - extern "C" { -#endif - -typedef void (*wolfSSL_sk_freefunc)(void *); - -WOLFSSL_API void wolfSSL_sk_GENERIC_pop_free(WOLFSSL_STACK* sk, wolfSSL_sk_freefunc f); -WOLFSSL_API void wolfSSL_sk_GENERIC_free(WOLFSSL_STACK *sk); -WOLFSSL_API int wolfSSL_sk_GENERIC_push(WOLFSSL_STACK *sk, void *data); -WOLFSSL_API void wolfSSL_sk_pop_free(WOLFSSL_STACK *st, void (*func) (void *)); -WOLFSSL_API WOLFSSL_STACK *wolfSSL_sk_new_null(void); - -WOLFSSL_API int wolfSSL_sk_CIPHER_push(WOLFSSL_STACK *st,WOLFSSL_CIPHER *cipher); -WOLFSSL_API WOLFSSL_CIPHER* wolfSSL_sk_CIPHER_pop(WOLF_STACK_OF(WOLFSSL_CIPHER)* sk); -WOLFSSL_API WOLFSSL_STACK* wolfSSL_sk_new_cipher(void); - -#define OPENSSL_sk_free wolfSSL_sk_free -#define OPENSSL_sk_pop_free wolfSSL_sk_pop_free -#define OPENSSL_sk_new_null wolfSSL_sk_new_null -#define OPENSSL_sk_push wolfSSL_sk_push - -/* provides older OpenSSL API compatibility */ -#define sk_free OPENSSL_sk_free -#define sk_pop_free OPENSSL_sk_pop_free -#define sk_new_null OPENSSL_sk_new_null -#define sk_push OPENSSL_sk_push - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/include/wolfssl/openssl/tls1.h b/include/wolfssl/openssl/tls1.h deleted file mode 100644 index dc4a27c2f3..0000000000 --- a/include/wolfssl/openssl/tls1.h +++ /dev/null @@ -1,52 +0,0 @@ -/* tls1.h - * - * Copyright (C) 2006-2023 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - - -#ifndef WOLFSSL_OPENSSL_TLS1_H_ -#define WOLFSSL_OPENSSL_TLS1_H_ - -#ifndef TLS1_VERSION -#define TLS1_VERSION 0x0301 -#endif - -#ifndef TLS1_1_VERSION -#define TLS1_1_VERSION 0x0302 -#endif - -#ifndef TLS1_2_VERSION -#define TLS1_2_VERSION 0x0303 -#endif - -#ifndef TLS1_3_VERSION -#define TLS1_3_VERSION 0x0304 -#endif - -#ifndef TLS_MAX_VERSION -#define TLS_MAX_VERSION TLS1_3_VERSION -#endif - -#ifdef WOLFSSL_QUIC -/* from rfc9001 */ -#define TLSEXT_TYPE_quic_transport_parameters_draft 0xffa5 -#define TLSEXT_TYPE_quic_transport_parameters 0x0039 -#endif - -#endif /* WOLFSSL_OPENSSL_TLS1_H_ */ diff --git a/include/wolfssl/openssl/txt_db.h b/include/wolfssl/openssl/txt_db.h deleted file mode 100644 index 511235b2cf..0000000000 --- a/include/wolfssl/openssl/txt_db.h +++ /dev/null @@ -1,60 +0,0 @@ -/* txt_db.h - * - * Copyright (C) 2006-2023 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -#ifndef WOLFSSL_TXT_DB_H_ -#define WOLFSSL_TXT_DB_H_ - -#include - -#define WOLFSSL_TXT_DB_MAX_FIELDS 10 - -struct WOLFSSL_TXT_DB { - int num_fields; - WOLF_STACK_OF(WOLFSSL_STRING) *data; - long error; - long arg1; - long arg2; - wolf_sk_hash_cb hash_fn[WOLFSSL_TXT_DB_MAX_FIELDS]; -}; - -typedef struct WOLFSSL_TXT_DB WOLFSSL_TXT_DB; -typedef int (*wolf_lh_compare_cb)(const void* a, - const void* b); - -WOLFSSL_API WOLFSSL_TXT_DB *wolfSSL_TXT_DB_read(WOLFSSL_BIO *in, int num); -WOLFSSL_API long wolfSSL_TXT_DB_write(WOLFSSL_BIO *out, WOLFSSL_TXT_DB *db); -WOLFSSL_API int wolfSSL_TXT_DB_insert(WOLFSSL_TXT_DB *db, WOLFSSL_STRING *row); -WOLFSSL_API void wolfSSL_TXT_DB_free(WOLFSSL_TXT_DB *db); -WOLFSSL_API int wolfSSL_TXT_DB_create_index(WOLFSSL_TXT_DB *db, int field, - void* qual, wolf_sk_hash_cb hash, wolf_lh_compare_cb cmp); -WOLFSSL_API WOLFSSL_STRING *wolfSSL_TXT_DB_get_by_index(WOLFSSL_TXT_DB *db, - int idx, WOLFSSL_STRING *value); - -#define TXT_DB WOLFSSL_TXT_DB - -#define TXT_DB_read wolfSSL_TXT_DB_read -#define TXT_DB_write wolfSSL_TXT_DB_write -#define TXT_DB_insert wolfSSL_TXT_DB_insert -#define TXT_DB_free wolfSSL_TXT_DB_free -#define TXT_DB_create_index wolfSSL_TXT_DB_create_index -#define TXT_DB_get_by_index wolfSSL_TXT_DB_get_by_index - -#endif /* WOLFSSL_TXT_DB_H_ */ diff --git a/include/wolfssl/openssl/x509.h b/include/wolfssl/openssl/x509.h deleted file mode 100644 index a603ce681f..0000000000 --- a/include/wolfssl/openssl/x509.h +++ /dev/null @@ -1,199 +0,0 @@ -/* x509.h - * - * Copyright (C) 2006-2023 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -/* x509.h for openssl */ - -#ifndef WOLFSSL_OPENSSL_509_H_ -#define WOLFSSL_OPENSSL_509_H_ - -#include -#include -#include -#include -#include -#include - -#if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL) - -/* wolfSSL_X509_print_ex flags */ -#define X509_FLAG_COMPAT (0UL) -#define X509_FLAG_NO_HEADER (1UL << 0) -#define X509_FLAG_NO_VERSION (1UL << 1) -#define X509_FLAG_NO_SERIAL (1UL << 2) -#define X509_FLAG_NO_SIGNAME (1UL << 3) -#define X509_FLAG_NO_ISSUER (1UL << 4) -#define X509_FLAG_NO_VALIDITY (1UL << 5) -#define X509_FLAG_NO_SUBJECT (1UL << 6) -#define X509_FLAG_NO_PUBKEY (1UL << 7) -#define X509_FLAG_NO_EXTENSIONS (1UL << 8) -#define X509_FLAG_NO_SIGDUMP (1UL << 9) -#define X509_FLAG_NO_AUX (1UL << 10) -#define X509_FLAG_NO_ATTRIBUTES (1UL << 11) -#define X509_FLAG_NO_IDS (1UL << 12) - -#define XN_FLAG_FN_SN 0 -#define XN_FLAG_ONELINE 0 -#define XN_FLAG_COMPAT 0 -#define XN_FLAG_RFC2253 1 -#define XN_FLAG_SEP_COMMA_PLUS (1 << 16) -#define XN_FLAG_SEP_CPLUS_SPC (2 << 16) -#define XN_FLAG_SEP_SPLUS_SPC (3 << 16) -#define XN_FLAG_SEP_MULTILINE (4 << 16) -#define XN_FLAG_SEP_MASK (0xF << 16) -#define XN_FLAG_DN_REV (1 << 20) -#define XN_FLAG_FN_LN (1 << 21) -#define XN_FLAG_FN_OID (2 << 21) -#define XN_FLAG_FN_NONE (3 << 21) -#define XN_FLAG_FN_MASK (3 << 21) -#define XN_FLAG_SPC_EQ (1 << 23) -#define XN_FLAG_DUMP_UNKNOWN_FIELDS (1 << 24) -#define XN_FLAG_FN_ALIGN (1 << 25) - -#define XN_FLAG_MULTILINE 0xFFFF - -/* - * All of these aren't actually used in wolfSSL. Some are included to - * satisfy OpenSSL compatibility consumers to prevent compilation errors. - * The list was taken from - * https://github.com/openssl/openssl/blob/master/include/openssl/x509_vfy.h.in - * One requirement for HAProxy is that the values should be literal constants. - */ - -#define X509_V_OK 0 -#define X509_V_ERR_UNSPECIFIED 1 -#define X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT 2 -#define X509_V_ERR_UNABLE_TO_GET_CRL 3 -#define X509_V_ERR_UNABLE_TO_DECRYPT_CERT_SIGNATURE 4 -#define X509_V_ERR_UNABLE_TO_DECRYPT_CRL_SIGNATURE 5 -#define X509_V_ERR_UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY 6 -#define X509_V_ERR_CERT_SIGNATURE_FAILURE 7 -#define X509_V_ERR_CRL_SIGNATURE_FAILURE 8 -#define X509_V_ERR_CERT_NOT_YET_VALID 9 -#define X509_V_ERR_CERT_HAS_EXPIRED 10 -#define X509_V_ERR_CRL_NOT_YET_VALID 11 -#define X509_V_ERR_CRL_HAS_EXPIRED 12 -#define X509_V_ERR_ERROR_IN_CERT_NOT_BEFORE_FIELD 13 -#define X509_V_ERR_ERROR_IN_CERT_NOT_AFTER_FIELD 14 -#define X509_V_ERR_ERROR_IN_CRL_LAST_UPDATE_FIELD 15 -#define X509_V_ERR_ERROR_IN_CRL_NEXT_UPDATE_FIELD 16 -#define X509_V_ERR_OUT_OF_MEM 17 -#define X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT 18 -#define X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN 19 -#define X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY 20 -#define X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE 21 -#define X509_V_ERR_CERT_CHAIN_TOO_LONG 22 -#define X509_V_ERR_CERT_REVOKED 23 -#define X509_V_ERR_NO_ISSUER_PUBLIC_KEY 24 -#define X509_V_ERR_PATH_LENGTH_EXCEEDED 25 -#define X509_V_ERR_INVALID_PURPOSE 26 -#define X509_V_ERR_CERT_UNTRUSTED 27 -#define X509_V_ERR_CERT_REJECTED 28 - -/* These are 'informational' when looking for issuer cert */ -#define X509_V_ERR_SUBJECT_ISSUER_MISMATCH 29 -#define X509_V_ERR_AKID_SKID_MISMATCH 30 -#define X509_V_ERR_AKID_ISSUER_SERIAL_MISMATCH 31 -#define X509_V_ERR_KEYUSAGE_NO_CERTSIGN 32 -#define X509_V_ERR_UNABLE_TO_GET_CRL_ISSUER 33 -#define X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION 34 -#define X509_V_ERR_KEYUSAGE_NO_CRL_SIGN 35 -#define X509_V_ERR_UNHANDLED_CRITICAL_CRL_EXTENSION 36 -#define X509_V_ERR_INVALID_NON_CA 37 -#define X509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED 38 -#define X509_V_ERR_KEYUSAGE_NO_DIGITAL_SIGNATURE 39 -#define X509_V_ERR_PROXY_CERTIFICATES_NOT_ALLOWED 40 -#define X509_V_ERR_INVALID_EXTENSION 41 -#define X509_V_ERR_INVALID_POLICY_EXTENSION 42 -#define X509_V_ERR_NO_EXPLICIT_POLICY 43 -#define X509_V_ERR_DIFFERENT_CRL_SCOPE 44 -#define X509_V_ERR_UNSUPPORTED_EXTENSION_FEATURE 45 -#define X509_V_ERR_UNNESTED_RESOURCE 46 -#define X509_V_ERR_PERMITTED_VIOLATION 47 -#define X509_V_ERR_EXCLUDED_VIOLATION 48 -#define X509_V_ERR_SUBTREE_MINMAX 49 -/* The application is not happy */ -#define X509_V_ERR_APPLICATION_VERIFICATION 50 -#define X509_V_ERR_UNSUPPORTED_CONSTRAINT_TYPE 51 -#define X509_V_ERR_UNSUPPORTED_CONSTRAINT_SYNTAX 52 -#define X509_V_ERR_UNSUPPORTED_NAME_SYNTAX 53 -#define X509_V_ERR_CRL_PATH_VALIDATION_ERROR 54 -/* Another issuer check debug option */ -#define X509_V_ERR_PATH_LOOP 55 -/* Suite B mode algorithm violation */ -#define X509_V_ERR_SUITE_B_INVALID_VERSION 56 -#define X509_V_ERR_SUITE_B_INVALID_ALGORITHM 57 -#define X509_V_ERR_SUITE_B_INVALID_CURVE 58 -#define X509_V_ERR_SUITE_B_INVALID_SIGNATURE_ALGORITHM 59 -#define X509_V_ERR_SUITE_B_LOS_NOT_ALLOWED 60 -#define X509_V_ERR_SUITE_B_CANNOT_SIGN_P_384_WITH_P_256 61 -/* Host, email and IP check errors */ -#define X509_V_ERR_HOSTNAME_MISMATCH 62 -#define X509_V_ERR_EMAIL_MISMATCH 63 -#define X509_V_ERR_IP_ADDRESS_MISMATCH 64 -/* DANE TLSA errors */ -#define X509_V_ERR_DANE_NO_MATCH 65 -/* security level errors */ -#define X509_V_ERR_EE_KEY_TOO_SMALL 66 -#define X509_V_ERR_CA_KEY_TOO_SMALL 67 -#define X509_V_ERR_CA_MD_TOO_WEAK 68 -/* Caller error */ -#define X509_V_ERR_INVALID_CALL 69 -/* Issuer lookup error */ -#define X509_V_ERR_STORE_LOOKUP 70 -/* Certificate transparency */ -#define X509_V_ERR_NO_VALID_SCTS 71 - -#define X509_V_ERR_PROXY_SUBJECT_NAME_VIOLATION 72 -/* OCSP status errors */ -#define X509_V_ERR_OCSP_VERIFY_NEEDED 73 -#define X509_V_ERR_OCSP_VERIFY_FAILED 74 -#define X509_V_ERR_OCSP_CERT_UNKNOWN 75 - -#define X509_V_ERR_UNSUPPORTED_SIGNATURE_ALGORITHM 76 -#define X509_V_ERR_SIGNATURE_ALGORITHM_MISMATCH 77 - -/* Errors in case a check in X509_V_FLAG_X509_STRICT mode fails */ -#define X509_V_ERR_SIGNATURE_ALGORITHM_INCONSISTENCY 78 -#define X509_V_ERR_INVALID_CA 79 -#define X509_V_ERR_PATHLEN_INVALID_FOR_NON_CA 80 -#define X509_V_ERR_PATHLEN_WITHOUT_KU_KEY_CERT_SIGN 81 -#define X509_V_ERR_KU_KEY_CERT_SIGN_INVALID_FOR_NON_CA 82 -#define X509_V_ERR_ISSUER_NAME_EMPTY 83 -#define X509_V_ERR_SUBJECT_NAME_EMPTY 84 -#define X509_V_ERR_MISSING_AUTHORITY_KEY_IDENTIFIER 85 -#define X509_V_ERR_MISSING_SUBJECT_KEY_IDENTIFIER 86 -#define X509_V_ERR_EMPTY_SUBJECT_ALT_NAME 87 -#define X509_V_ERR_EMPTY_SUBJECT_SAN_NOT_CRITICAL 88 -#define X509_V_ERR_CA_BCONS_NOT_CRITICAL 89 -#define X509_V_ERR_AUTHORITY_KEY_IDENTIFIER_CRITICAL 90 -#define X509_V_ERR_SUBJECT_KEY_IDENTIFIER_CRITICAL 91 -#define X509_V_ERR_CA_CERT_MISSING_KEY_USAGE 92 -#define X509_V_ERR_EXTENSIONS_REQUIRE_VERSION_3 93 -#define X509_V_ERR_EC_KEY_EXPLICIT_PARAMS 94 -#define X509_R_CERT_ALREADY_IN_HASH_TABLE 101 - -#define X509_EXTENSION_set_critical wolfSSL_X509_EXTENSION_set_critical -#define X509_EXTENSION_set_object wolfSSL_X509_EXTENSION_set_object -#define X509_EXTENSION_set_data wolfSSL_X509_EXTENSION_set_data - -#endif /* OPENSSL_EXTRA || OPENSSL_EXTRA_X509_SMALL */ - -#endif /* WOLFSSL_OPENSSL_509_H_ */ diff --git a/include/wolfssl/openssl/x509_vfy.h b/include/wolfssl/openssl/x509_vfy.h deleted file mode 100644 index 025f52678e..0000000000 --- a/include/wolfssl/openssl/x509_vfy.h +++ /dev/null @@ -1,47 +0,0 @@ -/* x509_vfy.h - * - * Copyright (C) 2006-2023 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -/* x509_vfy.h for openSSL */ - -#ifndef WOLFSSL_x509_vfy_H_ -#define WOLFSSL_x509_vfy_H_ - -#include -#include - -#ifdef __cplusplus - extern "C" { -#endif - -#if defined(WOLFSSL_QT) || defined(OPENSSL_ALL) - WOLFSSL_API int wolfSSL_X509_STORE_CTX_set_purpose(WOLFSSL_X509_STORE_CTX *ctx, int purpose); - WOLFSSL_API void wolfSSL_X509_STORE_CTX_set_flags(WOLFSSL_X509_STORE_CTX *ctx, - unsigned long flags); -#endif - -#define X509_STORE_CTX_set_purpose wolfSSL_X509_STORE_CTX_set_purpose -#define X509_STORE_CTX_set_flags wolfSSL_X509_STORE_CTX_set_flags - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* WOLFSSL_x509_vfy_H_ */ diff --git a/include/wolfssl/openssl/x509v3.h b/include/wolfssl/openssl/x509v3.h deleted file mode 100644 index c9c9ad8507..0000000000 --- a/include/wolfssl/openssl/x509v3.h +++ /dev/null @@ -1,176 +0,0 @@ -/* x509v3.h - * - * Copyright (C) 2006-2023 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -/* x509v3.h for openSSL */ - -#ifndef WOLFSSL_x509v3_H -#define WOLFSSL_x509v3_H - -#include -#include -#include -#include -#include - -#ifdef __cplusplus - extern "C" { -#endif - -#if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL) - -#define EXFLAG_KUSAGE 0x2 -#define EXFLAG_XKUSAGE 0x4 - -#define KU_DIGITAL_SIGNATURE KEYUSE_DIGITAL_SIG -#define KU_NON_REPUDIATION KEYUSE_CONTENT_COMMIT -#define KU_KEY_ENCIPHERMENT KEYUSE_KEY_ENCIPHER -#define KU_DATA_ENCIPHERMENT KEYUSE_DATA_ENCIPHER -#define KU_KEY_AGREEMENT KEYUSE_KEY_AGREE -#define KU_KEY_CERT_SIGN KEYUSE_KEY_CERT_SIGN -#define KU_CRL_SIGN KEYUSE_CRL_SIGN -#define KU_ENCIPHER_ONLY KEYUSE_ENCIPHER_ONLY -#define KU_DECIPHER_ONLY KEYUSE_DECIPHER_ONLY - -#define XKU_SSL_SERVER 0x1 -#define XKU_SSL_CLIENT 0x2 -#define XKU_SMIME 0x4 -#define XKU_CODE_SIGN 0x8 -#define XKU_SGC 0x10 -#define XKU_OCSP_SIGN 0x20 -#define XKU_TIMESTAMP 0x40 -#define XKU_DVCS 0x80 -#define XKU_ANYEKU 0x100 - -#define X509_PURPOSE_SSL_CLIENT 0 -#define X509_PURPOSE_SSL_SERVER 1 - -#define NS_SSL_CLIENT WC_NS_SSL_CLIENT -#define NS_SSL_SERVER WC_NS_SSL_SERVER - -/* Forward reference */ - -#if defined(OPENSSL_VERSION_NUMBER) && OPENSSL_VERSION_NUMBER >= 0x0090801fL -typedef void *(*X509V3_EXT_D2I)(void *, const unsigned char **, long); -#else -typedef void *(*X509V3_EXT_D2I)(void *, unsigned char **, long); -#endif -typedef int (*X509V3_EXT_I2D) (void *, unsigned char **); -typedef STACK_OF(CONF_VALUE) *(*X509V3_EXT_I2V) ( - struct WOLFSSL_v3_ext_method *method, - void *ext, STACK_OF(CONF_VALUE) *extlist); -typedef char *(*X509V3_EXT_I2S)(struct WOLFSSL_v3_ext_method *method, void *ext); -typedef int (*X509V3_EXT_I2R) (struct WOLFSSL_v3_ext_method *method, - void *ext, BIO *out, int indent); -typedef struct WOLFSSL_v3_ext_method X509V3_EXT_METHOD; - -struct WOLFSSL_v3_ext_method { - int ext_nid; - int ext_flags; - void *usr_data; - X509V3_EXT_D2I d2i; - X509V3_EXT_I2D i2d; - X509V3_EXT_I2V i2v; - X509V3_EXT_I2S i2s; - X509V3_EXT_I2R i2r; -}; - -struct WOLFSSL_X509_EXTENSION { - WOLFSSL_ASN1_OBJECT *obj; - WOLFSSL_ASN1_BOOLEAN crit; - ASN1_OCTET_STRING value; /* DER format of extension */ - WOLFSSL_v3_ext_method ext_method; - WOLFSSL_STACK* ext_sk; /* For extension specific data */ -}; - -#define WOLFSSL_ASN1_BOOLEAN int -#define GEN_OTHERNAME 0 -#define GEN_EMAIL 1 -#define GEN_DNS 2 -#define GEN_X400 3 -#define GEN_DIRNAME 4 -#define GEN_EDIPARTY 5 -#define GEN_URI 6 -#define GEN_IPADD 7 -#define GEN_RID 8 -#define GEN_IA5 9 - -#define GENERAL_NAME WOLFSSL_GENERAL_NAME - -#define X509V3_CTX WOLFSSL_X509V3_CTX - -#define CTX_TEST 0x1 - -typedef struct WOLFSSL_AUTHORITY_KEYID AUTHORITY_KEYID; -typedef struct WOLFSSL_BASIC_CONSTRAINTS BASIC_CONSTRAINTS; -typedef struct WOLFSSL_ACCESS_DESCRIPTION ACCESS_DESCRIPTION; -typedef WOLF_STACK_OF(WOLFSSL_ACCESS_DESCRIPTION) WOLFSSL_AUTHORITY_INFO_ACCESS; - -WOLFSSL_API WOLFSSL_BASIC_CONSTRAINTS* wolfSSL_BASIC_CONSTRAINTS_new(void); -WOLFSSL_API void wolfSSL_BASIC_CONSTRAINTS_free(WOLFSSL_BASIC_CONSTRAINTS *bc); -WOLFSSL_API WOLFSSL_AUTHORITY_KEYID* wolfSSL_AUTHORITY_KEYID_new(void); -WOLFSSL_API void wolfSSL_AUTHORITY_KEYID_free(WOLFSSL_AUTHORITY_KEYID *id); -#if defined(OPENSSL_VERSION_NUMBER) && OPENSSL_VERSION_NUMBER >= 0x10100000L -WOLFSSL_API const WOLFSSL_v3_ext_method* wolfSSL_X509V3_EXT_get( - WOLFSSL_X509_EXTENSION* ex); -#else -WOLFSSL_API WOLFSSL_v3_ext_method* wolfSSL_X509V3_EXT_get( - WOLFSSL_X509_EXTENSION* ex); -#endif -WOLFSSL_API void* wolfSSL_X509V3_EXT_d2i(WOLFSSL_X509_EXTENSION* ex); -WOLFSSL_API char* wolfSSL_i2s_ASN1_STRING(WOLFSSL_v3_ext_method *method, - const WOLFSSL_ASN1_STRING *s); -WOLFSSL_API int wolfSSL_X509V3_EXT_print(WOLFSSL_BIO *out, - 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); -WOLFSSL_API WOLFSSL_ASN1_STRING* wolfSSL_a2i_IPADDRESS(const char* ipa); - -#define BASIC_CONSTRAINTS_free wolfSSL_BASIC_CONSTRAINTS_free -#define AUTHORITY_KEYID_free wolfSSL_AUTHORITY_KEYID_free -#define SSL_CTX_get_cert_store(x) wolfSSL_CTX_get_cert_store ((WOLFSSL_CTX*) (x)) -#define ASN1_INTEGER WOLFSSL_ASN1_INTEGER -#define ASN1_OCTET_STRING WOLFSSL_ASN1_STRING -#define X509V3_EXT_get wolfSSL_X509V3_EXT_get -#define X509V3_EXT_d2i wolfSSL_X509V3_EXT_d2i -#define X509V3_EXT_add_nconf wolfSSL_X509V3_EXT_add_nconf -#ifndef NO_WOLFSSL_STUB -#define X509V3_parse_list(...) NULL -#endif -#define i2s_ASN1_OCTET_STRING wolfSSL_i2s_ASN1_STRING -#define a2i_IPADDRESS wolfSSL_a2i_IPADDRESS -#define X509V3_EXT_print wolfSSL_X509V3_EXT_print -#define X509V3_EXT_conf_nid wolfSSL_X509V3_EXT_conf_nid -#define X509V3_set_ctx wolfSSL_X509V3_set_ctx -#ifndef NO_WOLFSSL_STUB -#define X509V3_set_nconf(...) WC_DO_NOTHING -#define X509V3_EXT_cleanup(...) WC_DO_NOTHING -#endif -#define X509V3_set_ctx_test(ctx) wolfSSL_X509V3_set_ctx(ctx, NULL, NULL, NULL, NULL, CTX_TEST) -#define X509V3_set_ctx_nodb wolfSSL_X509V3_set_ctx_nodb -#define X509v3_get_ext_count wolfSSL_sk_num - -#endif /* OPENSSL_EXTRA || OPENSSL_EXTRA_X509_SMALL */ - -#ifdef __cplusplus -} -#endif - -#endif