- Timestamp:
- Jun 22, 2021, 9:00:19 PM (3 years ago)
- Location:
- azure_iot_hub_f767zi/trunk/wolfssl-4.7.0
- Files:
-
- 2 added
- 25 edited
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
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__
Note:
See TracChangeset
for help on using the changeset viewer.