Changeset 464 for azure_iot_hub_f767zi/trunk/wolfssl-4.7.0/wolfssl
- Timestamp:
- Jun 22, 2021, 9:00:19 PM (3 years ago)
- Location:
- azure_iot_hub_f767zi/trunk/wolfssl-4.7.0
- Files:
-
- 2 added
- 52 edited
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
azure_iot_hub_f767zi/trunk/wolfssl-4.7.0/wolfssl/error-ssl.h
r457 r464 168 168 SSL_SHUTDOWN_ALREADY_DONE_E = -437, /* Shutdown called redundantly */ 169 169 TLS13_SECRET_CB_E = -438, /* TLS1.3 secret Cb fcn failure */ 170 DTLS_SIZE_ERROR = -439, /* Trying to send too much data */ 171 NO_CERT_ERROR = -440, /* TLS1.3 - no cert set error */ 172 APP_DATA_READY = -441, /* DTLS1.2 application data ready for read */ 170 173 171 174 /* add strings to wolfSSL_ERR_reason_error_string in internal.c !!!!! */ -
azure_iot_hub_f767zi/trunk/wolfssl-4.7.0/wolfssl/internal.h
r457 r464 73 73 #include <wolfssl/wolfcrypt/sha256.h> 74 74 #endif 75 #if defined(WOLFSSL_SHA384) 76 #include <wolfssl/wolfcrypt/sha512.h> 77 #endif 75 78 #ifdef HAVE_OCSP 76 79 #include <wolfssl/ocsp.h> … … 111 114 #ifdef HAVE_CURVE448 112 115 #include <wolfssl/wolfcrypt/curve448.h> 116 #endif 117 #ifndef WOLFSSL_NO_DEF_TICKET_ENC_CB 118 #if defined(HAVE_CHACHA) && defined(HAVE_POLY1305) && \ 119 !defined(WOLFSSL_TICKET_ENC_AES128_GCM) && \ 120 !defined(WOLFSSL_TICKET_ENC_AES256_GCM) 121 #include <wolfssl/wolfcrypt/chacha20_poly1305.h> 122 #else 123 #include <wolfssl/wolfcrypt/aes.h> 124 #endif 113 125 #endif 114 126 … … 143 155 /* do nothing, just don't pick Unix */ 144 156 #elif defined(FREERTOS) || defined(FREERTOS_TCP) || defined(WOLFSSL_SAFERTOS) 157 /* do nothing */ 158 #elif defined(RTTHREAD) 145 159 /* do nothing */ 146 160 #elif defined(EBSNET) … … 184 198 #else 185 199 #ifndef SINGLE_THREADED 186 #define WOLFSSL_PTHREADS 187 #include <pthread.h> 200 #if defined(WOLFSSL_LINUXKM) 201 #define WOLFSSL_KTHREADS 202 #include <linux/kthread.h> 203 #elif defined(WOLFSSL_USER_MUTEX) 204 /* do nothing */ 205 #else 206 #define WOLFSSL_PTHREADS 207 #include <pthread.h> 208 #endif 188 209 #endif 189 210 #if defined(OPENSSL_EXTRA) && !defined(NO_FILESYSTEM) 190 #include <unistd.h> /* for close of BIO */ 211 #ifdef FUSION_RTOS 212 #include <fclunistd.h> 213 #else 214 #include <unistd.h> /* for close of BIO */ 215 #endif 191 216 #endif 192 217 #endif … … 859 884 #if defined(BUILD_TLS_RSA_WITH_AES_128_GCM_SHA256) || \ 860 885 defined(BUILD_TLS_DHE_RSA_WITH_AES_128_GCM_SHA256) || \ 886 defined(BUILD_TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) || \ 861 887 defined(BUILD_TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256) || \ 862 888 defined(BUILD_TLS_PSK_WITH_AES_128_GCM_SHA256) || \ … … 864 890 defined(BUILD_TLS_RSA_WITH_AES_256_GCM_SHA384) || \ 865 891 defined(BUILD_TLS_DHE_RSA_WITH_AES_256_GCM_SHA384) || \ 892 defined(BUILD_TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) || \ 866 893 defined(BUILD_TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384) || \ 867 894 defined(BUILD_TLS_PSK_WITH_AES_256_GCM_SHA384) || \ … … 907 934 #endif 908 935 909 #if defined(NO_AES) || defined(NO_AES_DECRYPT)936 #if defined(NO_AES) || !defined(HAVE_AES_DECRYPT) 910 937 #define AES_BLOCK_SIZE 16 911 938 #undef BUILD_AES … … 1150 1177 #ifndef WOLFSSL_MAX_DHKEY_BITS 1151 1178 #if (defined(USE_FAST_MATH) && defined(FP_MAX_BITS) && FP_MAX_BITS >= 16384) 1152 #define WOLFSSL_MAX_DHKEY_BITS 81921179 #define WOLFSSL_MAX_DHKEY_BITS (FP_MAX_BITS / 2) 1153 1180 #else 1154 1181 #define WOLFSSL_MAX_DHKEY_BITS 4096 … … 1166 1193 /* max psk identity/hint supported */ 1167 1194 #if defined(WOLFSSL_TLS13) 1168 #define MAX_PSK_ID_LEN 256 1195 /* OpenSSL has a 1472 byte sessiont ticket */ 1196 #define MAX_PSK_ID_LEN 1536 1169 1197 #else 1170 1198 #define MAX_PSK_ID_LEN 128 … … 1175 1203 /* maximum early data size */ 1176 1204 #define MAX_EARLY_DATA_SZ 4096 1205 #endif 1206 1207 #ifndef WOLFSSL_MAX_RSA_BITS 1208 #if (defined(USE_FAST_MATH) && defined(FP_MAX_BITS) && FP_MAX_BITS >= 16384) 1209 #define WOLFSSL_MAX_RSA_BITS (FP_MAX_BITS / 2) 1210 #else 1211 #define WOLFSSL_MAX_RSA_BITS 4096 1212 #endif 1213 #endif 1214 #if (WOLFSSL_MAX_RSA_BITS % 8) 1215 #error RSA maximum bit size must be multiple of 8 1177 1216 #endif 1178 1217 … … 1197 1236 TLSv1_3_MINOR = 4, /* TLSv1_3 minor version number */ 1198 1237 TLS_DRAFT_MAJOR = 0x7f, /* Draft TLS major version number */ 1199 #ifdef WOLFSSL_TLS13_DRAFT1200 #ifdef WOLFSSL_TLS13_DRAFT_181201 TLS_DRAFT_MINOR = 0x12, /* Minor version number of TLS draft */1202 #elif defined(WOLFSSL_TLS13_DRAFT_22)1203 TLS_DRAFT_MINOR = 0x16, /* Minor version number of TLS draft */1204 #elif defined(WOLFSSL_TLS13_DRAFT_23)1205 TLS_DRAFT_MINOR = 0x17, /* Minor version number of TLS draft */1206 #elif defined(WOLFSSL_TLS13_DRAFT_26)1207 TLS_DRAFT_MINOR = 0x1a, /* Minor version number of TLS draft */1208 #else1209 TLS_DRAFT_MINOR = 0x1c, /* Minor version number of TLS draft */1210 #endif1211 #endif1212 1238 OLD_HELLO_ID = 0x01, /* SSLv2 Client Hello Indicator */ 1213 1239 INVALID_BYTE = 0xff, /* Used to initialize cipher specs values */ … … 1219 1245 /* pre RSA and all master */ 1220 1246 #if defined(WOLFSSL_MYSQL_COMPATIBLE) || \ 1221 (defined(USE_FAST_MATH) && defined(FP_MAX_BITS) && FP_MAX_BITS > 8192)1247 (defined(USE_FAST_MATH) && defined(FP_MAX_BITS) && FP_MAX_BITS >= 16384) 1222 1248 #ifndef NO_PSK 1223 ENCRYPT_LEN = 1024 + MAX_PSK_ID_LEN + 2, /* 8192 bit static buffer */1249 ENCRYPT_LEN = (FP_MAX_BITS / 2 / 8) + MAX_PSK_ID_LEN + 2, 1224 1250 #else 1225 1251 ENCRYPT_LEN = 1024, /* allow 8192 bit static buffer */ … … 1345 1371 MAX_SYM_KEY_SIZE = AES_256_KEY_SIZE, 1346 1372 #else 1347 MAX_SYM_KEY_SIZE = WC_MAX_SYM_KEY_SIZE, 1348 #endif 1349 1350 #ifdef HAVE_SELFTEST 1373 #if defined(HAVE_NULL_CIPHER) && defined(WOLFSSL_TLS13) 1374 #if defined(WOLFSSL_SHA384) && WC_MAX_SYM_KEY_SIZE < 48 1375 MAX_SYM_KEY_SIZE = WC_SHA384_DIGEST_SIZE, 1376 #elif !defined(NO_SHA256) && WC_MAX_SYM_KEY_SIZE < 32 1377 MAX_SYM_KEY_SIZE = WC_SHA256_DIGEST_SIZE, 1378 #else 1379 MAX_SYM_KEY_SIZE = WC_MAX_SYM_KEY_SIZE, 1380 #endif 1381 #else 1382 MAX_SYM_KEY_SIZE = WC_MAX_SYM_KEY_SIZE, 1383 #endif 1384 #endif 1385 1386 #if defined(HAVE_SELFTEST) && \ 1387 (!defined(HAVE_SELFTEST_VERSION) || (HAVE_SELFTEST_VERSION < 2)) 1351 1388 #ifndef WOLFSSL_AES_KEY_SIZE_ENUM 1352 1389 #define WOLFSSL_AES_KEY_SIZE_ENUM … … 1419 1456 1420 1457 #ifndef NO_RSA 1421 MAX_CERT_VERIFY_SZ = 4096 / 8, /* max RSA - default 4096-bits */1458 MAX_CERT_VERIFY_SZ = WOLFSSL_MAX_RSA_BITS / 8, /* max RSA bytes */ 1422 1459 #elif defined(HAVE_ECC) 1423 1460 MAX_CERT_VERIFY_SZ = ECC_MAX_SIG_SIZE, /* max ECC */ … … 1492 1529 /* number of items in the signature algo list */ 1493 1530 #ifndef WOLFSSL_MAX_SIGALGO 1494 #define WOLFSSL_MAX_SIGALGO 3 21531 #define WOLFSSL_MAX_SIGALGO 36 1495 1532 #endif 1496 1533 … … 1562 1599 #endif 1563 1600 1601 #if !defined(WOLFSSL_NO_DEF_TICKET_ENC_CB) && !defined(WOLFSSL_NO_SERVER) 1602 /* Check chosen encryption is available. */ 1603 #if !(defined(HAVE_CHACHA) && defined(HAVE_POLY1305)) && \ 1604 defined(WOLFSSL_TICKET_ENC_CHACHA20_POLY1305) 1605 #error "ChaCha20-Poly1305 not availble for default ticket encryption" 1606 #endif 1607 #if !defined(HAVE_AESGCM) && (defined(WOLFSSL_TICKET_ENC_AES128_GCM) || \ 1608 defined(WOLFSSL_TICKET_ENC_AES256_GCM)) 1609 #error "AES-GCM not availble for default ticket encryption" 1610 #endif 1611 1612 #ifndef WOLFSSL_TICKET_KEY_LIFETIME 1613 /* Default lifetime is 1 hour from issue of first ticket with key. */ 1614 #define WOLFSSL_TICKET_KEY_LIFETIME (60 * 60) 1615 #endif 1616 #if WOLFSSL_TICKET_KEY_LIFETIME <= SESSION_TICKET_HINT_DEFAULT 1617 #error "Ticket Key lifetime must be longer than ticket life hint." 1618 #endif 1619 #endif 1620 1564 1621 1565 1622 /* don't use extra 3/4k stack space unless need to */ … … 1580 1637 SERVER_ENCRYPTED_EXTENSIONS_COMPLETE, 1581 1638 SERVER_CERT_COMPLETE, 1639 SERVER_CERT_VERIFY_COMPLETE, 1582 1640 SERVER_KEYEXCHANGE_COMPLETE, 1583 1641 SERVER_HELLODONE_COMPLETE, … … 1612 1670 1613 1671 #ifdef WOLFSSL_SESSION_EXPORT 1614 WOLFSSL_LOCAL int wolfSSL_dtls_import_internal(WOLFSSL* ssl, byte* buf,1672 WOLFSSL_LOCAL int wolfSSL_dtls_import_internal(WOLFSSL* ssl, const byte* buf, 1615 1673 word32 sz); 1616 1674 WOLFSSL_LOCAL int wolfSSL_dtls_export_internal(WOLFSSL* ssl, byte* buf, … … 1619 1677 byte* buf, word32 sz); 1620 1678 WOLFSSL_LOCAL int wolfSSL_dtls_import_state_internal(WOLFSSL* ssl, 1621 1679 const byte* buf, word32 sz); 1622 1680 WOLFSSL_LOCAL int wolfSSL_send_session(WOLFSSL* ssl); 1623 1681 #endif … … 1647 1705 WOLFSSL_LOCAL int DoFinished(WOLFSSL* ssl, const byte* input, word32* inOutIdx, 1648 1706 word32 size, word32 totalSz, int sniff); 1707 #ifdef WOLFSSL_TLS13 1708 WOLFSSL_LOCAL int DoTls13Finished(WOLFSSL* ssl, const byte* input, word32* inOutIdx, 1709 word32 size, word32 totalSz, int sniff); 1710 #endif 1649 1711 WOLFSSL_LOCAL int DoApplicationData(WOLFSSL* ssl, byte* input, word32* inOutIdx); 1650 1712 /* TLS v1.3 needs these */ … … 1666 1728 WOLFSSL_LOCAL int PickHashSigAlgo(WOLFSSL* ssl, const byte* hashSigAlgo, 1667 1729 word32 hashSigAlgoSz); 1730 #ifdef WOLF_CRYPTO_CB 1731 WOLFSSL_LOCAL int CreateDevPrivateKey(void** pkey, byte* buffer, word32 length, 1732 int hsType, int label, int id, 1733 void* heap, int devId); 1734 #endif 1668 1735 WOLFSSL_LOCAL int DecodePrivateKey(WOLFSSL *ssl, word16* length); 1669 1736 #ifdef HAVE_PK_CALLBACKS … … 1678 1745 WOLFSSL_LOCAL int MatchDomainName(const char* pattern, int len, const char* str); 1679 1746 #ifndef NO_CERTS 1680 WOLFSSL_LOCAL int CheckAltNames(DecodedCert* dCert, char* domain); 1681 #ifdef OPENSSL_EXTRA 1682 WOLFSSL_LOCAL int CheckIPAddr(DecodedCert* dCert, char* ipasc); 1683 #endif 1747 WOLFSSL_LOCAL int CheckForAltNames(DecodedCert* dCert, const char* domain, int* checkCN); 1748 WOLFSSL_LOCAL int CheckIPAddr(DecodedCert* dCert, const char* ipasc); 1684 1749 #endif 1685 1750 WOLFSSL_LOCAL int CreateTicket(WOLFSSL* ssl); 1686 WOLFSSL_LOCAL int Hash OutputRaw(WOLFSSL* ssl, const byte* output, int sz);1751 WOLFSSL_LOCAL int HashRaw(WOLFSSL* ssl, const byte* output, int sz); 1687 1752 WOLFSSL_LOCAL int HashOutput(WOLFSSL* ssl, const byte* output, int sz, 1688 1753 int ivSz); 1689 1754 WOLFSSL_LOCAL int HashInput(WOLFSSL* ssl, const byte* input, int sz); 1690 #if defined(OPENSSL_ALL) || defined(HAVE_STUNNEL) || defined(WOLFSSL_NGINX) || defined(WOLFSSL_HAPROXY) 1755 1756 #ifdef HAVE_SNI 1757 #ifndef NO_WOLFSSL_SERVER 1691 1758 WOLFSSL_LOCAL int SNI_Callback(WOLFSSL* ssl); 1759 #endif 1692 1760 #endif 1693 1761 #ifdef WOLFSSL_TLS13 … … 1702 1770 word32* inOutIdx, word32 helloSz, 1703 1771 byte* extMsgType); 1772 WOLFSSL_LOCAL int RestartHandshakeHash(WOLFSSL* ssl); 1704 1773 #endif 1705 1774 int TimingPadVerify(WOLFSSL* ssl, const byte* input, int padLen, int t, … … 1830 1899 #define MAX_DESCRIPTION_SZ 255 1831 1900 #endif 1832 /* wolfSSL Cipher type just points back to SSL */1833 1901 struct WOLFSSL_CIPHER { 1834 1902 byte cipherSuite0; 1835 1903 byte cipherSuite; 1836 WOLFSSL* ssl;1904 const WOLFSSL* ssl; 1837 1905 #if defined(OPENSSL_ALL) || defined(WOLFSSL_QT) 1838 1906 char description[MAX_DESCRIPTION_SZ]; … … 1974 2042 VerifyCallback verifyCallback; /* Verify callback */ 1975 2043 #endif 1976 CallbackCACache caCacheCallback; /* CA cache addition callback */ 1977 CbMissingCRL cbMissingCRL; /* notify through cb of missing crl */ 1978 CbOCSPIO ocspIOCb; /* I/O callback for OCSP lookup */ 1979 CbOCSPRespFree ocspRespFreeCb; /* Frees OCSP Response from IO Cb */ 1980 wolfSSL_Mutex caLock; /* CA list lock */ 1981 byte crlEnabled; /* is CRL on ? */ 1982 byte crlCheckAll; /* always leaf, but all ? */ 1983 byte ocspEnabled; /* is OCSP on ? */ 1984 byte ocspCheckAll; /* always leaf, but all ? */ 1985 byte ocspSendNonce; /* send the OCSP nonce ? */ 1986 byte ocspUseOverrideURL; /* ignore cert's responder, override */ 1987 byte ocspStaplingEnabled; /* is OCSP Stapling on ? */ 2044 CallbackCACache caCacheCallback; /* CA cache addition callback */ 2045 CbMissingCRL cbMissingCRL; /* notify thru cb of missing crl */ 2046 CbOCSPIO ocspIOCb; /* I/O callback for OCSP lookup */ 2047 CbOCSPRespFree ocspRespFreeCb; /* Frees OCSP Response from IO Cb */ 2048 wolfSSL_Mutex caLock; /* CA list lock */ 2049 byte crlEnabled:1; /* is CRL on ? */ 2050 byte crlCheckAll:1; /* always leaf, but all ? */ 2051 byte ocspEnabled:1; /* is OCSP on ? */ 2052 byte ocspCheckAll:1; /* always leaf, but all ? */ 2053 byte ocspSendNonce:1; /* send the OCSP nonce ? */ 2054 byte ocspUseOverrideURL:1; /* ignore cert responder, override */ 2055 byte ocspStaplingEnabled:1; /* is OCSP Stapling on ? */ 2056 #if defined(HAVE_CERTIFICATE_STATUS_REQUEST) \ 2057 || defined(HAVE_CERTIFICATE_STATUS_REQUEST_V2) 2058 byte ocspMustStaple:1; /* server must respond with staple */ 2059 #endif 1988 2060 1989 2061 #ifndef NO_RSA … … 1993 2065 short minEccKeySz; /* minimum allowed ECC key size */ 1994 2066 #endif 2067 wolfSSL_Mutex refMutex; /* reference count mutex */ 2068 int refCount; /* reference count */ 1995 2069 }; 1996 2070 … … 2005 2079 2006 2080 #ifndef NO_CERTS 2007 #if !defined NOCERTS &&\ 2008 (!defined(NO_WOLFSSL_CLIENT) || !defined(WOLFSSL_NO_CLIENT_AUTH)) 2081 #if !defined(NO_WOLFSSL_CLIENT) || !defined(WOLFSSL_NO_CLIENT_AUTH) 2009 2082 typedef struct ProcPeerCertArgs { 2010 2083 buffer* certs; … … 2122 2195 #endif 2123 2196 #ifdef WOLFSSL_RENESAS_TSIP_TLS 2124 byte tsip_client_write_MAC_secret[TSIP_TLS_HMAC_KEY_INDEX_WORDSIZE]; 2125 byte tsip_server_write_MAC_secret[TSIP_TLS_HMAC_KEY_INDEX_WORDSIZE]; 2197 2198 tsip_hmac_sha_key_index_t tsip_client_write_MAC_secret; 2199 tsip_hmac_sha_key_index_t tsip_server_write_MAC_secret; 2200 2126 2201 #endif 2127 2202 } Keys; … … 2133 2208 2134 2209 typedef enum { 2210 #ifdef HAVE_SNI 2135 2211 TLSX_SERVER_NAME = 0x0000, /* a.k.a. SNI */ 2212 #endif 2136 2213 TLSX_MAX_FRAGMENT_LENGTH = 0x0001, 2137 2214 TLSX_TRUSTED_CA_KEYS = 0x0003, … … 2140 2217 TLSX_SUPPORTED_GROUPS = 0x000a, /* a.k.a. Supported Curves */ 2141 2218 TLSX_EC_POINT_FORMATS = 0x000b, 2142 #if !defined( WOLFSSL_NO_SIGALG)2143 TLSX_SIGNATURE_ALGORITHMS = 0x000d, 2219 #if !defined(NO_CERTS) && !defined(WOLFSSL_NO_SIGALG) 2220 TLSX_SIGNATURE_ALGORITHMS = 0x000d, /* HELLO_EXT_SIG_ALGO */ 2144 2221 #endif 2145 2222 TLSX_APPLICATION_LAYER_PROTOCOL = 0x0010, /* a.k.a. ALPN */ … … 2148 2225 TLSX_ENCRYPT_THEN_MAC = 0x0016, /* RFC 7366 */ 2149 2226 #endif 2227 TLSX_EXTENDED_MASTER_SECRET = 0x0017, /* HELLO_EXT_EXTMS */ 2150 2228 TLSX_QUANTUM_SAFE_HYBRID = 0x0018, /* a.k.a. QSH */ 2151 2229 TLSX_SESSION_TICKET = 0x0023, … … 2158 2236 #endif 2159 2237 TLSX_SUPPORTED_VERSIONS = 0x002b, 2238 #ifdef WOLFSSL_SEND_HRR_COOKIE 2160 2239 TLSX_COOKIE = 0x002c, 2240 #endif 2161 2241 #if defined(HAVE_SESSION_TICKET) || !defined(NO_PSK) 2162 2242 TLSX_PSK_KEY_EXCHANGE_MODES = 0x002d, … … 2165 2245 TLSX_POST_HANDSHAKE_AUTH = 0x0031, 2166 2246 #endif 2167 #if defined(WOLFSSL_TLS13_DRAFT_18) || defined(WOLFSSL_TLS13_DRAFT_22) 2168 TLSX_KEY_SHARE = 0x0028, 2169 #else 2247 #if !defined(NO_CERTS) && !defined(WOLFSSL_NO_SIGALG) 2170 2248 TLSX_SIGNATURE_ALGORITHMS_CERT = 0x0032, 2249 #endif 2171 2250 TLSX_KEY_SHARE = 0x0033, 2172 #endif2173 2251 #endif 2174 2252 TLSX_RENEGOTIATION_INFO = 0xff01 … … 2312 2390 OcspRequest ocsp; 2313 2391 } request; 2314 #if defined(WOLFSSL_TLS13) && !defined(NO_WOLFSSL_SERVER)2392 #if defined(WOLFSSL_TLS13) 2315 2393 buffer response; 2316 2394 #endif … … 2429 2507 } SessionTicket; 2430 2508 2509 #if !defined(WOLFSSL_NO_DEF_TICKET_ENC_CB) && !defined(WOLFSSL_NO_SERVER) 2510 2511 /* Data passed to default SessionTicket enc/dec callback. */ 2512 typedef struct TicketEncCbCtx { 2513 /* Name for this context. */ 2514 byte name[WOLFSSL_TICKET_NAME_SZ]; 2515 /* Current keys - current and next. */ 2516 byte key[2][WOLFSSL_TICKET_KEY_SZ]; 2517 /* Expirary date of keys. */ 2518 word32 expirary[2]; 2519 /* Random number generator to use for generating name, keys and IV. */ 2520 WC_RNG rng; 2521 #ifndef SINGLE_THREADED 2522 /* Mutex for access to changing keys. */ 2523 wolfSSL_Mutex mutex; 2524 #endif 2525 /* Pointer back to SSL_CTX. */ 2526 WOLFSSL_CTX* ctx; 2527 } TicketEncCbCtx; 2528 2529 #endif /* !WOLFSSL_NO_DEF_TICKET_ENC_CB && !WOLFSSL_NO_SERVER */ 2530 2431 2531 WOLFSSL_LOCAL int TLSX_UseSessionTicket(TLSX** extensions, 2432 2532 SessionTicket* ticket, void* heap); … … 2512 2612 2513 2613 #if defined(HAVE_SESSION_TICKET) || !defined(NO_PSK) 2514 #ifndef WOLFSSL_TLS13_DRAFT_182515 2614 /* Ticket nonce - for deriving PSK. 2516 2615 * Length allowed to be: 1..255. Only support 4 bytes. … … 2520 2619 byte data[MAX_TICKET_NONCE_SZ]; 2521 2620 } TicketNonce; 2522 #endif2523 2621 2524 2622 /* The PreSharedKey extension information - entry in a linked list. */ … … 2576 2674 }; 2577 2675 2676 WOLFSSL_LOCAL int DeriveEarlySecret(WOLFSSL* ssl); 2677 WOLFSSL_LOCAL int DeriveHandshakeSecret(WOLFSSL* ssl); 2678 WOLFSSL_LOCAL int DeriveTls13Keys(WOLFSSL* ssl, int secret, int side, int store); 2679 WOLFSSL_LOCAL int DeriveMasterSecret(WOLFSSL* ssl); 2680 WOLFSSL_LOCAL int DeriveResumptionPSK(WOLFSSL* ssl, byte* nonce, byte nonceLen, byte* secret); 2681 WOLFSSL_LOCAL int DeriveResumptionSecret(WOLFSSL* ssl, byte* key); 2682 2683 WOLFSSL_LOCAL int Tls13_Exporter(WOLFSSL* ssl, unsigned char *out, size_t outLen, 2684 const char *label, size_t labelLen, 2685 const unsigned char *context, size_t contextLen); 2686 2578 2687 /* The key update request values for KeyUpdate message. */ 2579 2688 enum KeyUpdateRequest { … … 2592 2701 #endif 2593 2702 2703 #ifdef WOLFSSL_STATIC_EPHEMERAL 2704 /* contains static ephemeral keys */ 2705 typedef struct { 2706 #ifndef NO_DH 2707 DerBuffer* dhKey; 2708 #endif 2709 #ifdef HAVE_ECC 2710 DerBuffer* ecKey; 2711 #endif 2712 } StaticKeyExchangeInfo_t; 2713 #endif 2714 2715 2594 2716 /* wolfSSL context type */ 2595 2717 struct WOLFSSL_CTX { … … 2609 2731 DerBuffer* certChain; 2610 2732 /* chain after self, in DER, with leading size for each cert */ 2611 #if defined(OPENSSL_EXTRA) || defined(WOLFSSL_EXTRA) 2733 #if defined(OPENSSL_EXTRA) || defined(WOLFSSL_EXTRA) || defined(HAVE_LIGHTY) 2612 2734 WOLF_STACK_OF(WOLFSSL_X509_NAME)* ca_names; 2613 2735 #endif … … 2621 2743 #endif 2622 2744 DerBuffer* privateKey; 2623 byte privateKeyType: 7;2745 byte privateKeyType:6; 2624 2746 byte privateKeyId:1; 2747 byte privateKeyLabel:1; 2625 2748 int privateKeySz; 2626 2749 int privateKeyDevId; … … 2656 2779 byte haveEMS:1; /* have extended master secret extension */ 2657 2780 byte useClientOrder:1; /* Use client's cipher preference order */ 2781 #if defined(HAVE_SESSION_TICKET) 2782 byte noTicketTls12:1; /* TLS 1.2 server won't send ticket */ 2783 #endif 2658 2784 #ifdef WOLFSSL_TLS13 2659 byte noTicketTls13:1; /* Server won't create new Ticket */2785 byte noTicketTls13:1; /* TLS 1.3 Server won't create new Ticket */ 2660 2786 byte noPskDheKe:1; /* Don't use (EC)DHE with PSK */ 2661 2787 #endif … … 2700 2826 short minEccKeySz; /* minimum ECC key size */ 2701 2827 #endif 2702 #if defined(OPENSSL_EXTRA) || defined(HAVE_WEBSERVER)2703 2828 unsigned long mask; /* store SSL_OP_ flags */ 2704 #endif2705 2829 #ifdef OPENSSL_EXTRA 2706 2830 byte sessionCtx[ID_LEN]; /* app session context ID */ … … 2745 2869 wc_psk_server_tls13_callback server_psk_tls13_cb; /* server callback */ 2746 2870 #endif 2871 void* psk_ctx; 2747 2872 char server_hint[MAX_PSK_ID_LEN + NULL_TERM_LEN]; 2748 2873 #endif /* HAVE_SESSION_TICKET || !NO_PSK */ … … 2761 2886 void* passwd_userdata; 2762 2887 #endif 2763 #if defined(OPENSSL_EXTRA) || defined(HAVE_WEBSERVER) 2888 #if defined(OPENSSL_EXTRA) || defined(HAVE_WEBSERVER) || defined(WOLFSSL_WPAS_SMALL) 2764 2889 WOLFSSL_X509_STORE x509_store; /* points to ctx->cm */ 2765 2890 WOLFSSL_X509_STORE* x509_store_pt; /* take ownership of external store */ … … 2770 2895 WOLFSSL_CRYPTO_EX_DATA ex_data; 2771 2896 #endif 2772 #if defined(HAVE_ALPN) && (defined(OPENSSL_ALL) || defined(WOLFSSL_NGINX) || defined(WOLFSSL_HAPROXY) )2897 #if defined(HAVE_ALPN) && (defined(OPENSSL_ALL) || defined(WOLFSSL_NGINX) || defined(WOLFSSL_HAPROXY) || defined(HAVE_LIGHTY)) 2773 2898 CallbackALPNSelect alpnSelect; 2774 2899 void* alpnSelectArg; 2775 2900 #endif 2776 #if defined(OPENSSL_ALL) || (defined(OPENSSL_EXTRA) && (defined(HAVE_STUNNEL) || \ 2777 defined(WOLFSSL_NGINX) || defined(HAVE_LIGHTY) || \ 2778 defined(WOLFSSL_HAPROXY) || defined(WOLFSSL_OPENSSH) )) 2901 #ifdef HAVE_SNI 2779 2902 CallbackSniRecv sniRecvCb; 2780 2903 void* sniRecvCbArg; … … 2805 2928 void* ticketEncCtx; /* session encrypt context */ 2806 2929 int ticketHint; /* ticket hint in seconds */ 2930 #ifndef WOLFSSL_NO_DEF_TICKET_ENC_CB 2931 TicketEncCbCtx ticketKeyCtx; 2932 #endif 2807 2933 #endif 2808 2934 #ifdef HAVE_SUPPORTED_CURVES … … 2866 2992 #endif /* HAVE_PK_CALLBACKS */ 2867 2993 #ifdef HAVE_WOLF_EVENT 2868 2994 WOLF_EVENT_QUEUE event_queue; 2869 2995 #endif /* HAVE_WOLF_EVENT */ 2870 2996 #ifdef HAVE_EXT_CACHE 2871 2872 2873 2997 WOLFSSL_SESSION*(*get_sess_cb)(WOLFSSL*, unsigned char*, int, int*); 2998 int (*new_sess_cb)(WOLFSSL*, WOLFSSL_SESSION*); 2999 void (*rem_sess_cb)(WOLFSSL_CTX*, WOLFSSL_SESSION*); 2874 3000 #endif 2875 3001 #if defined(OPENSSL_EXTRA) && defined(WOLFCRYPT_HAVE_SRP) && !defined(NO_SHA256) 2876 Srp* srp; /* TLS Secure Remote Password Protocol*/ 2877 byte* srp_password; 3002 Srp* srp; /* TLS Secure Remote Password Protocol*/ 3003 byte* srp_password; 3004 #endif 3005 #ifdef WOLFSSL_STATIC_EPHEMERAL 3006 StaticKeyExchangeInfo_t staticKE; 2878 3007 #endif 2879 3008 }; … … 2940 3069 }; 2941 3070 2942 2943 3071 /* Supported Authentication Schemes */ 2944 3072 enum SignatureAlgorithm { … … 2999 3127 #endif 3000 3128 3129 #if defined(WOLFSSL_DTLS) && defined(HAVE_SECURE_RENEGOTIATION) 3130 enum CipherSrc { 3131 KEYS_NOT_SET = 0, 3132 KEYS, /* keys from ssl->keys are loaded */ 3133 SCR /* keys from ssl->secure_renegotiation->tmp_keys are loaded */ 3134 }; 3135 #endif 3001 3136 3002 3137 /* cipher for now */ … … 3038 3173 byte state; 3039 3174 byte setup; /* have we set it up flag for detection */ 3175 #if defined(WOLFSSL_DTLS) && defined(HAVE_SECURE_RENEGOTIATION) 3176 enum CipherSrc src; /* DTLS uses this to determine which keys 3177 * are currently loaded */ 3178 #endif 3040 3179 } Ciphers; 3041 3180 … … 3139 3278 byte sessionCtxSz; /* sessionCtx length */ 3140 3279 byte sessionCtx[ID_LEN]; /* app specific context id */ 3280 wolfSSL_Mutex refMutex; /* ref count mutex */ 3281 int refCount; /* reference count */ 3141 3282 #endif 3142 3283 #ifdef WOLFSSL_TLS13 … … 3147 3288 word32 ticketSeen; /* Time ticket seen (ms) */ 3148 3289 word32 ticketAdd; /* Added by client */ 3149 #ifndef WOLFSSL_TLS13_DRAFT_183150 3290 TicketNonce ticketNonce; /* Nonce used to derive PSK */ 3151 #endif3152 3291 #endif 3153 3292 #ifdef WOLFSSL_EARLY_DATA … … 3161 3300 byte isDynamic; 3162 3301 #endif 3163 #if def HAVE_EXT_CACHE3302 #if defined(HAVE_EXT_CACHE) || defined(OPENSSL_EXTRA) 3164 3303 byte isAlloced; 3165 3304 #endif … … 3167 3306 WOLFSSL_CRYPTO_EX_DATA ex_data; 3168 3307 #endif 3308 byte side; /* Either WOLFSSL_CLIENT_END or 3309 WOLFSSL_SERVER_END */ 3169 3310 }; 3170 3311 3171 3312 3172 WOLFSSL_LOCAL 3173 WOLFSSL_SESSION* GetSession(WOLFSSL*, byte*, byte); 3174 WOLFSSL_LOCAL 3175 int SetSession(WOLFSSL*, WOLFSSL_SESSION*); 3176 3177 typedef int (*hmacfp) (WOLFSSL*, byte*, const byte*, word32, int, int, int); 3313 WOLFSSL_LOCAL WOLFSSL_SESSION* GetSession(WOLFSSL*, byte*, byte); 3314 WOLFSSL_LOCAL int SetSession(WOLFSSL*, WOLFSSL_SESSION*); 3315 WOLFSSL_LOCAL void FreeSession(WOLFSSL_SESSION*, int); 3316 3317 typedef int (*hmacfp) (WOLFSSL*, byte*, const byte*, word32, int, int, int, int); 3178 3318 3179 3319 #ifndef NO_CLIENT_CACHE 3320 WOLFSSL_LOCAL 3180 3321 WOLFSSL_SESSION* GetSessionClient(WOLFSSL*, const byte*, int); 3181 3322 #endif … … 3265 3406 DerBuffer* certificate; /* WOLFSSL_CTX owns, unless we own */ 3266 3407 DerBuffer* key; /* WOLFSSL_CTX owns, unless we own */ 3267 byte keyType: 7; /* Type of key: RSA, ECC, Ed25519 */3408 byte keyType:6; /* Type of key: RSA, ECC, Ed25519 */ 3268 3409 byte keyId:1; /* Key data is an id not data */ 3410 byte keyLabel:1; /* Key data is a label not data */ 3269 3411 int keySz; /* Size of RSA key */ 3270 3412 int keyDevId; /* Device Id for key */ … … 3336 3478 wc_psk_server_tls13_callback server_psk_tls13_cb; /* server callback */ 3337 3479 #endif 3480 void* psk_ctx; 3338 3481 #endif /* NO_PSK */ 3339 #if defined(OPENSSL_EXTRA) || defined(HAVE_WEBSERVER) 3482 #if defined(OPENSSL_EXTRA) || defined(HAVE_WEBSERVER) || defined(WOLFSSL_WPAS_SMALL) 3340 3483 unsigned long mask; /* store SSL_OP_ flags */ 3341 3484 #endif … … 3399 3542 word16 useTicket:1; /* Use Ticket not session cache */ 3400 3543 word16 rejectTicket:1; /* Callback rejected ticket */ 3544 word16 noTicketTls12:1; /* TLS 1.2 server won't send ticket */ 3401 3545 #ifdef WOLFSSL_TLS13 3402 3546 word16 noTicketTls13:1; /* Server won't create new Ticket */ … … 3511 3655 byte secret[SECRET_LEN]; 3512 3656 #endif 3657 #ifdef HAVE_KEYING_MATERIAL 3658 byte exporterSecret[WC_MAX_DIGEST_SIZE]; 3659 #endif 3513 3660 byte masterSecret[SECRET_LEN]; 3514 3661 #if defined(WOLFSSL_RENESAS_TSIP_TLS) && \ … … 3549 3696 #if defined(OPENSSL_ALL) 3550 3697 wolf_sk_compare_cb comp; 3698 wolf_sk_hash_cb hash_fn; 3699 unsigned long hash; 3551 3700 #endif 3552 3701 … … 3560 3709 WOLFSSL_ACCESS_DESCRIPTION* access; 3561 3710 WOLFSSL_X509_EXTENSION* ext; 3711 #ifdef OPENSSL_EXTRA 3562 3712 WOLFSSL_CONF_VALUE* conf; 3713 #endif 3563 3714 void* generic; 3564 3715 char* string; … … 3577 3728 #if (defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL)) && \ 3578 3729 !defined(NO_ASN) 3579 DecodedName fullName; 3580 WOLFSSL_X509_NAME_ENTRY cnEntry; 3581 WOLFSSL_X509_NAME_ENTRY extra[MAX_NAME_ENTRIES]; /* extra entries added */ 3730 int entrySz; /* number of entries */ 3731 WOLFSSL_X509_NAME_ENTRY entry[MAX_NAME_ENTRIES]; /* all entries i.e. CN */ 3582 3732 WOLFSSL_X509* x509; /* x509 that struct belongs to */ 3583 3733 #endif /* OPENSSL_EXTRA */ 3584 #if defined(OPENSSL_ALL) || defined(WOLFSSL_NGINX) 3734 #if defined(OPENSSL_ALL) || defined(WOLFSSL_NGINX) || defined(HAVE_LIGHTY) 3585 3735 byte raw[ASN_NAME_MAX]; 3586 3736 int rawLen; 3587 3737 #endif 3738 void* heap; 3588 3739 }; 3589 3740 … … 3614 3765 #if defined(WOLFSSL_QT) || defined(OPENSSL_ALL) 3615 3766 WOLFSSL_STACK* ext_sk; /* Store X509_EXTENSIONS from wolfSSL_X509_get_ext */ 3767 WOLFSSL_STACK* ext_sk_full; /* Store X509_EXTENSIONS from wolfSSL_X509_get0_extensions */ 3616 3768 WOLFSSL_STACK* ext_d2i;/* Store d2i extensions from wolfSSL_X509_get_ext_d2i */ 3617 3769 #endif /* WOLFSSL_QT || OPENSSL_ALL */ 3618 #if def OPENSSL_EXTRA3770 #if defined(OPENSSL_EXTRA) || defined(WOLFSSL_WPAS_SMALL) 3619 3771 WOLFSSL_ASN1_INTEGER* serialNumber; /* Stores SN from wolfSSL_X509_get_serialNumber */ 3620 3772 #endif … … 3683 3835 byte authKeyIdSet:1; 3684 3836 byte authKeyIdCrit:1; 3837 byte issuerSet:1; 3685 3838 #endif /* OPENSSL_EXTRA || OPENSSL_EXTRA_X509_SMALL */ 3839 #ifdef WOLFSSL_CERT_REQ 3840 byte isCSR:1; 3841 #endif 3686 3842 byte serial[EXTERNAL_SERIAL_SIZE]; 3687 3843 char subjectCN[ASN_NAME_MAX]; /* common name short cut */ 3688 3844 #ifdef WOLFSSL_CERT_REQ 3845 #ifdef OPENSSL_ALL 3846 WOLFSSL_X509_ATTRIBUTE* challengePwAttr; 3847 #endif 3689 3848 char challengePw[CTC_NAME_SIZE]; /* for REQ certs */ 3690 3849 #endif … … 3695 3854 WOLFSSL_X509_PUBKEY key; 3696 3855 #endif 3697 byte issuerSet:1; 3856 #if defined(OPENSSL_ALL) || defined(KEEP_OUR_CERT) || defined(KEEP_PEER_CERT) || \ 3857 defined(SESSION_CERTS) 3858 byte notBeforeData[CTC_DATE_SIZE]; 3859 byte notAfterData[CTC_DATE_SIZE]; 3860 #endif 3698 3861 }; 3699 3862 … … 3731 3894 DtlsFrag* fragList; 3732 3895 word32 fragSz; /* Length of fragments received */ 3896 word16 epoch; /* Epoch that this message belongs to */ 3733 3897 word32 seq; /* Handshake sequence number */ 3734 3898 word32 sz; /* Length of whole message */ … … 3800 3964 3801 3965 3966 #ifndef WOLFSSL_NO_TLS12 3967 /* Persistable BuildMessage arguments */ 3968 typedef struct BuildMsgArgs { 3969 word32 digestSz; 3970 word32 sz; 3971 word32 pad; 3972 word32 idx; 3973 word32 headerSz; 3974 word16 size; 3975 word32 ivSz; /* TLSv1.1 IV */ 3976 byte* iv; 3977 } BuildMsgArgs; 3978 #endif 3979 3802 3980 #ifdef WOLFSSL_ASYNC_CRYPT 3803 3981 #define MAX_ASYNC_ARGS 18 … … 3808 3986 FreeArgsCb freeArgs; /* function pointer to cleanup args */ 3809 3987 word32 args[MAX_ASYNC_ARGS]; /* holder for current args */ 3988 BuildMsgArgs buildArgs; /* holder for current BuildMessage args */ 3810 3989 }; 3811 3990 #endif … … 3961 4140 word16 pssAlgo; 3962 4141 #ifdef WOLFSSL_TLS13 3963 #if !defined(WOLFSSL_TLS13_DRAFT_18) && !defined(WOLFSSL_TLS13_DRAFT_22)3964 4142 word16 certHashSigAlgoSz; /* SigAlgoCert ext length in bytes */ 3965 4143 byte certHashSigAlgo[WOLFSSL_MAX_SIGALGO]; /* cert sig/algo to 3966 4144 * offer */ 3967 #endif /* !WOLFSSL_TLS13_DRAFT_18 && !WOLFSSL_TLS13_DRAFT_22 */3968 4145 #endif 3969 4146 #ifdef HAVE_NTRU … … 4015 4192 int dtls_timeout_max; /* maximum timeout value */ 4016 4193 int dtls_timeout; /* current timeout value, changes */ 4194 #ifndef NO_ASN_TIME 4195 word32 dtls_start_timeout; 4196 #endif /* !NO_ASN_TIME */ 4017 4197 word32 dtls_tx_msg_list_sz; 4018 4198 word32 dtls_rx_msg_list_sz; … … 4105 4285 #ifdef HAVE_OCSP 4106 4286 void* ocspIOCtx; 4287 byte ocspProducedDate[MAX_DATE_SZ]; 4288 int ocspProducedDateFormat; 4107 4289 #ifdef OPENSSL_EXTRA 4108 4290 byte* ocspResp; … … 4192 4374 WOLFSSL_STACK* peerCertChain; /* Used in wolfSSL_get_peer_cert_chain */ 4193 4375 #endif 4376 #ifdef WOLFSSL_STATIC_EPHEMERAL 4377 StaticKeyExchangeInfo_t staticKE; 4378 #endif 4379 #if defined(OPENSSL_ALL) || defined(WOLFSSL_HAPROXY) 4380 /* Added in libest port: allow applications to get the 'tls-unique' Channel 4381 * Binding Type (https://tools.ietf.org/html/rfc5929#section-3). This is 4382 * used in the EST protocol to bind an enrollment to a TLS session through 4383 * 'proof-of-possession' (https://tools.ietf.org/html/rfc7030#section-3.4 4384 * and https://tools.ietf.org/html/rfc7030#section-3.5). */ 4385 byte clientFinished[TLS_FINISHED_SZ]; 4386 byte serverFinished[TLS_FINISHED_SZ]; 4387 #endif 4194 4388 }; 4195 4389 … … 4211 4405 WOLFSSL_CRL* crl, int verify); 4212 4406 4213 #ifdef OPENSSL_EXTRA 4214 WOLFSSL_LOCAL int CheckHostName(DecodedCert* dCert, char *domainName, 4407 WOLFSSL_LOCAL int CheckHostName(DecodedCert* dCert, const char *domainName, 4215 4408 size_t domainNameLen); 4216 #endif4217 4409 #endif 4218 4410 … … 4299 4491 4300 4492 4301 static const byte client[SIZEOF_SENDER ] = { 0x43, 0x4C, 0x4E, 0x54 };4302 static const byte server[SIZEOF_SENDER ] = { 0x53, 0x52, 0x56, 0x52 };4493 static const byte client[SIZEOF_SENDER+1] = { 0x43, 0x4C, 0x4E, 0x54, 0x00 }; /* CLNT */ 4494 static const byte server[SIZEOF_SENDER+1] = { 0x53, 0x52, 0x56, 0x52, 0x00 }; /* SRVR */ 4303 4495 4304 4496 static const byte tls_client[FINISHED_LABEL_SZ + 1] = "client finished"; … … 4323 4515 WOLFSSL_LOCAL int SendData(WOLFSSL*, const void*, int); 4324 4516 #ifdef WOLFSSL_TLS13 4325 #ifdef WOLFSSL_TLS13_DRAFT_184326 WOLFSSL_LOCAL int SendTls13HelloRetryRequest(WOLFSSL*);4327 #else4328 4517 WOLFSSL_LOCAL int SendTls13ServerHello(WOLFSSL*, byte); 4329 #endif4330 4518 #endif 4331 4519 WOLFSSL_LOCAL int SendCertificate(WOLFSSL*); … … 4357 4545 WOLFSSL_LOCAL int IsAtLeastTLSv1_2(const WOLFSSL* ssl); 4358 4546 WOLFSSL_LOCAL int IsAtLeastTLSv1_3(const ProtocolVersion pv); 4547 WOLFSSL_LOCAL int TLSv1_3_Capable(WOLFSSL* ssl); 4359 4548 4360 4549 WOLFSSL_LOCAL void FreeHandshakeResources(WOLFSSL* ssl); … … 4454 4643 #ifndef WOLFSSL_AEAD_ONLY 4455 4644 WOLFSSL_LOCAL int TLS_hmac(WOLFSSL* ssl, byte* digest, const byte* in, 4456 word32 sz, int padSz, int content, int verify );4645 word32 sz, int padSz, int content, int verify, int epochOrder); 4457 4646 #endif 4458 4647 #endif … … 4476 4665 WOLFSSL_LOCAL void DtlsMsgDelete(DtlsMsg*, void*); 4477 4666 WOLFSSL_LOCAL void DtlsMsgListDelete(DtlsMsg*, void*); 4478 WOLFSSL_LOCAL int DtlsMsgSet(DtlsMsg*, word32, const byte*, byte, 4667 WOLFSSL_LOCAL void DtlsTxMsgListClean(WOLFSSL* ssl); 4668 WOLFSSL_LOCAL int DtlsMsgSet(DtlsMsg*, word32, word16, const byte*, byte, 4479 4669 word32, word32, void*); 4480 WOLFSSL_LOCAL DtlsMsg* DtlsMsgFind(DtlsMsg*, word32 );4481 WOLFSSL_LOCAL void DtlsMsgStore(WOLFSSL*, word32, const byte*, word32,4670 WOLFSSL_LOCAL DtlsMsg* DtlsMsgFind(DtlsMsg*, word32, word32); 4671 WOLFSSL_LOCAL void DtlsMsgStore(WOLFSSL*, word32, word32, const byte*, word32, 4482 4672 byte, word32, word32, void*); 4483 4673 WOLFSSL_LOCAL DtlsMsg* DtlsMsgInsert(DtlsMsg*, DtlsMsg*); 4484 4674 4485 WOLFSSL_LOCAL int DtlsMsgPoolSave(WOLFSSL*, const byte*, word32 );4675 WOLFSSL_LOCAL int DtlsMsgPoolSave(WOLFSSL*, const byte*, word32, enum HandShakeType); 4486 4676 WOLFSSL_LOCAL int DtlsMsgPoolTimeout(WOLFSSL*); 4487 4677 WOLFSSL_LOCAL int VerifyForDtlsMsgPoolSend(WOLFSSL*, byte, word32); 4678 WOLFSSL_LOCAL int VerifyForTxDtlsMsgDelete(WOLFSSL* ssl, DtlsMsg* head); 4488 4679 WOLFSSL_LOCAL void DtlsMsgPoolReset(WOLFSSL*); 4489 4680 WOLFSSL_LOCAL int DtlsMsgPoolSend(WOLFSSL*, int); 4490 4681 #endif /* WOLFSSL_DTLS */ 4491 4682 4492 #ifndef NO_TLS 4493 4494 4495 #endif /* NO_TLS */ 4683 #if defined(HAVE_SECURE_RENEGOTIATION) && defined(WOLFSSL_DTLS) 4684 WOLFSSL_LOCAL int DtlsSCRKeysSet(WOLFSSL* ssl); 4685 WOLFSSL_LOCAL int IsDtlsMsgSCRKeys(WOLFSSL* ssl); 4686 WOLFSSL_LOCAL int DtlsUseSCRKeys(WOLFSSL* ssl); 4687 WOLFSSL_LOCAL int DtlsCheckOrder(WOLFSSL* ssl, int order); 4688 #endif 4689 WOLFSSL_LOCAL int IsSCR(WOLFSSL* ssl); 4690 4691 WOLFSSL_LOCAL void WriteSEQ(WOLFSSL* ssl, int verifyOrder, byte* out); 4496 4692 4497 4693 #if defined(WOLFSSL_TLS13) && (defined(HAVE_SESSION_TICKET) || !defined(NO_PSK)) … … 4501 4697 4502 4698 #ifndef NO_CERTS 4503 WOLFSSL_LOCAL void InitX509Name(WOLFSSL_X509_NAME*, int );4504 WOLFSSL_LOCAL void FreeX509Name(WOLFSSL_X509_NAME* name , void* heap);4699 WOLFSSL_LOCAL void InitX509Name(WOLFSSL_X509_NAME*, int, void*); 4700 WOLFSSL_LOCAL void FreeX509Name(WOLFSSL_X509_NAME* name); 4505 4701 WOLFSSL_LOCAL void InitX509(WOLFSSL_X509*, int, void* heap); 4506 4702 WOLFSSL_LOCAL void FreeX509(WOLFSSL_X509*); … … 4525 4721 byte cipherSuite0; 4526 4722 byte cipherSuite; 4527 #if defined(OPENSSL_ALL) || defined(WOLFSSL_QT) 4723 #if defined(OPENSSL_ALL) || defined(WOLFSSL_QT) || \ 4724 defined(WOLFSSL_HAPROXY) || defined(WOLFSSL_NGINX) 4528 4725 byte minor; 4529 4726 byte major; 4530 4727 #endif 4728 byte flags; 4531 4729 } CipherSuiteInfo; 4532 4730 … … 4550 4748 WOLFSSL_LOCAL const char* wolfSSL_get_cipher_name_iana(WOLFSSL* ssl); 4551 4749 WOLFSSL_LOCAL int GetCipherSuiteFromName(const char* name, byte* cipherSuite0, 4552 byte* cipherSuite); 4750 byte* cipherSuite, int* flags); 4751 4553 4752 4554 4753 enum encrypt_side { … … 4588 4787 WOLFSSL_LOCAL void FreeHandshakeHashes(WOLFSSL* ssl); 4589 4788 4789 4790 #ifndef WOLFSSL_NO_TLS12 4791 WOLFSSL_LOCAL void FreeBuildMsgArgs(WOLFSSL* ssl, BuildMsgArgs* args); 4792 #endif 4590 4793 WOLFSSL_LOCAL int BuildMessage(WOLFSSL* ssl, byte* output, int outSz, 4591 4794 const byte* input, int inSz, int type, int hashOutput, 4592 int sizeOnly, int asyncOkay );4795 int sizeOnly, int asyncOkay, int epochOrder); 4593 4796 4594 4797 #ifdef WOLFSSL_TLS13 -
azure_iot_hub_f767zi/trunk/wolfssl-4.7.0/wolfssl/ocsp.h
r457 r464 39 39 40 40 #if defined(OPENSSL_ALL) || defined(OPENSSL_EXTRA) || defined(WOLFSSL_NGINX) ||\ 41 defined(WOLFSSL_HAPROXY) 41 defined(WOLFSSL_HAPROXY) || defined(HAVE_LIGHTY) 42 42 typedef struct OcspResponse WOLFSSL_OCSP_BASICRESP; 43 43 44 typedef struct OcspRequest WOLFSSL_OCSP_CERTID; 44 typedef struct OcspEntry WOLFSSL_OCSP_CERTID; 45 46 typedef struct OcspEntry WOLFSSL_OCSP_SINGLERESP; 45 47 46 48 typedef struct OcspRequest WOLFSSL_OCSP_ONEREQ; … … 63 65 64 66 #if defined(OPENSSL_ALL) || defined(WOLFSSL_NGINX) || defined(WOLFSSL_HAPROXY) || \ 65 defined(WOLFSSL_APACHE_HTTPD) 67 defined(WOLFSSL_APACHE_HTTPD) || defined(HAVE_LIGHTY) 66 68 67 69 WOLFSSL_API int wolfSSL_OCSP_resp_find_status(WOLFSSL_OCSP_BASICRESP *bs, … … 83 85 84 86 WOLFSSL_API void wolfSSL_OCSP_RESPONSE_free(OcspResponse* response); 87 #ifndef NO_BIO 85 88 WOLFSSL_API OcspResponse* wolfSSL_d2i_OCSP_RESPONSE_bio(WOLFSSL_BIO* bio, 86 89 OcspResponse** response); 90 #endif 87 91 WOLFSSL_API OcspResponse* wolfSSL_d2i_OCSP_RESPONSE(OcspResponse** response, 88 92 const unsigned char** data, int len); … … 101 105 WOLFSSL_OCSP_CERTID *cid); 102 106 WOLFSSL_API WOLFSSL_OCSP_CERTID* wolfSSL_OCSP_CERTID_dup(WOLFSSL_OCSP_CERTID*); 107 #ifndef NO_BIO 103 108 WOLFSSL_API int wolfSSL_i2d_OCSP_REQUEST_bio(WOLFSSL_BIO* out, 104 109 WOLFSSL_OCSP_REQUEST *req); 110 #endif 111 112 WOLFSSL_API int wolfSSL_i2d_OCSP_CERTID(WOLFSSL_OCSP_CERTID *, unsigned char **); 113 WOLFSSL_API const WOLFSSL_OCSP_CERTID* wolfSSL_OCSP_SINGLERESP_get0_id(const WOLFSSL_OCSP_SINGLERESP *single); 114 WOLFSSL_API int wolfSSL_OCSP_single_get0_status(WOLFSSL_OCSP_SINGLERESP *single, 115 int *reason, 116 WOLFSSL_ASN1_TIME **revtime, 117 WOLFSSL_ASN1_TIME **thisupd, 118 WOLFSSL_ASN1_TIME **nextupd); 119 WOLFSSL_API int wolfSSL_OCSP_resp_count(WOLFSSL_OCSP_BASICRESP *bs); 120 WOLFSSL_API WOLFSSL_OCSP_SINGLERESP* wolfSSL_OCSP_resp_get0(WOLFSSL_OCSP_BASICRESP *bs, int idx); 105 121 106 122 #endif -
azure_iot_hub_f767zi/trunk/wolfssl-4.7.0/wolfssl/openssl/aes.h
r457 r464 43 43 * to need the size of the structure. */ 44 44 typedef struct WOLFSSL_AES_KEY { 45 /* aligned and big enough for Aes from wolfssl/wolfcrypt/aes.h */ 46 ALIGN16 void* holder[(376 + WC_ASYNC_DEV_SIZE)/ sizeof(void*)]; 47 #ifdef GCM_TABLE 48 /* key-based fast multiplication table. */ 49 ALIGN16 void* M0[4096 / sizeof(void*)]; 50 #endif /* GCM_TABLE */ 51 #if defined(WOLFSSL_DEVCRYPTO) && \ 52 (defined(WOLFSSL_DEVCRYPTO_AES) || defined(WOLFSSL_DEVCRYPTO_CBC)) 53 /* large enough for additional devcrypto information */ 54 void* devKey[288 / sizeof(void*)]; 55 #endif 56 #ifdef WOLFSSL_AFALG 57 void* afalg_holder[288 / sizeof(void*)]; 58 #endif 59 #ifdef HAVE_PKCS11 60 void* pkcs11_holder[(AES_MAX_ID_LEN + sizeof(int)) / sizeof(void*)]; 61 #endif 62 #if defined(WOLFSSL_ASYNC_CRYPT) || defined(WOLF_CRYPTO_CB) 63 void* async_holder[128 / sizeof(void*)]; 64 #endif 45 ALIGN16 void *buf[(sizeof(Aes) / sizeof(void *)) + 1]; 65 46 } WOLFSSL_AES_KEY; 66 47 typedef WOLFSSL_AES_KEY AES_KEY; -
azure_iot_hub_f767zi/trunk/wolfssl-4.7.0/wolfssl/openssl/asn1.h
r457 r464 32 32 #define ASN1_STRING_set wolfSSL_ASN1_STRING_set 33 33 #define ASN1_STRING_free wolfSSL_ASN1_STRING_free 34 35 #define ASN1_get_object wolfSSL_ASN1_get_object 36 #define d2i_ASN1_OBJECT wolfSSL_d2i_ASN1_OBJECT 37 #define c2i_ASN1_OBJECT wolfSSL_c2i_ASN1_OBJECT 34 38 35 39 #define V_ASN1_INTEGER 0x02 … … 67 71 #define ASN1_TIME_set wolfSSL_ASN1_TIME_set 68 72 73 #define V_ASN1_EOC 0 69 74 #define V_ASN1_OBJECT 6 75 #define V_ASN1_UTF8STRING 12 76 #define V_ASN1_SEQUENCE 16 77 #define V_ASN1_SET 17 78 #define V_ASN1_PRINTABLESTRING 19 79 #define V_ASN1_T61STRING 20 80 #define V_ASN1_IA5STRING 22 70 81 #define V_ASN1_UTCTIME 23 71 82 #define V_ASN1_GENERALIZEDTIME 24 83 #define V_ASN1_UNIVERSALSTRING 28 84 #define V_ASN1_BMPSTRING 30 85 86 87 #define V_ASN1_CONSTRUCTED 0x20 72 88 73 89 #define ASN1_STRING_FLAG_BITS_LEFT 0x008 … … 82 98 83 99 WOLFSSL_API void wolfSSL_ASN1_TYPE_set(WOLFSSL_ASN1_TYPE *a, int type, void *value); 100 101 WOLFSSL_API int wolfSSL_ASN1_get_object(const unsigned char **in, long *len, int *tag, 102 int *cls, long inLen); 103 104 WOLFSSL_API WOLFSSL_ASN1_OBJECT *wolfSSL_c2i_ASN1_OBJECT(WOLFSSL_ASN1_OBJECT **a, 105 const unsigned char **pp, long len); 84 106 85 107 #ifdef OPENSSL_ALL … … 108 130 109 131 #define ASN1_SEQUENCE(type) \ 110 static consttype __##type##_dummy_struct;\132 static type __##type##_dummy_struct;\ 111 133 static const WOLFSSL_ASN1_TEMPLATE type##_member_data[] 112 134 … … 124 146 }; 125 147 126 WOLFSSL_API void *wolfSSL_ASN1_item_new(const WOLFSSL_ASN1_ITEM *t emplate);127 WOLFSSL_API void wolfSSL_ASN1_item_free(void *val, const WOLFSSL_ASN1_ITEM *t emplate);148 WOLFSSL_API void *wolfSSL_ASN1_item_new(const WOLFSSL_ASN1_ITEM *tpl); 149 WOLFSSL_API void wolfSSL_ASN1_item_free(void *val, const WOLFSSL_ASN1_ITEM *tpl); 128 150 WOLFSSL_API int wolfSSL_ASN1_item_i2d(const void *src, byte **dest, 129 const WOLFSSL_ASN1_ITEM *t emplate);151 const WOLFSSL_ASN1_ITEM *tpl); 130 152 131 153 /* Need function declaration otherwise compiler complains */ -
azure_iot_hub_f767zi/trunk/wolfssl-4.7.0/wolfssl/openssl/bio.h
r457 r464 34 34 35 35 36 #define BIO_FLAG _BASE64_NO_NL WOLFSSL_BIO_FLAG_BASE64_NO_NL37 #define BIO_FLAG _READ WOLFSSL_BIO_FLAG_READ38 #define BIO_FLAG _WRITE WOLFSSL_BIO_FLAG_WRITE39 #define BIO_FLAG _IO_SPECIAL WOLFSSL_BIO_FLAG_IO_SPECIAL40 #define BIO_FLAG _RETRYWOLFSSL_BIO_FLAG_RETRY36 #define BIO_FLAGS_BASE64_NO_NL WOLFSSL_BIO_FLAG_BASE64_NO_NL 37 #define BIO_FLAGS_READ WOLFSSL_BIO_FLAG_READ 38 #define BIO_FLAGS_WRITE WOLFSSL_BIO_FLAG_WRITE 39 #define BIO_FLAGS_IO_SPECIAL WOLFSSL_BIO_FLAG_IO_SPECIAL 40 #define BIO_FLAGS_SHOULD_RETRY WOLFSSL_BIO_FLAG_RETRY 41 41 42 42 #define BIO_new_fp wolfSSL_BIO_new_fp 43 #if defined(OPENSSL_ALL) \ 44 || defined(HAVE_STUNNEL) \ 45 || defined(HAVE_LIGHTY) \ 46 || defined(WOLFSSL_MYSQL_COMPATIBLE) \ 47 || defined(WOLFSSL_HAPROXY) \ 48 || defined(OPENSSL_EXTRA) 43 49 #define BIO_new_file wolfSSL_BIO_new_file 50 #endif 44 51 #define BIO_new_fp wolfSSL_BIO_new_fp 45 52 #define BIO_ctrl wolfSSL_BIO_ctrl … … 58 65 #define BIO_make_bio_pair wolfSSL_BIO_make_bio_pair 59 66 67 #define BIO_new_fd wolfSSL_BIO_new_fd 60 68 #define BIO_set_fp wolfSSL_BIO_set_fp 61 69 #define BIO_get_fp wolfSSL_BIO_get_fp … … 124 132 #define BIO_meth_set_destroy wolfSSL_BIO_meth_set_destroy 125 133 134 #define BIO_snprintf XSNPRINTF 126 135 127 136 /* BIO CTRL */ … … 150 159 #define BIO_CTRL_DGRAM_QUERY_MTU 40 151 160 161 #define BIO_FP_TEXT 0x00 152 162 #define BIO_NOCLOSE 0x00 153 163 #define BIO_CLOSE 0x01 -
azure_iot_hub_f767zi/trunk/wolfssl-4.7.0/wolfssl/openssl/bn.h
r457 r464 41 41 int neg; /* openssh deference */ 42 42 void *internal; /* our big num */ 43 #if def WOLFSSL_SP_MATH43 #if defined(WOLFSSL_SP_MATH) || defined(WOLFSSL_SP_MATH_ALL) 44 44 sp_int fp; 45 45 #elif defined(USE_FAST_MATH) && !defined(HAVE_WOLF_BIGINT) … … 50 50 51 51 #define BN_ULONG WOLFSSL_BN_ULONG 52 #define WOLFSSL_BN_ULONG mp_digit52 #define WOLFSSL_BN_ULONG unsigned long 53 53 54 54 typedef struct WOLFSSL_BN_CTX WOLFSSL_BN_CTX; … … 114 114 WOLFSSL_API int wolfSSL_BN_clear_bit(WOLFSSL_BIGNUM*, int); 115 115 WOLFSSL_API int wolfSSL_BN_set_word(WOLFSSL_BIGNUM*, WOLFSSL_BN_ULONG); 116 WOLFSSL_API unsigned longwolfSSL_BN_get_word(const WOLFSSL_BIGNUM*);116 WOLFSSL_API WOLFSSL_BN_ULONG wolfSSL_BN_get_word(const WOLFSSL_BIGNUM*); 117 117 118 118 WOLFSSL_API int wolfSSL_BN_add(WOLFSSL_BIGNUM*, WOLFSSL_BIGNUM*, -
azure_iot_hub_f767zi/trunk/wolfssl-4.7.0/wolfssl/openssl/buffer.h
r457 r464 35 35 WOLFSSL_API int wolfSSL_BUF_MEM_grow(WOLFSSL_BUF_MEM* buf, size_t len); 36 36 WOLFSSL_API void wolfSSL_BUF_MEM_free(WOLFSSL_BUF_MEM* buf); 37 WOLFSSL_API size_t wolfSSL_strlcpy(char *dst, const char *src, size_t dstSize); 38 WOLFSSL_API size_t wolfSSL_strlcat(char *dst, const char *src, size_t dstSize); 37 39 38 40 … … 41 43 #define BUF_MEM_free wolfSSL_BUF_MEM_free 42 44 45 #define BUF_strdup strdup 46 #define BUF_strlcpy wolfSSL_strlcpy 47 #define BUF_strlcat wolfSSL_strlcat 48 43 49 #ifdef __cplusplus 44 50 } /* extern "C" */ -
azure_iot_hub_f767zi/trunk/wolfssl-4.7.0/wolfssl/openssl/conf.h
r457 r464 29 29 #endif 30 30 31 struct WOLFSSL_CONF_VALUE { 31 #include <wolfssl/wolfcrypt/settings.h> 32 #include <wolfssl/version.h> 33 34 typedef struct WOLFSSL_CONF_VALUE { 32 35 char *section; 33 36 char *name; 34 37 char *value; 35 } ;38 } WOLFSSL_CONF_VALUE; 36 39 37 struct WOLFSSL_INIT_SETTINGS { 38 char* appname; 39 }; 40 /* ssl.h requires WOLFSSL_CONF_VALUE */ 41 #include <wolfssl/ssl.h> 40 42 41 typedef struct WOLFSSL_CONF_VALUE CONF_VALUE; 42 typedef struct WOLFSSL_INIT_SETTINGS OPENSSL_INIT_SETTINGS; 43 typedef struct WOLFSSL_CONF { 44 void *meth_data; 45 WOLF_LHASH_OF(WOLFSSL_CONF_VALUE) *data; 46 } WOLFSSL_CONF; 47 48 typedef WOLFSSL_CONF CONF; 49 typedef WOLFSSL_CONF_VALUE CONF_VALUE; 50 51 #ifdef OPENSSL_EXTRA 52 53 WOLFSSL_API WOLFSSL_CONF_VALUE *wolfSSL_CONF_VALUE_new(void); 54 WOLFSSL_API int wolfSSL_CONF_add_string(WOLFSSL_CONF *conf, 55 WOLFSSL_CONF_VALUE *section, WOLFSSL_CONF_VALUE *value); 56 WOLFSSL_API void wolfSSL_X509V3_conf_free(WOLFSSL_CONF_VALUE *val); 57 58 WOLFSSL_API WOLFSSL_CONF *wolfSSL_NCONF_new(void *meth); 59 WOLFSSL_API char *wolfSSL_NCONF_get_string(const WOLFSSL_CONF *conf, 60 const char *group, const char *name); 61 WOLFSSL_API int wolfSSL_NCONF_get_number(const CONF *conf, const char *group, 62 const char *name, long *result); 63 WOLFSSL_API WOLFSSL_STACK *wolfSSL_NCONF_get_section( 64 const WOLFSSL_CONF *conf, const char *section); 65 WOLFSSL_API int wolfSSL_NCONF_load(WOLFSSL_CONF *conf, const char *file, long *eline); 66 WOLFSSL_API void wolfSSL_NCONF_free(WOLFSSL_CONF *conf); 67 68 WOLFSSL_API WOLFSSL_CONF_VALUE *wolfSSL_lh_WOLFSSL_CONF_VALUE_retrieve( 69 WOLF_LHASH_OF(WOLFSSL_CONF_VALUE) *sk, WOLFSSL_CONF_VALUE *data); 70 71 WOLFSSL_API int wolfSSL_CONF_modules_load(const WOLFSSL_CONF *cnf, const char *appname, 72 unsigned long flags); 73 WOLFSSL_API WOLFSSL_CONF_VALUE *wolfSSL_CONF_new_section(WOLFSSL_CONF *conf, 74 const char *section); 75 WOLFSSL_API WOLFSSL_CONF_VALUE *wolfSSL_CONF_get_section(WOLFSSL_CONF *conf, 76 const char *section); 77 78 #define sk_CONF_VALUE_new wolfSSL_sk_CONF_VALUE_new 79 #define sk_CONF_VALUE_free wolfSSL_sk_CONF_VALUE_free 80 #define sk_CONF_VALUE_pop_free(a,b) wolfSSL_sk_CONF_VALUE_free(a) 81 #define sk_CONF_VALUE_num wolfSSL_sk_CONF_VALUE_num 82 #define sk_CONF_VALUE_value wolfSSL_sk_CONF_VALUE_value 83 84 #define lh_CONF_VALUE_retrieve wolfSSL_lh_WOLFSSL_CONF_VALUE_retrieve 85 #define lh_CONF_VALUE_insert wolfSSL_sk_CONF_VALUE_push 86 87 #define NCONF_new wolfSSL_NCONF_new 88 #define NCONF_free wolfSSL_NCONF_free 89 #define NCONF_get_string wolfSSL_NCONF_get_string 90 #define NCONF_get_section wolfSSL_NCONF_get_section 91 #define NCONF_get_number wolfSSL_NCONF_get_number 92 #define NCONF_load wolfSSL_NCONF_load 93 94 #define CONF_modules_load wolfSSL_CONF_modules_load 95 #define _CONF_new_section wolfSSL_CONF_new_section 96 #define _CONF_get_section wolfSSL_CONF_get_section 97 98 #define X509V3_conf_free wolfSSL_X509V3_conf_free 99 100 #endif /* OPENSSL_EXTRA */ 43 101 44 102 #ifdef __cplusplus -
azure_iot_hub_f767zi/trunk/wolfssl-4.7.0/wolfssl/openssl/crypto.h
r457 r464 25 25 #define WOLFSSL_CRYPTO_H_ 26 26 27 #include <wolfssl/wolfcrypt/settings.h> 28 27 29 #include <wolfssl/openssl/opensslv.h> 28 29 #include <wolfssl/wolfcrypt/settings.h> 30 #include <wolfssl/openssl/conf.h> 30 31 31 32 #ifdef WOLFSSL_PREFIX … … 33 34 #endif 34 35 36 typedef struct WOLFSSL_INIT_SETTINGS { 37 char* appname; 38 } WOLFSSL_INIT_SETTINGS; 39 40 typedef WOLFSSL_INIT_SETTINGS OPENSSL_INIT_SETTINGS; 35 41 36 42 WOLFSSL_API const char* wolfSSLeay_version(int type); … … 41 47 WOLFSSL_API void wolfSSL_OPENSSL_free(void*); 42 48 WOLFSSL_API void *wolfSSL_OPENSSL_malloc(size_t a); 49 50 WOLFSSL_API int wolfSSL_OPENSSL_init_crypto(word64 opts, const OPENSSL_INIT_SETTINGS *settings); 43 51 #endif 44 52 … … 63 71 #define OPENSSL_malloc wolfSSL_OPENSSL_malloc 64 72 65 #ifdef WOLFSSL_QT 66 #define OPENSSL_INIT_ADD_ALL_CIPHERS 0x00000004L 67 #define OPENSSL_INIT_ADD_ALL_DIGESTS 0x00000008L 68 #define OPENSSL_INIT_LOAD_CONFIG 0x00000040L 69 #endif 73 #define OPENSSL_INIT_ENGINE_ALL_BUILTIN 0x00000001L 74 #define OPENSSL_INIT_ADD_ALL_CIPHERS 0x00000004L 75 #define OPENSSL_INIT_ADD_ALL_DIGESTS 0x00000008L 76 #define OPENSSL_INIT_LOAD_CONFIG 0x00000040L 77 78 #define OPENSSL_init_crypto wolfSSL_OPENSSL_init_crypto 79 70 80 71 81 #if defined(OPENSSL_ALL) || defined(HAVE_STUNNEL) || defined(WOLFSSL_NGINX) || \ 72 defined(WOLFSSL_HAPROXY) || defined(OPENSSL_EXTRA) 82 defined(WOLFSSL_HAPROXY) || defined(OPENSSL_EXTRA) || defined(HAVE_EX_DATA) 73 83 #define CRYPTO_set_mem_ex_functions wolfSSL_CRYPTO_set_mem_ex_functions 74 84 #define FIPS_mode wolfSSL_FIPS_mode … … 87 97 #define CRYPTO_THREAD_unlock wc_UnLockMutex 88 98 89 #endif /* OPENSSL_ALL || HAVE_STUNNEL || WOLFSSL_NGINX || WOLFSSL_HAPROXY */99 #endif /* OPENSSL_ALL || HAVE_STUNNEL || WOLFSSL_NGINX || WOLFSSL_HAPROXY || HAVE_EX_DATA */ 90 100 91 101 #endif /* header */ -
azure_iot_hub_f767zi/trunk/wolfssl-4.7.0/wolfssl/openssl/dh.h
r457 r464 27 27 28 28 #include <wolfssl/openssl/bn.h> 29 #include <wolfssl/openssl/opensslv.h> 29 30 30 31 #ifdef __cplusplus … … 59 60 WOLFSSL_API WOLFSSL_DH* wolfSSL_DH_new(void); 60 61 WOLFSSL_API void wolfSSL_DH_free(WOLFSSL_DH*); 62 WOLFSSL_API WOLFSSL_DH* wolfSSL_DH_dup(WOLFSSL_DH* dh); 61 63 62 64 WOLFSSL_API int wolfSSL_DH_check(const WOLFSSL_DH *dh, int *codes); -
azure_iot_hub_f767zi/trunk/wolfssl-4.7.0/wolfssl/openssl/dsa.h
r457 r464 81 81 WOLFSSL_DSA* dsa, int *dsacheck); 82 82 83 WOLFSSL_API int wolfSSL_DSA_bits(const WOLFSSL_DSA *d); 84 83 85 WOLFSSL_API WOLFSSL_DSA_SIG* wolfSSL_DSA_SIG_new(void); 84 86 WOLFSSL_API void wolfSSL_DSA_SIG_free(WOLFSSL_DSA_SIG *sig); -
azure_iot_hub_f767zi/trunk/wolfssl-4.7.0/wolfssl/openssl/ec.h
r457 r464 26 26 27 27 #include <wolfssl/openssl/bn.h> 28 #include <wolfssl/wolfcrypt/asn.h> 28 29 #include <wolfssl/wolfcrypt/ecc.h> 29 30 … … 69 70 #endif 70 71 72 #ifdef HAVE_ED448 73 NID_ED448 = ED448k, 74 #endif 75 #ifdef HAVE_ED25519 76 NID_ED25519 = ED25519k, 77 #endif 78 71 79 OPENSSL_EC_NAMED_CURVE = 0x001 72 80 }; … … 149 157 int wolfSSL_i2o_ECPublicKey(const WOLFSSL_EC_KEY *in, unsigned char **out); 150 158 WOLFSSL_API 159 WOLFSSL_EC_KEY *wolfSSL_d2i_ECPrivateKey(WOLFSSL_EC_KEY **key, const unsigned char **in, 160 long len); 161 WOLFSSL_API 162 int wolfSSL_i2d_ECPrivateKey(const WOLFSSL_EC_KEY *in, unsigned char **out); 163 WOLFSSL_API 151 164 void wolfSSL_EC_KEY_set_conv_form(WOLFSSL_EC_KEY *eckey, char form); 152 165 WOLFSSL_API … … 155 168 char form, 156 169 WOLFSSL_BIGNUM *in, WOLFSSL_BN_CTX *ctx); 170 WOLFSSL_API 171 int wolfSSL_EC_POINT_is_on_curve(const WOLFSSL_EC_GROUP *group, 172 const WOLFSSL_EC_POINT *point, 173 WOLFSSL_BN_CTX *ctx); 157 174 158 175 WOLFSSL_API … … 199 216 WOLFSSL_BN_CTX *ctx); 200 217 WOLFSSL_API 218 WOLFSSL_EC_GROUP *wolfSSL_EC_GROUP_dup(const WOLFSSL_EC_GROUP *src); 219 WOLFSSL_API 201 220 int wolfSSL_EC_GROUP_get_curve_name(const WOLFSSL_EC_GROUP *group); 202 221 WOLFSSL_API … … 229 248 WOLFSSL_BN_CTX *ctx); 230 249 WOLFSSL_API 250 int wolfSSL_EC_POINT_add(const WOLFSSL_EC_GROUP *group, WOLFSSL_EC_POINT *r, 251 const WOLFSSL_EC_POINT *p1, 252 const WOLFSSL_EC_POINT *p2, WOLFSSL_BN_CTX *ctx); 253 WOLFSSL_API 231 254 int wolfSSL_EC_POINT_mul(const WOLFSSL_EC_GROUP *group, WOLFSSL_EC_POINT *r, 232 255 const WOLFSSL_BIGNUM *n, 233 256 const WOLFSSL_EC_POINT *q, const WOLFSSL_BIGNUM *m, 234 257 WOLFSSL_BN_CTX *ctx); 258 WOLFSSL_API 259 int wolfSSL_EC_POINT_invert(const WOLFSSL_EC_GROUP *group, WOLFSSL_EC_POINT *a, 260 WOLFSSL_BN_CTX *ctx); 235 261 WOLFSSL_API 236 262 void wolfSSL_EC_POINT_clear_free(WOLFSSL_EC_POINT *point); … … 278 304 #define EC_GROUP_new_by_curve_name wolfSSL_EC_GROUP_new_by_curve_name 279 305 #define EC_GROUP_cmp wolfSSL_EC_GROUP_cmp 306 #define EC_GROUP_dup wolfSSL_EC_GROUP_dup 280 307 #define EC_GROUP_get_curve_name wolfSSL_EC_GROUP_get_curve_name 281 308 #define EC_GROUP_get_degree wolfSSL_EC_GROUP_get_degree … … 283 310 #define EC_GROUP_order_bits wolfSSL_EC_GROUP_order_bits 284 311 #define EC_GROUP_method_of wolfSSL_EC_GROUP_method_of 312 #ifndef NO_WOLFSSL_STUB 313 #define EC_GROUP_set_point_conversion_form(...) 314 #endif 285 315 286 316 #define EC_METHOD_get_field_type wolfSSL_EC_METHOD_get_field_type … … 292 322 #define EC_POINT_set_affine_coordinates_GFp \ 293 323 wolfSSL_EC_POINT_set_affine_coordinates_GFp 324 #define EC_POINT_add wolfSSL_EC_POINT_add 294 325 #define EC_POINT_mul wolfSSL_EC_POINT_mul 326 #define EC_POINT_invert wolfSSL_EC_POINT_invert 295 327 #define EC_POINT_clear_free wolfSSL_EC_POINT_clear_free 296 328 #define EC_POINT_cmp wolfSSL_EC_POINT_cmp … … 305 337 #define EC_POINT_oct2point wolfSSL_EC_POINT_oct2point 306 338 #define EC_POINT_point2bn wolfSSL_EC_POINT_point2bn 339 #define EC_POINT_is_on_curve wolfSSL_EC_POINT_is_on_curve 307 340 #define i2o_ECPublicKey wolfSSL_i2o_ECPublicKey 341 #define i2d_EC_PUBKEY wolfSSL_i2o_ECPublicKey 342 #define d2i_ECPrivateKey wolfSSL_d2i_ECPrivateKey 343 #define i2d_ECPrivateKey wolfSSL_i2d_ECPrivateKey 308 344 #define EC_KEY_set_conv_form wolfSSL_EC_KEY_set_conv_form 309 345 -
azure_iot_hub_f767zi/trunk/wolfssl-4.7.0/wolfssl/openssl/evp.h
r457 r464 186 186 #endif 187 187 } hash; 188 intmacType;188 enum wc_HashType macType; 189 189 WOLFSSL_EVP_PKEY_CTX *pctx; 190 #ifndef NO_HMAC 191 unsigned int isHMAC; 192 #endif 190 193 }; 191 194 … … 351 354 #define HAVE_WOLFSSL_EVP_CIPHER_CTX_IV 352 355 int ivSz; 356 #ifdef HAVE_AESGCM 357 byte* gcmBuffer; 358 int gcmBufferLen; 353 359 ALIGN16 unsigned char authTag[AES_BLOCK_SIZE]; 354 360 int authTagSz; 361 byte* gcmAuthIn; 362 int gcmAuthInSz; 363 #endif 355 364 #endif 356 365 }; … … 515 524 WOLFSSL_API int wolfSSL_EVP_PKEY_assign_DH(EVP_PKEY* pkey, WOLFSSL_DH* key); 516 525 WOLFSSL_API WOLFSSL_RSA* wolfSSL_EVP_PKEY_get0_RSA(struct WOLFSSL_EVP_PKEY *pkey); 526 WOLFSSL_API WOLFSSL_DSA* wolfSSL_EVP_PKEY_get0_DSA(struct WOLFSSL_EVP_PKEY *pkey); 517 527 WOLFSSL_API WOLFSSL_RSA* wolfSSL_EVP_PKEY_get1_RSA(WOLFSSL_EVP_PKEY*); 518 528 WOLFSSL_API WOLFSSL_DSA* wolfSSL_EVP_PKEY_get1_DSA(WOLFSSL_EVP_PKEY*); … … 548 558 WOLFSSL_API int wolfSSL_EVP_PKEY_derive(WOLFSSL_EVP_PKEY_CTX *ctx, unsigned char *key, size_t *keylen); 549 559 560 WOLFSSL_API int wolfSSL_EVP_PKEY_CTX_ctrl_str(WOLFSSL_EVP_PKEY_CTX *ctx, 561 const char *name, const char *value); 562 550 563 WOLFSSL_API int wolfSSL_EVP_PKEY_decrypt(WOLFSSL_EVP_PKEY_CTX *ctx, 551 564 unsigned char *out, size_t *outlen, … … 560 573 WOLFSSL_API void wolfSSL_EVP_PKEY_free(WOLFSSL_EVP_PKEY*); 561 574 WOLFSSL_API int wolfSSL_EVP_PKEY_size(WOLFSSL_EVP_PKEY *pkey); 575 WOLFSSL_API int wolfSSL_EVP_PKEY_copy_parameters(WOLFSSL_EVP_PKEY *to, const WOLFSSL_EVP_PKEY *from); 562 576 WOLFSSL_API int wolfSSL_EVP_PKEY_missing_parameters(WOLFSSL_EVP_PKEY *pkey); 563 577 WOLFSSL_API int wolfSSL_EVP_PKEY_cmp(const WOLFSSL_EVP_PKEY *a, const WOLFSSL_EVP_PKEY *b); 564 578 WOLFSSL_API int wolfSSL_EVP_PKEY_type(int type); 565 WOLFSSL_API int wolfSSL_EVP_PKEY_id(const EVP_PKEY *pkey); 566 WOLFSSL_API int wolfSSL_EVP_PKEY_base_id(const EVP_PKEY *pkey); 579 WOLFSSL_API int wolfSSL_EVP_PKEY_id(const WOLFSSL_EVP_PKEY *pkey); 580 WOLFSSL_API int wolfSSL_EVP_PKEY_base_id(const WOLFSSL_EVP_PKEY *pkey); 581 WOLFSSL_API int wolfSSL_EVP_PKEY_get_default_digest_nid(WOLFSSL_EVP_PKEY *pkey, int *pnid); 567 582 WOLFSSL_API int wolfSSL_EVP_SignFinal(WOLFSSL_EVP_MD_CTX *ctx, unsigned char *sigret, 568 583 unsigned int *siglen, WOLFSSL_EVP_PKEY *pkey); … … 631 646 #define EVP_CIPH_XTS_MODE WOLFSSL_EVP_CIPH_XTS_MODE 632 647 648 #define EVP_CIPH_FLAG_AEAD_CIPHER WOLFSSL_EVP_CIPH_FLAG_AEAD_CIPHER 649 633 650 #define WOLFSSL_EVP_CIPH_MODE 0x0007 634 651 #define WOLFSSL_EVP_CIPH_STREAM_CIPHER 0x0 … … 641 658 #define WOLFSSL_EVP_CIPH_CCM_MODE 0x7 642 659 #define WOLFSSL_EVP_CIPH_XTS_MODE 0x10 660 #define WOLFSSL_EVP_CIPH_FLAG_AEAD_CIPHER 0x20 643 661 #define WOLFSSL_EVP_CIPH_NO_PADDING 0x100 644 662 #define EVP_CIPH_VARIABLE_LENGTH 0x200 … … 817 835 #define EVP_PKEY_up_ref wolfSSL_EVP_PKEY_up_ref 818 836 #define EVP_PKEY_size wolfSSL_EVP_PKEY_size 837 #define EVP_PKEY_copy_parameters wolfSSL_EVP_PKEY_copy_parameters 819 838 #define EVP_PKEY_missing_parameters wolfSSL_EVP_PKEY_missing_parameters 820 839 #define EVP_PKEY_cmp wolfSSL_EVP_PKEY_cmp 821 840 #define EVP_PKEY_type wolfSSL_EVP_PKEY_type 822 841 #define EVP_PKEY_base_id wolfSSL_EVP_PKEY_base_id 842 #define EVP_PKEY_get_default_digest_nid wolfSSL_EVP_PKEY_get_default_digest_nid 823 843 #define EVP_PKEY_id wolfSSL_EVP_PKEY_id 844 #define EVP_PKEY_CTX_ctrl_str wolfSSL_EVP_PKEY_CTX_ctrl_str 824 845 #define EVP_SignFinal wolfSSL_EVP_SignFinal 825 846 #define EVP_SignInit wolfSSL_EVP_SignInit … … 909 930 910 931 #define EVP_PKEY_NONE NID_undef 911 #define EVP_PKEY_RSA 6912 #define EVP_PKEY_RSA2 19913 932 #define EVP_PKEY_DH 28 914 933 #define EVP_CIPHER_mode WOLFSSL_CIPHER_mode -
azure_iot_hub_f767zi/trunk/wolfssl-4.7.0/wolfssl/openssl/hmac.h
r457 r464 73 73 unsigned int* len); 74 74 WOLFSSL_API int wolfSSL_HMAC_cleanup(WOLFSSL_HMAC_CTX* ctx); 75 WOLFSSL_API void wolfSSL_HMAC_CTX_cleanup(WOLFSSL_HMAC_CTX* ctx); 75 76 WOLFSSL_API void wolfSSL_HMAC_CTX_free(WOLFSSL_HMAC_CTX* ctx); 76 77 WOLFSSL_API size_t wolfSSL_HMAC_size(const WOLFSSL_HMAC_CTX *ctx); … … 84 85 #define HMAC_CTX_copy wolfSSL_HMAC_CTX_copy 85 86 #define HMAC_CTX_free wolfSSL_HMAC_CTX_free 87 #define HMAC_CTX_cleanup wolfSSL_HMAC_CTX_cleanup 86 88 #define HMAC_CTX_reset wolfSSL_HMAC_cleanup 87 89 #define HMAC_Init_ex wolfSSL_HMAC_Init_ex -
azure_iot_hub_f767zi/trunk/wolfssl-4.7.0/wolfssl/openssl/ocsp.h
r457 r464 31 31 #define OCSP_RESPONSE OcspResponse 32 32 #define OCSP_BASICRESP WOLFSSL_OCSP_BASICRESP 33 #define OCSP_SINGLERESP WOLFSSL_OCSP_SINGLERESP 33 34 #define OCSP_CERTID WOLFSSL_OCSP_CERTID 34 35 #define OCSP_ONEREQ WOLFSSL_OCSP_ONEREQ … … 77 78 #define i2d_OCSP_REQUEST_bio wolfSSL_i2d_OCSP_REQUEST_bio 78 79 80 #define i2d_OCSP_CERTID wolfSSL_i2d_OCSP_CERTID 81 #define OCSP_SINGLERESP_get0_id wolfSSL_OCSP_SINGLERESP_get0_id 82 #define OCSP_single_get0_status wolfSSL_OCSP_single_get0_status 83 #define OCSP_resp_count wolfSSL_OCSP_resp_count 84 #define OCSP_resp_get0 wolfSSL_OCSP_resp_get0 85 79 86 #endif /* HAVE_OCSP */ 80 87 -
azure_iot_hub_f767zi/trunk/wolfssl-4.7.0/wolfssl/openssl/opensslv.h
r457 r464 27 27 28 28 /* api version compatibility */ 29 #if defined(WOLFSSL_APACHE_HTTPD) 29 #if defined(OPENSSL_VERSION_NUMBER) && (OPENSSL_VERSION_NUMBER == 0x0090810fL) ||\ 30 defined(OPENSSL_VERSION_NUMBER) && (OPENSSL_VERSION_NUMBER == 0x10100000L) ||\ 31 defined(OPENSSL_VERSION_NUMBER) && (OPENSSL_VERSION_NUMBER == 0x10001040L) 32 /* valid version */ 33 #elif defined(WOLFSSL_APACHE_HTTPD) || defined(HAVE_LIBEST) 30 34 /* For Apache httpd, Use 1.1.0 compatibility */ 31 35 #define OPENSSL_VERSION_NUMBER 0x10100000L 32 36 #elif defined(OPENSSL_ALL) || defined(HAVE_STUNNEL) || defined(HAVE_LIGHTY) || \ 33 37 defined(WOLFSSL_NGINX) || defined(WOLFSSL_HAPROXY) || \ 34 defined(WOLFSSL_OPENSSH) || defined(WOLFSSL_QT) 38 defined(WOLFSSL_OPENSSH) || defined(WOLFSSL_QT) || defined(WOLFSSL_OPENVPN) 35 39 /* version number can be increased for Lighty after compatibility for ECDH 36 40 is added */ 37 #define OPENSSL_VERSION_NUMBER 0x100010 0fL41 #define OPENSSL_VERSION_NUMBER 0x10001040L 38 42 #else 39 43 #define OPENSSL_VERSION_NUMBER 0x0090810fL -
azure_iot_hub_f767zi/trunk/wolfssl-4.7.0/wolfssl/openssl/pem.h
r457 r464 243 243 #define PEM_read_bio_ECPrivateKey wolfSSL_PEM_read_bio_ECPrivateKey 244 244 #define PEM_read_bio_EC_PUBKEY wolfSSL_PEM_read_bio_EC_PUBKEY 245 #ifndef NO_WOLFSSL_STUB 246 #define PEM_write_bio_ECPKParameters(...) 0 247 #endif 245 248 /* EVP_KEY */ 246 249 #define PEM_read_bio_PrivateKey wolfSSL_PEM_read_bio_PrivateKey -
azure_iot_hub_f767zi/trunk/wolfssl-4.7.0/wolfssl/openssl/rsa.h
r457 r464 118 118 unsigned int mLen, unsigned char* sigRet, 119 119 unsigned int* sigLen, WOLFSSL_RSA*, int); 120 WOLFSSL_API int wolfSSL_RSA_sign_generic_padding(int type, const unsigned char* m, 121 unsigned int mLen, unsigned char* sigRet, 122 unsigned int* sigLen, WOLFSSL_RSA*, int, int); 120 123 WOLFSSL_API int wolfSSL_RSA_verify(int type, const unsigned char* m, 121 124 unsigned int mLen, const unsigned char* sig, 122 125 unsigned int sigLen, WOLFSSL_RSA*); 126 WOLFSSL_API int wolfSSL_RSA_verify_ex(int type, const unsigned char* m, 127 unsigned int mLen, const unsigned char* sig, 128 unsigned int sigLen, WOLFSSL_RSA* rsa, 129 int padding); 123 130 WOLFSSL_API int wolfSSL_RSA_public_decrypt(int flen, const unsigned char* from, 124 131 unsigned char* to, WOLFSSL_RSA*, int padding); -
azure_iot_hub_f767zi/trunk/wolfssl-4.7.0/wolfssl/openssl/ssl.h
r457 r464 54 54 #include <wolfssl/wolfcrypt/asn.h> 55 55 56 #include <wolfssl/openssl/x509.h> 57 56 58 #ifdef __cplusplus 57 59 extern "C" { … … 68 70 #endif 69 71 72 #ifdef OPENSSL_EXTRA 73 WOLFSSL_API int wolfSSL_OPENSSL_init_ssl(word64 opts, const OPENSSL_INIT_SETTINGS *settings); 74 #endif 70 75 71 76 typedef WOLFSSL SSL; … … 80 85 typedef WOLFSSL_X509_CHAIN X509_CHAIN; 81 86 87 /* STACK_OF(ASN1_OBJECT) */ 82 88 typedef WOLFSSL_STACK EXTENDED_KEY_USAGE; 83 89 … … 100 106 typedef WOLFSSL_ASN1_STRING ASN1_STRING; 101 107 typedef WOLFSSL_ASN1_TYPE ASN1_TYPE; 108 typedef WOLFSSL_X509_ATTRIBUTE X509_ATTRIBUTE; 102 109 typedef WOLFSSL_ASN1_BIT_STRING ASN1_BIT_STRING; 103 110 typedef WOLFSSL_dynlock_value CRYPTO_dynlock_value; … … 105 112 typedef WOLFSSL_GENERAL_NAMES GENERAL_NAMES; 106 113 typedef WOLFSSL_GENERAL_NAME GENERAL_NAME; 114 115 #define X509_L_FILE_LOAD WOLFSSL_X509_L_FILE_LOAD 116 #define X509_L_ADD_DIR WOLFSSL_X509_L_ADD_DIR 117 #define X509_L_ADD_STORE WOLFSSL_X509_L_ADD_STORE 118 #define X509_L_LOAD_STORE WOLFSSL_X509_L_LOAD_STORE 107 119 108 120 #define ASN1_UTCTIME WOLFSSL_ASN1_TIME … … 126 138 typedef STACK_OF(ACCESS_DESCRIPTION) AUTHORITY_INFO_ACCESS; 127 139 128 #ifdef WOLFSSL_QT 129 #if defined(NO_WOLFSSL_MEMORY) 130 #define CRYPTO_free(xp) XFREE(xp, NULL, NULL); 131 #else 132 #define CRYPTO_free(xp) { if((xp)) wolfSSL_Free((xp));} 133 #endif 134 #else 135 #define CRYPTO_free XFREE 136 #endif 137 138 #define CRYPTO_malloc XMALLOC 140 #define CRYPTO_free(xp) XFREE(xp, NULL, DYNAMIC_TYPE_TMP_BUFFER) 141 #define CRYPTO_malloc(sz) XMALLOC(sz, NULL, DYNAMIC_TYPE_TMP_BUFFER) 139 142 #define CRYPTO_EX_new WOLFSSL_CRYPTO_EX_new 140 143 #define CRYPTO_EX_dup WOLFSSL_CRYPTO_EX_dup … … 161 164 #define set_ex_data wolfSSL_CRYPTO_set_ex_data 162 165 #define get_ex_data wolfSSL_CRYPTO_get_ex_data 166 #define CRYPTO_memcmp wolfSSL_CRYPTO_memcmp 163 167 164 168 /* this function was used to set the default malloc, free, and realloc */ … … 175 179 /* at the moment only returns ok */ 176 180 #define SSL_get_verify_result wolfSSL_get_verify_result 177 #define SSL_get_verify_mode wolfSSL_ SSL_get_mode181 #define SSL_get_verify_mode wolfSSL_get_verify_mode 178 182 #define SSL_get_verify_depth wolfSSL_get_verify_depth 179 183 #define SSL_CTX_get_verify_mode wolfSSL_CTX_get_verify_mode 180 184 #define SSL_CTX_get_verify_depth wolfSSL_CTX_get_verify_depth 181 185 #define SSL_get_certificate wolfSSL_get_certificate 186 #define SSL_CTX_get0_certificate wolfSSL_CTX_get0_certificate 182 187 #define SSL_use_certificate wolfSSL_use_certificate 183 188 #define SSL_use_certificate_ASN1 wolfSSL_use_certificate_ASN1 184 189 #define d2i_PKCS8_PRIV_KEY_INFO_bio wolfSSL_d2i_PKCS8_PKEY_bio 185 190 #define d2i_PKCS8PrivateKey_bio wolfSSL_d2i_PKCS8PrivateKey_bio 191 #define i2d_PKCS8PrivateKey_bio wolfSSL_PEM_write_bio_PKCS8PrivateKey 186 192 #define PKCS8_PRIV_KEY_INFO_free wolfSSL_EVP_PKEY_free 187 193 #define d2i_PKCS12_fp wolfSSL_d2i_PKCS12_fp 188 194 195 #define i2d_PUBKEY wolfSSL_i2d_PUBKEY 189 196 #define d2i_PUBKEY wolfSSL_d2i_PUBKEY 190 197 #define d2i_PUBKEY_bio wolfSSL_d2i_PUBKEY_bio 191 198 #define d2i_PrivateKey wolfSSL_d2i_PrivateKey 192 199 #define d2i_AutoPrivateKey wolfSSL_d2i_AutoPrivateKey 193 #define i2d_PrivateKey wolfSSL_i2d_PrivateKey194 200 #define SSL_use_PrivateKey wolfSSL_use_PrivateKey 195 201 #define SSL_use_PrivateKey_ASN1 wolfSSL_use_PrivateKey_ASN1 … … 286 292 #define SSL_set_verify wolfSSL_set_verify 287 293 #define SSL_set_verify_result wolfSSL_set_verify_result 294 #define SSL_verify_client_post_handshake wolfSSL_verify_client_post_handshake 295 #define SSL_set_post_handshake_auth wolfSSL_set_post_handshake_auth 296 #define SSL_CTX_set_post_handshake_auth wolfSSL_CTX_set_post_handshake_auth 288 297 #define SSL_pending wolfSSL_pending 289 298 #define SSL_load_error_strings wolfSSL_load_error_strings 290 299 #define SSL_library_init wolfSSL_library_init 300 #define OPENSSL_init_ssl wolfSSL_OPENSSL_init_ssl 291 301 #define OpenSSL_add_ssl_algorithms wolfSSL_library_init 292 302 #define SSL_CTX_set_session_cache_mode wolfSSL_CTX_set_session_cache_mode … … 297 307 #define SSL_CTX_set_security_level(...) 298 308 /* wolfSSL does not support exporting keying material */ 299 #define SSL_export_keying_material(...) 0 309 #define SSL_export_keying_material wolfSSL_export_keying_material 310 311 #define SSL_CTX_set1_groups wolfSSL_CTX_set1_groups 312 #define SSL_set1_groups wolfSSL_set1_groups 300 313 301 314 #define SSL_CTX_set1_groups_list wolfSSL_CTX_set1_groups_list … … 304 317 #define SSL_set_ex_data wolfSSL_set_ex_data 305 318 #define SSL_get_shutdown wolfSSL_get_shutdown 319 #define SSL_get_finished wolfSSL_get_finished 320 #define SSL_get_peer_finished wolfSSL_get_peer_finished 306 321 #define SSL_set_rfd wolfSSL_set_rfd 307 322 #define SSL_set_wfd wolfSSL_set_wfd … … 311 326 #define SSL_set_accept_state wolfSSL_set_accept_state 312 327 #define SSL_session_reused wolfSSL_session_reused 328 #define SSL_SESSION_up_ref wolfSSL_SESSION_up_ref 313 329 #define SSL_SESSION_dup wolfSSL_SESSION_dup 314 330 #define SSL_SESSION_free wolfSSL_SESSION_free … … 339 355 #define ASN1_BOOLEAN WOLFSSL_ASN1_BOOLEAN 340 356 #define X509_get_ext wolfSSL_X509_get_ext 357 #define X509_get_ext_by_OBJ wolfSSL_X509_get_ext_by_OBJ 341 358 #define X509_cmp wolfSSL_X509_cmp 342 359 #define X509_EXTENSION_get_object wolfSSL_X509_EXTENSION_get_object … … 350 367 #define DSA_dup_DH wolfSSL_DSA_dup_DH 351 368 /* wolfSSL does not support DSA as the cert public key */ 352 #define EVP_PKEY_get0_DSA (...) NULL353 #define DSA_bits (...) 0369 #define EVP_PKEY_get0_DSA wolfSSL_EVP_PKEY_get0_DSA 370 #define DSA_bits wolfSSL_DSA_bits 354 371 355 372 #define i2d_X509_bio wolfSSL_i2d_X509_bio 373 #define i2d_X509_REQ_bio wolfSSL_i2d_X509_REQ_bio 356 374 #define d2i_X509_bio wolfSSL_d2i_X509_bio 375 #define d2i_X509_REQ_bio wolfSSL_d2i_X509_REQ_bio 357 376 #define d2i_X509_fp wolfSSL_d2i_X509_fp 358 377 #define i2d_X509 wolfSSL_i2d_X509 359 378 #define d2i_X509 wolfSSL_d2i_X509 360 379 #define PEM_read_bio_X509 wolfSSL_PEM_read_bio_X509 380 #define PEM_read_bio_X509_REQ wolfSSL_PEM_read_bio_X509_REQ 361 381 #define PEM_read_bio_X509_CRL wolfSSL_PEM_read_bio_X509_CRL 362 382 #define PEM_read_bio_X509_AUX wolfSSL_PEM_read_bio_X509_AUX … … 369 389 370 390 #define i2d_X509_REQ wolfSSL_i2d_X509_REQ 391 #define d2i_X509_REQ wolfSSL_d2i_X509_REQ 371 392 #define X509_REQ_new wolfSSL_X509_REQ_new 372 393 #define X509_REQ_free wolfSSL_X509_REQ_free 373 394 #define X509_REQ_sign wolfSSL_X509_REQ_sign 395 #define X509_REQ_sign_ctx wolfSSL_X509_REQ_sign_ctx 374 396 #define X509_REQ_add_extensions wolfSSL_X509_REQ_add_extensions 397 #define X509_REQ_add1_attr_by_NID wolfSSL_X509_REQ_add1_attr_by_NID 398 #define X509_REQ_add1_attr_by_txt wolfSSL_X509_REQ_add1_attr_by_txt 399 #define X509_REQ_get_attr_by_NID wolfSSL_X509_REQ_get_attr_by_NID 400 #define X509_REQ_get_attr wolfSSL_X509_REQ_get_attr 401 #define X509_ATTRIBUTE_get0_type wolfSSL_X509_ATTRIBUTE_get0_type 402 #define X509_to_X509_REQ wolfSSL_X509_to_X509_REQ 375 403 #define X509_REQ_set_subject_name wolfSSL_X509_REQ_set_subject_name 376 404 #define X509_REQ_set_pubkey wolfSSL_X509_REQ_set_pubkey … … 384 412 #define X509_get_ext_count wolfSSL_X509_get_ext_count 385 413 #define X509_get_ext_d2i wolfSSL_X509_get_ext_d2i 414 #define X509V3_EXT_i2d wolfSSL_X509V3_EXT_i2d 415 #define X509_get0_extensions wolfSSL_X509_get0_extensions 416 #define X509_get_extensions wolfSSL_X509_get0_extensions 417 #define X509_REQ_get_extensions wolfSSL_X509_REQ_get_extensions 386 418 #define X509_get_ext wolfSSL_X509_get_ext 387 419 #define X509_get_ext_by_NID wolfSSL_X509_get_ext_by_NID 388 420 #define X509_get_issuer_name wolfSSL_X509_get_issuer_name 421 #define X509_issuer_name_hash wolfSSL_X509_issuer_name_hash 422 #define X509_subject_name_hash wolfSSL_X509_subject_name_hash 389 423 #define X509_get_subject_name wolfSSL_X509_get_subject_name 424 #define X509_REQ_get_subject_name wolfSSL_X509_get_subject_name 390 425 #define X509_get_pubkey wolfSSL_X509_get_pubkey 391 426 #define X509_get0_pubkey wolfSSL_X509_get_pubkey 427 #define X509_REQ_get_pubkey wolfSSL_X509_get_pubkey 392 428 #define X509_get_notBefore wolfSSL_X509_get_notBefore 429 #define X509_get0_notBefore wolfSSL_X509_get_notBefore 393 430 #define X509_get_notAfter wolfSSL_X509_get_notAfter 431 #define X509_get0_notAfter wolfSSL_X509_get_notAfter 394 432 #define X509_get_serialNumber wolfSSL_X509_get_serialNumber 395 433 #define X509_get0_pubkey_bitstr wolfSSL_X509_get0_pubkey_bitstr … … 409 447 #define X509_set_serialNumber wolfSSL_X509_set_serialNumber 410 448 #define X509_set_version wolfSSL_X509_set_version 449 #define X509_REQ_set_version wolfSSL_X509_set_version 411 450 #define X509_sign wolfSSL_X509_sign 451 #define X509_sign_ctx wolfSSL_X509_sign_ctx 412 452 #define X509_print wolfSSL_X509_print 453 #define X509_REQ_print wolfSSL_X509_print 413 454 #define X509_print_ex wolfSSL_X509_print_ex 455 #define X509_print_fp wolfSSL_X509_print_fp 456 #define X509_REQ_print_fp wolfSSL_X509_print_fp 457 #define X509_signature_print wolfSSL_X509_signature_print 458 #define X509_get0_signature wolfSSL_X509_get0_signature 414 459 #define X509_verify_cert_error_string wolfSSL_X509_verify_cert_error_string 415 460 #define X509_verify_cert wolfSSL_X509_verify_cert 461 #define X509_verify wolfSSL_X509_verify 462 #define X509_REQ_verify wolfSSL_X509_REQ_verify 416 463 #define X509_check_private_key wolfSSL_X509_check_private_key 464 #define X509_REQ_check_private_key wolfSSL_X509_check_private_key 417 465 #define X509_check_ca wolfSSL_X509_check_ca 418 466 #define X509_check_host wolfSSL_X509_check_host 467 #define X509_check_ip_asc wolfSSL_X509_check_ip_asc 419 468 #define X509_email_free wolfSSL_X509_email_free 420 469 #define X509_check_issued wolfSSL_X509_check_issued 421 470 #define X509_dup wolfSSL_X509_dup 471 #define X509_add_ext wolfSSL_X509_add_ext 472 #define X509_delete_ext wolfSSL_X509_delete_ext 422 473 423 474 #define X509_EXTENSION_get_object wolfSSL_X509_EXTENSION_get_object … … 432 483 #define sk_X509_pop wolfSSL_sk_X509_pop 433 484 #define sk_X509_pop_free wolfSSL_sk_X509_pop_free 434 #define sk_X509_dup wolfSSL_sk_ X509_dup485 #define sk_X509_dup wolfSSL_sk_dup 435 486 #define sk_X509_free wolfSSL_sk_X509_free 436 487 … … 440 491 #define sk_X509_EXTENSION_pop_free wolfSSL_sk_X509_EXTENSION_pop_free 441 492 #define sk_X509_EXTENSION_push wolfSSL_sk_X509_EXTENSION_push 442 #define X509_EXTENSION_free wolfSSL_X509_EXTENSION_free443 493 444 494 #define X509_INFO_new wolfSSL_X509_INFO_new … … 452 502 #define sk_X509_INFO_pop_free wolfSSL_sk_X509_INFO_pop_free 453 503 #define sk_X509_INFO_free wolfSSL_sk_X509_INFO_free 504 #define sk_X509_INFO_shift wolfSSL_sk_X509_INFO_pop 454 505 455 506 #define i2d_X509_NAME wolfSSL_i2d_X509_NAME 507 #define d2i_X509_NAME wolfSSL_d2i_X509_NAME 456 508 #define X509_NAME_new wolfSSL_X509_NAME_new 457 509 #define X509_NAME_free wolfSSL_X509_NAME_free … … 467 519 #define X509_NAME_add_entry_by_txt wolfSSL_X509_NAME_add_entry_by_txt 468 520 #define X509_NAME_add_entry_by_NID wolfSSL_X509_NAME_add_entry_by_NID 521 #define X509_NAME_delete_entry wolfSSL_X509_NAME_delete_entry 469 522 #define X509_NAME_oneline wolfSSL_X509_NAME_oneline 470 523 #define X509_NAME_get_index_by_NID wolfSSL_X509_NAME_get_index_by_NID 471 524 #define X509_NAME_print_ex wolfSSL_X509_NAME_print_ex 525 #define X509_NAME_print_ex_fp wolfSSL_X509_NAME_print_ex_fp 472 526 #define X509_NAME_digest wolfSSL_X509_NAME_digest 473 527 #define X509_cmp_current_time wolfSSL_X509_cmp_current_time … … 510 564 #define X509_STORE_CTX_get_chain wolfSSL_X509_STORE_CTX_get_chain 511 565 #define X509_STORE_CTX_get1_chain wolfSSL_X509_STORE_CTX_get1_chain 566 #define X509_STORE_CTX_get0_parent_ctx wolfSSL_X509_STORE_CTX_get0_parent_ctx 512 567 #define X509_STORE_CTX_get_error wolfSSL_X509_STORE_CTX_get_error 513 568 #define X509_STORE_CTX_get_error_depth wolfSSL_X509_STORE_CTX_get_error_depth … … 524 579 #define X509_STORE_CTX_get0_store wolfSSL_X509_STORE_CTX_get0_store 525 580 #define X509_STORE_CTX_get0_cert wolfSSL_X509_STORE_CTX_get0_cert 581 #define X509_STORE_CTX_trusted_stack wolfSSL_X509_STORE_CTX_trusted_stack 526 582 527 583 #define X509_STORE_set_verify_cb(s, c) \ … … 541 597 #define X509_STORE_CTX_get1_issuer wolfSSL_X509_STORE_CTX_get1_issuer 542 598 #define X509_STORE_CTX_set_time wolfSSL_X509_STORE_CTX_set_time 599 #define X509_VERIFY_PARAM_new wolfSSL_X509_VERIFY_PARAM_new 600 #define X509_VERIFY_PARAM_free wolfSSL_X509_VERIFY_PARAM_free 601 #define X509_VERIFY_PARAM_set_flags wolfSSL_X509_VERIFY_PARAM_set_flags 602 #define X509_VERIFY_PARAM_get_flags wolfSSL_X509_VERIFY_PARAM_get_flags 603 #define X509_VERIFY_PARAM_clear_flags wolfSSL_X509_VERIFY_PARAM_clear_flags 543 604 #define X509_VERIFY_PARAM_set_hostflags wolfSSL_X509_VERIFY_PARAM_set_hostflags 544 605 #define X509_VERIFY_PARAM_set1_host wolfSSL_X509_VERIFY_PARAM_set1_host … … 550 611 #define X509_LOOKUP_hash_dir wolfSSL_X509_LOOKUP_hash_dir 551 612 #define X509_LOOKUP_file wolfSSL_X509_LOOKUP_file 613 #define X509_LOOKUP_ctrl wolfSSL_X509_LOOKUP_ctrl 552 614 553 615 #define d2i_X509_CRL wolfSSL_d2i_X509_CRL … … 562 624 563 625 #define X509_get_X509_PUBKEY wolfSSL_X509_get_X509_PUBKEY 626 #define X509_REQ_get_X509_PUBKEY wolfSSL_X509_get_X509_PUBKEY 564 627 #define X509_get0_tbs_sigalg wolfSSL_X509_get0_tbs_sigalg 565 628 #define X509_PUBKEY_get0_param wolfSSL_X509_PUBKEY_get0_param … … 578 641 579 642 #define X509_OBJECT_free_contents wolfSSL_X509_OBJECT_free_contents 580 #define X509_subject_name_hash wolfSSL_X509_subject_name_hash581 643 582 644 #define X509_check_purpose(...) 0 … … 610 672 #define BIO_f_ssl wolfSSL_BIO_f_ssl 611 673 #define BIO_new_socket wolfSSL_BIO_new_socket 674 #ifndef NO_WOLFSSL_STUB 675 #define BIO_new_connect wolfSSL_BIO_new_connect 676 #define BIO_set_conn_port wolfSSL_BIO_set_conn_port 677 #define BIO_do_connect wolfSSL_BIO_do_connect 678 #endif 612 679 #define SSL_set_bio wolfSSL_set_bio 613 680 #define BIO_set_ssl wolfSSL_BIO_set_ssl … … 652 719 #define sk_ASN1_OBJECT_free wolfSSL_sk_ASN1_OBJECT_free 653 720 721 #define ASN1_TIME_new wolfSSL_ASN1_TIME_new 722 #define ASN1_UTCTIME_new wolfSSL_ASN1_TIME_new 654 723 #define ASN1_TIME_free wolfSSL_ASN1_TIME_free 724 #define ASN1_UTCTIME_free wolfSSL_ASN1_TIME_free 655 725 #define ASN1_TIME_adj wolfSSL_ASN1_TIME_adj 656 726 #define ASN1_TIME_print wolfSSL_ASN1_TIME_print 657 727 #define ASN1_TIME_to_generalizedtime wolfSSL_ASN1_TIME_to_generalizedtime 728 #define ASN1_TIME_set wolfSSL_ASN1_TIME_set 729 #define ASN1_TIME_set_string wolfSSL_ASN1_TIME_set_string 730 #define ASN1_TIME_to_string wolfSSL_ASN1_TIME_to_string 658 731 #define ASN1_GENERALIZEDTIME_print wolfSSL_ASN1_GENERALIZEDTIME_print 659 732 #define ASN1_GENERALIZEDTIME_free wolfSSL_ASN1_GENERALIZEDTIME_free … … 661 734 #define ASN1_tag2str wolfSSL_ASN1_tag2str 662 735 736 #define a2i_ASN1_INTEGER wolfSSL_a2i_ASN1_INTEGER 663 737 #define i2a_ASN1_INTEGER wolfSSL_i2a_ASN1_INTEGER 664 738 #define i2c_ASN1_INTEGER wolfSSL_i2c_ASN1_INTEGER … … 671 745 672 746 #define i2a_ASN1_OBJECT wolfSSL_i2a_ASN1_OBJECT 673 747 #define i2d_ASN1_OBJECT wolfSSL_i2d_ASN1_OBJECT 748 749 #define ASN1_STRING_new wolfSSL_ASN1_STRING_new 750 #define ASN1_STRING_free wolfSSL_ASN1_STRING_free 751 #define ASN1_STRING_cmp wolfSSL_ASN1_STRING_cmp 674 752 #define ASN1_STRING_data wolfSSL_ASN1_STRING_data 675 753 #define ASN1_STRING_get0_data wolfSSL_ASN1_STRING_data 676 754 #define ASN1_STRING_length wolfSSL_ASN1_STRING_length 677 755 #define ASN1_STRING_to_UTF8 wolfSSL_ASN1_STRING_to_UTF8 756 #define ASN1_UNIVERSALSTRING_to_string wolfSSL_ASN1_UNIVERSALSTRING_to_string 678 757 #define ASN1_STRING_print_ex wolfSSL_ASN1_STRING_print_ex 679 758 #define ASN1_STRING_print(x, y) wolfSSL_ASN1_STRING_print ((WOLFSSL_BIO*)(x), (WOLFSSL_ASN1_STRING*)(y)) 680 759 #define d2i_DISPLAYTEXT wolfSSL_d2i_DISPLAYTEXT 760 #ifndef NO_WOLFSSL_STUB 761 #define ASN1_STRING_set_default_mask_asc(...) 1 762 #endif 763 764 #define ASN1_PRINTABLE_type(...) V_ASN1_PRINTABLESTRING 681 765 682 766 #define ASN1_UTCTIME_pr wolfSSL_ASN1_UTCTIME_pr … … 799 883 NULL, __LINE__, __FILE__, NULL) 800 884 #endif 885 #ifndef WOLFCRYPT_ONLY 886 #define EVPerr(func, reason) wolfSSL_ERR_put_error(ERR_LIB_EVP, \ 887 (func), (reason), __FILE__, __LINE__) 888 #else 889 #define EVPerr(func, reason) WOLFSSL_ERROR_LINE((reason), \ 890 NULL, __LINE__, __FILE__, NULL) 891 #endif 801 892 802 893 #define SSLv23_server_method wolfSSLv23_server_method … … 860 951 #define CONF_modules_free() 861 952 #define ENGINE_cleanup() 862 #define HMAC_CTX_cleanup wolfSSL_HMAC_cleanup863 953 #define SSL_CTX_need_tmp_RSA(ctx) 0 864 954 #define SSL_CTX_set_tmp_rsa(ctx,rsa) 1 … … 897 987 #define sk_X509_NAME_find wolfSSL_sk_X509_NAME_find 898 988 899 enum { 900 GEN_DNS = 0x02, /* ASN_DNS_TYPE */ 901 GEN_EMAIL = 0x01, /* ASN_RFC822_TYPE */ 902 GEN_URI = 0x06, /* ASN_URI_TYPE */ 903 GEN_IPADD = 0x07, 904 GEN_RID = 0x08, /* Registered ID, not supported */ 905 }; 906 989 #define DHparams_dup wolfSSL_DH_dup 907 990 #define PEM_read_bio_DHparams wolfSSL_PEM_read_bio_DHparams 908 991 #define PEM_read_bio_DSAparams wolfSSL_PEM_read_bio_DSAparams … … 920 1003 #define sk_SSL_CIPHER_value wolfSSL_sk_SSL_CIPHER_value 921 1004 #endif /* OPENSSL_ALL || WOLFSSL_HAPROXY */ 922 #define sk_SSL_CIPHER_dup wolfSSL_sk_ SSL_CIPHER_dup1005 #define sk_SSL_CIPHER_dup wolfSSL_sk_dup 923 1006 #define sk_SSL_CIPHER_free wolfSSL_sk_SSL_CIPHER_free 924 1007 #define sk_SSL_CIPHER_find wolfSSL_sk_SSL_CIPHER_find … … 929 1012 930 1013 #define SSL_CTRL_CHAIN 88 931 #define GEN_IPADD 7932 1014 #define ERR_LIB_SSL 20 933 1015 #define SSL_R_SHORT_READ 10 934 1016 #define ERR_R_PEM_LIB 9 935 #define V_ASN1_IA5STRING 22936 #define V_ASN1_UTF8STRING 12937 1017 #define SSL_CTRL_MODE 33 938 1018 … … 969 1049 #define SSL_renegotiate wolfSSL_Rehandshake 970 1050 #define SSL_get_secure_renegotiation_support wolfSSL_SSL_get_secure_renegotiation_support 1051 #define SSL_renegotiate_pending wolfSSL_SSL_renegotiate_pending 971 1052 #define SSL_set_tlsext_debug_arg wolfSSL_set_tlsext_debug_arg 972 1053 #define SSL_set_tlsext_status_type wolfSSL_set_tlsext_status_type … … 992 1073 993 1074 #define SSL_get_tlsext_status_exts wolfSSL_get_tlsext_status_exts 1075 1076 #define SSL_CTX_get_tlsext_ticket_keys wolfSSL_CTX_get_tlsext_ticket_keys 1077 #define SSL_CTX_set_tlsext_ticket_keys wolfSSL_CTX_set_tlsext_ticket_keys 994 1078 995 1079 #define SSL_CTRL_CLEAR_NUM_RENEGOTIATIONS 11 … … 1099 1183 1100 1184 #endif /* HAVE_STUNNEL || WOLFSSL_NGINX */ 1185 1186 #ifndef NO_WOLFSSL_STUB 1187 #define b2i_PrivateKey_bio(...) NULL 1188 #define b2i_PVK_bio(...) NULL 1189 #endif 1190 1101 1191 #define SSL_CTX_get_default_passwd_cb wolfSSL_CTX_get_default_passwd_cb 1102 1192 #define SSL_CTX_get_default_passwd_cb_userdata wolfSSL_CTX_get_default_passwd_cb_userdata … … 1136 1226 1137 1227 #define OPENSSL_STRING WOLFSSL_STRING 1228 #define OPENSSL_CSTRING WOLFSSL_STRING 1138 1229 1139 1230 #define TLSEXT_TYPE_application_layer_protocol_negotiation 16 … … 1172 1263 #define OPENSSL_config wolfSSL_OPENSSL_config 1173 1264 #define OPENSSL_memdup wolfSSL_OPENSSL_memdup 1265 #define OPENSSL_cleanse wolfSSL_OPENSSL_cleanse 1174 1266 #define SSL_CTX_get_timeout wolfSSL_SSL_CTX_get_timeout 1175 1267 #define SSL_CTX_set_tmp_ecdh wolfSSL_SSL_CTX_set_tmp_ecdh 1268 #define SSL_CTX_set_ecdh_auto(...) 1176 1269 #define SSL_CTX_remove_session wolfSSL_SSL_CTX_remove_session 1177 1270 #define SSL_get_rbio wolfSSL_SSL_get_rbio … … 1184 1277 #define SSL_CTX_set_tlsext_status_cb wolfSSL_CTX_set_tlsext_status_cb 1185 1278 #define SSL_CTX_get_extra_chain_certs wolfSSL_CTX_get_extra_chain_certs 1279 #define sk_OPENSSL_STRING_num wolfSSL_sk_WOLFSSL_STRING_num 1186 1280 #define sk_OPENSSL_STRING_value wolfSSL_sk_WOLFSSL_STRING_value 1281 #define sk_OPENSSL_PSTRING_num wolfSSL_sk_WOLFSSL_STRING_num 1282 #define sk_OPENSSL_PSTRING_value (WOLFSSL_STRING*)wolfSSL_sk_WOLFSSL_STRING_value 1283 #define sk_OPENSSL_STRING_free wolfSSL_sk_free 1187 1284 #define SSL_get0_alpn_selected wolfSSL_get0_alpn_selected 1188 1285 #define SSL_select_next_proto wolfSSL_select_next_proto … … 1206 1303 #define SSL_CTX_set_srp_password wolfSSL_CTX_set_srp_password 1207 1304 #define SSL_CTX_set_srp_username wolfSSL_CTX_set_srp_username 1305 #define SSL_CTX_set_srp_strength wolfSSL_CTX_set_srp_strength 1208 1306 #define SSL_get_SSL_CTX wolfSSL_get_SSL_CTX 1209 1307 #define SSL_get0_param wolfSSL_get0_param 1308 #define SSL_get_srp_username wolfSSL_get_srp_username 1210 1309 1211 1310 #define ERR_NUM_ERRORS 16 … … 1237 1336 #define X509_OBJECT_get_type(x) 0 1238 1337 1239 #define OpenSSL_version(x) wolfSSL_lib_version() 1338 #define OpenSSL_version(x) wolfSSL_OpenSSL_version() 1339 1340 #ifndef NO_WOLFSSL_STUB 1341 #define OBJ_create_objects(...) 1342 #endif 1240 1343 1241 1344 #ifdef __cplusplus -
azure_iot_hub_f767zi/trunk/wolfssl-4.7.0/wolfssl/openssl/stack.h
r457 r464 35 35 WOLFSSL_API int wolfSSL_sk_GENERIC_push(WOLFSSL_STACK *sk, void *data); 36 36 WOLFSSL_API void wolfSSL_sk_pop_free(WOLFSSL_STACK *st, void (*func) (void *)); 37 WOLFSSL_API void wolfSSL_sk_CONF_VALUE_free(WOLF_STACK_OF(WOLFSSL_CONF_VALUE)* sk);38 37 WOLFSSL_API WOLFSSL_STACK *wolfSSL_sk_new_null(void); 39 38 -
azure_iot_hub_f767zi/trunk/wolfssl-4.7.0/wolfssl/openssl/x509.h
r457 r464 6 6 #include <wolfssl/openssl/ec.h> 7 7 #include <wolfssl/openssl/ecdsa.h> 8 #include <wolfssl/openssl/pkcs7.h> 8 9 9 10 /* wolfSSL_X509_print_ex flags */ … … 24 25 25 26 #define XN_FLAG_FN_SN 0 26 #define XN_FLAG_SEP_CPLUS_SPC 2 27 #define XN_FLAG_ONELINE 0 28 #define XN_FLAG_COMPAT 0 29 #define XN_FLAG_RFC2253 1 30 #define XN_FLAG_SEP_COMMA_PLUS (1 << 16) 31 #define XN_FLAG_SEP_CPLUS_SPC (2 << 16) 32 #define XN_FLAG_SEP_SPLUS_SPC (3 << 16) 33 #define XN_FLAG_SEP_MULTILINE (4 << 16) 34 #define XN_FLAG_SEP_MASK (0xF << 16) 35 #define XN_FLAG_DN_REV (1 << 20) 36 #define XN_FLAG_FN_LN (1 << 21) 37 #define XN_FLAG_FN_OID (2 << 21) 38 #define XN_FLAG_FN_NONE (3 << 21) 39 #define XN_FLAG_FN_MASK (3 << 21) 40 #define XN_FLAG_SPC_EQ (1 << 23) 41 #define XN_FLAG_DUMP_UNKNOWN_FIELDS (1 << 24) 42 #define XN_FLAG_FN_ALIGN (1 << 25) 43 44 #define XN_FLAG_MULTILINE 0xFFFF -
azure_iot_hub_f767zi/trunk/wolfssl-4.7.0/wolfssl/openssl/x509v3.h
r457 r464 41 41 42 42 typedef void *(*X509V3_EXT_D2I)(void *, const unsigned char **, long); 43 typedef int (*X509V3_EXT_I2D) (void *, unsigned char **); 43 44 typedef STACK_OF(CONF_VALUE) *(*X509V3_EXT_I2V) ( 44 45 struct WOLFSSL_v3_ext_method *method, … … 54 55 void *usr_data; 55 56 X509V3_EXT_D2I d2i; 57 X509V3_EXT_I2D i2d; 56 58 X509V3_EXT_I2V i2v; 57 59 X509V3_EXT_I2S i2s; … … 62 64 WOLFSSL_ASN1_OBJECT *obj; 63 65 WOLFSSL_ASN1_BOOLEAN crit; 64 WOLFSSL_ASN1_STRING value;66 ASN1_OCTET_STRING value; /* DER format of extension */ 65 67 WOLFSSL_v3_ext_method ext_method; 66 68 WOLFSSL_STACK* ext_sk; /* For extension specific data */ … … 82 84 #define X509V3_CTX WOLFSSL_X509V3_CTX 83 85 86 #define CTX_TEST 0x1 87 84 88 typedef struct WOLFSSL_AUTHORITY_KEYID AUTHORITY_KEYID; 85 89 typedef struct WOLFSSL_BASIC_CONSTRAINTS BASIC_CONSTRAINTS; … … 87 91 typedef WOLF_STACK_OF(WOLFSSL_ACCESS_DESCRIPTION) WOLFSSL_AUTHORITY_INFO_ACCESS; 88 92 93 WOLFSSL_API WOLFSSL_BASIC_CONSTRAINTS* wolfSSL_BASIC_CONSTRAINTS_new(void); 89 94 WOLFSSL_API void wolfSSL_BASIC_CONSTRAINTS_free(WOLFSSL_BASIC_CONSTRAINTS *bc); 95 WOLFSSL_API WOLFSSL_AUTHORITY_KEYID* wolfSSL_AUTHORITY_KEYID_new(void); 90 96 WOLFSSL_API void wolfSSL_AUTHORITY_KEYID_free(WOLFSSL_AUTHORITY_KEYID *id); 91 97 WOLFSSL_API const WOLFSSL_v3_ext_method* wolfSSL_X509V3_EXT_get( … … 96 102 WOLFSSL_API int wolfSSL_X509V3_EXT_print(WOLFSSL_BIO *out, 97 103 WOLFSSL_X509_EXTENSION *ext, unsigned long flag, int indent); 104 WOLFSSL_API int wolfSSL_X509V3_EXT_add_nconf(WOLFSSL_CONF *conf, WOLFSSL_X509V3_CTX *ctx, 105 const char *section, WOLFSSL_X509 *cert); 98 106 99 107 #define BASIC_CONSTRAINTS_free wolfSSL_BASIC_CONSTRAINTS_free … … 104 112 #define X509V3_EXT_get wolfSSL_X509V3_EXT_get 105 113 #define X509V3_EXT_d2i wolfSSL_X509V3_EXT_d2i 114 #define X509V3_EXT_add_nconf wolfSSL_X509V3_EXT_add_nconf 115 #ifndef NO_WOLFSSL_STUB 116 #define X509V3_parse_list(...) NULL 117 #endif 106 118 #define i2s_ASN1_OCTET_STRING wolfSSL_i2s_ASN1_STRING 107 119 #define X509V3_EXT_print wolfSSL_X509V3_EXT_print 108 #define X509V3_EXT_conf_nid wolfSSL_X509V3_EXT_conf_nid 109 #define X509V3_set_ctx wolfSSL_X509V3_set_ctx 110 #define X509V3_set_ctx_nodb wolfSSL_X509V3_set_ctx_nodb 120 #define X509V3_EXT_conf_nid wolfSSL_X509V3_EXT_conf_nid 121 #define X509V3_set_ctx wolfSSL_X509V3_set_ctx 122 #ifndef NO_WOLFSSL_STUB 123 #define X509V3_set_nconf(...) 124 #endif 125 #define X509V3_set_ctx_test(ctx) wolfSSL_X509V3_set_ctx(ctx, NULL, NULL, NULL, NULL, CTX_TEST) 126 #define X509V3_set_ctx_nodb wolfSSL_X509V3_set_ctx_nodb 127 #define X509v3_get_ext_count wolfSSL_sk_num 111 128 112 129 #ifdef __cplusplus -
azure_iot_hub_f767zi/trunk/wolfssl-4.7.0/wolfssl/ssl.h
r457 r464 41 41 #endif 42 42 43 #ifdef WOLF_CRYPTO_CB 44 #include <wolfssl/wolfcrypt/cryptocb.h> 45 #endif 46 43 47 /* used internally by wolfSSL while OpenSSL types aren't */ 44 48 #include <wolfssl/callbacks.h> … … 99 103 #endif 100 104 105 /* LHASH is implemented as a stack */ 106 typedef struct WOLFSSL_STACK WOLFSSL_LHASH; 107 #ifndef WOLF_LHASH_OF 108 #define WOLF_LHASH_OF(x) WOLFSSL_LHASH 109 #endif 110 111 #ifndef WOLF_STACK_OF 112 #define WOLF_STACK_OF(x) WOLFSSL_STACK 113 #endif 114 #ifndef DECLARE_STACK_OF 115 #define DECLARE_STACK_OF(x) WOLF_STACK_OF(x); 116 #endif 117 101 118 #ifndef WOLFSSL_WOLFSSL_TYPE_DEFINED 102 119 #define WOLFSSL_WOLFSSL_TYPE_DEFINED … … 172 189 typedef struct WOLFSSL_BIO_METHOD WOLFSSL_BIO_METHOD; 173 190 typedef struct WOLFSSL_X509_EXTENSION WOLFSSL_X509_EXTENSION; 174 typedef struct WOLFSSL_CONF_VALUE WOLFSSL_CONF_VALUE;175 191 typedef struct WOLFSSL_ASN1_OBJECT WOLFSSL_ASN1_OBJECT; 176 192 typedef struct WOLFSSL_ASN1_OTHERNAME WOLFSSL_ASN1_OTHERNAME; … … 186 202 typedef struct WOLFSSL_ASN1_BIT_STRING WOLFSSL_ASN1_BIT_STRING; 187 203 typedef struct WOLFSSL_ASN1_TYPE WOLFSSL_ASN1_TYPE; 204 typedef struct WOLFSSL_X509_ATTRIBUTE WOLFSSL_X509_ATTRIBUTE; 188 205 189 206 typedef struct WOLFSSL_GENERAL_NAME WOLFSSL_GENERAL_NAME; … … 192 209 typedef struct WOLFSSL_ACCESS_DESCRIPTION WOLFSSL_ACCESS_DESCRIPTION; 193 210 194 #if defined(OPENSSL_ALL) || defined(OPENSSL_EXTRA) 211 #if defined(OPENSSL_ALL) || defined(OPENSSL_EXTRA) || defined(WOLFSSL_WPAS_SMALL) 195 212 196 213 struct WOLFSSL_AUTHORITY_KEYID { … … 275 292 WOLFSSL_ASN1_INTEGER *pathlen; 276 293 #endif 277 unsigned char dynamic; /* if 1 then obj was dynamically created, 0 otherwise */ 294 unsigned char dynamic; /* Use WOLFSSL_ASN1_DYNAMIC and WOLFSSL_ASN1_DYNAMIC_DATA 295 * to determine what needs to be freed. */ 278 296 279 297 #if defined(WOLFSSL_APACHE_HTTPD) … … 312 330 WOLFSSL_ASN1_STRING* sequence; 313 331 } value; 332 }; 333 334 struct WOLFSSL_X509_ATTRIBUTE { 335 WOLFSSL_ASN1_OBJECT *object; 336 WOLFSSL_ASN1_TYPE *value; 337 WOLF_STACK_OF(WOLFSSL_ASN1_TYPE) *set; 314 338 }; 315 339 … … 468 492 void* ptr; /* WOLFSSL, file descriptor, MD, or mem buf */ 469 493 void* usrCtx; /* user set pointer */ 494 const char* ip; /* IP address for wolfIO_TcpConnect */ 495 word16 port; /* Port for wolfIO_TcpConnect */ 470 496 char* infoArg; /* BIO callback argument */ 471 497 wolf_bio_info_cb infoCb; /* BIO callback */ … … 495 521 } WOLFSSL_COMP; 496 522 523 #define WOLFSSL_X509_L_FILE_LOAD 0x1 524 #define WOLFSSL_X509_L_ADD_DIR 0x2 525 #define WOLFSSL_X509_L_ADD_STORE 0x3 526 #define WOLFSSL_X509_L_LOAD_STORE 0x4 527 497 528 struct WOLFSSL_X509_LOOKUP_METHOD { 498 529 int type; … … 507 538 WOLFSSL_CERT_MANAGER* cm; 508 539 WOLFSSL_X509_LOOKUP lookup; 509 #if def OPENSSL_EXTRA540 #if defined(OPENSSL_EXTRA) || defined(WOLFSSL_WPAS_SMALL) 510 541 int isDynamic; 511 542 WOLFSSL_X509_VERIFY_PARAM* param; /* certificate validation parameter */ … … 517 548 WOLFSSL_CRYPTO_EX_DATA ex_data; 518 549 #endif 519 #if defined(OPENSSL_EXTRA) && defined(HAVE_CRL) 520 WOLFSSL_X509_CRL *crl; 521 #endif 522 }; 523 524 #ifdef OPENSSL_EXTRA 550 #if (defined(OPENSSL_EXTRA) || defined(WOLFSSL_WPAS_SMALL)) && defined(HAVE_CRL) 551 WOLFSSL_X509_CRL *crl; /* points to cm->crl */ 552 #endif 553 }; 554 555 #define WOLFSSL_NO_WILDCARDS 0x4 556 557 #if defined(OPENSSL_ALL) || defined(OPENSSL_EXTRA) || \ 558 defined(WOLFSSL_WPAS_SMALL) || defined(WOLFSSL_IP_ALT_NAME) 559 #define WOLFSSL_MAX_IPSTR 46 /* max ip size IPv4 mapped IPv6 */ 560 #endif /* OPENSSL_ALL || WOLFSSL_IP_ALT_NAME */ 561 562 #if defined(OPENSSL_EXTRA) || defined(WOLFSSL_WPAS_SMALL) 525 563 #define WOLFSSL_USE_CHECK_TIME 0x2 526 564 #define WOLFSSL_NO_CHECK_TIME 0x200000 527 #define WOLFSSL_NO_WILDCARDS 0x4528 565 #define WOLFSSL_HOST_NAME_MAX 256 529 #define WOLFSSL_MAX_IPSTR 46 /* max ip size IPv4 mapped IPv6 */530 566 struct WOLFSSL_X509_VERIFY_PARAM { 531 567 time_t check_time; … … 535 571 char ipasc[WOLFSSL_MAX_IPSTR]; 536 572 }; 537 #endif 573 #endif /* OPENSSL_EXTRA || WOLFSSL_WPAS_SMALL */ 538 574 539 575 typedef struct WOLFSSL_ALERT { … … 710 746 WOLFSSL_API WOLFSSL_METHOD *wolfTLSv1_1_client_method(void); 711 747 WOLFSSL_API WOLFSSL_METHOD *wolfTLSv1_2_method(void); 712 WOLFSSL_A PI WOLFSSL_METHOD *wolfTLSv1_2_server_method(void);748 WOLFSSL_ABI WOLFSSL_API WOLFSSL_METHOD *wolfTLSv1_2_server_method(void); 713 749 WOLFSSL_ABI WOLFSSL_API WOLFSSL_METHOD *wolfTLSv1_2_client_method(void); 714 750 #ifdef WOLFSSL_TLS13 715 751 WOLFSSL_API WOLFSSL_METHOD *wolfTLSv1_3_method(void); 716 WOLFSSL_A PI WOLFSSL_METHOD *wolfTLSv1_3_server_method(void);752 WOLFSSL_ABI WOLFSSL_API WOLFSSL_METHOD *wolfTLSv1_3_server_method(void); 717 753 WOLFSSL_ABI WOLFSSL_API WOLFSSL_METHOD *wolfTLSv1_3_client_method(void); 718 754 #endif … … 743 779 #endif /* WOLFSSL_DTLS_EXPORT_TYPES */ 744 780 745 WOLFSSL_API int wolfSSL_dtls_import(WOLFSSL* ssl, unsigned char* buf,781 WOLFSSL_API int wolfSSL_dtls_import(WOLFSSL* ssl, const unsigned char* buf, 746 782 unsigned int sz); 747 783 WOLFSSL_API int wolfSSL_CTX_dtls_set_export(WOLFSSL_CTX* ctx, … … 789 825 #define WOLFSSL_LOAD_VERIFY_DEFAULT_FLAGS WOLFSSL_LOAD_FLAG_NONE 790 826 #endif 827 828 WOLFSSL_API long wolfSSL_get_verify_depth(WOLFSSL* ssl); 829 WOLFSSL_API long wolfSSL_CTX_get_verify_depth(WOLFSSL_CTX* ctx); 830 WOLFSSL_API void wolfSSL_CTX_set_verify_depth(WOLFSSL_CTX *ctx,int depth); 791 831 #endif /* !NO_CERTS */ 832 833 #define WOLFSSL_CIPHER_SUITE_FLAG_NONE 0x0 834 #define WOLFSSL_CIPHER_SUITE_FLAG_NAMEALIAS 0x1 792 835 793 836 #if !defined(NO_FILESYSTEM) && !defined(NO_CERTS) … … 806 849 WOLFSSL_API int wolfSSL_CTX_use_RSAPrivateKey_file(WOLFSSL_CTX*, const char*, int); 807 850 808 WOLFSSL_API long wolfSSL_get_verify_depth(WOLFSSL* ssl);809 WOLFSSL_API long wolfSSL_CTX_get_verify_depth(WOLFSSL_CTX* ctx);810 WOLFSSL_API void wolfSSL_CTX_set_verify_depth(WOLFSSL_CTX *ctx,int depth);811 851 WOLFSSL_ABI WOLFSSL_API int wolfSSL_use_certificate_file(WOLFSSL*, const char*, 812 852 int); … … 853 893 WOLFSSL_API const char* wolfSSL_get_cipher_name_iana_from_suite( 854 894 const unsigned char, const unsigned char); 895 WOLFSSL_API int wolfSSL_get_cipher_suite_from_name(const char* name, 896 byte* cipherSuite0, byte* cipherSuite, int* flags); 855 897 WOLFSSL_API const char* wolfSSL_get_shared_ciphers(WOLFSSL* ssl, char* buf, 856 898 int len); … … 862 904 WOLFSSL_ABI WOLFSSL_API int wolfSSL_read(WOLFSSL*, void*, int); 863 905 WOLFSSL_API int wolfSSL_peek(WOLFSSL*, void*, int); 864 WOLFSSL_A PI int wolfSSL_accept(WOLFSSL*);906 WOLFSSL_ABI WOLFSSL_API int wolfSSL_accept(WOLFSSL*); 865 907 WOLFSSL_API int wolfSSL_CTX_mutual_auth(WOLFSSL_CTX* ctx, int req); 866 908 WOLFSSL_API int wolfSSL_mutual_auth(WOLFSSL* ssl, int req); … … 885 927 WOLFSSL_API int wolfSSL_set_groups(WOLFSSL* ssl, int* groups, int count); 886 928 929 #ifdef OPENSSL_EXTRA 930 WOLFSSL_API int wolfSSL_CTX_set1_groups(WOLFSSL_CTX* ctx, int* groups, 931 int count); 932 WOLFSSL_API int wolfSSL_set1_groups(WOLFSSL* ssl, int* groups, int count); 933 #endif 934 887 935 WOLFSSL_API int wolfSSL_connect_TLSv13(WOLFSSL*); 888 936 WOLFSSL_API int wolfSSL_accept_TLSv13(WOLFSSL*); … … 892 940 unsigned int sz); 893 941 WOLFSSL_API int wolfSSL_set_max_early_data(WOLFSSL* ssl, unsigned int sz); 894 WOLFSSL_API int wolfSSL_write_early_data(WOLFSSL*, const void*, int, int*); 895 WOLFSSL_API int wolfSSL_read_early_data(WOLFSSL*, void*, int, int*); 896 #endif 897 #endif 942 WOLFSSL_API int wolfSSL_write_early_data(WOLFSSL* ssl, const void* data, 943 int sz, int* outSz); 944 WOLFSSL_API int wolfSSL_read_early_data(WOLFSSL* ssl, void* data, int sz, 945 int* outSz); 946 #endif /* WOLFSSL_EARLY_DATA */ 947 #endif /* WOLFSSL_TLS13 */ 898 948 WOLFSSL_ABI WOLFSSL_API void wolfSSL_CTX_free(WOLFSSL_CTX*); 899 949 WOLFSSL_ABI WOLFSSL_API void wolfSSL_free(WOLFSSL*); … … 919 969 WOLFSSL_BIO**, size_t); 920 970 921 WOLFSSL_API int wolfSSL_RSA_padding_add_PKCS1_PSS(WOLFSSL_RSA *rsa, unsigned char *EM, 971 WOLFSSL_API int wolfSSL_RSA_padding_add_PKCS1_PSS(WOLFSSL_RSA *rsa, 972 unsigned char *EM, 922 973 const unsigned char *mHash, 923 const WOLFSSL_EVP_MD *Hash, int saltLen); 974 const WOLFSSL_EVP_MD *hashAlg, 975 int saltLen); 924 976 WOLFSSL_API int wolfSSL_RSA_verify_PKCS1_PSS(WOLFSSL_RSA *rsa, const unsigned char *mHash, 925 977 const WOLFSSL_EVP_MD *hashAlg, … … 970 1022 WOLFSSL_API void wolfSSL_set_verify(WOLFSSL*, int, VerifyCallback verify_callback); 971 1023 WOLFSSL_API void wolfSSL_set_verify_result(WOLFSSL*, long); 1024 1025 #if defined(OPENSSL_EXTRA) && !defined(NO_CERTS) && \ 1026 defined(WOLFSSL_TLS13) && defined(WOLFSSL_POST_HANDSHAKE_AUTH) 1027 WOLFSSL_API int wolfSSL_verify_client_post_handshake(WOLFSSL*); 1028 WOLFSSL_API int wolfSSL_CTX_set_post_handshake_auth(WOLFSSL_CTX*, int); 1029 WOLFSSL_API int wolfSSL_set_post_handshake_auth(WOLFSSL*, int); 1030 #endif 1031 972 1032 WOLFSSL_API void wolfSSL_SetCertCbCtx(WOLFSSL*, void*); 973 1033 … … 1008 1068 WOLFSSL_API int wolfSSL_CTX_set_cipher_list(WOLFSSL_CTX*, const char*); 1009 1069 WOLFSSL_API int wolfSSL_set_cipher_list(WOLFSSL*, const char*); 1070 1071 #ifdef HAVE_KEYING_MATERIAL 1072 /* Keying Material Exporter for TLS */ 1073 WOLFSSL_API int wolfSSL_export_keying_material(WOLFSSL *ssl, 1074 unsigned char *out, size_t outLen, 1075 const char *label, size_t labelLen, 1076 const unsigned char *context, size_t contextLen, 1077 int use_context); 1078 #endif /* HAVE_KEYING_MATERIAL */ 1010 1079 1011 1080 /* Nonblocking DTLS helper functions */ … … 1066 1135 /* extras */ 1067 1136 1068 1069 /* for now LHASH is not implemented */1070 typedef int WOLFSSL_LHASH;1071 #ifndef WOLF_LHASH_OF1072 #define WOLF_LHASH_OF(x) WOLFSSL_LHASH1073 #endif1074 1075 #ifndef WOLF_STACK_OF1076 #define WOLF_STACK_OF(x) WOLFSSL_STACK1077 #endif1078 #ifndef DECLARE_STACK_OF1079 #define DECLARE_STACK_OF(x) WOLF_STACK_OF(x);1080 #endif1081 1082 1137 WOLFSSL_API WOLFSSL_STACK* wolfSSL_sk_new_node(void* heap); 1083 1138 WOLFSSL_API void wolfSSL_sk_free(WOLFSSL_STACK* sk); 1084 1139 WOLFSSL_API void wolfSSL_sk_free_node(WOLFSSL_STACK* in); 1140 WOLFSSL_API WOLFSSL_STACK* wolfSSL_sk_dup(WOLFSSL_STACK* sk); 1085 1141 WOLFSSL_API int wolfSSL_sk_push_node(WOLFSSL_STACK** stack, WOLFSSL_STACK* in); 1086 1142 WOLFSSL_API WOLFSSL_STACK* wolfSSL_sk_get_node(WOLFSSL_STACK* sk, int idx); … … 1103 1159 WOLFSSL_X509* x509); 1104 1160 WOLFSSL_API WOLFSSL_X509* wolfSSL_sk_X509_pop(WOLF_STACK_OF(WOLFSSL_X509_NAME)* sk); 1105 WOLFSSL_API WOLFSSL_STACK* wolfSSL_sk_X509_dup(WOLFSSL_STACK* sk);1106 1161 WOLFSSL_API void wolfSSL_sk_X509_free(WOLF_STACK_OF(WOLFSSL_X509_NAME)* sk); 1107 1162 WOLFSSL_API WOLFSSL_GENERAL_NAME* wolfSSL_GENERAL_NAME_new(void); 1108 1163 WOLFSSL_API void wolfSSL_GENERAL_NAME_free(WOLFSSL_GENERAL_NAME* gn); 1109 WOLFSSL_API int wolfSSL_sk_GENERAL_NAME_push(WOLF_STACK_OF(WOLFSSL_GENERAL_NAME)* sk, 1110 WOLFSSL_GENERAL_NAME* gn); 1164 WOLFSSL_API WOLFSSL_GENERAL_NAMES* wolfSSL_GENERAL_NAMES_dup( 1165 WOLFSSL_GENERAL_NAMES* gns); 1166 WOLFSSL_API int wolfSSL_sk_GENERAL_NAME_push(WOLFSSL_GENERAL_NAMES* sk, 1167 WOLFSSL_GENERAL_NAME* gn); 1111 1168 WOLFSSL_API WOLFSSL_GENERAL_NAME* wolfSSL_sk_GENERAL_NAME_value( 1112 1169 WOLFSSL_STACK* sk, int i); … … 1130 1187 WOLFSSL_API WOLF_STACK_OF(WOLFSSL_X509_EXTENSION)* wolfSSL_sk_X509_EXTENSION_new_null(void); 1131 1188 WOLFSSL_API WOLFSSL_ASN1_OBJECT* wolfSSL_ASN1_OBJECT_new(void); 1189 WOLFSSL_API WOLFSSL_ASN1_OBJECT* wolfSSL_ASN1_OBJECT_dup(WOLFSSL_ASN1_OBJECT* obj); 1132 1190 WOLFSSL_API void wolfSSL_ASN1_OBJECT_free(WOLFSSL_ASN1_OBJECT* obj); 1133 1191 WOLFSSL_API WOLFSSL_STACK* wolfSSL_sk_new_asn1_obj(void); … … 1141 1199 void (*f)(WOLFSSL_ASN1_OBJECT*)); 1142 1200 WOLFSSL_API int wolfSSL_ASN1_STRING_to_UTF8(unsigned char **out, WOLFSSL_ASN1_STRING *in); 1201 WOLFSSL_API int wolfSSL_ASN1_UNIVERSALSTRING_to_string(WOLFSSL_ASN1_STRING *s); 1143 1202 WOLFSSL_API int wolfSSL_sk_X509_EXTENSION_num(WOLF_STACK_OF(WOLFSSL_X509_EXTENSION)* sk); 1144 1203 WOLFSSL_API WOLFSSL_X509_EXTENSION* wolfSSL_sk_X509_EXTENSION_value( … … 1154 1213 WOLFSSL_API void wolfSSL_set_accept_state(WOLFSSL*); 1155 1214 WOLFSSL_API int wolfSSL_session_reused(WOLFSSL*); 1215 WOLFSSL_API int wolfSSL_SESSION_up_ref(WOLFSSL_SESSION* session); 1156 1216 WOLFSSL_API WOLFSSL_SESSION* wolfSSL_SESSION_dup(WOLFSSL_SESSION* session); 1217 WOLFSSL_API WOLFSSL_SESSION* wolfSSL_SESSION_new(void); 1157 1218 WOLFSSL_API void wolfSSL_SESSION_free(WOLFSSL_SESSION* session); 1158 1219 WOLFSSL_API int wolfSSL_is_init_finished(WOLFSSL*); 1159 1220 1160 WOLFSSL_API const char* wolfSSL_get_version( WOLFSSL*);1221 WOLFSSL_API const char* wolfSSL_get_version(const WOLFSSL*); 1161 1222 WOLFSSL_API int wolfSSL_get_current_cipher_suite(WOLFSSL* ssl); 1162 1223 WOLFSSL_API WOLFSSL_CIPHER* wolfSSL_get_current_cipher(WOLFSSL*); … … 1254 1315 #ifndef NO_FILESYSTEM 1255 1316 WOLFSSL_API WOLFSSL_BIO_METHOD *wolfSSL_BIO_s_file(void); 1317 WOLFSSL_API WOLFSSL_BIO *wolfSSL_BIO_new_fd(int fd, int close_flag); 1256 1318 #endif 1257 1319 1258 1320 WOLFSSL_API WOLFSSL_BIO_METHOD *wolfSSL_BIO_s_bio(void); 1259 1321 WOLFSSL_API WOLFSSL_BIO_METHOD *wolfSSL_BIO_s_socket(void); 1322 1323 WOLFSSL_API WOLFSSL_BIO *wolfSSL_BIO_new_connect(const char *str); 1324 WOLFSSL_API long wolfSSL_BIO_set_conn_port(WOLFSSL_BIO *b, char* port); 1325 WOLFSSL_API long wolfSSL_BIO_do_connect(WOLFSSL_BIO *b); 1260 1326 1261 1327 WOLFSSL_API long wolfSSL_BIO_ctrl(WOLFSSL_BIO *bp, int cmd, long larg, void *parg); … … 1313 1379 WOLFSSL_API int wolfSSL_i2d_X509_NAME(WOLFSSL_X509_NAME* n, 1314 1380 unsigned char** out); 1381 WOLFSSL_API WOLFSSL_X509_NAME *wolfSSL_d2i_X509_NAME(WOLFSSL_X509_NAME **name, 1382 unsigned char **in, long length); 1315 1383 #ifndef NO_RSA 1316 1384 WOLFSSL_API int wolfSSL_RSA_print(WOLFSSL_BIO* bio, WOLFSSL_RSA* rsa, int offset); … … 1318 1386 WOLFSSL_API int wolfSSL_X509_print_ex(WOLFSSL_BIO* bio, WOLFSSL_X509* x509, 1319 1387 unsigned long nmflags, unsigned long cflag); 1388 #ifndef NO_FILESYSTEM 1389 WOLFSSL_API int wolfSSL_X509_print_fp(XFILE fp, WOLFSSL_X509 *x509); 1390 #endif 1391 WOLFSSL_API int wolfSSL_X509_signature_print(WOLFSSL_BIO *bp, 1392 const WOLFSSL_X509_ALGOR *sigalg, const WOLFSSL_ASN1_STRING *sig); 1393 WOLFSSL_API void wolfSSL_X509_get0_signature(const WOLFSSL_ASN1_BIT_STRING **psig, 1394 const WOLFSSL_X509_ALGOR **palg, const WOLFSSL_X509 *x509); 1320 1395 WOLFSSL_API int wolfSSL_X509_print(WOLFSSL_BIO* bio, WOLFSSL_X509* x509); 1321 1396 WOLFSSL_ABI WOLFSSL_API char* wolfSSL_X509_NAME_oneline(WOLFSSL_X509_NAME*, … … 1326 1401 WOLFSSL_ABI WOLFSSL_API WOLFSSL_X509_NAME* wolfSSL_X509_get_issuer_name( 1327 1402 WOLFSSL_X509*); 1403 WOLFSSL_API unsigned long wolfSSL_X509_issuer_name_hash(const WOLFSSL_X509* x509); 1328 1404 WOLFSSL_ABI WOLFSSL_API WOLFSSL_X509_NAME* wolfSSL_X509_get_subject_name( 1329 1405 WOLFSSL_X509*); 1406 WOLFSSL_API unsigned long wolfSSL_X509_subject_name_hash(const WOLFSSL_X509* x509); 1330 1407 WOLFSSL_API int wolfSSL_X509_ext_isSet_by_NID(WOLFSSL_X509*, int); 1331 1408 WOLFSSL_API int wolfSSL_X509_ext_get_critical_by_NID(WOLFSSL_X509*, int); … … 1340 1417 1341 1418 WOLFSSL_API int wolfSSL_X509_verify(WOLFSSL_X509* x509, WOLFSSL_EVP_PKEY* pkey); 1419 #ifdef WOLFSSL_CERT_REQ 1420 WOLFSSL_API int wolfSSL_X509_REQ_verify(WOLFSSL_X509* x509, WOLFSSL_EVP_PKEY* pkey); 1421 #endif 1342 1422 WOLFSSL_API int wolfSSL_X509_set_subject_name(WOLFSSL_X509*, 1343 1423 WOLFSSL_X509_NAME*); … … 1356 1436 WOLFSSL_API int wolfSSL_X509_sign(WOLFSSL_X509* x509, WOLFSSL_EVP_PKEY* pkey, 1357 1437 const WOLFSSL_EVP_MD* md); 1438 WOLFSSL_API int wolfSSL_X509_sign_ctx(WOLFSSL_X509 *x509, WOLFSSL_EVP_MD_CTX *ctx); 1358 1439 1359 1440 … … 1366 1447 1367 1448 WOLFSSL_API WOLFSSL_ASN1_STRING* wolfSSL_ASN1_STRING_new(void); 1449 WOLFSSL_API WOLFSSL_ASN1_STRING* wolfSSL_ASN1_STRING_dup(WOLFSSL_ASN1_STRING* asn1); 1368 1450 WOLFSSL_API WOLFSSL_ASN1_STRING* wolfSSL_ASN1_STRING_type_new(int type); 1369 1451 WOLFSSL_API int wolfSSL_ASN1_STRING_type(const WOLFSSL_ASN1_STRING* asn1); 1370 1452 WOLFSSL_API WOLFSSL_ASN1_STRING* wolfSSL_d2i_DISPLAYTEXT(WOLFSSL_ASN1_STRING **asn, const unsigned char **in, long len); 1453 WOLFSSL_API int wolfSSL_ASN1_STRING_cmp(const WOLFSSL_ASN1_STRING *a, const WOLFSSL_ASN1_STRING *b); 1371 1454 WOLFSSL_API void wolfSSL_ASN1_STRING_free(WOLFSSL_ASN1_STRING* asn1); 1372 1455 WOLFSSL_API int wolfSSL_ASN1_STRING_set(WOLFSSL_ASN1_STRING* asn1, … … 1387 1470 WOLFSSL_API WOLFSSL_X509_LOOKUP_METHOD* wolfSSL_X509_LOOKUP_hash_dir(void); 1388 1471 WOLFSSL_API WOLFSSL_X509_LOOKUP_METHOD* wolfSSL_X509_LOOKUP_file(void); 1472 WOLFSSL_API int wolfSSL_X509_LOOKUP_ctrl(WOLFSSL_X509_LOOKUP *ctx, int cmd, 1473 const char *argc, long argl, char **ret); 1389 1474 1390 1475 WOLFSSL_API WOLFSSL_X509_LOOKUP* wolfSSL_X509_STORE_add_lookup(WOLFSSL_X509_STORE*, … … 1398 1483 WOLFSSL_API WOLFSSL_STACK* wolfSSL_X509_STORE_CTX_get1_chain( 1399 1484 WOLFSSL_X509_STORE_CTX* ctx); 1485 WOLFSSL_API WOLFSSL_X509_STORE_CTX *wolfSSL_X509_STORE_CTX_get0_parent_ctx( 1486 WOLFSSL_X509_STORE_CTX *ctx); 1400 1487 WOLFSSL_API int wolfSSL_X509_STORE_set_flags(WOLFSSL_X509_STORE* store, 1401 1488 unsigned long flag); … … 1408 1495 WOLFSSL_API void wolfSSL_X509_STORE_CTX_free(WOLFSSL_X509_STORE_CTX*); 1409 1496 WOLFSSL_API void wolfSSL_X509_STORE_CTX_cleanup(WOLFSSL_X509_STORE_CTX*); 1497 WOLFSSL_API void wolfSSL_X509_STORE_CTX_trusted_stack(WOLFSSL_X509_STORE_CTX *ctx, 1498 WOLF_STACK_OF(WOLFSSL_X509) *sk); 1410 1499 1411 1500 WOLFSSL_API WOLFSSL_ASN1_TIME* wolfSSL_X509_CRL_get_lastUpdate(WOLFSSL_X509_CRL*); 1412 1501 WOLFSSL_API WOLFSSL_ASN1_TIME* wolfSSL_X509_CRL_get_nextUpdate(WOLFSSL_X509_CRL*); 1413 WOLFSSL_A SN1_TIME* wolfSSL_X509_gmtime_adj(WOLFSSL_ASN1_TIME *s, long adj);1502 WOLFSSL_API WOLFSSL_ASN1_TIME* wolfSSL_X509_gmtime_adj(WOLFSSL_ASN1_TIME *s, long adj); 1414 1503 1415 1504 WOLFSSL_API WOLFSSL_EVP_PKEY* wolfSSL_X509_get_pubkey(WOLFSSL_X509*); … … 1422 1511 WOLFSSL_API WOLFSSL_EVP_PKEY* wolfSSL_d2i_PUBKEY(WOLFSSL_EVP_PKEY** key, 1423 1512 const unsigned char** in, long inSz); 1513 WOLFSSL_API int wolfSSL_i2d_PUBKEY(const WOLFSSL_EVP_PKEY *key, unsigned char **der); 1424 1514 WOLFSSL_API WOLFSSL_EVP_PKEY* wolfSSL_d2i_PrivateKey(int type, 1425 1515 WOLFSSL_EVP_PKEY** out, const unsigned char **in, long inSz); 1426 1516 WOLFSSL_API WOLFSSL_EVP_PKEY* wolfSSL_d2i_PrivateKey_EVP(WOLFSSL_EVP_PKEY** key, 1427 1517 unsigned char** in, long inSz); 1428 WOLFSSL_API int wolfSSL_i2d_PrivateKey( WOLFSSL_EVP_PKEY* key,1518 WOLFSSL_API int wolfSSL_i2d_PrivateKey(const WOLFSSL_EVP_PKEY* key, 1429 1519 unsigned char** der); 1430 1520 WOLFSSL_API int wolfSSL_X509_cmp_current_time(const WOLFSSL_ASN1_TIME*); … … 1440 1530 unsigned long flags, 1441 1531 time_t t); 1532 WOLFSSL_API WOLFSSL_X509_VERIFY_PARAM* wolfSSL_X509_VERIFY_PARAM_new(void); 1533 WOLFSSL_API void wolfSSL_X509_VERIFY_PARAM_free(WOLFSSL_X509_VERIFY_PARAM *param); 1534 WOLFSSL_API int wolfSSL_X509_VERIFY_PARAM_set_flags(WOLFSSL_X509_VERIFY_PARAM *param, 1535 unsigned long flags); 1536 WOLFSSL_API int wolfSSL_X509_VERIFY_PARAM_get_flags(WOLFSSL_X509_VERIFY_PARAM *param); 1537 WOLFSSL_API int wolfSSL_X509_VERIFY_PARAM_clear_flags(WOLFSSL_X509_VERIFY_PARAM *param, 1538 unsigned long flags); 1442 1539 WOLFSSL_API void wolfSSL_X509_VERIFY_PARAM_set_hostflags( 1443 1540 WOLFSSL_X509_VERIFY_PARAM* param, unsigned int flags); … … 1565 1662 WOLFSSL_API int wolfSSL_CTX_set_srp_password(WOLFSSL_CTX*, char*); 1566 1663 WOLFSSL_API int wolfSSL_CTX_set_srp_username(WOLFSSL_CTX*, char*); 1664 WOLFSSL_API int wolfSSL_CTX_set_srp_strength(WOLFSSL_CTX *ctx, int strength); 1665 1666 WOLFSSL_API char* wolfSSL_get_srp_username(WOLFSSL *ssl); 1567 1667 1568 1668 WOLFSSL_API long wolfSSL_set_options(WOLFSSL *s, long op); … … 1572 1672 WOLFSSL_API long wolfSSL_total_renegotiations(WOLFSSL *s); 1573 1673 WOLFSSL_API long wolfSSL_num_renegotiations(WOLFSSL* s); 1674 WOLFSSL_API int wolfSSL_SSL_renegotiate_pending(WOLFSSL *s); 1574 1675 WOLFSSL_API long wolfSSL_set_tmp_dh(WOLFSSL *s, WOLFSSL_DH *dh); 1575 1676 WOLFSSL_API long wolfSSL_set_tlsext_debug_arg(WOLFSSL *s, void *arg); … … 1598 1699 }; 1599 1700 1600 #if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL) || \1601 defined(HAVE_WEBSERVER)1602 1701 /* Separated out from other enums because of size */ 1603 1702 enum { … … 1646 1745 }; 1647 1746 1747 #if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL) || \ 1748 defined(HAVE_WEBSERVER) 1648 1749 /* for compatibility these must be macros */ 1649 1750 #define SSL_OP_NO_SSLv2 WOLFSSL_OP_NO_SSLv2 … … 1714 1815 SSL_MODE_RELEASE_BUFFERS = -1, /* For libwebsockets build. No current use. */ 1715 1816 1716 BIO_FLAGS_BASE64_NO_NL = 1,1717 1817 BIO_CLOSE = 1, 1718 1818 BIO_NOCLOSE = 0, … … 1772 1872 X509_R_CERT_ALREADY_IN_HASH_TABLE, 1773 1873 1774 XN_FLAG_SPC_EQ = (1 << 23),1775 XN_FLAG_SEP_CPLUS_SPC = (2 << 16),1776 XN_FLAG_ONELINE = 0,1777 XN_FLAG_RFC2253 = 1,1778 XN_FLAG_DN_REV = (1 << 20),1779 1780 1874 CRYPTO_LOCK = 1, 1781 1875 CRYPTO_NUM_LOCKS = 10, … … 1790 1884 /* wolfSSL extension, provide last error from SSL_get_error 1791 1885 since not using thread storage error queue */ 1792 #include <stdio.h> 1886 #ifdef FUSION_RTOS 1887 #include <fclstdio.h> 1888 #else 1889 #include <stdio.h> 1890 #endif 1793 1891 WOLFSSL_API void wolfSSL_ERR_print_errors_fp(XFILE, int err); 1794 1892 #if defined(OPENSSL_EXTRA) || defined(DEBUG_WOLFSSL_VERBOSE) … … 1951 2049 wc_psk_server_tls13_callback); 1952 2050 #endif 2051 WOLFSSL_API void* wolfSSL_get_psk_callback_ctx(WOLFSSL*); 2052 WOLFSSL_API int wolfSSL_set_psk_callback_ctx(WOLFSSL*, void*); 2053 2054 WOLFSSL_API void* wolfSSL_CTX_get_psk_callback_ctx(WOLFSSL_CTX*); 2055 WOLFSSL_API int wolfSSL_CTX_set_psk_callback_ctx(WOLFSSL_CTX*, void*); 1953 2056 1954 2057 #define PSK_TYPES_DEFINED … … 1993 2096 WOLFSSL_API long wolfSSL_CTX_clear_options(WOLFSSL_CTX*, long); 1994 2097 1995 #if ndef NO_CERTS2098 #if !defined(NO_CHECK_PRIVATE_KEY) 1996 2099 WOLFSSL_API int wolfSSL_CTX_check_private_key(const WOLFSSL_CTX*); 1997 #endif /* !NO_CERTS */ 1998 2100 #endif 1999 2101 WOLFSSL_API void wolfSSL_ERR_free_strings(void); 2000 2102 WOLFSSL_API void wolfSSL_ERR_remove_state(unsigned long); … … 2041 2143 #ifdef OPENSSL_EXTRA 2042 2144 WOLFSSL_API WOLFSSL_ASN1_TIME *wolfSSL_ASN1_TIME_set(WOLFSSL_ASN1_TIME *s, time_t t); 2043 #endif 2044 2045 WOLFSSL_API int wolfSSL_sk_num(WOLFSSL_STACK* sk); 2046 WOLFSSL_API void* wolfSSL_sk_value(WOLFSSL_STACK* sk, int i); 2047 2048 #if defined(HAVE_EX_DATA) || defined(FORTRESS) 2145 WOLFSSL_API int wolfSSL_ASN1_TIME_set_string(WOLFSSL_ASN1_TIME *s, const char *str); 2146 #endif 2147 2148 WOLFSSL_API int wolfSSL_sk_num(const WOLFSSL_STACK* sk); 2149 WOLFSSL_API void* wolfSSL_sk_value(const WOLFSSL_STACK* sk, int i); 2150 2151 #if (defined(HAVE_EX_DATA) || defined(FORTRESS)) && \ 2152 (defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL) || defined(WOLFSSL_WPAS_SMALL)) 2049 2153 WOLFSSL_API void* wolfSSL_CRYPTO_get_ex_data(const WOLFSSL_CRYPTO_EX_DATA* ex_data, 2050 2154 int idx); … … 2088 2192 /* which library version do we have */ 2089 2193 WOLFSSL_API const char* wolfSSL_lib_version(void); 2194 WOLFSSL_API const char* wolfSSL_OpenSSL_version(void); 2090 2195 /* which library version do we have in hex */ 2091 2196 WOLFSSL_API word32 wolfSSL_lib_version_hex(void); … … 2135 2240 2136 2241 WOLFSSL_ABI WOLFSSL_API char* wolfSSL_X509_get_next_altname(WOLFSSL_X509*); 2242 WOLFSSL_API int wolfSSL_X509_add_altname_ex(WOLFSSL_X509*, const char*, word32, int); 2137 2243 WOLFSSL_API int wolfSSL_X509_add_altname(WOLFSSL_X509*, const char*, int); 2138 2244 … … 2141 2247 WOLFSSL_API WOLFSSL_X509* 2142 2248 wolfSSL_X509_d2i(WOLFSSL_X509** x509, const unsigned char* in, int len); 2249 #ifdef WOLFSSL_CERT_REQ 2250 WOLFSSL_API WOLFSSL_X509* 2251 wolfSSL_X509_REQ_d2i(WOLFSSL_X509** x509, const unsigned char* in, int len); 2252 #endif 2143 2253 WOLFSSL_API int wolfSSL_i2d_X509(WOLFSSL_X509* x509, unsigned char** out); 2144 2254 WOLFSSL_API WOLFSSL_X509_CRL *wolfSSL_d2i_X509_CRL(WOLFSSL_X509_CRL **crl, 2145 2255 const unsigned char *in, int len); 2146 #if ndef NO_FILESYSTEM2256 #if !defined(NO_FILESYSTEM) && !defined(NO_STDIO_FILESYSTEM) 2147 2257 WOLFSSL_API WOLFSSL_X509_CRL *wolfSSL_d2i_X509_CRL_fp(XFILE file, WOLFSSL_X509_CRL **crl); 2148 2258 #endif … … 2159 2269 WOLFSSL_API WOLFSSL_X509* wolfSSL_X509_load_certificate_buffer( 2160 2270 const unsigned char* buf, int sz, int format); 2271 #ifdef WOLFSSL_CERT_REQ 2272 WOLFSSL_API WOLFSSL_X509* wolfSSL_X509_REQ_load_certificate_buffer( 2273 const unsigned char* buf, int sz, int format); 2274 #endif 2161 2275 2162 2276 #ifdef WOLFSSL_SEP … … 2179 2293 WC_PKCS12** pkcs12); 2180 2294 WOLFSSL_API int wolfSSL_i2d_PKCS12_bio(WOLFSSL_BIO *bio, WC_PKCS12 *pkcs12); 2181 #if ndef NO_FILESYSTEM2295 #if !defined(NO_FILESYSTEM) && !defined(NO_STDIO_FILESYSTEM) 2182 2296 WOLFSSL_API WOLFSSL_X509_PKCS12* wolfSSL_d2i_PKCS12_fp(XFILE fp, 2183 2297 WOLFSSL_X509_PKCS12** pkcs12); … … 2186 2300 WOLFSSL_EVP_PKEY** pkey, WOLFSSL_X509** cert, 2187 2301 WOLF_STACK_OF(WOLFSSL_X509)** ca); 2302 WOLFSSL_API int wolfSSL_PKCS12_verify_mac(WC_PKCS12 *pkcs12, const char *psw, 2303 int pswLen); 2188 2304 WOLFSSL_API WC_PKCS12* wolfSSL_PKCS12_create(char* pass, char* name, 2189 2305 WOLFSSL_EVP_PKEY* pkey, WOLFSSL_X509* cert, … … 2287 2403 const unsigned char*, long, int); 2288 2404 WOLFSSL_API int wolfSSL_CTX_use_PrivateKey_id(WOLFSSL_CTX*, 2289 const unsigned char*, long, int, long); 2405 const unsigned char*, long, 2406 int, long); 2407 WOLFSSL_API int wolfSSL_CTX_use_PrivateKey_Id(WOLFSSL_CTX*, 2408 const unsigned char*, long, 2409 int); 2410 WOLFSSL_API int wolfSSL_CTX_use_PrivateKey_Label(WOLFSSL_CTX*, const char*, 2411 int); 2290 2412 WOLFSSL_API int wolfSSL_CTX_use_certificate_chain_buffer_format(WOLFSSL_CTX*, 2291 2413 const unsigned char*, long, int); … … 2301 2423 long, int); 2302 2424 WOLFSSL_API int wolfSSL_use_PrivateKey_id(WOLFSSL*, const unsigned char*, 2303 long, int, long); 2425 long, int, long); 2426 WOLFSSL_API int wolfSSL_use_PrivateKey_Id(WOLFSSL*, const unsigned char*, 2427 long, int); 2428 WOLFSSL_API int wolfSSL_use_PrivateKey_Label(WOLFSSL*, const char*, int); 2304 2429 WOLFSSL_API int wolfSSL_use_certificate_chain_buffer_format(WOLFSSL*, 2305 2430 const unsigned char*, long, int); … … 2311 2436 defined(KEEP_OUR_CERT) 2312 2437 WOLFSSL_API WOLFSSL_X509* wolfSSL_get_certificate(WOLFSSL* ssl); 2438 WOLFSSL_API WOLFSSL_X509* wolfSSL_CTX_get0_certificate(WOLFSSL_CTX* ctx); 2313 2439 #endif 2314 2440 #endif … … 2369 2495 WOLFSSL_API int wolfSSL_GetOutputSize(WOLFSSL*, int); 2370 2496 WOLFSSL_API int wolfSSL_GetMaxOutputSize(WOLFSSL*); 2371 WOLFSSL_API int wolfSSL_GetVersion( WOLFSSL* ssl);2497 WOLFSSL_API int wolfSSL_GetVersion(const WOLFSSL* ssl); 2372 2498 WOLFSSL_API int wolfSSL_SetVersion(WOLFSSL* ssl, int version); 2373 2499 … … 2425 2551 2426 2552 WOLFSSL_API const unsigned char* wolfSSL_GetMacSecret(WOLFSSL*, int); 2553 WOLFSSL_API const unsigned char* wolfSSL_GetDtlsMacSecret(WOLFSSL*, int, int); 2427 2554 WOLFSSL_API const unsigned char* wolfSSL_GetClientWriteKey(WOLFSSL*); 2428 2555 WOLFSSL_API const unsigned char* wolfSSL_GetClientWriteIV(WOLFSSL*); … … 2528 2655 const unsigned char* priv, unsigned int privSz, 2529 2656 const unsigned char* otherPubKeyDer, unsigned int otherPubKeySz, 2530 unsigned char* out, unsigned int* outlen,2657 unsigned char* out, word32* outlen, 2531 2658 void* ctx); 2532 2659 WOLFSSL_API void wolfSSL_CTX_SetDhAgreeCb(WOLFSSL_CTX*, CallbackDhAgree); … … 2626 2753 typedef int (*CallbackRsaSign)(WOLFSSL* ssl, 2627 2754 const unsigned char* in, unsigned int inSz, 2628 unsigned char* out, unsigned int* outSz,2755 unsigned char* out, word32* outSz, 2629 2756 const unsigned char* keyDer, unsigned int keySz, 2630 2757 void* ctx); … … 2671 2798 typedef int (*CallbackRsaEnc)(WOLFSSL* ssl, 2672 2799 const unsigned char* in, unsigned int inSz, 2673 unsigned char* out, unsigned int* outSz,2800 unsigned char* out, word32* outSz, 2674 2801 const unsigned char* keyDer, unsigned int keySz, 2675 2802 void* ctx); … … 2698 2825 WOLFSSL_API WOLFSSL_CERT_MANAGER* wolfSSL_CertManagerNew(void); 2699 2826 WOLFSSL_API void wolfSSL_CertManagerFree(WOLFSSL_CERT_MANAGER*); 2827 WOLFSSL_API int wolfSSL_CertManager_up_ref(WOLFSSL_CERT_MANAGER*); 2700 2828 2701 2829 WOLFSSL_API int wolfSSL_CertManagerLoadCA(WOLFSSL_CERT_MANAGER*, const char* f, … … 2748 2876 WOLFSSL_API int wolfSSL_CertManagerDisableOCSPStapling( 2749 2877 WOLFSSL_CERT_MANAGER* cm); 2878 WOLFSSL_API int wolfSSL_CertManagerEnableOCSPMustStaple( 2879 WOLFSSL_CERT_MANAGER* cm); 2880 WOLFSSL_API int wolfSSL_CertManagerDisableOCSPMustStaple( 2881 WOLFSSL_CERT_MANAGER* cm); 2750 2882 #if defined(OPENSSL_EXTRA) && defined(WOLFSSL_SIGNER_DER_CERT) && !defined(NO_FILESYSTEM) 2751 2883 WOLFSSL_API WOLFSSL_STACK* wolfSSL_CertManagerGetCerts(WOLFSSL_CERT_MANAGER* cm); … … 2784 2916 WOLFSSL_API int wolfSSL_CTX_EnableOCSPStapling(WOLFSSL_CTX*); 2785 2917 WOLFSSL_API int wolfSSL_CTX_DisableOCSPStapling(WOLFSSL_CTX*); 2918 WOLFSSL_API int wolfSSL_CTX_EnableOCSPMustStaple(WOLFSSL_CTX*); 2919 WOLFSSL_API int wolfSSL_CTX_DisableOCSPMustStaple(WOLFSSL_CTX*); 2786 2920 #endif /* !NO_CERTS */ 2787 2921 … … 2899 3033 }; 2900 3034 2901 #if defined(OPENSSL_ALL) || defined(WOLFSSL_NGINX) || defined(WOLFSSL_HAPROXY) 3035 #if defined(OPENSSL_ALL) || defined(WOLFSSL_NGINX) || defined(WOLFSSL_HAPROXY) || defined(HAVE_LIGHTY) 2902 3036 typedef int (*CallbackALPNSelect)(WOLFSSL* ssl, const unsigned char** out, 2903 3037 unsigned char* outLen, const unsigned char* in, unsigned int inLen, … … 3032 3166 WOLFSSL_ECC_X25519 = 29, 3033 3167 WOLFSSL_ECC_X448 = 30, 3168 WOLFSSL_ECC_MAX = 30, 3034 3169 3035 3170 WOLFSSL_FFDHE_2048 = 256, … … 3049 3184 3050 3185 #ifdef HAVE_SUPPORTED_CURVES 3051 #ifndef NO_WOLFSSL_CLIENT3052 3053 3186 WOLFSSL_API int wolfSSL_UseSupportedCurve(WOLFSSL* ssl, word16 name); 3054 3187 WOLFSSL_API int wolfSSL_CTX_UseSupportedCurve(WOLFSSL_CTX* ctx, 3055 3188 word16 name); 3056 3057 #endif3058 3189 #endif 3059 3190 … … 3078 3209 /* Session Ticket */ 3079 3210 #ifdef HAVE_SESSION_TICKET 3211 3212 #if !defined(WOLFSSL_NO_DEF_TICKET_ENC_CB) && !defined(WOLFSSL_NO_SERVER) 3213 #if defined(HAVE_CHACHA) && defined(HAVE_POLY1305) && \ 3214 !defined(WOLFSSL_TICKET_ENC_AES128_GCM) && \ 3215 !defined(WOLFSSL_TICKET_ENC_AES256_GCM) 3216 #define WOLFSSL_TICKET_KEY_SZ CHACHA20_POLY1305_AEAD_KEYSIZE 3217 #elif defined(WOLFSSL_TICKET_ENC_AES256_GCM) 3218 #define WOLFSSL_TICKET_KEY_SZ AES_256_KEY_SIZE 3219 #else 3220 #define WOLFSSL_TICKET_KEY_SZ AES_128_KEY_SIZE 3221 #endif 3222 3223 #define WOLFSSL_TICKET_KEYS_SZ (WOLFSSL_TICKET_NAME_SZ + \ 3224 2 * WOLFSSL_TICKET_KEY_SZ + \ 3225 sizeof(word32) * 2) 3226 #endif 3080 3227 3081 3228 #ifndef NO_WOLFSSL_CLIENT … … 3102 3249 3103 3250 #ifndef NO_WOLFSSL_SERVER 3251 3252 WOLFSSL_API int wolfSSL_CTX_NoTicketTLSv12(WOLFSSL_CTX* ctx); 3253 WOLFSSL_API int wolfSSL_NoTicketTLSv12(WOLFSSL* ssl); 3104 3254 3105 3255 typedef int (*SessionTicketEncCb)(WOLFSSL*, … … 3208 3358 #include <wolfssl/openssl/asn1.h> 3209 3359 struct WOLFSSL_X509_NAME_ENTRY { 3210 WOLFSSL_ASN1_OBJECT object; /* static object just for keeping grp, type */ 3211 WOLFSSL_ASN1_STRING data; 3360 WOLFSSL_ASN1_OBJECT* object; /* static object just for keeping grp, type */ 3212 3361 WOLFSSL_ASN1_STRING* value; /* points to data, for lighttpd port */ 3213 3362 int nid; /* i.e. ASN_COMMON_NAME */ … … 3220 3369 int idx); 3221 3370 3222 #endif /* OPENSSL_ALL || OPENSSL_EXTRA || OPENSSL_EXTRA_X509_SMALL */ 3223 3224 3225 #if defined(OPENSSL_EXTRA) || defined(OPENSSL_ALL) 3371 3226 3372 3227 3373 enum { … … 3269 3415 3270 3416 WOLFSSL_API unsigned long wolfSSL_ERR_peek_last_error_line(const char **file, int *line); 3271 WOLFSSL_API long wolfSSL_ctrl(WOLFSSL* ssl, int cmd, long opt, void* pt);3272 3417 WOLFSSL_API long wolfSSL_CTX_ctrl(WOLFSSL_CTX* ctx, int cmd, long opt,void* pt); 3273 3418 WOLFSSL_API long wolfSSL_CTX_callback_ctrl(WOLFSSL_CTX* ctx, int cmd, void (*fp)(void)); … … 3289 3434 int type, const unsigned char *bytes, 3290 3435 int len, int loc, int set); 3436 WOLFSSL_API WOLFSSL_X509_NAME_ENTRY *wolfSSL_X509_NAME_delete_entry( 3437 WOLFSSL_X509_NAME *name, int loc); 3291 3438 WOLFSSL_API int wolfSSL_X509_NAME_cmp(const WOLFSSL_X509_NAME* x, 3292 3439 const WOLFSSL_X509_NAME* y); … … 3294 3441 WOLFSSL_API WOLFSSL_X509* wolfSSL_X509_dup(WOLFSSL_X509*); 3295 3442 WOLFSSL_API WOLFSSL_X509_NAME* wolfSSL_X509_NAME_dup(WOLFSSL_X509_NAME*); 3443 WOLFSSL_API int wolfSSL_X509_NAME_copy(WOLFSSL_X509_NAME*, WOLFSSL_X509_NAME*); 3296 3444 WOLFSSL_API int wolfSSL_check_private_key(const WOLFSSL* ssl); 3445 #endif /* !NO_CERTS */ 3446 #endif /* OPENSSL_ALL || OPENSSL_EXTRA || OPENSSL_EXTRA_X509_SMALL */ 3447 3448 #if defined(OPENSSL_ALL) || defined(WOLFSSL_ASIO) || defined(WOLFSSL_HAPROXY) \ 3449 || defined(WOLFSSL_NGINX) || defined(WOLFSSL_QT) 3450 WOLFSSL_API long wolfSSL_ctrl(WOLFSSL* ssl, int cmd, long opt, void* pt); 3451 #endif 3452 3453 #ifdef WOLFSSL_WPAS_SMALL 3454 /* WPA Supplicant requires GEN_ values */ 3455 #include <wolfssl/openssl/x509v3.h> 3456 #endif 3457 3458 #if defined(OPENSSL_EXTRA) || defined(WOLFSSL_WPAS_SMALL) 3297 3459 WOLFSSL_API void* wolfSSL_X509_get_ext_d2i(const WOLFSSL_X509* x509, 3298 3460 int nid, int* c, int* idx); 3461 #endif /* OPENSSL_EXTRA || WOLFSSL_WPAS_SMALL */ 3462 3463 #if defined(OPENSSL_EXTRA) || defined(OPENSSL_ALL) 3464 #ifndef NO_CERTS 3299 3465 WOLFSSL_API int wolfSSL_X509_get_ext_count(const WOLFSSL_X509* passedCert); 3300 3466 WOLFSSL_API int wolfSSL_X509_get_ext_by_NID(const WOLFSSL_X509 *x, int nid, int lastpos); 3301 3467 WOLFSSL_API int wolfSSL_X509_add_ext(WOLFSSL_X509 *x, WOLFSSL_X509_EXTENSION *ex, int loc); 3468 WOLFSSL_API WOLFSSL_X509_EXTENSION *wolfSSL_X509V3_EXT_i2d(int nid, int crit, 3469 void *data); 3470 WOLFSSL_API WOLFSSL_X509_EXTENSION *wolfSSL_X509_delete_ext(WOLFSSL_X509 *x509, int loc); 3302 3471 WOLFSSL_API WOLFSSL_X509_EXTENSION* wolfSSL_X509V3_EXT_conf_nid( 3303 3472 WOLF_LHASH_OF(CONF_VALUE)* conf, WOLFSSL_X509V3_CTX* ctx, int nid, … … 3323 3492 #if defined(WOLFSSL_QT) || defined(OPENSSL_ALL) 3324 3493 WOLFSSL_API int wolfSSL_X509_cmp(const WOLFSSL_X509* a, const WOLFSSL_X509* b); 3494 WOLFSSL_API const WOLFSSL_STACK *wolfSSL_X509_get0_extensions(const WOLFSSL_X509 *x); 3495 WOLFSSL_API const WOLFSSL_STACK *wolfSSL_X509_REQ_get_extensions(const WOLFSSL_X509 *x); 3325 3496 WOLFSSL_API WOLFSSL_X509_EXTENSION* wolfSSL_X509_get_ext(const WOLFSSL_X509* x, int loc); 3497 WOLFSSL_API int wolfSSL_X509_get_ext_by_OBJ(const WOLFSSL_X509 *x, 3498 const WOLFSSL_ASN1_OBJECT *obj, int lastpos); 3326 3499 WOLFSSL_API WOLFSSL_X509_EXTENSION* wolfSSL_X509_set_ext(WOLFSSL_X509* x, int loc); 3327 3500 WOLFSSL_API int wolfSSL_X509_EXTENSION_get_critical(const WOLFSSL_X509_EXTENSION* ex); … … 3336 3509 WOLFSSL_API WOLFSSL_ASN1_OBJECT* wolfSSL_X509_EXTENSION_get_object(WOLFSSL_X509_EXTENSION* ext); 3337 3510 WOLFSSL_API WOLFSSL_ASN1_STRING* wolfSSL_X509_EXTENSION_get_data(WOLFSSL_X509_EXTENSION* ext); 3338 #endif /* NO_CERTS */3511 #endif /* !NO_CERTS */ 3339 3512 3340 3513 WOLFSSL_API WOLFSSL_DH *wolfSSL_DSA_dup_DH(const WOLFSSL_DSA *r); … … 3344 3517 WOLFSSL_API int wolfSSL_SESSION_get_master_key_length(const WOLFSSL_SESSION* ses); 3345 3518 3346 WOLFSSL_API void wolfSSL_CTX_set_cert_store(WOLFSSL_CTX* ctx,3347 WOLFSSL_X509_STORE* str);3348 3519 WOLFSSL_API int wolfSSL_i2d_X509_bio(WOLFSSL_BIO* bio, WOLFSSL_X509* x509); 3520 #ifdef WOLFSSL_CERT_REQ 3521 WOLFSSL_API int wolfSSL_i2d_X509_REQ_bio(WOLFSSL_BIO* bio, WOLFSSL_X509* x509); 3522 #endif 3349 3523 #if !defined(NO_FILESYSTEM) 3350 3524 WOLFSSL_API WOLFSSL_X509* wolfSSL_d2i_X509_fp(XFILE fp, … … 3354 3528 WOLFSSL_API WOLFSSL_X509* wolfSSL_d2i_X509_bio(WOLFSSL_BIO* bio, 3355 3529 WOLFSSL_X509** x509); 3530 #ifdef WOLFSSL_CERT_REQ 3531 WOLFSSL_API WOLFSSL_X509* wolfSSL_d2i_X509_REQ_bio(WOLFSSL_BIO* bio, 3532 WOLFSSL_X509** x509); 3533 #endif 3534 #endif /* OPENSSL_EXTRA || OPENSSL_ALL */ 3535 3536 #if defined(OPENSSL_EXTRA) || defined(WOLFSSL_WPAS_SMALL) 3537 WOLFSSL_API void wolfSSL_CTX_set_cert_store(WOLFSSL_CTX* ctx, 3538 WOLFSSL_X509_STORE* str); 3356 3539 WOLFSSL_API WOLFSSL_X509_STORE* wolfSSL_CTX_get_cert_store(WOLFSSL_CTX* ctx); 3357 3540 WOLFSSL_API size_t wolfSSL_get_server_random(const WOLFSSL *ssl, 3541 unsigned char *out, size_t outlen); 3542 WOLFSSL_API size_t wolfSSL_get_client_random(const WOLFSSL* ssl, 3543 unsigned char* out, size_t outSz); 3544 #endif /* OPENSSL_EXTRA || WOLFSSL_WPAS_SMALL */ 3545 3546 #if defined(OPENSSL_EXTRA) || defined(OPENSSL_ALL) 3358 3547 WOLFSSL_API size_t wolfSSL_BIO_wpending(const WOLFSSL_BIO *bio); 3359 3548 WOLFSSL_API size_t wolfSSL_BIO_ctrl_pending(WOLFSSL_BIO *b); 3360 3549 3361 WOLFSSL_API size_t wolfSSL_get_server_random(const WOLFSSL *ssl,3362 unsigned char *out, size_t outlen);3363 3550 WOLFSSL_API int wolfSSL_get_server_tmp_key(const WOLFSSL*, WOLFSSL_EVP_PKEY**); 3364 3551 … … 3366 3553 WOLFSSL_API int wolfSSL_CTX_set_max_proto_version(WOLFSSL_CTX*, int); 3367 3554 3368 WOLFSSL_API size_t wolfSSL_get_client_random(const WOLFSSL* ssl,3369 unsigned char* out, size_t outSz);3370 3555 WOLFSSL_API int wolfSSL_CTX_use_PrivateKey(WOLFSSL_CTX *ctx, WOLFSSL_EVP_PKEY *pkey); 3371 3556 WOLFSSL_API WOLFSSL_X509 *wolfSSL_PEM_read_bio_X509(WOLFSSL_BIO *bp, WOLFSSL_X509 **x, pem_password_cb *cb, void *u); 3557 #ifdef WOLFSSL_CERT_REQ 3558 WOLFSSL_API WOLFSSL_X509 *wolfSSL_PEM_read_bio_X509_REQ(WOLFSSL_BIO *bp, WOLFSSL_X509 **x, pem_password_cb *cb, void *u); 3559 #endif 3372 3560 WOLFSSL_API WOLFSSL_X509_CRL *wolfSSL_PEM_read_bio_X509_CRL(WOLFSSL_BIO *bp, 3373 3561 WOLFSSL_X509_CRL **x, pem_password_cb *cb, void *u); … … 3386 3574 unsigned char* data, long* len, 3387 3575 pem_password_cb* callback, void* ctx); 3576 #endif /* OPENSSL_EXTRA || OPENSSL_ALL */ 3388 3577 3389 3578 /*lighttp compatibility */ 3390 3579 3580 #if defined(OPENSSL_EXTRA) || defined(WOLFSSL_WPAS_SMALL) || \ 3581 defined(OPENSSL_EXTRA_X509_SMALL) 3391 3582 struct WOLFSSL_ASN1_BIT_STRING { 3392 3583 int length; … … 3396 3587 }; 3397 3588 3589 WOLFSSL_API WOLFSSL_X509_NAME_ENTRY *wolfSSL_X509_NAME_get_entry(WOLFSSL_X509_NAME *name, int loc); 3590 #endif /* OPENSSL_EXTRA || WOLFSSL_WPAS_SMALL */ 3591 3592 #if defined(OPENSSL_EXTRA) || defined(OPENSSL_ALL)|| \ 3593 defined(OPENSSL_EXTRA_X509_SMALL) 3398 3594 3399 3595 #if defined(OPENSSL_EXTRA) \ … … 3403 3599 || defined(HAVE_STUNNEL) \ 3404 3600 || defined(WOLFSSL_NGINX) \ 3405 || defined(WOLFSSL_HAPROXY) 3601 || defined(WOLFSSL_HAPROXY) \ 3602 || defined(OPENSSL_EXTRA_X509_SMALL) 3406 3603 WOLFSSL_API void wolfSSL_X509_NAME_ENTRY_free(WOLFSSL_X509_NAME_ENTRY* ne); 3407 3604 WOLFSSL_API WOLFSSL_X509_NAME_ENTRY* wolfSSL_X509_NAME_ENTRY_new(void); … … 3415 3612 WOLFSSL_API int wolfSSL_set_app_data(WOLFSSL *ssl, void *arg); 3416 3613 WOLFSSL_API WOLFSSL_ASN1_OBJECT * wolfSSL_X509_NAME_ENTRY_get_object(WOLFSSL_X509_NAME_ENTRY *ne); 3417 WOLFSSL_API WOLFSSL_X509_NAME_ENTRY *wolfSSL_X509_NAME_get_entry(WOLFSSL_X509_NAME *name, int loc);3418 3614 WOLFSSL_API unsigned char *wolfSSL_SHA1(const unsigned char *d, size_t n, unsigned char *md); 3419 3615 WOLFSSL_API unsigned char *wolfSSL_SHA256(const unsigned char *d, size_t n, unsigned char *md); … … 3441 3637 || defined(WOLFSSL_HAPROXY) \ 3442 3638 || defined(OPENSSL_EXTRA) 3639 #define X509_BUFFER_SZ 8192 3443 3640 3444 3641 WOLFSSL_API WOLFSSL_BIO* wolfSSL_BIO_new_file(const char *filename, const char *mode); … … 3460 3657 WOLFSSL_API int wolfSSL_X509_REQ_sign(WOLFSSL_X509 *req, WOLFSSL_EVP_PKEY *pkey, 3461 3658 const WOLFSSL_EVP_MD *md); 3659 WOLFSSL_API int wolfSSL_X509_REQ_sign_ctx(WOLFSSL_X509 *req, 3660 WOLFSSL_EVP_MD_CTX* md_ctx); 3462 3661 WOLFSSL_API int wolfSSL_X509_REQ_add_extensions(WOLFSSL_X509* req, 3463 WOLF_STACK_OF(WOLFSSL_X509_EXTENSION)* ext );3662 WOLF_STACK_OF(WOLFSSL_X509_EXTENSION)* ext_sk); 3464 3663 WOLFSSL_API int wolfSSL_X509_REQ_set_subject_name(WOLFSSL_X509 *req, 3465 3664 WOLFSSL_X509_NAME *name); 3466 3665 WOLFSSL_API int wolfSSL_X509_REQ_set_pubkey(WOLFSSL_X509 *req, 3467 3666 WOLFSSL_EVP_PKEY *pkey); 3468 #endif 3469 3470 3471 #if defined(OPENSSL_ALL) \ 3472 || defined(HAVE_STUNNEL) \ 3473 || defined(WOLFSSL_NGINX) \ 3474 || defined(WOLFSSL_HAPROXY) \ 3475 || defined(OPENSSL_EXTRA) \ 3476 || defined(HAVE_LIGHTY) 3667 WOLFSSL_API int wolfSSL_X509_REQ_add1_attr_by_NID(WOLFSSL_X509 *req, 3668 int nid, int type, 3669 const unsigned char *bytes, 3670 int len); 3671 WOLFSSL_API int wolfSSL_X509_REQ_get_attr_by_NID(const WOLFSSL_X509 *req, 3672 int nid, int lastpos); 3673 WOLFSSL_API int wolfSSL_X509_REQ_add1_attr_by_txt(WOLFSSL_X509 *req, 3674 const char *attrname, int type, 3675 const unsigned char *bytes, int len); 3676 WOLFSSL_API WOLFSSL_X509_ATTRIBUTE *wolfSSL_X509_REQ_get_attr( 3677 const WOLFSSL_X509 *req, int loc); 3678 WOLFSSL_API WOLFSSL_X509_ATTRIBUTE* wolfSSL_X509_ATTRIBUTE_new(void); 3679 WOLFSSL_API void wolfSSL_X509_ATTRIBUTE_free(WOLFSSL_X509_ATTRIBUTE* attr); 3680 WOLFSSL_API WOLFSSL_ASN1_TYPE *wolfSSL_X509_ATTRIBUTE_get0_type( 3681 WOLFSSL_X509_ATTRIBUTE *attr, int idx); 3682 WOLFSSL_API WOLFSSL_X509 *wolfSSL_X509_to_X509_REQ(WOLFSSL_X509 *x, 3683 WOLFSSL_EVP_PKEY *pkey, const WOLFSSL_EVP_MD *md); 3684 #endif 3685 3686 3687 #if defined(OPENSSL_ALL) || defined(HAVE_STUNNEL) || defined(WOLFSSL_NGINX) \ 3688 || defined(WOLFSSL_HAPROXY) || defined(OPENSSL_EXTRA) || defined(HAVE_LIGHTY) 3477 3689 3478 3690 #include <wolfssl/openssl/crypto.h> 3479 3480 /* SNI received callback type */3481 typedef int (*CallbackSniRecv)(WOLFSSL *ssl, int *ret, void* exArg);3482 3691 3483 3692 WOLFSSL_API int wolfSSL_CRYPTO_set_mem_ex_functions(void *(*m) (size_t, const char *, int), … … 3485 3694 3486 3695 WOLFSSL_API void wolfSSL_CRYPTO_cleanup_all_ex_data(void); 3696 3697 WOLFSSL_API int wolfSSL_CRYPTO_memcmp(const void *a, const void *b, size_t size); 3487 3698 3488 3699 WOLFSSL_API WOLFSSL_BIGNUM* wolfSSL_DH_768_prime(WOLFSSL_BIGNUM* bn); … … 3530 3741 WOLFSSL_API void wolfSSL_sk_X509_INFO_free(WOLF_STACK_OF(WOLFSSL_X509_INFO)*); 3531 3742 3532 typedef int (*wolf_sk_compare_cb)(const void* const *a, 3533 const void* const *b); 3743 typedef int (*wolf_sk_compare_cb)(const void* a, 3744 const void* b); 3745 typedef unsigned long (*wolf_sk_hash_cb) (const void *v); 3534 3746 WOLFSSL_API WOLF_STACK_OF(WOLFSSL_X509_NAME)* wolfSSL_sk_X509_NAME_new( 3535 3747 wolf_sk_compare_cb); … … 3551 3763 WOLFSSL_API int wolfSSL_X509_NAME_print_ex(WOLFSSL_BIO*,WOLFSSL_X509_NAME*,int, 3552 3764 unsigned long); 3553 3765 #ifndef NO_FILESYSTEM 3766 WOLFSSL_API int wolfSSL_X509_NAME_print_ex_fp(XFILE,WOLFSSL_X509_NAME*,int, 3767 unsigned long); 3768 #endif 3769 3770 WOLFSSL_API WOLFSSL_STACK *wolfSSL_sk_CONF_VALUE_new(wolf_sk_compare_cb compFunc); 3771 WOLFSSL_API void wolfSSL_sk_CONF_VALUE_free(struct WOLFSSL_STACK *sk); 3772 WOLFSSL_API int wolfSSL_sk_CONF_VALUE_num(const WOLFSSL_STACK *sk); 3773 WOLFSSL_API WOLFSSL_CONF_VALUE *wolfSSL_sk_CONF_VALUE_value( 3774 const struct WOLFSSL_STACK *sk, int i); 3775 WOLFSSL_API int wolfSSL_sk_CONF_VALUE_push(WOLF_STACK_OF(WOLFSSL_CONF_VALUE)* sk, 3776 WOLFSSL_CONF_VALUE* val); 3777 #endif /* OPENSSL_ALL || HAVE_STUNNEL || WOLFSSL_NGINX || WOLFSSL_HAPROXY || OPENSSL_EXTRA || HAVE_LIGHTY */ 3778 3779 #if defined(OPENSSL_EXTRA) || defined(WOLFSSL_WPAS_SMALL) 3554 3780 WOLFSSL_API WOLFSSL_ASN1_BIT_STRING* wolfSSL_ASN1_BIT_STRING_new(void); 3555 3781 WOLFSSL_API void wolfSSL_ASN1_BIT_STRING_free(WOLFSSL_ASN1_BIT_STRING*); … … 3560 3786 WOLFSSL_API int wolfSSL_ASN1_BIT_STRING_set_bit( 3561 3787 WOLFSSL_ASN1_BIT_STRING*, int, int); 3788 #endif /* OPENSSL_EXTRA || WOLFSSL_WPAS_SMALL */ 3789 3790 #if defined(OPENSSL_ALL) || defined(HAVE_STUNNEL) || defined(WOLFSSL_NGINX) \ 3791 || defined(WOLFSSL_HAPROXY) || defined(OPENSSL_EXTRA) || defined(HAVE_LIGHTY) 3562 3792 3563 3793 WOLFSSL_API int wolfSSL_CTX_add_session(WOLFSSL_CTX*, WOLFSSL_SESSION*); … … 3572 3802 3573 3803 WOLFSSL_API void* wolfSSL_sk_X509_OBJECT_value(WOLF_STACK_OF(WOLFSSL_X509_OBJECT)*, int); 3574 3804 #endif /* OPENSSL_ALL || HAVE_STUNNEL || WOLFSSL_NGINX || WOLFSSL_HAPROXY || OPENSSL_EXTRA || HAVE_LIGHTY */ 3805 3806 #if defined(OPENSSL_EXTRA) || defined(WOLFSSL_WPAS_SMALL) 3575 3807 WOLFSSL_API void* wolfSSL_SESSION_get_ex_data(const WOLFSSL_SESSION*, int); 3576 3808 3577 3809 WOLFSSL_API int wolfSSL_SESSION_set_ex_data(WOLFSSL_SESSION*, int, void*); 3810 #endif /* OPENSSL_EXTRA || WOLFSSL_WPAS_SMALL */ 3811 3812 #if defined(OPENSSL_ALL) || defined(HAVE_STUNNEL) || defined(WOLFSSL_NGINX) \ 3813 || defined(WOLFSSL_HAPROXY) || defined(OPENSSL_EXTRA) || defined(HAVE_LIGHTY) 3578 3814 3579 3815 WOLFSSL_API int wolfSSL_SESSION_get_ex_new_index(long,void*,void*,void*, … … 3582 3818 WOLFSSL_API int wolfSSL_X509_NAME_get_sz(WOLFSSL_X509_NAME*); 3583 3819 3584 3585 3820 WOLFSSL_API const unsigned char* wolfSSL_SESSION_get_id(WOLFSSL_SESSION*, 3586 3821 unsigned int*); … … 3597 3832 3598 3833 WOLFSSL_API VerifyCallback wolfSSL_get_verify_callback(WOLFSSL*); 3834 3835 #endif /* OPENSSL_ALL || HAVE_STUNNEL || WOLFSSL_NGINX || WOLFSSL_HAPROXY || HAVE_LIGHTY */ 3836 3837 #ifdef HAVE_SNI 3838 /* SNI received callback type */ 3839 typedef int (*CallbackSniRecv)(WOLFSSL *ssl, int *ret, void* exArg); 3599 3840 3600 3841 WOLFSSL_API void wolfSSL_CTX_set_servername_callback(WOLFSSL_CTX *, … … 3604 3845 3605 3846 WOLFSSL_API int wolfSSL_CTX_set_servername_arg(WOLFSSL_CTX *, void*); 3847 #endif 3848 3849 #if defined(OPENSSL_ALL) || defined(HAVE_STUNNEL) || defined(WOLFSSL_NGINX) \ 3850 || defined(WOLFSSL_HAPROXY) || defined(OPENSSL_EXTRA) || defined(HAVE_LIGHTY) 3606 3851 3607 3852 WOLFSSL_API void wolfSSL_ERR_remove_thread_state(void*); … … 3625 3870 wolfSSL_sk_X509_OBJECT_delete(WOLF_STACK_OF(WOLFSSL_X509_OBJECT)* sk, int i); 3626 3871 WOLFSSL_API void wolfSSL_X509_OBJECT_free(WOLFSSL_X509_OBJECT *a); 3627 3872 #endif /* OPENSSL_ALL || HAVE_STUNNEL || WOLFSSL_NGINX || WOLFSSL_HAPROXY || HAVE_LIGHTY */ 3873 3874 #if defined(OPENSSL_EXTRA) || defined(WOLFSSL_WPAS_SMALL) 3875 #include <wolfssl/openssl/stack.h> 3628 3876 WOLFSSL_API void wolfSSL_sk_X509_pop_free(WOLF_STACK_OF(WOLFSSL_X509)* sk, void (*f) (WOLFSSL_X509*)); 3629 #endif /* OPENSSL_ ALL || HAVE_STUNNEL || WOLFSSL_NGINX || WOLFSSL_HAPROXY || HAVE_LIGHTY*/3877 #endif /* OPENSSL_EXTRA || WOLFSSL_WPAS_SMALL */ 3630 3878 3631 3879 #if defined(OPENSSL_EXTRA) && defined(HAVE_ECC) … … 3638 3886 defined(WOLFSSL_NGINX) || defined(WOLFSSL_HAPROXY) 3639 3887 3640 WOLFSSL_API int wolfSSL_CTX_get_verify_mode(WOLFSSL_CTX* ctx); 3888 WOLFSSL_API int wolfSSL_get_verify_mode(const WOLFSSL* ssl); 3889 WOLFSSL_API int wolfSSL_CTX_get_verify_mode(const WOLFSSL_CTX* ctx); 3641 3890 3642 3891 #endif … … 3670 3919 WOLFSSL_API void *wolfSSL_OPENSSL_memdup(const void *data, 3671 3920 size_t siz, const char* file, int line); 3921 WOLFSSL_API void wolfSSL_OPENSSL_cleanse(void *ptr, size_t len); 3672 3922 WOLFSSL_API void wolfSSL_ERR_load_BIO_strings(void); 3923 #endif 3924 3925 #if defined(HAVE_OCSP) && !defined(NO_ASN_TIME) 3926 WOLFSSL_API int wolfSSL_get_ocsp_producedDate( 3927 WOLFSSL *ssl, 3928 byte *producedDate, 3929 size_t producedDate_space, 3930 int *producedDateFormat); 3931 WOLFSSL_API int wolfSSL_get_ocsp_producedDate_tm(WOLFSSL *ssl, 3932 struct tm *produced_tm); 3673 3933 #endif 3674 3934 … … 3689 3949 #endif 3690 3950 3951 #if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL) \ 3952 || defined(WOLFSSL_WPAS_SMALL) 3953 WOLFSSL_API void *wolfSSL_X509_get_ex_data(WOLFSSL_X509 *x509, int idx); 3954 WOLFSSL_API int wolfSSL_X509_set_ex_data(WOLFSSL_X509 *x509, int idx, 3955 void *data); 3956 #endif /* OPENSSL_EXTRA || OPENSSL_EXTRA_X509_SMALL || WOLFSSL_WPAS_SMALL */ 3957 3691 3958 #if defined(OPENSSL_ALL) || defined(WOLFSSL_NGINX) || defined(WOLFSSL_HAPROXY) \ 3692 3959 || defined(OPENSSL_EXTRA) || defined(HAVE_LIGHTY) … … 3694 3961 WOLFSSL_API int wolfSSL_X509_get_ex_new_index(int idx, void *arg, void *a, 3695 3962 void *b, void *c); 3696 WOLFSSL_API void *wolfSSL_X509_get_ex_data(WOLFSSL_X509 *x509, int idx);3697 WOLFSSL_API int wolfSSL_X509_set_ex_data(WOLFSSL_X509 *x509, int idx,3698 void *data);3699 3963 WOLFSSL_API int wolfSSL_X509_NAME_digest(const WOLFSSL_X509_NAME *data, 3700 3964 const WOLFSSL_EVP_MD *type, unsigned char *md, unsigned int *len); … … 3716 3980 WOLFSSL_API WOLFSSL_SESSION *wolfSSL_SSL_get0_session(const WOLFSSL *s); 3717 3981 #endif 3718 WOLFSSL_API int wolfSSL_X509_check_host(WOLFSSL_X509 *x, const char *chk,3719 size_t chklen, unsigned int flags, char **peername);3720 3982 3721 3983 WOLFSSL_API int wolfSSL_i2a_ASN1_INTEGER(WOLFSSL_BIO *bp, … … 3744 4006 WOLFSSL_X509 *subject); 3745 4007 3746 WOLFSSL_API char* wolfSSL_sk_WOLFSSL_STRING_value( 4008 WOLFSSL_API WOLF_STACK_OF(WOLFSSL_STRING)* wolfSSL_sk_WOLFSSL_STRING_new(void); 4009 WOLFSSL_API void wolfSSL_sk_WOLFSSL_STRING_free(WOLF_STACK_OF(WOLFSSL_STRING)* sk); 4010 WOLFSSL_API WOLFSSL_STRING wolfSSL_sk_WOLFSSL_STRING_value( 3747 4011 WOLF_STACK_OF(WOLFSSL_STRING)* strings, int idx); 3748 #endif /* HAVE_OCSP */ 4012 WOLFSSL_API int wolfSSL_sk_WOLFSSL_STRING_num( 4013 WOLF_STACK_OF(WOLFSSL_STRING)* strings); 4014 #endif /* HAVE_OCSP || OPENSSL_EXTRA || OPENSSL_ALL || WOLFSSL_NGINX || WOLFSSL_HAPROXY */ 3749 4015 3750 4016 WOLFSSL_API int PEM_write_bio_WOLFSSL_X509(WOLFSSL_BIO *bio, … … 3752 4018 3753 4019 #endif /* OPENSSL_ALL || WOLFSSL_NGINX || WOLFSSL_HAPROXY || 3754 OPENSSL_EXTRA || HAVE_LIGHTY*/ 4020 OPENSSL_EXTRA || HAVE_LIGHTY */ 4021 4022 #if defined(HAVE_SESSION_TICKET) && !defined(WOLFSSL_NO_DEF_TICKET_ENC_CB) && \ 4023 !defined(NO_WOLFSSL_SERVER) 4024 WOLFSSL_API long wolfSSL_CTX_get_tlsext_ticket_keys(WOLFSSL_CTX *ctx, 4025 unsigned char *keys, int keylen); 4026 WOLFSSL_API long wolfSSL_CTX_set_tlsext_ticket_keys(WOLFSSL_CTX *ctx, 4027 unsigned char *keys, int keylen); 4028 #endif 3755 4029 3756 4030 WOLFSSL_API void wolfSSL_get0_alpn_selected(const WOLFSSL *ssl, … … 3783 4057 unsigned *len); 3784 4058 3785 3786 #ifdef OPENSSL_EXTRA 4059 #ifndef NO_ASN 4060 WOLFSSL_API int wolfSSL_X509_check_host(WOLFSSL_X509 *x, const char *chk, 4061 size_t chklen, unsigned int flags, char **peername); 4062 WOLFSSL_API int wolfSSL_X509_check_ip_asc(WOLFSSL_X509 *x, const char *ipasc, 4063 unsigned int flags); 4064 #endif 4065 4066 #if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL) 3787 4067 #if defined(OPENSSL_ALL) || defined(WOLFSSL_NGINX) || defined(WOLFSSL_HAPROXY) 3788 4068 WOLFSSL_API const unsigned char *SSL_SESSION_get0_id_context( 3789 4069 const WOLFSSL_SESSION *sess, unsigned int *sid_ctx_length); 3790 WOLFSSL_API size_t SSL_get_finished(const WOLFSSL *s, void *buf, size_t count);3791 WOLFSSL_API size_t SSL_get_peer_finished(const WOLFSSL *s, void *buf, size_t count);4070 WOLFSSL_API size_t wolfSSL_get_finished(const WOLFSSL *ssl, void *buf, size_t count); 4071 WOLFSSL_API size_t wolfSSL_get_peer_finished(const WOLFSSL *ssl, void *buf, size_t count); 3792 4072 #endif 3793 4073 … … 3808 4088 WOLFSSL_API int wolfSSL_X509_PUBKEY_set(WOLFSSL_X509_PUBKEY **x, WOLFSSL_EVP_PKEY *key); 3809 4089 WOLFSSL_API int i2t_ASN1_OBJECT(char *buf, int buf_len, WOLFSSL_ASN1_OBJECT *a); 4090 WOLFSSL_API WOLFSSL_ASN1_OBJECT *wolfSSL_d2i_ASN1_OBJECT(WOLFSSL_ASN1_OBJECT **a, 4091 const unsigned char **der, 4092 long length); 3810 4093 WOLFSSL_API int wolfSSL_i2a_ASN1_OBJECT(WOLFSSL_BIO *bp, WOLFSSL_ASN1_OBJECT *a); 4094 WOLFSSL_API int wolfSSL_i2d_ASN1_OBJECT(WOLFSSL_ASN1_OBJECT *a, unsigned char **pp); 3811 4095 WOLFSSL_API void SSL_CTX_set_tmp_dh_callback(WOLFSSL_CTX *ctx, WOLFSSL_DH *(*dh) (WOLFSSL *ssl, int is_export, int keylength)); 3812 4096 WOLFSSL_API WOLF_STACK_OF(SSL_COMP) *SSL_COMP_get_compression_methods(void); … … 3816 4100 WOLFSSL_API int wolfSSL_sk_SSL_CIPHER_find( 3817 4101 WOLF_STACK_OF(WOLFSSL_CIPHER)* sk, const WOLFSSL_CIPHER* toFind); 3818 WOLFSSL_API WOLF_STACK_OF(WOLFSSL_CIPHER)* wolfSSL_sk_SSL_CIPHER_dup(3819 WOLF_STACK_OF(WOLFSSL_CIPHER)* in);3820 4102 WOLFSSL_API void wolfSSL_sk_SSL_CIPHER_free(WOLF_STACK_OF(WOLFSSL_CIPHER)* sk); 3821 4103 WOLFSSL_API int wolfSSL_sk_SSL_COMP_zero(WOLFSSL_STACK* st); 3822 4104 WOLFSSL_API int wolfSSL_sk_SSL_COMP_num(WOLF_STACK_OF(WOLFSSL_COMP)* sk); 3823 WOLFSSL_API WOLFSSL_CIPHER* wolfSSL_sk_SSL_CIPHER_value( void *ciphers, int idx);4105 WOLFSSL_API WOLFSSL_CIPHER* wolfSSL_sk_SSL_CIPHER_value(WOLFSSL_STACK* sk, int i); 3824 4106 WOLFSSL_API void ERR_load_SSL_strings(void); 3825 4107 WOLFSSL_API void wolfSSL_EC_POINT_dump(const char *msg, const WOLFSSL_EC_POINT *p); … … 3833 4115 WOLFSSL_ASN1_TIME **out); 3834 4116 WOLFSSL_API int wolfSSL_i2c_ASN1_INTEGER(WOLFSSL_ASN1_INTEGER *a, unsigned char **pp); 4117 WOLFSSL_API int wolfSSL_a2i_ASN1_INTEGER(WOLFSSL_BIO *bio, WOLFSSL_ASN1_INTEGER *asn1, 4118 char *buf, int size); 3835 4119 WOLFSSL_API int wolfSSL_X509_CA_num(WOLFSSL_X509_STORE *store); 3836 4120 WOLFSSL_API long wolfSSL_X509_get_version(const WOLFSSL_X509 *x); … … 3844 4128 WOLFSSL_API WOLFSSL_EVP_PKEY* wolfSSL_d2i_AutoPrivateKey( 3845 4129 WOLFSSL_EVP_PKEY** pkey, const unsigned char** data, long length); 3846 WOLFSSL_API unsigned long wolfSSL_X509_subject_name_hash(const WOLFSSL_X509* x509); 3847 3848 3849 #endif /* OPENSSL_EXTRA */ 4130 4131 4132 #endif /* OPENSSL_EXTRA || OPENSSL_EXTRA_X509_SMALL */ 3850 4133 3851 4134 #ifdef HAVE_PK_CALLBACKS … … 3859 4142 #endif 3860 4143 4144 /* This feature is used to set a fixed ephemeral key and is for testing only */ 4145 /* Currently allows ECDHE and DHE only */ 4146 #ifdef WOLFSSL_STATIC_EPHEMERAL 4147 WOLFSSL_API int wolfSSL_CTX_set_ephemeral_key(WOLFSSL_CTX* ctx, int keyAlgo, 4148 const char* key, unsigned int keySz, int format); 4149 WOLFSSL_API int wolfSSL_set_ephemeral_key(WOLFSSL* ssl, int keyAlgo, 4150 const char* key, unsigned int keySz, int format); 4151 #endif 4152 3861 4153 #ifdef __cplusplus 3862 4154 } /* extern "C" */ -
azure_iot_hub_f767zi/trunk/wolfssl-4.7.0/wolfssl/test.h
r457 r464 4 4 #define wolfSSL_TEST_H 5 5 6 #include <stdio.h> 7 #include <stdlib.h> 6 #ifdef FUSION_RTOS 7 #include <fclstdio.h> 8 #include <fclstdlib.h> 9 #else 10 #include <stdio.h> 11 #include <stdlib.h> 12 #endif 8 13 #include <assert.h> 9 14 #include <ctype.h> … … 56 61 #define SOCKET_T SOCKET 57 62 #define SNPRINTF _snprintf 63 #define XSLEEP_MS(t) Sleep(t) 58 64 #elif defined(WOLFSSL_MDK_ARM) || defined(WOLFSSL_KEIL_TCP_NET) 59 65 #include <string.h> … … 70 76 } 71 77 #if defined(HAVE_KEIL_RTX) 72 #define sleep(t) os_dly_wait(t/1000+1);78 #define XSLEEP_MS(t) os_dly_wait(t) 73 79 #elif defined(WOLFSSL_CMSIS_RTOS) || defined(WOLFSSL_CMSIS_RTOSv2) 74 #define sleep(t) osDelay(t/1000+1);80 #define XSLEEP_MS(t) osDelay(t) 75 81 #endif 76 82 #elif defined(WOLFSSL_TIRTOS) … … 89 95 }; 90 96 #define SOCKET_T int 97 #define XSLEEP_MS(t) Task_sleep(t/1000) 91 98 #elif defined(WOLFSSL_VXWORKS) 92 99 #include <hostLib.h> … … 144 151 #endif 145 152 #endif 153 #ifdef FREESCALE_MQX 154 typedef int socklen_t ; 155 #endif 146 156 #define SOCKET_T int 147 157 #ifndef SO_NOSIGPIPE … … 149 159 #endif 150 160 #define SNPRINTF snprintf 161 162 #define XSELECT_WAIT(x,y) do { \ 163 struct timeval tv = {(x),(y)}; \ 164 select(0, NULL, NULL, NULL, &tv); \ 165 } while (0) 166 #define XSLEEP_US(u) XSELECT_WAIT(0,u) 167 #define XSLEEP_MS(m) XSELECT_WAIT(0,(m)*1000) 151 168 #endif /* USE_WINDOWS_API */ 169 170 #ifndef XSLEEP_MS 171 #define XSLEEP_MS(t) sleep(t/1000) 172 #endif 152 173 153 174 #ifdef WOLFSSL_ASYNC_CRYPT … … 231 252 #define INFINITE -1 232 253 #define WAIT_OBJECT_0 0L 233 #elif defined(WOLFSSL_MDK_ARM)|| defined(WOLFSSL_KEIL_TCP_NET) 254 #elif defined(WOLFSSL_MDK_ARM)|| defined(WOLFSSL_KEIL_TCP_NET) || defined(FREESCALE_MQX) 234 255 typedef unsigned int THREAD_RETURN; 235 256 typedef int THREAD_TYPE; … … 287 308 #define DEFAULT_MIN_RSAKEY_BITS 2048 288 309 #else 310 #ifndef DEFAULT_MIN_RSAKEY_BITS 289 311 #define DEFAULT_MIN_RSAKEY_BITS 1024 312 #endif 290 313 #endif 291 314 #if !defined(NO_FILESYSTEM) && defined(WOLFSSL_MAX_STRENGTH) 292 315 #define DEFAULT_MIN_ECCKEY_BITS 256 293 316 #else 317 #ifndef DEFAULT_MIN_ECCKEY_BITS 294 318 #define DEFAULT_MIN_ECCKEY_BITS 224 319 #endif 295 320 #endif 296 321 … … 410 435 ssl_callback on_result; 411 436 WOLFSSL_CTX* ctx; 437 unsigned char isSharedCtx:1; 412 438 } callback_functions; 413 439 … … 472 498 err_sys(const char* msg) 473 499 { 474 printf("wolfSSL error: %s\n", msg);475 476 500 #if !defined(__GNUC__) 477 501 /* scan-build (which pretends to be gnuc) can get confused and think the … … 484 508 #endif 485 509 { 510 printf("wolfSSL error: %s\n", msg); 511 512 XEXIT_T(EXIT_FAILURE); 513 } 514 } 515 516 static WC_INLINE 517 #if defined(WOLFSSL_FORCE_MALLOC_FAIL_TEST) || defined(WOLFSSL_ZEPHYR) 518 THREAD_RETURN 519 #else 520 WC_NORETURN void 521 #endif 522 err_sys_with_errno(const char* msg) 523 { 524 #if !defined(__GNUC__) 525 /* scan-build (which pretends to be gnuc) can get confused and think the 526 * msg pointer can be null even when hardcoded and then it won't exit, 527 * making null pointer checks above the err_sys() call useless. 528 * We could just always exit() but some compilers will complain about no 529 * possible return, with gcc we know the attribute to handle that with 530 * WC_NORETURN. */ 531 if (msg) 532 #endif 533 { 534 #if defined(HAVE_STRING_H) && defined(HAVE_ERRNO_H) 535 printf("wolfSSL error: %s: %s\n", msg, strerror(errno)); 536 #else 537 printf("wolfSSL error: %s\n", msg); 538 #endif 539 486 540 XEXIT_T(EXIT_FAILURE); 487 541 } … … 492 546 extern char* myoptarg; 493 547 548 /** 549 * 550 * @param argc Number of argv strings 551 * @param argv Array of string arguments 552 * @param optstring String containing the supported alphanumeric arguments. 553 * A ':' following a character means that it requires a 554 * value in myoptarg to be set. A ';' means that the 555 * myoptarg is optional. myoptarg is set to "" if not 556 * present. 557 * @return Option letter in argument 558 */ 494 559 static WC_INLINE int mygetopt(int argc, char** argv, const char* optstring) 495 560 { … … 541 606 cp = (char*)strchr(optstring, c); 542 607 543 if (cp == NULL || c == ':' )608 if (cp == NULL || c == ':' || c == ';') 544 609 return '?'; 545 610 … … 557 622 else 558 623 return '?'; 624 } 625 else if (*cp == ';') { 626 myoptarg = (char*)""; 627 if (*next != '\0') { 628 myoptarg = next; 629 next = NULL; 630 } 631 else if (myoptind < argc) { 632 /* Check if next argument is not a parameter argument */ 633 if (argv[myoptind] && argv[myoptind][0] != '-') { 634 myoptarg = argv[myoptind]; 635 myoptind++; 636 } 637 } 559 638 } 560 639 … … 935 1014 936 1015 if(WOLFSSL_SOCKET_IS_INVALID(*sockfd)) { 937 err_sys ("socket failed\n");1016 err_sys_with_errno("socket failed\n"); 938 1017 } 939 1018 … … 945 1024 int res = setsockopt(*sockfd, SOL_SOCKET, SO_NOSIGPIPE, &on, len); 946 1025 if (res < 0) 947 err_sys ("setsockopt SO_NOSIGPIPE failed\n");1026 err_sys_with_errno("setsockopt SO_NOSIGPIPE failed\n"); 948 1027 } 949 1028 #elif defined(WOLFSSL_MDK_ARM) || defined (WOLFSSL_TIRTOS) ||\ … … 961 1040 int res = setsockopt(*sockfd, IPPROTO_TCP, TCP_NODELAY, &on, len); 962 1041 if (res < 0) 963 err_sys ("setsockopt TCP_NODELAY failed\n");1042 err_sys_with_errno("setsockopt TCP_NODELAY failed\n"); 964 1043 } 965 1044 #endif … … 979 1058 if (!udp) { 980 1059 if (connect(*sockfd, (const struct sockaddr*)&addr, sizeof(addr)) != 0) 981 err_sys ("tcp connect failed");1060 err_sys_with_errno("tcp connect failed"); 982 1061 } 983 1062 } … … 987 1066 { 988 1067 if (connect(*sockfd, (const struct sockaddr*)addr, addrSz) != 0) 989 err_sys ("tcp connect failed");1068 err_sys_with_errno("tcp connect failed"); 990 1069 } 991 1070 … … 1085 1164 res = setsockopt(*sockfd, SOL_SOCKET, SO_REUSEADDR, &on, len); 1086 1165 if (res < 0) 1087 err_sys("setsockopt SO_REUSEADDR failed\n"); 1088 } 1166 err_sys_with_errno("setsockopt SO_REUSEADDR failed\n"); 1167 } 1168 #ifdef SO_REUSEPORT 1169 { 1170 int res, on = 1; 1171 socklen_t len = sizeof(on); 1172 res = setsockopt(*sockfd, SOL_SOCKET, SO_REUSEPORT, &on, len); 1173 if (res < 0) 1174 err_sys_with_errno("setsockopt SO_REUSEPORT failed\n"); 1175 } 1176 #endif 1089 1177 #endif 1090 1178 1091 1179 if (bind(*sockfd, (const struct sockaddr*)&addr, sizeof(addr)) != 0) 1092 err_sys ("tcp bind failed");1180 err_sys_with_errno("tcp bind failed"); 1093 1181 if (!udp) { 1094 1182 #ifdef WOLFSSL_KEIL_TCP_NET … … 1098 1186 #endif 1099 1187 if (listen(*sockfd, SOCK_LISTEN_MAX_QUEUE) != 0) 1100 err_sys ("tcp listen failed");1188 err_sys_with_errno("tcp listen failed"); 1101 1189 } 1102 1190 #if !defined(USE_WINDOWS_API) && !defined(WOLFSSL_TIRTOS) \ … … 1155 1243 res = setsockopt(*sockfd, SOL_SOCKET, SO_REUSEADDR, &on, len); 1156 1244 if (res < 0) 1157 err_sys("setsockopt SO_REUSEADDR failed\n"); 1158 } 1245 err_sys_with_errno("setsockopt SO_REUSEADDR failed\n"); 1246 } 1247 #ifdef SO_REUSEPORT 1248 { 1249 int res, on = 1; 1250 socklen_t len = sizeof(on); 1251 res = setsockopt(*sockfd, SOL_SOCKET, SO_REUSEPORT, &on, len); 1252 if (res < 0) 1253 err_sys_with_errno("setsockopt SO_REUSEPORT failed\n"); 1254 } 1255 #endif 1159 1256 #endif 1160 1257 1161 1258 if (bind(*sockfd, (const struct sockaddr*)&addr, sizeof(addr)) != 0) 1162 err_sys ("tcp bind failed");1259 err_sys_with_errno("tcp bind failed"); 1163 1260 1164 1261 #if (defined(NO_MAIN_DRIVER) && !defined(USE_WINDOWS_API)) && !defined(WOLFSSL_TIRTOS) … … 1201 1298 int udp, int sctp, int ready_file, int do_listen) 1202 1299 { 1203 SOCKADDR_IN_T client ;1204 socklen_t client_len = sizeof(client );1300 SOCKADDR_IN_T client_addr; 1301 socklen_t client_len = sizeof(client_addr); 1205 1302 tcp_ready* ready = NULL; 1206 1303 … … 1259 1356 } 1260 1357 1261 *clientfd = accept(*sockfd, (struct sockaddr*)&client ,1358 *clientfd = accept(*sockfd, (struct sockaddr*)&client_addr, 1262 1359 (ACCEPT_THIRD_T)&client_len); 1263 1360 if(WOLFSSL_SOCKET_IS_INVALID(*clientfd)) { 1264 err_sys ("tcp accept failed");1361 err_sys_with_errno("tcp accept failed"); 1265 1362 } 1266 1363 } … … 1273 1370 int ret = ioctlsocket(*sockfd, FIONBIO, &blocking); 1274 1371 if (ret == SOCKET_ERROR) 1275 err_sys ("ioctlsocket failed");1372 err_sys_with_errno("ioctlsocket failed"); 1276 1373 #elif defined(WOLFSSL_MDK_ARM) || defined(WOLFSSL_KEIL_TCP_NET) \ 1277 1374 || defined (WOLFSSL_TIRTOS)|| defined(WOLFSSL_VXWORKS) \ … … 1281 1378 int flags = fcntl(*sockfd, F_GETFL, 0); 1282 1379 if (flags < 0) 1283 err_sys ("fcntl get failed");1380 err_sys_with_errno("fcntl get failed"); 1284 1381 flags = fcntl(*sockfd, F_SETFL, flags | O_NONBLOCK); 1285 1382 if (flags < 0) 1286 err_sys ("fcntl set failed");1383 err_sys_with_errno("fcntl set failed"); 1287 1384 #endif 1288 1385 } … … 1303 1400 1304 1401 /* see internal.h MAX_PSK_ID_LEN for PSK identity limit */ 1305 strncpy(identity, kIdentityStr, id_max_len);1402 XSTRNCPY(identity, kIdentityStr, id_max_len); 1306 1403 1307 1404 if (wolfSSL_GetVersion(ssl) < WOLFSSL_TLSV1_3) { … … 1337 1434 1338 1435 /* see internal.h MAX_PSK_ID_LEN for PSK identity limit */ 1339 if ( strncmp(identity, kIdentityStr, strlen(kIdentityStr)) != 0)1436 if (XSTRNCMP(identity, kIdentityStr, XSTRLEN(kIdentityStr)) != 0) 1340 1437 return 0; 1341 1438 … … 1371 1468 int i; 1372 1469 int b = 0x01; 1470 const char* userCipher = (const char*)wolfSSL_get_psk_callback_ctx(ssl); 1373 1471 1374 1472 (void)ssl; … … 1377 1475 1378 1476 /* see internal.h MAX_PSK_ID_LEN for PSK identity limit */ 1379 strncpy(identity, kIdentityStr, id_max_len);1477 XSTRNCPY(identity, kIdentityStr, id_max_len); 1380 1478 1381 1479 for (i = 0; i < 32; i++, b += 0x22) { … … 1385 1483 } 1386 1484 1387 *ciphersuite = "TLS13-AES128-GCM-SHA256";1485 *ciphersuite = userCipher ? userCipher : "TLS13-AES128-GCM-SHA256"; 1388 1486 1389 1487 return 32; /* length of key in octets or 0 for error */ … … 1397 1495 int i; 1398 1496 int b = 0x01; 1497 const char* userCipher = (const char*)wolfSSL_get_psk_callback_ctx(ssl); 1399 1498 1400 1499 (void)ssl; … … 1402 1501 1403 1502 /* see internal.h MAX_PSK_ID_LEN for PSK identity limit */ 1404 if ( strncmp(identity, kIdentityStr, strlen(kIdentityStr)) != 0)1503 if (XSTRNCMP(identity, kIdentityStr, XSTRLEN(kIdentityStr)) != 0) 1405 1504 return 0; 1406 1505 … … 1411 1510 } 1412 1511 1413 *ciphersuite = "TLS13-AES128-GCM-SHA256";1512 *ciphersuite = userCipher ? userCipher : "TLS13-AES128-GCM-SHA256"; 1414 1513 1415 1514 return 32; /* length of key in octets or 0 for error */ 1416 1515 } 1417 1516 1418 #endif /* NO_PSK */1517 #endif /* !NO_PSK */ 1419 1518 1420 1519 … … 1499 1598 static WC_INLINE void OCSPRespFreeCb(void* ioCtx, unsigned char* response) 1500 1599 { 1501 (void)ioCtx; 1502 (void)response; 1600 return EmbedOcspRespFree(ioCtx, response); 1503 1601 } 1504 1602 #endif … … 1513 1611 int ret; 1514 1612 long int fileSz; 1515 XFILE file;1613 XFILE lFile; 1516 1614 1517 1615 if (fname == NULL || buf == NULL || bufLen == NULL) … … 1523 1621 1524 1622 /* open file (read-only binary) */ 1525 file = XFOPEN(fname, "rb");1526 if (! file) {1623 lFile = XFOPEN(fname, "rb"); 1624 if (!lFile) { 1527 1625 printf("Error loading %s\n", fname); 1528 1626 return BAD_PATH_ERROR; 1529 1627 } 1530 1628 1531 fseek( file, 0, SEEK_END);1532 fileSz = (int)ftell( file);1533 rewind( file);1629 fseek(lFile, 0, SEEK_END); 1630 fileSz = (int)ftell(lFile); 1631 rewind(lFile); 1534 1632 if (fileSz > 0) { 1535 1633 *bufLen = (size_t)fileSz; … … 1540 1638 } 1541 1639 else { 1542 size_t readLen = fread(*buf, *bufLen, 1, file);1640 size_t readLen = fread(*buf, *bufLen, 1, lFile); 1543 1641 1544 1642 /* check response code */ … … 1549 1647 ret = BUFFER_E; 1550 1648 } 1551 fclose( file);1649 fclose(lFile); 1552 1650 1553 1651 return ret; … … 1676 1774 #endif /* !NO_CERTS */ 1677 1775 1678 static int myVerifyFail = 0; 1776 enum { 1777 VERIFY_OVERRIDE_ERROR, 1778 VERIFY_FORCE_FAIL, 1779 VERIFY_USE_PREVERFIY, 1780 VERIFY_OVERRIDE_DATE_ERR, 1781 }; 1782 static THREAD_LS_T int myVerifyAction = VERIFY_OVERRIDE_ERROR; 1679 1783 1680 1784 /* The verify callback is called for every certificate only when … … 1728 1832 XFREE(issuer, 0, DYNAMIC_TYPE_OPENSSL); 1729 1833 #if defined(SHOW_CERTS) && !defined(NO_FILESYSTEM) 1730 /* avoid printing duplicate certs */1834 /* avoid printing duplicate certs */ 1731 1835 if (store->depth == 1) { 1732 1836 /* retrieve x509 certs and display them on stdout */ … … 1763 1867 1764 1868 /* Testing forced fail case by return zero */ 1765 if (myVerify Fail) {1869 if (myVerifyAction == VERIFY_FORCE_FAIL) { 1766 1870 return 0; /* test failure case */ 1767 1871 } 1768 1872 1873 if (myVerifyAction == VERIFY_OVERRIDE_DATE_ERR && 1874 (store->error == ASN_BEFORE_DATE_E || store->error == ASN_AFTER_DATE_E)) { 1875 printf("Overriding cert date error as example for bad clock testing\n"); 1876 return 1; 1877 } 1878 1769 1879 /* If error indicate we are overriding it for testing purposes */ 1770 if (store->error != 0 ) {1880 if (store->error != 0 && myVerifyAction == VERIFY_OVERRIDE_ERROR) { 1771 1881 printf("\tAllowing failed certificate check, testing only " 1772 1882 "(shouldn't do this in production)\n"); … … 1774 1884 1775 1885 /* A non-zero return code indicates failure override */ 1776 return 1; 1777 } 1778 1779 1780 static WC_INLINE int myDateCb(int preverify, WOLFSSL_X509_STORE_CTX* store) 1781 { 1782 char buffer[WOLFSSL_MAX_ERROR_SZ]; 1783 (void)preverify; 1784 1785 printf("In verification callback, error = %d, %s\n", store->error, 1786 wolfSSL_ERR_error_string(store->error, buffer)); 1787 printf("Subject's domain name is %s\n", store->domain); 1788 1789 if (store->error == ASN_BEFORE_DATE_E || store->error == ASN_AFTER_DATE_E) { 1790 printf("Overriding cert date error as example for bad clock testing\n"); 1791 return 1; 1792 } 1793 printf("Cert error is not date error, not overriding\n"); 1794 1795 return 0; 1886 return (myVerifyAction == VERIFY_OVERRIDE_ERROR) ? 1 : preverify; 1796 1887 } 1797 1888 … … 1917 2008 #if !defined(NO_FILESYSTEM) || defined(FORCE_BUFFER_TEST) 1918 2009 int depth, res; 1919 XFILE file;2010 XFILE keyFile; 1920 2011 for(depth = 0; depth <= MAX_WOLF_ROOT_DEPTH; depth++) { 1921 file = XFOPEN(ntruKeyFile, "rb");1922 if ( file != NULL) {1923 fclose( file);2012 keyFile = XFOPEN(ntruKeyFile, "rb"); 2013 if (keyFile != NULL) { 2014 fclose(keyFile); 1924 2015 return depth; 1925 2016 } … … 1948 2039 #define STACK_CHECK_VAL 0x01 1949 2040 2041 struct stack_size_debug_context { 2042 unsigned char *myStack; 2043 size_t stackSize; 2044 #ifdef HAVE_STACK_SIZE_VERBOSE 2045 size_t *stackSizeHWM_ptr; 2046 thread_func fn; 2047 void *args; 2048 #endif 2049 }; 2050 2051 #ifdef HAVE_STACK_SIZE_VERBOSE 2052 2053 /* per-subtest stack high water mark tracking. 2054 * 2055 * enable with 2056 * 2057 * ./configure --enable-stacksize=verbose [...] 2058 */ 2059 2060 static THREAD_RETURN debug_stack_size_verbose_shim(struct stack_size_debug_context *shim_args) { 2061 StackSizeCheck_myStack = shim_args->myStack; 2062 StackSizeCheck_stackSize = shim_args->stackSize; 2063 StackSizeCheck_stackSizeHWM_ptr = shim_args->stackSizeHWM_ptr; 2064 return shim_args->fn(shim_args->args); 2065 } 2066 2067 static WC_INLINE int StackSizeSetOffset(const char *funcname, void *p) 2068 { 2069 if (StackSizeCheck_myStack == NULL) 2070 return -BAD_FUNC_ARG; 2071 2072 StackSizeCheck_stackOffsetPointer = p; 2073 2074 printf("setting stack relative offset reference mark in %s to +%lu\n", 2075 funcname, (unsigned long)((char*)(StackSizeCheck_myStack + 2076 StackSizeCheck_stackSize) - (char *)p)); 2077 2078 return 0; 2079 } 2080 2081 static WC_INLINE ssize_t StackSizeHWM(void) 2082 { 2083 size_t i; 2084 ssize_t used; 2085 2086 if (StackSizeCheck_myStack == NULL) 2087 return -BAD_FUNC_ARG; 2088 2089 for (i = 0; i < StackSizeCheck_stackSize; i++) { 2090 if (StackSizeCheck_myStack[i] != STACK_CHECK_VAL) { 2091 break; 2092 } 2093 } 2094 2095 used = StackSizeCheck_stackSize - i; 2096 if ((ssize_t)*StackSizeCheck_stackSizeHWM_ptr < used) 2097 *StackSizeCheck_stackSizeHWM_ptr = used; 2098 2099 return used; 2100 } 2101 2102 static WC_INLINE ssize_t StackSizeHWM_OffsetCorrected(void) 2103 { 2104 ssize_t used = StackSizeHWM(); 2105 if (used < 0) 2106 return used; 2107 if (StackSizeCheck_stackOffsetPointer) 2108 used -= (ssize_t)(((char *)StackSizeCheck_myStack + StackSizeCheck_stackSize) - (char *)StackSizeCheck_stackOffsetPointer); 2109 return used; 2110 } 2111 2112 static 2113 #ifdef __GNUC__ 2114 __attribute__((unused)) __attribute__((noinline)) 2115 #endif 2116 int StackSizeHWMReset(void) 2117 { 2118 volatile ssize_t i; 2119 2120 if (StackSizeCheck_myStack == NULL) 2121 return -BAD_FUNC_ARG; 2122 2123 for (i = (ssize_t)((char *)&i - (char *)StackSizeCheck_myStack) - (ssize_t)sizeof i - 1; i >= 0; --i) 2124 { 2125 StackSizeCheck_myStack[i] = STACK_CHECK_VAL; 2126 } 2127 2128 return 0; 2129 } 2130 2131 #define STACK_SIZE_CHECKPOINT(...) ({ \ 2132 ssize_t HWM = StackSizeHWM_OffsetCorrected(); \ 2133 __VA_ARGS__; \ 2134 printf(" relative stack peak usage = %ld bytes\n", HWM); \ 2135 StackSizeHWMReset(); \ 2136 }) 2137 2138 #define STACK_SIZE_CHECKPOINT_WITH_MAX_CHECK(max, ...) ({ \ 2139 ssize_t HWM = StackSizeHWM_OffsetCorrected(); \ 2140 int _ret; \ 2141 __VA_ARGS__; \ 2142 printf(" relative stack peak usage = %ld bytes\n", HWM); \ 2143 _ret = StackSizeHWMReset(); \ 2144 if ((max >= 0) && (HWM > (ssize_t)(max))) { \ 2145 printf(" relative stack usage at %s L%d exceeds designated max %ld bytes.\n", __FILE__, __LINE__, (ssize_t)(max)); \ 2146 _ret = -1; \ 2147 } \ 2148 _ret; \ 2149 }) 2150 2151 2152 #ifdef __GNUC__ 2153 #define STACK_SIZE_INIT() (void)StackSizeSetOffset(__FUNCTION__, __builtin_frame_address(0)) 2154 #endif 2155 2156 #endif /* HAVE_STACK_SIZE_VERBOSE */ 2157 1950 2158 static WC_INLINE int StackSizeCheck(func_args* args, thread_func tf) 1951 2159 { 1952 int ret, i, used; 2160 size_t i; 2161 int ret; 1953 2162 void* status; 1954 2163 unsigned char* myStack = NULL; 1955 int stackSize = 1024*152;2164 size_t stackSize = 1024*1024; 1956 2165 pthread_attr_t myAttr; 1957 2166 pthread_t threadId; 2167 #ifdef HAVE_STACK_SIZE_VERBOSE 2168 struct stack_size_debug_context shim_args; 2169 #endif 1958 2170 1959 2171 #ifdef PTHREAD_STACK_MIN … … 1964 2176 ret = posix_memalign((void**)&myStack, sysconf(_SC_PAGESIZE), stackSize); 1965 2177 if (ret != 0 || myStack == NULL) 1966 err_sys ("posix_memalign failed\n");2178 err_sys_with_errno("posix_memalign failed\n"); 1967 2179 1968 2180 XMEMSET(myStack, STACK_CHECK_VAL, stackSize); … … 1976 2188 err_sys("attr_setstackaddr failed"); 1977 2189 2190 #ifdef HAVE_STACK_SIZE_VERBOSE 2191 StackSizeCheck_stackSizeHWM = 0; 2192 shim_args.myStack = myStack; 2193 shim_args.stackSize = stackSize; 2194 shim_args.stackSizeHWM_ptr = &StackSizeCheck_stackSizeHWM; 2195 shim_args.fn = tf; 2196 shim_args.args = args; 2197 ret = pthread_create(&threadId, &myAttr, (thread_func)debug_stack_size_verbose_shim, (void *)&shim_args); 2198 #else 1978 2199 ret = pthread_create(&threadId, &myAttr, tf, args); 2200 #endif 1979 2201 if (ret != 0) { 1980 2202 perror("pthread_create failed"); … … 1993 2215 1994 2216 free(myStack); 1995 1996 used = stackSize - i; 1997 printf("stack used = %d\n", used); 2217 #ifdef HAVE_STACK_SIZE_VERBOSE 2218 printf("stack used = %lu\n", StackSizeCheck_stackSizeHWM > (stackSize - i) 2219 ? (unsigned long)StackSizeCheck_stackSizeHWM 2220 : (unsigned long)(stackSize - i)); 2221 #else 2222 { 2223 size_t used = stackSize - i; 2224 printf("stack used = %lu\n", (unsigned long)used); 2225 } 2226 #endif 1998 2227 1999 2228 return (int)((size_t)status); 2000 2229 } 2001 2230 2231 static WC_INLINE int StackSizeCheck_launch(func_args* args, thread_func tf, pthread_t *threadId, void **stack_context) 2232 { 2233 int ret; 2234 unsigned char* myStack = NULL; 2235 size_t stackSize = 1024*1024; 2236 pthread_attr_t myAttr; 2237 2238 #ifdef PTHREAD_STACK_MIN 2239 if (stackSize < PTHREAD_STACK_MIN) 2240 stackSize = PTHREAD_STACK_MIN; 2241 #endif 2242 2243 struct stack_size_debug_context *shim_args = (struct stack_size_debug_context *)malloc(sizeof *shim_args); 2244 if (! shim_args) { 2245 perror("malloc"); 2246 exit(EXIT_FAILURE); 2247 } 2248 2249 ret = posix_memalign((void**)&myStack, sysconf(_SC_PAGESIZE), stackSize); 2250 if (ret != 0 || myStack == NULL) 2251 err_sys_with_errno("posix_memalign failed\n"); 2252 2253 XMEMSET(myStack, STACK_CHECK_VAL, stackSize); 2254 2255 ret = pthread_attr_init(&myAttr); 2256 if (ret != 0) 2257 err_sys("attr_init failed"); 2258 2259 ret = pthread_attr_setstack(&myAttr, myStack, stackSize); 2260 if (ret != 0) 2261 err_sys("attr_setstackaddr failed"); 2262 2263 shim_args->myStack = myStack; 2264 shim_args->stackSize = stackSize; 2265 #ifdef HAVE_STACK_SIZE_VERBOSE 2266 shim_args->stackSizeHWM_ptr = &StackSizeCheck_stackSizeHWM; 2267 shim_args->fn = tf; 2268 shim_args->args = args; 2269 ret = pthread_create(threadId, &myAttr, (thread_func)debug_stack_size_verbose_shim, (void *)shim_args); 2270 #else 2271 ret = pthread_create(threadId, &myAttr, tf, args); 2272 #endif 2273 if (ret != 0) { 2274 fprintf(stderr,"pthread_create failed: %s",strerror(ret)); 2275 exit(EXIT_FAILURE); 2276 } 2277 2278 *stack_context = (void *)shim_args; 2279 2280 return 0; 2281 } 2282 2283 static WC_INLINE int StackSizeCheck_reap(pthread_t threadId, void *stack_context) 2284 { 2285 struct stack_size_debug_context *shim_args = (struct stack_size_debug_context *)stack_context; 2286 size_t i; 2287 void *status; 2288 int ret = pthread_join(threadId, &status); 2289 if (ret != 0) 2290 err_sys("pthread_join failed"); 2291 2292 for (i = 0; i < shim_args->stackSize; i++) { 2293 if (shim_args->myStack[i] != STACK_CHECK_VAL) { 2294 break; 2295 } 2296 } 2297 2298 free(shim_args->myStack); 2299 #ifdef HAVE_STACK_SIZE_VERBOSE 2300 printf("stack used = %lu\n", 2301 *shim_args->stackSizeHWM_ptr > (shim_args->stackSize - i) 2302 ? (unsigned long)*shim_args->stackSizeHWM_ptr 2303 : (unsigned long)(shim_args->stackSize - i)); 2304 #else 2305 { 2306 size_t used = shim_args->stackSize - i; 2307 printf("stack used = %lu\n", (unsigned long)used); 2308 } 2309 #endif 2310 free(shim_args); 2311 2312 return (int)((size_t)status); 2313 } 2314 2002 2315 2003 2316 #endif /* HAVE_STACK_SIZE */ 2004 2317 2318 #ifndef STACK_SIZE_CHECKPOINT 2319 #define STACK_SIZE_CHECKPOINT(...) (__VA_ARGS__) 2320 #endif 2321 #ifndef STACK_SIZE_INIT 2322 #define STACK_SIZE_INIT() 2323 #endif 2005 2324 2006 2325 #ifdef STACK_TRAP … … 2021 2340 struct rlimit rl; 2022 2341 if (getrlimit(RLIMIT_STACK, &rl) != 0) 2023 err_sys ("getrlimit failed");2342 err_sys_with_errno("getrlimit failed"); 2024 2343 printf("rlim_cur = %llu\n", rl.rlim_cur); 2025 2344 rl.rlim_cur = 1024*21; /* adjust trap size here */ 2026 if (setrlimit(RLIMIT_STACK, &rl) != 0) { 2027 perror("setrlimit"); 2028 err_sys("setrlimit failed"); 2029 } 2345 if (setrlimit(RLIMIT_STACK, &rl) != 0) 2346 err_sys_with_errno("setrlimit failed"); 2030 2347 } 2031 2348 … … 2390 2707 encCtx = (AtomicEncCtx*)malloc(sizeof(AtomicEncCtx)); 2391 2708 if (encCtx == NULL) 2392 err_sys ("AtomicEncCtx malloc failed");2709 err_sys_with_errno("AtomicEncCtx malloc failed"); 2393 2710 XMEMSET(encCtx, 0, sizeof(AtomicEncCtx)); 2394 2711 … … 2396 2713 if (decCtx == NULL) { 2397 2714 free(encCtx); 2398 err_sys ("AtomicDecCtx malloc failed");2715 err_sys_with_errno("AtomicDecCtx malloc failed"); 2399 2716 } 2400 2717 XMEMSET(decCtx, 0, sizeof(AtomicDecCtx)); … … 2665 2982 } 2666 2983 2984 #if defined(ECC_TIMING_RESISTANT) && !defined(HAVE_FIPS) && \ 2985 !defined(HAVE_SELFTEST) 2986 if (ret == 0) { 2987 ret = wc_ecc_set_rng(privKey, wolfSSL_GetRNG(ssl)); 2988 } 2989 #endif 2990 2667 2991 /* generate shared secret and return it */ 2668 2992 if (ret == 0) { … … 2874 3198 ret = wc_Ed448PrivateKeyDecode(keyBuf, &idx, &myKey, keySz); 2875 3199 if (ret == 0) 2876 ret = wc_ed448_sign_msg(in, inSz, out, outSz, &myKey );3200 ret = wc_ed448_sign_msg(in, inSz, out, outSz, &myKey, NULL, 0); 2877 3201 wc_ed448_free(&myKey); 2878 3202 } … … 2906 3230 ret = wc_ed448_import_public(key, keySz, &myKey); 2907 3231 if (ret == 0) { 2908 ret = wc_ed448_verify_msg(sig, sigSz, msg, msgSz, result, &myKey); 3232 ret = wc_ed448_verify_msg(sig, sigSz, msg, msgSz, result, &myKey, 3233 NULL, 0); 2909 3234 } 2910 3235 wc_ed448_free(&myKey); … … 3499 3824 #endif /* HAVE_PK_CALLBACKS */ 3500 3825 3501 3502 3826 static WC_INLINE int SimulateWantWriteIOSendCb(WOLFSSL *ssl, char *buf, int sz, void *ctx) 3827 { 3828 static int wantWriteFlag = 1; 3829 3830 int sent; 3831 int sd = *(int*)ctx; 3832 3833 (void)ssl; 3834 3835 if (!wantWriteFlag) 3836 { 3837 wantWriteFlag = 1; 3838 3839 sent = wolfIO_Send(sd, buf, sz, 0); 3840 if (sent < 0) { 3841 int err = errno; 3842 3843 if (err == SOCKET_EWOULDBLOCK || err == SOCKET_EAGAIN) { 3844 return WOLFSSL_CBIO_ERR_WANT_WRITE; 3845 } 3846 else if (err == SOCKET_ECONNRESET) { 3847 return WOLFSSL_CBIO_ERR_CONN_RST; 3848 } 3849 else if (err == SOCKET_EINTR) { 3850 return WOLFSSL_CBIO_ERR_ISR; 3851 } 3852 else if (err == SOCKET_EPIPE) { 3853 return WOLFSSL_CBIO_ERR_CONN_CLOSE; 3854 } 3855 else { 3856 return WOLFSSL_CBIO_ERR_GENERAL; 3857 } 3858 } 3859 3860 return sent; 3861 } 3862 else 3863 { 3864 wantWriteFlag = 0; 3865 return WOLFSSL_CBIO_ERR_WANT_WRITE; 3866 } 3867 } 3503 3868 3504 3869 #if defined(__hpux__) || defined(__MINGW32__) || defined (WOLFSSL_TIRTOS) \ … … 3567 3932 3568 3933 3569 #if defined(HAVE_SESSION_TICKET) && defined(HAVE_CHACHA) && \ 3570 defined(HAVE_POLY1305) 3571 3934 #if defined(HAVE_SESSION_TICKET) && defined(WOLFSSL_NO_DEF_TICKET_ENC_CB) && \ 3935 ((defined(HAVE_CHACHA) && defined(HAVE_POLY1305)) || \ 3936 defined(HAVE_AESGCM)) 3937 3938 #if defined(HAVE_CHACHA) && defined(HAVE_POLY1305) 3572 3939 #include <wolfssl/wolfcrypt/chacha20_poly1305.h> 3940 #define WOLFSSL_TICKET_KEY_SZ CHACHA20_POLY1305_AEAD_KEYSIZE 3941 #elif defined(HAVE_AESGCM) 3942 #include <wolfssl/wolfcrypt/aes.h> 3943 #include <wolfssl/wolfcrypt/wc_encrypt.h> /* AES IV sizes in FIPS mode */ 3944 #define WOLFSSL_TICKET_KEY_SZ AES_256_KEY_SIZE 3945 #endif 3573 3946 3574 3947 typedef struct key_ctx { 3575 byte name[WOLFSSL_TICKET_NAME_SZ]; 3576 byte key[ CHACHA20_POLY1305_AEAD_KEYSIZE];/* cipher key */3948 byte name[WOLFSSL_TICKET_NAME_SZ]; /* name for this context */ 3949 byte key[WOLFSSL_TICKET_KEY_SZ]; /* cipher key */ 3577 3950 } key_ctx; 3578 3951 … … 3606 3979 void* userCtx) 3607 3980 { 3608 (void)ssl;3609 (void)userCtx;3610 3611 3981 int ret; 3612 3982 word16 sLen = XHTONS(inLen); … … 3614 3984 int aadSz = WOLFSSL_TICKET_NAME_SZ + WOLFSSL_TICKET_IV_SZ + 2; 3615 3985 byte* tmp = aad; 3616 3986 #if defined(HAVE_CHACHA) && defined(HAVE_POLY1305) 3987 /* chahca20/poly1305 */ 3988 #elif defined(HAVE_AESGCM) 3989 Aes aes; 3990 #endif 3991 3992 (void)ssl; 3993 (void)userCtx; 3994 3995 /* encrypt */ 3617 3996 if (enc) { 3618 3997 XMEMCPY(key_name, myKey_ctx.name, WOLFSSL_TICKET_NAME_SZ); … … 3626 4005 XMEMCPY(tmp, iv, WOLFSSL_TICKET_IV_SZ); 3627 4006 tmp += WOLFSSL_TICKET_IV_SZ; 3628 XMEMCPY(tmp, &sLen, 2); 3629 4007 XMEMCPY(tmp, &sLen, sizeof(sLen)); 4008 4009 #if defined(HAVE_CHACHA) && defined(HAVE_POLY1305) 3630 4010 ret = wc_ChaCha20Poly1305_Encrypt(myKey_ctx.key, iv, 3631 4011 aad, aadSz, … … 3633 4013 ticket, 3634 4014 mac); 4015 #elif defined(HAVE_AESGCM) 4016 ret = wc_AesInit(&aes, NULL, INVALID_DEVID); 4017 if (ret != 0) return WOLFSSL_TICKET_RET_REJECT; 4018 4019 ret = wc_AesGcmSetKey(&aes, myKey_ctx.key, sizeof(myKey_ctx.key)); 4020 if (ret == 0) { 4021 ret = wc_AesGcmEncrypt(&aes, ticket, ticket, inLen, 4022 iv, GCM_NONCE_MID_SZ, mac, AES_BLOCK_SIZE, 4023 aad, aadSz); 4024 } 4025 wc_AesFree(&aes); 4026 #endif 4027 3635 4028 if (ret != 0) return WOLFSSL_TICKET_RET_REJECT; 3636 4029 *outLen = inLen; /* no padding in this mode */ 3637 } else {3638 3639 4030 } 4031 /* decrypt */ 4032 else { 3640 4033 /* see if we know this key */ 3641 4034 if (XMEMCMP(key_name, myKey_ctx.name, WOLFSSL_TICKET_NAME_SZ) != 0){ 3642 printf("client presented unknown ticket key name ");4035 printf("client presented unknown ticket key name %s\n", key_name); 3643 4036 return WOLFSSL_TICKET_RET_FATAL; 3644 4037 } … … 3649 4042 XMEMCPY(tmp, iv, WOLFSSL_TICKET_IV_SZ); 3650 4043 tmp += WOLFSSL_TICKET_IV_SZ; 3651 XMEMCPY(tmp, &sLen, 2); 3652 4044 XMEMCPY(tmp, &sLen, sizeof(sLen)); 4045 4046 #if defined(HAVE_CHACHA) && defined(HAVE_POLY1305) 3653 4047 ret = wc_ChaCha20Poly1305_Decrypt(myKey_ctx.key, iv, 3654 4048 aad, aadSz, … … 3656 4050 mac, 3657 4051 ticket); 4052 #elif defined(HAVE_AESGCM) 4053 ret = wc_AesInit(&aes, NULL, INVALID_DEVID); 4054 if (ret != 0) return WOLFSSL_TICKET_RET_REJECT; 4055 4056 ret = wc_AesGcmSetKey(&aes, myKey_ctx.key, sizeof(myKey_ctx.key)); 4057 if (ret == 0) { 4058 ret = wc_AesGcmDecrypt(&aes, ticket, ticket, inLen, 4059 iv, GCM_NONCE_MID_SZ, mac, AES_BLOCK_SIZE, 4060 aad, aadSz); 4061 } 4062 wc_AesFree(&aes); 4063 #endif 4064 3658 4065 if (ret != 0) return WOLFSSL_TICKET_RET_REJECT; 3659 4066 *outLen = inLen; /* no padding in this mode */ … … 3663 4070 } 3664 4071 3665 #endif /* HAVE_SESSION_TICKET && CHACHA20 && POLY1305 */ 4072 #endif /* HAVE_SESSION_TICKET && ((HAVE_CHACHA && HAVE_POLY1305) || HAVE_AESGCM) */ 4073 3666 4074 3667 4075 static WC_INLINE word16 GetRandomPort(void) -
azure_iot_hub_f767zi/trunk/wolfssl-4.7.0/wolfssl/version.h
r457 r464 29 29 #endif 30 30 31 #define LIBWOLFSSL_VERSION_STRING "4. 4.0"32 #define LIBWOLFSSL_VERSION_HEX 0x0400 400031 #define LIBWOLFSSL_VERSION_STRING "4.7.0" 32 #define LIBWOLFSSL_VERSION_HEX 0x04007000 33 33 34 34 #ifdef __cplusplus -
azure_iot_hub_f767zi/trunk/wolfssl-4.7.0/wolfssl/wolfcrypt/aes.h
r457 r464 23 23 \file wolfssl/wolfcrypt/aes.h 24 24 */ 25 26 25 /* 26 27 DESCRIPTION 28 This library provides the interfaces to the Advanced Encryption Standard (AES) 29 for encrypting and decrypting data. AES is the standard known for a symmetric 30 block cipher mechanism that uses n-bit binary string parameter key with 128-bits, 31 192-bits, and 256-bits of key sizes. 32 33 */ 27 34 #ifndef WOLF_CRYPT_AES_H 28 35 #define WOLF_CRYPT_AES_H … … 56 63 #endif 57 64 58 #ifdef WOLFSSL_AESNI 59 60 #include <wmmintrin.h> 61 #include <emmintrin.h> 62 #include <smmintrin.h> 63 64 #endif /* WOLFSSL_AESNI */ 65 65 #ifdef WOLFSSL_IMXRT_DCP 66 #include "fsl_dcp.h" 67 #endif 66 68 67 69 #ifdef WOLFSSL_XILINX_CRYPT … … 77 79 #include <wolfssl/wolfcrypt/port/devcrypto/wc_devcrypto.h> 78 80 #endif 81 82 #ifdef WOLFSSL_SILABS_SE_ACCEL 83 #include <wolfssl/wolfcrypt/port/silabs/silabs_aes.h> 84 #endif 85 79 86 80 87 #if defined(HAVE_AESGCM) && !defined(WC_NO_RNG) … … 142 149 143 150 #ifdef HAVE_PKCS11 144 AES_MAX_ID_LEN = 32, 151 AES_MAX_ID_LEN = 32, 152 AES_MAX_LABEL_LEN = 32, 145 153 #endif 146 154 }; … … 170 178 /* key-based fast multiplication table. */ 171 179 ALIGN16 byte M0[256][AES_BLOCK_SIZE]; 180 #elif defined(GCM_TABLE_4BIT) 181 #if defined(BIG_ENDIAN_ORDER) || defined(WC_16BIT_CPU) 182 ALIGN16 byte M0[16][AES_BLOCK_SIZE]; 183 #else 184 ALIGN16 byte M0[32][AES_BLOCK_SIZE]; 185 #endif 172 186 #endif /* GCM_TABLE */ 173 187 #ifdef HAVE_CAVIUM_OCTEON_SYNC … … 185 199 byte id[AES_MAX_ID_LEN]; 186 200 int idLen; 201 char label[AES_MAX_LABEL_LEN]; 202 int labelLen; 187 203 #endif 188 204 #ifdef WOLFSSL_ASYNC_CRYPT … … 227 243 defined(WOLFSSL_RENESAS_TSIP_TLS_AES_CRYPT) 228 244 TSIP_AES_CTX ctx; 245 #endif 246 #if defined(WOLFSSL_IMXRT_DCP) 247 dcp_handle_t handle; 248 #endif 249 #if defined(WOLFSSL_SILABS_SE_ACCEL) 250 silabs_aes_t ctx; 229 251 #endif 230 252 void* heap; /* memory hint to use */ … … 370 392 #endif /* HAVE_AESGCM */ 371 393 #ifdef HAVE_AESCCM 394 WOLFSSL_LOCAL int wc_AesCcmCheckTagSize(int sz); 372 395 WOLFSSL_API int wc_AesCcmSetKey(Aes* aes, const byte* key, word32 keySz); 373 396 WOLFSSL_API int wc_AesCcmEncrypt(Aes* aes, byte* out, … … 426 449 WOLFSSL_API int wc_AesInit_Id(Aes* aes, unsigned char* id, int len, void* heap, 427 450 int devId); 451 WOLFSSL_API int wc_AesInit_Label(Aes* aes, const char* label, void* heap, 452 int devId); 428 453 #endif 429 454 WOLFSSL_API void wc_AesFree(Aes* aes); -
azure_iot_hub_f767zi/trunk/wolfssl-4.7.0/wolfssl/wolfcrypt/asn.h
r457 r464 24 24 */ 25 25 26 /* 27 28 DESCRIPTION 29 This library provides the interface to Abstract Syntax Notation One (ASN.1) objects. 30 ASN.1 is a standard interface description language for defining data structures 31 that can be serialized and deserialized in a cross-platform way. 32 33 */ 26 34 #ifndef WOLF_CRYPT_ASN_H 27 35 #define WOLF_CRYPT_ASN_H … … 93 101 ASN_SET = 0x11, 94 102 ASN_PRINTABLE_STRING = 0x13, 103 ASN_IA5_STRING = 0x16, 95 104 ASN_UTC_TIME = 0x17, 96 105 ASN_OTHER_TYPE = 0x00, … … 134 143 ASN_DOMAIN_COMPONENT = 0x19 /* DC */ 135 144 }; 145 146 /* This is the size of the smallest possible PEM header and footer */ 147 extern const int pem_struct_min_sz; 136 148 137 149 #if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL) … … 195 207 NID_sha384 = 673, 196 208 NID_sha512 = 674, 209 NID_pkcs9_challengePassword = 54, 197 210 NID_hw_name_oid = 73, 198 211 NID_id_pkix_OCSP_basic = 74, … … 221 234 NID_tlsfeature = 1020, /* id-pe 24 */ 222 235 NID_commonName = 0x03, /* matches ASN_COMMON_NAME in asn.h */ 236 NID_buildingName = 1494, 223 237 224 238 … … 234 248 NID_businessCategory = ASN_BUS_CAT, 235 249 NID_domainComponent = ASN_DOMAIN_COMPONENT, 250 NID_userId = 458, 236 251 NID_emailAddress = 0x30, /* emailAddress */ 237 252 NID_id_on_dnsSRV = 82, /* 1.3.6.1.5.5.7.8.7 */ … … 292 307 RSA_INTS = 8, /* RSA ints in private key */ 293 308 DSA_INTS = 5, /* DSA ints in private key */ 294 MIN_DATE_SIZE = 1 3,309 MIN_DATE_SIZE = 12, 295 310 MAX_DATE_SIZE = 32, 296 311 ASN_GEN_TIME_SZ = 15, /* 7 numbers * 2 + Zulu tag */ … … 327 342 MAX_DER_DIGEST_ASN_SZ = MAX_ENCODED_DIG_ASN_SZ + MAX_ALGO_SZ + MAX_SEQ_SZ, 328 343 /* Maximum DER digest ASN header size */ 344 /* Max X509 header length indicates the max length + 2 ('\n', '\0') */ 345 MAX_X509_HEADER_SZ = (37 + 2), /* Maximum PEM Header/Footer Size */ 329 346 #ifdef WOLFSSL_CERT_GEN 330 347 #ifdef WOLFSSL_CERT_REQ … … 340 357 /* Max total extensions, id + len + others */ 341 358 #endif 342 #if defined(WOLFSSL_CERT_EXT) || defined(OPENSSL_EXTRA) || defined(HAVE_PKCS7) 359 #if defined(WOLFSSL_CERT_EXT) || defined(OPENSSL_EXTRA) || \ 360 defined(HAVE_PKCS7) || defined(OPENSSL_EXTRA_X509_SMALL) 343 361 MAX_OID_SZ = 32, /* Max DER length of OID*/ 344 362 MAX_OID_STRING_SZ = 64, /* Max string length representation of OID*/ … … 355 373 #endif 356 374 MAX_AIA_SZ = 2, /* Max Authority Info Access extension size*/ 357 MAX_NAME_ENTRIES = 5, /* extra entries added to x509 name struct */358 375 OCSP_NONCE_EXT_SZ = 35, /* OCSP Nonce Extension size */ 359 376 MAX_OCSP_EXT_SZ = 58, /* Max OCSP Extension length */ … … 370 387 ASN_TAG_SZ = 1, /* single byte ASN.1 tag */ 371 388 MIN_VERSION_SZ = 3, /* Min bytes needed for GetMyVersion */ 389 MAX_X509_VERSION = 3, /* Max X509 version allowed */ 390 MIN_X509_VERSION = 0, /* Min X509 version allowed */ 391 WOLFSSL_X509_V1 = 0, 392 WOLFSSL_X509_V2 = 1, 393 WOLFSSL_X509_V3 = 2, 372 394 #if defined(OPENSSL_ALL) || defined(WOLFSSL_MYSQL_COMPATIBLE) || \ 373 395 defined(WOLFSSL_NGINX) || defined(WOLFSSL_HAPROXY) || \ … … 378 400 PKCS5_SALT_SZ = 8, 379 401 380 PEM_LINE_LEN = 80, /* PEM line max + fudge */ 381 }; 402 PEM_LINE_SZ = 64, /* Length of Base64 encoded line, not including new line */ 403 PEM_LINE_LEN = PEM_LINE_SZ + 12, /* PEM line max + fudge */ 404 }; 405 406 #ifndef WC_MAX_NAME_ENTRIES 407 /* entries added to x509 name struct */ 408 #define WC_MAX_NAME_ENTRIES 13 409 #endif 410 #define MAX_NAME_ENTRIES WC_MAX_NAME_ENTRIES 382 411 383 412 … … 403 432 oidTlsExtType = 18, 404 433 oidCrlExtType = 19, 434 oidCsrAttrType = 20, 405 435 oidIgnoreType 406 436 }; … … 519 549 ISSUE_ALT_NAMES_OID = 132, 520 550 TLS_FEATURE_OID = 92, /* id-pe 24 */ 521 NETSCAPE_CT_OID = 753 /* 2.16.840.1.113730.1.1 */ 551 NETSCAPE_CT_OID = 753, /* 2.16.840.1.113730.1.1 */ 552 OCSP_NOCHECK_OID = 121 /* 1.3.6.1.5.5.7.48.1.5 553 id-pkix-ocsp-nocheck */ 522 554 }; 523 555 … … 564 596 SKID_TYPE = 0, 565 597 AKID_TYPE = 1 598 }; 599 #endif 600 601 #ifdef WOLFSSL_CERT_REQ 602 enum CsrAttrType { 603 CHALLENGE_PASSWORD_OID = 659, 604 SERIAL_NUMBER_OID = 94, 605 EXTENSION_REQUEST_OID = 666, 566 606 }; 567 607 #endif … … 607 647 }; 608 648 609 #define DOMAIN_COMPONENT_MAX 10610 #define DN_NAMES_MAX 9611 612 struct DecodedName {613 char* fullName;614 int fullNameLen;615 int entryCount;616 int cnIdx;617 int cnLen;618 int cnNid;619 int snIdx;620 int snLen;621 int snNid;622 int cIdx;623 int cLen;624 int cNid;625 int lIdx;626 int lLen;627 int lNid;628 int stIdx;629 int stLen;630 int stNid;631 int oIdx;632 int oLen;633 int oNid;634 int ouIdx;635 int ouLen;636 #ifdef WOLFSSL_CERT_EXT637 int bcIdx;638 int bcLen;639 int jcIdx;640 int jcLen;641 int jsIdx;642 int jsLen;643 #endif644 int ouNid;645 int emailIdx;646 int emailLen;647 int emailNid;648 int uidIdx;649 int uidLen;650 int uidNid;651 int serialIdx;652 int serialLen;653 int serialNid;654 int dcIdx[DOMAIN_COMPONENT_MAX];655 int dcLen[DOMAIN_COMPONENT_MAX];656 int dcNum;657 int dcMode;658 #if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL)659 /* hold the location / order with which each of the DN tags was found660 *661 * example of ASN_DOMAIN_COMPONENT at index 0 if first found and so on.662 */663 int loc[DOMAIN_COMPONENT_MAX + DN_NAMES_MAX];664 int locSz;665 #endif666 };667 649 668 650 enum SignatureState { … … 697 679 #ifndef NO_RSA 698 680 byte* out; 699 byte* plain; 700 #endif 701 #if defined(HAVE_ECC) || defined(HAVE_ED25519) || defined(HAVE_ED448) 681 #endif 682 #if !(defined(NO_RSA) && defined(NO_DSA)) 683 byte* sigCpy; 684 #endif 685 #if defined(HAVE_ECC) || defined(HAVE_ED25519) || defined(HAVE_ED448) || \ 686 !defined(NO_DSA) 702 687 int verify; 703 688 #endif … … 705 690 #ifndef NO_RSA 706 691 struct RsaKey* rsa; 692 #endif 693 #ifndef NO_DSA 694 struct DsaKey* dsa; 707 695 #endif 708 696 #ifdef HAVE_ECC … … 782 770 783 771 typedef struct DecodedCert DecodedCert; 784 typedef struct DecodedName DecodedName;785 772 typedef struct Signer Signer; 786 773 #ifdef WOLFSSL_TRUST_PEER_CERT … … 804 791 #ifndef IGNORE_NAME_CONSTRAINTS 805 792 DNS_entry* altEmailNames; /* alt names list of RFC822 entries */ 793 DNS_entry* altDirNames; /* alt names list of DIR entries */ 806 794 Base_entry* permittedNames; /* Permitted name bases */ 807 795 Base_entry* excludedNames; /* Excluded name bases */ … … 909 897 #endif /* WOLFSSL_CERT_GEN */ 910 898 #if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL) 911 DecodedName issuerName; 912 DecodedName subjectName; 899 /* WOLFSSL_X509_NAME structures (used void* to avoid including ssl.h) */ 900 void* issuerName; 901 void* subjectName; 913 902 #endif /* OPENSSL_EXTRA */ 914 903 #ifdef WOLFSSL_SEP … … 925 914 #endif /* defined(WOLFSSL_CERT_GEN) || defined(WOLFSSL_CERT_EXT) */ 926 915 916 #ifdef WOLFSSL_CERT_REQ 917 /* CSR attributes */ 918 char* cPwd; /* challengePassword */ 919 int cPwdLen; 920 char* sNum; /* Serial Number */ 921 int sNumLen; 922 #endif /* WOLFSSL_CERT_REQ */ 923 927 924 Signer* ca; 928 925 #ifndef NO_CERTS … … 948 945 byte extKeyUsageSet : 1; 949 946 byte extExtKeyUsageSet : 1; /* Extended Key Usage set */ 947 #ifdef HAVE_OCSP 948 byte ocspNoCheckSet : 1; /* id-pkix-ocsp-nocheck set */ 949 #endif 950 950 byte extCRLdistSet : 1; 951 951 byte extAuthInfoSet : 1; … … 973 973 byte extCertPolicyCrit : 1; 974 974 #endif 975 975 #ifdef WOLFSSL_CERT_REQ 976 byte isCSR : 1; /* Do we intend on parsing a CSR? */ 977 #endif 976 978 }; 977 979 … … 1049 1051 #endif 1050 1052 1053 #ifdef HAVE_SMIME 1054 #define MIME_HEADER_ASCII_MIN 33 1055 #define MIME_HEADER_ASCII_MAX 126 1056 1057 typedef struct MimeParam MimeParam; 1058 typedef struct MimeHdr MimeHdr; 1059 1060 struct MimeParam 1061 { 1062 MimeParam* next; 1063 char* attribute; 1064 char* value; 1065 }; 1066 1067 struct MimeHdr 1068 { 1069 MimeHdr* next; 1070 MimeParam* params; 1071 char* name; 1072 char* body; 1073 }; 1074 1075 typedef enum MimeTypes 1076 { 1077 MIME_HDR, 1078 MIME_PARAM 1079 } MimeTypes; 1080 1081 typedef enum MimeStatus 1082 { 1083 MIME_NAMEATTR, 1084 MIME_BODYVAL 1085 } MimeStatus; 1086 #endif /* HAVE_SMIME */ 1087 1088 1051 1089 WOLFSSL_LOCAL int CalcHashId(const byte* data, word32 len, byte* hash); 1090 WOLFSSL_LOCAL int GetName(DecodedCert* cert, int nameType, int maxIdx); 1052 1091 1053 1092 WOLFSSL_ASN_API int wc_BerToDer(const byte* ber, word32 berSz, byte* der, … … 1069 1108 WOLFSSL_LOCAL int CheckCertSignaturePubKey(const byte* cert, word32 certSz, 1070 1109 void* heap, const byte* pubKey, word32 pubKeySz, int pubKeyOID); 1110 #ifdef WOLFSSL_CERT_REQ 1111 WOLFSSL_LOCAL int CheckCSRSignaturePubKey(const byte* cert, word32 certSz, void* heap, 1112 const byte* pubKey, word32 pubKeySz, int pubKeyOID); 1113 #endif /* WOLFSSL_CERT_REQ */ 1114 WOLFSSL_LOCAL int AddSignature(byte* buf, int bodySz, const byte* sig, int sigSz, 1115 int sigAlgoType); 1071 1116 WOLFSSL_LOCAL int ParseCertRelative(DecodedCert*,int type,int verify,void* cm); 1072 1117 WOLFSSL_LOCAL int DecodeToKey(DecodedCert*, int verify); … … 1116 1161 wolfssl_tm* certTime, int* idx); 1117 1162 WOLFSSL_LOCAL int DateGreaterThan(const struct tm* a, const struct tm* b); 1118 WOLFSSL_LOCAL int ValidateDate(const byte* date, byte format, int dateType);1163 WOLFSSL_LOCAL int wc_ValidateDate(const byte* date, byte format, int dateType); 1119 1164 WOLFSSL_LOCAL int wc_OBJ_sn2nid(const char *sn); 1120 1165 … … 1122 1167 #ifdef WOLFSSL_CERT_GEN 1123 1168 WOLFSSL_ASN_API int SetName(byte* output, word32 outputSz, CertName* name); 1169 WOLFSSL_LOCAL const char* GetOneCertName(CertName* name, int idx); 1170 WOLFSSL_LOCAL byte GetCertNameId(int idx); 1124 1171 #endif 1125 1172 WOLFSSL_LOCAL int GetShortInt(const byte* input, word32* inOutIdx, int* number, … … 1139 1186 WOLFSSL_LOCAL int GetOctetString(const byte* input, word32* inOutIdx, int* len, 1140 1187 word32 maxIdx); 1188 WOLFSSL_LOCAL int CheckBitString(const byte* input, word32* inOutIdx, int* len, 1189 word32 maxIdx, int zeroBits, byte* unusedBits); 1141 1190 WOLFSSL_LOCAL int GetSet(const byte* input, word32* inOutIdx, int* len, 1142 1191 word32 maxIdx); … … 1173 1222 WOLFSSL_LOCAL int wc_DhPrivKeyToDer(DhKey* key, byte* out, word32* outSz); 1174 1223 #endif 1224 WOLFSSL_LOCAL int SetASNInt(int len, byte firstByte, byte* output); 1175 1225 WOLFSSL_LOCAL word32 SetBitString(word32 len, byte unusedBits, byte* output); 1176 1226 WOLFSSL_LOCAL word32 SetImplicit(byte tag,byte number,word32 len,byte* output); … … 1185 1235 WOLFSSL_LOCAL int GetNameHash(const byte* source, word32* idx, byte* hash, 1186 1236 int maxIdx); 1187 WOLFSSL_LOCAL int wc_CheckPrivateKey(byte* key, word32 keySz, DecodedCert* der); 1237 WOLFSSL_LOCAL int wc_CheckPrivateKeyCert(const byte* key, word32 keySz, DecodedCert* der); 1238 WOLFSSL_LOCAL int wc_CheckPrivateKey(const byte* privKey, word32 privKeySz, 1239 const byte* pubKey, word32 pubKeySz, enum Key_Sum ks); 1188 1240 WOLFSSL_LOCAL int StoreDHparams(byte* out, word32* outLen, mp_int* p, mp_int* g); 1189 1241 WOLFSSL_LOCAL int FlattenAltNames( byte*, word32, const DNS_entry*); … … 1193 1245 WOLFSSL_LOCAL int StoreECC_DSA_Sig(byte* out, word32* outLen, mp_int* r, 1194 1246 mp_int* s); 1247 WOLFSSL_LOCAL int StoreECC_DSA_Sig_Bin(byte* out, word32* outLen, 1248 const byte* r, word32 rLen, const byte* s, word32 sLen); 1249 WOLFSSL_LOCAL int DecodeECC_DSA_Sig_Bin(const byte* sig, word32 sigLen, 1250 byte* r, word32* rLen, byte* s, word32* sLen); 1251 #endif 1252 #if defined(HAVE_ECC) || !defined(NO_DSA) 1195 1253 WOLFSSL_LOCAL int DecodeECC_DSA_Sig(const byte* sig, word32 sigLen, 1196 1254 mp_int* r, mp_int* s); … … 1215 1273 1216 1274 #endif /* !NO_CERTS */ 1275 1276 #ifdef HAVE_SMIME 1277 WOLFSSL_LOCAL int wc_MIME_parse_headers(char* in, int inLen, MimeHdr** hdrs); 1278 WOLFSSL_LOCAL int wc_MIME_header_strip(char* in, char** out, size_t start, size_t end); 1279 WOLFSSL_LOCAL int wc_MIME_create_header(char* name, char* body, MimeHdr** hdr); 1280 WOLFSSL_LOCAL int wc_MIME_create_parameter(char* attribute, char* value, MimeParam** param); 1281 WOLFSSL_LOCAL MimeHdr* wc_MIME_find_header_name(const char* name, MimeHdr* hdr); 1282 WOLFSSL_LOCAL MimeParam* wc_MIME_find_param_attr(const char* attribute, MimeParam* param); 1283 WOLFSSL_LOCAL int wc_MIME_free_hdrs(MimeHdr* head); 1284 #endif /* HAVE_SMIME */ 1217 1285 1218 1286 #ifdef WOLFSSL_CERT_GEN … … 1231 1299 ECC_KEY = 12, 1232 1300 ED25519_KEY = 13, 1233 ED448_KEY = 14 1301 ED448_KEY = 14, 1302 DSA_KEY = 15 1234 1303 }; 1235 1304 … … 1282 1351 byte serial[EXTERNAL_SERIAL_SIZE]; 1283 1352 int serialSz; 1353 #ifdef OPENSSL_EXTRA 1354 WOLFSSL_ASN1_INTEGER* serialInt; 1355 #endif 1284 1356 1285 1357 int status; … … 1289 1361 byte thisDateFormat; 1290 1362 byte nextDateFormat; 1291 #if defined(OPENSSL_ALL) || defined(WOLFSSL_NGINX) || defined(WOLFSSL_HAPROXY) 1363 #if defined(OPENSSL_ALL) || defined(WOLFSSL_NGINX) || defined(WOLFSSL_HAPROXY) || defined(HAVE_LIGHTY) 1292 1364 WOLFSSL_ASN1_TIME thisDateParsed; 1293 1365 WOLFSSL_ASN1_TIME nextDateParsed; … … 1300 1372 }; 1301 1373 1302 1374 typedef struct OcspEntry OcspEntry; 1375 1376 #ifdef NO_SHA 1377 #define OCSP_DIGEST_SIZE WC_SHA256_DIGEST_SIZE 1378 #else 1379 #define OCSP_DIGEST_SIZE WC_SHA_DIGEST_SIZE 1380 #endif 1381 1382 struct OcspEntry 1383 { 1384 OcspEntry *next; /* next entry */ 1385 word32 hashAlgoOID; /* hash algo ID */ 1386 byte issuerHash[OCSP_DIGEST_SIZE]; /* issuer hash */ 1387 byte issuerKeyHash[OCSP_DIGEST_SIZE]; /* issuer public key hash */ 1388 CertStatus *status; /* OCSP response list */ 1389 int totalStatus; /* number on list */ 1390 byte* rawCertId; /* raw bytes of the CertID */ 1391 int rawCertIdSize; /* num bytes in raw CertID */ 1392 /* option bits - using 32-bit for alignment */ 1393 word32 isDynamic:1; /* was dynamically allocated */ 1394 1395 }; 1396 1397 /* TODO: Long-term, it would be helpful if we made this struct and other OCSP 1398 structs conform to the ASN spec as described in RFC 6960. It will help 1399 with readability and with implementing OpenSSL compatibility API 1400 functions, because OpenSSL's OCSP data structures conform to the 1401 RFC. */ 1303 1402 struct OcspResponse { 1304 1403 int responseStatus; /* return code from Responder */ … … 1310 1409 /* Date at which this response was signed */ 1311 1410 byte producedDateFormat; /* format of the producedDate */ 1312 byte* issuerHash;1313 byte* issuerKeyHash;1314 1411 1315 1412 byte* cert; … … 1320 1417 word32 sigOID; /* OID for hash used for sig */ 1321 1418 1322 CertStatus* status; /* certificate status to fill out*/1419 OcspEntry* single; /* chain of OCSP single responses */ 1323 1420 1324 1421 byte* nonce; /* pointer to nonce inside ASN.1 response */ … … 1331 1428 int verifyError; 1332 1429 #endif 1430 void* heap; 1333 1431 }; 1334 1432 … … 1351 1449 }; 1352 1450 1353 typedef struct OcspEntry OcspEntry; 1354 1355 #ifdef NO_SHA 1356 #define OCSP_DIGEST_SIZE WC_SHA256_DIGEST_SIZE 1357 #else 1358 #define OCSP_DIGEST_SIZE WC_SHA_DIGEST_SIZE 1359 #endif 1360 1361 struct OcspEntry 1362 { 1363 OcspEntry *next; /* next entry */ 1364 byte issuerHash[OCSP_DIGEST_SIZE]; /* issuer hash */ 1365 byte issuerKeyHash[OCSP_DIGEST_SIZE]; /* issuer public key hash */ 1366 CertStatus *status; /* OCSP response list */ 1367 int totalStatus; /* number on list */ 1368 }; 1369 1370 WOLFSSL_LOCAL void InitOcspResponse(OcspResponse*, CertStatus*, byte*, word32); 1371 WOLFSSL_LOCAL int OcspResponseDecode(OcspResponse*, void*, void* heap, int); 1451 WOLFSSL_LOCAL void InitOcspResponse(OcspResponse*, OcspEntry*, CertStatus*, byte*, word32, void*); 1452 WOLFSSL_LOCAL void FreeOcspResponse(OcspResponse*); 1453 WOLFSSL_LOCAL int OcspResponseDecode(OcspResponse*, void*, void* heap, int); 1372 1454 1373 1455 WOLFSSL_LOCAL int InitOcspRequest(OcspRequest*, DecodedCert*, byte, void*); … … 1447 1529 1448 1530 enum PBESTypes { 1449 PBE_MD5_DES = 0, 1450 PBE_SHA1_RC4_128 = 1, 1451 PBE_SHA1_DES = 2, 1452 PBE_SHA1_DES3 = 3, 1453 PBE_AES256_CBC = 4, 1454 PBE_AES128_CBC = 5, 1531 PBE_MD5_DES = 0, 1532 PBE_SHA1_RC4_128 = 1, 1533 PBE_SHA1_DES = 2, 1534 PBE_SHA1_DES3 = 3, 1535 PBE_AES256_CBC = 4, 1536 PBE_AES128_CBC = 5, 1537 PBE_SHA1_40RC2_CBC = 6, 1455 1538 1456 1539 PBE_SHA1_RC4_128_SUM = 657, -
azure_iot_hub_f767zi/trunk/wolfssl-4.7.0/wolfssl/wolfcrypt/asn_public.h
r457 r464 24 24 */ 25 25 26 /* 27 DESCRIPTION 28 This library defines the interface APIs for X509 certificates. 29 30 */ 26 31 #ifndef WOLF_CRYPT_ASN_PUBLIC_H 27 32 #define WOLF_CRYPT_ASN_PUBLIC_H … … 122 127 enum Ctc_SigType { 123 128 CTC_SHAwDSA = 517, 129 CTC_SHA256wDSA = 416, 124 130 CTC_MD2wRSA = 646, 125 131 CTC_MD5wRSA = 648, … … 326 332 char certPolicies[CTC_MAX_CERTPOL_NB][CTC_MAX_CERTPOL_SZ]; 327 333 word16 certPoliciesNb; /* Number of Cert Policy */ 334 #endif 335 #if defined(WOLFSSL_CERT_EXT) || defined(OPENSSL_EXTRA) || \ 336 defined(WOLFSSL_CERT_REQ) 328 337 byte issRaw[sizeof(CertName)]; /* raw issuer info */ 329 338 byte sbjRaw[sizeof(CertName)]; /* raw subject info */ … … 510 519 WOLFSSL_API int wc_EccPrivateKeyToPKCS8(ecc_key* key, byte* output, 511 520 word32* outLen); 521 WOLFSSL_API int wc_EccKeyToPKCS8(ecc_key* key, byte* output, 522 word32* outLen); 512 523 513 524 /* public key helper */ -
azure_iot_hub_f767zi/trunk/wolfssl-4.7.0/wolfssl/wolfcrypt/chacha.h
r457 r464 19 19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA 20 20 */ 21 /* 21 22 23 DESCRIPTION 24 This library contains implementation for the ChaCha20 stream cipher. 25 26 */ 22 27 /*! 23 28 \file wolfssl/wolfcrypt/chacha.h … … 36 41 #endif 37 42 43 /* 44 Initialization vector starts at 13 with zero being the index origin of a matrix. 45 Block counter is located at index 12. 46 0 1 2 3 47 4 5 6 7 48 8 9 10 11 49 12 13 14 15 50 */ 51 #define CHACHA_MATRIX_CNT_IV 12 52 38 53 /* Size of the IV */ 39 54 #define CHACHA_IV_WORDS 3 40 #define CHACHA_IV_BYTES (CHACHA_IV_WORDS * sizeof(word32)) 55 56 /* Size of IV in bytes*/ 57 #define CHACHA_IV_BYTES 12 58 #ifdef HAVE_XCHACHA 59 #define XCHACHA_NONCE_BYTES 24 60 #endif 41 61 42 62 /* Size of ChaCha chunks */ … … 58 78 typedef struct ChaCha { 59 79 word32 X[CHACHA_CHUNK_WORDS]; /* state of cipher */ 60 word32 left; /* number of bytes leftover */61 80 #ifdef HAVE_INTEL_AVX1 62 81 /* vpshufd reads 16 bytes but we only use bottom 4. */ 63 82 byte extra[12]; 83 #endif 84 word32 left; /* number of bytes leftover */ 85 #if defined(USE_INTEL_CHACHA_SPEEDUP) || defined(WOLFSSL_ARMASM) 86 word32 over[CHACHA_CHUNK_WORDS]; 64 87 #endif 65 88 } ChaCha; … … 73 96 WOLFSSL_API int wc_Chacha_Process(ChaCha* ctx, byte* cipher, const byte* plain, 74 97 word32 msglen); 98 99 WOLFSSL_LOCAL void wc_Chacha_purge_current_block(ChaCha* ctx); 100 75 101 WOLFSSL_API int wc_Chacha_SetKey(ChaCha* ctx, const byte* key, word32 keySz); 102 103 #ifdef HAVE_XCHACHA 104 WOLFSSL_API int wc_XChacha_SetKey(ChaCha *ctx, const byte *key, word32 keySz, 105 const byte *nonce, word32 nonceSz, 106 word32 counter); 107 #endif 76 108 77 109 #ifdef __cplusplus -
azure_iot_hub_f767zi/trunk/wolfssl-4.7.0/wolfssl/wolfcrypt/cpuid.h
r457 r464 35 35 #if defined(WOLFSSL_X86_64_BUILD) || defined(USE_INTEL_SPEEDUP) || \ 36 36 defined(WOLFSSL_AESNI) 37 37 38 #define CPUID_AVX1 0x0001 38 39 #define CPUID_AVX2 0x0002 … … 42 43 #define CPUID_AESNI 0x0020 43 44 #define CPUID_ADX 0x0040 /* ADCX, ADOX */ 45 #define CPUID_MOVBE 0x0080 /* Move and byte swap */ 44 46 45 47 #define IS_INTEL_AVX1(f) ((f) & CPUID_AVX1) … … 50 52 #define IS_INTEL_AESNI(f) ((f) & CPUID_AESNI) 51 53 #define IS_INTEL_ADX(f) ((f) & CPUID_ADX) 54 #define IS_INTEL_MOVBE(f) ((f) & CPUID_MOVBE) 52 55 53 56 void cpuid_set_flags(void); 54 57 word32 cpuid_get_flags(void); 58 59 /* Public APIs to modify flags. */ 60 WOLFSSL_API void cpuid_select_flags(word32 flags); 61 WOLFSSL_API void cpuid_set_flag(word32 flag); 62 WOLFSSL_API void cpuid_clear_flag(word32 flag); 63 55 64 #endif 56 65 -
azure_iot_hub_f767zi/trunk/wolfssl-4.7.0/wolfssl/wolfcrypt/curve25519.h
r457 r464 88 88 89 89 WOLFSSL_API 90 int wc_curve25519_make_pub(int public_size, byte* pub, int private_size, 91 const byte* priv); 92 93 WOLFSSL_API 94 int wc_curve25519_generic(int public_size, byte* pub, 95 int private_size, const byte* priv, 96 int basepoint_size, const byte* basepoint); 97 98 WOLFSSL_API 99 int wc_curve25519_make_priv(WC_RNG* rng, int keysize, byte* priv); 100 101 WOLFSSL_API 90 102 int wc_curve25519_make_key(WC_RNG* rng, int keysize, curve25519_key* key); 91 103 -
azure_iot_hub_f767zi/trunk/wolfssl-4.7.0/wolfssl/wolfcrypt/dh.h
r457 r464 46 46 #include <wolfssl/wolfcrypt/async.h> 47 47 #endif 48 49 /* Optional support extended DH public / private keys */ 50 #if !defined(WOLFSSL_DH_EXTRA) && (defined(WOLFSSL_QT) || \ 51 defined(OPENSSL_ALL) || defined(WOLFSSL_OPENSSH) || \ 52 defined(WOLFSSL_STATIC_EPHEMERAL)) 53 #define WOLFSSL_DH_EXTRA 54 #endif 55 48 56 typedef struct DhParams { 49 57 #ifdef HAVE_FFDHE_Q 50 58 const byte* q; 51 59 word32 q_len; 52 60 #endif /* HAVE_FFDHE_Q */ 53 61 const byte* p; 54 62 word32 p_len; … … 59 67 /* Diffie-Hellman Key */ 60 68 struct DhKey { 61 mp_int p, g, q; /* group parameters*/62 #if defined(WOLFSSL_QT) || defined(OPENSSL_ALL) || defined(WOLFSSL_OPENSSH)69 mp_int p, g, q; /* group parameters */ 70 #ifdef WOLFSSL_DH_EXTRA 63 71 mp_int pub; 64 72 mp_int priv; … … 102 110 103 111 WOLFSSL_API int wc_DhKeyDecode(const byte* input, word32* inOutIdx, DhKey* key, 104 word32); 112 word32); /* wc_DhKeyDecode is in asn.c */ 113 105 114 WOLFSSL_API int wc_DhSetKey(DhKey* key, const byte* p, word32 pSz, const byte* g, 106 115 word32 gSz); 107 116 WOLFSSL_API int wc_DhSetKey_ex(DhKey* key, const byte* p, word32 pSz, 108 117 const byte* g, word32 gSz, const byte* q, word32 qSz); 109 #if defined(WOLFSSL_QT) || defined(OPENSSL_ALL) 110 WOLFSSL_LOCAL int wc_DhSetFullKeys(DhKey* key,const byte* priv_key,word32 privSz, 111 const byte* pub_key, word32 pubSz); 118 119 #ifdef WOLFSSL_DH_EXTRA 120 WOLFSSL_API int wc_DhImportKeyPair(DhKey* key, const byte* priv, word32 privSz, 121 const byte* pub, word32 pubSz); 122 WOLFSSL_API int wc_DhExportKeyPair(DhKey* key, byte* priv, word32* pPrivSz, 123 byte* pub, word32* pPubSz); 124 WOLFSSL_LOCAL int wc_DhKeyCopy(DhKey* src, DhKey* dst); 112 125 #endif 113 126 WOLFSSL_API int wc_DhSetCheckKey(DhKey* key, const byte* p, word32 pSz, … … 137 150 #endif /* NO_DH */ 138 151 #endif /* WOLF_CRYPT_DH_H */ 139 -
azure_iot_hub_f767zi/trunk/wolfssl-4.7.0/wolfssl/wolfcrypt/ecc.h
r457 r464 51 51 #endif 52 52 53 #if def WOLFSSL_ATECC508A53 #if defined(WOLFSSL_ATECC508A) || defined(WOLFSSL_ATECC608A) 54 54 #include <wolfssl/wolfcrypt/port/atmel/atmel.h> 55 55 #endif /* WOLFSSL_ATECC508A */ … … 58 58 #include <wolfssl/wolfcrypt/port/arm/cryptoCell.h> 59 59 #endif 60 61 #ifdef WOLFSSL_SILABS_SE_ACCEL 62 #include <wolfssl/wolfcrypt/port/silabs/silabs_ecc.h> 63 #endif 64 65 #ifdef WOLFSSL_HAVE_SP_ECC 66 #include <wolfssl/wolfcrypt/sp_int.h> 67 #endif 68 60 69 61 70 #ifdef __cplusplus … … 121 130 SIG_HEADER_SZ = 7, /* ECC signature header size (30 81 87 02 42 [R] 02 42 [S]) */ 122 131 ECC_BUFSIZE = 256, /* for exported keys temp buffer */ 123 ECC_MINSIZE = 20, /* MIN Private Key size */132 ECC_MINSIZE = ECC_MIN_KEY_SZ/8, /* MIN Private Key size */ 124 133 ECC_MAXSIZE = 66, /* MAX Private Key size */ 125 134 ECC_MAXSIZE_GEN = 74, /* MAX Buffer size required when generating ECC keys*/ … … 128 137 129 138 /* max crypto hardware size */ 130 #if def WOLFSSL_ATECC508A139 #if defined(WOLFSSL_ATECC508A) || defined(WOLFSSL_ATECC608A) 131 140 ECC_MAX_CRYPTO_HW_SIZE = ATECC_KEY_SIZE, /* from port/atmel/atmel.h */ 132 141 ECC_MAX_CRYPTO_HW_PUBKEY_SIZE = (ATECC_KEY_SIZE*2), 133 142 #elif defined(PLUTON_CRYPTO_ECC) 143 ECC_MAX_CRYPTO_HW_SIZE = 32, 144 #elif defined(WOLFSSL_SILABS_SE_ACCEL) 134 145 ECC_MAX_CRYPTO_HW_SIZE = 32, 135 146 #elif defined(WOLFSSL_CRYPTOCELL) … … 148 159 SHAMIR_PRECOMP_SZ = 16, 149 160 150 #ifdef HAVE_PKCS11161 #ifdef WOLF_CRYPTO_CB 151 162 ECC_MAX_ID_LEN = 32, 163 ECC_MAX_LABEL_LEN = 32, 152 164 #endif 153 165 }; … … 204 216 ECC_CURVE_CUSTOM, 205 217 #endif 218 ECC_CURVE_MAX 206 219 } ecc_curve_id; 207 220 … … 279 292 * of the point are pointers that are set to each of a three item array of 280 293 * alt_fp_ints. While an mp_int will have 4096 bits of digit inside the 281 * structure, the alt_fp_int will only have 528 bits. A size value was added 282 * in the ALT case, as well, and is set by mp_init() and alt_fp_init(). The 283 * functions fp_zero() and fp_copy() use the size parameter. An int needs to 284 * be initialized before using it instead of just fp_zeroing it, the init will 285 * call zero. FP_MAX_BITS_ECC defaults to 528, but can be set to change the 286 * number of bits used in the alternate FP_INT. 294 * structure, the alt_fp_int will only have 512 bits for ECC 256-bit and 295 * 1056-bits for ECC 521-bit. A size value was added in the ALT case, as well, 296 * and is set by mp_init() and alt_fp_init(). The functions fp_zero() and 297 * fp_copy() use the size parameter. An int needs to be initialized before 298 * using it instead of just fp_zeroing it, the init will call zero. The 299 * FP_MAX_BITS_ECC defaults to calculating based on MAX_ECC_BITS, but 300 * can be set to change the number of bits used in the alternate FP_INT. 287 301 * 288 * Do not enable ALT_ECC_SIZE and disable fast math in the configuration.302 * The ALT_ECC_SIZE option only applies to stack based fast math USE_FAST_MATH. 289 303 */ 290 304 … … 295 309 /* determine max bits required for ECC math */ 296 310 #ifndef FP_MAX_BITS_ECC 297 /* check alignment */ 298 #if ((MAX_ECC_BITS * 2) % DIGIT_BIT) == 0 299 /* max bits is double */ 300 #define FP_MAX_BITS_ECC (MAX_ECC_BITS * 2) 301 #else 302 /* max bits is doubled, plus one digit of fudge */ 303 #define FP_MAX_BITS_ECC ((MAX_ECC_BITS * 2) + DIGIT_BIT) 304 #endif 305 #else 306 /* verify alignment */ 307 #if FP_MAX_BITS_ECC % CHAR_BIT 308 #error FP_MAX_BITS_ECC must be a multiple of CHAR_BIT 309 #endif 311 /* max bits rounded up by 8 then doubled */ 312 /* (ROUND8(MAX_ECC_BITS) * 2) */ 313 #define FP_MAX_BITS_ECC (2 * \ 314 ((MAX_ECC_BITS + DIGIT_BIT - 1) / DIGIT_BIT) * DIGIT_BIT) 315 316 /* Note: For ECC verify only FP_MAX_BITS_ECC can be reduced to: 317 ROUND8(MAX_ECC_BITS) + ROUND8(DIGIT_BIT) */ 318 #endif 319 320 /* verify alignment */ 321 #if FP_MAX_BITS_ECC % CHAR_BIT 322 #error FP_MAX_BITS_ECC must be a multiple of CHAR_BIT 310 323 #endif 311 324 312 325 /* determine buffer size */ 313 #define FP_SIZE_ECC (FP_MAX_BITS_ECC/DIGIT_BIT) 326 /* Add one to accommodate extra digit used by sp_mul(), sp_mulmod(), sp_sqr(), and sp_sqrmod(). */ 327 #define FP_SIZE_ECC ((FP_MAX_BITS_ECC/DIGIT_BIT) + 1) 314 328 315 329 … … 348 362 /* ECC Flags */ 349 363 enum { 350 WC_ECC_FLAG_NONE = 0x00,364 WC_ECC_FLAG_NONE = 0x00, 351 365 #ifdef HAVE_ECC_CDH 352 366 WC_ECC_FLAG_COFACTOR = 0x01, 353 367 #endif 368 WC_ECC_FLAG_DEC_SIGN = 0x02, 354 369 }; 370 371 /* ECC non-blocking */ 372 #ifdef WC_ECC_NONBLOCK 373 typedef struct ecc_nb_ctx { 374 #if defined(WOLFSSL_HAVE_SP_ECC) && defined(WOLFSSL_SP_NONBLOCK) 375 sp_ecc_ctx_t sp_ctx; 376 #else 377 /* build configuration not supported */ 378 #error ECC non-blocking only supports SP (--enable-sp=nonblock) 379 #endif 380 } ecc_nb_ctx_t; 381 #endif /* WC_ECC_NONBLOCK */ 382 355 383 356 384 /* An ECC Key */ … … 370 398 ecc_point pubkey; /* public key */ 371 399 mp_int k; /* private key */ 372 #if def WOLFSSL_ATECC508A400 #if defined(WOLFSSL_ATECC508A) || defined(WOLFSSL_ATECC608A) 373 401 int slot; /* Key Slot Number (-1 unknown) */ 374 402 byte pubkey_raw[ECC_MAX_CRYPTO_HW_PUBKEY_SIZE]; … … 377 405 int devId; 378 406 #endif 407 #ifdef WOLFSSL_SILABS_SE_ACCEL 408 sl_se_command_context_t cmd_ctx; 409 sl_se_key_descriptor_t key; 410 /* Used for SiLabs "plaintext" with public X, public Y, and 411 * private D concatenated. These are respectively at offset `0`, 412 * offset `keysize`, and offset `2 * keysize`. 413 */ 414 byte key_raw[3 * ECC_MAX_CRYPTO_HW_SIZE]; 415 #endif 416 379 417 #ifdef WOLFSSL_ASYNC_CRYPT 380 418 mp_int* r; /* sign/verify temps */ … … 389 427 #endif 390 428 #endif /* WOLFSSL_ASYNC_CRYPT */ 391 #ifdef HAVE_PKCS11429 #ifdef WOLF_CRYPTO_CB 392 430 byte id[ECC_MAX_ID_LEN]; 393 431 int idLen; 432 char label[ECC_MAX_LABEL_LEN]; 433 int labelLen; 394 434 #endif 395 435 #if defined(WOLFSSL_CRYPTOCELL) … … 414 454 remote_handle64 handle; 415 455 #endif 456 #ifdef ECC_TIMING_RESISTANT 457 WC_RNG* rng; 458 #endif 459 #ifdef WC_ECC_NONBLOCK 460 ecc_nb_ctx_t* nb_ctx; 461 #endif 416 462 }; 417 463 … … 428 474 const char* wc_ecc_get_name(int curve_id); 429 475 430 #if ndef WOLFSSL_ATECC508A476 #if !defined(WOLFSSL_ATECC508A) && !defined(WOLFSSL_ATECC608A) 431 477 432 478 #ifdef WOLFSSL_PUBLIC_ECC_ADD_DBL … … 447 493 mp_int* modulus, mp_digit mp); 448 494 495 WOLFSSL_LOCAL 496 int ecc_projective_add_point_safe(ecc_point* A, ecc_point* B, ecc_point* R, 497 mp_int* a, mp_int* modulus, mp_digit mp, int* infinity); 498 WOLFSSL_LOCAL 499 int ecc_projective_dbl_point_safe(ecc_point* P, ecc_point* R, mp_int* a, 500 mp_int* modulus, mp_digit mp); 501 449 502 #endif 450 503 … … 454 507 int wc_ecc_make_key_ex(WC_RNG* rng, int keysize, ecc_key* key, int curve_id); 455 508 WOLFSSL_API 509 int wc_ecc_make_key_ex2(WC_RNG* rng, int keysize, ecc_key* key, int curve_id, 510 int flags); 511 WOLFSSL_API 456 512 int wc_ecc_make_pub(ecc_key* key, ecc_point* pubOut); 513 WOLFSSL_API 514 int wc_ecc_make_pub_ex(ecc_key* key, ecc_point* pubOut, WC_RNG* rng); 457 515 WOLFSSL_API 458 516 int wc_ecc_check_key(ecc_key* key); … … 473 531 byte* out, word32 *outlen); 474 532 475 #if defined(WOLFSSL_ATECC508A) || defined(PLUTON_CRYPTO_ECC) || defined(WOLFSSL_CRYPTOCELL) 533 #if defined(WOLFSSL_ATECC508A) || defined(WOLFSSL_ATECC608A) || \ 534 defined(PLUTON_CRYPTO_ECC) || defined(WOLFSSL_CRYPTOCELL) 476 535 #define wc_ecc_shared_secret_ssh wc_ecc_shared_secret 477 536 #else … … 507 566 WOLFSSL_ABI WOLFSSL_API 508 567 int wc_ecc_init_ex(ecc_key* key, void* heap, int devId); 509 #ifdef HAVE_PKCS11568 #ifdef WOLF_CRYPTO_CB 510 569 WOLFSSL_API 511 570 int wc_ecc_init_id(ecc_key* key, unsigned char* id, int len, void* heap, 512 571 int devId); 572 WOLFSSL_API 573 int wc_ecc_init_label(ecc_key* key, const char* label, void* heap, int devId); 513 574 #endif 514 575 #ifdef WOLFSSL_CUSTOM_CURVES … … 522 583 WOLFSSL_API 523 584 void wc_ecc_fp_free(void); 585 WOLFSSL_LOCAL 586 void wc_ecc_fp_init(void); 587 #ifdef ECC_TIMING_RESISTANT 588 WOLFSSL_API 589 int wc_ecc_set_rng(ecc_key* key, WC_RNG* rng); 590 #endif 524 591 525 592 WOLFSSL_API … … 569 636 WOLFSSL_API 570 637 int wc_ecc_point_is_at_infinity(ecc_point *p); 571 572 #ifndef WOLFSSL_ATECC508A 638 WOLFSSL_API 639 int wc_ecc_point_is_on_curve(ecc_point *p, int curve_idx); 640 641 #if !defined(WOLFSSL_ATECC508A) && !defined(WOLFSSL_ATECC608A) 573 642 WOLFSSL_API 574 643 int wc_ecc_mulmod(mp_int* k, ecc_point *G, ecc_point *R, … … 577 646 int wc_ecc_mulmod_ex(mp_int* k, ecc_point *G, ecc_point *R, 578 647 mp_int* a, mp_int* modulus, int map, void* heap); 648 WOLFSSL_LOCAL 649 int wc_ecc_mulmod_ex2(mp_int* k, ecc_point *G, ecc_point *R, mp_int* a, 650 mp_int* modulus, mp_int* order, WC_RNG* rng, int map, 651 void* heap); 579 652 #endif /* !WOLFSSL_ATECC508A */ 580 653 … … 755 828 #endif 756 829 830 #ifdef WC_ECC_NONBLOCK 831 WOLFSSL_API int wc_ecc_set_nonblock(ecc_key *key, ecc_nb_ctx_t* ctx); 832 #endif 833 757 834 #ifdef __cplusplus 758 835 } /* extern "C" */ -
azure_iot_hub_f767zi/trunk/wolfssl-4.7.0/wolfssl/wolfcrypt/error-crypt.h
r457 r464 22 22 /*! 23 23 \file wolfssl/wolfcrypt/error-crypt.h 24 */ 25 /* 26 DESCRIPTION 27 This library defines error codes and contians routines for setting and examining 28 the error status. 24 29 */ 25 30 … … 228 233 PKCS7_SIGNEEDS_CHECK= -272, /* signature needs verified by caller */ 229 234 PSS_SALTLEN_RECOVER_E=-273, /* PSS slat length not recoverable */ 230 231 ASN_SELF_SIGNED_E = -27 4,/* ASN self-signed certificate error */232 233 WC_LAST_E = -27 4, /* Update this to indicate last error */235 CHACHA_POLY_OVERFLOW =-274, /* ChaCha20Poly1305 limit overflow */ 236 ASN_SELF_SIGNED_E = -275, /* ASN self-signed certificate error */ 237 238 WC_LAST_E = -275, /* Update this to indicate last error */ 234 239 MIN_CODE_E = -300 /* errors -101 - -299 */ 235 240 -
azure_iot_hub_f767zi/trunk/wolfssl-4.7.0/wolfssl/wolfcrypt/hmac.h
r457 r464 95 95 #endif 96 96 #ifdef HAVE_PKCS11 97 HMAC_MAX_ID_LEN = 32, 97 HMAC_MAX_ID_LEN = 32, 98 HMAC_MAX_LABEL_LEN = 32, 98 99 #endif 99 100 }; … … 132 133 wc_Sha3 sha3; 133 134 #endif 134 } Hash;135 } wc_Hmac_Hash; 135 136 136 137 /* Hmac digest */ 137 138 struct Hmac { 138 Hash hash;139 wc_Hmac_Hash hash; 139 140 word32 ipad[WC_HMAC_BLOCK_SIZE / sizeof(word32)]; /* same block size all*/ 140 141 word32 opad[WC_HMAC_BLOCK_SIZE / sizeof(word32)]; … … 154 155 byte id[HMAC_MAX_ID_LEN]; 155 156 int idLen; 157 char label[HMAC_MAX_LABEL_LEN]; 158 int labelLen; 156 159 #endif 157 160 #if defined(WOLFSSL_ASYNC_CRYPT) || defined(WOLF_CRYPTO_CB) … … 175 178 176 179 WOLFSSL_API int wc_HmacInit(Hmac* hmac, void* heap, int devId); 180 #ifdef HAVE_PKCS11 177 181 WOLFSSL_API int wc_HmacInit_Id(Hmac* hmac, byte* id, int len, void* heap, 178 182 int devId); 183 WOLFSSL_API int wc_HmacInit_Label(Hmac* hmac, const char* label, void* heap, 184 int devId); 185 #endif 179 186 WOLFSSL_API void wc_HmacFree(Hmac*); 180 187 -
azure_iot_hub_f767zi/trunk/wolfssl-4.7.0/wolfssl/wolfcrypt/integer.h
r457 r464 34 34 */ 35 35 #include <wolfssl/wolfcrypt/types.h> /* will set MP_xxBIT if not default */ 36 #if def WOLFSSL_SP_MATH36 #if defined(WOLFSSL_SP_MATH) || defined(WOLFSSL_SP_MATH_ALL) 37 37 #include <wolfssl/wolfcrypt/sp_int.h> 38 38 #elif defined(USE_FAST_MATH) … … 43 43 44 44 #ifndef CHAR_BIT 45 #include <limits.h> 45 #if defined(WOLFSSL_LINUXKM) 46 #include <linux/limits.h> 47 #else 48 #include <limits.h> 49 #endif 46 50 #endif 47 51 … … 69 73 70 74 /* detect 64-bit mode if possible */ 71 #if defined(__x86_64__) && !(defined (_MSC_VER) && defined(__clang__))75 #if (defined(__x86_64__) || defined(__aarch64__)) && !(defined (_MSC_VER) && defined(__clang__)) 72 76 #if !(defined(MP_64BIT) && defined(MP_16BIT) && defined(MP_8BIT)) 73 77 #define MP_64BIT … … 158 162 #define MP_MEM -2 /* out of mem */ 159 163 #define MP_VAL -3 /* invalid input */ 160 #define MP_NOT_INF 164 #define MP_NOT_INF -4 /* point not at infinity */ 161 165 #define MP_RANGE MP_NOT_INF 162 166 … … 302 306 MP_API void mp_clamp (mp_int * a); 303 307 MP_API void mp_exch (mp_int * a, mp_int * b); 308 MP_API int mp_cond_swap_ct (mp_int * a, mp_int * b, int c, int m); 304 309 MP_API void mp_rshd (mp_int * a, int b); 305 310 MP_API void mp_rshb (mp_int * a, int b); … … 319 324 MP_API int mp_div(mp_int * a, mp_int * b, mp_int * c, mp_int * d); 320 325 MP_API int mp_div_2(mp_int * a, mp_int * b); 326 MP_API int mp_div_2_mod_ct (mp_int* a, mp_int* b, mp_int* c); 321 327 MP_API int mp_add (mp_int * a, mp_int * b, mp_int * c); 322 328 int s_mp_add (mp_int * a, mp_int * b, mp_int * c); … … 333 339 int fast_mp_montgomery_reduce (mp_int * x, mp_int * n, mp_digit rho); 334 340 MP_API int mp_montgomery_reduce (mp_int * x, mp_int * n, mp_digit rho); 341 #define mp_montgomery_reduce_ex(x, n, rho, ct) mp_montgomery_reduce (x, n, rho) 335 342 MP_API void mp_dr_setup(mp_int *a, mp_digit *d); 336 343 MP_API int mp_dr_reduce (mp_int * x, mp_int * n, mp_digit k); … … 356 363 MP_API int mp_submod (mp_int* a, mp_int* b, mp_int* c, mp_int* d); 357 364 MP_API int mp_addmod (mp_int* a, mp_int* b, mp_int* c, mp_int* d); 365 MP_API int mp_submod_ct (mp_int* a, mp_int* b, mp_int* c, mp_int* d); 366 MP_API int mp_addmod_ct (mp_int* a, mp_int* b, mp_int* c, mp_int* d); 358 367 MP_API int mp_mul_d (mp_int * a, mp_digit b, mp_int * c); 359 368 MP_API int mp_2expt (mp_int * a, int b); -
azure_iot_hub_f767zi/trunk/wolfssl-4.7.0/wolfssl/wolfcrypt/logging.h
r457 r464 101 101 WOLFSSL_API void wolfSSL_Debugging_OFF(void); 102 102 103 #ifdef HAVE_WC_INTROSPECTION 104 WOLFSSL_API const char *wolfSSL_configure_args(void); 105 WOLFSSL_API const char *wolfSSL_global_cflags(void); 106 #endif 103 107 104 108 #if defined(OPENSSL_EXTRA) || defined(DEBUG_WOLFSSL_VERBOSE) … … 188 192 #endif 189 193 194 #ifdef HAVE_STACK_SIZE_VERBOSE 195 extern WOLFSSL_API THREAD_LS_T unsigned char *StackSizeCheck_myStack; 196 extern WOLFSSL_API THREAD_LS_T size_t StackSizeCheck_stackSize; 197 extern WOLFSSL_API THREAD_LS_T size_t StackSizeCheck_stackSizeHWM; 198 extern WOLFSSL_API THREAD_LS_T size_t *StackSizeCheck_stackSizeHWM_ptr; 199 extern WOLFSSL_API THREAD_LS_T void *StackSizeCheck_stackOffsetPointer; 200 #endif 201 190 202 #ifdef __cplusplus 191 203 } -
azure_iot_hub_f767zi/trunk/wolfssl-4.7.0/wolfssl/wolfcrypt/memory.h
r457 r464 30 30 #define WOLFSSL_MEMORY_H 31 31 32 #if ndef STRING_USER32 #if !defined(STRING_USER) && !defined(WOLFSSL_LINUXKM) 33 33 #include <stdlib.h> 34 34 #endif … … 111 111 /* extra storage in structs for multiple attributes and order */ 112 112 #ifndef LARGEST_MEM_BUCKET 113 #define LARGEST_MEM_BUCKET 25600 113 #ifdef WOLFSSL_TLS13 114 #define LARGEST_MEM_BUCKET 30400 115 #else 116 #define LARGEST_MEM_BUCKET 25600 117 #endif 114 118 #endif 115 119 #define WOLFMEM_BUCKETS 64,128,256,512,1024,2432,3360,4480,\ -
azure_iot_hub_f767zi/trunk/wolfssl-4.7.0/wolfssl/wolfcrypt/misc.h
r457 r464 19 19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA 20 20 */ 21 /* 21 22 23 DESCRIPTION 24 This module implements the arithmetic-shift right, left, byte swapping, XOR, 25 masking and clearing memory logic. 22 26 23 27 */ 24 28 #ifndef WOLF_CRYPT_MISC_H 25 29 #define WOLF_CRYPT_MISC_H … … 40 44 word32 rotrFixed(word32, word32); 41 45 46 #ifdef WC_RC2 47 WOLFSSL_LOCAL 48 word16 rotlFixed16(word16, word16); 49 WOLFSSL_LOCAL 50 word16 rotrFixed16(word16, word16); 51 #endif 52 42 53 WOLFSSL_LOCAL 43 54 word32 ByteReverseWord32(word32); … … 45 56 void ByteReverseWords(word32*, const word32*, word32); 46 57 58 WOLFSSL_LOCAL 59 void XorWordsOut(wolfssl_word* r, const wolfssl_word* a, const wolfssl_word* b, 60 word32 n); 61 WOLFSSL_LOCAL 62 void xorbufout(void*, const void*, const void*, word32); 47 63 WOLFSSL_LOCAL 48 64 void XorWords(wolfssl_word*, const wolfssl_word*, word32); … … 100 116 WOLFSSL_LOCAL byte ctMaskEq(int a, int b); 101 117 WOLFSSL_LOCAL word16 ctMask16GT(int a, int b); 118 WOLFSSL_LOCAL word16 ctMask16GTE(int a, int b); 102 119 WOLFSSL_LOCAL word16 ctMask16LT(int a, int b); 120 WOLFSSL_LOCAL word16 ctMask16LTE(int a, int b); 103 121 WOLFSSL_LOCAL word16 ctMask16Eq(int a, int b); 104 122 WOLFSSL_LOCAL byte ctMaskNotEq(int a, int b); -
azure_iot_hub_f767zi/trunk/wolfssl-4.7.0/wolfssl/wolfcrypt/pkcs12.h
r457 r464 54 54 byte** pkey, word32* pkeySz, byte** cert, word32* certSz, 55 55 WC_DerCertList** ca); 56 WOLFSSL_LOCAL int wc_PKCS12_verify_ex(WC_PKCS12* pkcs12, 57 const byte* psw, word32 pswSz); 56 58 WOLFSSL_API WC_PKCS12* wc_PKCS12_create(char* pass, word32 passSz, 57 59 char* name, byte* key, word32 keySz, byte* cert, word32 certSz, -
azure_iot_hub_f767zi/trunk/wolfssl-4.7.0/wolfssl/wolfcrypt/random.h
r457 r464 150 150 #endif 151 151 152 #ifdef HAVE_HASHDRBG 153 struct DRBG_internal { 154 word32 reseedCtr; 155 word32 lastBlock; 156 byte V[DRBG_SEED_LEN]; 157 byte C[DRBG_SEED_LEN]; 158 #if defined(WOLFSSL_ASYNC_CRYPT) || defined(WOLF_CRYPTO_CB) 159 void* heap; 160 int devId; 161 #endif 162 byte matchCount; 163 #ifdef WOLFSSL_SMALL_STACK_CACHE 164 wc_Sha256 sha256; 165 #endif 166 }; 167 #endif 168 152 169 /* RNG context */ 153 170 struct WC_RNG { … … 158 175 struct DRBG* drbg; 159 176 #if defined(WOLFSSL_NO_MALLOC) && !defined(WOLFSSL_STATIC_MEMORY) 160 #define DRBG_STRUCT_SZ ((sizeof(word32)*3) + (DRBG_SEED_LEN*2)) 161 #ifdef WOLFSSL_SMALL_STACK_CACHE 162 #define DRBG_STRUCT_SZ_SHA256 (sizeof(wc_Sha256)) 163 #else 164 #define DRBG_STRUCT_SZ_SHA256 0 165 #endif 166 #if defined(WOLFSSL_ASYNC_CRYPT) || defined(WOLF_CRYPTO_CB) 167 #define DRBG_STRUCT_SZ_ASYNC (sizeof(void*) + sizeof(int)) 168 #else 169 #define DRBG_STRUCT_SZ_ASYNC 0 170 #endif 171 byte drbg_data[DRBG_STRUCT_SZ + DRBG_STRUCT_SZ_SHA256 + DRBG_STRUCT_SZ_ASYNC]; 177 struct DRBG_internal drbg_data; 172 178 #endif 173 179 byte status; … … 220 226 #define wc_InitRngNonce(rng, n, s) NOT_COMPILED_IN 221 227 #define wc_InitRngNonce_ex(rng, n, s, h, d) NOT_COMPILED_IN 228 #if defined(__ghs__) || defined(WC_NO_RNG_SIMPLE) 229 /* some older compilers do not like macro function in expression */ 222 230 #define wc_RNG_GenerateBlock(rng, b, s) NOT_COMPILED_IN 231 #else 232 #define wc_RNG_GenerateBlock(rng, b, s) ({(void)rng; (void)b; (void)s; NOT_COMPILED_IN;}) 233 #endif 223 234 #define wc_RNG_GenerateByte(rng, b) NOT_COMPILED_IN 224 235 #define wc_FreeRng(rng) (void)NOT_COMPILED_IN -
azure_iot_hub_f767zi/trunk/wolfssl-4.7.0/wolfssl/wolfcrypt/rsa.h
r457 r464 24 24 */ 25 25 26 26 /* 27 28 DESCRIPTION 29 This library provides the interface to the RSA. 30 RSA keys can be used to encrypt, decrypt, sign and verify data. 31 32 */ 27 33 #ifndef WOLF_CRYPT_RSA_H 28 34 #define WOLF_CRYPT_RSA_H … … 136 142 #endif 137 143 138 #ifdef HAVE_PKCS11144 #ifdef WOLF_CRYPTO_CB 139 145 RSA_MAX_ID_LEN = 32, 146 RSA_MAX_LABEL_LEN = 32, 140 147 #endif 141 148 }; … … 179 186 XSecure_Rsa xRsa; 180 187 #endif 181 #ifdef HAVE_PKCS11188 #ifdef WOLF_CRYPTO_CB 182 189 byte id[RSA_MAX_ID_LEN]; 183 190 int idLen; 191 char label[RSA_MAX_LABEL_LEN]; 192 int labelLen; 184 193 #endif 185 194 #if defined(WOLFSSL_ASYNC_CRYPT) || !defined(WOLFSSL_RSA_VERIFY_INLINE) … … 208 217 WOLFSSL_API int wc_InitRsaKey_ex(RsaKey* key, void* heap, int devId); 209 218 WOLFSSL_API int wc_FreeRsaKey(RsaKey* key); 210 #ifdef HAVE_PKCS11219 #ifdef WOLF_CRYPTO_CB 211 220 WOLFSSL_API int wc_InitRsaKey_Id(RsaKey* key, unsigned char* id, int len, 212 221 void* heap, int devId); 222 WOLFSSL_API int wc_InitRsaKey_Label(RsaKey* key, const char* label, void* heap, 223 int devId); 213 224 #endif 214 225 WOLFSSL_API int wc_CheckRsaKey(RsaKey* key); … … 241 252 WOLFSSL_API int wc_RsaSSL_Verify_ex(const byte* in, word32 inLen, byte* out, 242 253 word32 outLen, RsaKey* key, int pad_type); 254 WOLFSSL_API int wc_RsaSSL_Verify_ex2(const byte* in, word32 inLen, byte* out, 255 word32 outLen, RsaKey* key, int pad_type, 256 enum wc_HashType hash); 243 257 WOLFSSL_API int wc_RsaPSS_VerifyInline(byte* in, word32 inLen, byte** out, 244 258 enum wc_HashType hash, int mgf, … … 281 295 WOLFSSL_API int wc_RsaPublicKeyDecodeRaw(const byte* n, word32 nSz, 282 296 const byte* e, word32 eSz, RsaKey* key); 283 WOLFSSL_API int wc_RsaKeyToDer(RsaKey*, byte* output, word32 inLen); 284 297 #ifdef WOLFSSL_KEY_GEN 298 WOLFSSL_API int wc_RsaKeyToDer(RsaKey*, byte* output, word32 inLen); 299 #endif 285 300 286 301 #ifdef WC_RSA_BLINDING … … 361 376 int bits, void* heap); 362 377 378 WOLFSSL_LOCAL int wc_hash2mgf(enum wc_HashType hType); 379 363 380 #endif /* HAVE_USER_RSA */ 364 381 -
azure_iot_hub_f767zi/trunk/wolfssl-4.7.0/wolfssl/wolfcrypt/settings.h
r457 r464 63 63 /* #define MICROCHIP_TCPIP */ 64 64 65 /* Uncomment next line if using above Microchip TCP/IP defines with BSD API */ 66 /* #define MICROCHIP_TCPIP_BSD_API */ 67 65 68 /* Uncomment next line if using PIC32MZ Crypto Engine */ 66 69 /* #define WOLFSSL_MICROCHIP_PIC32MZ */ … … 210 213 /* #define WOLFSSL_RENESAS_RX65N */ 211 214 215 /* Uncomment next line if using Solaris OS*/ 216 /* #define WOLFSSL_SOLARIS */ 217 218 /* Uncomment next line if building for Linux Kernel Module */ 219 /* #define WOLFSSL_LINUXKM */ 220 221 212 222 #include <wolfssl/wolfcrypt/visibility.h> 213 223 214 224 #ifdef WOLFSSL_USER_SETTINGS 215 225 #include "user_settings.h" 216 #endif 217 226 #elif defined(USE_HAL_DRIVER) && !defined(HAVE_CONFIG_H) 227 /* STM Configuration File (generated by CubeMX) */ 228 #include "wolfSSL.I-CUBE-wolfSSL_conf.h" 229 #endif 218 230 219 231 /* make sure old RNG name is used with CTaoCrypt FIPS */ … … 293 305 #endif 294 306 295 #if defined(WOLFSSL_RENESAS_RA6M3G) 307 #if defined(WOLFSSL_RENESAS_RA6M3G) || defined(WOLFSSL_RENESAS_RA6M3) 296 308 /* settings in user_settings.h */ 297 309 #endif … … 338 350 #define SIZEOF_LONG_LONG 8 339 351 #define SINGLE_THREADED 340 #define WOLFSSL_USER_IO 352 #ifndef MICROCHIP_TCPIP_BSD_API 353 #define WOLFSSL_USER_IO 354 #endif 341 355 #define NO_WRITEV 342 356 #define NO_DEV_RANDOM … … 344 358 #define USE_FAST_MATH 345 359 #define TFM_TIMING_RESISTANT 360 #define NO_BIG_INT 361 #endif 362 363 #ifdef WOLFSSL_MICROCHIP_PIC32MZ 346 364 #define WOLFSSL_HAVE_MIN 347 365 #define WOLFSSL_HAVE_MAX 348 #define NO_BIG_INT 349 #endif 350 351 #ifdef WOLFSSL_MICROCHIP_PIC32MZ 366 352 367 #ifndef NO_PIC32MZ_CRYPT 353 368 #define WOLFSSL_PIC32MZ_CRYPT … … 373 388 #include "system/system_services.h" 374 389 #include "tcpip/sntp.h" 390 #endif 391 #endif 392 393 #ifdef WOLFSSL_ATECC508A 394 /* backwards compatibility */ 395 #ifndef WOLFSSL_ATECC_NO_ECDH_ENC 396 #define WOLFSSL_ATECC_ECDH_ENC 397 #endif 398 #ifdef WOLFSSL_ATECC508A_DEBUG 399 #define WOLFSSL_ATECC_DEBUG 375 400 #endif 376 401 #endif … … 602 627 #define SIZEOF_LONG 4 603 628 #define SIZEOF_LONG_LONG 8 604 #define NO_ASN_TIME605 629 #define NO_DEV_RANDOM 606 630 #define NO_FILESYSTEM … … 610 634 #define USE_FAST_MATH 611 635 #define TFM_TIMING_RESISTANT 612 #define USE_WOLFSSL_MEMORY613 636 #define WOLFSSL_NRF51 614 637 #define WOLFSSL_USER_IO … … 656 679 /* static char* gets(char *buff); */ 657 680 static char* fgets(char *buff, int sz, XFILE fp) { 658 char * p= buff;659 * p= '\0';681 char * s = buff; 682 *s = '\0'; 660 683 while (1) { 661 * p= tm_getchar(-1);662 tm_putchar(* p);663 if (* p== '\r') {684 *s = tm_getchar(-1); 685 tm_putchar(*s); 686 if (*s == '\r') { 664 687 tm_putchar('\n'); 665 * p= '\0';688 *s = '\0'; 666 689 break; 667 690 } 668 p++;691 s++; 669 692 } 670 693 return buff; … … 699 722 #define XMALLOC(s, h, type) pvPortMalloc((s)) 700 723 #define XFREE(p, h, type) vPortFree((p)) 701 #endif 702 /* FreeRTOS pvPortRealloc() implementation can be found here: 703 https://github.com/wolfSSL/wolfssl-freertos/pull/3/files */ 704 #if !defined(USE_FAST_MATH) || defined(HAVE_ED25519) || defined(HAVE_ED448) 705 #if defined(WOLFSSL_ESPIDF) 706 /*In IDF, realloc(p, n) is equivalent to 707 heap_caps_realloc(p, s, MALLOC_CAP_8BIT) */ 708 #define XREALLOC(p, n, h, t) realloc((p), (n)) 709 #else 710 #define XREALLOC(p, n, h, t) pvPortRealloc((p), (n)) 711 #endif 712 #endif 724 /* FreeRTOS pvPortRealloc() implementation can be found here: 725 https://github.com/wolfSSL/wolfssl-freertos/pull/3/files */ 726 #if !defined(USE_FAST_MATH) || defined(HAVE_ED25519) || \ 727 defined(HAVE_ED448) 728 #if defined(WOLFSSL_ESPIDF) 729 /*In IDF, realloc(p, n) is equivalent to 730 heap_caps_realloc(p, s, MALLOC_CAP_8BIT) */ 731 #define XREALLOC(p, n, h, t) realloc((p), (n)) 732 #else 733 #define XREALLOC(p, n, h, t) pvPortRealloc((p), (n)) 734 #endif 735 #endif 736 #endif 737 713 738 #ifndef NO_WRITEV 714 739 #define NO_WRITEV … … 813 838 #define SIZEOF_LONG_LONG 8 814 839 #else 815 #error settings.h - please implement SIZEOF_LONG and SIZEOF_LONG_LONG 840 #if !defined(SIZEOF_LONG) && !defined(SIZEOF_LONG_LONG) 841 #error settings.h - please implement SIZEOF_LONG and SIZEOF_LONG_LONG 842 #endif 816 843 #endif 817 844 … … 823 850 #define XSTRNCASECMP(s1,s2,n) _strnicmp((s1),(s2),(n)) 824 851 #else 825 #sslpro: settings.h - please implement XSTRNCASECMP - needed for HAVE_ECC 852 #ifndef XSTRNCASECMP 853 #error settings.h - please implement XSTRNCASECMP - needed for HAVE_ECC 854 #endif 826 855 #endif 827 856 … … 884 913 #define XMALLOC(s, h, type) pvPortMalloc((s)) 885 914 #define XFREE(p, h, type) vPortFree((p)) 886 #endif 887 /* FreeRTOS pvPortRealloc() implementation can be found here: 888 https://github.com/wolfSSL/wolfssl-freertos/pull/3/files */ 889 #if !defined(USE_FAST_MATH) || defined(HAVE_ED25519) || defined(HAVE_ED448) 890 #define XREALLOC(p, n, h, t) pvPortRealloc((p), (n)) 915 916 /* FreeRTOS pvPortRealloc() implementation can be found here: 917 https://github.com/wolfSSL/wolfssl-freertos/pull/3/files */ 918 #if !defined(USE_FAST_MATH) || defined(HAVE_ED25519) || \ 919 defined(HAVE_ED448) 920 #define XREALLOC(p, n, h, t) pvPortRealloc((p), (n)) 921 #endif 891 922 #endif 892 923 #endif … … 899 930 #undef TFM_TIMING_RESISTANT 900 931 #define TFM_TIMING_RESISTANT 932 #endif 933 934 /* To support storing some of the large constant tables in flash memory rather than SRAM. 935 Useful for processors that have limited SRAM, such as the AVR family of microtrollers. */ 936 #ifdef WOLFSSL_USE_FLASHMEM 937 /* This is supported on the avr-gcc compiler, for more information see: 938 https://gcc.gnu.org/onlinedocs/gcc/Named-Address-Spaces.html */ 939 #define FLASH_QUALIFIER __flash 940 941 /* Copy data out of flash memory and into SRAM */ 942 #define XMEMCPY_P(pdest, psrc, size) memcpy_P((pdest), (psrc), (size)) 943 #else 944 #define FLASH_QUALIFIER 901 945 #endif 902 946 … … 934 978 /* Note: MQX has no realloc, using fastmath above */ 935 979 #endif 980 #ifdef USE_FAST_MATH 981 /* Undef first to avoid re-definition if user_settings.h defines */ 982 #undef TFM_TIMING_RESISTANT 983 #define TFM_TIMING_RESISTANT 984 #undef ECC_TIMING_RESISTANT 985 #define ECC_TIMING_RESISTANT 986 #undef WC_RSA_BLINDING 987 #define WC_RSA_BLINDING 988 #endif 936 989 #endif 937 990 … … 1022 1075 1023 1076 #undef HAVE_ECC 1077 #ifndef WOLFCRYPT_FIPS_RAND 1024 1078 #define HAVE_ECC 1079 #endif 1025 1080 #ifndef NO_AES 1026 1081 #undef HAVE_AESCCM … … 1043 1098 /* random seed */ 1044 1099 #define NO_OLD_RNGNAME 1045 #if defined(FSL_FEATURE_SOC_TRNG_COUNT) && (FSL_FEATURE_SOC_TRNG_COUNT > 0) 1100 #if defined(FREESCALE_NO_RNG) 1101 /* nothing to define */ 1102 #elif defined(FSL_FEATURE_SOC_TRNG_COUNT) && (FSL_FEATURE_SOC_TRNG_COUNT > 0) 1046 1103 #define FREESCALE_KSDK_2_0_TRNG 1047 1104 #elif defined(FSL_FEATURE_SOC_RNG_COUNT) && (FSL_FEATURE_SOC_RNG_COUNT > 0) … … 1115 1172 1116 1173 #if defined(FSL_FEATURE_LTC_HAS_PKHA) && FSL_FEATURE_LTC_HAS_PKHA 1174 #ifndef WOLFCRYPT_FIPS_RAND 1117 1175 #define FREESCALE_LTC_ECC 1176 #endif 1118 1177 #define FREESCALE_LTC_TFM 1119 1178 … … 1165 1224 #undef FP_MAX_BITS 1166 1225 #define FP_MAX_BITS (8192) 1226 #undef SP_INT_BITS 1227 #define SP_INT_BITS (4096) 1167 1228 1168 1229 #undef NO_DH … … 1179 1240 #if defined(WOLFSSL_STM32F2) || defined(WOLFSSL_STM32F4) || \ 1180 1241 defined(WOLFSSL_STM32F7) || defined(WOLFSSL_STM32F1) || \ 1181 defined(WOLFSSL_STM32L4) 1242 defined(WOLFSSL_STM32L4) || defined(WOLFSSL_STM32L5) || \ 1243 defined(WOLFSSL_STM32WB) || defined(WOLFSSL_STM32H7) 1182 1244 1183 1245 #define SIZEOF_LONG_LONG 8 … … 1200 1262 #define STM32_CRYPTO 1201 1263 1202 #ifdef WOLFSSL_STM32L4 1264 #if defined(WOLFSSL_STM32L4) || defined(WOLFSSL_STM32L5) || \ 1265 defined(WOLFSSL_STM32WB) 1203 1266 #define NO_AES_192 /* hardware does not support 192-bit */ 1204 1267 #endif … … 1213 1276 #define NO_OLD_RNGNAME 1214 1277 #ifdef WOLFSSL_STM32_CUBEMX 1215 #if defined(WOLFSSL_STM32F2) 1278 #if defined(WOLFSSL_STM32F1) 1279 #include "stm32f1xx_hal.h" 1280 #elif defined(WOLFSSL_STM32F2) 1216 1281 #include "stm32f2xx_hal.h" 1282 #elif defined(WOLFSSL_STM32L5) 1283 #include "stm32l5xx_hal.h" 1217 1284 #elif defined(WOLFSSL_STM32L4) 1218 1285 #include "stm32l4xx_hal.h" … … 1223 1290 #elif defined(WOLFSSL_STM32F1) 1224 1291 #include "stm32f1xx_hal.h" 1292 #elif defined(WOLFSSL_STM32H7) 1293 #include "stm32h7xx_hal.h" 1294 #elif defined(WOLFSSL_STM32WB) 1295 #include "stm32wbxx_hal.h" 1225 1296 #endif 1226 1297 #if defined(WOLFSSL_CUBEMX_USE_LL) && defined(WOLFSSL_STM32L4) … … 1248 1319 #include "stm32f4xx_hash.h" 1249 1320 #endif 1321 #elif defined(WOLFSSL_STM32L5) 1322 #include "stm32l5xx.h" 1323 #ifdef STM32_CRYPTO 1324 #include "stm32l5xx_cryp.h" 1325 #endif 1326 #ifdef STM32_HASH 1327 #include "stm32l5xx_hash.h" 1328 #endif 1250 1329 #elif defined(WOLFSSL_STM32L4) 1251 1330 #include "stm32l4xx.h" … … 1258 1337 #elif defined(WOLFSSL_STM32F7) 1259 1338 #include "stm32f7xx.h" 1339 #elif defined(WOLFSSL_STM32H7) 1340 #include "stm32h7xx.h" 1260 1341 #elif defined(WOLFSSL_STM32F1) 1261 1342 #include "stm32f1xx.h" 1262 1343 #endif 1263 1344 #endif /* WOLFSSL_STM32_CUBEMX */ 1264 #endif /* WOLFSSL_STM32F2 || WOLFSSL_STM32F4 || WOLFSSL_STM32L4 || WOLFSSL_STM32F7 */ 1345 #endif /* WOLFSSL_STM32F2 || WOLFSSL_STM32F4 || WOLFSSL_STM32L4 || 1346 WOLFSSL_STM32L5 || WOLFSSL_STM32F7 || WOLFSSL_STMWB || WOLFSSL_STM32H7 */ 1265 1347 #ifdef WOLFSSL_DEOS 1266 1348 #include <deos.h> … … 1316 1398 #include <stdlib.h> 1317 1399 #include <os.h> 1318 #include <net_cfg.h> 1319 #include <net_sock.h> 1320 #include <net_err.h> 1400 #if defined(RTOS_MODULE_NET_AVAIL) || (APP_CFG_TCPIP_EN == DEF_ENABLED) 1401 #include <net_cfg.h> 1402 #include <net_sock.h> 1403 #if (OS_VERSION < 50000) 1404 #include <net_err.h> 1405 #endif 1406 #endif 1321 1407 #include <lib_mem.h> 1322 1408 #include <lib_math.h> 1409 #include <lib_str.h> 1410 #include <stdio.h> 1411 #include <string.h> 1323 1412 1324 1413 #define USE_FAST_MATH … … 1344 1433 #define NO_WRITEV 1345 1434 1346 #if ndef CUSTOM_RAND_GENERATE1435 #if ! defined(WOLFSSL_SILABS_SE_ACCEL) && !defined(CUSTOM_RAND_GENERATE) 1347 1436 #define CUSTOM_RAND_TYPE RAND_NBR 1348 1437 #define CUSTOM_RAND_GENERATE Math_Rand … … 1374 1463 #define XMEMCPY(pdest, psrc, size) ((void)Mem_Copy((void *)(pdest), \ 1375 1464 (void *)(psrc), (CPU_SIZE_T)(size))) 1376 #define XMEMCMP(pmem_1, pmem_2, size) \ 1377 (((CPU_BOOLEAN)Mem_Cmp((void *)(pmem_1), \ 1378 (void *)(pmem_2), \ 1465 1466 #if (OS_VERSION < 50000) 1467 #define XMEMCMP(pmem_1, pmem_2, size) \ 1468 (((CPU_BOOLEAN)Mem_Cmp((void *)(pmem_1), \ 1469 (void *)(pmem_2), \ 1379 1470 (CPU_SIZE_T)(size))) ? DEF_NO : DEF_YES) 1471 #else 1472 /* Work around for Micrium OS version 5.8 change in behavior 1473 * that returns DEF_NO for 0 size compare 1474 */ 1475 #define XMEMCMP(pmem_1, pmem_2, size) \ 1476 (( (size < 1 ) || \ 1477 ((CPU_BOOLEAN)Mem_Cmp((void *)(pmem_1), \ 1478 (void *)(pmem_2), \ 1479 (CPU_SIZE_T)(size)) == DEF_YES)) \ 1480 ? 0 : 1) 1481 #define XSNPRINTF snprintf 1482 #endif 1483 1380 1484 #define XMEMMOVE XMEMCPY 1381 1485 … … 1391 1495 #endif 1392 1496 #endif /* MICRIUM */ 1497 1498 #if defined(sun) || defined(__sun) 1499 # if defined(__SVR4) || defined(__svr4__) 1500 /* Solaris */ 1501 #ifndef WOLFSSL_SOLARIS 1502 #define WOLFSSL_SOLARIS 1503 #endif 1504 # else 1505 /* SunOS */ 1506 # endif 1507 #endif 1508 1509 #ifdef WOLFSSL_SOLARIS 1510 /* Avoid naming clash with fp_zero from math.h > ieefp.h */ 1511 #define WOLFSSL_DH_CONST 1512 #endif 1393 1513 1394 1514 #ifdef WOLFSSL_MCF5441X … … 1534 1654 #define HAVE_AES_ECB 1535 1655 #endif 1656 #endif 1657 1658 /* If DCP is used without SINGLE_THREADED, enforce WOLFSSL_CRYPT_HW_MUTEX */ 1659 #if defined(WOLFSSL_IMXRT_DCP) && !defined(SINGLE_THREADED) 1660 #undef WOLFSSL_CRYPT_HW_MUTEX 1661 #define WOLFSSL_CRYPT_HW_MUTEX 1 1536 1662 #endif 1537 1663 … … 1653 1779 #endif 1654 1780 1781 /* The minimum allowed ECC key size */ 1782 /* Note: 224-bits is equivelant to 2048-bit RSA */ 1783 #ifndef ECC_MIN_KEY_SZ 1784 #ifdef WOLFSSL_MIN_ECC_BITS 1785 #define ECC_MIN_KEY_SZ WOLFSSL_MIN_ECC_BITS 1786 #else 1787 #if defined(HAVE_FIPS) && defined(HAVE_FIPS_VERSION) && HAVE_FIPS_VERSION >= 2 1788 /* FIPSv2 and ready (for now) includes 192-bit support */ 1789 #define ECC_MIN_KEY_SZ 192 1790 #else 1791 #define ECC_MIN_KEY_SZ 224 1792 #endif 1793 #endif 1794 #endif 1795 1655 1796 /* ECC Configs */ 1656 1797 #ifdef HAVE_ECC … … 1836 1977 #endif 1837 1978 #endif 1979 #if defined(HAVE_FFDHE) && defined(SP_INT_BITS) 1980 #if MIN_FFDHE_FP_MAX_BITS > SP_INT_BITS * 2 1981 #error "FFDHE parameters are too large for SP_INT_BIT as set" 1982 #endif 1983 #endif 1838 1984 1839 1985 /* if desktop type system and fastmath increase default max bits */ 1840 #if def WOLFSSL_X86_64_BUILD1986 #if defined(WOLFSSL_X86_64_BUILD) || defined(WOLFSSL_AARCH64_BUILD) 1841 1987 #if defined(USE_FAST_MATH) && !defined(FP_MAX_BITS) 1842 1988 #if MIN_FFDHE_FP_MAX_BITS <= 8192 … … 1844 1990 #else 1845 1991 #define FP_MAX_BITS MIN_FFDHE_FP_MAX_BITS 1992 #endif 1993 #endif 1994 #if defined(WOLFSSL_SP_MATH_ALL) && !defined(SP_INT_BITS) 1995 #if MIN_FFDHE_FP_MAX_BITS <= 8192 1996 #define SP_INT_BITS 4096 1997 #else 1998 #define PS_INT_BITS MIN_FFDHE_FP_MAX_BITS / 2 1846 1999 #endif 1847 2000 #endif … … 2000 2153 2001 2154 2155 #ifdef WOLFSSL_LINUXKM 2156 #ifndef NO_DEV_RANDOM 2157 #define NO_DEV_RANDOM 2158 #endif 2159 #ifndef NO_WRITEV 2160 #define NO_WRITEV 2161 #endif 2162 #ifndef NO_FILESYSTEM 2163 #define NO_FILESYSTEM 2164 #endif 2165 #ifndef NO_STDIO_FILESYSTEM 2166 #define NO_STDIO_FILESYSTEM 2167 #endif 2168 #ifndef WOLFSSL_NO_SOCK 2169 #define WOLFSSL_NO_SOCK 2170 #endif 2171 #ifndef WOLFSSL_DH_CONST 2172 #define WOLFSSL_DH_CONST 2173 #endif 2174 #ifndef WOLFSSL_USER_IO 2175 #define WOLFSSL_USER_IO 2176 #endif 2177 #ifndef USE_WOLF_STRTOK 2178 #define USE_WOLF_STRTOK 2179 #endif 2180 #ifndef WOLFSSL_SP_DIV_WORD_HALF 2181 #define WOLFSSL_SP_DIV_WORD_HALF 2182 #endif 2183 #ifndef WOLFSSL_OLD_PRIME_CHECK 2184 #define WOLFSSL_OLD_PRIME_CHECK 2185 #endif 2186 #ifndef WOLFSSL_TEST_SUBROUTINE 2187 #define WOLFSSL_TEST_SUBROUTINE static 2188 #endif 2189 #undef HAVE_STRINGS_H 2190 #undef HAVE_ERRNO_H 2191 #undef HAVE_THREAD_LS 2192 #undef WOLFSSL_HAVE_MIN 2193 #undef WOLFSSL_HAVE_MAX 2194 #define SIZEOF_LONG 8 2195 #define SIZEOF_LONG_LONG 8 2196 #define CHAR_BIT 8 2197 #ifndef WOLFSSL_SP_DIV_64 2198 #define WOLFSSL_SP_DIV_64 2199 #endif 2200 #ifndef WOLFSSL_SP_DIV_WORD_HALF 2201 #define WOLFSSL_SP_DIV_WORD_HALF 2202 #endif 2203 #endif 2204 2205 2002 2206 /* Place any other flags or defines here */ 2003 2207 … … 2007 2211 #endif /* WOLFSSL_MYSQL_COMPATIBLE */ 2008 2212 2009 #if defined(OPENSSL_ALL) || defined(WOLFSSL_NGINX) || defined(WOLFSSL_HAPROXY) 2213 #if defined(OPENSSL_ALL) || defined(WOLFSSL_NGINX) || defined(WOLFSSL_HAPROXY) \ 2214 || defined(HAVE_LIGHTY) 2010 2215 #define SSL_OP_NO_COMPRESSION SSL_OP_NO_COMPRESSION 2011 2216 #define OPENSSL_NO_ENGINE … … 2028 2233 #endif 2029 2234 2030 #if defined(WOLFSSL_NGINX) || defined(WOLFSSL_QT) || defined(OPENSSL_ALL)2235 #ifdef HAVE_SNI 2031 2236 #define SSL_CTRL_SET_TLSEXT_HOSTNAME 55 2032 2237 #endif … … 2101 2306 2102 2307 /* Parts of the openssl compatibility layer require peer certs */ 2103 #if defined(OPENSSL_ALL) || defined(WOLFSSL_NGINX) || defined(WOLFSSL_HAPROXY) 2308 #if defined(OPENSSL_ALL) || defined(WOLFSSL_NGINX) || defined(WOLFSSL_HAPROXY) \ 2309 || defined(HAVE_LIGHTY) 2104 2310 #undef KEEP_PEER_CERT 2105 2311 #define KEEP_PEER_CERT 2106 2312 #endif 2107 2313 2108 /* RAW hash function APIs are not implemented with ARMv8 hardware acceleration*/2109 #if def WOLFSSL_ARMASM2314 /* RAW hash function APIs are not implemented */ 2315 #if defined(WOLFSSL_ARMASM) || defined(WOLFSSL_AFALG_HASH) 2110 2316 #undef WOLFSSL_NO_HASH_RAW 2111 2317 #define WOLFSSL_NO_HASH_RAW 2318 #endif 2319 2320 /* XChacha not implemented with ARM assembly ChaCha */ 2321 #if defined(WOLFSSL_ARMASM) 2322 #undef HAVE_XCHACHA 2112 2323 #endif 2113 2324 … … 2150 2361 #if defined(WOLFCRYPT_ONLY) && defined(NO_AES) && !defined(WOLFSSL_SHA384) && \ 2151 2362 !defined(WOLFSSL_SHA512) && defined(WC_NO_RNG) && \ 2152 defined(WOLFSSL_SP_MATH) && defined(WOLFSSL_RSA_PUBLIC_ONLY) 2363 (defined(WOLFSSL_SP_MATH) || defined(WOLFSSL_SP_MATH_ALL)) && \ 2364 defined(WOLFSSL_RSA_PUBLIC_ONLY) 2153 2365 #undef WOLFSSL_NO_FORCE_ZERO 2154 2366 #define WOLFSSL_NO_FORCE_ZERO … … 2174 2386 #ifdef NO_WOLFSSL_SMALL_STACK 2175 2387 #undef WOLFSSL_SMALL_STACK 2388 #endif 2389 2390 #ifdef WOLFSSL_SMALL_STACK_STATIC 2391 #undef WOLFSSL_SMALL_STACK_STATIC 2392 #define WOLFSSL_SMALL_STACK_STATIC static 2393 #else 2394 #define WOLFSSL_SMALL_STACK_STATIC 2176 2395 #endif 2177 2396 … … 2188 2407 #endif 2189 2408 2409 /* FIPS v1 does not support TLS v1.3 (requires RSA PSS and HKDF) */ 2410 #if defined(HAVE_FIPS) && !defined(HAVE_FIPS_VERSION) 2411 #undef WC_RSA_PSS 2412 #undef WOLFSSL_TLS13 2413 #endif 2414 2415 /* For FIPSv2 make sure the ECDSA encoding allows extra bytes 2416 * but make sure users consider enabling it */ 2417 #if !defined(NO_STRICT_ECDSA_LEN) && defined(HAVE_FIPS) && \ 2418 defined(HAVE_FIPS_VERSION) && (HAVE_FIPS_VERSION >= 2) 2419 /* ECDSA length checks off by default for CAVP testing 2420 * consider enabling strict checks in production */ 2421 #define NO_STRICT_ECDSA_LEN 2422 #endif 2423 2190 2424 2191 2425 #ifdef __cplusplus -
azure_iot_hub_f767zi/trunk/wolfssl-4.7.0/wolfssl/wolfcrypt/sha.h
r457 r464 73 73 #include <wolfssl/wolfcrypt/port/Espressif/esp32-crypt.h> 74 74 #endif 75 #ifdef WOLFSSL_IMXRT_DCP 76 #include <wolfssl/wolfcrypt/port/nxp/dcp_port.h> 77 #endif 78 #if defined(WOLFSSL_SILABS_SE_ACCEL) 79 #include <wolfssl/wolfcrypt/port/silabs/silabs_hash.h> 80 #endif 75 81 76 82 #if !defined(NO_OLD_SHA_NAMES) … … 102 108 !defined(NO_WOLFSSL_RENESAS_TSIP_CRYPT_HASH) 103 109 #include "wolfssl/wolfcrypt/port/Renesas/renesas-tsip-crypt.h" 110 #elif defined(WOLFSSL_PSOC6_CRYPTO) 111 #include "wolfssl/wolfcrypt/port/cypress/psoc6_crypto.h" 104 112 #else 105 113 … … 110 118 #elif defined(STM32_HASH) 111 119 STM32_HASH_Context stmCtx; 120 #elif defined(WOLFSSL_SILABS_SE_ACCEL) 121 wc_silabs_sha_t silabsCtx; 112 122 #else 113 123 word32 buffLen; /* in bytes */ -
azure_iot_hub_f767zi/trunk/wolfssl-4.7.0/wolfssl/wolfcrypt/sha256.h
r457 r464 88 88 #if defined(WOLFSSL_CRYPTOCELL) 89 89 #include <wolfssl/wolfcrypt/port/arm/cryptoCell.h> 90 #endif 91 #if defined(WOLFSSL_SILABS_SE_ACCEL) 92 #include <wolfssl/wolfcrypt/port/silabs/silabs_hash.h> 90 93 #endif 91 94 … … 127 130 !defined(NO_WOLFSSL_RENESAS_TSIP_CRYPT_HASH) 128 131 #include "wolfssl/wolfcrypt/port/Renesas/renesas-tsip-crypt.h" 132 #elif defined(WOLFSSL_PSOC6_CRYPTO) 133 #include "wolfssl/wolfcrypt/port/cypress/psoc6_crypto.h" 134 #elif defined(WOLFSSL_IMXRT_DCP) 135 #include <wolfssl/wolfcrypt/port/nxp/dcp_port.h> 129 136 #else 130 137 … … 135 142 #elif defined(STM32_HASH_SHA2) 136 143 STM32_HASH_Context stmCtx; 144 #elif defined(WOLFSSL_SILABS_SE_ACCEL) 145 wc_silabs_sha_t silabsCtx; 137 146 #else 138 147 /* alignment on digest and buffer speeds up ARMv8 crypto operations */ … … 143 152 word32 hiLen; /* length in bytes */ 144 153 void* heap; 154 #endif 145 155 #ifdef WOLFSSL_PIC32MZ_HASH 146 156 hashUpdCache cache; /* cache for updates */ … … 151 161 #ifdef WOLFSSL_SMALL_STACK_CACHE 152 162 word32* W; 153 #endif 163 #endif /* !FREESCALE_LTC_SHA && !STM32_HASH_SHA2 */ 154 164 #ifdef WOLFSSL_DEVCRYPTO_HASH 155 165 WC_CRYPTODEV ctx; … … 168 178 int devId; 169 179 void* devCtx; /* generic crypto callback context */ 170 #endif171 180 #endif 172 181 #if defined(WOLFSSL_HASH_FLAGS) || defined(WOLF_CRYPTO_CB) -
azure_iot_hub_f767zi/trunk/wolfssl-4.7.0/wolfssl/wolfcrypt/sha512.h
r457 r464 31 31 32 32 #if defined(WOLFSSL_SHA512) || defined(WOLFSSL_SHA384) 33 33 34 34 35 #if defined(HAVE_FIPS) && \ … … 76 77 #include <wolfssl/wolfcrypt/port/Espressif/esp32-crypt.h> 77 78 #endif 79 #if defined(WOLFSSL_SILABS_SE_ACCEL) 80 #include <wolfssl/wolfcrypt/port/silabs/silabs_hash.h> 81 #endif 82 78 83 #if defined(_MSC_VER) 79 84 #define SHA512_NOINLINE __declspec(noinline) … … 112 117 #ifdef WOLFSSL_IMX6_CAAM 113 118 #include "wolfssl/wolfcrypt/port/caam/wolfcaam_sha.h" 119 #elif defined (WOLFSSL_PSOC6_CRYPTO) 120 #include "wolfssl/wolfcrypt/port/cypress/psoc6_crypto.h" 114 121 #else 115 122 /* wc_Sha512 digest */ … … 134 141 WC_ESP32SHA ctx; 135 142 #endif 143 #if defined(WOLFSSL_SILABS_SE_ACCEL) 144 wc_silabs_sha_t silabsCtx; 145 #endif 146 136 147 #if defined(WOLFSSL_HASH_FLAGS) || defined(WOLF_CRYPTO_CB) 137 148 word32 flags; /* enum wc_HashFlags in hash.h */ … … 153 164 154 165 #ifdef WOLFSSL_SHA512 166 155 167 156 168 WOLFSSL_API int wc_InitSha512(wc_Sha512*); -
azure_iot_hub_f767zi/trunk/wolfssl-4.7.0/wolfssl/wolfcrypt/types.h
r457 r464 23 23 \file wolfssl/wolfcrypt/types.h 24 24 */ 25 25 /* 26 DESCRIPTION 27 This library defines the primitive data types and abstraction macros to 28 decouple library dependencies with standard string, memory and so on. 29 30 */ 26 31 #ifndef WOLF_CRYPT_TYPES_H 27 32 #define WOLF_CRYPT_TYPES_H … … 60 65 #ifndef byte 61 66 typedef unsigned char byte; 67 typedef signed char sword8; 68 typedef unsigned char word8; 62 69 #endif 63 70 #ifdef WC_16BIT_CPU 71 typedef int sword16; 64 72 typedef unsigned int word16; 73 typedef long sword32; 65 74 typedef unsigned long word32; 66 75 #else 76 typedef short sword16; 67 77 typedef unsigned short word16; 78 typedef int sword32; 68 79 typedef unsigned int word32; 69 80 #endif … … 110 121 #define WORD64_AVAILABLE 111 122 #define W64LIT(x) x##ui64 123 typedef __int64 sword64; 112 124 typedef unsigned __int64 word64; 113 125 #elif defined(__EMSCRIPTEN__) 114 126 #define WORD64_AVAILABLE 115 127 #define W64LIT(x) x##ull 128 typedef long long sword64; 116 129 typedef unsigned long long word64; 117 130 #elif defined(SIZEOF_LONG) && SIZEOF_LONG == 8 118 131 #define WORD64_AVAILABLE 119 132 #define W64LIT(x) x##LL 133 typedef long sword64; 120 134 typedef unsigned long word64; 121 135 #elif defined(SIZEOF_LONG_LONG) && SIZEOF_LONG_LONG == 8 122 136 #define WORD64_AVAILABLE 123 137 #define W64LIT(x) x##LL 138 typedef long long sword64; 124 139 typedef unsigned long long word64; 125 140 #elif defined(__SIZEOF_LONG_LONG__) && __SIZEOF_LONG_LONG__ == 8 126 141 #define WORD64_AVAILABLE 127 142 #define W64LIT(x) x##LL 143 typedef long long sword64; 128 144 typedef unsigned long long word64; 129 145 #endif … … 150 166 #define WOLFCRYPT_SLOW_WORD64 151 167 #endif 168 #define WC_32BIT_CPU 152 169 #endif 153 170 … … 163 180 #define MP_16BIT /* for mp_int, mp_word needs to be twice as big as 164 181 mp_digit, no 64 bit type so make mp_digit 16 bit */ 182 #define WC_32BIT_CPU 165 183 #endif 166 184 … … 198 216 #endif 199 217 #else 200 #define WC_INLINE 218 #ifdef __GNUC__ 219 #define WC_INLINE __attribute__((unused)) 220 #else 221 #define WC_INLINE 222 #endif 201 223 #endif 202 224 #endif … … 245 267 #if ((__GNUC__ > 7) || ((__GNUC__ == 7) && (__GNUC_MINOR__ >= 1))) 246 268 #undef FALL_THROUGH 247 #define FALL_THROUGH __attribute__ ((fallthrough)); 269 #if defined(WOLFSSL_LINUXKM) && defined(fallthrough) 270 #define FALL_THROUGH fallthrough 271 #else 272 #define FALL_THROUGH __attribute__ ((fallthrough)); 273 #endif 248 274 #endif 249 275 #endif … … 343 369 /* just use plain C stdlib stuff if desired */ 344 370 #include <stdlib.h> 345 #define XMALLOC(s, h, t) malloc((s ))371 #define XMALLOC(s, h, t) malloc((size_t)(s)) 346 372 #define XFREE(p, h, t) {void* xp = (p); if((xp)) free((xp));} 347 #define XREALLOC(p, n, h, t) realloc((p), (n)) 348 #endif 373 #define XREALLOC(p, n, h, t) realloc((p), (size_t)(n)) 374 #endif 375 376 #elif defined(WOLFSSL_LINUXKM) 377 /* the requisite linux/slab.h is included in wc_port.h, with incompatible warnings masked out. */ 378 #define XMALLOC(s, h, t) ({(void)(h); (void)(t); kmalloc(s, GFP_KERNEL);}) 379 #define XFREE(p, h, t) ({void* _xp; (void)(h); _xp = (p); if(_xp) kfree(_xp);}) 380 #define XREALLOC(p, n, h, t) ({(void)(h); (void)(t); krealloc((p), (n), GFP_KERNEL);}) 381 349 382 #elif !defined(MICRIUM_MALLOC) && !defined(EBSNET) \ 350 383 && !defined(WOLFSSL_SAFERTOS) && !defined(FREESCALE_MQX) \ … … 376 409 #endif 377 410 378 /* declare/free variable handling for async */ 379 #ifdef WOLFSSL_ASYNC_CRYPT 411 /* declare/free variable handling for async and smallstack */ 412 #if defined(WOLFSSL_ASYNC_CRYPT) || defined(WOLFSSL_SMALL_STACK) 413 #define DECLARE_VAR_IS_HEAP_ALLOC 380 414 #define DECLARE_VAR(VAR_NAME, VAR_TYPE, VAR_SIZE, HEAP) \ 381 VAR_TYPE* VAR_NAME = (VAR_TYPE*)XMALLOC(sizeof(VAR_TYPE) * VAR_SIZE, (HEAP), DYNAMIC_TYPE_WOLF_BIGINT); 382 #define DECLARE_VAR_INIT(VAR_NAME, VAR_TYPE, VAR_SIZE, INIT_VALUE, HEAP) \ 383 VAR_TYPE* VAR_NAME = ({ \ 384 VAR_TYPE* ptr = (VAR_TYPE*)XMALLOC(sizeof(VAR_TYPE) * VAR_SIZE, (HEAP), DYNAMIC_TYPE_WOLF_BIGINT); \ 385 if (ptr && INIT_VALUE) { \ 386 XMEMCPY(ptr, INIT_VALUE, sizeof(VAR_TYPE) * VAR_SIZE); \ 387 } \ 388 ptr; \ 389 }) 415 VAR_TYPE* VAR_NAME = (VAR_TYPE*)XMALLOC(sizeof(VAR_TYPE) * VAR_SIZE, (HEAP), DYNAMIC_TYPE_WOLF_BIGINT) 390 416 #define DECLARE_ARRAY(VAR_NAME, VAR_TYPE, VAR_ITEMS, VAR_SIZE, HEAP) \ 391 417 VAR_TYPE* VAR_NAME[VAR_ITEMS]; \ 392 int idx##VAR_NAME ; \418 int idx##VAR_NAME, inner_idx_##VAR_NAME; \ 393 419 for (idx##VAR_NAME=0; idx##VAR_NAME<VAR_ITEMS; idx##VAR_NAME++) { \ 394 420 VAR_NAME[idx##VAR_NAME] = (VAR_TYPE*)XMALLOC(VAR_SIZE, (HEAP), DYNAMIC_TYPE_WOLF_BIGINT); \ 421 if (VAR_NAME[idx##VAR_NAME] == NULL) { \ 422 for (inner_idx_##VAR_NAME = 0; inner_idx_##VAR_NAME < idx##VAR_NAME; inner_idx_##VAR_NAME++) { \ 423 XFREE(VAR_NAME[inner_idx_##VAR_NAME], HEAP, DYNAMIC_TYPE_WOLF_BIGINT); \ 424 VAR_NAME[inner_idx_##VAR_NAME] = NULL; \ 425 } \ 426 for (inner_idx_##VAR_NAME = idx##VAR_NAME + 1; inner_idx_##VAR_NAME < VAR_ITEMS; inner_idx_##VAR_NAME++) { \ 427 VAR_NAME[inner_idx_##VAR_NAME] = NULL; \ 428 } \ 429 break; \ 430 } \ 395 431 } 396 432 #define FREE_VAR(VAR_NAME, HEAP) \ … … 407 443 FREE_ARRAY(VAR_NAME, VAR_ITEMS, HEAP) 408 444 #else 445 #undef DECLARE_VAR_IS_HEAP_ALLOC 409 446 #define DECLARE_VAR(VAR_NAME, VAR_TYPE, VAR_SIZE, HEAP) \ 410 447 VAR_TYPE VAR_NAME[VAR_SIZE] 411 #define DECLARE_VAR_INIT(VAR_NAME, VAR_TYPE, VAR_SIZE, INIT_VALUE, HEAP) \412 VAR_TYPE* VAR_NAME = (VAR_TYPE*)INIT_VALUE413 448 #define DECLARE_ARRAY(VAR_NAME, VAR_TYPE, VAR_ITEMS, VAR_SIZE, HEAP) \ 414 449 VAR_TYPE VAR_NAME[VAR_ITEMS][VAR_SIZE] … … 418 453 #define DECLARE_ARRAY_DYNAMIC_DEC(VAR_NAME, VAR_TYPE, VAR_ITEMS, VAR_SIZE, HEAP) \ 419 454 VAR_TYPE* VAR_NAME[VAR_ITEMS]; \ 420 int idx##VAR_NAME ;455 int idx##VAR_NAME, inner_idx_##VAR_NAME; 421 456 #define DECLARE_ARRAY_DYNAMIC_EXE(VAR_NAME, VAR_TYPE, VAR_ITEMS, VAR_SIZE, HEAP) \ 422 457 for (idx##VAR_NAME=0; idx##VAR_NAME<VAR_ITEMS; idx##VAR_NAME++) { \ 423 458 VAR_NAME[idx##VAR_NAME] = (VAR_TYPE*)XMALLOC(VAR_SIZE, (HEAP), DYNAMIC_TYPE_TMP_BUFFER); \ 459 if (VAR_NAME[idx##VAR_NAME] == NULL) { \ 460 for (inner_idx_##VAR_NAME = 0; inner_idx_##VAR_NAME < idx##VAR_NAME; inner_idx_##VAR_NAME++) { \ 461 XFREE(VAR_NAME[inner_idx_##VAR_NAME], HEAP, DYNAMIC_TYPE_TMP_BUFFER); \ 462 VAR_NAME[inner_idx_##VAR_NAME] = NULL; \ 463 } \ 464 for (inner_idx_##VAR_NAME = idx##VAR_NAME + 1; inner_idx_##VAR_NAME < VAR_ITEMS; inner_idx_##VAR_NAME++) { \ 465 VAR_NAME[inner_idx_##VAR_NAME] = NULL; \ 466 } \ 467 break; \ 468 } \ 424 469 } 425 470 #define FREE_ARRAY_DYNAMIC(VAR_NAME, VAR_ITEMS, HEAP) \ … … 438 483 #endif 439 484 440 #ifndef STRING_USER 441 #include <string.h> 442 #define XMEMCPY(d,s,l) memcpy((d),(s),(l)) 443 #define XMEMSET(b,c,l) memset((b),(c),(l)) 444 #define XMEMCMP(s1,s2,n) memcmp((s1),(s2),(n)) 445 #define XMEMMOVE(d,s,l) memmove((d),(s),(l)) 485 #ifndef STRING_USER 486 #if defined(WOLFSSL_LINUXKM) 487 #include <linux/string.h> 488 #else 489 #include <string.h> 490 #endif 491 492 #define XMEMCPY(d,s,l) memcpy((d),(s),(l)) 493 #define XMEMSET(b,c,l) memset((b),(c),(l)) 494 #define XMEMCMP(s1,s2,n) memcmp((s1),(s2),(n)) 495 #define XMEMMOVE(d,s,l) memmove((d),(s),(l)) 446 496 447 497 #define XSTRLEN(s1) strlen((s1)) 448 498 #define XSTRNCPY(s1,s2,n) strncpy((s1),(s2),(n)) 449 /* strstr, strncmp, and strncat only used by wolfSSL proper,499 /* strstr, strncmp, strcmp, and strncat only used by wolfSSL proper, 450 500 * not required for wolfCrypt only */ 451 501 #define XSTRSTR(s1,s2) strstr((s1),(s2)) 452 502 #define XSTRNSTR(s1,s2,n) mystrnstr((s1),(s2),(n)) 453 503 #define XSTRNCMP(s1,s2,n) strncmp((s1),(s2),(n)) 504 #define XSTRCMP(s1,s2) strcmp((s1),(s2)) 454 505 #define XSTRNCAT(s1,s2,n) strncat((s1),(s2),(n)) 455 506 … … 474 525 #if defined(WOLFSSL_DEOS) 475 526 #define XSTRNCASECMP(s1,s2,n) strnicmp((s1),(s2),(n)) 527 #elif defined(WOLFSSL_CMSIS_RTOSv2) 528 #define XSTRNCASECMP(s1,s2,n) strncmp((s1),(s2),(n)) 476 529 #else 477 530 #define XSTRNCASECMP(s1,s2,n) strncasecmp((s1),(s2),(n)) … … 490 543 #include <stdio.h> 491 544 #endif 492 #define XSNPRINTF snprintf 545 #if defined(WOLFSSL_ESPIDF) && \ 546 (!defined(NO_ASN_TIME) && defined(HAVE_PKCS7)) 547 #include<stdarg.h> 548 /* later gcc than 7.1 introduces -Wformat-truncation */ 549 /* In cases when truncation is expected the caller needs*/ 550 /* to check the return value from the function so that */ 551 /* compiler doesn't complain. */ 552 /* xtensa-esp32-elf v8.2.0 warns trancation at */ 553 /* GetAsnTimeString() */ 554 static WC_INLINE 555 int _xsnprintf_(char *s, size_t n, const char *format, ...) 556 { 557 va_list ap; 558 int ret; 559 560 if ((int)n <= 0) return -1; 561 562 va_start(ap, format); 563 564 ret = vsnprintf(s, n, format, ap); 565 if (ret < 0) 566 ret = -1; 567 568 va_end(ap); 569 570 return ret; 571 } 572 #define XSNPRINTF _xsnprintf_ 573 #else 574 #define XSNPRINTF snprintf 575 #endif 493 576 #endif 494 577 #else … … 566 649 #endif /* OPENSSL_EXTRA */ 567 650 568 #ifndef CTYPE_USER 569 #include <ctype.h> 570 #if defined(HAVE_ECC) || defined(HAVE_OCSP) || \ 571 defined(WOLFSSL_KEY_GEN) || !defined(NO_DSA) 651 #ifndef CTYPE_USER 652 #ifndef WOLFSSL_LINUXKM 653 #include <ctype.h> 654 #endif 655 #if defined(HAVE_ECC) || defined(HAVE_OCSP) || \ 656 defined(WOLFSSL_KEY_GEN) || !defined(NO_DSA) || \ 657 defined(OPENSSL_EXTRA) 572 658 #define XTOUPPER(c) toupper((c)) 573 #define XISALPHA(c) isalpha((c)) 659 #endif 660 #ifdef OPENSSL_ALL 661 #define XISALNUM(c) isalnum((c)) 574 662 #endif 575 663 /* needed by wolfSSL_check_domain_name() */ … … 672 760 DYNAMIC_TYPE_CURVE448 = 91, 673 761 DYNAMIC_TYPE_ED448 = 92, 762 DYNAMIC_TYPE_AES = 93, 763 DYNAMIC_TYPE_CMAC = 94, 674 764 DYNAMIC_TYPE_SNIFFER_SERVER = 1000, 675 765 DYNAMIC_TYPE_SNIFFER_SESSION = 1001, … … 706 796 /* hash types */ 707 797 enum wc_HashType { 708 #if defined(HAVE_SELFTEST) || defined(HAVE_FIPS) 798 #if defined(HAVE_SELFTEST) || defined(HAVE_FIPS) && \ 799 (defined(HAVE_FIPS_VERSION) && (HAVE_FIPS_VERSION <= 2)) 709 800 /* In selftest build, WC_* types are not mapped to WC_HASH_TYPE types. 710 801 * Values here are based on old selftest hmac.h enum, with additions. … … 780 871 WC_PK_TYPE_RSA_KEYGEN = 8, 781 872 WC_PK_TYPE_EC_KEYGEN = 9, 782 783 WC_PK_TYPE_MAX = WC_PK_TYPE_EC_KEYGEN 873 WC_PK_TYPE_RSA_CHECK_PRIV_KEY = 10, 874 WC_PK_TYPE_EC_CHECK_PRIV_KEY = 11, 875 876 WC_PK_TYPE_MAX = WC_PK_TYPE_EC_CHECK_PRIV_KEY 784 877 }; 785 878 -
azure_iot_hub_f767zi/trunk/wolfssl-4.7.0/wolfssl/wolfcrypt/wc_encrypt.h
r457 r464 29 29 30 30 #include <wolfssl/wolfcrypt/types.h> 31 #include <wolfssl/wolfcrypt/aes.h> 32 #include <wolfssl/wolfcrypt/chacha.h> 33 #include <wolfssl/wolfcrypt/des3.h> 34 #include <wolfssl/wolfcrypt/arc4.h> 31 #ifndef NO_AES 32 #include <wolfssl/wolfcrypt/aes.h> 33 #endif 34 #ifdef HAVE_CHACHA 35 #include <wolfssl/wolfcrypt/chacha.h> 36 #endif 37 #ifndef NO_DES3 38 #include <wolfssl/wolfcrypt/des3.h> 39 #endif 40 #ifndef NO_RC4 41 #include <wolfssl/wolfcrypt/arc4.h> 42 #endif 35 43 36 44 #ifdef __cplusplus … … 38 46 #endif 39 47 40 /* determine max cipher key size */ 48 /* determine max cipher key size - cannot use enum values here, must be define, 49 * since WC_MAX_SYM_KEY_SIZE is used in if macro logic. */ 41 50 #ifndef NO_AES 42 51 #define WC_MAX_SYM_KEY_SIZE (AES_MAX_KEY_SIZE/8) 43 52 #elif defined(HAVE_CHACHA) 44 #define WC_MAX_SYM_KEY_SIZE CHACHA_MAX_KEY_SZ53 #define WC_MAX_SYM_KEY_SIZE 32 /* CHACHA_MAX_KEY_SZ */ 45 54 #elif !defined(NO_DES3) 46 #define WC_MAX_SYM_KEY_SIZE DES3_KEY_SIZE55 #define WC_MAX_SYM_KEY_SIZE 24 /* DES3_KEY_SIZE */ 47 56 #elif !defined(NO_RC4) 48 #define WC_MAX_SYM_KEY_SIZE RC4_KEY_SIZE57 #define WC_MAX_SYM_KEY_SIZE 16 /* RC4_KEY_SIZE */ 49 58 #else 50 59 #define WC_MAX_SYM_KEY_SIZE 32 60 #endif 61 62 63 #if (defined(HAVE_FIPS) && defined(HAVE_FIPS_VERSION) && \ 64 (HAVE_FIPS_VERSION <= 2)) || (defined(HAVE_SELFTEST) && \ 65 (!defined(HAVE_SELFTEST_VERSION) || (HAVE_SELFTEST_VERSION < 2))) 66 /* In FIPS cert 3389 and CAVP selftest v1 build, these enums are 67 * not in aes.h. Define them here outside the fips boundary. 68 */ 69 #ifndef GCM_NONCE_MID_SZ 70 /* The usual default nonce size for AES-GCM. */ 71 #define GCM_NONCE_MID_SZ 12 72 #endif 73 #ifndef CCM_NONCE_MIN_SZ 74 #define CCM_NONCE_MIN_SZ 7 75 #endif 51 76 #endif 52 77 -
azure_iot_hub_f767zi/trunk/wolfssl-4.7.0/wolfssl/wolfcrypt/wc_port.h
r457 r464 55 55 #endif 56 56 57 #ifdef WOLFSSL_LINUXKM 58 #ifdef HAVE_CONFIG_H 59 #ifndef PACKAGE_NAME 60 #error wc_port.h included before config.h 61 #endif 62 /* config.h is autogenerated without gating, and is subject to repeat 63 * inclusions, so gate it out here to keep autodetection masking 64 * intact: 65 */ 66 #undef HAVE_CONFIG_H 67 #endif 68 69 #ifdef BUILDING_WOLFSSL 70 71 _Pragma("GCC diagnostic push"); 72 73 /* we include all the needed kernel headers with these masked out. else 74 * there are profuse warnings. 75 */ 76 _Pragma("GCC diagnostic ignored \"-Wunused-parameter\""); 77 _Pragma("GCC diagnostic ignored \"-Wpointer-arith\""); 78 _Pragma("GCC diagnostic ignored \"-Wshadow\""); 79 _Pragma("GCC diagnostic ignored \"-Wnested-externs\""); 80 _Pragma("GCC diagnostic ignored \"-Wredundant-decls\""); 81 _Pragma("GCC diagnostic ignored \"-Wsign-compare\""); 82 _Pragma("GCC diagnostic ignored \"-Wpointer-sign\""); 83 _Pragma("GCC diagnostic ignored \"-Wbad-function-cast\""); 84 _Pragma("GCC diagnostic ignored \"-Wdiscarded-qualifiers\""); 85 86 #include <linux/kconfig.h> 87 #include <linux/kernel.h> 88 #include <linux/version.h> 89 #include <linux/ctype.h> 90 #include <linux/init.h> 91 #include <linux/module.h> 92 #include <linux/mm.h> 93 #ifndef SINGLE_THREADED 94 #include <linux/kthread.h> 95 #endif 96 #include <linux/net.h> 97 #include <linux/slab.h> 98 #if defined(WOLFSSL_AESNI) || defined(USE_INTEL_SPEEDUP) 99 #if LINUX_VERSION_CODE < KERNEL_VERSION(4, 0, 0) 100 #include <asm/i387.h> 101 #else 102 #include <asm/simd.h> 103 #endif 104 #ifndef SAVE_VECTOR_REGISTERS 105 #define SAVE_VECTOR_REGISTERS() kernel_fpu_begin() 106 #endif 107 #ifndef RESTORE_VECTOR_REGISTERS 108 #define RESTORE_VECTOR_REGISTERS() kernel_fpu_end() 109 #endif 110 #elif defined(WOLFSSL_ARMASM) 111 #include <asm/fpsimd.h> 112 #ifndef SAVE_VECTOR_REGISTERS 113 #define SAVE_VECTOR_REGISTERS() ({ preempt_disable(); fpsimd_preserve_current_state(); }) 114 #endif 115 #ifndef RESTORE_VECTOR_REGISTERS 116 #define RESTORE_VECTOR_REGISTERS() ({ fpsimd_restore_current_state(); preempt_enable(); }) 117 #endif 118 #else 119 #ifndef SAVE_VECTOR_REGISTERS 120 #define SAVE_VECTOR_REGISTERS() ({}) 121 #endif 122 #ifndef RESTORE_VECTOR_REGISTERS 123 #define RESTORE_VECTOR_REGISTERS() ({}) 124 #endif 125 #endif 126 127 _Pragma("GCC diagnostic pop"); 128 129 /* Linux headers define these using C expressions, but we need 130 * them to be evaluable by the preprocessor, for use in sp_int.h. 131 */ 132 _Static_assert(sizeof(ULONG_MAX) == 8, "WOLFSSL_LINUXKM supported only on targets with 64 bit long words."); 133 #undef UCHAR_MAX 134 #define UCHAR_MAX 255 135 #undef USHRT_MAX 136 #define USHRT_MAX 65535 137 #undef UINT_MAX 138 #define UINT_MAX 4294967295U 139 #undef ULONG_MAX 140 #define ULONG_MAX 18446744073709551615UL 141 #undef ULLONG_MAX 142 #define ULLONG_MAX ULONG_MAX 143 #undef INT_MAX 144 #define INT_MAX 2147483647 145 #undef LONG_MAX 146 #define LONG_MAX 9223372036854775807L 147 #undef LLONG_MAX 148 #define LLONG_MAX LONG_MAX 149 150 /* remove this multifariously conflicting macro, picked up from 151 * Linux arch/<arch>/include/asm/current.h. 152 */ 153 #undef current 154 155 /* prevent gcc's mm_malloc.h from being included, since it unconditionally 156 * includes stdlib.h, which is kernel-incompatible. 157 */ 158 #define _MM_MALLOC_H_INCLUDED 159 160 #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0) 161 /* kvmalloc()/kvfree() and friends added in linux commit a7c3e901 */ 162 #define malloc(x) kvmalloc(x, GFP_KERNEL) 163 #define free(x) kvfree(x) 164 void *lkm_realloc(void *ptr, size_t newsize); 165 #define realloc(x, y) lkm_realloc(x, y) 166 #else 167 #define malloc(x) kmalloc(x, GFP_KERNEL) 168 #define free(x) kfree(x) 169 #define realloc(x,y) krealloc(x, y, GFP_KERNEL) 170 #endif 171 172 /* min() and max() in linux/kernel.h over-aggressively type-check, producing 173 * myriad spurious -Werrors throughout the codebase. 174 */ 175 #undef min 176 #undef max 177 178 /* work around namespace conflict between wolfssl/internal.h (enum HandShakeType) 179 * and linux/key.h (extern int()). 180 */ 181 #define key_update wc_key_update 182 183 #define lkm_printf(format, args...) printk(KERN_INFO "wolfssl: %s(): " format, __func__, ## args) 184 #define printf(...) lkm_printf(__VA_ARGS__) 185 186 #endif /* BUILDING_WOLFSSL */ 187 188 /* needed to suppress inclusion of stdio.h in wolfssl/wolfcrypt/types.h */ 189 #define XSNPRINTF snprintf 190 191 /* the rigmarole around kstrtol() here is to accommodate its warn-unused-result attribute. */ 192 #define XATOI(s) ({ \ 193 long _xatoi_res = 0; \ 194 int _xatoi_ret = kstrtol(s, 10, &_xatoi_res); \ 195 if (_xatoi_ret != 0) { \ 196 _xatoi_res = 0; \ 197 } \ 198 (int)_xatoi_res; \ 199 }) 200 201 #else /* ! WOLFSSL_LINUXKM */ 202 203 #ifndef SAVE_VECTOR_REGISTERS 204 #define SAVE_VECTOR_REGISTERS() do{}while(0) 205 #endif 206 #ifndef RESTORE_VECTOR_REGISTERS 207 #define RESTORE_VECTOR_REGISTERS() do{}while(0) 208 #endif 209 210 #endif /* WOLFSSL_LINUXKM */ 57 211 58 212 /* THREADING/MUTEX SECTION */ … … 84 238 /* do nothing, just don't pick Unix */ 85 239 #elif defined(FREERTOS) || defined(FREERTOS_TCP) || defined(WOLFSSL_SAFERTOS) 240 /* do nothing */ 241 #elif defined(RTTHREAD) 86 242 /* do nothing */ 87 243 #elif defined(EBSNET) … … 157 313 #else 158 314 #ifndef SINGLE_THREADED 159 #define WOLFSSL_PTHREADS 160 #include <pthread.h> 315 #ifndef WOLFSSL_USER_MUTEX 316 #if defined(WOLFSSL_LINUXKM) 317 #define WOLFSSL_KTHREADS 318 #else 319 #define WOLFSSL_PTHREADS 320 #include <pthread.h> 321 #endif 322 #endif 161 323 #endif 162 324 #if (defined(OPENSSL_EXTRA) || defined(GOAHEAD_WS)) && \ 163 325 !defined(NO_FILESYSTEM) 164 #include <unistd.h> /* for close of BIO */ 326 #ifdef FUSION_RTOS 327 #include <fclunistd.h> 328 #else 329 #include <unistd.h> /* for close of BIO */ 330 #endif 165 331 #endif 166 332 #endif … … 184 350 #include "semphr.h" 185 351 typedef SemaphoreHandle_t wolfSSL_Mutex; 352 #elif defined (RTTHREAD) 353 #include "rtthread.h" 354 typedef rt_mutex_t wolfSSL_Mutex; 186 355 #elif defined(WOLFSSL_SAFERTOS) 187 356 typedef struct wolfSSL_Mutex { … … 193 362 #elif defined(WOLFSSL_PTHREADS) 194 363 typedef pthread_mutex_t wolfSSL_Mutex; 364 #elif defined(WOLFSSL_KTHREADS) 365 typedef struct mutex wolfSSL_Mutex; 195 366 #elif defined(THREADX) 196 367 typedef TX_MUTEX wolfSSL_Mutex; … … 239 410 #elif defined(WOLFSSL_TELIT_M2MB) 240 411 typedef M2MB_OS_MTX_HANDLE wolfSSL_Mutex; 412 #elif defined(WOLFSSL_USER_MUTEX) 413 /* typedef User_Mutex wolfSSL_Mutex; */ 414 #elif defined(WOLFSSL_LINUXKM) 415 typedef struct mutex wolfSSL_Mutex; 241 416 #else 242 417 #error Need a mutex type in multithreaded mode … … 246 421 /* Enable crypt HW mutex for Freescale MMCAU, PIC32MZ or STM32 */ 247 422 #if defined(FREESCALE_MMCAU) || defined(WOLFSSL_MICROCHIP_PIC32MZ) || \ 248 defined(STM32_CRYPTO) 423 defined(STM32_CRYPTO) || defined(STM32_HASH) || defined(STM32_RNG) 249 424 #ifndef WOLFSSL_CRYPT_HW_MUTEX 250 425 #define WOLFSSL_CRYPT_HW_MUTEX 1 … … 289 464 WOLFSSL_API int wolfCrypt_Cleanup(void); 290 465 466 #ifdef WOLFSSL_TRACK_MEMORY_VERBOSE 467 WOLFSSL_API long wolfCrypt_heap_peakAllocs_checkpoint(void); 468 WOLFSSL_API long wolfCrypt_heap_peakBytes_checkpoint(void); 469 #endif 470 291 471 292 472 /* FILESYSTEM SECTION */ … … 312 492 #define XBADFILE -1 313 493 #define XFGETS(b,s,f) -2 /* Not ported yet */ 494 314 495 #elif defined(LSR_FS) 315 496 #include <fs.h> … … 324 505 #define XSEEK_END 0 325 506 #define XBADFILE NULL 326 #define XFGETS(b,s,f) -2 /* Not ported yet */ 507 #define XFGETS(b,s,f) -2 /* Not ported yet */ 508 327 509 #elif defined(FREESCALE_MQX) || defined(FREESCALE_KSDK_MQX) 328 510 #define XFILE MQX_FILE_PTR … … 337 519 #define XBADFILE NULL 338 520 #define XFGETS fgets 521 339 522 #elif defined(WOLFSSL_DEOS) 340 523 #define NO_FILESYSTEM 341 524 #warning "TODO - DDC-I Certifiable Fast File System for Deos is not integrated" 342 / /#define XFILE bfd *525 /* #define XFILE bfd * */ 343 526 344 527 #elif defined(MICRIUM) … … 355 538 #define XBADFILE NULL 356 539 #define XFGETS(b,s,f) -2 /* Not ported yet */ 540 357 541 #elif defined(WOLFSSL_NUCLEUS_1_2) 358 542 #include "fal/inc/fal.h" … … 367 551 #define XSEEK_END PSEEK_END 368 552 #define XBADFILE NULL 553 369 554 #elif defined(WOLFSSL_APACHE_MYNEWT) 370 555 #include <fs/fs.h> … … 381 566 #define XBADFILE NULL 382 567 #define XFGETS(b,s,f) -2 /* Not ported yet */ 568 383 569 #elif defined(WOLFSSL_ZEPHYR) 384 570 #include <fs.h> … … 415 601 #define XFGETS(b,s,f) -2 /* Not ported yet */ 416 602 603 #elif defined (WOLFSSL_XILINX) 604 #include "xsdps.h" 605 #include "ff.h" 606 607 /* workaround to declare variable and provide type */ 608 #define XFILE FIL curFile; FIL* 609 #define XFOPEN(NAME, MODE) ({ FRESULT res; res = f_open(&curFile, (NAME), (FA_OPEN_ALWAYS | FA_WRITE | FA_READ)); (res == FR_OK) ? &curFile : NULL; }) 610 #define XFSEEK(F, O, W) f_lseek((F), (O)) 611 #define XFTELL(F) f_tell((F)) 612 #define XREWIND(F) f_rewind((F)) 613 #define XFREAD(BUF, SZ, AMT, F) ({ FRESULT res; UINT br; res = f_read((F), (BUF), (SZ)*(AMT), &br); (void)br; res; }) 614 #define XFWRITE(BUF, SZ, AMT, F) ({ FRESULT res; UINT written; res = f_write((F), (BUF), (SZ)*(AMT), &written); (void)written; res; }) 615 #define XFCLOSE(F) f_close((F)) 616 #define XSEEK_END 0 617 #define XBADFILE NULL 618 #define XFGETS(b,s,f) f_gets((b), (s), (f)) 619 620 #elif defined(FUSION_RTOS) 621 #include <fclstdio.h> 622 #include <fclunistd.h> 623 #include <fcldirent.h> 624 #include <sys/fclstat.h> 625 #include <fclstring.h> 626 #include <fcl_os.h> 627 #define XFILE FCL_FILE* 628 #define XFOPEN FCL_FOPEN 629 #define XFSEEK FCL_FSEEK 630 #define XFTELL FCL_FTELL 631 #define XREWIND FCL_REWIND 632 #define XFREAD FCL_FREAD 633 #define XFWRITE FCL_FWRITE 634 #define XFCLOSE FCL_FCLOSE 635 #define XSEEK_END SEEK_END 636 #define XBADFILE NULL 637 #define XFGETS FCL_FGETS 638 #define XFPUTS FCL_FPUTS 639 #define XFPRINTF FCL_FPRINTF 640 #define XVFPRINTF FCL_VFPRINTF 641 #define XVSNPRINTF FCL_VSNPRINTF 642 #define XSNPRINTF FCL_SNPRINTF 643 #define XSPRINTF FCL_SPRINTF 644 #define DIR FCL_DIR 645 #define stat FCL_STAT 646 #define opendir FCL_OPENDIR 647 #define closedir FCL_CLOSEDIR 648 #define readdir FCL_READDIR 649 #define dirent fclDirent 650 #define strncasecmp FCL_STRNCASECMP 651 652 /* FUSION SPECIFIC ERROR CODE */ 653 #define FUSION_IO_SEND_E 63 654 417 655 #elif defined(WOLFSSL_USER_FILESYSTEM) 418 656 /* To be defined in user_settings.h */ … … 427 665 #define XFOPEN fopen 428 666 #endif 667 #define XFDOPEN fdopen 429 668 #define XFSEEK fseek 430 669 #define XFTELL ftell … … 436 675 #define XBADFILE NULL 437 676 #define XFGETS fgets 677 #define XFPRINTF fprintf 438 678 439 679 #if !defined(USE_WINDOWS_API) && !defined(NO_WOLFSSL_DIR)\ … … 442 682 #include <unistd.h> 443 683 #include <sys/stat.h> 444 #endif 684 #define XWRITE write 685 #define XREAD read 686 #define XCLOSE close 687 #endif 688 #endif 689 690 /* Defaults, user may over-ride with user_settings.h or in a porting section 691 * above 692 */ 693 #ifndef XVFPRINTF 694 #define XVFPRINTF vfprintf 695 #endif 696 #ifndef XVSNPRINTF 697 #define XVSNPRINTF vsnprintf 698 #endif 699 #ifndef XFPUTS 700 #define XFPUTS fputs 701 #endif 702 #ifndef XSPRINTF 703 #define XSPRINTF sprintf 445 704 #endif 446 705 … … 451 710 #define MAX_PATH 256 452 711 #endif 712 713 WOLFSSL_LOCAL int wc_FileLoad(const char* fname, unsigned char** buf, 714 size_t* bufLen, void* heap); 453 715 454 716 #if !defined(NO_WOLFSSL_DIR) && !defined(WOLFSSL_NUCLEUS) && \ … … 529 791 530 792 #elif defined(WOLFSSL_XILINX) 531 #define USER_TIME 793 #ifndef XTIME 794 #define XTIME(t1) xilinx_time((t1)) 795 #endif 532 796 #include <time.h> 533 797 … … 554 818 #elif defined(MICROCHIP_TCPIP_V5) || defined(MICROCHIP_TCPIP) 555 819 #include <time.h> 820 extern time_t pic32_time(time_t* timer); 556 821 #define XTIME(t1) pic32_time((t1)) 557 822 #define XGMTIME(c, t) gmtime((c)) … … 638 903 #define USE_WOLF_TM 639 904 905 906 #elif defined(WOLFSSL_LINUXKM) 907 #ifdef BUILDING_WOLFSSL 908 909 /* includes are all above, with incompatible warnings masked out. */ 910 #if LINUX_VERSION_CODE < KERNEL_VERSION(5, 5, 0) 911 typedef __kernel_time_t time_t; 912 #else 913 typedef __kernel_time64_t time_t; 914 #endif 915 extern time_t time(time_t * timer); 916 #define XTIME time 917 #define WOLFSSL_GMTIME 918 #define XGMTIME(c, t) gmtime(c) 919 #define NO_TIMEVAL 1 920 921 #endif /* BUILDING_WOLFSSL */ 922 640 923 #else 641 924 /* default */ … … 675 958 #endif 676 959 #if !defined(XGMTIME) && !defined(TIME_OVERRIDES) 677 #if defined(WOLFSSL_GMTIME) || !defined(HAVE_GMTIME_R) || defined(WOLF_C99) 678 #define XGMTIME(c, t) gmtime((c)) 679 #else 960 /* Always use gmtime_r if available. */ 961 #if defined(HAVE_GMTIME_R) 680 962 #define XGMTIME(c, t) gmtime_r((c), (t)) 681 963 #define NEED_TMP_TIME 964 #else 965 #define XGMTIME(c, t) gmtime((c)) 682 966 #endif 683 967 #endif 684 968 #if !defined(XVALIDATE_DATE) && !defined(HAVE_VALIDATE_DATE) 685 969 #define USE_WOLF_VALIDDATE 686 #define XVALIDATE_DATE(d, f, t) ValidateDate((d), (f), (t))970 #define XVALIDATE_DATE(d, f, t) wc_ValidateDate((d), (f), (t)) 687 971 #endif 688 972 … … 743 1027 744 1028 #ifndef FILE_BUFFER_SIZE 745 #define FILE_BUFFER_SIZE 1024 /* default static file buffer size for input, 1029 #define FILE_BUFFER_SIZE 1024 /* default static file buffer size for input, \ 746 1030 will use dynamic buffer if not big enough */ 747 1031 #endif -
azure_iot_hub_f767zi/trunk/wolfssl-4.7.0/wolfssl/wolfcrypt/wolfmath.h
r457 r464 20 20 */ 21 21 22 /* 23 DESCRIPTION 24 This library provides big integer math functions. 25 26 */ 22 27 #ifndef __WOLFMATH_H__ 23 28 #define __WOLFMATH_H__ -
azure_iot_hub_f767zi/trunk/wolfssl-4.7.0/wolfssl/wolfio.h
r457 r464 95 95 #include <externs.h> 96 96 #include <errno.h> 97 #elif defined(WOLFSSL_LINUXKM) 98 /* the requisite linux/net.h is included in wc_port.h, with incompatible warnings masked out. */ 97 99 #elif defined(WOLFSSL_ATMEL) 98 100 #include "socket/include/socket.h" … … 127 129 #elif defined(WOLFSSL_ZEPHYR) 128 130 #include <net/socket.h> 131 #elif defined(MICROCHIP_PIC32) 132 #include <sys/errno.h> 129 133 #elif defined(HAVE_NETX) 130 134 #include "nx_api.h" 131 135 #include "errno.h" 136 #elif defined(FUSION_RTOS) 137 #include <sys/fcltypes.h> 138 #include <fclerrno.h> 139 #include <fclfcntl.h> 132 140 #elif !defined(WOLFSSL_NO_SOCK) 133 141 #include <sys/types.h> … … 159 167 #endif 160 168 161 #if defined(WOLFSSL_RENESAS_RA6M3G) /* Uses FREERTOS_TCP */169 #if defined(WOLFSSL_RENESAS_RA6M3G) || defined(WOLFSSL_RENESAS_RA6M3) /* Uses FREERTOS_TCP */ 162 170 #include <errno.h> 163 171 #endif … … 256 264 #define SOCKET_ECONNREFUSED NX_NOT_CONNECTED 257 265 #define SOCKET_ECONNABORTED NX_NOT_CONNECTED 266 #elif defined(FUSION_RTOS) 267 #define SOCKET_EWOULDBLOCK FCL_EWOULDBLOCK 268 #define SOCKET_EAGAIN FCL_EAGAIN 269 #define SOCKET_ECONNRESET FNS_ECONNRESET 270 #define SOCKET_EINTR FCL_EINTR 271 #define SOCKET_EPIPE FCL_EPIPE 272 #define SOCKET_ECONNREFUSED FCL_ECONNREFUSED 273 #define SOCKET_ECONNABORTED FNS_ECONNABORTED 258 274 #else 259 275 #define SOCKET_EWOULDBLOCK EWOULDBLOCK … … 287 303 #define SEND_FUNCTION NU_Send 288 304 #define RECV_FUNCTION NU_Recv 305 #elif defined(FUSION_RTOS) 306 #define SEND_FUNCTION FNS_SEND 307 #define RECV_FUNCTION FNS_RECV 289 308 #elif defined(WOLFSSL_ZEPHYR) 290 309 #ifndef WOLFSSL_MAX_SEND_SZ … … 294 313 #define SEND_FUNCTION send 295 314 #define RECV_FUNCTION recv 315 #elif defined(WOLFSSL_LINUXKM) 316 #define SEND_FUNCTION linuxkm_send 317 #define RECV_FUNCTION linuxkm_recv 296 318 #else 297 319 #define SEND_FUNCTION send … … 304 326 #ifdef USE_WINDOWS_API 305 327 typedef unsigned int SOCKET_T; 328 #ifndef SOCKET_INVALID 329 #define SOCKET_INVALID INVALID_SOCKET 330 #endif 306 331 #else 307 332 typedef int SOCKET_T; 333 #ifndef SOCKET_INVALID 334 #define SOCKET_INVALID -1 335 #endif 308 336 #endif 309 337 … … 360 388 #endif 361 389 #define StartTCP() 390 #elif defined(FUSION_RTOS) 391 #ifndef CloseSocket 392 #define CloseSocket(s) do { \ 393 int err; \ 394 FNS_CLOSE(s, &err); \ 395 } while(0) 396 #endif 362 397 #else 363 398 #ifndef CloseSocket … … 490 525 WOLFSSL_CTX *ctx; 491 526 WOLFSSL *ssl; 492 uint8_t*input_databuf;493 uint8_t*output_databuf;494 uint8_t*ssl_rx_databuf;527 byte *input_databuf; 528 byte *output_databuf; 529 byte *ssl_rx_databuf; 495 530 int ssl_rb_len; 496 531 int ssl_rb_off; … … 500 535 int closing; 501 536 uip_ipaddr_t peer_addr; 502 uint16_tpeer_port;537 word16 peer_port; 503 538 }; 504 539
Note:
See TracChangeset
for help on using the changeset viewer.