diff options
author | Alexander Smirnov <alex@ydb.tech> | 2025-02-07 13:56:21 +0000 |
---|---|---|
committer | Alexander Smirnov <alex@ydb.tech> | 2025-02-07 13:56:21 +0000 |
commit | d7e1157d756d10899104a00d009a67cf829deef3 (patch) | |
tree | 0f80eabb5c00a3880f8fe2fe94b43ab67e98ce04 /contrib | |
parent | 02b921de1e48aceda819779ec9f2e26024cebd96 (diff) | |
parent | f1f926eea7fcf8945c320e5688d850776dcf9d6c (diff) | |
download | ydb-d7e1157d756d10899104a00d009a67cf829deef3.tar.gz |
Merge branch 'rightlib' into merge-libs-250207-1355
Diffstat (limited to 'contrib')
246 files changed, 13158 insertions, 3151 deletions
diff --git a/contrib/libs/openjpeg/.yandex_meta/override.nix b/contrib/libs/openjpeg/.yandex_meta/override.nix index aef28cef968..d173012e1fb 100644 --- a/contrib/libs/openjpeg/.yandex_meta/override.nix +++ b/contrib/libs/openjpeg/.yandex_meta/override.nix @@ -1,11 +1,11 @@ pkgs: attrs: with pkgs; with attrs; rec { - version = "2.5.2"; + version = "2.5.3"; src = fetchFromGitHub { owner = "uclouvain"; repo = "openjpeg"; rev = "v${version}"; - sha256 = "sha256-mQ9B3MJY2/bg0yY/7jUJrAXM6ozAHT5fmwES5Q1SGxw="; + sha256 = "sha256-ONPahcQ80e3ahYRQU+Tu8Z7ZTARjRlpXqPAYpUlX5sY="; }; patches = []; diff --git a/contrib/libs/openjpeg/CHANGELOG.md b/contrib/libs/openjpeg/CHANGELOG.md index 54aeb1555b4..926e6f1f4f3 100644 --- a/contrib/libs/openjpeg/CHANGELOG.md +++ b/contrib/libs/openjpeg/CHANGELOG.md @@ -1,5 +1,57 @@ # Changelog +## [v2.5.3](https://github.com/uclouvain/openjpeg/releases/v2.5.3) (2024-12-09) + +[Full Changelog](https://github.com/uclouvain/openjpeg/compare/v2.5.2...v2.5.3) + +**Closed issues:** + +- Memory Leak When Using Invalid Output Path in opj\_compress [\#1567](https://github.com/uclouvain/openjpeg/issues/1567) +- heap-buffer-overflow at lib/openjp2/j2k.c:8460:84 in opj\_j2k\_add\_tlmarker in openjpeg/opj\_decompress [\#1564](https://github.com/uclouvain/openjpeg/issues/1564) +- heap-buffer-overflow at bin/common/color.c:215:42 in sycc422\_to\_rgb in openjpeg/opj\_decompress [\#1563](https://github.com/uclouvain/openjpeg/issues/1563) +- Can not open libjpeg [\#1550](https://github.com/uclouvain/openjpeg/issues/1550) +- \[ERROR\] Wrong values for: w\(525\) h\(700\) numcomps\(0\) \(ihdr\) [\#1545](https://github.com/uclouvain/openjpeg/issues/1545) +- Failed to Open a Specific JP2 file [\#1544](https://github.com/uclouvain/openjpeg/issues/1544) +- Outdated File in OpenJPEG Project Leading to Vulnerability \(CVE-2016-9534\) [\#1539](https://github.com/uclouvain/openjpeg/issues/1539) +- Heap-buffer-overflow in in opj\_mqc\_init\_dec\_common when disabling strict mode [\#1535](https://github.com/uclouvain/openjpeg/issues/1535) +- Heap-buffer-overflow in in opj\_t1\_decode\_cblk when disabling strict mode [\#1533](https://github.com/uclouvain/openjpeg/issues/1533) +- opj\_decode\_tile\_data takes a long time to decode a very small file [\#1524](https://github.com/uclouvain/openjpeg/issues/1524) +- Release v2.5.2 tag is outside of the repository [\#1521](https://github.com/uclouvain/openjpeg/issues/1521) +- Website broken [\#1513](https://github.com/uclouvain/openjpeg/issues/1513) +- Guard Bits In CINEMA2K Profile [\#1340](https://github.com/uclouvain/openjpeg/issues/1340) +- Support for OSX on ARM \(M1\) [\#1289](https://github.com/uclouvain/openjpeg/issues/1289) +- Building on Windows creates \_\_stdcall-convention static lib/dll regardless of compiler settings [\#722](https://github.com/uclouvain/openjpeg/issues/722) + +**Merged pull requests:** + +- sycc422\_to\_rgb\(\): fix out-of-bounds read accesses when 2 \* width\_component\_1\_or\_2 + 1 == with\_component\_0 [\#1566](https://github.com/uclouvain/openjpeg/pull/1566) ([rouault](https://github.com/rouault)) +- opj\_j2k\_add\_tlmarker\(\): validate that current tile-part number if smaller that total number of tile-parts [\#1565](https://github.com/uclouvain/openjpeg/pull/1565) ([rouault](https://github.com/rouault)) +- Amend fix of PR 1530 regarding m\_sot\_length check [\#1561](https://github.com/uclouvain/openjpeg/pull/1561) ([rouault](https://github.com/rouault)) +- Do not turn on 'TPsot==TNsot detection fix' when TNsot==1, and [\#1560](https://github.com/uclouvain/openjpeg/pull/1560) ([rouault](https://github.com/rouault)) +- opj\_j2k\_setup\_encoder\(\): set numgbits = 1 for Cinema2K [\#1559](https://github.com/uclouvain/openjpeg/pull/1559) ([rouault](https://github.com/rouault)) +- bench\_dwt: Add assert for memory allocation failure [\#1555](https://github.com/uclouvain/openjpeg/pull/1555) ([hleft](https://github.com/hleft)) +- Add AVX2 and AVX512 optimization [\#1552](https://github.com/uclouvain/openjpeg/pull/1552) ([tszumski](https://github.com/tszumski)) +- Updated softprops/action-gh-release to v2 [\#1551](https://github.com/uclouvain/openjpeg/pull/1551) ([radarhere](https://github.com/radarhere)) +- Updated softprops/action-gh-release to v2 [\#1549](https://github.com/uclouvain/openjpeg/pull/1549) ([radarhere](https://github.com/radarhere)) +- fix: abi check [\#1548](https://github.com/uclouvain/openjpeg/pull/1548) ([mayeut](https://github.com/mayeut)) +- fix: when EPH markers are specified, they are required. [\#1547](https://github.com/uclouvain/openjpeg/pull/1547) ([mayeut](https://github.com/mayeut)) +- CI: add macOS arm64 [\#1546](https://github.com/uclouvain/openjpeg/pull/1546) ([mayeut](https://github.com/mayeut)) +- thirdparty/libz: update to zlib-1.3.1 [\#1542](https://github.com/uclouvain/openjpeg/pull/1542) ([rouault](https://github.com/rouault)) +- thirdparty/libpng: update to libpng-1.6.43 [\#1541](https://github.com/uclouvain/openjpeg/pull/1541) ([rouault](https://github.com/rouault)) +- thirdparty/libtiff: update to libtiff 4.6.0 [\#1540](https://github.com/uclouvain/openjpeg/pull/1540) ([rouault](https://github.com/rouault)) +- Use TLM \(Tile Length Marker\) segments to optimize decoding [\#1538](https://github.com/uclouvain/openjpeg/pull/1538) ([rouault](https://github.com/rouault)) +- Add new test for file with non-consecutive tilepart and TLM marker [\#1537](https://github.com/uclouvain/openjpeg/pull/1537) ([rouault](https://github.com/rouault)) +- Avoid heap-buffer-overflow read on corrupted image in non-strict mode [\#1536](https://github.com/uclouvain/openjpeg/pull/1536) ([rouault](https://github.com/rouault)) +- opj\_j2k\_read\_sod\(\): validate opj\_stream\_read\_data\(\) return to avoid … [\#1534](https://github.com/uclouvain/openjpeg/pull/1534) ([rouault](https://github.com/rouault)) +- Fixed typos [\#1532](https://github.com/uclouvain/openjpeg/pull/1532) ([radarhere](https://github.com/radarhere)) +- CI: pin macos job to macos-13 to get x86\_64 [\#1531](https://github.com/uclouvain/openjpeg/pull/1531) ([rouault](https://github.com/rouault)) +- Integer Overflow at j2k.c:9614 [\#1530](https://github.com/uclouvain/openjpeg/pull/1530) ([headshog](https://github.com/headshog)) +- Support setting enumcs for CMYK and EYCC color space [\#1529](https://github.com/uclouvain/openjpeg/pull/1529) ([radarhere](https://github.com/radarhere)) +- opj\_j2k\_decode\_tiles\(\): avoid use of uninitialized l\_current\_tile\_no variable [\#1528](https://github.com/uclouvain/openjpeg/pull/1528) ([rouault](https://github.com/rouault)) +- Updated actions/upload-artifact to v4 [\#1527](https://github.com/uclouvain/openjpeg/pull/1527) ([radarhere](https://github.com/radarhere)) +- Do not allow header length to be zero in non-zero length packet [\#1526](https://github.com/uclouvain/openjpeg/pull/1526) ([radarhere](https://github.com/radarhere)) +- Fix building on OpenBSD big endian hosts [\#1520](https://github.com/uclouvain/openjpeg/pull/1520) ([brad0](https://github.com/brad0)) + ## [v2.5.2](https://github.com/uclouvain/openjpeg/releases/v2.5.2) (2024-02-28) [Full Changelog](https://github.com/uclouvain/openjpeg/compare/v2.5.1...v2.5.2) @@ -38,7 +90,7 @@ - Cannot determine library version at compile time [\#1428](https://github.com/uclouvain/openjpeg/issues/1428) - ARM builds on Windows unsupported with Version 2.5.0 [\#1422](https://github.com/uclouvain/openjpeg/issues/1422) - opj\_decompress heap overflow Denial of Service issue [\#1413](https://github.com/uclouvain/openjpeg/issues/1413) -- Color chanel swapping for some JPEG2000 pictures [\#1382](https://github.com/uclouvain/openjpeg/issues/1382) +- Color channel swapping for some JPEG2000 pictures [\#1382](https://github.com/uclouvain/openjpeg/issues/1382) - Heap-buffer-overflow in color.c:379:42 in sycc420\_to\_rgb [\#1347](https://github.com/uclouvain/openjpeg/issues/1347) - No colorspace information after opj\_read\_header [\#570](https://github.com/uclouvain/openjpeg/issues/570) @@ -297,7 +349,7 @@ - LINUX install doesn't work when building shared libraries is disabled [\#1155](https://github.com/uclouvain/openjpeg/issues/1155) - OPENJPEG null ptr dereference in openjpeg-2.3.0/src/bin/jp2/convert.c:2243 [\#1152](https://github.com/uclouvain/openjpeg/issues/1152) - How to drop certain subbands/layers in DWT [\#1147](https://github.com/uclouvain/openjpeg/issues/1147) -- where is the MQ-Coder ouput stream in t2.c? [\#1146](https://github.com/uclouvain/openjpeg/issues/1146) +- where is the MQ-Coder output stream in t2.c? [\#1146](https://github.com/uclouvain/openjpeg/issues/1146) - OpenJPEG 2.3 \(and 2.2?\) multi component image fails to decode with KDU v7.10 [\#1132](https://github.com/uclouvain/openjpeg/issues/1132) - Missing checks for header\_info.height and header\_info.width in function pnmtoimage in src/bin/jpwl/convert.c, which can lead to heap buffer overflow [\#1126](https://github.com/uclouvain/openjpeg/issues/1126) - Assertion Failure in jp2.c [\#1125](https://github.com/uclouvain/openjpeg/issues/1125) diff --git a/contrib/libs/openjpeg/NEWS.md b/contrib/libs/openjpeg/NEWS.md index 20e9184a4fb..9e8b6b72a81 100644 --- a/contrib/libs/openjpeg/NEWS.md +++ b/contrib/libs/openjpeg/NEWS.md @@ -2,6 +2,36 @@ More details in the [CHANGELOG](https://github.com/uclouvain/openjpeg/blob/master/CHANGELOG.md) +## OpenJPEG 2.5.3 (Dec 2024) + +No API/ABI break compared to v2.5.2 + +### New Features + +* Use TLM \(Tile Length Marker\) segments to optimize decoding [\#1538](https://github.com/uclouvain/openjpeg/pull/1538) +* Add AVX2 and AVX512 optimization [\#1552](https://github.com/uclouvain/openjpeg/pull/1552) +* Support setting enumcs for CMYK and EYCC color space [\#1529](https://github.com/uclouvain/openjpeg/pull/1529) + +### Bug fixes + +* Do not turn on 'TPsot==TNsot detection fix' when TNsot==1, and add a OPJ_DPARAMETERS_DISABLE_TPSOT_FIX flag to disable it [\#1560](https://github.com/uclouvain/openjpeg/pull/1560) +* opj\_j2k\_setup\_encoder\(\): set numgbits = 1 for Cinema2K [\#1559](https://github.com/uclouvain/openjpeg/pull/1559) +* fix: when EPH markers are specified, they are required. [\#1547](https://github.com/uclouvain/openjpeg/pull/1547) +* sycc422\_to\_rgb\(\): fix out-of-bounds read accesses when 2 \* width\_component\_1\_or\_2 + 1 == with\_component\_0 [\#1566](https://github.com/uclouvain/openjpeg/pull/1566) +* Avoid heap-buffer-overflow read on corrupted image in non-strict mode [\#1536](https://github.com/uclouvain/openjpeg/pull/1536) +* opj\_j2k\_read\_sod\(\): validate opj\_stream\_read\_data\(\) return to avoid potential later heap-buffer-overflow in in opj_t1_decode_cblk when disabling strict mode [\#1534](https://github.com/uclouvain/openjpeg/pull/1534) +* fix integer Overflow at j2k.c:9614 [\#1530](https://github.com/uclouvain/openjpeg/pull/1530) +* Memory leak fixes in error code path of opj\_compress [\#1567](https://github.com/uclouvain/openjpeg/issues/1567) +* opj\_j2k\_decode\_tiles\(\): avoid use of uninitialized l\_current\_tile\_no variable [\#1528](https://github.com/uclouvain/openjpeg/pull/1528) +* Do not allow header length to be zero in non-zero length packet [\#1526](https://github.com/uclouvain/openjpeg/pull/1526) +* Fix building on OpenBSD big endian hosts [\#1520](https://github.com/uclouvain/openjpeg/pull/1520) + +### Changes in third party components + +* thirdparty/libz: update to zlib-1.3.1 [\#1542](https://github.com/uclouvain/openjpeg/pull/1542) +* thirdparty/libpng: update to libpng-1.6.43 [\#1541](https://github.com/uclouvain/openjpeg/pull/1541) +* thirdparty/libtiff: update to libtiff 4.6.0 [\#1540](https://github.com/uclouvain/openjpeg/pull/1540) + ## OpenJPEG 2.5.2 (Feb 2024) No API/ABI break compared to v2.5.1 diff --git a/contrib/libs/openjpeg/dwt.c b/contrib/libs/openjpeg/dwt.c index 6b18c5dd6e9..11aae472def 100644 --- a/contrib/libs/openjpeg/dwt.c +++ b/contrib/libs/openjpeg/dwt.c @@ -52,7 +52,7 @@ #ifdef __SSSE3__ #include <tmmintrin.h> #endif -#ifdef __AVX2__ +#if (defined(__AVX2__) || defined(__AVX512F__)) #include <immintrin.h> #endif @@ -66,7 +66,10 @@ #define OPJ_WS(i) v->mem[(i)*2] #define OPJ_WD(i) v->mem[(1+(i)*2)] -#ifdef __AVX2__ +#if defined(__AVX512F__) +/** Number of int32 values in a AVX512 register */ +#define VREG_INT_COUNT 16 +#elif defined(__AVX2__) /** Number of int32 values in a AVX2 register */ #define VREG_INT_COUNT 8 #else @@ -331,6 +334,51 @@ static void opj_dwt_decode_1(const opj_dwt_t *v) #endif /* STANDARD_SLOW_VERSION */ +#if defined(__AVX512F__) +static int32_t loop_short_sse(int32_t len, const int32_t** lf_ptr, + const int32_t** hf_ptr, int32_t** out_ptr, + int32_t* prev_even) +{ + int32_t next_even; + __m128i odd, even_m1, unpack1, unpack2; + const int32_t batch = (len - 2) / 8; + const __m128i two = _mm_set1_epi32(2); + + for (int32_t i = 0; i < batch; i++) { + const __m128i lf_ = _mm_loadu_si128((__m128i*)(*lf_ptr + 1)); + const __m128i hf1_ = _mm_loadu_si128((__m128i*)(*hf_ptr)); + const __m128i hf2_ = _mm_loadu_si128((__m128i*)(*hf_ptr + 1)); + + __m128i even = _mm_add_epi32(hf1_, hf2_); + even = _mm_add_epi32(even, two); + even = _mm_srai_epi32(even, 2); + even = _mm_sub_epi32(lf_, even); + + next_even = _mm_extract_epi32(even, 3); + even_m1 = _mm_bslli_si128(even, 4); + even_m1 = _mm_insert_epi32(even_m1, *prev_even, 0); + + //out[0] + out[2] + odd = _mm_add_epi32(even_m1, even); + odd = _mm_srai_epi32(odd, 1); + odd = _mm_add_epi32(odd, hf1_); + + unpack1 = _mm_unpacklo_epi32(even_m1, odd); + unpack2 = _mm_unpackhi_epi32(even_m1, odd); + + _mm_storeu_si128((__m128i*)(*out_ptr + 0), unpack1); + _mm_storeu_si128((__m128i*)(*out_ptr + 4), unpack2); + + *prev_even = next_even; + + *out_ptr += 8; + *lf_ptr += 4; + *hf_ptr += 4; + } + return batch; +} +#endif + #if !defined(STANDARD_SLOW_VERSION) static void opj_idwt53_h_cas0(OPJ_INT32* tmp, const OPJ_INT32 sn, @@ -364,6 +412,145 @@ static void opj_idwt53_h_cas0(OPJ_INT32* tmp, tmp[len - 1] = in_odd[(len - 1) / 2] + tmp[len - 2]; } #else +#if defined(__AVX512F__) + OPJ_INT32* out_ptr = tmp; + int32_t prev_even = in_even[0] - ((in_odd[0] + 1) >> 1); + + const __m512i permutevar_mask = _mm512_setr_epi32( + 0x10, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, + 0x0c, 0x0d, 0x0e); + const __m512i store1_perm = _mm512_setr_epi64(0x00, 0x01, 0x08, 0x09, 0x02, + 0x03, 0x0a, 0x0b); + const __m512i store2_perm = _mm512_setr_epi64(0x04, 0x05, 0x0c, 0x0d, 0x06, + 0x07, 0x0e, 0x0f); + + const __m512i two = _mm512_set1_epi32(2); + + int32_t simd_batch_512 = (len - 2) / 32; + int32_t leftover; + + for (i = 0; i < simd_batch_512; i++) { + const __m512i lf_avx2 = _mm512_loadu_si512((__m512i*)(in_even + 1)); + const __m512i hf1_avx2 = _mm512_loadu_si512((__m512i*)(in_odd)); + const __m512i hf2_avx2 = _mm512_loadu_si512((__m512i*)(in_odd + 1)); + int32_t next_even; + __m512i duplicate, even_m1, odd, unpack1, unpack2, store1, store2; + + __m512i even = _mm512_add_epi32(hf1_avx2, hf2_avx2); + even = _mm512_add_epi32(even, two); + even = _mm512_srai_epi32(even, 2); + even = _mm512_sub_epi32(lf_avx2, even); + + next_even = _mm_extract_epi32(_mm512_extracti32x4_epi32(even, 3), 3); + + duplicate = _mm512_set1_epi32(prev_even); + even_m1 = _mm512_permutex2var_epi32(even, permutevar_mask, duplicate); + + //out[0] + out[2] + odd = _mm512_add_epi32(even_m1, even); + odd = _mm512_srai_epi32(odd, 1); + odd = _mm512_add_epi32(odd, hf1_avx2); + + unpack1 = _mm512_unpacklo_epi32(even_m1, odd); + unpack2 = _mm512_unpackhi_epi32(even_m1, odd); + + store1 = _mm512_permutex2var_epi64(unpack1, store1_perm, unpack2); + store2 = _mm512_permutex2var_epi64(unpack1, store2_perm, unpack2); + + _mm512_storeu_si512(out_ptr, store1); + _mm512_storeu_si512(out_ptr + 16, store2); + + prev_even = next_even; + + out_ptr += 32; + in_even += 16; + in_odd += 16; + } + + leftover = len - simd_batch_512 * 32; + if (leftover > 8) { + leftover -= 8 * loop_short_sse(leftover, &in_even, &in_odd, &out_ptr, + &prev_even); + } + out_ptr[0] = prev_even; + + for (j = 1; j < (leftover - 2); j += 2) { + out_ptr[2] = in_even[1] - ((in_odd[0] + (in_odd[1]) + 2) >> 2); + out_ptr[1] = in_odd[0] + ((out_ptr[0] + out_ptr[2]) >> 1); + in_even++; + in_odd++; + out_ptr += 2; + } + + if (len & 1) { + out_ptr[2] = in_even[1] - ((in_odd[0] + 1) >> 1); + out_ptr[1] = in_odd[0] + ((out_ptr[0] + out_ptr[2]) >> 1); + } else { //!(len & 1) + out_ptr[1] = in_odd[0] + out_ptr[0]; + } +#elif defined(__AVX2__) + OPJ_INT32* out_ptr = tmp; + int32_t prev_even = in_even[0] - ((in_odd[0] + 1) >> 1); + + const __m256i reg_permutevar_mask_move_right = _mm256_setr_epi32(0x00, 0x00, + 0x01, 0x02, 0x03, 0x04, 0x05, 0x06); + const __m256i two = _mm256_set1_epi32(2); + + int32_t simd_batch = (len - 2) / 16; + int32_t next_even; + __m256i even_m1, odd, unpack1_avx2, unpack2_avx2; + + for (i = 0; i < simd_batch; i++) { + const __m256i lf_avx2 = _mm256_loadu_si256((__m256i*)(in_even + 1)); + const __m256i hf1_avx2 = _mm256_loadu_si256((__m256i*)(in_odd)); + const __m256i hf2_avx2 = _mm256_loadu_si256((__m256i*)(in_odd + 1)); + + __m256i even = _mm256_add_epi32(hf1_avx2, hf2_avx2); + even = _mm256_add_epi32(even, two); + even = _mm256_srai_epi32(even, 2); + even = _mm256_sub_epi32(lf_avx2, even); + + next_even = _mm_extract_epi32(_mm256_extracti128_si256(even, 1), 3); + even_m1 = _mm256_permutevar8x32_epi32(even, reg_permutevar_mask_move_right); + even_m1 = _mm256_blend_epi32(even_m1, _mm256_set1_epi32(prev_even), (1 << 0)); + + //out[0] + out[2] + odd = _mm256_add_epi32(even_m1, even); + odd = _mm256_srai_epi32(odd, 1); + odd = _mm256_add_epi32(odd, hf1_avx2); + + unpack1_avx2 = _mm256_unpacklo_epi32(even_m1, odd); + unpack2_avx2 = _mm256_unpackhi_epi32(even_m1, odd); + + _mm_storeu_si128((__m128i*)(out_ptr + 0), _mm256_castsi256_si128(unpack1_avx2)); + _mm_storeu_si128((__m128i*)(out_ptr + 4), _mm256_castsi256_si128(unpack2_avx2)); + _mm_storeu_si128((__m128i*)(out_ptr + 8), _mm256_extracti128_si256(unpack1_avx2, + 0x1)); + _mm_storeu_si128((__m128i*)(out_ptr + 12), + _mm256_extracti128_si256(unpack2_avx2, 0x1)); + + prev_even = next_even; + + out_ptr += 16; + in_even += 8; + in_odd += 8; + } + out_ptr[0] = prev_even; + for (j = simd_batch * 16 + 1; j < (len - 2); j += 2) { + out_ptr[2] = in_even[1] - ((in_odd[0] + in_odd[1] + 2) >> 2); + out_ptr[1] = in_odd[0] + ((out_ptr[0] + out_ptr[2]) >> 1); + in_even++; + in_odd++; + out_ptr += 2; + } + + if (len & 1) { + out_ptr[2] = in_even[1] - ((in_odd[0] + 1) >> 1); + out_ptr[1] = in_odd[0] + ((out_ptr[0] + out_ptr[2]) >> 1); + } else { //!(len & 1) + out_ptr[1] = in_odd[0] + out_ptr[0]; + } +#else OPJ_INT32 d1c, d1n, s1n, s0c, s0n; assert(len > 1); @@ -397,7 +584,8 @@ static void opj_idwt53_h_cas0(OPJ_INT32* tmp, } else { tmp[len - 1] = d1n + s0n; } -#endif +#endif /*(__AVX512F__ || __AVX2__)*/ +#endif /*TWO_PASS_VERSION*/ memcpy(tiledp, tmp, (OPJ_UINT32)len * sizeof(OPJ_INT32)); } @@ -511,10 +699,20 @@ static void opj_idwt53_h(const opj_dwt_t *dwt, #endif } -#if (defined(__SSE2__) || defined(__AVX2__)) && !defined(STANDARD_SLOW_VERSION) +#if (defined(__SSE2__) || defined(__AVX2__) || defined(__AVX512F__)) && !defined(STANDARD_SLOW_VERSION) /* Conveniency macros to improve the readability of the formulas */ -#if __AVX2__ +#if defined(__AVX512F__) +#define VREG __m512i +#define LOAD_CST(x) _mm512_set1_epi32(x) +#define LOAD(x) _mm512_loadu_si512((const VREG*)(x)) +#define LOADU(x) _mm512_loadu_si512((const VREG*)(x)) +#define STORE(x,y) _mm512_storeu_si512((VREG*)(x),(y)) +#define STOREU(x,y) _mm512_storeu_si512((VREG*)(x),(y)) +#define ADD(x,y) _mm512_add_epi32((x),(y)) +#define SUB(x,y) _mm512_sub_epi32((x),(y)) +#define SAR(x,y) _mm512_srai_epi32((x),(y)) +#elif defined(__AVX2__) #define VREG __m256i #define LOAD_CST(x) _mm256_set1_epi32(x) #define LOAD(x) _mm256_load_si256((const VREG*)(x)) @@ -576,7 +774,10 @@ static void opj_idwt53_v_cas0_mcols_SSE2_OR_AVX2( const VREG two = LOAD_CST(2); assert(len > 1); -#if __AVX2__ +#if defined(__AVX512F__) + assert(PARALLEL_COLS_53 == 32); + assert(VREG_INT_COUNT == 16); +#elif defined(__AVX2__) assert(PARALLEL_COLS_53 == 16); assert(VREG_INT_COUNT == 8); #else @@ -584,10 +785,13 @@ static void opj_idwt53_v_cas0_mcols_SSE2_OR_AVX2( assert(VREG_INT_COUNT == 4); #endif +//For AVX512 code aligned load/store is set to it's unaligned equivalents +#if !defined(__AVX512F__) /* Note: loads of input even/odd values must be done in a unaligned */ /* fashion. But stores in tmp can be done with aligned store, since */ /* the temporary buffer is properly aligned */ assert((OPJ_SIZE_T)tmp % (sizeof(OPJ_INT32) * VREG_INT_COUNT) == 0); +#endif s1n_0 = LOADU(in_even + 0); s1n_1 = LOADU(in_even + VREG_INT_COUNT); @@ -678,7 +882,10 @@ static void opj_idwt53_v_cas1_mcols_SSE2_OR_AVX2( const OPJ_INT32* in_odd = &tiledp_col[0]; assert(len > 2); -#if __AVX2__ +#if defined(__AVX512F__) + assert(PARALLEL_COLS_53 == 32); + assert(VREG_INT_COUNT == 16); +#elif defined(__AVX2__) assert(PARALLEL_COLS_53 == 16); assert(VREG_INT_COUNT == 8); #else @@ -686,10 +893,13 @@ static void opj_idwt53_v_cas1_mcols_SSE2_OR_AVX2( assert(VREG_INT_COUNT == 4); #endif +//For AVX512 code aligned load/store is set to it's unaligned equivalents +#if !defined(__AVX512F__) /* Note: loads of input even/odd values must be done in a unaligned */ /* fashion. But stores in tmp can be done with aligned store, since */ /* the temporary buffer is properly aligned */ assert((OPJ_SIZE_T)tmp % (sizeof(OPJ_INT32) * VREG_INT_COUNT) == 0); +#endif s1_0 = LOADU(in_even + stride); /* in_odd[0] - ((in_even[0] + s1 + 2) >> 2); */ diff --git a/contrib/libs/openjpeg/ht_dec.c b/contrib/libs/openjpeg/ht_dec.c index a554b24a6a2..2984f56098b 100644 --- a/contrib/libs/openjpeg/ht_dec.c +++ b/contrib/libs/openjpeg/ht_dec.c @@ -901,7 +901,7 @@ typedef struct frwd_struct { * X controls this value. * * Unstuffing prevent sequences that are more than 0xFF7F from appearing - * in the conpressed sequence. So whenever a value of 0xFF is coded, the + * in the compressed sequence. So whenever a value of 0xFF is coded, the * MSB of the next byte is set 0 and must be ignored during decoding. * * Reading can go beyond the end of buffer by up to 3 bytes. @@ -1032,7 +1032,7 @@ OPJ_UINT32 frwd_fetch(frwd_struct_t *msp) //************************************************************************/ /** @brief Allocates T1 buffers * - * @param [in, out] t1 is codeblock cofficients storage + * @param [in, out] t1 is codeblock coefficients storage * @param [in] w is codeblock width * @param [in] h is codeblock height */ @@ -1120,7 +1120,7 @@ OPJ_BOOL opj_t1_ht_decode_cblk(opj_t1_t *t1, /** @brief Decodes one codeblock, processing the cleanup, siginificance * propagation, and magnitude refinement pass * - * @param [in, out] t1 is codeblock cofficients storage + * @param [in, out] t1 is codeblock coefficients storage * @param [in] cblk is codeblock properties * @param [in] orient is the subband to which the codeblock belongs (not needed) * @param [in] roishift is region of interest shift diff --git a/contrib/libs/openjpeg/j2k.c b/contrib/libs/openjpeg/j2k.c index c0551870b2b..a2014c89b02 100644 --- a/contrib/libs/openjpeg/j2k.c +++ b/contrib/libs/openjpeg/j2k.c @@ -2484,6 +2484,11 @@ static OPJ_BOOL opj_j2k_read_siz(opj_j2k_t *p_j2k, ++l_current_tile_param; } + /*Allocate and initialize some elements of codestrem index*/ + if (!opj_j2k_allocate_tile_element_cstr_index(p_j2k)) { + return OPJ_FALSE; + } + p_j2k->m_specific_param.m_decoder.m_state = J2K_STATE_MH; opj_image_comp_header_update(l_image, l_cp); @@ -3657,21 +3662,29 @@ static OPJ_BOOL opj_j2k_read_tlm(opj_j2k_t *p_j2k, opj_event_mgr_t * p_manager ) { - OPJ_UINT32 l_Ztlm, l_Stlm, l_ST, l_SP, l_tot_num_tp_remaining, l_quotient, - l_Ptlm_size; + OPJ_UINT32 l_Ztlm, l_Stlm, l_ST, l_SP, + l_Ptlm_size, l_entry_size, l_num_tileparts; + OPJ_UINT32 i; + opj_j2k_tlm_tile_part_info_t* l_tile_part_infos; + opj_j2k_tlm_info_t* l_tlm; + /* preconditions */ assert(p_header_data != 00); assert(p_j2k != 00); assert(p_manager != 00); - OPJ_UNUSED(p_j2k); + l_tlm = &(p_j2k->m_specific_param.m_decoder.m_tlm); if (p_header_size < 2) { - opj_event_msg(p_manager, EVT_ERROR, "Error reading TLM marker\n"); + opj_event_msg(p_manager, EVT_ERROR, "Error reading TLM marker.\n"); return OPJ_FALSE; } p_header_size -= 2; + if (l_tlm->m_is_invalid) { + return OPJ_TRUE; + } + opj_read_bytes(p_header_data, &l_Ztlm, 1); /* Ztlm */ ++p_header_data; @@ -3680,27 +3693,83 @@ static OPJ_BOOL opj_j2k_read_tlm(opj_j2k_t *p_j2k, ++p_header_data; l_ST = ((l_Stlm >> 4) & 0x3); + if (l_ST == 3) { + l_tlm->m_is_invalid = OPJ_TRUE; + opj_event_msg(p_manager, EVT_WARNING, + "opj_j2k_read_tlm(): ST = 3 is invalid.\n"); + return OPJ_TRUE; + } l_SP = (l_Stlm >> 6) & 0x1; l_Ptlm_size = (l_SP + 1) * 2; - l_quotient = l_Ptlm_size + l_ST; + l_entry_size = l_Ptlm_size + l_ST; - l_tot_num_tp_remaining = p_header_size % l_quotient; + if ((p_header_size % l_entry_size) != 0) { + l_tlm->m_is_invalid = OPJ_TRUE; + opj_event_msg(p_manager, EVT_WARNING, + "opj_j2k_read_tlm(): TLM marker not of expected size.\n"); + return OPJ_TRUE; + } - if (l_tot_num_tp_remaining != 0) { - opj_event_msg(p_manager, EVT_ERROR, "Error reading TLM marker\n"); - return OPJ_FALSE; + l_num_tileparts = p_header_size / l_entry_size; + if (l_num_tileparts == 0) { + /* not totally sure if this is valid... */ + return OPJ_TRUE; } - /* FIXME Do not care of this at the moment since only local variables are set here */ - /* - for - (i = 0; i < l_tot_num_tp; ++i) - { - opj_read_bytes(p_header_data,&l_Ttlm_i,l_ST); // Ttlm_i + + /* Highly unlikely, unless there are gazillions of TLM markers */ + if (l_tlm->m_entries_count > UINT32_MAX - l_num_tileparts || + l_tlm->m_entries_count + l_num_tileparts > UINT32_MAX / sizeof( + opj_j2k_tlm_tile_part_info_t)) { + l_tlm->m_is_invalid = OPJ_TRUE; + opj_event_msg(p_manager, EVT_WARNING, + "opj_j2k_read_tlm(): too many TLM markers.\n"); + return OPJ_TRUE; + } + + l_tile_part_infos = (opj_j2k_tlm_tile_part_info_t*)opj_realloc( + l_tlm->m_tile_part_infos, + (l_tlm->m_entries_count + l_num_tileparts) * sizeof( + opj_j2k_tlm_tile_part_info_t)); + if (!l_tile_part_infos) { + l_tlm->m_is_invalid = OPJ_TRUE; + opj_event_msg(p_manager, EVT_WARNING, + "opj_j2k_read_tlm(): cannot allocate m_tile_part_infos.\n"); + return OPJ_TRUE; + } + + l_tlm->m_tile_part_infos = l_tile_part_infos; + + for (i = 0; i < l_num_tileparts; ++ i) { + OPJ_UINT32 l_tile_index; + OPJ_UINT32 l_length; + + /* Read Ttlm_i */ + if (l_ST == 0) { + l_tile_index = l_tlm->m_entries_count; + } else { + opj_read_bytes(p_header_data, &l_tile_index, l_ST); p_header_data += l_ST; - opj_read_bytes(p_header_data,&l_Ptlm_i,l_Ptlm_size); // Ptlm_i - p_header_data += l_Ptlm_size; - }*/ + } + + if (l_tile_index >= p_j2k->m_cp.tw * p_j2k->m_cp.th) { + l_tlm->m_is_invalid = OPJ_TRUE; + opj_event_msg(p_manager, EVT_WARNING, + "opj_j2k_read_tlm(): invalid tile number %d\n", + l_tile_index); + return OPJ_TRUE; + } + + /* Read Ptlm_i */ + opj_read_bytes(p_header_data, &l_length, l_Ptlm_size); + p_header_data += l_Ptlm_size; + + l_tile_part_infos[l_tlm->m_entries_count].m_tile_index = + (OPJ_UINT16)l_tile_index; + l_tile_part_infos[l_tlm->m_entries_count].m_length = l_length; + ++l_tlm->m_entries_count; + } + return OPJ_TRUE; } @@ -4583,14 +4652,26 @@ static OPJ_BOOL opj_j2k_read_sot(opj_j2k_t *p_j2k, } /* Index */ - if (p_j2k->cstr_index) { + { assert(p_j2k->cstr_index->tile_index != 00); p_j2k->cstr_index->tile_index[p_j2k->m_current_tile_number].tileno = p_j2k->m_current_tile_number; p_j2k->cstr_index->tile_index[p_j2k->m_current_tile_number].current_tpsno = l_current_part; - if (l_num_parts != 0) { + if (!p_j2k->m_specific_param.m_decoder.m_tlm.m_is_invalid && + l_num_parts > + p_j2k->cstr_index->tile_index[p_j2k->m_current_tile_number].nb_tps) { + opj_event_msg(p_manager, EVT_WARNING, + "SOT marker for tile %u declares more tile-parts than found in TLM marker.", + p_j2k->m_current_tile_number); + p_j2k->m_specific_param.m_decoder.m_tlm.m_is_invalid = OPJ_TRUE; + } + + if (!p_j2k->m_specific_param.m_decoder.m_tlm.m_is_invalid) { + /* do nothing */ + } else if (l_num_parts != 0) { + p_j2k->cstr_index->tile_index[p_j2k->m_current_tile_number].nb_tps = l_num_parts; p_j2k->cstr_index->tile_index[p_j2k->m_current_tile_number].current_nb_tps = @@ -4661,33 +4742,6 @@ static OPJ_BOOL opj_j2k_read_sot(opj_j2k_t *p_j2k, } - /* FIXME move this onto a separate method to call before reading any SOT, remove part about main_end header, use a index struct inside p_j2k */ - /* if (p_j2k->cstr_info) { - if (l_tcp->first) { - if (tileno == 0) { - p_j2k->cstr_info->main_head_end = p_stream_tell(p_stream) - 13; - } - - p_j2k->cstr_info->tile[tileno].tileno = tileno; - p_j2k->cstr_info->tile[tileno].start_pos = p_stream_tell(p_stream) - 12; - p_j2k->cstr_info->tile[tileno].end_pos = p_j2k->cstr_info->tile[tileno].start_pos + totlen - 1; - p_j2k->cstr_info->tile[tileno].num_tps = numparts; - - if (numparts) { - p_j2k->cstr_info->tile[tileno].tp = (opj_tp_info_t *) opj_malloc(numparts * sizeof(opj_tp_info_t)); - } - else { - p_j2k->cstr_info->tile[tileno].tp = (opj_tp_info_t *) opj_malloc(10 * sizeof(opj_tp_info_t)); // Fixme (10) - } - } - else { - p_j2k->cstr_info->tile[tileno].end_pos += totlen; - } - - p_j2k->cstr_info->tile[tileno].tp[partno].tp_start_pos = p_stream_tell(p_stream) - 12; - p_j2k->cstr_info->tile[tileno].tp[partno].tp_end_pos = - p_j2k->cstr_info->tile[tileno].tp[partno].tp_start_pos + totlen - 1; - }*/ return OPJ_TRUE; } @@ -5023,7 +5077,7 @@ static OPJ_BOOL opj_j2k_read_sod(opj_j2k_t *p_j2k, /* Index */ l_cstr_index = p_j2k->cstr_index; - if (l_cstr_index) { + { OPJ_OFF_T l_current_pos = opj_stream_tell(p_stream) - 2; OPJ_UINT32 l_current_tile_part = @@ -5059,6 +5113,11 @@ static OPJ_BOOL opj_j2k_read_sod(opj_j2k_t *p_j2k, } if (l_current_read_size != p_j2k->m_specific_param.m_decoder.m_sot_length) { + if (l_current_read_size == (OPJ_SIZE_T)(-1)) { + /* Avoid issue of https://github.com/uclouvain/openjpeg/issues/1533 */ + opj_event_msg(p_manager, EVT_ERROR, "Stream too short\n"); + return OPJ_FALSE; + } p_j2k->m_specific_param.m_decoder.m_state = J2K_STATE_NEOC; } else { p_j2k->m_specific_param.m_decoder.m_state = J2K_STATE_TPHSOT; @@ -6705,6 +6764,9 @@ void opj_j2k_decoder_set_strict_mode(opj_j2k_t *j2k, OPJ_BOOL strict) { if (j2k) { j2k->m_cp.strict = strict; + if (strict) { + j2k->m_specific_param.m_decoder.m_nb_tile_parts_correction_checked = 1; + } } } @@ -8251,7 +8313,14 @@ OPJ_BOOL opj_j2k_setup_encoder(opj_j2k_t *p_j2k, tccp->qmfbid = parameters->irreversible ? 0 : 1; tccp->qntsty = parameters->irreversible ? J2K_CCP_QNTSTY_SEQNT : J2K_CCP_QNTSTY_NOQNT; - tccp->numgbits = 2; + + if (OPJ_IS_CINEMA(parameters->rsiz) && + parameters->rsiz == OPJ_PROFILE_CINEMA_2K) { + /* From https://github.com/uclouvain/openjpeg/issues/1340 */ + tccp->numgbits = 1; + } else { + tccp->numgbits = 2; + } if ((OPJ_INT32)i == parameters->roi_compno) { tccp->roishift = parameters->roi_shift; @@ -8390,7 +8459,8 @@ static OPJ_BOOL opj_j2k_add_tlmarker(OPJ_UINT32 tileno, if (type == J2K_MS_SOT) { OPJ_UINT32 l_current_tile_part = cstr_index->tile_index[tileno].current_tpsno; - if (cstr_index->tile_index[tileno].tp_index) { + if (cstr_index->tile_index[tileno].tp_index && + l_current_tile_part < cstr_index->tile_index[tileno].nb_tps) { cstr_index->tile_index[tileno].tp_index[l_current_tile_part].start_pos = pos; } @@ -8467,13 +8537,6 @@ OPJ_BOOL opj_j2k_read_header(opj_stream_private_t *p_stream, /* Copy codestream image information to the output image */ opj_copy_image_header(p_j2k->m_private_image, *p_image); - /*Allocate and initialize some elements of codestrem index*/ - if (!opj_j2k_allocate_tile_element_cstr_index(p_j2k)) { - opj_image_destroy(*p_image); - *p_image = NULL; - return OPJ_FALSE; - } - return OPJ_TRUE; } @@ -8825,6 +8888,87 @@ static OPJ_BOOL opj_j2k_decoding_validation(opj_j2k_t *p_j2k, return l_is_valid; } +/** Fill p_j2k->cstr_index->tp_index[].start_pos/end_pos fields from TLM marker segments */ +static void opj_j2k_build_tp_index_from_tlm(opj_j2k_t* p_j2k, + opj_event_mgr_t * p_manager) +{ + opj_j2k_tlm_info_t* l_tlm; + OPJ_UINT32 i; + OPJ_OFF_T l_cur_offset; + + assert(p_j2k->cstr_index->main_head_end > 0); + assert(p_j2k->cstr_index->nb_of_tiles > 0); + assert(p_j2k->cstr_index->tile_index != NULL); + + l_tlm = &(p_j2k->m_specific_param.m_decoder.m_tlm); + + if (l_tlm->m_entries_count == 0) { + l_tlm->m_is_invalid = OPJ_TRUE; + return; + } + + if (l_tlm->m_is_invalid) { + return; + } + + /* Initial pass to count the number of tile-parts per tile */ + for (i = 0; i < l_tlm->m_entries_count; ++i) { + OPJ_UINT32 l_tile_index_no = l_tlm->m_tile_part_infos[i].m_tile_index; + assert(l_tile_index_no < p_j2k->cstr_index->nb_of_tiles); + p_j2k->cstr_index->tile_index[l_tile_index_no].tileno = l_tile_index_no; + ++p_j2k->cstr_index->tile_index[l_tile_index_no].current_nb_tps; + } + + /* Now check that all tiles have at least one tile-part */ + for (i = 0; i < p_j2k->cstr_index->nb_of_tiles; ++i) { + if (p_j2k->cstr_index->tile_index[i].current_nb_tps == 0) { + opj_event_msg(p_manager, EVT_ERROR, + "opj_j2k_build_tp_index_from_tlm(): tile %d has no " + "registered tile-part in TLM marker segments.\n", i); + goto error; + } + } + + /* Final pass to fill p_j2k->cstr_index */ + l_cur_offset = p_j2k->cstr_index->main_head_end; + for (i = 0; i < l_tlm->m_entries_count; ++i) { + OPJ_UINT32 l_tile_index_no = l_tlm->m_tile_part_infos[i].m_tile_index; + opj_tile_index_t* l_tile_index = & + (p_j2k->cstr_index->tile_index[l_tile_index_no]); + if (!l_tile_index->tp_index) { + l_tile_index->tp_index = (opj_tp_index_t *) opj_calloc( + l_tile_index->current_nb_tps, sizeof(opj_tp_index_t)); + if (! l_tile_index->tp_index) { + opj_event_msg(p_manager, EVT_ERROR, + "opj_j2k_build_tp_index_from_tlm(): tile index allocation failed\n"); + goto error; + } + } + + assert(l_tile_index->nb_tps < l_tile_index->current_nb_tps); + l_tile_index->tp_index[l_tile_index->nb_tps].start_pos = l_cur_offset; + /* We don't know how to set the tp_index[].end_header field, but this is not really needed */ + /* If there would be no markers between SOT and SOD, that would be : */ + /* l_tile_index->tp_index[l_tile_index->nb_tps].end_header = l_cur_offset + 12; */ + l_tile_index->tp_index[l_tile_index->nb_tps].end_pos = l_cur_offset + + l_tlm->m_tile_part_infos[i].m_length; + ++l_tile_index->nb_tps; + + l_cur_offset += l_tlm->m_tile_part_infos[i].m_length; + } + + return; + +error: + l_tlm->m_is_invalid = OPJ_TRUE; + for (i = 0; i < l_tlm->m_entries_count; ++i) { + OPJ_UINT32 l_tile_index = l_tlm->m_tile_part_infos[i].m_tile_index; + p_j2k->cstr_index->tile_index[l_tile_index].current_nb_tps = 0; + opj_free(p_j2k->cstr_index->tile_index[l_tile_index].tp_index); + p_j2k->cstr_index->tile_index[l_tile_index].tp_index = NULL; + } +} + static OPJ_BOOL opj_j2k_read_header_procedure(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t * p_manager) @@ -9004,6 +9148,9 @@ static OPJ_BOOL opj_j2k_read_header_procedure(opj_j2k_t *p_j2k, /* Position of the last element if the main header */ p_j2k->cstr_index->main_head_end = (OPJ_UINT32) opj_stream_tell(p_stream) - 2; + /* Build tile-part index from TLM information */ + opj_j2k_build_tp_index_from_tlm(p_j2k, p_manager); + /* Next step: read a tile-part header */ p_j2k->m_specific_param.m_decoder.m_state = J2K_STATE_TPHSOT; @@ -9227,6 +9374,12 @@ void opj_j2k_destroy(opj_j2k_t *p_j2k) p_j2k->m_specific_param.m_decoder.m_comps_indices_to_decode = 00; p_j2k->m_specific_param.m_decoder.m_numcomps_to_decode = 0; + opj_free(p_j2k->m_specific_param.m_decoder.m_tlm.m_tile_part_infos); + p_j2k->m_specific_param.m_decoder.m_tlm.m_tile_part_infos = NULL; + + opj_free(p_j2k->m_specific_param.m_decoder.m_intersecting_tile_parts_offset); + p_j2k->m_specific_param.m_decoder.m_intersecting_tile_parts_offset = NULL; + } else { if (p_j2k->m_specific_param.m_encoder.m_encoded_tile_data) { @@ -9577,6 +9730,39 @@ OPJ_BOOL opj_j2k_read_tile_header(opj_j2k_t * p_j2k, while ((!p_j2k->m_specific_param.m_decoder.m_can_decode) && (l_current_marker != J2K_MS_EOC)) { + if (p_j2k->m_specific_param.m_decoder.m_num_intersecting_tile_parts > 0 && + p_j2k->m_specific_param.m_decoder.m_idx_intersecting_tile_parts < + p_j2k->m_specific_param.m_decoder.m_num_intersecting_tile_parts) { + OPJ_OFF_T next_tp_sot_pos; + + next_tp_sot_pos = + p_j2k->m_specific_param.m_decoder.m_intersecting_tile_parts_offset[p_j2k->m_specific_param.m_decoder.m_idx_intersecting_tile_parts]; + ++p_j2k->m_specific_param.m_decoder.m_idx_intersecting_tile_parts; + if (!(opj_stream_read_seek(p_stream, + next_tp_sot_pos, + p_manager))) { + opj_event_msg(p_manager, EVT_ERROR, "Problem with seek function\n"); + return OPJ_FALSE; + } + + /* Try to read 2 bytes (the marker ID) from stream and copy them into the buffer */ + if (opj_stream_read_data(p_stream, + p_j2k->m_specific_param.m_decoder.m_header_data, 2, p_manager) != 2) { + opj_event_msg(p_manager, EVT_ERROR, "Stream too short\n"); + return OPJ_FALSE; + } + + /* Read 2 bytes from the buffer as the marker ID */ + opj_read_bytes(p_j2k->m_specific_param.m_decoder.m_header_data, + &l_current_marker, + 2); + + if (l_current_marker != J2K_MS_SOT) { + opj_event_msg(p_manager, EVT_ERROR, "Did not get expected SOT marker\n"); + return OPJ_FALSE; + } + } + /* Try to read until the Start Of Data is detected */ while (l_current_marker != J2K_MS_SOD) { @@ -9610,7 +9796,13 @@ OPJ_BOOL opj_j2k_read_tile_header(opj_j2k_t * p_j2k, } /* Why this condition? FIXME */ - if (p_j2k->m_specific_param.m_decoder.m_state & J2K_STATE_TPH) { + if ((p_j2k->m_specific_param.m_decoder.m_state & J2K_STATE_TPH) && + p_j2k->m_specific_param.m_decoder.m_sot_length != 0) { + if (p_j2k->m_specific_param.m_decoder.m_sot_length < l_marker_size + 2) { + opj_event_msg(p_manager, EVT_ERROR, + "Sot length is less than marker size + marker ID\n"); + return OPJ_FALSE; + } p_j2k->m_specific_param.m_decoder.m_sot_length -= (l_marker_size + 2); } l_marker_size -= 2; /* Subtract the size of the marker ID already read */ @@ -9720,14 +9912,78 @@ OPJ_BOOL opj_j2k_read_tile_header(opj_j2k_t * p_j2k, if (! opj_j2k_read_sod(p_j2k, p_stream, p_manager)) { return OPJ_FALSE; } + + /* Check if we can use the TLM index to access the next tile-part */ + if (!p_j2k->m_specific_param.m_decoder.m_can_decode && + p_j2k->m_specific_param.m_decoder.m_tile_ind_to_dec >= 0 && + p_j2k->m_current_tile_number == (OPJ_UINT32) + p_j2k->m_specific_param.m_decoder.m_tile_ind_to_dec && + !p_j2k->m_specific_param.m_decoder.m_tlm.m_is_invalid && + opj_stream_has_seek(p_stream)) { + l_tcp = p_j2k->m_cp.tcps + p_j2k->m_current_tile_number; + if (l_tcp->m_nb_tile_parts == + p_j2k->cstr_index->tile_index[p_j2k->m_current_tile_number].nb_tps && + (OPJ_UINT32)l_tcp->m_current_tile_part_number + 1 < l_tcp->m_nb_tile_parts) { + const OPJ_OFF_T next_tp_sot_pos = p_j2k->cstr_index->tile_index[ + p_j2k->m_current_tile_number].tp_index[l_tcp->m_current_tile_part_number + + 1].start_pos; + + if (next_tp_sot_pos != opj_stream_tell(p_stream)) { +#if 0 + opj_event_msg(p_manager, EVT_INFO, + "opj_j2k_read_tile_header(tile=%u): seek to tile part %u at %" PRId64 "\n", + p_j2k->m_current_tile_number, + l_tcp->m_current_tile_part_number + 1, + next_tp_sot_pos); +#endif + + if (!(opj_stream_read_seek(p_stream, + next_tp_sot_pos, + p_manager))) { + opj_event_msg(p_manager, EVT_ERROR, "Problem with seek function\n"); + return OPJ_FALSE; + } + } + + /* Try to read 2 bytes (the marker ID) from stream and copy them into the buffer */ + if (opj_stream_read_data(p_stream, + p_j2k->m_specific_param.m_decoder.m_header_data, 2, p_manager) != 2) { + opj_event_msg(p_manager, EVT_ERROR, "Stream too short\n"); + return OPJ_FALSE; + } + + /* Read 2 bytes from the buffer as the marker ID */ + opj_read_bytes(p_j2k->m_specific_param.m_decoder.m_header_data, + &l_current_marker, + 2); + + if (l_current_marker != J2K_MS_SOT) { + opj_event_msg(p_manager, EVT_ERROR, "Did not get expected SOT marker\n"); + return OPJ_FALSE; + } + + continue; + } + } + if (p_j2k->m_specific_param.m_decoder.m_can_decode && !p_j2k->m_specific_param.m_decoder.m_nb_tile_parts_correction_checked) { /* Issue 254 */ - OPJ_BOOL l_correction_needed; + OPJ_BOOL l_correction_needed = OPJ_FALSE; p_j2k->m_specific_param.m_decoder.m_nb_tile_parts_correction_checked = 1; - if (!opj_j2k_need_nb_tile_parts_correction(p_stream, - p_j2k->m_current_tile_number, &l_correction_needed, p_manager)) { + if (p_j2k->m_cp.tcps[p_j2k->m_current_tile_number].m_nb_tile_parts == 1) { + /* Skip opj_j2k_need_nb_tile_parts_correction() if there is + * only a single tile part declared. The + * opj_j2k_need_nb_tile_parts_correction() hack was needed + * for files with 5 declared tileparts (where they were + * actually 6). + * Doing it systematically hurts performance when reading + * Sentinel2 L1C JPEG2000 files as explained in + * https://lists.osgeo.org/pipermail/gdal-dev/2024-November/059805.html + */ + } else if (!opj_j2k_need_nb_tile_parts_correction(p_stream, + p_j2k->m_current_tile_number, &l_correction_needed, p_manager)) { opj_event_msg(p_manager, EVT_ERROR, "opj_j2k_apply_nb_tile_parts_correction error\n"); return OPJ_FALSE; @@ -11303,6 +11559,17 @@ static void opj_j2k_dump_MH_index(opj_j2k_t* p_j2k, FILE* out_stream) OPJ_UINT32 l_acc_nb_of_tile_part = 0; for (it_tile = 0; it_tile < cstr_index->nb_of_tiles ; it_tile++) { l_acc_nb_of_tile_part += cstr_index->tile_index[it_tile].nb_tps; + + /* To avoid regenerating expected opj_dump results from the test */ + /* suite when there is a TLM marker present */ + if (cstr_index->tile_index[it_tile].nb_tps && + cstr_index->tile_index[it_tile].tp_index && + cstr_index->tile_index[it_tile].tp_index[0].start_pos > 0 && + cstr_index->tile_index[it_tile].tp_index[0].end_header == 0 && + getenv("OJP_DO_NOT_DISPLAY_TILE_INDEX_IF_TLM") != NULL) { + l_acc_nb_of_tile_part = 0; + break; + } } if (l_acc_nb_of_tile_part) { @@ -11666,6 +11933,18 @@ static OPJ_BOOL opj_j2k_are_all_used_components_decoded(opj_j2k_t *p_j2k, return OPJ_TRUE; } +static int CompareOffT(const void* a, const void* b) +{ + const OPJ_OFF_T offA = *(const OPJ_OFF_T*)a; + const OPJ_OFF_T offB = *(const OPJ_OFF_T*)b; + if (offA < offB) { + return -1; + } + if (offA == offB) { + return 0; + } + return 1; +} static OPJ_BOOL opj_j2k_decode_tiles(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, @@ -11676,6 +11955,7 @@ static OPJ_BOOL opj_j2k_decode_tiles(opj_j2k_t *p_j2k, OPJ_INT32 l_tile_x0, l_tile_y0, l_tile_x1, l_tile_y1; OPJ_UINT32 l_nb_comps; OPJ_UINT32 nr_tiles = 0; + OPJ_OFF_T end_pos = 0; /* Particular case for whole single tile decoding */ /* We can avoid allocating intermediate tile buffers */ @@ -11698,8 +11978,9 @@ static OPJ_BOOL opj_j2k_decode_tiles(opj_j2k_t *p_j2k, return OPJ_FALSE; } - if (! opj_j2k_decode_tile(p_j2k, l_current_tile_no, NULL, 0, - p_stream, p_manager)) { + if (!l_go_on || + ! opj_j2k_decode_tile(p_j2k, l_current_tile_no, NULL, 0, + p_stream, p_manager)) { opj_event_msg(p_manager, EVT_ERROR, "Failed to decode tile 1/1\n"); return OPJ_FALSE; } @@ -11717,6 +11998,77 @@ static OPJ_BOOL opj_j2k_decode_tiles(opj_j2k_t *p_j2k, return OPJ_TRUE; } + p_j2k->m_specific_param.m_decoder.m_num_intersecting_tile_parts = 0; + p_j2k->m_specific_param.m_decoder.m_idx_intersecting_tile_parts = 0; + opj_free(p_j2k->m_specific_param.m_decoder.m_intersecting_tile_parts_offset); + p_j2k->m_specific_param.m_decoder.m_intersecting_tile_parts_offset = NULL; + + /* If the area to decode only intersects a subset of tiles, and we have + * valid TLM information, then use it to plan the tilepart offsets to + * seek to. + */ + if (!(p_j2k->m_specific_param.m_decoder.m_start_tile_x == 0 && + p_j2k->m_specific_param.m_decoder.m_start_tile_y == 0 && + p_j2k->m_specific_param.m_decoder.m_end_tile_x == p_j2k->m_cp.tw && + p_j2k->m_specific_param.m_decoder.m_end_tile_y == p_j2k->m_cp.th) && + !p_j2k->m_specific_param.m_decoder.m_tlm.m_is_invalid && + opj_stream_has_seek(p_stream)) { + OPJ_UINT32 m_num_intersecting_tile_parts = 0; + + OPJ_UINT32 j; + for (j = 0; j < p_j2k->m_cp.tw * p_j2k->m_cp.th; ++j) { + if (p_j2k->cstr_index->tile_index[j].nb_tps > 0 && + p_j2k->cstr_index->tile_index[j].tp_index[ + p_j2k->cstr_index->tile_index[j].nb_tps - 1].end_pos > end_pos) { + end_pos = p_j2k->cstr_index->tile_index[j].tp_index[ + p_j2k->cstr_index->tile_index[j].nb_tps - 1].end_pos; + } + } + + for (j = p_j2k->m_specific_param.m_decoder.m_start_tile_y; + j < p_j2k->m_specific_param.m_decoder.m_end_tile_y; ++j) { + OPJ_UINT32 i; + for (i = p_j2k->m_specific_param.m_decoder.m_start_tile_x; + i < p_j2k->m_specific_param.m_decoder.m_end_tile_x; ++i) { + const OPJ_UINT32 tile_number = j * p_j2k->m_cp.tw + i; + m_num_intersecting_tile_parts += + p_j2k->cstr_index->tile_index[tile_number].nb_tps; + } + } + + p_j2k->m_specific_param.m_decoder.m_intersecting_tile_parts_offset = + (OPJ_OFF_T*) + opj_malloc(m_num_intersecting_tile_parts * sizeof(OPJ_OFF_T)); + if (m_num_intersecting_tile_parts > 0 && + p_j2k->m_specific_param.m_decoder.m_intersecting_tile_parts_offset) { + OPJ_UINT32 idx = 0; + for (j = p_j2k->m_specific_param.m_decoder.m_start_tile_y; + j < p_j2k->m_specific_param.m_decoder.m_end_tile_y; ++j) { + OPJ_UINT32 i; + for (i = p_j2k->m_specific_param.m_decoder.m_start_tile_x; + i < p_j2k->m_specific_param.m_decoder.m_end_tile_x; ++i) { + const OPJ_UINT32 tile_number = j * p_j2k->m_cp.tw + i; + OPJ_UINT32 k; + for (k = 0; k < p_j2k->cstr_index->tile_index[tile_number].nb_tps; ++k) { + const OPJ_OFF_T next_tp_sot_pos = + p_j2k->cstr_index->tile_index[tile_number].tp_index[k].start_pos; + p_j2k->m_specific_param.m_decoder.m_intersecting_tile_parts_offset[idx] = + next_tp_sot_pos; + ++idx; + } + } + } + + p_j2k->m_specific_param.m_decoder.m_num_intersecting_tile_parts = idx; + + /* Sort by increasing offset */ + qsort(p_j2k->m_specific_param.m_decoder.m_intersecting_tile_parts_offset, + p_j2k->m_specific_param.m_decoder.m_num_intersecting_tile_parts, + sizeof(OPJ_OFF_T), + CompareOffT); + } + } + for (;;) { if (p_j2k->m_cp.tw == 1 && p_j2k->m_cp.th == 1 && p_j2k->m_cp.tcps[0].m_data != NULL) { @@ -11776,6 +12128,12 @@ static OPJ_BOOL opj_j2k_decode_tiles(opj_j2k_t *p_j2k, if (++nr_tiles == p_j2k->m_cp.th * p_j2k->m_cp.tw) { break; } + if (p_j2k->m_specific_param.m_decoder.m_num_intersecting_tile_parts > 0 && + p_j2k->m_specific_param.m_decoder.m_idx_intersecting_tile_parts == + p_j2k->m_specific_param.m_decoder.m_num_intersecting_tile_parts) { + opj_stream_seek(p_stream, end_pos + 2, p_manager); + break; + } } if (! opj_j2k_are_all_used_components_decoded(p_j2k, p_manager)) { @@ -11819,12 +12177,6 @@ static OPJ_BOOL opj_j2k_decode_one_tile(opj_j2k_t *p_j2k, OPJ_UINT32 l_nb_tiles; OPJ_UINT32 i; - /*Allocate and initialize some elements of codestrem index if not already done*/ - if (!p_j2k->cstr_index->tile_index) { - if (!opj_j2k_allocate_tile_element_cstr_index(p_j2k)) { - return OPJ_FALSE; - } - } /* Move into the codestream to the first SOT used to decode the desired tile */ l_tile_no_to_dec = (OPJ_UINT32) p_j2k->m_specific_param.m_decoder.m_tile_ind_to_dec; @@ -11839,12 +12191,38 @@ static OPJ_BOOL opj_j2k_decode_one_tile(opj_j2k_t *p_j2k, return OPJ_FALSE; } } else { + OPJ_OFF_T sot_pos = + p_j2k->cstr_index->tile_index[l_tile_no_to_dec].tp_index[0].start_pos; + OPJ_UINT32 l_marker; + +#if 0 + opj_event_msg(p_manager, EVT_INFO, + "opj_j2k_decode_one_tile(%u): seek to %" PRId64 "\n", + l_tile_no_to_dec, + sot_pos); +#endif if (!(opj_stream_read_seek(p_stream, - p_j2k->cstr_index->tile_index[l_tile_no_to_dec].tp_index[0].start_pos + 2, + sot_pos, p_manager))) { opj_event_msg(p_manager, EVT_ERROR, "Problem with seek function\n"); return OPJ_FALSE; } + + /* Try to read 2 bytes (the marker ID) from stream and copy them into the buffer */ + if (opj_stream_read_data(p_stream, + p_j2k->m_specific_param.m_decoder.m_header_data, 2, p_manager) != 2) { + opj_event_msg(p_manager, EVT_ERROR, "Stream too short\n"); + return OPJ_FALSE; + } + + /* Read 2 bytes from the buffer as the marker ID */ + opj_read_bytes(p_j2k->m_specific_param.m_decoder.m_header_data, &l_marker, + 2); + + if (l_marker != J2K_MS_SOT) { + opj_event_msg(p_manager, EVT_ERROR, "Did not get expected SOT marker\n"); + return OPJ_FALSE; + } } /* Special case if we have previously read the EOC marker (if the previous tile getted is the last ) */ if (p_j2k->m_specific_param.m_decoder.m_state == J2K_STATE_EOC) { diff --git a/contrib/libs/openjpeg/j2k.h b/contrib/libs/openjpeg/j2k.h index e0b9688a353..bcf70a419c6 100644 --- a/contrib/libs/openjpeg/j2k.h +++ b/contrib/libs/openjpeg/j2k.h @@ -466,6 +466,24 @@ typedef struct opj_cp { /* <<UniPG */ } opj_cp_t; +/** Entry of a TLM marker segment */ +typedef struct opj_j2k_tlm_tile_part_info { + /** Tile index of the tile part. Ttlmi field */ + OPJ_UINT16 m_tile_index; + /** Length in bytes, from the beginning of the SOT marker to the end of + * the bit stream data for that tile-part. Ptlmi field */ + OPJ_UINT32 m_length; +} opj_j2k_tlm_tile_part_info_t; + +/** Information got from the concatenation of TLM marker semgnets. */ +typedef struct opj_j2k_tlm_info { + /** Number of entries in m_tile_part_infos. */ + OPJ_UINT32 m_entries_count; + /** Array of m_entries_count values. */ + opj_j2k_tlm_tile_part_info_t* m_tile_part_infos; + + OPJ_BOOL m_is_invalid; +} opj_j2k_tlm_info_t; typedef struct opj_j2k_dec { /** locate in which part of the codestream the decoder is (main header, tile header, end) */ @@ -499,6 +517,18 @@ typedef struct opj_j2k_dec { OPJ_UINT32 m_numcomps_to_decode; OPJ_UINT32 *m_comps_indices_to_decode; + opj_j2k_tlm_info_t m_tlm; + + /** Below if used when there's TLM information available and we use + * opj_set_decoded_area() to a subset of all tiles. + */ + /* Current index in m_intersecting_tile_parts_offset[] to seek to */ + OPJ_UINT32 m_idx_intersecting_tile_parts; + /* Number of elements of m_intersecting_tile_parts_offset[] */ + OPJ_UINT32 m_num_intersecting_tile_parts; + /* Start offset of contributing tile parts */ + OPJ_OFF_T* m_intersecting_tile_parts_offset; + /** to tell that a tile can be decoded. */ OPJ_BITFIELD m_can_decode : 1; OPJ_BITFIELD m_discard_tiles : 1; diff --git a/contrib/libs/openjpeg/jp2.c b/contrib/libs/openjpeg/jp2.c index 6015190e1f5..4df055a542a 100644 --- a/contrib/libs/openjpeg/jp2.c +++ b/contrib/libs/openjpeg/jp2.c @@ -1989,12 +1989,16 @@ OPJ_BOOL opj_jp2_setup_encoder(opj_jp2_t *jp2, jp2->enumcs = 0; } else { jp2->meth = 1; - if (image->color_space == 1) { + if (image->color_space == OPJ_CLRSPC_SRGB) { jp2->enumcs = 16; /* sRGB as defined by IEC 61966-2-1 */ - } else if (image->color_space == 2) { - jp2->enumcs = 17; /* greyscale */ - } else if (image->color_space == 3) { + } else if (image->color_space == OPJ_CLRSPC_GRAY) { + jp2->enumcs = 17; + } else if (image->color_space == OPJ_CLRSPC_SYCC) { jp2->enumcs = 18; /* YUV */ + } else if (image->color_space == OPJ_CLRSPC_EYCC) { + jp2->enumcs = 24; + } else if (image->color_space == OPJ_CLRSPC_CMYK) { + jp2->enumcs = 12; } } diff --git a/contrib/libs/openjpeg/openjpeg.h b/contrib/libs/openjpeg/openjpeg.h index 67d168bb578..59abd323aed 100644 --- a/contrib/libs/openjpeg/openjpeg.h +++ b/contrib/libs/openjpeg/openjpeg.h @@ -546,7 +546,7 @@ typedef struct opj_cparameters { } opj_cparameters_t; #define OPJ_DPARAMETERS_IGNORE_PCLR_CMAP_CDEF_FLAG 0x0001 -#define OPJ_DPARAMETERS_DUMP_FLAG 0x0002 +#define OPJ_DPARAMETERS_DUMP_FLAG 0x0002 /** * Decompression parameters @@ -772,7 +772,7 @@ typedef struct opj_packet_info { OPJ_OFF_T end_ph_pos; /** packet end position */ OPJ_OFF_T end_pos; - /** packet distorsion */ + /** packet distortion */ double disto; } opj_packet_info_t; @@ -1348,9 +1348,13 @@ OPJ_API OPJ_BOOL OPJ_CALLCONV opj_setup_decoder(opj_codec_t *p_codec, opj_dparameters_t *parameters); /** - * Set strict decoding parameter for this decoder. If strict decoding is enabled, partial bit - * streams will fail to decode. If strict decoding is disabled, the decoder will decode partial - * bitstreams as much as possible without erroring + * Set strict decoding parameter for this decoder. + * If strict decoding is enabled, partial bit streams will fail to decode, and + * the check for invalid TPSOT values added in https://github.com/uclouvain/openjpeg/pull/514 + * will be disabled. + * If strict decoding is disabled, the decoder will decode partial + * bitstreams as much as possible without erroring, and the TPSOT fixing logic + * will be enabled. * * @param p_codec decompressor handler * @param strict OPJ_TRUE to enable strict decoding, OPJ_FALSE to disable diff --git a/contrib/libs/openjpeg/opj_common.h b/contrib/libs/openjpeg/opj_common.h index ee8adf4725c..2923a35b7fe 100644 --- a/contrib/libs/openjpeg/opj_common.h +++ b/contrib/libs/openjpeg/opj_common.h @@ -28,8 +28,8 @@ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ -#ifndef OPJ_COMMMON_H -#define OPJ_COMMMON_H +#ifndef OPJ_COMMON_H +#define OPJ_COMMON_H /* ========================================================== @@ -44,4 +44,4 @@ #define OPJ_COMP_PARAM_DEFAULT_PROG_ORDER OPJ_LRCP #define OPJ_COMP_PARAM_DEFAULT_NUMRESOLUTION 6 -#endif /* OPJ_COMMMON_H */ +#endif /* OPJ_COMMON_H */ diff --git a/contrib/libs/openjpeg/opj_config.h b/contrib/libs/openjpeg/opj_config.h index e495440f4fb..50d156357da 100644 --- a/contrib/libs/openjpeg/opj_config.h +++ b/contrib/libs/openjpeg/opj_config.h @@ -9,6 +9,6 @@ /* Version number. */ #define OPJ_VERSION_MAJOR 2 #define OPJ_VERSION_MINOR 5 -#define OPJ_VERSION_BUILD 2 +#define OPJ_VERSION_BUILD 3 #endif diff --git a/contrib/libs/openjpeg/opj_config_private-linux.h b/contrib/libs/openjpeg/opj_config_private-linux.h index 81a15df7f27..8076e7d32a6 100644 --- a/contrib/libs/openjpeg/opj_config_private-linux.h +++ b/contrib/libs/openjpeg/opj_config_private-linux.h @@ -1,6 +1,6 @@ /* create opj_config_private.h for CMake */ -#define OPJ_PACKAGE_VERSION "2.5.2" +#define OPJ_PACKAGE_VERSION "2.5.3" /* Not used by openjp2*/ /*#define HAVE_MEMORY_H 1*/ diff --git a/contrib/libs/openjpeg/t1.c b/contrib/libs/openjpeg/t1.c index 52e466eb974..98dce47f556 100644 --- a/contrib/libs/openjpeg/t1.c +++ b/contrib/libs/openjpeg/t1.c @@ -47,6 +47,9 @@ #ifdef __SSE2__ #include <emmintrin.h> #endif +#if (defined(__AVX2__) || defined(__AVX512F__)) +#include <immintrin.h> +#endif #if defined(__GNUC__) #pragma GCC poison malloc calloc realloc free @@ -1796,6 +1799,39 @@ static void opj_t1_clbl_decode_processor(void* user_data, opj_tls_t* tls) OPJ_INT32* OPJ_RESTRICT tiledp = &tilec->data[(OPJ_SIZE_T)y * tile_w + (OPJ_SIZE_T)x]; for (j = 0; j < cblk_h; ++j) { + //positive -> round down aka. (83)/2 = 41.5 -> 41 + //negative -> round up aka. (-83)/2 = -41.5 -> -41 +#if defined(__AVX512F__) + OPJ_INT32* ptr_in = datap + (j * cblk_w); + OPJ_INT32* ptr_out = tiledp + (j * (OPJ_SIZE_T)tile_w); + for (i = 0; i < cblk_w / 16; ++i) { + __m512i in_avx = _mm512_loadu_si512((__m512i*)(ptr_in)); + const __m512i add_avx = _mm512_srli_epi32(in_avx, 31); + in_avx = _mm512_add_epi32(in_avx, add_avx); + _mm512_storeu_si512((__m512i*)(ptr_out), _mm512_srai_epi32(in_avx, 1)); + ptr_in += 16; + ptr_out += 16; + } + + for (i = 0; i < cblk_w % 16; ++i) { + ptr_out[i] = ptr_in[i] / 2; + } +#elif defined(__AVX2__) + OPJ_INT32* ptr_in = datap + (j * cblk_w); + OPJ_INT32* ptr_out = tiledp + (j * (OPJ_SIZE_T)tile_w); + for (i = 0; i < cblk_w / 8; ++i) { + __m256i in_avx = _mm256_loadu_si256((__m256i*)(ptr_in)); + const __m256i add_avx = _mm256_srli_epi32(in_avx, 31); + in_avx = _mm256_add_epi32(in_avx, add_avx); + _mm256_storeu_si256((__m256i*)(ptr_out), _mm256_srai_epi32(in_avx, 1)); + ptr_in += 8; + ptr_out += 8; + } + + for (i = 0; i < cblk_w % 8; ++i) { + ptr_out[i] = ptr_in[i] / 2; + } +#else i = 0; for (; i < (cblk_w & ~(OPJ_UINT32)3U); i += 4U) { OPJ_INT32 tmp0 = datap[(j * cblk_w) + i + 0U]; @@ -1811,6 +1847,7 @@ static void opj_t1_clbl_decode_processor(void* user_data, opj_tls_t* tls) OPJ_INT32 tmp = datap[(j * cblk_w) + i]; ((OPJ_INT32*)tiledp)[(j * (OPJ_SIZE_T)tile_w) + i] = tmp / 2; } +#endif } } else { /* if (tccp->qmfbid == 0) */ const float stepsize = 0.5f * band->stepsize; @@ -2006,10 +2043,16 @@ static OPJ_BOOL opj_t1_decode_cblk(opj_t1_t *t1, opj_mqc_setstate(mqc, T1_CTXNO_AGG, 0, 3); opj_mqc_setstate(mqc, T1_CTXNO_ZC, 0, 4); + if (cblk->corrupted) { + assert(cblk->numchunks == 0); + return OPJ_TRUE; + } + /* Even if we have a single chunk, in multi-threaded decoding */ /* the insertion of our synthetic marker might potentially override */ /* valid codestream of other codeblocks decoded in parallel. */ - if (cblk->numchunks > 1 || t1->mustuse_cblkdatabuffer) { + if (cblk->numchunks > 1 || (t1->mustuse_cblkdatabuffer && + cblk->numchunks > 0)) { OPJ_UINT32 i; OPJ_UINT32 cblk_len; @@ -2124,7 +2167,7 @@ static OPJ_BOOL opj_t1_decode_cblk(opj_t1_t *t1, opj_mutex_lock(p_manager_mutex); } opj_event_msg(p_manager, EVT_WARNING, - "PTERM check failure: %d synthetized 0xFF markers read\n", + "PTERM check failure: %d synthesized 0xFF markers read\n", mqc->end_of_byte_stream_counter); if (p_manager_mutex) { opj_mutex_unlock(p_manager_mutex); @@ -2227,6 +2270,111 @@ static void opj_t1_cblk_encode_processor(void* user_data, opj_tls_t* tls) OPJ_UINT32* OPJ_RESTRICT t1data = (OPJ_UINT32*) t1->data; /* Change from "natural" order to "zigzag" order of T1 passes */ for (j = 0; j < (cblk_h & ~3U); j += 4) { +#if defined(__AVX512F__) + const __m512i perm1 = _mm512_setr_epi64(2, 3, 10, 11, 4, 5, 12, 13); + const __m512i perm2 = _mm512_setr_epi64(6, 7, 14, 15, 0, 0, 0, 0); + OPJ_UINT32* ptr = tiledp_u; + for (i = 0; i < cblk_w / 16; ++i) { + // INPUT OUTPUT + // 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 00 10 20 30 01 11 21 31 02 12 22 32 03 13 23 33 + // 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 04 14 24 34 05 15 25 35 06 16 26 36 07 17 27 37 + // 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 08 18 28 38 09 19 29 39 0A 1A 2A 3A 0B 1B 2B 3B + // 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 0C 1C 2C 3C 0D 1D 2D 3D 0E 1E 2E 3E 0F 1F 2F 3F + __m512i in1 = _mm512_slli_epi32(_mm512_loadu_si512((__m512i*)(ptr + + (j + 0) * tile_w)), T1_NMSEDEC_FRACBITS); + __m512i in2 = _mm512_slli_epi32(_mm512_loadu_si512((__m512i*)(ptr + + (j + 1) * tile_w)), T1_NMSEDEC_FRACBITS); + __m512i in3 = _mm512_slli_epi32(_mm512_loadu_si512((__m512i*)(ptr + + (j + 2) * tile_w)), T1_NMSEDEC_FRACBITS); + __m512i in4 = _mm512_slli_epi32(_mm512_loadu_si512((__m512i*)(ptr + + (j + 3) * tile_w)), T1_NMSEDEC_FRACBITS); + + __m512i tmp1 = _mm512_unpacklo_epi32(in1, in2); + __m512i tmp2 = _mm512_unpacklo_epi32(in3, in4); + __m512i tmp3 = _mm512_unpackhi_epi32(in1, in2); + __m512i tmp4 = _mm512_unpackhi_epi32(in3, in4); + + in1 = _mm512_unpacklo_epi64(tmp1, tmp2); + in2 = _mm512_unpacklo_epi64(tmp3, tmp4); + in3 = _mm512_unpackhi_epi64(tmp1, tmp2); + in4 = _mm512_unpackhi_epi64(tmp3, tmp4); + + _mm_storeu_si128((__m128i*)(t1data + 0), _mm512_castsi512_si128(in1)); + _mm_storeu_si128((__m128i*)(t1data + 4), _mm512_castsi512_si128(in3)); + _mm_storeu_si128((__m128i*)(t1data + 8), _mm512_castsi512_si128(in2)); + _mm_storeu_si128((__m128i*)(t1data + 12), _mm512_castsi512_si128(in4)); + + tmp1 = _mm512_permutex2var_epi64(in1, perm1, in3); + tmp2 = _mm512_permutex2var_epi64(in2, perm1, in4); + + _mm256_storeu_si256((__m256i*)(t1data + 16), _mm512_castsi512_si256(tmp1)); + _mm256_storeu_si256((__m256i*)(t1data + 24), _mm512_castsi512_si256(tmp2)); + _mm256_storeu_si256((__m256i*)(t1data + 32), _mm512_extracti64x4_epi64(tmp1, + 0x1)); + _mm256_storeu_si256((__m256i*)(t1data + 40), _mm512_extracti64x4_epi64(tmp2, + 0x1)); + _mm256_storeu_si256((__m256i*)(t1data + 48), + _mm512_castsi512_si256(_mm512_permutex2var_epi64(in1, perm2, in3))); + _mm256_storeu_si256((__m256i*)(t1data + 56), + _mm512_castsi512_si256(_mm512_permutex2var_epi64(in2, perm2, in4))); + t1data += 64; + ptr += 16; + } + for (i = 0; i < cblk_w % 16; ++i) { + t1data[0] = ptr[(j + 0) * tile_w] << T1_NMSEDEC_FRACBITS; + t1data[1] = ptr[(j + 1) * tile_w] << T1_NMSEDEC_FRACBITS; + t1data[2] = ptr[(j + 2) * tile_w] << T1_NMSEDEC_FRACBITS; + t1data[3] = ptr[(j + 3) * tile_w] << T1_NMSEDEC_FRACBITS; + t1data += 4; + ptr += 1; + } +#elif defined(__AVX2__) + OPJ_UINT32* ptr = tiledp_u; + for (i = 0; i < cblk_w / 8; ++i) { + // INPUT OUTPUT + // 00 01 02 03 04 05 06 07 00 10 20 30 01 11 21 31 + // 10 11 12 13 14 15 16 17 02 12 22 32 03 13 23 33 + // 20 21 22 23 24 25 26 27 04 14 24 34 05 15 25 35 + // 30 31 32 33 34 35 36 37 06 16 26 36 07 17 27 37 + __m256i in1 = _mm256_slli_epi32(_mm256_loadu_si256((__m256i*)(ptr + + (j + 0) * tile_w)), T1_NMSEDEC_FRACBITS); + __m256i in2 = _mm256_slli_epi32(_mm256_loadu_si256((__m256i*)(ptr + + (j + 1) * tile_w)), T1_NMSEDEC_FRACBITS); + __m256i in3 = _mm256_slli_epi32(_mm256_loadu_si256((__m256i*)(ptr + + (j + 2) * tile_w)), T1_NMSEDEC_FRACBITS); + __m256i in4 = _mm256_slli_epi32(_mm256_loadu_si256((__m256i*)(ptr + + (j + 3) * tile_w)), T1_NMSEDEC_FRACBITS); + + __m256i tmp1 = _mm256_unpacklo_epi32(in1, in2); + __m256i tmp2 = _mm256_unpacklo_epi32(in3, in4); + __m256i tmp3 = _mm256_unpackhi_epi32(in1, in2); + __m256i tmp4 = _mm256_unpackhi_epi32(in3, in4); + + in1 = _mm256_unpacklo_epi64(tmp1, tmp2); + in2 = _mm256_unpacklo_epi64(tmp3, tmp4); + in3 = _mm256_unpackhi_epi64(tmp1, tmp2); + in4 = _mm256_unpackhi_epi64(tmp3, tmp4); + + _mm_storeu_si128((__m128i*)(t1data + 0), _mm256_castsi256_si128(in1)); + _mm_storeu_si128((__m128i*)(t1data + 4), _mm256_castsi256_si128(in3)); + _mm_storeu_si128((__m128i*)(t1data + 8), _mm256_castsi256_si128(in2)); + _mm_storeu_si128((__m128i*)(t1data + 12), _mm256_castsi256_si128(in4)); + _mm256_storeu_si256((__m256i*)(t1data + 16), _mm256_permute2x128_si256(in1, in3, + 0x31)); + _mm256_storeu_si256((__m256i*)(t1data + 24), _mm256_permute2x128_si256(in2, in4, + 0x31)); + t1data += 32; + ptr += 8; + } + for (i = 0; i < cblk_w % 8; ++i) { + t1data[0] = ptr[(j + 0) * tile_w] << T1_NMSEDEC_FRACBITS; + t1data[1] = ptr[(j + 1) * tile_w] << T1_NMSEDEC_FRACBITS; + t1data[2] = ptr[(j + 2) * tile_w] << T1_NMSEDEC_FRACBITS; + t1data[3] = ptr[(j + 3) * tile_w] << T1_NMSEDEC_FRACBITS; + t1data += 4; + ptr += 1; + } +#else for (i = 0; i < cblk_w; ++i) { t1data[0] = tiledp_u[(j + 0) * tile_w + i] << T1_NMSEDEC_FRACBITS; t1data[1] = tiledp_u[(j + 1) * tile_w + i] << T1_NMSEDEC_FRACBITS; @@ -2234,6 +2382,7 @@ static void opj_t1_cblk_encode_processor(void* user_data, opj_tls_t* tls) t1data[3] = tiledp_u[(j + 3) * tile_w + i] << T1_NMSEDEC_FRACBITS; t1data += 4; } +#endif } if (j < cblk_h) { for (i = 0; i < cblk_w; ++i) { diff --git a/contrib/libs/openjpeg/t2.c b/contrib/libs/openjpeg/t2.c index 781a6a59a16..4e8cf601828 100644 --- a/contrib/libs/openjpeg/t2.c +++ b/contrib/libs/openjpeg/t2.c @@ -1111,6 +1111,7 @@ static OPJ_BOOL opj_t2_read_packet_header(opj_t2_t* p_t2, /* SOP markers */ if (p_tcp->csty & J2K_CP_CSTY_SOP) { + /* SOP markers are allowed (i.e. optional), just warn */ if (p_max_length < 6) { opj_event_msg(p_manager, EVT_WARNING, "Not enough space for expected SOP marker\n"); @@ -1163,12 +1164,15 @@ static OPJ_BOOL opj_t2_read_packet_header(opj_t2_t* p_t2, /* EPH markers */ if (p_tcp->csty & J2K_CP_CSTY_EPH) { + /* EPH markers are required */ if ((*l_modified_length_ptr - (OPJ_UINT32)(l_header_data - *l_header_data_start)) < 2U) { - opj_event_msg(p_manager, EVT_WARNING, - "Not enough space for expected EPH marker\n"); + opj_event_msg(p_manager, EVT_ERROR, + "Not enough space for required EPH marker\n"); + return OPJ_FALSE; } else if ((*l_header_data) != 0xff || (*(l_header_data + 1) != 0x92)) { - opj_event_msg(p_manager, EVT_WARNING, "Expected EPH marker\n"); + opj_event_msg(p_manager, EVT_ERROR, "Expected EPH marker\n"); + return OPJ_FALSE; } else { l_header_data += 2; } @@ -1340,12 +1344,15 @@ static OPJ_BOOL opj_t2_read_packet_header(opj_t2_t* p_t2, /* EPH markers */ if (p_tcp->csty & J2K_CP_CSTY_EPH) { + /* EPH markers are required */ if ((*l_modified_length_ptr - (OPJ_UINT32)(l_header_data - *l_header_data_start)) < 2U) { - opj_event_msg(p_manager, EVT_WARNING, - "Not enough space for expected EPH marker\n"); + opj_event_msg(p_manager, EVT_ERROR, + "Not enough space for required EPH marker\n"); + return OPJ_FALSE; } else if ((*l_header_data) != 0xff || (*(l_header_data + 1) != 0x92)) { - opj_event_msg(p_manager, EVT_WARNING, "Expected EPH marker\n"); + opj_event_msg(p_manager, EVT_ERROR, "Expected EPH marker\n"); + return OPJ_FALSE; } else { l_header_data += 2; } @@ -1353,6 +1360,9 @@ static OPJ_BOOL opj_t2_read_packet_header(opj_t2_t* p_t2, l_header_length = (OPJ_UINT32)(l_header_data - *l_header_data_start); JAS_FPRINTF(stderr, "hdrlen=%d \n", l_header_length); + if (!l_header_length) { + return OPJ_FALSE; + } JAS_FPRINTF(stderr, "packet body\n"); *l_modified_length_ptr -= l_header_length; *l_header_data_start += l_header_length; @@ -1404,18 +1414,21 @@ static OPJ_BOOL opj_t2_read_packet_data(opj_t2_t* p_t2, l_nb_code_blocks = l_prc->cw * l_prc->ch; l_cblk = l_prc->cblks.dec; - for (cblkno = 0; cblkno < l_nb_code_blocks; ++cblkno) { + for (cblkno = 0; cblkno < l_nb_code_blocks; ++cblkno, ++l_cblk) { opj_tcd_seg_t *l_seg = 00; - // if we have a partial data stream, set numchunks to zero - // since we have no data to actually decode. - if (partial_buffer) { - l_cblk->numchunks = 0; - } - if (!l_cblk->numnewpasses) { /* nothing to do */ - ++l_cblk; + continue; + } + + if (partial_buffer || l_cblk->corrupted) { + /* if a previous segment in this packet couldn't be decoded, + * or if this code block was corrupted in a previous layer, + * then mark it as corrupted. + */ + l_cblk->numchunks = 0; + l_cblk->corrupted = OPJ_TRUE; continue; } @@ -1448,18 +1461,13 @@ static OPJ_BOOL opj_t2_read_packet_data(opj_t2_t* p_t2, "read: segment too long (%d) with max (%d) for codeblock %d (p=%d, b=%d, r=%d, c=%d)\n", l_seg->newlen, p_max_length, cblkno, p_pi->precno, bandno, p_pi->resno, p_pi->compno); - // skip this codeblock since it is a partial read + /* skip this codeblock (and following ones in this + * packet) since it is a partial read + */ partial_buffer = OPJ_TRUE; + l_cblk->corrupted = OPJ_TRUE; l_cblk->numchunks = 0; - - l_seg->numpasses += l_seg->numnewpasses; - l_cblk->numnewpasses -= l_seg->numnewpasses; - if (l_cblk->numnewpasses > 0) { - ++l_seg; - ++l_cblk->numsegs; - break; - } - continue; + break; } } @@ -1516,7 +1524,7 @@ static OPJ_BOOL opj_t2_read_packet_data(opj_t2_t* p_t2, } while (l_cblk->numnewpasses > 0); l_cblk->real_num_segs = l_cblk->numsegs; - ++l_cblk; + } /* next code_block */ ++l_band; @@ -1600,6 +1608,8 @@ static OPJ_BOOL opj_t2_skip_packet_data(opj_t2_t* p_t2, "skip: segment too long (%d) with max (%d) for codeblock %d (p=%d, b=%d, r=%d, c=%d)\n", l_seg->newlen, p_max_length, cblkno, p_pi->precno, bandno, p_pi->resno, p_pi->compno); + + *p_data_read = p_max_length; return OPJ_TRUE; } } diff --git a/contrib/libs/openjpeg/tcd.c b/contrib/libs/openjpeg/tcd.c index 687aa61bb09..8ca259b71dc 100644 --- a/contrib/libs/openjpeg/tcd.c +++ b/contrib/libs/openjpeg/tcd.c @@ -243,7 +243,7 @@ void opj_tcd_rateallocate_fixed(opj_tcd_t *tcd) /* ----------------------------------------------------------------------- */ /** Returns OPJ_TRUE if the layer allocation is unchanged w.r.t to the previous - * invokation with a different threshold */ + * invocation with a different threshold */ static OPJ_BOOL opj_tcd_makelayer(opj_tcd_t *tcd, OPJ_UINT32 layno, @@ -2861,12 +2861,12 @@ OPJ_BOOL opj_tcd_is_subband_area_of_interest(opj_tcd_t *tcd, return intersects; } -/** Returns whether a tile componenent is fully decoded, taking into account +/** Returns whether a tile component is fully decoded, taking into account * p_tcd->win_* members. * * @param p_tcd TCD handle. * @param compno Component number - * @return OPJ_TRUE whether the tile componenent is fully decoded + * @return OPJ_TRUE whether the tile component is fully decoded */ static OPJ_BOOL opj_tcd_is_whole_tilecomp_decoding(opj_tcd_t *p_tcd, OPJ_UINT32 compno) diff --git a/contrib/libs/openjpeg/tcd.h b/contrib/libs/openjpeg/tcd.h index f659869a134..3371b08cb27 100644 --- a/contrib/libs/openjpeg/tcd.h +++ b/contrib/libs/openjpeg/tcd.h @@ -141,6 +141,7 @@ typedef struct opj_tcd_cblk_dec { OPJ_UINT32 numchunksalloc; /* Number of chunks item allocated */ /* Decoded code-block. Only used for subtile decoding. Otherwise tilec->data is directly updated */ OPJ_INT32* decoded_data; + OPJ_BOOL corrupted; /* whether the code block data is corrupted */ } opj_tcd_cblk_dec_t; /** Precinct structure */ @@ -312,7 +313,7 @@ typedef struct opj_tcd_marker_info { /** Dump the content of a tcd structure */ -/*void tcd_dump(FILE *fd, opj_tcd_t *tcd, opj_tcd_image_t *img);*/ /* TODO MSD shoul use the new v2 structures */ +/*void tcd_dump(FILE *fd, opj_tcd_t *tcd, opj_tcd_image_t *img);*/ /* TODO MSD should use the new v2 structures */ /** Create a new TCD handle @@ -443,7 +444,7 @@ OPJ_BOOL opj_tcd_update_tile_data(opj_tcd_t *p_tcd, OPJ_SIZE_T opj_tcd_get_encoder_input_buffer_size(opj_tcd_t *p_tcd); /** - * Initialize the tile coder and may reuse some meory. + * Initialize the tile coder and may reuse some memory. * * @param p_tcd TCD handle. * @param p_tile_no current tile index to encode. @@ -491,7 +492,7 @@ void opj_tcd_reinit_segment(opj_tcd_seg_t* seg); * @param y0 Upper left y in subband coordinates * @param x1 Lower right x in subband coordinates * @param y1 Lower right y in subband coordinates - * @return OPJ_TRUE whether the sub-band region contributs to the area of + * @return OPJ_TRUE whether the sub-band region contributes to the area of * interest. */ OPJ_BOOL opj_tcd_is_subband_area_of_interest(opj_tcd_t *tcd, diff --git a/contrib/libs/openjpeg/ya.make b/contrib/libs/openjpeg/ya.make index e065d61445b..ebcca46a5fc 100644 --- a/contrib/libs/openjpeg/ya.make +++ b/contrib/libs/openjpeg/ya.make @@ -9,9 +9,9 @@ LICENSE( LICENSE_TEXTS(.yandex_meta/licenses.list.txt) -VERSION(2.5.2) +VERSION(2.5.3) -ORIGINAL_SOURCE(https://github.com/uclouvain/openjpeg/archive/v2.5.2.tar.gz) +ORIGINAL_SOURCE(https://github.com/uclouvain/openjpeg/archive/v2.5.3.tar.gz) ADDINCL( contrib/libs/openjpeg diff --git a/contrib/libs/openssl/crypto/ya.make b/contrib/libs/openssl/crypto/ya.make index 3bf6f03bdb2..0f66c819c14 100644 --- a/contrib/libs/openssl/crypto/ya.make +++ b/contrib/libs/openssl/crypto/ya.make @@ -40,1332 +40,10 @@ ADDINCL( contrib/libs/openssl/include ) -IF (NOT EXPORT_CMAKE OR NOT OPENSOURCE_REPLACE_OPENSSL) - -IF (OS_LINUX) - IF (ARCH_ARM64) - SET(LINUX_ARM64 yes) - ELSEIF (ARCH_ARM7) - SET(LINUX_ARMV7 yes) - ELSEIF (ARCH_X86_64) - SET(LINUX_X86_64 yes) - ENDIF() -ENDIF() - -IF (OS_IOS) - IF (ARCH_ARM64) - SET(IOS_ARM64 yes) - ELSEIF (ARCH_ARM7) - SET(IOS_ARMV7 yes) - ELSEIF (ARCH_X86_64) - SET(IOS_X86_64 yes) - ELSEIF (ARCH_I386) - SET(IOS_I386 yes) - ENDIF() -ENDIF() - -IF (OS_ANDROID) - IF (ARCH_ARM64) - SET(ANDROID_ARM64 yes) - ELSEIF (ARCH_ARM7) - SET(ANDROID_ARMV7 yes) - ELSEIF (ARCH_X86_64) - SET(ANDROID_X86_64 yes) - ELSEIF (ARCH_I686) - SET(ANDROID_I686 yes) - ENDIF() -ENDIF() - -IF (OS_WINDOWS) - IF (ARCH_X86_64) - SET(WINDOWS_X86_64 yes) - ELSEIF (ARCH_I686) - SET(WINDOWS_I686 yes) - ENDIF() -ENDIF() - -IF (OS_DARWIN AND ARCH_ARM64) - SET(DARWIN_ARM64 yes) -ENDIF() - -NO_COMPILER_WARNINGS() - -NO_RUNTIME() - -SUPPRESSIONS(ubsan.supp) - -CFLAGS( - -DOPENSSL_BN_ASM_MONT - -DOPENSSL_CPUID_OBJ - -DSHA1_ASM - -DSHA256_ASM - -DSHA512_ASM - -DZLIB -) - -IF (NOT OS_IOS AND NOT DARWIN_ARM64) - CFLAGS( - -DDSO_NONE - -DAESNI_ASM - ) -ENDIF() - -IF (NOT WINDOWS_I686) - CFLAGS( - -DECP_NISTZ256_ASM - -DPOLY1305_ASM - ) -ENDIF() - -IF (NOT IOS_I386 AND NOT ANDROID_I686 AND NOT WINDOWS_I686) - CFLAGS( - -DKECCAK1600_ASM - ) -ENDIF() - -IF (NOT IOS_ARMV7 AND NOT ANDROID_ARMV7 AND NOT LINUX_ARMV7) - CFLAGS( - -DVPAES_ASM - ) -ENDIF() - -IF (NOT OS_WINDOWS) - CFLAGS( - -DENGINESDIR=\"/usr/local/lib/engines-1.1\" - -DOPENSSLDIR=\"/usr/local/ssl\" - ) -ENDIF() - -IF (OS_DARWIN AND ARCH_X86_64 OR OS_LINUX AND ARCH_X86_64 OR OS_WINDOWS AND ARCH_X86_64) - CFLAGS( - -DGHASH_ASM - -DL_ENDIAN - -DMD5_ASM - -DOPENSSL_BN_ASM_GF2m - -DOPENSSL_BN_ASM_MONT5 - -DOPENSSL_IA32_SSE2 - -DRC4_ASM - -DX25519_ASM - ) -ENDIF() - -IF (OS_LINUX AND ARCH_AARCH64 OR OS_LINUX AND ARCH_X86_64) - CFLAGS( - -DOPENSSL_USE_NODELETE - ) -ENDIF() - -IF (OS_DARWIN AND ARCH_ARM64) - CFLAGS( - -DL_ENDIAN - -DOPENSSL_PIC - ) -ENDIF() - -IF (OS_WINDOWS) - IF (ARCH_X86_64) - CFLAGS( - -DENGINESDIR="\"C:\\\\Program\ Files\\\\OpenSSL\\\\lib\\\\engines-1_1\"" - -DOPENSSLDIR="\"C:\\\\Program\ Files\\\\Common\ Files\\\\SSL\"" - ) - ELSEIF (ARCH_I386) - CFLAGS( - -DENGINESDIR="\"C:\\\\Program\ Files\ \(x86\)\\\\OpenSSL\\\\lib\\\\engines-1_1\"" - -DOPENSSLDIR="\"C:\\\\Program\ Files\ \(x86\)\\\\Common\ Files\\\\SSL\"" - ) - ENDIF() - CFLAGS( - -DOPENSSL_SYS_WIN32 - /GF - ) -ENDIF() - -IF (SANITIZER_TYPE == memory) - CFLAGS( - -DPURIFY - ) -ENDIF() - -IF (MUSL) - CFLAGS( - -DOPENSSL_NO_ASYNC - ) -ENDIF() - -IF (ARCH_TYPE_32) - CFLAGS( - -DOPENSSL_NO_EC_NISTP_64_GCC_128 - ) -ENDIF() - -IF (ARCH_X86_64 AND NOT MSVC) - SET_APPEND( - SFLAGS - -mavx512bw - -mavx512ifma - -mavx512vl - ) -ENDIF() - -SRCS( - aes/aes_cbc.c - aes/aes_cfb.c - aes/aes_ecb.c - aes/aes_ige.c - aes/aes_misc.c - aes/aes_ofb.c - aes/aes_wrap.c - aria/aria.c - asn1/a_bitstr.c - asn1/a_d2i_fp.c - asn1/a_digest.c - asn1/a_dup.c - asn1/a_gentm.c - asn1/a_i2d_fp.c - asn1/a_int.c - asn1/a_mbstr.c - asn1/a_object.c - asn1/a_octet.c - asn1/a_print.c - asn1/a_sign.c - asn1/a_strex.c - asn1/a_strnid.c - asn1/a_time.c - asn1/a_type.c - asn1/a_utctm.c - asn1/a_utf8.c - asn1/a_verify.c - asn1/ameth_lib.c - asn1/asn1_err.c - asn1/asn1_gen.c - asn1/asn1_item_list.c - asn1/asn1_lib.c - asn1/asn1_par.c - asn1/asn_mime.c - asn1/asn_moid.c - asn1/asn_mstbl.c - asn1/asn_pack.c - asn1/bio_asn1.c - asn1/bio_ndef.c - asn1/d2i_pr.c - asn1/d2i_pu.c - asn1/evp_asn1.c - asn1/f_int.c - asn1/f_string.c - asn1/i2d_pr.c - asn1/i2d_pu.c - asn1/n_pkey.c - asn1/nsseq.c - asn1/p5_pbe.c - asn1/p5_pbev2.c - asn1/p5_scrypt.c - asn1/p8_pkey.c - asn1/t_bitst.c - asn1/t_pkey.c - asn1/t_spki.c - asn1/tasn_dec.c - asn1/tasn_enc.c - asn1/tasn_fre.c - asn1/tasn_new.c - asn1/tasn_prn.c - asn1/tasn_scn.c - asn1/tasn_typ.c - asn1/tasn_utl.c - asn1/x_algor.c - asn1/x_bignum.c - asn1/x_info.c - asn1/x_int64.c - asn1/x_long.c - asn1/x_pkey.c - asn1/x_sig.c - asn1/x_spki.c - asn1/x_val.c - async/arch/async_null.c - async/arch/async_posix.c - async/arch/async_win.c - async/async.c - async/async_err.c - async/async_wait.c - bf/bf_cfb64.c - bf/bf_ecb.c - bf/bf_ofb64.c - bf/bf_skey.c - bio/b_addr.c - bio/b_dump.c - bio/b_print.c - bio/b_sock.c - bio/b_sock2.c - bio/bf_buff.c - bio/bf_lbuf.c - bio/bf_nbio.c - bio/bf_null.c - bio/bio_cb.c - bio/bio_err.c - bio/bio_lib.c - bio/bio_meth.c - bio/bss_acpt.c - bio/bss_bio.c - bio/bss_conn.c - bio/bss_dgram.c - bio/bss_fd.c - bio/bss_file.c - bio/bss_log.c - bio/bss_mem.c - bio/bss_null.c - bio/bss_sock.c - blake2/blake2b.c - blake2/blake2s.c - blake2/m_blake2b.c - blake2/m_blake2s.c - bn/bn_add.c - bn/bn_blind.c - bn/bn_const.c - bn/bn_ctx.c - bn/bn_depr.c - bn/bn_dh.c - bn/bn_div.c - bn/bn_err.c - bn/bn_exp.c - bn/bn_exp2.c - bn/bn_gcd.c - bn/bn_gf2m.c - bn/bn_intern.c - bn/bn_kron.c - bn/bn_lib.c - bn/bn_mod.c - bn/bn_mont.c - bn/bn_mpi.c - bn/bn_mul.c - bn/bn_nist.c - bn/bn_prime.c - bn/bn_print.c - bn/bn_rand.c - bn/bn_recp.c - bn/bn_shift.c - bn/bn_sqr.c - bn/bn_sqrt.c - bn/bn_srp.c - bn/bn_word.c - bn/bn_x931p.c - buffer/buf_err.c - buffer/buffer.c - camellia/cmll_cfb.c - camellia/cmll_ctr.c - camellia/cmll_ecb.c - camellia/cmll_ofb.c - cast/c_cfb64.c - cast/c_ecb.c - cast/c_enc.c - cast/c_ofb64.c - cast/c_skey.c - cmac/cm_ameth.c - cmac/cm_pmeth.c - cmac/cmac.c - cms/cms_asn1.c - cms/cms_att.c - cms/cms_cd.c - cms/cms_dd.c - cms/cms_enc.c - cms/cms_env.c - cms/cms_err.c - cms/cms_ess.c - cms/cms_io.c - cms/cms_kari.c - cms/cms_lib.c - cms/cms_pwri.c - cms/cms_sd.c - cms/cms_smime.c - comp/c_zlib.c - comp/comp_err.c - comp/comp_lib.c - conf/conf_api.c - conf/conf_def.c - conf/conf_err.c - conf/conf_lib.c - conf/conf_mall.c - conf/conf_mod.c - conf/conf_sap.c - conf/conf_ssl.c - cpt_err.c - cryptlib.c - ct/ct_b64.c - ct/ct_err.c - ct/ct_log.c - ct/ct_oct.c - ct/ct_policy.c - ct/ct_prn.c - ct/ct_sct.c - ct/ct_sct_ctx.c - ct/ct_vfy.c - ct/ct_x509v3.c - ctype.c - cversion.c - des/cbc_cksm.c - des/cbc_enc.c - des/cfb64ede.c - des/cfb64enc.c - des/cfb_enc.c - des/ecb3_enc.c - des/ecb_enc.c - des/fcrypt.c - des/ofb64ede.c - des/ofb64enc.c - des/ofb_enc.c - des/pcbc_enc.c - des/qud_cksm.c - des/rand_key.c - des/set_key.c - des/str2key.c - des/xcbc_enc.c - dh/dh_ameth.c - dh/dh_asn1.c - dh/dh_check.c - dh/dh_depr.c - dh/dh_err.c - dh/dh_gen.c - dh/dh_kdf.c - dh/dh_key.c - dh/dh_lib.c - dh/dh_meth.c - dh/dh_pmeth.c - dh/dh_prn.c - dh/dh_rfc5114.c - dh/dh_rfc7919.c - dsa/dsa_ameth.c - dsa/dsa_asn1.c - dsa/dsa_depr.c - dsa/dsa_err.c - dsa/dsa_gen.c - dsa/dsa_key.c - dsa/dsa_lib.c - dsa/dsa_meth.c - dsa/dsa_ossl.c - dsa/dsa_pmeth.c - dsa/dsa_prn.c - dsa/dsa_sign.c - dsa/dsa_vrf.c - dso/dso_dl.c - dso/dso_err.c - dso/dso_lib.c - dso/dso_openssl.c - dso/dso_vms.c - dso/dso_win32.c - ebcdic.c - ec/curve25519.c - ec/curve448/arch_32/f_impl.c - ec/curve448/curve448.c - ec/curve448/curve448_tables.c - ec/curve448/eddsa.c - ec/curve448/f_generic.c - ec/curve448/scalar.c - ec/ec2_oct.c - ec/ec2_smpl.c - ec/ec_ameth.c - ec/ec_asn1.c - ec/ec_check.c - ec/ec_curve.c - ec/ec_cvt.c - ec/ec_err.c - ec/ec_key.c - ec/ec_kmeth.c - ec/ec_lib.c - ec/ec_mult.c - ec/ec_oct.c - ec/ec_pmeth.c - ec/ec_print.c - ec/ecdh_kdf.c - ec/ecdh_ossl.c - ec/ecdsa_ossl.c - ec/ecdsa_sign.c - ec/ecdsa_vrf.c - ec/eck_prn.c - ec/ecp_mont.c - ec/ecp_nist.c - ec/ecp_nistp224.c - ec/ecp_nistp256.c - ec/ecp_nistp521.c - ec/ecp_nistputil.c - ec/ecp_oct.c - ec/ecp_smpl.c - ec/ecx_meth.c - engine/eng_all.c - engine/eng_cnf.c - engine/eng_ctrl.c - engine/eng_dyn.c - engine/eng_err.c - engine/eng_fat.c - engine/eng_init.c - engine/eng_lib.c - engine/eng_list.c - engine/eng_openssl.c - engine/eng_pkey.c - engine/eng_rdrand.c - engine/eng_table.c - engine/tb_asnmth.c - engine/tb_cipher.c - engine/tb_dh.c - engine/tb_digest.c - engine/tb_dsa.c - engine/tb_eckey.c - engine/tb_pkmeth.c - engine/tb_rand.c - engine/tb_rsa.c - err/err.c - err/err_all.c - err/err_prn.c - evp/bio_b64.c - evp/bio_enc.c - evp/bio_md.c - evp/bio_ok.c - evp/c_allc.c - evp/c_alld.c - evp/cmeth_lib.c - evp/digest.c - evp/e_aes.c - evp/e_aes_cbc_hmac_sha1.c - evp/e_aes_cbc_hmac_sha256.c - evp/e_aria.c - evp/e_bf.c - evp/e_camellia.c - evp/e_cast.c - evp/e_chacha20_poly1305.c - evp/e_des.c - evp/e_des3.c - evp/e_idea.c - evp/e_null.c - evp/e_old.c - evp/e_rc2.c - evp/e_rc4.c - evp/e_rc4_hmac_md5.c - evp/e_rc5.c - evp/e_seed.c - evp/e_sm4.c - evp/e_xcbc_d.c - evp/encode.c - evp/evp_cnf.c - evp/evp_enc.c - evp/evp_err.c - evp/evp_key.c - evp/evp_lib.c - evp/evp_pbe.c - evp/evp_pkey.c - evp/m_md2.c - evp/m_md4.c - evp/m_md5.c - evp/m_md5_sha1.c - evp/m_mdc2.c - evp/m_null.c - evp/m_ripemd.c - evp/m_sha1.c - evp/m_sha3.c - evp/m_sigver.c - evp/m_wp.c - evp/names.c - evp/p5_crpt.c - evp/p5_crpt2.c - evp/p_dec.c - evp/p_enc.c - evp/p_lib.c - evp/p_open.c - evp/p_seal.c - evp/p_sign.c - evp/p_verify.c - evp/pbe_scrypt.c - evp/pmeth_fn.c - evp/pmeth_gn.c - evp/pmeth_lib.c - ex_data.c - getenv.c - hmac/hm_ameth.c - hmac/hm_pmeth.c - hmac/hmac.c - idea/i_cbc.c - idea/i_cfb64.c - idea/i_ecb.c - idea/i_ofb64.c - idea/i_skey.c - init.c - kdf/hkdf.c - kdf/kdf_err.c - kdf/scrypt.c - kdf/tls1_prf.c - lhash/lh_stats.c - lhash/lhash.c - md4/md4_dgst.c - md4/md4_one.c - md5/md5_dgst.c - md5/md5_one.c - mdc2/mdc2_one.c - mdc2/mdc2dgst.c - mem.c - mem_dbg.c - mem_sec.c - modes/cbc128.c - modes/ccm128.c - modes/cfb128.c - modes/ctr128.c - modes/cts128.c - modes/gcm128.c - modes/ocb128.c - modes/ofb128.c - modes/wrap128.c - modes/xts128.c - o_dir.c - o_fips.c - o_fopen.c - o_init.c - o_str.c - o_time.c - objects/o_names.c - objects/obj_dat.c - objects/obj_err.c - objects/obj_lib.c - objects/obj_xref.c - ocsp/ocsp_asn.c - ocsp/ocsp_cl.c - ocsp/ocsp_err.c - ocsp/ocsp_ext.c - ocsp/ocsp_ht.c - ocsp/ocsp_lib.c - ocsp/ocsp_prn.c - ocsp/ocsp_srv.c - ocsp/ocsp_vfy.c - ocsp/v3_ocsp.c - pem/pem_all.c - pem/pem_err.c - pem/pem_info.c - pem/pem_lib.c - pem/pem_oth.c - pem/pem_pk8.c - pem/pem_pkey.c - pem/pem_sign.c - pem/pem_x509.c - pem/pem_xaux.c - pem/pvkfmt.c - pkcs12/p12_add.c - pkcs12/p12_asn.c - pkcs12/p12_attr.c - pkcs12/p12_crpt.c - pkcs12/p12_crt.c - pkcs12/p12_decr.c - pkcs12/p12_init.c - pkcs12/p12_key.c - pkcs12/p12_kiss.c - pkcs12/p12_mutl.c - pkcs12/p12_npas.c - pkcs12/p12_p8d.c - pkcs12/p12_p8e.c - pkcs12/p12_sbag.c - pkcs12/p12_utl.c - pkcs12/pk12err.c - pkcs7/bio_pk7.c - pkcs7/pk7_asn1.c - pkcs7/pk7_attr.c - pkcs7/pk7_doit.c - pkcs7/pk7_lib.c - pkcs7/pk7_mime.c - pkcs7/pk7_smime.c - pkcs7/pkcs7err.c - poly1305/poly1305.c - poly1305/poly1305_ameth.c - poly1305/poly1305_pmeth.c - rand/drbg_ctr.c - rand/drbg_lib.c - rand/rand_egd.c - rand/rand_err.c - rand/rand_lib.c - rand/rand_unix.c - rand/rand_win.c - rand/randfile.c - rc2/rc2_cbc.c - rc2/rc2_ecb.c - rc2/rc2_skey.c - rc2/rc2cfb64.c - rc2/rc2ofb64.c - ripemd/rmd_dgst.c - ripemd/rmd_one.c - rsa/rsa_ameth.c - rsa/rsa_asn1.c - rsa/rsa_chk.c - rsa/rsa_crpt.c - rsa/rsa_depr.c - rsa/rsa_err.c - rsa/rsa_gen.c - rsa/rsa_lib.c - rsa/rsa_meth.c - rsa/rsa_mp.c - rsa/rsa_none.c - rsa/rsa_oaep.c - rsa/rsa_ossl.c - rsa/rsa_pk1.c - rsa/rsa_pmeth.c - rsa/rsa_prn.c - rsa/rsa_pss.c - rsa/rsa_saos.c - rsa/rsa_sign.c - rsa/rsa_ssl.c - rsa/rsa_x931.c - rsa/rsa_x931g.c - seed/seed.c - seed/seed_cbc.c - seed/seed_cfb.c - seed/seed_ecb.c - seed/seed_ofb.c - sha/sha1_one.c - sha/sha1dgst.c - sha/sha256.c - sha/sha512.c - siphash/siphash.c - siphash/siphash_ameth.c - siphash/siphash_pmeth.c - sm2/sm2_crypt.c - sm2/sm2_err.c - sm2/sm2_pmeth.c - sm2/sm2_sign.c - sm3/m_sm3.c - sm3/sm3.c - sm4/sm4.c - srp/srp_lib.c - srp/srp_vfy.c - stack/stack.c - store/loader_file.c - store/store_err.c - store/store_init.c - store/store_lib.c - store/store_register.c - store/store_strings.c - threads_none.c - threads_pthread.c - threads_win.c - ts/ts_asn1.c - ts/ts_conf.c - ts/ts_err.c - ts/ts_lib.c - ts/ts_req_print.c - ts/ts_req_utils.c - ts/ts_rsp_print.c - ts/ts_rsp_sign.c - ts/ts_rsp_utils.c - ts/ts_rsp_verify.c - ts/ts_verify_ctx.c - txt_db/txt_db.c - ui/ui_err.c - ui/ui_lib.c - ui/ui_null.c - ui/ui_openssl.c - ui/ui_util.c - uid.c - whrlpool/wp_dgst.c - x509/by_dir.c - x509/by_file.c - x509/t_crl.c - x509/t_req.c - x509/t_x509.c - x509/x509_att.c - x509/x509_cmp.c - x509/x509_d2.c - x509/x509_def.c - x509/x509_err.c - x509/x509_ext.c - x509/x509_lu.c - x509/x509_meth.c - x509/x509_obj.c - x509/x509_r2x.c - x509/x509_req.c - x509/x509_set.c - x509/x509_trs.c - x509/x509_txt.c - x509/x509_v3.c - x509/x509_vfy.c - x509/x509_vpm.c - x509/x509cset.c - x509/x509name.c - x509/x509rset.c - x509/x509spki.c - x509/x509type.c - x509/x_all.c - x509/x_attrib.c - x509/x_crl.c - x509/x_exten.c - x509/x_name.c - x509/x_pubkey.c - x509/x_req.c - x509/x_x509.c - x509/x_x509a.c - x509v3/pcy_cache.c - x509v3/pcy_data.c - x509v3/pcy_lib.c - x509v3/pcy_map.c - x509v3/pcy_node.c - x509v3/pcy_tree.c - x509v3/v3_addr.c - x509v3/v3_admis.c - x509v3/v3_akey.c - x509v3/v3_akeya.c - x509v3/v3_alt.c - x509v3/v3_asid.c - x509v3/v3_bcons.c - x509v3/v3_bitst.c - x509v3/v3_conf.c - x509v3/v3_cpols.c - x509v3/v3_crld.c - x509v3/v3_enum.c - x509v3/v3_extku.c - x509v3/v3_genn.c - x509v3/v3_ia5.c - x509v3/v3_info.c - x509v3/v3_int.c - x509v3/v3_lib.c - x509v3/v3_ncons.c - x509v3/v3_pci.c - x509v3/v3_pcia.c - x509v3/v3_pcons.c - x509v3/v3_pku.c - x509v3/v3_pmaps.c - x509v3/v3_prn.c - x509v3/v3_purp.c - x509v3/v3_skey.c - x509v3/v3_sxnet.c - x509v3/v3_tlsf.c - x509v3/v3_utl.c - x509v3/v3err.c -) - -IF (NOT WINDOWS_I686) - SRCS( - ec/ecp_nistz256.c - ) -ENDIF() - -IF (NOT IOS_ARMV7 AND NOT ANDROID_ARMV7 AND NOT LINUX_ARMV7) - SRCS( - aes/aes_core.c - ) -ENDIF() - -IF (NOT IOS_I386 AND NOT ANDROID_I686 AND NOT WINDOWS_I686) - SRCS( - bf/bf_enc.c - camellia/cmll_misc.c - des/des_enc.c - des/fcrypt_b.c - ) -ENDIF() - -IF (OS_DARWIN AND ARCH_X86_64 OR OS_LINUX AND ARCH_X86_64 OR OS_WINDOWS AND ARCH_X86_64) - SRCS( - bn/rsaz_exp.c - ) -ENDIF() - -IF (OS_DARWIN AND ARCH_X86_64 OR OS_LINUX AND ARCH_X86_64) - SRCS( - bn/asm/x86_64-gcc.c - ) -ENDIF() - -IF (OS_LINUX AND ARCH_AARCH64 OR OS_WINDOWS AND ARCH_X86_64 OR OS_LINUX AND ARCH_PPC64LE) - SRCS( - bn/bn_asm.c - ) -ENDIF() - -IF (OS_DARWIN AND ARCH_X86_64) - SRCS( - ../asm/darwin/crypto/aes/aesni-mb-x86_64.s - ../asm/darwin/crypto/aes/aesni-sha1-x86_64.s - ../asm/darwin/crypto/aes/aesni-sha256-x86_64.s - ../asm/darwin/crypto/aes/aesni-x86_64.s - ../asm/darwin/crypto/aes/vpaes-x86_64.s - ../asm/darwin/crypto/bn/rsaz-avx2.s - ../asm/darwin/crypto/bn/rsaz-x86_64.s - ../asm/darwin/crypto/bn/x86_64-gf2m.s - ../asm/darwin/crypto/bn/x86_64-mont.s - ../asm/darwin/crypto/bn/x86_64-mont5.s - ../asm/darwin/crypto/camellia/cmll-x86_64.s - ../asm/darwin/crypto/chacha/chacha-x86_64.s - ../asm/darwin/crypto/ec/ecp_nistz256-x86_64.s - ../asm/darwin/crypto/ec/x25519-x86_64.s - ../asm/darwin/crypto/md5/md5-x86_64.s - ../asm/darwin/crypto/modes/aesni-gcm-x86_64.s - ../asm/darwin/crypto/modes/ghash-x86_64.s - ../asm/darwin/crypto/poly1305/poly1305-x86_64.s - ../asm/darwin/crypto/rc4/rc4-md5-x86_64.s - ../asm/darwin/crypto/rc4/rc4-x86_64.s - ../asm/darwin/crypto/sha/keccak1600-x86_64.s - ../asm/darwin/crypto/sha/sha1-mb-x86_64.s - ../asm/darwin/crypto/sha/sha1-x86_64.s - ../asm/darwin/crypto/sha/sha256-mb-x86_64.s - ../asm/darwin/crypto/sha/sha256-x86_64.s - ../asm/darwin/crypto/sha/sha512-x86_64.s - ../asm/darwin/crypto/whrlpool/wp-x86_64.s - ../asm/darwin/crypto/x86_64cpuid.s - ) -ENDIF() - -IF (OS_DARWIN AND ARCH_ARM64) - SRCS( - ../asm/darwin-arm64/crypto/sha/keccak1600-armv8.S - ../asm/darwin-arm64/crypto/sha/sha512-armv8.S - ../asm/darwin-arm64/crypto/sha/sha1-armv8.S - ../asm/darwin-arm64/crypto/sha/sha256-armv8.S - ../asm/darwin-arm64/crypto/poly1305/poly1305-armv8.S - ../asm/darwin-arm64/crypto/ec/ecp_nistz256-armv8.S - ../asm/darwin-arm64/crypto/chacha/chacha-armv8.S - ../asm/darwin-arm64/crypto/bn/armv8-mont.S - ../asm/darwin-arm64/crypto/arm64cpuid.S - ../asm/darwin-arm64/crypto/aes/aesv8-armx.S - ../asm/darwin-arm64/crypto/aes/vpaes-armv8.S - ../asm/darwin-arm64/crypto/modes/ghashv8-armx.S - armcap.c - bn/bn_asm.c - camellia/camellia.c - camellia/cmll_cbc.c - dso/dso_dlfcn.c - rc4/rc4_enc.c - rc4/rc4_skey.c - whrlpool/wp_block.c - ) -ENDIF() - -IF (OS_LINUX AND ARCH_ARM7) - CFLAGS( - -DOPENSSL_PIC - -DOPENSSL_BN_ASM_GF2m - -DAES_ASM - -DBSAES_ASM - -DGHASH_ASM - ) - SRCS( - ../asm/android/arm/crypto/ec/ecp_nistz256-armv4.S - ../asm/android/arm/crypto/poly1305/poly1305-armv4.S - ../asm/android/arm/crypto/armv4cpuid.S - ../asm/android/arm/crypto/bn/armv4-mont.S - ../asm/android/arm/crypto/bn/armv4-gf2m.S - ../asm/android/arm/crypto/aes/aes-armv4.S - ../asm/android/arm/crypto/aes/bsaes-armv7.S - ../asm/android/arm/crypto/aes/aesv8-armx.S - ../asm/android/arm/crypto/sha/keccak1600-armv4.S - ../asm/android/arm/crypto/sha/sha256-armv4.S - ../asm/android/arm/crypto/sha/sha512-armv4.S - ../asm/android/arm/crypto/sha/sha1-armv4-large.S - ../asm/android/arm/crypto/chacha/chacha-armv4.S - ../asm/android/arm/crypto/modes/ghashv8-armx.S - ../asm/android/arm/crypto/modes/ghash-armv4.S - armcap.c - bn/bn_asm.c - camellia/camellia.c - camellia/cmll_cbc.c - dso/dso_dlfcn.c - rand/rand_vms.c - rc4/rc4_enc.c - rc4/rc4_skey.c - whrlpool/wp_block.c - ) -ENDIF() - -IF (OS_LINUX AND ARCH_AARCH64) - SRCS( - ../asm/aarch64/crypto/aes/aesv8-armx.S - ../asm/aarch64/crypto/aes/vpaes-armv8.S - ../asm/aarch64/crypto/arm64cpuid.S - ../asm/aarch64/crypto/bn/armv8-mont.S - ../asm/aarch64/crypto/chacha/chacha-armv8.S - ../asm/aarch64/crypto/ec/ecp_nistz256-armv8.S - ../asm/aarch64/crypto/modes/ghashv8-armx.S - ../asm/aarch64/crypto/poly1305/poly1305-armv8.S - ../asm/aarch64/crypto/sha/keccak1600-armv8.S - ../asm/aarch64/crypto/sha/sha1-armv8.S - ../asm/aarch64/crypto/sha/sha256-armv8.S - ../asm/aarch64/crypto/sha/sha512-armv8.S - armcap.c - camellia/camellia.c - camellia/cmll_cbc.c - rc4/rc4_enc.c - rc4/rc4_skey.c - whrlpool/wp_block.c - ) -ENDIF() - -IF (OS_LINUX AND ARCH_PPC64LE) - SRCS( - ../asm/ppc64le/crypto/aes/aesp8-ppc.s - ../asm/ppc64le/crypto/aes/vpaes-ppc.s - ../asm/ppc64le/crypto/bn/bn-ppc.s - ../asm/ppc64le/crypto/bn/ppc-mont.s - ../asm/ppc64le/crypto/chacha/chacha-ppc.s - ../asm/ppc64le/crypto/ec/ecp_nistz256-ppc64.s - ../asm/ppc64le/crypto/ec/x25519-ppc64.s - ../asm/ppc64le/crypto/modes/ghashp8-ppc.s - ../asm/ppc64le/crypto/poly1305/poly1305-ppc.s - ../asm/ppc64le/crypto/poly1305/poly1305-ppcfp.s - ../asm/ppc64le/crypto/ppccpuid.s - ../asm/ppc64le/crypto/sha/keccak1600-ppc64.s - ../asm/ppc64le/crypto/sha/sha1-ppc.s - ../asm/ppc64le/crypto/sha/sha256-ppc.s - ../asm/ppc64le/crypto/sha/sha256p8-ppc.s - ../asm/ppc64le/crypto/sha/sha512-ppc.s - ../asm/ppc64le/crypto/sha/sha512p8-ppc.s - ppccap.c - camellia/camellia.c - camellia/cmll_cbc.c - rc4/rc4_enc.c - rc4/rc4_skey.c - whrlpool/wp_block.c - ) -ENDIF() - -IF (OS_LINUX AND ARCH_X86_64) - SRCS( - ../asm/linux/crypto/aes/aesni-mb-x86_64.s - ../asm/linux/crypto/aes/aesni-sha1-x86_64.s - ../asm/linux/crypto/aes/aesni-sha256-x86_64.s - ../asm/linux/crypto/aes/aesni-x86_64.s - ../asm/linux/crypto/aes/vpaes-x86_64.s - ../asm/linux/crypto/bn/rsaz-avx2.s - ../asm/linux/crypto/bn/rsaz-x86_64.s - ../asm/linux/crypto/bn/x86_64-gf2m.s - ../asm/linux/crypto/bn/x86_64-mont.s - ../asm/linux/crypto/bn/x86_64-mont5.s - ../asm/linux/crypto/camellia/cmll-x86_64.s - ../asm/linux/crypto/chacha/chacha-x86_64.s - ../asm/linux/crypto/ec/ecp_nistz256-x86_64.s - ../asm/linux/crypto/ec/x25519-x86_64.s - ../asm/linux/crypto/md5/md5-x86_64.s - ../asm/linux/crypto/modes/aesni-gcm-x86_64.s - ../asm/linux/crypto/modes/ghash-x86_64.s - ../asm/linux/crypto/poly1305/poly1305-x86_64.s - ../asm/linux/crypto/rc4/rc4-md5-x86_64.s - ../asm/linux/crypto/rc4/rc4-x86_64.s - ../asm/linux/crypto/sha/keccak1600-x86_64.s - ../asm/linux/crypto/sha/sha1-mb-x86_64.s - ../asm/linux/crypto/sha/sha1-x86_64.s - ../asm/linux/crypto/sha/sha256-mb-x86_64.s - ../asm/linux/crypto/sha/sha256-x86_64.s - ../asm/linux/crypto/sha/sha512-x86_64.s - ../asm/linux/crypto/whrlpool/wp-x86_64.s - ../asm/linux/crypto/x86_64cpuid.s - ) -ENDIF() - -IF (OS_WINDOWS AND ARCH_X86_64) - SRCS( - ../asm/windows/crypto/aes/aesni-mb-x86_64.masm - ../asm/windows/crypto/aes/aesni-sha1-x86_64.masm - ../asm/windows/crypto/aes/aesni-sha256-x86_64.masm - ../asm/windows/crypto/aes/aesni-x86_64.masm - ../asm/windows/crypto/aes/vpaes-x86_64.masm - ../asm/windows/crypto/bn/rsaz-avx2.masm - ../asm/windows/crypto/bn/rsaz-x86_64.masm - ../asm/windows/crypto/bn/x86_64-gf2m.masm - ../asm/windows/crypto/bn/x86_64-mont.masm - ../asm/windows/crypto/bn/x86_64-mont5.masm - ../asm/windows/crypto/camellia/cmll-x86_64.masm - ../asm/windows/crypto/chacha/chacha-x86_64.masm - ../asm/windows/crypto/ec/ecp_nistz256-x86_64.masm - ../asm/windows/crypto/ec/x25519-x86_64.masm - ../asm/windows/crypto/md5/md5-x86_64.masm - ../asm/windows/crypto/modes/aesni-gcm-x86_64.masm - ../asm/windows/crypto/modes/ghash-x86_64.masm - ../asm/windows/crypto/poly1305/poly1305-x86_64.masm - ../asm/windows/crypto/rc4/rc4-md5-x86_64.masm - ../asm/windows/crypto/rc4/rc4-x86_64.masm - ../asm/windows/crypto/sha/keccak1600-x86_64.masm - ../asm/windows/crypto/sha/sha1-mb-x86_64.masm - ../asm/windows/crypto/sha/sha1-x86_64.masm - ../asm/windows/crypto/sha/sha256-mb-x86_64.masm - ../asm/windows/crypto/sha/sha256-x86_64.masm - ../asm/windows/crypto/sha/sha512-x86_64.masm - ../asm/windows/crypto/whrlpool/wp-x86_64.masm - ../asm/windows/crypto/uplink-x86_64.masm - ../asm/windows/crypto/x86_64cpuid.masm - ) -ENDIF() - -IF (OS_WINDOWS AND ARCH_I386) - CFLAGS( - -DGHASH_ASM - -DOPENSSL_BN_ASM_GF2m - -DRC4_ASM - -DMD5_ASM - ) - MASMFLAGS( - /safeseh - ) - SRCS( - ../asm/windows/crypto/aes/aesni-x86.masm - ../asm/windows/crypto/aes/vpaes-x86.masm - ../asm/windows/crypto/bn/x86-gf2m.masm - ../asm/windows/crypto/bn/x86-mont.masm - ../asm/windows/crypto/camellia/cmll-x86.masm - ../asm/windows/crypto/chacha/chacha-x86.masm - ../asm/windows/crypto/md5/md5-586.masm - ../asm/windows/crypto/modes/ghash-x86.masm - ../asm/windows/crypto/rc4/rc4-586.masm - ../asm/windows/crypto/sha/sha1-586.masm - ../asm/windows/crypto/sha/sha256-586.masm - ../asm/windows/crypto/sha/sha512-586.masm - ../asm/windows/crypto/x86cpuid.masm - bf/bf_enc.c - bn/bn_asm.c - des/des_enc.c - des/fcrypt_b.c - sha/keccak1600.c - whrlpool/wp_block.c - ) -ENDIF() - -IF (OS_IOS AND ARCH_ARM64) - CFLAGS( - -DOPENSSL_PIC - -D_REENTRANT - ) - SRCS( - ../asm/ios/arm64/crypto/aes/aesv8-armx.S - ../asm/ios/arm64/crypto/aes/vpaes-armv8.S - ../asm/ios/arm64/crypto/arm64cpuid.S - ../asm/ios/arm64/crypto/bn/armv8-mont.S - ../asm/ios/arm64/crypto/chacha/chacha-armv8.S - ../asm/ios/arm64/crypto/ec/ecp_nistz256-armv8.S - ../asm/ios/arm64/crypto/modes/ghashv8-armx.S - ../asm/ios/arm64/crypto/poly1305/poly1305-armv8.S - ../asm/ios/arm64/crypto/sha/keccak1600-armv8.S - ../asm/ios/arm64/crypto/sha/sha1-armv8.S - ../asm/ios/arm64/crypto/sha/sha256-armv8.S - ../asm/ios/arm64/crypto/sha/sha512-armv8.S - armcap.c - bn/bn_asm.c - camellia/camellia.c - camellia/cmll_cbc.c - dso/dso_dlfcn.c - rand/rand_vms.c - rc4/rc4_enc.c - rc4/rc4_skey.c - whrlpool/wp_block.c - ) -ENDIF() - -IF (OS_IOS AND ARCH_X86_64) - CFLAGS( - -DL_ENDIAN - -DOPENSSL_PIC - -DOPENSSL_IA32_SSE2 - -DOPENSSL_BN_ASM_MONT5 - -DOPENSSL_BN_ASM_GF2m - -DRC4_ASM - -DMD5_ASM - -DGHASH_ASM - -DECP_NISTZ256_ASM - -DX25519_ASM - -D_REENTRANT - ) - SRCS( - ../asm/ios/x86_64/crypto/md5/md5-x86_64.s - ../asm/ios/x86_64/crypto/rc4/rc4-md5-x86_64.s - ../asm/ios/x86_64/crypto/rc4/rc4-x86_64.s - ../asm/ios/x86_64/crypto/modes/ghash-x86_64.s - ../asm/ios/x86_64/crypto/modes/aesni-gcm-x86_64.s - ../asm/ios/x86_64/crypto/chacha/chacha-x86_64.s - ../asm/ios/x86_64/crypto/ec/ecp_nistz256-x86_64.s - ../asm/ios/x86_64/crypto/ec/x25519-x86_64.s - ../asm/ios/x86_64/crypto/x86_64cpuid.s - ../asm/ios/x86_64/crypto/poly1305/poly1305-x86_64.s - ../asm/ios/x86_64/crypto/bn/rsaz-x86_64.s - ../asm/ios/x86_64/crypto/bn/x86_64-mont.s - ../asm/ios/x86_64/crypto/bn/x86_64-gf2m.s - ../asm/ios/x86_64/crypto/bn/x86_64-mont5.s - ../asm/ios/x86_64/crypto/bn/rsaz-avx2.s - ../asm/ios/x86_64/crypto/sha/sha512-x86_64.s - ../asm/ios/x86_64/crypto/sha/sha256-x86_64.s - ../asm/ios/x86_64/crypto/sha/keccak1600-x86_64.s - ../asm/ios/x86_64/crypto/sha/sha1-x86_64.s - ../asm/ios/x86_64/crypto/sha/sha1-mb-x86_64.s - ../asm/ios/x86_64/crypto/sha/sha256-mb-x86_64.s - ../asm/ios/x86_64/crypto/camellia/cmll-x86_64.s - ../asm/ios/x86_64/crypto/whrlpool/wp-x86_64.s - ../asm/ios/x86_64/crypto/aes/vpaes-x86_64.s - ../asm/ios/x86_64/crypto/aes/aesni-sha1-x86_64.s - ../asm/ios/x86_64/crypto/aes/aesni-sha256-x86_64.s - ../asm/ios/x86_64/crypto/aes/aesni-x86_64.s - ../asm/ios/x86_64/crypto/aes/aesni-mb-x86_64.s - bn/asm/x86_64-gcc.c - bn/rsaz_exp.c - dso/dso_dlfcn.c - rand/rand_vms.c - ) -ENDIF() - -IF (OS_ANDROID AND ARCH_X86_64) - CFLAGS( - -DOPENSSL_USE_NODELETE - -DOPENSSL_PIC - -DOPENSSL_IA32_SSE2 - -DOPENSSL_BN_ASM_MONT5 - -DOPENSSL_BN_ASM_GF2m - -DRC4_ASM - -DMD5_ASM - -DGHASH_ASM - -DX25519_ASM - ) - SRCS( - ../asm/android/x86_64/crypto/ec/x25519-x86_64.s - ../asm/android/x86_64/crypto/ec/ecp_nistz256-x86_64.s - ../asm/android/x86_64/crypto/md5/md5-x86_64.s - ../asm/android/x86_64/crypto/rc4/rc4-x86_64.s - ../asm/android/x86_64/crypto/rc4/rc4-md5-x86_64.s - ../asm/android/x86_64/crypto/whrlpool/wp-x86_64.s - ../asm/android/x86_64/crypto/poly1305/poly1305-x86_64.s - ../asm/android/x86_64/crypto/x86_64cpuid.s - ../asm/android/x86_64/crypto/camellia/cmll-x86_64.s - ../asm/android/x86_64/crypto/bn/x86_64-mont5.s - ../asm/android/x86_64/crypto/bn/rsaz-avx2.s - ../asm/android/x86_64/crypto/bn/rsaz-x86_64.s - ../asm/android/x86_64/crypto/bn/x86_64-mont.s - ../asm/android/x86_64/crypto/bn/x86_64-gf2m.s - ../asm/android/x86_64/crypto/aes/aesni-sha256-x86_64.s - ../asm/android/x86_64/crypto/aes/aesni-mb-x86_64.s - ../asm/android/x86_64/crypto/aes/aesni-x86_64.s - ../asm/android/x86_64/crypto/aes/vpaes-x86_64.s - ../asm/android/x86_64/crypto/aes/aesni-sha1-x86_64.s - ../asm/android/x86_64/crypto/sha/sha256-x86_64.s - ../asm/android/x86_64/crypto/sha/sha1-mb-x86_64.s - ../asm/android/x86_64/crypto/sha/sha1-x86_64.s - ../asm/android/x86_64/crypto/sha/sha256-mb-x86_64.s - ../asm/android/x86_64/crypto/sha/sha512-x86_64.s - ../asm/android/x86_64/crypto/sha/keccak1600-x86_64.s - ../asm/android/x86_64/crypto/chacha/chacha-x86_64.s - ../asm/android/x86_64/crypto/modes/ghash-x86_64.s - ../asm/android/x86_64/crypto/modes/aesni-gcm-x86_64.s - bn/asm/x86_64-gcc.c - bn/rsaz_exp.c - dso/dso_dlfcn.c - rand/rand_vms.c - ) -ENDIF() - -IF (OS_ANDROID AND ARCH_I686) - CFLAGS( - -DOPENSSL_PIC - -DOPENSSL_BN_ASM_PART_WORDS - -DOPENSSL_IA32_SSE2 - -DOPENSSL_BN_ASM_GF2m - -DRC4_ASM - -DMD5_ASM - -DRMD160_ASM - -DWHIRLPOOL_ASM - -DGHASH_ASM - ) - SRCS( - ../asm/android/i686/crypto/ec/ecp_nistz256-x86.s - ../asm/android/i686/crypto/bf/bf-586.s - ../asm/android/i686/crypto/md5/md5-586.s - ../asm/android/i686/crypto/rc4/rc4-586.s - ../asm/android/i686/crypto/whrlpool/wp-mmx.s - ../asm/android/i686/crypto/x86cpuid.s - ../asm/android/i686/crypto/des/crypt586.s - ../asm/android/i686/crypto/des/des-586.s - ../asm/android/i686/crypto/poly1305/poly1305-x86.s - ../asm/android/i686/crypto/ripemd/rmd-586.s - ../asm/android/i686/crypto/camellia/cmll-x86.s - ../asm/android/i686/crypto/bn/bn-586.s - ../asm/android/i686/crypto/bn/co-586.s - ../asm/android/i686/crypto/bn/x86-gf2m.s - ../asm/android/i686/crypto/bn/x86-mont.s - ../asm/android/i686/crypto/aes/aesni-x86.s - ../asm/android/i686/crypto/aes/vpaes-x86.s - ../asm/android/i686/crypto/sha/sha512-586.s - ../asm/android/i686/crypto/sha/sha256-586.s - ../asm/android/i686/crypto/sha/sha1-586.s - ../asm/android/i686/crypto/chacha/chacha-x86.s - ../asm/android/i686/crypto/modes/ghash-x86.s - dso/dso_dlfcn.c - rand/rand_vms.c - sha/keccak1600.c - whrlpool/wp_block.c - ) -ENDIF() - -IF (OS_ANDROID AND ARCH_ARM7) - IF (CLANG) - # XXX: This is a workarond for 'out of range immediate fixup value' - # error with clang integrated assembler: - # https://github.com/openssl/openssl/issues/7878 - CFLAGS( - -mno-thumb - ) - ENDIF() - CFLAGS( - -DOPENSSL_PIC - -DOPENSSL_BN_ASM_GF2m - -DAES_ASM - -DBSAES_ASM - -DGHASH_ASM - ) - SRCS( - ../asm/android/arm/crypto/ec/ecp_nistz256-armv4.S - ../asm/android/arm/crypto/poly1305/poly1305-armv4.S - ../asm/android/arm/crypto/armv4cpuid.S - ../asm/android/arm/crypto/bn/armv4-mont.S - ../asm/android/arm/crypto/bn/armv4-gf2m.S - ../asm/android/arm/crypto/aes/aes-armv4.S - ../asm/android/arm/crypto/aes/bsaes-armv7.S - ../asm/android/arm/crypto/aes/aesv8-armx.S - ../asm/android/arm/crypto/sha/keccak1600-armv4.S - ../asm/android/arm/crypto/sha/sha256-armv4.S - ../asm/android/arm/crypto/sha/sha512-armv4.S - ../asm/android/arm/crypto/sha/sha1-armv4-large.S - ../asm/android/arm/crypto/chacha/chacha-armv4.S - ../asm/android/arm/crypto/modes/ghashv8-armx.S - ../asm/android/arm/crypto/modes/ghash-armv4.S - armcap.c - bn/bn_asm.c - camellia/camellia.c - camellia/cmll_cbc.c - dso/dso_dlfcn.c - rand/rand_vms.c - rc4/rc4_enc.c - rc4/rc4_skey.c - whrlpool/wp_block.c - ) -ENDIF() - -IF (OS_ANDROID AND ARCH_ARM64) - CFLAGS( - -DOPENSSL_PIC - ) - SRCS( - ../asm/android/arm64/crypto/ec/ecp_nistz256-armv8.S - ../asm/android/arm64/crypto/poly1305/poly1305-armv8.S - ../asm/android/arm64/crypto/bn/armv8-mont.S - ../asm/android/arm64/crypto/aes/vpaes-armv8.S - ../asm/android/arm64/crypto/aes/aesv8-armx.S - ../asm/android/arm64/crypto/sha/sha512-armv8.S - ../asm/android/arm64/crypto/sha/keccak1600-armv8.S - ../asm/android/arm64/crypto/sha/sha1-armv8.S - ../asm/android/arm64/crypto/sha/sha256-armv8.S - ../asm/android/arm64/crypto/arm64cpuid.S - ../asm/android/arm64/crypto/chacha/chacha-armv8.S - ../asm/android/arm64/crypto/modes/ghashv8-armx.S - armcap.c - bn/bn_asm.c - camellia/camellia.c - camellia/cmll_cbc.c - dso/dso_dlfcn.c - rand/rand_vms.c - rc4/rc4_enc.c - rc4/rc4_skey.c - whrlpool/wp_block.c - ) -ENDIF() - -# mitigate SIGILL on some armv7 platforms -# https://github.com/openssl/openssl/issues/17009 -IF (ARCADIA_OPENSSL_DISABLE_ARMV7_TICK) - CFLAGS( - -DARCADIA_OPENSSL_DISABLE_ARMV7_TICK - ) -ENDIF() +CFLAGS(-DOPENSSL_BUILD=1) +IF (NOT EXPORT_CMAKE OR NOT OPENSOURCE_REPLACE_OPENSSL) +PEERDIR(contrib/libs/openssl) ENDIF() # IF (NOT EXPORT_CMAKE OR NOT OPENSOURCE_REPLACE_OPENSSL) END() diff --git a/contrib/libs/openssl/crypto/ya.make.inc b/contrib/libs/openssl/crypto/ya.make.inc new file mode 100644 index 00000000000..f3394457d55 --- /dev/null +++ b/contrib/libs/openssl/crypto/ya.make.inc @@ -0,0 +1,1340 @@ + +PEERDIR( + contrib/libs/zlib + library/cpp/sanitizer/include +) + +ADDINCL( + contrib/libs/openssl + contrib/libs/openssl/crypto + contrib/libs/openssl/crypto/ec/curve448 + contrib/libs/openssl/crypto/ec/curve448/arch_32 + contrib/libs/openssl/crypto/modes + contrib/libs/openssl/include +) + +CFLAGS(-DOPENSSL_BUILD=1) + +IF (OS_LINUX) + IF (ARCH_ARM64) + SET(LINUX_ARM64 yes) + ELSEIF (ARCH_ARM7) + SET(LINUX_ARMV7 yes) + ELSEIF (ARCH_X86_64) + SET(LINUX_X86_64 yes) + ENDIF() +ENDIF() + +IF (OS_IOS) + IF (ARCH_ARM64) + SET(IOS_ARM64 yes) + ELSEIF (ARCH_ARM7) + SET(IOS_ARMV7 yes) + ELSEIF (ARCH_X86_64) + SET(IOS_X86_64 yes) + ELSEIF (ARCH_I386) + SET(IOS_I386 yes) + ENDIF() +ENDIF() + +IF (OS_ANDROID) + IF (ARCH_ARM64) + SET(ANDROID_ARM64 yes) + ELSEIF (ARCH_ARM7) + SET(ANDROID_ARMV7 yes) + ELSEIF (ARCH_X86_64) + SET(ANDROID_X86_64 yes) + ELSEIF (ARCH_I686) + SET(ANDROID_I686 yes) + ENDIF() +ENDIF() + +IF (OS_WINDOWS) + IF (ARCH_X86_64) + SET(WINDOWS_X86_64 yes) + ELSEIF (ARCH_I686) + SET(WINDOWS_I686 yes) + ENDIF() +ENDIF() + +IF (OS_DARWIN AND ARCH_ARM64) + SET(DARWIN_ARM64 yes) +ENDIF() + +NO_COMPILER_WARNINGS() + +NO_RUNTIME() + +SUPPRESSIONS(ubsan.supp) + +CFLAGS( + -DOPENSSL_BN_ASM_MONT + -DOPENSSL_CPUID_OBJ + -DSHA1_ASM + -DSHA256_ASM + -DSHA512_ASM + -DZLIB +) + +IF (NOT OS_IOS AND NOT DARWIN_ARM64) + CFLAGS( + -DDSO_NONE + -DAESNI_ASM + ) +ENDIF() + +IF (NOT WINDOWS_I686) + CFLAGS( + -DECP_NISTZ256_ASM + -DPOLY1305_ASM + ) +ENDIF() + +IF (NOT IOS_I386 AND NOT ANDROID_I686 AND NOT WINDOWS_I686) + CFLAGS( + -DKECCAK1600_ASM + ) +ENDIF() + +IF (NOT IOS_ARMV7 AND NOT ANDROID_ARMV7 AND NOT LINUX_ARMV7) + CFLAGS( + -DVPAES_ASM + ) +ENDIF() + +IF (NOT OS_WINDOWS) + CFLAGS( + -DENGINESDIR=\"/usr/local/lib/engines-1.1\" + -DOPENSSLDIR=\"/usr/local/ssl\" + ) +ENDIF() + +IF (OS_DARWIN AND ARCH_X86_64 OR OS_LINUX AND ARCH_X86_64 OR OS_WINDOWS AND ARCH_X86_64) + CFLAGS( + -DGHASH_ASM + -DL_ENDIAN + -DMD5_ASM + -DOPENSSL_BN_ASM_GF2m + -DOPENSSL_BN_ASM_MONT5 + -DOPENSSL_IA32_SSE2 + -DRC4_ASM + -DX25519_ASM + ) +ENDIF() + +IF (OS_LINUX AND ARCH_AARCH64 OR OS_LINUX AND ARCH_X86_64) + CFLAGS( + -DOPENSSL_USE_NODELETE + ) +ENDIF() + +IF (OS_DARWIN AND ARCH_ARM64) + CFLAGS( + -DL_ENDIAN + -DOPENSSL_PIC + ) +ENDIF() + +IF (OS_WINDOWS) + IF (ARCH_X86_64) + CFLAGS( + -DENGINESDIR="\"C:\\\\Program\ Files\\\\OpenSSL\\\\lib\\\\engines-1_1\"" + -DOPENSSLDIR="\"C:\\\\Program\ Files\\\\Common\ Files\\\\SSL\"" + ) + ELSEIF (ARCH_I386) + CFLAGS( + -DENGINESDIR="\"C:\\\\Program\ Files\ \(x86\)\\\\OpenSSL\\\\lib\\\\engines-1_1\"" + -DOPENSSLDIR="\"C:\\\\Program\ Files\ \(x86\)\\\\Common\ Files\\\\SSL\"" + ) + ENDIF() + CFLAGS( + -DOPENSSL_SYS_WIN32 + /GF + ) +ENDIF() + +IF (SANITIZER_TYPE == memory) + CFLAGS( + -DPURIFY + ) +ENDIF() + +IF (MUSL) + CFLAGS( + -DOPENSSL_NO_ASYNC + ) +ENDIF() + +IF (ARCH_TYPE_32) + CFLAGS( + -DOPENSSL_NO_EC_NISTP_64_GCC_128 + ) +ENDIF() + +IF (ARCH_X86_64 AND NOT MSVC) + SET_APPEND( + SFLAGS + -mavx512bw + -mavx512ifma + -mavx512vl + ) +ENDIF() + +SRCS( + aes/aes_cbc.c + aes/aes_cfb.c + aes/aes_ecb.c + aes/aes_ige.c + aes/aes_misc.c + aes/aes_ofb.c + aes/aes_wrap.c + aria/aria.c + asn1/a_bitstr.c + asn1/a_d2i_fp.c + asn1/a_digest.c + asn1/a_dup.c + asn1/a_gentm.c + asn1/a_i2d_fp.c + asn1/a_int.c + asn1/a_mbstr.c + asn1/a_object.c + asn1/a_octet.c + asn1/a_print.c + asn1/a_sign.c + asn1/a_strex.c + asn1/a_strnid.c + asn1/a_time.c + asn1/a_type.c + asn1/a_utctm.c + asn1/a_utf8.c + asn1/a_verify.c + asn1/ameth_lib.c + asn1/asn1_err.c + asn1/asn1_gen.c + asn1/asn1_item_list.c + asn1/asn1_lib.c + asn1/asn1_par.c + asn1/asn_mime.c + asn1/asn_moid.c + asn1/asn_mstbl.c + asn1/asn_pack.c + asn1/bio_asn1.c + asn1/bio_ndef.c + asn1/d2i_pr.c + asn1/d2i_pu.c + asn1/evp_asn1.c + asn1/f_int.c + asn1/f_string.c + asn1/i2d_pr.c + asn1/i2d_pu.c + asn1/n_pkey.c + asn1/nsseq.c + asn1/p5_pbe.c + asn1/p5_pbev2.c + asn1/p5_scrypt.c + asn1/p8_pkey.c + asn1/t_bitst.c + asn1/t_pkey.c + asn1/t_spki.c + asn1/tasn_dec.c + asn1/tasn_enc.c + asn1/tasn_fre.c + asn1/tasn_new.c + asn1/tasn_prn.c + asn1/tasn_scn.c + asn1/tasn_typ.c + asn1/tasn_utl.c + asn1/x_algor.c + asn1/x_bignum.c + asn1/x_info.c + asn1/x_int64.c + asn1/x_long.c + asn1/x_pkey.c + asn1/x_sig.c + asn1/x_spki.c + asn1/x_val.c + async/arch/async_null.c + async/arch/async_posix.c + async/arch/async_win.c + async/async.c + async/async_err.c + async/async_wait.c + bf/bf_cfb64.c + bf/bf_ecb.c + bf/bf_ofb64.c + bf/bf_skey.c + bio/b_addr.c + bio/b_dump.c + bio/b_print.c + bio/b_sock.c + bio/b_sock2.c + bio/bf_buff.c + bio/bf_lbuf.c + bio/bf_nbio.c + bio/bf_null.c + bio/bio_cb.c + bio/bio_err.c + bio/bio_lib.c + bio/bio_meth.c + bio/bss_acpt.c + bio/bss_bio.c + bio/bss_conn.c + bio/bss_dgram.c + bio/bss_fd.c + bio/bss_file.c + bio/bss_log.c + bio/bss_mem.c + bio/bss_null.c + bio/bss_sock.c + blake2/blake2b.c + blake2/blake2s.c + blake2/m_blake2b.c + blake2/m_blake2s.c + bn/bn_add.c + bn/bn_blind.c + bn/bn_const.c + bn/bn_ctx.c + bn/bn_depr.c + bn/bn_dh.c + bn/bn_div.c + bn/bn_err.c + bn/bn_exp.c + bn/bn_exp2.c + bn/bn_gcd.c + bn/bn_gf2m.c + bn/bn_intern.c + bn/bn_kron.c + bn/bn_lib.c + bn/bn_mod.c + bn/bn_mont.c + bn/bn_mpi.c + bn/bn_mul.c + bn/bn_nist.c + bn/bn_prime.c + bn/bn_print.c + bn/bn_rand.c + bn/bn_recp.c + bn/bn_shift.c + bn/bn_sqr.c + bn/bn_sqrt.c + bn/bn_srp.c + bn/bn_word.c + bn/bn_x931p.c + buffer/buf_err.c + buffer/buffer.c + camellia/cmll_cfb.c + camellia/cmll_ctr.c + camellia/cmll_ecb.c + camellia/cmll_ofb.c + cast/c_cfb64.c + cast/c_ecb.c + cast/c_enc.c + cast/c_ofb64.c + cast/c_skey.c + cmac/cm_ameth.c + cmac/cm_pmeth.c + cmac/cmac.c + cms/cms_asn1.c + cms/cms_att.c + cms/cms_cd.c + cms/cms_dd.c + cms/cms_enc.c + cms/cms_env.c + cms/cms_err.c + cms/cms_ess.c + cms/cms_io.c + cms/cms_kari.c + cms/cms_lib.c + cms/cms_pwri.c + cms/cms_sd.c + cms/cms_smime.c + comp/c_zlib.c + comp/comp_err.c + comp/comp_lib.c + conf/conf_api.c + conf/conf_def.c + conf/conf_err.c + conf/conf_lib.c + conf/conf_mall.c + conf/conf_mod.c + conf/conf_sap.c + conf/conf_ssl.c + cpt_err.c + cryptlib.c + ct/ct_b64.c + ct/ct_err.c + ct/ct_log.c + ct/ct_oct.c + ct/ct_policy.c + ct/ct_prn.c + ct/ct_sct.c + ct/ct_sct_ctx.c + ct/ct_vfy.c + ct/ct_x509v3.c + ctype.c + cversion.c + des/cbc_cksm.c + des/cbc_enc.c + des/cfb64ede.c + des/cfb64enc.c + des/cfb_enc.c + des/ecb3_enc.c + des/ecb_enc.c + des/fcrypt.c + des/ofb64ede.c + des/ofb64enc.c + des/ofb_enc.c + des/pcbc_enc.c + des/qud_cksm.c + des/rand_key.c + des/set_key.c + des/str2key.c + des/xcbc_enc.c + dh/dh_ameth.c + dh/dh_asn1.c + dh/dh_check.c + dh/dh_depr.c + dh/dh_err.c + dh/dh_gen.c + dh/dh_kdf.c + dh/dh_key.c + dh/dh_lib.c + dh/dh_meth.c + dh/dh_pmeth.c + dh/dh_prn.c + dh/dh_rfc5114.c + dh/dh_rfc7919.c + dsa/dsa_ameth.c + dsa/dsa_asn1.c + dsa/dsa_depr.c + dsa/dsa_err.c + dsa/dsa_gen.c + dsa/dsa_key.c + dsa/dsa_lib.c + dsa/dsa_meth.c + dsa/dsa_ossl.c + dsa/dsa_pmeth.c + dsa/dsa_prn.c + dsa/dsa_sign.c + dsa/dsa_vrf.c + dso/dso_dl.c + dso/dso_err.c + dso/dso_lib.c + dso/dso_openssl.c + dso/dso_vms.c + dso/dso_win32.c + ebcdic.c + ec/curve25519.c + ec/curve448/arch_32/f_impl.c + ec/curve448/curve448.c + ec/curve448/curve448_tables.c + ec/curve448/eddsa.c + ec/curve448/f_generic.c + ec/curve448/scalar.c + ec/ec2_oct.c + ec/ec2_smpl.c + ec/ec_ameth.c + ec/ec_asn1.c + ec/ec_check.c + ec/ec_curve.c + ec/ec_cvt.c + ec/ec_err.c + ec/ec_key.c + ec/ec_kmeth.c + ec/ec_lib.c + ec/ec_mult.c + ec/ec_oct.c + ec/ec_pmeth.c + ec/ec_print.c + ec/ecdh_kdf.c + ec/ecdh_ossl.c + ec/ecdsa_ossl.c + ec/ecdsa_sign.c + ec/ecdsa_vrf.c + ec/eck_prn.c + ec/ecp_mont.c + ec/ecp_nist.c + ec/ecp_nistp224.c + ec/ecp_nistp256.c + ec/ecp_nistp521.c + ec/ecp_nistputil.c + ec/ecp_oct.c + ec/ecp_smpl.c + ec/ecx_meth.c + engine/eng_all.c + engine/eng_cnf.c + engine/eng_ctrl.c + engine/eng_dyn.c + engine/eng_err.c + engine/eng_fat.c + engine/eng_init.c + engine/eng_lib.c + engine/eng_list.c + engine/eng_openssl.c + engine/eng_pkey.c + engine/eng_rdrand.c + engine/eng_table.c + engine/tb_asnmth.c + engine/tb_cipher.c + engine/tb_dh.c + engine/tb_digest.c + engine/tb_dsa.c + engine/tb_eckey.c + engine/tb_pkmeth.c + engine/tb_rand.c + engine/tb_rsa.c + err/err.c + err/err_all.c + err/err_prn.c + evp/bio_b64.c + evp/bio_enc.c + evp/bio_md.c + evp/bio_ok.c + evp/c_allc.c + evp/c_alld.c + evp/cmeth_lib.c + evp/digest.c + evp/e_aes.c + evp/e_aes_cbc_hmac_sha1.c + evp/e_aes_cbc_hmac_sha256.c + evp/e_aria.c + evp/e_bf.c + evp/e_camellia.c + evp/e_cast.c + evp/e_chacha20_poly1305.c + evp/e_des.c + evp/e_des3.c + evp/e_idea.c + evp/e_null.c + evp/e_old.c + evp/e_rc2.c + evp/e_rc4.c + evp/e_rc4_hmac_md5.c + evp/e_rc5.c + evp/e_seed.c + evp/e_sm4.c + evp/e_xcbc_d.c + evp/encode.c + evp/evp_cnf.c + evp/evp_enc.c + evp/evp_err.c + evp/evp_key.c + evp/evp_lib.c + evp/evp_pbe.c + evp/evp_pkey.c + evp/m_md2.c + evp/m_md4.c + evp/m_md5.c + evp/m_md5_sha1.c + evp/m_mdc2.c + evp/m_null.c + evp/m_ripemd.c + evp/m_sha1.c + evp/m_sha3.c + evp/m_sigver.c + evp/m_wp.c + evp/names.c + evp/p5_crpt.c + evp/p5_crpt2.c + evp/p_dec.c + evp/p_enc.c + evp/p_lib.c + evp/p_open.c + evp/p_seal.c + evp/p_sign.c + evp/p_verify.c + evp/pbe_scrypt.c + evp/pmeth_fn.c + evp/pmeth_gn.c + evp/pmeth_lib.c + ex_data.c + getenv.c + hmac/hm_ameth.c + hmac/hm_pmeth.c + hmac/hmac.c + idea/i_cbc.c + idea/i_cfb64.c + idea/i_ecb.c + idea/i_ofb64.c + idea/i_skey.c + init.c + kdf/hkdf.c + kdf/kdf_err.c + kdf/scrypt.c + kdf/tls1_prf.c + lhash/lh_stats.c + lhash/lhash.c + md4/md4_dgst.c + md4/md4_one.c + md5/md5_dgst.c + md5/md5_one.c + mdc2/mdc2_one.c + mdc2/mdc2dgst.c + mem.c + mem_dbg.c + mem_sec.c + modes/cbc128.c + modes/ccm128.c + modes/cfb128.c + modes/ctr128.c + modes/cts128.c + modes/gcm128.c + modes/ocb128.c + modes/ofb128.c + modes/wrap128.c + modes/xts128.c + o_dir.c + o_fips.c + o_fopen.c + o_init.c + o_str.c + o_time.c + objects/o_names.c + objects/obj_dat.c + objects/obj_err.c + objects/obj_lib.c + objects/obj_xref.c + ocsp/ocsp_asn.c + ocsp/ocsp_cl.c + ocsp/ocsp_err.c + ocsp/ocsp_ext.c + ocsp/ocsp_ht.c + ocsp/ocsp_lib.c + ocsp/ocsp_prn.c + ocsp/ocsp_srv.c + ocsp/ocsp_vfy.c + ocsp/v3_ocsp.c + pem/pem_all.c + pem/pem_err.c + pem/pem_info.c + pem/pem_lib.c + pem/pem_oth.c + pem/pem_pk8.c + pem/pem_pkey.c + pem/pem_sign.c + pem/pem_x509.c + pem/pem_xaux.c + pem/pvkfmt.c + pkcs12/p12_add.c + pkcs12/p12_asn.c + pkcs12/p12_attr.c + pkcs12/p12_crpt.c + pkcs12/p12_crt.c + pkcs12/p12_decr.c + pkcs12/p12_init.c + pkcs12/p12_key.c + pkcs12/p12_kiss.c + pkcs12/p12_mutl.c + pkcs12/p12_npas.c + pkcs12/p12_p8d.c + pkcs12/p12_p8e.c + pkcs12/p12_sbag.c + pkcs12/p12_utl.c + pkcs12/pk12err.c + pkcs7/bio_pk7.c + pkcs7/pk7_asn1.c + pkcs7/pk7_attr.c + pkcs7/pk7_doit.c + pkcs7/pk7_lib.c + pkcs7/pk7_mime.c + pkcs7/pk7_smime.c + pkcs7/pkcs7err.c + poly1305/poly1305.c + poly1305/poly1305_ameth.c + poly1305/poly1305_pmeth.c + rand/drbg_ctr.c + rand/drbg_lib.c + rand/rand_egd.c + rand/rand_err.c + rand/rand_lib.c + rand/rand_unix.c + rand/rand_win.c + rand/randfile.c + rc2/rc2_cbc.c + rc2/rc2_ecb.c + rc2/rc2_skey.c + rc2/rc2cfb64.c + rc2/rc2ofb64.c + ripemd/rmd_dgst.c + ripemd/rmd_one.c + rsa/rsa_ameth.c + rsa/rsa_asn1.c + rsa/rsa_chk.c + rsa/rsa_crpt.c + rsa/rsa_depr.c + rsa/rsa_err.c + rsa/rsa_gen.c + rsa/rsa_lib.c + rsa/rsa_meth.c + rsa/rsa_mp.c + rsa/rsa_none.c + rsa/rsa_oaep.c + rsa/rsa_ossl.c + rsa/rsa_pk1.c + rsa/rsa_pmeth.c + rsa/rsa_prn.c + rsa/rsa_pss.c + rsa/rsa_saos.c + rsa/rsa_sign.c + rsa/rsa_ssl.c + rsa/rsa_x931.c + rsa/rsa_x931g.c + seed/seed.c + seed/seed_cbc.c + seed/seed_cfb.c + seed/seed_ecb.c + seed/seed_ofb.c + sha/sha1_one.c + sha/sha1dgst.c + sha/sha256.c + sha/sha512.c + siphash/siphash.c + siphash/siphash_ameth.c + siphash/siphash_pmeth.c + sm2/sm2_crypt.c + sm2/sm2_err.c + sm2/sm2_pmeth.c + sm2/sm2_sign.c + sm3/m_sm3.c + sm3/sm3.c + sm4/sm4.c + srp/srp_lib.c + srp/srp_vfy.c + stack/stack.c + store/loader_file.c + store/store_err.c + store/store_init.c + store/store_lib.c + store/store_register.c + store/store_strings.c + threads_none.c + threads_pthread.c + threads_win.c + ts/ts_asn1.c + ts/ts_conf.c + ts/ts_err.c + ts/ts_lib.c + ts/ts_req_print.c + ts/ts_req_utils.c + ts/ts_rsp_print.c + ts/ts_rsp_sign.c + ts/ts_rsp_utils.c + ts/ts_rsp_verify.c + ts/ts_verify_ctx.c + txt_db/txt_db.c + ui/ui_err.c + ui/ui_lib.c + ui/ui_null.c + ui/ui_openssl.c + ui/ui_util.c + uid.c + whrlpool/wp_dgst.c + x509/by_dir.c + x509/by_file.c + x509/t_crl.c + x509/t_req.c + x509/t_x509.c + x509/x509_att.c + x509/x509_cmp.c + x509/x509_d2.c + x509/x509_def.c + x509/x509_err.c + x509/x509_ext.c + x509/x509_lu.c + x509/x509_meth.c + x509/x509_obj.c + x509/x509_r2x.c + x509/x509_req.c + x509/x509_set.c + x509/x509_trs.c + x509/x509_txt.c + x509/x509_v3.c + x509/x509_vfy.c + x509/x509_vpm.c + x509/x509cset.c + x509/x509name.c + x509/x509rset.c + x509/x509spki.c + x509/x509type.c + x509/x_all.c + x509/x_attrib.c + x509/x_crl.c + x509/x_exten.c + x509/x_name.c + x509/x_pubkey.c + x509/x_req.c + x509/x_x509.c + x509/x_x509a.c + x509v3/pcy_cache.c + x509v3/pcy_data.c + x509v3/pcy_lib.c + x509v3/pcy_map.c + x509v3/pcy_node.c + x509v3/pcy_tree.c + x509v3/v3_addr.c + x509v3/v3_admis.c + x509v3/v3_akey.c + x509v3/v3_akeya.c + x509v3/v3_alt.c + x509v3/v3_asid.c + x509v3/v3_bcons.c + x509v3/v3_bitst.c + x509v3/v3_conf.c + x509v3/v3_cpols.c + x509v3/v3_crld.c + x509v3/v3_enum.c + x509v3/v3_extku.c + x509v3/v3_genn.c + x509v3/v3_ia5.c + x509v3/v3_info.c + x509v3/v3_int.c + x509v3/v3_lib.c + x509v3/v3_ncons.c + x509v3/v3_pci.c + x509v3/v3_pcia.c + x509v3/v3_pcons.c + x509v3/v3_pku.c + x509v3/v3_pmaps.c + x509v3/v3_prn.c + x509v3/v3_purp.c + x509v3/v3_skey.c + x509v3/v3_sxnet.c + x509v3/v3_tlsf.c + x509v3/v3_utl.c + x509v3/v3err.c +) + +IF (NOT WINDOWS_I686) + SRCS( + ec/ecp_nistz256.c + ) +ENDIF() + +IF (NOT IOS_ARMV7 AND NOT ANDROID_ARMV7 AND NOT LINUX_ARMV7) + SRCS( + aes/aes_core.c + ) +ENDIF() + +IF (NOT IOS_I386 AND NOT ANDROID_I686 AND NOT WINDOWS_I686) + SRCS( + bf/bf_enc.c + camellia/cmll_misc.c + des/des_enc.c + des/fcrypt_b.c + ) +ENDIF() + +IF (OS_DARWIN AND ARCH_X86_64 OR OS_LINUX AND ARCH_X86_64 OR OS_WINDOWS AND ARCH_X86_64) + SRCS( + bn/rsaz_exp.c + ) +ENDIF() + +IF (OS_DARWIN AND ARCH_X86_64 OR OS_LINUX AND ARCH_X86_64) + SRCS( + bn/asm/x86_64-gcc.c + ) +ENDIF() + +IF (OS_LINUX AND ARCH_AARCH64 OR OS_WINDOWS AND ARCH_X86_64 OR OS_LINUX AND ARCH_PPC64LE) + SRCS( + bn/bn_asm.c + ) +ENDIF() + +IF (OS_DARWIN AND ARCH_X86_64) + SRCS( + ../asm/darwin/crypto/aes/aesni-mb-x86_64.s + ../asm/darwin/crypto/aes/aesni-sha1-x86_64.s + ../asm/darwin/crypto/aes/aesni-sha256-x86_64.s + ../asm/darwin/crypto/aes/aesni-x86_64.s + ../asm/darwin/crypto/aes/vpaes-x86_64.s + ../asm/darwin/crypto/bn/rsaz-avx2.s + ../asm/darwin/crypto/bn/rsaz-x86_64.s + ../asm/darwin/crypto/bn/x86_64-gf2m.s + ../asm/darwin/crypto/bn/x86_64-mont.s + ../asm/darwin/crypto/bn/x86_64-mont5.s + ../asm/darwin/crypto/camellia/cmll-x86_64.s + ../asm/darwin/crypto/chacha/chacha-x86_64.s + ../asm/darwin/crypto/ec/ecp_nistz256-x86_64.s + ../asm/darwin/crypto/ec/x25519-x86_64.s + ../asm/darwin/crypto/md5/md5-x86_64.s + ../asm/darwin/crypto/modes/aesni-gcm-x86_64.s + ../asm/darwin/crypto/modes/ghash-x86_64.s + ../asm/darwin/crypto/poly1305/poly1305-x86_64.s + ../asm/darwin/crypto/rc4/rc4-md5-x86_64.s + ../asm/darwin/crypto/rc4/rc4-x86_64.s + ../asm/darwin/crypto/sha/keccak1600-x86_64.s + ../asm/darwin/crypto/sha/sha1-mb-x86_64.s + ../asm/darwin/crypto/sha/sha1-x86_64.s + ../asm/darwin/crypto/sha/sha256-mb-x86_64.s + ../asm/darwin/crypto/sha/sha256-x86_64.s + ../asm/darwin/crypto/sha/sha512-x86_64.s + ../asm/darwin/crypto/whrlpool/wp-x86_64.s + ../asm/darwin/crypto/x86_64cpuid.s + ) +ENDIF() + +IF (OS_DARWIN AND ARCH_ARM64) + SRCS( + ../asm/darwin-arm64/crypto/sha/keccak1600-armv8.S + ../asm/darwin-arm64/crypto/sha/sha512-armv8.S + ../asm/darwin-arm64/crypto/sha/sha1-armv8.S + ../asm/darwin-arm64/crypto/sha/sha256-armv8.S + ../asm/darwin-arm64/crypto/poly1305/poly1305-armv8.S + ../asm/darwin-arm64/crypto/ec/ecp_nistz256-armv8.S + ../asm/darwin-arm64/crypto/chacha/chacha-armv8.S + ../asm/darwin-arm64/crypto/bn/armv8-mont.S + ../asm/darwin-arm64/crypto/arm64cpuid.S + ../asm/darwin-arm64/crypto/aes/aesv8-armx.S + ../asm/darwin-arm64/crypto/aes/vpaes-armv8.S + ../asm/darwin-arm64/crypto/modes/ghashv8-armx.S + armcap.c + bn/bn_asm.c + camellia/camellia.c + camellia/cmll_cbc.c + dso/dso_dlfcn.c + rc4/rc4_enc.c + rc4/rc4_skey.c + whrlpool/wp_block.c + ) +ENDIF() + +IF (OS_LINUX AND ARCH_ARM7) + CFLAGS( + -DOPENSSL_PIC + -DOPENSSL_BN_ASM_GF2m + -DAES_ASM + -DBSAES_ASM + -DGHASH_ASM + ) + SRCS( + ../asm/android/arm/crypto/ec/ecp_nistz256-armv4.S + ../asm/android/arm/crypto/poly1305/poly1305-armv4.S + ../asm/android/arm/crypto/armv4cpuid.S + ../asm/android/arm/crypto/bn/armv4-mont.S + ../asm/android/arm/crypto/bn/armv4-gf2m.S + ../asm/android/arm/crypto/aes/aes-armv4.S + ../asm/android/arm/crypto/aes/bsaes-armv7.S + ../asm/android/arm/crypto/aes/aesv8-armx.S + ../asm/android/arm/crypto/sha/keccak1600-armv4.S + ../asm/android/arm/crypto/sha/sha256-armv4.S + ../asm/android/arm/crypto/sha/sha512-armv4.S + ../asm/android/arm/crypto/sha/sha1-armv4-large.S + ../asm/android/arm/crypto/chacha/chacha-armv4.S + ../asm/android/arm/crypto/modes/ghashv8-armx.S + ../asm/android/arm/crypto/modes/ghash-armv4.S + armcap.c + bn/bn_asm.c + camellia/camellia.c + camellia/cmll_cbc.c + dso/dso_dlfcn.c + rand/rand_vms.c + rc4/rc4_enc.c + rc4/rc4_skey.c + whrlpool/wp_block.c + ) +ENDIF() + +IF (OS_LINUX AND ARCH_AARCH64) + SRCS( + ../asm/aarch64/crypto/aes/aesv8-armx.S + ../asm/aarch64/crypto/aes/vpaes-armv8.S + ../asm/aarch64/crypto/arm64cpuid.S + ../asm/aarch64/crypto/bn/armv8-mont.S + ../asm/aarch64/crypto/chacha/chacha-armv8.S + ../asm/aarch64/crypto/ec/ecp_nistz256-armv8.S + ../asm/aarch64/crypto/modes/ghashv8-armx.S + ../asm/aarch64/crypto/poly1305/poly1305-armv8.S + ../asm/aarch64/crypto/sha/keccak1600-armv8.S + ../asm/aarch64/crypto/sha/sha1-armv8.S + ../asm/aarch64/crypto/sha/sha256-armv8.S + ../asm/aarch64/crypto/sha/sha512-armv8.S + armcap.c + camellia/camellia.c + camellia/cmll_cbc.c + rc4/rc4_enc.c + rc4/rc4_skey.c + whrlpool/wp_block.c + ) +ENDIF() + +IF (OS_LINUX AND ARCH_PPC64LE) + SRCS( + ../asm/ppc64le/crypto/aes/aesp8-ppc.s + ../asm/ppc64le/crypto/aes/vpaes-ppc.s + ../asm/ppc64le/crypto/bn/bn-ppc.s + ../asm/ppc64le/crypto/bn/ppc-mont.s + ../asm/ppc64le/crypto/chacha/chacha-ppc.s + ../asm/ppc64le/crypto/ec/ecp_nistz256-ppc64.s + ../asm/ppc64le/crypto/ec/x25519-ppc64.s + ../asm/ppc64le/crypto/modes/ghashp8-ppc.s + ../asm/ppc64le/crypto/poly1305/poly1305-ppc.s + ../asm/ppc64le/crypto/poly1305/poly1305-ppcfp.s + ../asm/ppc64le/crypto/ppccpuid.s + ../asm/ppc64le/crypto/sha/keccak1600-ppc64.s + ../asm/ppc64le/crypto/sha/sha1-ppc.s + ../asm/ppc64le/crypto/sha/sha256-ppc.s + ../asm/ppc64le/crypto/sha/sha256p8-ppc.s + ../asm/ppc64le/crypto/sha/sha512-ppc.s + ../asm/ppc64le/crypto/sha/sha512p8-ppc.s + ppccap.c + camellia/camellia.c + camellia/cmll_cbc.c + rc4/rc4_enc.c + rc4/rc4_skey.c + whrlpool/wp_block.c + ) +ENDIF() + +IF (OS_LINUX AND ARCH_X86_64) + SRCS( + ../asm/linux/crypto/aes/aesni-mb-x86_64.s + ../asm/linux/crypto/aes/aesni-sha1-x86_64.s + ../asm/linux/crypto/aes/aesni-sha256-x86_64.s + ../asm/linux/crypto/aes/aesni-x86_64.s + ../asm/linux/crypto/aes/vpaes-x86_64.s + ../asm/linux/crypto/bn/rsaz-avx2.s + ../asm/linux/crypto/bn/rsaz-x86_64.s + ../asm/linux/crypto/bn/x86_64-gf2m.s + ../asm/linux/crypto/bn/x86_64-mont.s + ../asm/linux/crypto/bn/x86_64-mont5.s + ../asm/linux/crypto/camellia/cmll-x86_64.s + ../asm/linux/crypto/chacha/chacha-x86_64.s + ../asm/linux/crypto/ec/ecp_nistz256-x86_64.s + ../asm/linux/crypto/ec/x25519-x86_64.s + ../asm/linux/crypto/md5/md5-x86_64.s + ../asm/linux/crypto/modes/aesni-gcm-x86_64.s + ../asm/linux/crypto/modes/ghash-x86_64.s + ../asm/linux/crypto/poly1305/poly1305-x86_64.s + ../asm/linux/crypto/rc4/rc4-md5-x86_64.s + ../asm/linux/crypto/rc4/rc4-x86_64.s + ../asm/linux/crypto/sha/keccak1600-x86_64.s + ../asm/linux/crypto/sha/sha1-mb-x86_64.s + ../asm/linux/crypto/sha/sha1-x86_64.s + ../asm/linux/crypto/sha/sha256-mb-x86_64.s + ../asm/linux/crypto/sha/sha256-x86_64.s + ../asm/linux/crypto/sha/sha512-x86_64.s + ../asm/linux/crypto/whrlpool/wp-x86_64.s + ../asm/linux/crypto/x86_64cpuid.s + ) +ENDIF() + +IF (OS_WINDOWS AND ARCH_X86_64) + SRCS( + ../asm/windows/crypto/aes/aesni-mb-x86_64.masm + ../asm/windows/crypto/aes/aesni-sha1-x86_64.masm + ../asm/windows/crypto/aes/aesni-sha256-x86_64.masm + ../asm/windows/crypto/aes/aesni-x86_64.masm + ../asm/windows/crypto/aes/vpaes-x86_64.masm + ../asm/windows/crypto/bn/rsaz-avx2.masm + ../asm/windows/crypto/bn/rsaz-x86_64.masm + ../asm/windows/crypto/bn/x86_64-gf2m.masm + ../asm/windows/crypto/bn/x86_64-mont.masm + ../asm/windows/crypto/bn/x86_64-mont5.masm + ../asm/windows/crypto/camellia/cmll-x86_64.masm + ../asm/windows/crypto/chacha/chacha-x86_64.masm + ../asm/windows/crypto/ec/ecp_nistz256-x86_64.masm + ../asm/windows/crypto/ec/x25519-x86_64.masm + ../asm/windows/crypto/md5/md5-x86_64.masm + ../asm/windows/crypto/modes/aesni-gcm-x86_64.masm + ../asm/windows/crypto/modes/ghash-x86_64.masm + ../asm/windows/crypto/poly1305/poly1305-x86_64.masm + ../asm/windows/crypto/rc4/rc4-md5-x86_64.masm + ../asm/windows/crypto/rc4/rc4-x86_64.masm + ../asm/windows/crypto/sha/keccak1600-x86_64.masm + ../asm/windows/crypto/sha/sha1-mb-x86_64.masm + ../asm/windows/crypto/sha/sha1-x86_64.masm + ../asm/windows/crypto/sha/sha256-mb-x86_64.masm + ../asm/windows/crypto/sha/sha256-x86_64.masm + ../asm/windows/crypto/sha/sha512-x86_64.masm + ../asm/windows/crypto/whrlpool/wp-x86_64.masm + ../asm/windows/crypto/uplink-x86_64.masm + ../asm/windows/crypto/x86_64cpuid.masm + ) +ENDIF() + +IF (OS_WINDOWS AND ARCH_I386) + CFLAGS( + -DGHASH_ASM + -DOPENSSL_BN_ASM_GF2m + -DRC4_ASM + -DMD5_ASM + ) + MASMFLAGS( + /safeseh + ) + SRCS( + ../asm/windows/crypto/aes/aesni-x86.masm + ../asm/windows/crypto/aes/vpaes-x86.masm + ../asm/windows/crypto/bn/x86-gf2m.masm + ../asm/windows/crypto/bn/x86-mont.masm + ../asm/windows/crypto/camellia/cmll-x86.masm + ../asm/windows/crypto/chacha/chacha-x86.masm + ../asm/windows/crypto/md5/md5-586.masm + ../asm/windows/crypto/modes/ghash-x86.masm + ../asm/windows/crypto/rc4/rc4-586.masm + ../asm/windows/crypto/sha/sha1-586.masm + ../asm/windows/crypto/sha/sha256-586.masm + ../asm/windows/crypto/sha/sha512-586.masm + ../asm/windows/crypto/x86cpuid.masm + bf/bf_enc.c + bn/bn_asm.c + des/des_enc.c + des/fcrypt_b.c + sha/keccak1600.c + whrlpool/wp_block.c + ) +ENDIF() + +IF (OS_IOS AND ARCH_ARM64) + CFLAGS( + -DOPENSSL_PIC + -D_REENTRANT + ) + SRCS( + ../asm/ios/arm64/crypto/aes/aesv8-armx.S + ../asm/ios/arm64/crypto/aes/vpaes-armv8.S + ../asm/ios/arm64/crypto/arm64cpuid.S + ../asm/ios/arm64/crypto/bn/armv8-mont.S + ../asm/ios/arm64/crypto/chacha/chacha-armv8.S + ../asm/ios/arm64/crypto/ec/ecp_nistz256-armv8.S + ../asm/ios/arm64/crypto/modes/ghashv8-armx.S + ../asm/ios/arm64/crypto/poly1305/poly1305-armv8.S + ../asm/ios/arm64/crypto/sha/keccak1600-armv8.S + ../asm/ios/arm64/crypto/sha/sha1-armv8.S + ../asm/ios/arm64/crypto/sha/sha256-armv8.S + ../asm/ios/arm64/crypto/sha/sha512-armv8.S + armcap.c + bn/bn_asm.c + camellia/camellia.c + camellia/cmll_cbc.c + dso/dso_dlfcn.c + rand/rand_vms.c + rc4/rc4_enc.c + rc4/rc4_skey.c + whrlpool/wp_block.c + ) +ENDIF() + +IF (OS_IOS AND ARCH_X86_64) + CFLAGS( + -DL_ENDIAN + -DOPENSSL_PIC + -DOPENSSL_IA32_SSE2 + -DOPENSSL_BN_ASM_MONT5 + -DOPENSSL_BN_ASM_GF2m + -DRC4_ASM + -DMD5_ASM + -DGHASH_ASM + -DECP_NISTZ256_ASM + -DX25519_ASM + -D_REENTRANT + ) + SRCS( + ../asm/ios/x86_64/crypto/md5/md5-x86_64.s + ../asm/ios/x86_64/crypto/rc4/rc4-md5-x86_64.s + ../asm/ios/x86_64/crypto/rc4/rc4-x86_64.s + ../asm/ios/x86_64/crypto/modes/ghash-x86_64.s + ../asm/ios/x86_64/crypto/modes/aesni-gcm-x86_64.s + ../asm/ios/x86_64/crypto/chacha/chacha-x86_64.s + ../asm/ios/x86_64/crypto/ec/ecp_nistz256-x86_64.s + ../asm/ios/x86_64/crypto/ec/x25519-x86_64.s + ../asm/ios/x86_64/crypto/x86_64cpuid.s + ../asm/ios/x86_64/crypto/poly1305/poly1305-x86_64.s + ../asm/ios/x86_64/crypto/bn/rsaz-x86_64.s + ../asm/ios/x86_64/crypto/bn/x86_64-mont.s + ../asm/ios/x86_64/crypto/bn/x86_64-gf2m.s + ../asm/ios/x86_64/crypto/bn/x86_64-mont5.s + ../asm/ios/x86_64/crypto/bn/rsaz-avx2.s + ../asm/ios/x86_64/crypto/sha/sha512-x86_64.s + ../asm/ios/x86_64/crypto/sha/sha256-x86_64.s + ../asm/ios/x86_64/crypto/sha/keccak1600-x86_64.s + ../asm/ios/x86_64/crypto/sha/sha1-x86_64.s + ../asm/ios/x86_64/crypto/sha/sha1-mb-x86_64.s + ../asm/ios/x86_64/crypto/sha/sha256-mb-x86_64.s + ../asm/ios/x86_64/crypto/camellia/cmll-x86_64.s + ../asm/ios/x86_64/crypto/whrlpool/wp-x86_64.s + ../asm/ios/x86_64/crypto/aes/vpaes-x86_64.s + ../asm/ios/x86_64/crypto/aes/aesni-sha1-x86_64.s + ../asm/ios/x86_64/crypto/aes/aesni-sha256-x86_64.s + ../asm/ios/x86_64/crypto/aes/aesni-x86_64.s + ../asm/ios/x86_64/crypto/aes/aesni-mb-x86_64.s + bn/asm/x86_64-gcc.c + bn/rsaz_exp.c + dso/dso_dlfcn.c + rand/rand_vms.c + ) +ENDIF() + +IF (OS_ANDROID AND ARCH_X86_64) + CFLAGS( + -DOPENSSL_USE_NODELETE + -DOPENSSL_PIC + -DOPENSSL_IA32_SSE2 + -DOPENSSL_BN_ASM_MONT5 + -DOPENSSL_BN_ASM_GF2m + -DRC4_ASM + -DMD5_ASM + -DGHASH_ASM + -DX25519_ASM + ) + SRCS( + ../asm/android/x86_64/crypto/ec/x25519-x86_64.s + ../asm/android/x86_64/crypto/ec/ecp_nistz256-x86_64.s + ../asm/android/x86_64/crypto/md5/md5-x86_64.s + ../asm/android/x86_64/crypto/rc4/rc4-x86_64.s + ../asm/android/x86_64/crypto/rc4/rc4-md5-x86_64.s + ../asm/android/x86_64/crypto/whrlpool/wp-x86_64.s + ../asm/android/x86_64/crypto/poly1305/poly1305-x86_64.s + ../asm/android/x86_64/crypto/x86_64cpuid.s + ../asm/android/x86_64/crypto/camellia/cmll-x86_64.s + ../asm/android/x86_64/crypto/bn/x86_64-mont5.s + ../asm/android/x86_64/crypto/bn/rsaz-avx2.s + ../asm/android/x86_64/crypto/bn/rsaz-x86_64.s + ../asm/android/x86_64/crypto/bn/x86_64-mont.s + ../asm/android/x86_64/crypto/bn/x86_64-gf2m.s + ../asm/android/x86_64/crypto/aes/aesni-sha256-x86_64.s + ../asm/android/x86_64/crypto/aes/aesni-mb-x86_64.s + ../asm/android/x86_64/crypto/aes/aesni-x86_64.s + ../asm/android/x86_64/crypto/aes/vpaes-x86_64.s + ../asm/android/x86_64/crypto/aes/aesni-sha1-x86_64.s + ../asm/android/x86_64/crypto/sha/sha256-x86_64.s + ../asm/android/x86_64/crypto/sha/sha1-mb-x86_64.s + ../asm/android/x86_64/crypto/sha/sha1-x86_64.s + ../asm/android/x86_64/crypto/sha/sha256-mb-x86_64.s + ../asm/android/x86_64/crypto/sha/sha512-x86_64.s + ../asm/android/x86_64/crypto/sha/keccak1600-x86_64.s + ../asm/android/x86_64/crypto/chacha/chacha-x86_64.s + ../asm/android/x86_64/crypto/modes/ghash-x86_64.s + ../asm/android/x86_64/crypto/modes/aesni-gcm-x86_64.s + bn/asm/x86_64-gcc.c + bn/rsaz_exp.c + dso/dso_dlfcn.c + rand/rand_vms.c + ) +ENDIF() + +IF (OS_ANDROID AND ARCH_I686) + CFLAGS( + -DOPENSSL_PIC + -DOPENSSL_BN_ASM_PART_WORDS + -DOPENSSL_IA32_SSE2 + -DOPENSSL_BN_ASM_GF2m + -DRC4_ASM + -DMD5_ASM + -DRMD160_ASM + -DWHIRLPOOL_ASM + -DGHASH_ASM + ) + SRCS( + ../asm/android/i686/crypto/ec/ecp_nistz256-x86.s + ../asm/android/i686/crypto/bf/bf-586.s + ../asm/android/i686/crypto/md5/md5-586.s + ../asm/android/i686/crypto/rc4/rc4-586.s + ../asm/android/i686/crypto/whrlpool/wp-mmx.s + ../asm/android/i686/crypto/x86cpuid.s + ../asm/android/i686/crypto/des/crypt586.s + ../asm/android/i686/crypto/des/des-586.s + ../asm/android/i686/crypto/poly1305/poly1305-x86.s + ../asm/android/i686/crypto/ripemd/rmd-586.s + ../asm/android/i686/crypto/camellia/cmll-x86.s + ../asm/android/i686/crypto/bn/bn-586.s + ../asm/android/i686/crypto/bn/co-586.s + ../asm/android/i686/crypto/bn/x86-gf2m.s + ../asm/android/i686/crypto/bn/x86-mont.s + ../asm/android/i686/crypto/aes/aesni-x86.s + ../asm/android/i686/crypto/aes/vpaes-x86.s + ../asm/android/i686/crypto/sha/sha512-586.s + ../asm/android/i686/crypto/sha/sha256-586.s + ../asm/android/i686/crypto/sha/sha1-586.s + ../asm/android/i686/crypto/chacha/chacha-x86.s + ../asm/android/i686/crypto/modes/ghash-x86.s + dso/dso_dlfcn.c + rand/rand_vms.c + sha/keccak1600.c + whrlpool/wp_block.c + ) +ENDIF() + +IF (OS_ANDROID AND ARCH_ARM7) + IF (CLANG) + # XXX: This is a workarond for 'out of range immediate fixup value' + # error with clang integrated assembler: + # https://github.com/openssl/openssl/issues/7878 + CFLAGS( + -mno-thumb + ) + ENDIF() + CFLAGS( + -DOPENSSL_PIC + -DOPENSSL_BN_ASM_GF2m + -DAES_ASM + -DBSAES_ASM + -DGHASH_ASM + ) + SRCS( + ../asm/android/arm/crypto/ec/ecp_nistz256-armv4.S + ../asm/android/arm/crypto/poly1305/poly1305-armv4.S + ../asm/android/arm/crypto/armv4cpuid.S + ../asm/android/arm/crypto/bn/armv4-mont.S + ../asm/android/arm/crypto/bn/armv4-gf2m.S + ../asm/android/arm/crypto/aes/aes-armv4.S + ../asm/android/arm/crypto/aes/bsaes-armv7.S + ../asm/android/arm/crypto/aes/aesv8-armx.S + ../asm/android/arm/crypto/sha/keccak1600-armv4.S + ../asm/android/arm/crypto/sha/sha256-armv4.S + ../asm/android/arm/crypto/sha/sha512-armv4.S + ../asm/android/arm/crypto/sha/sha1-armv4-large.S + ../asm/android/arm/crypto/chacha/chacha-armv4.S + ../asm/android/arm/crypto/modes/ghashv8-armx.S + ../asm/android/arm/crypto/modes/ghash-armv4.S + armcap.c + bn/bn_asm.c + camellia/camellia.c + camellia/cmll_cbc.c + dso/dso_dlfcn.c + rand/rand_vms.c + rc4/rc4_enc.c + rc4/rc4_skey.c + whrlpool/wp_block.c + ) +ENDIF() + +IF (OS_ANDROID AND ARCH_ARM64) + CFLAGS( + -DOPENSSL_PIC + ) + SRCS( + ../asm/android/arm64/crypto/ec/ecp_nistz256-armv8.S + ../asm/android/arm64/crypto/poly1305/poly1305-armv8.S + ../asm/android/arm64/crypto/bn/armv8-mont.S + ../asm/android/arm64/crypto/aes/vpaes-armv8.S + ../asm/android/arm64/crypto/aes/aesv8-armx.S + ../asm/android/arm64/crypto/sha/sha512-armv8.S + ../asm/android/arm64/crypto/sha/keccak1600-armv8.S + ../asm/android/arm64/crypto/sha/sha1-armv8.S + ../asm/android/arm64/crypto/sha/sha256-armv8.S + ../asm/android/arm64/crypto/arm64cpuid.S + ../asm/android/arm64/crypto/chacha/chacha-armv8.S + ../asm/android/arm64/crypto/modes/ghashv8-armx.S + armcap.c + bn/bn_asm.c + camellia/camellia.c + camellia/cmll_cbc.c + dso/dso_dlfcn.c + rand/rand_vms.c + rc4/rc4_enc.c + rc4/rc4_skey.c + whrlpool/wp_block.c + ) +ENDIF() + +# mitigate SIGILL on some armv7 platforms +# https://github.com/openssl/openssl/issues/17009 +IF (ARCADIA_OPENSSL_DISABLE_ARMV7_TICK) + CFLAGS( + -DARCADIA_OPENSSL_DISABLE_ARMV7_TICK + ) +ENDIF() diff --git a/contrib/libs/openssl/include/crypto/aria.h b/contrib/libs/openssl/include/crypto/aria.h index 03a62950ae4..62ca8d98f46 100644 --- a/contrib/libs/openssl/include/crypto/aria.h +++ b/contrib/libs/openssl/include/crypto/aria.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 2006-2018 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved. diff --git a/contrib/libs/openssl/include/crypto/asn1.h b/contrib/libs/openssl/include/crypto/asn1.h index 9c9b4d89745..2ae5f59e15a 100644 --- a/contrib/libs/openssl/include/crypto/asn1.h +++ b/contrib/libs/openssl/include/crypto/asn1.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 2015-2018 The OpenSSL Project Authors. All Rights Reserved. * diff --git a/contrib/libs/openssl/include/crypto/async.h b/contrib/libs/openssl/include/crypto/async.h index dc8e937b0ce..1b4ea1c7096 100644 --- a/contrib/libs/openssl/include/crypto/async.h +++ b/contrib/libs/openssl/include/crypto/async.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 2016-2018 The OpenSSL Project Authors. All Rights Reserved. * diff --git a/contrib/libs/openssl/include/crypto/bn.h b/contrib/libs/openssl/include/crypto/bn.h index 250914c46a2..9dc1de12019 100644 --- a/contrib/libs/openssl/include/crypto/bn.h +++ b/contrib/libs/openssl/include/crypto/bn.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 2014-2023 The OpenSSL Project Authors. All Rights Reserved. * diff --git a/contrib/libs/openssl/include/crypto/bn_conf-android-arm.h b/contrib/libs/openssl/include/crypto/bn_conf-android-arm.h index 16d6e93a00d..8e0ff3e967b 100644 --- a/contrib/libs/openssl/include/crypto/bn_conf-android-arm.h +++ b/contrib/libs/openssl/include/crypto/bn_conf-android-arm.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* WARNING: do not edit! */ /* Generated by Makefile from ../include/crypto/bn_conf.h.in */ /* diff --git a/contrib/libs/openssl/include/crypto/bn_conf-android-arm64.h b/contrib/libs/openssl/include/crypto/bn_conf-android-arm64.h index 0bacac0ee3e..ba4222b5abe 100644 --- a/contrib/libs/openssl/include/crypto/bn_conf-android-arm64.h +++ b/contrib/libs/openssl/include/crypto/bn_conf-android-arm64.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* WARNING: do not edit! */ /* Generated by Makefile from ../include/crypto/bn_conf.h.in */ /* diff --git a/contrib/libs/openssl/include/crypto/bn_conf-android-i686.h b/contrib/libs/openssl/include/crypto/bn_conf-android-i686.h index 16d6e93a00d..8e0ff3e967b 100644 --- a/contrib/libs/openssl/include/crypto/bn_conf-android-i686.h +++ b/contrib/libs/openssl/include/crypto/bn_conf-android-i686.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* WARNING: do not edit! */ /* Generated by Makefile from ../include/crypto/bn_conf.h.in */ /* diff --git a/contrib/libs/openssl/include/crypto/bn_conf-android-x86_64.h b/contrib/libs/openssl/include/crypto/bn_conf-android-x86_64.h index 0bacac0ee3e..ba4222b5abe 100644 --- a/contrib/libs/openssl/include/crypto/bn_conf-android-x86_64.h +++ b/contrib/libs/openssl/include/crypto/bn_conf-android-x86_64.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* WARNING: do not edit! */ /* Generated by Makefile from ../include/crypto/bn_conf.h.in */ /* diff --git a/contrib/libs/openssl/include/crypto/bn_conf-ios-arm64.h b/contrib/libs/openssl/include/crypto/bn_conf-ios-arm64.h index 0bacac0ee3e..ba4222b5abe 100644 --- a/contrib/libs/openssl/include/crypto/bn_conf-ios-arm64.h +++ b/contrib/libs/openssl/include/crypto/bn_conf-ios-arm64.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* WARNING: do not edit! */ /* Generated by Makefile from ../include/crypto/bn_conf.h.in */ /* diff --git a/contrib/libs/openssl/include/crypto/bn_conf-ios-x86_64.h b/contrib/libs/openssl/include/crypto/bn_conf-ios-x86_64.h index 0bacac0ee3e..ba4222b5abe 100644 --- a/contrib/libs/openssl/include/crypto/bn_conf-ios-x86_64.h +++ b/contrib/libs/openssl/include/crypto/bn_conf-ios-x86_64.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* WARNING: do not edit! */ /* Generated by Makefile from ../include/crypto/bn_conf.h.in */ /* diff --git a/contrib/libs/openssl/include/crypto/bn_conf-linux-aarch64.h b/contrib/libs/openssl/include/crypto/bn_conf-linux-aarch64.h index 0bacac0ee3e..ba4222b5abe 100644 --- a/contrib/libs/openssl/include/crypto/bn_conf-linux-aarch64.h +++ b/contrib/libs/openssl/include/crypto/bn_conf-linux-aarch64.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* WARNING: do not edit! */ /* Generated by Makefile from ../include/crypto/bn_conf.h.in */ /* diff --git a/contrib/libs/openssl/include/crypto/bn_conf-linux-arm.h b/contrib/libs/openssl/include/crypto/bn_conf-linux-arm.h index 16d6e93a00d..8e0ff3e967b 100644 --- a/contrib/libs/openssl/include/crypto/bn_conf-linux-arm.h +++ b/contrib/libs/openssl/include/crypto/bn_conf-linux-arm.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* WARNING: do not edit! */ /* Generated by Makefile from ../include/crypto/bn_conf.h.in */ /* diff --git a/contrib/libs/openssl/include/crypto/bn_conf-linux.h b/contrib/libs/openssl/include/crypto/bn_conf-linux.h index 5312ef5a7ac..122dc0d4462 100644 --- a/contrib/libs/openssl/include/crypto/bn_conf-linux.h +++ b/contrib/libs/openssl/include/crypto/bn_conf-linux.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* WARNING: do not edit! */ /* Generated by Makefile from include/crypto/bn_conf.h.in */ /* diff --git a/contrib/libs/openssl/include/crypto/bn_conf-win-i686.h b/contrib/libs/openssl/include/crypto/bn_conf-win-i686.h index bf6adeb11da..8c0c1b634df 100644 --- a/contrib/libs/openssl/include/crypto/bn_conf-win-i686.h +++ b/contrib/libs/openssl/include/crypto/bn_conf-win-i686.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* WARNING: do not edit! */ /* Generated by makefile from include\crypto\bn_conf.h.in */ /* diff --git a/contrib/libs/openssl/include/crypto/bn_conf-win-x86_64.h b/contrib/libs/openssl/include/crypto/bn_conf-win-x86_64.h index 2d8fa641fb4..701ec323712 100644 --- a/contrib/libs/openssl/include/crypto/bn_conf-win-x86_64.h +++ b/contrib/libs/openssl/include/crypto/bn_conf-win-x86_64.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* WARNING: do not edit! */ /* Generated by makefile from ..\include\crypto\bn_conf.h.in */ /* diff --git a/contrib/libs/openssl/include/crypto/bn_conf.h b/contrib/libs/openssl/include/crypto/bn_conf.h index 5557ad09f81..6fcd0eb83b7 100644 --- a/contrib/libs/openssl/include/crypto/bn_conf.h +++ b/contrib/libs/openssl/include/crypto/bn_conf.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> #pragma once #if defined(__ANDROID__) && defined(__arm__) diff --git a/contrib/libs/openssl/include/crypto/bn_dh.h b/contrib/libs/openssl/include/crypto/bn_dh.h index 70ebca28753..f24cdb911b1 100644 --- a/contrib/libs/openssl/include/crypto/bn_dh.h +++ b/contrib/libs/openssl/include/crypto/bn_dh.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 2015-2016 The OpenSSL Project Authors. All Rights Reserved. * diff --git a/contrib/libs/openssl/include/crypto/bn_srp.h b/contrib/libs/openssl/include/crypto/bn_srp.h index d4b282a6bbb..acc41d2ea99 100644 --- a/contrib/libs/openssl/include/crypto/bn_srp.h +++ b/contrib/libs/openssl/include/crypto/bn_srp.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 2014-2016 The OpenSSL Project Authors. All Rights Reserved. * diff --git a/contrib/libs/openssl/include/crypto/chacha.h b/contrib/libs/openssl/include/crypto/chacha.h index 4029400a670..ca6122dddcc 100644 --- a/contrib/libs/openssl/include/crypto/chacha.h +++ b/contrib/libs/openssl/include/crypto/chacha.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 2015-2018 The OpenSSL Project Authors. All Rights Reserved. * diff --git a/contrib/libs/openssl/include/crypto/cryptlib.h b/contrib/libs/openssl/include/crypto/cryptlib.h index 38b5dac9a36..3997434530d 100644 --- a/contrib/libs/openssl/include/crypto/cryptlib.h +++ b/contrib/libs/openssl/include/crypto/cryptlib.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 2016-2018 The OpenSSL Project Authors. All Rights Reserved. * diff --git a/contrib/libs/openssl/include/crypto/ctype.h b/contrib/libs/openssl/include/crypto/ctype.h index 81ef8f5cf7e..151e6176350 100644 --- a/contrib/libs/openssl/include/crypto/ctype.h +++ b/contrib/libs/openssl/include/crypto/ctype.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 2017-2019 The OpenSSL Project Authors. All Rights Reserved. * diff --git a/contrib/libs/openssl/include/crypto/dso_conf-android.h b/contrib/libs/openssl/include/crypto/dso_conf-android.h index 2c3b4797c3f..4b39d64c950 100644 --- a/contrib/libs/openssl/include/crypto/dso_conf-android.h +++ b/contrib/libs/openssl/include/crypto/dso_conf-android.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* WARNING: do not edit! */ /* Generated by Makefile from ../include/crypto/dso_conf.h.in */ /* diff --git a/contrib/libs/openssl/include/crypto/dso_conf-ios-arm64.h b/contrib/libs/openssl/include/crypto/dso_conf-ios-arm64.h index 7ba83eb01f1..14cebffdb1b 100644 --- a/contrib/libs/openssl/include/crypto/dso_conf-ios-arm64.h +++ b/contrib/libs/openssl/include/crypto/dso_conf-ios-arm64.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> #pragma once #include "dso_conf-osx-arm64.h" diff --git a/contrib/libs/openssl/include/crypto/dso_conf-linux-aarch64.h b/contrib/libs/openssl/include/crypto/dso_conf-linux-aarch64.h index 8cc3aaf172d..3625be86d6b 100644 --- a/contrib/libs/openssl/include/crypto/dso_conf-linux-aarch64.h +++ b/contrib/libs/openssl/include/crypto/dso_conf-linux-aarch64.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* WARNING: do not edit! */ /* Generated by Makefile from include/crypto/dso_conf.h.in */ /* diff --git a/contrib/libs/openssl/include/crypto/dso_conf-linux.h b/contrib/libs/openssl/include/crypto/dso_conf-linux.h index 8cc3aaf172d..3625be86d6b 100644 --- a/contrib/libs/openssl/include/crypto/dso_conf-linux.h +++ b/contrib/libs/openssl/include/crypto/dso_conf-linux.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* WARNING: do not edit! */ /* Generated by Makefile from include/crypto/dso_conf.h.in */ /* diff --git a/contrib/libs/openssl/include/crypto/dso_conf-osx-arm64.h b/contrib/libs/openssl/include/crypto/dso_conf-osx-arm64.h index d2e22e2c03b..fddab085785 100644 --- a/contrib/libs/openssl/include/crypto/dso_conf-osx-arm64.h +++ b/contrib/libs/openssl/include/crypto/dso_conf-osx-arm64.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* WARNING: do not edit! */ /* Generated by Makefile from ../include/crypto/dso_conf.h.in */ /* diff --git a/contrib/libs/openssl/include/crypto/dso_conf-win.h b/contrib/libs/openssl/include/crypto/dso_conf-win.h index 576fcbe9ed1..542dc0f6479 100644 --- a/contrib/libs/openssl/include/crypto/dso_conf-win.h +++ b/contrib/libs/openssl/include/crypto/dso_conf-win.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* WARNING: do not edit! */ /* Generated by makefile from ..\include\crypto\dso_conf.h.in */ /* diff --git a/contrib/libs/openssl/include/crypto/dso_conf.h b/contrib/libs/openssl/include/crypto/dso_conf.h index 39695b0aaa8..fd60cdfe832 100644 --- a/contrib/libs/openssl/include/crypto/dso_conf.h +++ b/contrib/libs/openssl/include/crypto/dso_conf.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> #pragma once #if defined(__ANDROID__) diff --git a/contrib/libs/openssl/include/crypto/ec.h b/contrib/libs/openssl/include/crypto/ec.h index fe52ae704bb..692c80b1728 100644 --- a/contrib/libs/openssl/include/crypto/ec.h +++ b/contrib/libs/openssl/include/crypto/ec.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 2018 The OpenSSL Project Authors. All Rights Reserved. * diff --git a/contrib/libs/openssl/include/crypto/engine.h b/contrib/libs/openssl/include/crypto/engine.h index f80ae3ec30c..51bad4f2064 100644 --- a/contrib/libs/openssl/include/crypto/engine.h +++ b/contrib/libs/openssl/include/crypto/engine.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 2016 The OpenSSL Project Authors. All Rights Reserved. * diff --git a/contrib/libs/openssl/include/crypto/err.h b/contrib/libs/openssl/include/crypto/err.h index 8ab0e5baaa2..6ddd10fdfe2 100644 --- a/contrib/libs/openssl/include/crypto/err.h +++ b/contrib/libs/openssl/include/crypto/err.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 2016-2018 The OpenSSL Project Authors. All Rights Reserved. * diff --git a/contrib/libs/openssl/include/crypto/evp.h b/contrib/libs/openssl/include/crypto/evp.h index d86aed36f07..3a85dcac172 100644 --- a/contrib/libs/openssl/include/crypto/evp.h +++ b/contrib/libs/openssl/include/crypto/evp.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 2015-2018 The OpenSSL Project Authors. All Rights Reserved. * diff --git a/contrib/libs/openssl/include/crypto/lhash.h b/contrib/libs/openssl/include/crypto/lhash.h index ab060cce74b..d0de7e08e9f 100644 --- a/contrib/libs/openssl/include/crypto/lhash.h +++ b/contrib/libs/openssl/include/crypto/lhash.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 2018 The OpenSSL Project Authors. All Rights Reserved. * diff --git a/contrib/libs/openssl/include/crypto/md32_common.h b/contrib/libs/openssl/include/crypto/md32_common.h index 1124e9c24b2..3ada03ab519 100644 --- a/contrib/libs/openssl/include/crypto/md32_common.h +++ b/contrib/libs/openssl/include/crypto/md32_common.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 1999-2018 The OpenSSL Project Authors. All Rights Reserved. * diff --git a/contrib/libs/openssl/include/crypto/objects.h b/contrib/libs/openssl/include/crypto/objects.h index 76e1b4d9883..5b0e68ad9e4 100644 --- a/contrib/libs/openssl/include/crypto/objects.h +++ b/contrib/libs/openssl/include/crypto/objects.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 2016 The OpenSSL Project Authors. All Rights Reserved. * diff --git a/contrib/libs/openssl/include/crypto/poly1305.h b/contrib/libs/openssl/include/crypto/poly1305.h index 5fef239d0f8..a3b1354c245 100644 --- a/contrib/libs/openssl/include/crypto/poly1305.h +++ b/contrib/libs/openssl/include/crypto/poly1305.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 2015-2016 The OpenSSL Project Authors. All Rights Reserved. * diff --git a/contrib/libs/openssl/include/crypto/rand.h b/contrib/libs/openssl/include/crypto/rand.h index 9e02bb0e504..5c3205d65e0 100644 --- a/contrib/libs/openssl/include/crypto/rand.h +++ b/contrib/libs/openssl/include/crypto/rand.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 2016-2021 The OpenSSL Project Authors. All Rights Reserved. * diff --git a/contrib/libs/openssl/include/crypto/sha.h b/contrib/libs/openssl/include/crypto/sha.h index 6d15edb9e57..4c8ac809acb 100644 --- a/contrib/libs/openssl/include/crypto/sha.h +++ b/contrib/libs/openssl/include/crypto/sha.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 2018 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved. diff --git a/contrib/libs/openssl/include/crypto/siphash.h b/contrib/libs/openssl/include/crypto/siphash.h index 9573680f0f1..4c7da551640 100644 --- a/contrib/libs/openssl/include/crypto/siphash.h +++ b/contrib/libs/openssl/include/crypto/siphash.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 2017-2018 The OpenSSL Project Authors. All Rights Reserved. * diff --git a/contrib/libs/openssl/include/crypto/sm2.h b/contrib/libs/openssl/include/crypto/sm2.h index a7f5548c084..71b1b55452f 100644 --- a/contrib/libs/openssl/include/crypto/sm2.h +++ b/contrib/libs/openssl/include/crypto/sm2.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 2017-2021 The OpenSSL Project Authors. All Rights Reserved. * Copyright 2017 Ribose Inc. All Rights Reserved. diff --git a/contrib/libs/openssl/include/crypto/sm2err.h b/contrib/libs/openssl/include/crypto/sm2err.h index d1c0ee25918..97c40403268 100644 --- a/contrib/libs/openssl/include/crypto/sm2err.h +++ b/contrib/libs/openssl/include/crypto/sm2err.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Generated by util/mkerr.pl DO NOT EDIT * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. diff --git a/contrib/libs/openssl/include/crypto/sm3.h b/contrib/libs/openssl/include/crypto/sm3.h index 97e74603333..5a6de5c9928 100644 --- a/contrib/libs/openssl/include/crypto/sm3.h +++ b/contrib/libs/openssl/include/crypto/sm3.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 2017 The OpenSSL Project Authors. All Rights Reserved. * Copyright 2017 Ribose Inc. All Rights Reserved. diff --git a/contrib/libs/openssl/include/crypto/sm4.h b/contrib/libs/openssl/include/crypto/sm4.h index abe28f385e0..8607cd7cdd0 100644 --- a/contrib/libs/openssl/include/crypto/sm4.h +++ b/contrib/libs/openssl/include/crypto/sm4.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 2017 The OpenSSL Project Authors. All Rights Reserved. * Copyright 2017 Ribose Inc. All Rights Reserved. diff --git a/contrib/libs/openssl/include/crypto/store.h b/contrib/libs/openssl/include/crypto/store.h index 428d3c60e13..fc3197e3796 100644 --- a/contrib/libs/openssl/include/crypto/store.h +++ b/contrib/libs/openssl/include/crypto/store.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 2016-2019 The OpenSSL Project Authors. All Rights Reserved. * diff --git a/contrib/libs/openssl/include/crypto/x509.h b/contrib/libs/openssl/include/crypto/x509.h index 243ea74f6f4..b9b5014ae7e 100644 --- a/contrib/libs/openssl/include/crypto/x509.h +++ b/contrib/libs/openssl/include/crypto/x509.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 2015-2021 The OpenSSL Project Authors. All Rights Reserved. * diff --git a/contrib/libs/openssl/include/internal/bio.h b/contrib/libs/openssl/include/internal/bio.h index c343b276295..1463aa3a882 100644 --- a/contrib/libs/openssl/include/internal/bio.h +++ b/contrib/libs/openssl/include/internal/bio.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 2016-2018 The OpenSSL Project Authors. All Rights Reserved. * diff --git a/contrib/libs/openssl/include/internal/comp.h b/contrib/libs/openssl/include/internal/comp.h index ac6e38b4741..dac3832fd34 100644 --- a/contrib/libs/openssl/include/internal/comp.h +++ b/contrib/libs/openssl/include/internal/comp.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 2016 The OpenSSL Project Authors. All Rights Reserved. * diff --git a/contrib/libs/openssl/include/internal/conf.h b/contrib/libs/openssl/include/internal/conf.h index 163fea8de41..abc0e9bffc7 100644 --- a/contrib/libs/openssl/include/internal/conf.h +++ b/contrib/libs/openssl/include/internal/conf.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 2016-2019 The OpenSSL Project Authors. All Rights Reserved. * diff --git a/contrib/libs/openssl/include/internal/constant_time.h b/contrib/libs/openssl/include/internal/constant_time.h index 6600a1d72ae..de280674c6b 100644 --- a/contrib/libs/openssl/include/internal/constant_time.h +++ b/contrib/libs/openssl/include/internal/constant_time.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 2014-2019 The OpenSSL Project Authors. All Rights Reserved. * diff --git a/contrib/libs/openssl/include/internal/cryptlib.h b/contrib/libs/openssl/include/internal/cryptlib.h index 6e7291ae41b..960f1faa3f0 100644 --- a/contrib/libs/openssl/include/internal/cryptlib.h +++ b/contrib/libs/openssl/include/internal/cryptlib.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. * diff --git a/contrib/libs/openssl/include/internal/dane.h b/contrib/libs/openssl/include/internal/dane.h index 7a39bd7d7d4..5f1e51fdad5 100644 --- a/contrib/libs/openssl/include/internal/dane.h +++ b/contrib/libs/openssl/include/internal/dane.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 2015-2016 The OpenSSL Project Authors. All Rights Reserved. * diff --git a/contrib/libs/openssl/include/internal/dso.h b/contrib/libs/openssl/include/internal/dso.h index c57c0c40759..cf221834477 100644 --- a/contrib/libs/openssl/include/internal/dso.h +++ b/contrib/libs/openssl/include/internal/dso.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 2000-2018 The OpenSSL Project Authors. All Rights Reserved. * diff --git a/contrib/libs/openssl/include/internal/dsoerr.h b/contrib/libs/openssl/include/internal/dsoerr.h index 94d642a22d8..5f7eaf19824 100644 --- a/contrib/libs/openssl/include/internal/dsoerr.h +++ b/contrib/libs/openssl/include/internal/dsoerr.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Generated by util/mkerr.pl DO NOT EDIT * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. diff --git a/contrib/libs/openssl/include/internal/err.h b/contrib/libs/openssl/include/internal/err.h index 88dde705915..0f46e602541 100644 --- a/contrib/libs/openssl/include/internal/err.h +++ b/contrib/libs/openssl/include/internal/err.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 2016 The OpenSSL Project Authors. All Rights Reserved. * diff --git a/contrib/libs/openssl/include/internal/nelem.h b/contrib/libs/openssl/include/internal/nelem.h index 699ef88ee52..05db4cb7730 100644 --- a/contrib/libs/openssl/include/internal/nelem.h +++ b/contrib/libs/openssl/include/internal/nelem.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 2017 The OpenSSL Project Authors. All Rights Reserved. * diff --git a/contrib/libs/openssl/include/internal/numbers.h b/contrib/libs/openssl/include/internal/numbers.h index f5ade5226e5..9b4d74a7011 100644 --- a/contrib/libs/openssl/include/internal/numbers.h +++ b/contrib/libs/openssl/include/internal/numbers.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 2015-2016 The OpenSSL Project Authors. All Rights Reserved. * diff --git a/contrib/libs/openssl/include/internal/o_dir.h b/contrib/libs/openssl/include/internal/o_dir.h index dafc8dd2e74..3e888d9d836 100644 --- a/contrib/libs/openssl/include/internal/o_dir.h +++ b/contrib/libs/openssl/include/internal/o_dir.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 2004-2018 The OpenSSL Project Authors. All Rights Reserved. * diff --git a/contrib/libs/openssl/include/internal/o_str.h b/contrib/libs/openssl/include/internal/o_str.h index 15c12e820d2..1b053a0e857 100644 --- a/contrib/libs/openssl/include/internal/o_str.h +++ b/contrib/libs/openssl/include/internal/o_str.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 2003-2016 The OpenSSL Project Authors. All Rights Reserved. * diff --git a/contrib/libs/openssl/include/internal/refcount.h b/contrib/libs/openssl/include/internal/refcount.h index fcc74778bd8..0bf984e15af 100644 --- a/contrib/libs/openssl/include/internal/refcount.h +++ b/contrib/libs/openssl/include/internal/refcount.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 2016-2019 The OpenSSL Project Authors. All Rights Reserved. * diff --git a/contrib/libs/openssl/include/internal/sockets.h b/contrib/libs/openssl/include/internal/sockets.h index 79bf1dfda6c..1a30f950d70 100644 --- a/contrib/libs/openssl/include/internal/sockets.h +++ b/contrib/libs/openssl/include/internal/sockets.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. * diff --git a/contrib/libs/openssl/include/internal/sslconf.h b/contrib/libs/openssl/include/internal/sslconf.h index 92c8941d025..b2250746d35 100644 --- a/contrib/libs/openssl/include/internal/sslconf.h +++ b/contrib/libs/openssl/include/internal/sslconf.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 2018 The OpenSSL Project Authors. All Rights Reserved. * diff --git a/contrib/libs/openssl/include/internal/thread_once.h b/contrib/libs/openssl/include/internal/thread_once.h index 8f8aa6e1c4b..fb744f534ad 100644 --- a/contrib/libs/openssl/include/internal/thread_once.h +++ b/contrib/libs/openssl/include/internal/thread_once.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. * diff --git a/contrib/libs/openssl/include/internal/tsan_assist.h b/contrib/libs/openssl/include/internal/tsan_assist.h index cc30162eb74..718316ffb4c 100644 --- a/contrib/libs/openssl/include/internal/tsan_assist.h +++ b/contrib/libs/openssl/include/internal/tsan_assist.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 2018-2019 The OpenSSL Project Authors. All Rights Reserved. * diff --git a/contrib/libs/openssl/include/openssl/aes.h b/contrib/libs/openssl/include/openssl/aes.h index 245c552abd0..4f022211695 100644 --- a/contrib/libs/openssl/include/openssl/aes.h +++ b/contrib/libs/openssl/include/openssl/aes.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 2002-2016 The OpenSSL Project Authors. All Rights Reserved. * diff --git a/contrib/libs/openssl/include/openssl/asn1.h b/contrib/libs/openssl/include/openssl/asn1.h index 9522eec18f7..d5748d952ef 100644 --- a/contrib/libs/openssl/include/openssl/asn1.h +++ b/contrib/libs/openssl/include/openssl/asn1.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 1995-2017 The OpenSSL Project Authors. All Rights Reserved. * diff --git a/contrib/libs/openssl/include/openssl/asn1_mac.h b/contrib/libs/openssl/include/openssl/asn1_mac.h index 7ac1782a3f2..81e504c3caf 100644 --- a/contrib/libs/openssl/include/openssl/asn1_mac.h +++ b/contrib/libs/openssl/include/openssl/asn1_mac.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 2015-2016 The OpenSSL Project Authors. All Rights Reserved. * diff --git a/contrib/libs/openssl/include/openssl/asn1err.h b/contrib/libs/openssl/include/openssl/asn1err.h index e1ad1fefeca..814f54d0586 100644 --- a/contrib/libs/openssl/include/openssl/asn1err.h +++ b/contrib/libs/openssl/include/openssl/asn1err.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Generated by util/mkerr.pl DO NOT EDIT * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. diff --git a/contrib/libs/openssl/include/openssl/asn1t.h b/contrib/libs/openssl/include/openssl/asn1t.h index a450ba0d9de..4ed5892f5c2 100644 --- a/contrib/libs/openssl/include/openssl/asn1t.h +++ b/contrib/libs/openssl/include/openssl/asn1t.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 2000-2016 The OpenSSL Project Authors. All Rights Reserved. * diff --git a/contrib/libs/openssl/include/openssl/async.h b/contrib/libs/openssl/include/openssl/async.h index 7052b89052a..2b666ab6d62 100644 --- a/contrib/libs/openssl/include/openssl/async.h +++ b/contrib/libs/openssl/include/openssl/async.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 2015-2018 The OpenSSL Project Authors. All Rights Reserved. * diff --git a/contrib/libs/openssl/include/openssl/asyncerr.h b/contrib/libs/openssl/include/openssl/asyncerr.h index 91afbbb2f5b..60ba1499e90 100644 --- a/contrib/libs/openssl/include/openssl/asyncerr.h +++ b/contrib/libs/openssl/include/openssl/asyncerr.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Generated by util/mkerr.pl DO NOT EDIT * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. diff --git a/contrib/libs/openssl/include/openssl/bio.h b/contrib/libs/openssl/include/openssl/bio.h index ae559a51050..b5000bc13ca 100644 --- a/contrib/libs/openssl/include/openssl/bio.h +++ b/contrib/libs/openssl/include/openssl/bio.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. * diff --git a/contrib/libs/openssl/include/openssl/bioerr.h b/contrib/libs/openssl/include/openssl/bioerr.h index 46e2c96ee35..13b9517a6e5 100644 --- a/contrib/libs/openssl/include/openssl/bioerr.h +++ b/contrib/libs/openssl/include/openssl/bioerr.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Generated by util/mkerr.pl DO NOT EDIT * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. diff --git a/contrib/libs/openssl/include/openssl/blowfish.h b/contrib/libs/openssl/include/openssl/blowfish.h index cd3e460e98f..69ca7c35940 100644 --- a/contrib/libs/openssl/include/openssl/blowfish.h +++ b/contrib/libs/openssl/include/openssl/blowfish.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. * diff --git a/contrib/libs/openssl/include/openssl/bn.h b/contrib/libs/openssl/include/openssl/bn.h index d87766049a4..7f5b32b49ce 100644 --- a/contrib/libs/openssl/include/openssl/bn.h +++ b/contrib/libs/openssl/include/openssl/bn.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved diff --git a/contrib/libs/openssl/include/openssl/bnerr.h b/contrib/libs/openssl/include/openssl/bnerr.h index 5c83777f9f0..8157683f775 100644 --- a/contrib/libs/openssl/include/openssl/bnerr.h +++ b/contrib/libs/openssl/include/openssl/bnerr.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Generated by util/mkerr.pl DO NOT EDIT * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. diff --git a/contrib/libs/openssl/include/openssl/buffer.h b/contrib/libs/openssl/include/openssl/buffer.h index d2765766b7c..67838036a9c 100644 --- a/contrib/libs/openssl/include/openssl/buffer.h +++ b/contrib/libs/openssl/include/openssl/buffer.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. * diff --git a/contrib/libs/openssl/include/openssl/buffererr.h b/contrib/libs/openssl/include/openssl/buffererr.h index 04f6ff7a839..5ed0c94b1c9 100644 --- a/contrib/libs/openssl/include/openssl/buffererr.h +++ b/contrib/libs/openssl/include/openssl/buffererr.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Generated by util/mkerr.pl DO NOT EDIT * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. diff --git a/contrib/libs/openssl/include/openssl/camellia.h b/contrib/libs/openssl/include/openssl/camellia.h index 151f3c13491..f0abe17686d 100644 --- a/contrib/libs/openssl/include/openssl/camellia.h +++ b/contrib/libs/openssl/include/openssl/camellia.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 2006-2016 The OpenSSL Project Authors. All Rights Reserved. * diff --git a/contrib/libs/openssl/include/openssl/cast.h b/contrib/libs/openssl/include/openssl/cast.h index 2cc89ae0133..6e656600679 100644 --- a/contrib/libs/openssl/include/openssl/cast.h +++ b/contrib/libs/openssl/include/openssl/cast.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. * diff --git a/contrib/libs/openssl/include/openssl/cmac.h b/contrib/libs/openssl/include/openssl/cmac.h index 3535a9abf75..b392950d9aa 100644 --- a/contrib/libs/openssl/include/openssl/cmac.h +++ b/contrib/libs/openssl/include/openssl/cmac.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 2010-2016 The OpenSSL Project Authors. All Rights Reserved. * diff --git a/contrib/libs/openssl/include/openssl/cms.h b/contrib/libs/openssl/include/openssl/cms.h index c7627968c7a..13507e660e0 100644 --- a/contrib/libs/openssl/include/openssl/cms.h +++ b/contrib/libs/openssl/include/openssl/cms.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 2008-2019 The OpenSSL Project Authors. All Rights Reserved. * diff --git a/contrib/libs/openssl/include/openssl/cmserr.h b/contrib/libs/openssl/include/openssl/cmserr.h index d589f592c80..4bf6ab5d974 100644 --- a/contrib/libs/openssl/include/openssl/cmserr.h +++ b/contrib/libs/openssl/include/openssl/cmserr.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Generated by util/mkerr.pl DO NOT EDIT * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. diff --git a/contrib/libs/openssl/include/openssl/comp.h b/contrib/libs/openssl/include/openssl/comp.h index d814d3cf251..d79c8c59860 100644 --- a/contrib/libs/openssl/include/openssl/comp.h +++ b/contrib/libs/openssl/include/openssl/comp.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 2015-2018 The OpenSSL Project Authors. All Rights Reserved. * diff --git a/contrib/libs/openssl/include/openssl/comperr.h b/contrib/libs/openssl/include/openssl/comperr.h index 90231e9aa34..63bbcaa21bc 100644 --- a/contrib/libs/openssl/include/openssl/comperr.h +++ b/contrib/libs/openssl/include/openssl/comperr.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Generated by util/mkerr.pl DO NOT EDIT * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. diff --git a/contrib/libs/openssl/include/openssl/conf.h b/contrib/libs/openssl/include/openssl/conf.h index 7336cd2f1d1..15abd9a3c79 100644 --- a/contrib/libs/openssl/include/openssl/conf.h +++ b/contrib/libs/openssl/include/openssl/conf.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. * diff --git a/contrib/libs/openssl/include/openssl/conf_api.h b/contrib/libs/openssl/include/openssl/conf_api.h index a0275ad79bc..063fe37221b 100644 --- a/contrib/libs/openssl/include/openssl/conf_api.h +++ b/contrib/libs/openssl/include/openssl/conf_api.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. * diff --git a/contrib/libs/openssl/include/openssl/conferr.h b/contrib/libs/openssl/include/openssl/conferr.h index 32b92291856..91d1590b407 100644 --- a/contrib/libs/openssl/include/openssl/conferr.h +++ b/contrib/libs/openssl/include/openssl/conferr.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Generated by util/mkerr.pl DO NOT EDIT * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. diff --git a/contrib/libs/openssl/include/openssl/crypto.h b/contrib/libs/openssl/include/openssl/crypto.h index 5fdd7c3d04d..4f83eb01281 100644 --- a/contrib/libs/openssl/include/openssl/crypto.h +++ b/contrib/libs/openssl/include/openssl/crypto.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved diff --git a/contrib/libs/openssl/include/openssl/cryptoerr.h b/contrib/libs/openssl/include/openssl/cryptoerr.h index 3db5a4ee991..e05945e6c47 100644 --- a/contrib/libs/openssl/include/openssl/cryptoerr.h +++ b/contrib/libs/openssl/include/openssl/cryptoerr.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Generated by util/mkerr.pl DO NOT EDIT * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. diff --git a/contrib/libs/openssl/include/openssl/ct.h b/contrib/libs/openssl/include/openssl/ct.h index ebdba34d677..33b426b44e0 100644 --- a/contrib/libs/openssl/include/openssl/ct.h +++ b/contrib/libs/openssl/include/openssl/ct.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 2016-2018 The OpenSSL Project Authors. All Rights Reserved. * diff --git a/contrib/libs/openssl/include/openssl/cterr.h b/contrib/libs/openssl/include/openssl/cterr.h index feb7bc56632..e6ec1fb0bbf 100644 --- a/contrib/libs/openssl/include/openssl/cterr.h +++ b/contrib/libs/openssl/include/openssl/cterr.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Generated by util/mkerr.pl DO NOT EDIT * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. diff --git a/contrib/libs/openssl/include/openssl/des.h b/contrib/libs/openssl/include/openssl/des.h index be4abbdfd0e..4113e688f0d 100644 --- a/contrib/libs/openssl/include/openssl/des.h +++ b/contrib/libs/openssl/include/openssl/des.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. * diff --git a/contrib/libs/openssl/include/openssl/dh.h b/contrib/libs/openssl/include/openssl/dh.h index 892e31559d2..040ae7f4a0d 100644 --- a/contrib/libs/openssl/include/openssl/dh.h +++ b/contrib/libs/openssl/include/openssl/dh.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. * diff --git a/contrib/libs/openssl/include/openssl/dherr.h b/contrib/libs/openssl/include/openssl/dherr.h index 9955f24652c..5c93d80077a 100644 --- a/contrib/libs/openssl/include/openssl/dherr.h +++ b/contrib/libs/openssl/include/openssl/dherr.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Generated by util/mkerr.pl DO NOT EDIT * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. diff --git a/contrib/libs/openssl/include/openssl/dsa.h b/contrib/libs/openssl/include/openssl/dsa.h index 6d8a18a4ad5..e3dd45b8cca 100644 --- a/contrib/libs/openssl/include/openssl/dsa.h +++ b/contrib/libs/openssl/include/openssl/dsa.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. * diff --git a/contrib/libs/openssl/include/openssl/dsaerr.h b/contrib/libs/openssl/include/openssl/dsaerr.h index 495a1ac89d6..cd92029e81a 100644 --- a/contrib/libs/openssl/include/openssl/dsaerr.h +++ b/contrib/libs/openssl/include/openssl/dsaerr.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Generated by util/mkerr.pl DO NOT EDIT * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. diff --git a/contrib/libs/openssl/include/openssl/dtls1.h b/contrib/libs/openssl/include/openssl/dtls1.h index d55ca9c332d..c22fe89366a 100644 --- a/contrib/libs/openssl/include/openssl/dtls1.h +++ b/contrib/libs/openssl/include/openssl/dtls1.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 2005-2018 The OpenSSL Project Authors. All Rights Reserved. * diff --git a/contrib/libs/openssl/include/openssl/e_os2.h b/contrib/libs/openssl/include/openssl/e_os2.h index 5c88e519491..e76b4147c01 100644 --- a/contrib/libs/openssl/include/openssl/e_os2.h +++ b/contrib/libs/openssl/include/openssl/e_os2.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. * diff --git a/contrib/libs/openssl/include/openssl/ebcdic.h b/contrib/libs/openssl/include/openssl/ebcdic.h index aa012855999..107ecac7c29 100644 --- a/contrib/libs/openssl/include/openssl/ebcdic.h +++ b/contrib/libs/openssl/include/openssl/ebcdic.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 1999-2016 The OpenSSL Project Authors. All Rights Reserved. * diff --git a/contrib/libs/openssl/include/openssl/ec.h b/contrib/libs/openssl/include/openssl/ec.h index 24baf53c34d..798d81165b0 100644 --- a/contrib/libs/openssl/include/openssl/ec.h +++ b/contrib/libs/openssl/include/openssl/ec.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 2002-2021 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved diff --git a/contrib/libs/openssl/include/openssl/ecdh.h b/contrib/libs/openssl/include/openssl/ecdh.h index 681f3d5e557..4580eb9c270 100644 --- a/contrib/libs/openssl/include/openssl/ecdh.h +++ b/contrib/libs/openssl/include/openssl/ecdh.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 2002-2016 The OpenSSL Project Authors. All Rights Reserved. * diff --git a/contrib/libs/openssl/include/openssl/ecdsa.h b/contrib/libs/openssl/include/openssl/ecdsa.h index 681f3d5e557..4580eb9c270 100644 --- a/contrib/libs/openssl/include/openssl/ecdsa.h +++ b/contrib/libs/openssl/include/openssl/ecdsa.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 2002-2016 The OpenSSL Project Authors. All Rights Reserved. * diff --git a/contrib/libs/openssl/include/openssl/ecerr.h b/contrib/libs/openssl/include/openssl/ecerr.h index 51738113dc7..c385cbb865e 100644 --- a/contrib/libs/openssl/include/openssl/ecerr.h +++ b/contrib/libs/openssl/include/openssl/ecerr.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Generated by util/mkerr.pl DO NOT EDIT * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. diff --git a/contrib/libs/openssl/include/openssl/engine.h b/contrib/libs/openssl/include/openssl/engine.h index d707eaeb6ee..8362cafa9d7 100644 --- a/contrib/libs/openssl/include/openssl/engine.h +++ b/contrib/libs/openssl/include/openssl/engine.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 2000-2022 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved diff --git a/contrib/libs/openssl/include/openssl/engineerr.h b/contrib/libs/openssl/include/openssl/engineerr.h index 05e84bd2a24..44d58eb41f4 100644 --- a/contrib/libs/openssl/include/openssl/engineerr.h +++ b/contrib/libs/openssl/include/openssl/engineerr.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Generated by util/mkerr.pl DO NOT EDIT * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. diff --git a/contrib/libs/openssl/include/openssl/err.h b/contrib/libs/openssl/include/openssl/err.h index b49f88129e2..671b822c9a8 100644 --- a/contrib/libs/openssl/include/openssl/err.h +++ b/contrib/libs/openssl/include/openssl/err.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. * diff --git a/contrib/libs/openssl/include/openssl/evp.h b/contrib/libs/openssl/include/openssl/evp.h index 275b7a4acca..c16431cb754 100644 --- a/contrib/libs/openssl/include/openssl/evp.h +++ b/contrib/libs/openssl/include/openssl/evp.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. * diff --git a/contrib/libs/openssl/include/openssl/evperr.h b/contrib/libs/openssl/include/openssl/evperr.h index b4ea90ae9df..bc48179dc32 100644 --- a/contrib/libs/openssl/include/openssl/evperr.h +++ b/contrib/libs/openssl/include/openssl/evperr.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Generated by util/mkerr.pl DO NOT EDIT * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. diff --git a/contrib/libs/openssl/include/openssl/hmac.h b/contrib/libs/openssl/include/openssl/hmac.h index 458efc1d518..d3eb5fe0335 100644 --- a/contrib/libs/openssl/include/openssl/hmac.h +++ b/contrib/libs/openssl/include/openssl/hmac.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. * diff --git a/contrib/libs/openssl/include/openssl/idea.h b/contrib/libs/openssl/include/openssl/idea.h index 4334f3ea71a..239dc47f769 100644 --- a/contrib/libs/openssl/include/openssl/idea.h +++ b/contrib/libs/openssl/include/openssl/idea.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. * diff --git a/contrib/libs/openssl/include/openssl/kdf.h b/contrib/libs/openssl/include/openssl/kdf.h index 5abd4c37147..d68dc72116a 100644 --- a/contrib/libs/openssl/include/openssl/kdf.h +++ b/contrib/libs/openssl/include/openssl/kdf.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 2016-2018 The OpenSSL Project Authors. All Rights Reserved. * diff --git a/contrib/libs/openssl/include/openssl/kdferr.h b/contrib/libs/openssl/include/openssl/kdferr.h index 3f51bd0228a..eaa53c9cda1 100644 --- a/contrib/libs/openssl/include/openssl/kdferr.h +++ b/contrib/libs/openssl/include/openssl/kdferr.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Generated by util/mkerr.pl DO NOT EDIT * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. diff --git a/contrib/libs/openssl/include/openssl/lhash.h b/contrib/libs/openssl/include/openssl/lhash.h index 2e42d727d4d..fbf58eaab63 100644 --- a/contrib/libs/openssl/include/openssl/lhash.h +++ b/contrib/libs/openssl/include/openssl/lhash.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. * diff --git a/contrib/libs/openssl/include/openssl/md2.h b/contrib/libs/openssl/include/openssl/md2.h index 7faf8e3d656..1e66c0936d3 100644 --- a/contrib/libs/openssl/include/openssl/md2.h +++ b/contrib/libs/openssl/include/openssl/md2.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. * diff --git a/contrib/libs/openssl/include/openssl/md4.h b/contrib/libs/openssl/include/openssl/md4.h index 940e29db409..6358c99069c 100644 --- a/contrib/libs/openssl/include/openssl/md4.h +++ b/contrib/libs/openssl/include/openssl/md4.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. * diff --git a/contrib/libs/openssl/include/openssl/md5.h b/contrib/libs/openssl/include/openssl/md5.h index 2deb772118f..42dc91697f9 100644 --- a/contrib/libs/openssl/include/openssl/md5.h +++ b/contrib/libs/openssl/include/openssl/md5.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. * diff --git a/contrib/libs/openssl/include/openssl/mdc2.h b/contrib/libs/openssl/include/openssl/mdc2.h index aabd2bfaad8..7d433ac7b09 100644 --- a/contrib/libs/openssl/include/openssl/mdc2.h +++ b/contrib/libs/openssl/include/openssl/mdc2.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. * diff --git a/contrib/libs/openssl/include/openssl/modes.h b/contrib/libs/openssl/include/openssl/modes.h index d544f98d558..4d4c8660606 100644 --- a/contrib/libs/openssl/include/openssl/modes.h +++ b/contrib/libs/openssl/include/openssl/modes.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 2008-2016 The OpenSSL Project Authors. All Rights Reserved. * diff --git a/contrib/libs/openssl/include/openssl/obj_mac.h b/contrib/libs/openssl/include/openssl/obj_mac.h index 53516a06c69..f56dcc13edf 100644 --- a/contrib/libs/openssl/include/openssl/obj_mac.h +++ b/contrib/libs/openssl/include/openssl/obj_mac.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * WARNING: do not edit! * Generated by crypto/objects/objects.pl diff --git a/contrib/libs/openssl/include/openssl/objects.h b/contrib/libs/openssl/include/openssl/objects.h index 5e8b5762f87..bc1ccd871a9 100644 --- a/contrib/libs/openssl/include/openssl/objects.h +++ b/contrib/libs/openssl/include/openssl/objects.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. * diff --git a/contrib/libs/openssl/include/openssl/objectserr.h b/contrib/libs/openssl/include/openssl/objectserr.h index 02e166f1ac6..b42175cda36 100644 --- a/contrib/libs/openssl/include/openssl/objectserr.h +++ b/contrib/libs/openssl/include/openssl/objectserr.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Generated by util/mkerr.pl DO NOT EDIT * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. diff --git a/contrib/libs/openssl/include/openssl/ocsp.h b/contrib/libs/openssl/include/openssl/ocsp.h index 4d759a49de4..3106f003629 100644 --- a/contrib/libs/openssl/include/openssl/ocsp.h +++ b/contrib/libs/openssl/include/openssl/ocsp.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 2000-2019 The OpenSSL Project Authors. All Rights Reserved. * diff --git a/contrib/libs/openssl/include/openssl/ocsperr.h b/contrib/libs/openssl/include/openssl/ocsperr.h index 8dd9e01a172..524ddef6d33 100644 --- a/contrib/libs/openssl/include/openssl/ocsperr.h +++ b/contrib/libs/openssl/include/openssl/ocsperr.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Generated by util/mkerr.pl DO NOT EDIT * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. diff --git a/contrib/libs/openssl/include/openssl/opensslconf-android-arm.h b/contrib/libs/openssl/include/openssl/opensslconf-android-arm.h index a313ba33844..82f8e424add 100644 --- a/contrib/libs/openssl/include/openssl/opensslconf-android-arm.h +++ b/contrib/libs/openssl/include/openssl/opensslconf-android-arm.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * WARNING: do not edit! * Generated by Makefile from ../include/openssl/opensslconf.h.in diff --git a/contrib/libs/openssl/include/openssl/opensslconf-android-arm64.h b/contrib/libs/openssl/include/openssl/opensslconf-android-arm64.h index a0641d3ae24..8c014efaee7 100644 --- a/contrib/libs/openssl/include/openssl/opensslconf-android-arm64.h +++ b/contrib/libs/openssl/include/openssl/opensslconf-android-arm64.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * WARNING: do not edit! * Generated by Makefile from ../include/openssl/opensslconf.h.in diff --git a/contrib/libs/openssl/include/openssl/opensslconf-android-i686.h b/contrib/libs/openssl/include/openssl/opensslconf-android-i686.h index aa918cfb5bb..8db2e8571c3 100644 --- a/contrib/libs/openssl/include/openssl/opensslconf-android-i686.h +++ b/contrib/libs/openssl/include/openssl/opensslconf-android-i686.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * WARNING: do not edit! * Generated by Makefile from ../include/openssl/opensslconf.h.in diff --git a/contrib/libs/openssl/include/openssl/opensslconf-android-x86_64.h b/contrib/libs/openssl/include/openssl/opensslconf-android-x86_64.h index 7f82d097780..f7932a1919f 100644 --- a/contrib/libs/openssl/include/openssl/opensslconf-android-x86_64.h +++ b/contrib/libs/openssl/include/openssl/opensslconf-android-x86_64.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * WARNING: do not edit! * Generated by Makefile from ../include/openssl/opensslconf.h.in diff --git a/contrib/libs/openssl/include/openssl/opensslconf-ios-arm64.h b/contrib/libs/openssl/include/openssl/opensslconf-ios-arm64.h index fc7f39c7cf7..820b902b5b6 100644 --- a/contrib/libs/openssl/include/openssl/opensslconf-ios-arm64.h +++ b/contrib/libs/openssl/include/openssl/opensslconf-ios-arm64.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * WARNING: do not edit! * Generated by Makefile from ../include/openssl/opensslconf.h.in diff --git a/contrib/libs/openssl/include/openssl/opensslconf-ios-x86_64.h b/contrib/libs/openssl/include/openssl/opensslconf-ios-x86_64.h index aa49c01bfb9..c9b197d909e 100644 --- a/contrib/libs/openssl/include/openssl/opensslconf-ios-x86_64.h +++ b/contrib/libs/openssl/include/openssl/opensslconf-ios-x86_64.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * WARNING: do not edit! * Generated by Makefile from ../include/openssl/opensslconf.h.in diff --git a/contrib/libs/openssl/include/openssl/opensslconf-linux-aarch64.h b/contrib/libs/openssl/include/openssl/opensslconf-linux-aarch64.h index 3d75389ec23..61952cc5ebc 100644 --- a/contrib/libs/openssl/include/openssl/opensslconf-linux-aarch64.h +++ b/contrib/libs/openssl/include/openssl/opensslconf-linux-aarch64.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * WARNING: do not edit! * Generated by Makefile from ../include/openssl/opensslconf.h.in diff --git a/contrib/libs/openssl/include/openssl/opensslconf-linux-arm.h b/contrib/libs/openssl/include/openssl/opensslconf-linux-arm.h index 976864ad8b6..47089a26eae 100644 --- a/contrib/libs/openssl/include/openssl/opensslconf-linux-arm.h +++ b/contrib/libs/openssl/include/openssl/opensslconf-linux-arm.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * WARNING: do not edit! * Generated by Makefile from ../../openssl-1.1.1d/include/openssl/opensslconf.h.in diff --git a/contrib/libs/openssl/include/openssl/opensslconf-linux.h b/contrib/libs/openssl/include/openssl/opensslconf-linux.h index e5e3a766226..69182c51e61 100644 --- a/contrib/libs/openssl/include/openssl/opensslconf-linux.h +++ b/contrib/libs/openssl/include/openssl/opensslconf-linux.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * WARNING: do not edit! * Generated by Makefile from include/openssl/opensslconf.h.in diff --git a/contrib/libs/openssl/include/openssl/opensslconf-osx-arm64.h b/contrib/libs/openssl/include/openssl/opensslconf-osx-arm64.h index aa49c01bfb9..c9b197d909e 100644 --- a/contrib/libs/openssl/include/openssl/opensslconf-osx-arm64.h +++ b/contrib/libs/openssl/include/openssl/opensslconf-osx-arm64.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * WARNING: do not edit! * Generated by Makefile from ../include/openssl/opensslconf.h.in diff --git a/contrib/libs/openssl/include/openssl/opensslconf-osx.h b/contrib/libs/openssl/include/openssl/opensslconf-osx.h index aa49c01bfb9..c9b197d909e 100644 --- a/contrib/libs/openssl/include/openssl/opensslconf-osx.h +++ b/contrib/libs/openssl/include/openssl/opensslconf-osx.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * WARNING: do not edit! * Generated by Makefile from ../include/openssl/opensslconf.h.in diff --git a/contrib/libs/openssl/include/openssl/opensslconf-win-i686.h b/contrib/libs/openssl/include/openssl/opensslconf-win-i686.h index cce696ec4f6..009ba79fcda 100644 --- a/contrib/libs/openssl/include/openssl/opensslconf-win-i686.h +++ b/contrib/libs/openssl/include/openssl/opensslconf-win-i686.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * WARNING: do not edit! * Generated by makefile from include\openssl\opensslconf.h.in diff --git a/contrib/libs/openssl/include/openssl/opensslconf-win-x86_64.h b/contrib/libs/openssl/include/openssl/opensslconf-win-x86_64.h index ee82b249258..c81b93dfa6f 100644 --- a/contrib/libs/openssl/include/openssl/opensslconf-win-x86_64.h +++ b/contrib/libs/openssl/include/openssl/opensslconf-win-x86_64.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * WARNING: do not edit! * Generated by makefile from ..\include\openssl\opensslconf.h.in diff --git a/contrib/libs/openssl/include/openssl/opensslconf.h b/contrib/libs/openssl/include/openssl/opensslconf.h index fb7225732b7..beaa22b6e2a 100644 --- a/contrib/libs/openssl/include/openssl/opensslconf.h +++ b/contrib/libs/openssl/include/openssl/opensslconf.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> #pragma once #if defined(__ANDROID__) && defined(__arm__) diff --git a/contrib/libs/openssl/include/openssl/opensslv.h b/contrib/libs/openssl/include/openssl/opensslv.h index 7b6c212fa09..ff647db6e1d 100644 --- a/contrib/libs/openssl/include/openssl/opensslv.h +++ b/contrib/libs/openssl/include/openssl/opensslv.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 1999-2022 The OpenSSL Project Authors. All Rights Reserved. * diff --git a/contrib/libs/openssl/include/openssl/ossl_typ.h b/contrib/libs/openssl/include/openssl/ossl_typ.h index d2fdce8fdf6..05ecf27472d 100644 --- a/contrib/libs/openssl/include/openssl/ossl_typ.h +++ b/contrib/libs/openssl/include/openssl/ossl_typ.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 2001-2018 The OpenSSL Project Authors. All Rights Reserved. * diff --git a/contrib/libs/openssl/include/openssl/pem.h b/contrib/libs/openssl/include/openssl/pem.h index 2ef5b5d04c6..fc0239aed43 100644 --- a/contrib/libs/openssl/include/openssl/pem.h +++ b/contrib/libs/openssl/include/openssl/pem.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. * diff --git a/contrib/libs/openssl/include/openssl/pem2.h b/contrib/libs/openssl/include/openssl/pem2.h index 038fe790ace..a06cfc315cf 100644 --- a/contrib/libs/openssl/include/openssl/pem2.h +++ b/contrib/libs/openssl/include/openssl/pem2.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 1999-2018 The OpenSSL Project Authors. All Rights Reserved. * diff --git a/contrib/libs/openssl/include/openssl/pemerr.h b/contrib/libs/openssl/include/openssl/pemerr.h index 4f7e3574b34..1c181b601d7 100644 --- a/contrib/libs/openssl/include/openssl/pemerr.h +++ b/contrib/libs/openssl/include/openssl/pemerr.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Generated by util/mkerr.pl DO NOT EDIT * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. diff --git a/contrib/libs/openssl/include/openssl/pkcs12.h b/contrib/libs/openssl/include/openssl/pkcs12.h index 3f43dad6d96..8682fd19ef4 100644 --- a/contrib/libs/openssl/include/openssl/pkcs12.h +++ b/contrib/libs/openssl/include/openssl/pkcs12.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 1999-2016 The OpenSSL Project Authors. All Rights Reserved. * diff --git a/contrib/libs/openssl/include/openssl/pkcs12err.h b/contrib/libs/openssl/include/openssl/pkcs12err.h index eff5eb26028..71713e3f012 100644 --- a/contrib/libs/openssl/include/openssl/pkcs12err.h +++ b/contrib/libs/openssl/include/openssl/pkcs12err.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Generated by util/mkerr.pl DO NOT EDIT * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. diff --git a/contrib/libs/openssl/include/openssl/pkcs7.h b/contrib/libs/openssl/include/openssl/pkcs7.h index 9b66e002d28..43755b27a51 100644 --- a/contrib/libs/openssl/include/openssl/pkcs7.h +++ b/contrib/libs/openssl/include/openssl/pkcs7.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. * diff --git a/contrib/libs/openssl/include/openssl/pkcs7err.h b/contrib/libs/openssl/include/openssl/pkcs7err.h index 02e0299a3ce..19dcb3d2e32 100644 --- a/contrib/libs/openssl/include/openssl/pkcs7err.h +++ b/contrib/libs/openssl/include/openssl/pkcs7err.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Generated by util/mkerr.pl DO NOT EDIT * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. diff --git a/contrib/libs/openssl/include/openssl/rand.h b/contrib/libs/openssl/include/openssl/rand.h index 38a2a2718f8..3427a4508cc 100644 --- a/contrib/libs/openssl/include/openssl/rand.h +++ b/contrib/libs/openssl/include/openssl/rand.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. * diff --git a/contrib/libs/openssl/include/openssl/rand_drbg.h b/contrib/libs/openssl/include/openssl/rand_drbg.h index 45b731b73c2..fce28c5f419 100644 --- a/contrib/libs/openssl/include/openssl/rand_drbg.h +++ b/contrib/libs/openssl/include/openssl/rand_drbg.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 2017-2018 The OpenSSL Project Authors. All Rights Reserved. * diff --git a/contrib/libs/openssl/include/openssl/randerr.h b/contrib/libs/openssl/include/openssl/randerr.h index 79d57905e3c..3fb6c20d41d 100644 --- a/contrib/libs/openssl/include/openssl/randerr.h +++ b/contrib/libs/openssl/include/openssl/randerr.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Generated by util/mkerr.pl DO NOT EDIT * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. diff --git a/contrib/libs/openssl/include/openssl/rc2.h b/contrib/libs/openssl/include/openssl/rc2.h index 585f9e4c380..0d126242a87 100644 --- a/contrib/libs/openssl/include/openssl/rc2.h +++ b/contrib/libs/openssl/include/openssl/rc2.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. * diff --git a/contrib/libs/openssl/include/openssl/rc4.h b/contrib/libs/openssl/include/openssl/rc4.h index 86803b37fbe..f1544e90d30 100644 --- a/contrib/libs/openssl/include/openssl/rc4.h +++ b/contrib/libs/openssl/include/openssl/rc4.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. * diff --git a/contrib/libs/openssl/include/openssl/rc5.h b/contrib/libs/openssl/include/openssl/rc5.h index 793f88e4e81..79043f0e8b8 100644 --- a/contrib/libs/openssl/include/openssl/rc5.h +++ b/contrib/libs/openssl/include/openssl/rc5.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. * diff --git a/contrib/libs/openssl/include/openssl/ripemd.h b/contrib/libs/openssl/include/openssl/ripemd.h index c42026aa42f..46b4a6e6817 100644 --- a/contrib/libs/openssl/include/openssl/ripemd.h +++ b/contrib/libs/openssl/include/openssl/ripemd.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. * diff --git a/contrib/libs/openssl/include/openssl/rsa.h b/contrib/libs/openssl/include/openssl/rsa.h index 5e76365c0df..1a5b1792d0c 100644 --- a/contrib/libs/openssl/include/openssl/rsa.h +++ b/contrib/libs/openssl/include/openssl/rsa.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. * diff --git a/contrib/libs/openssl/include/openssl/rsaerr.h b/contrib/libs/openssl/include/openssl/rsaerr.h index 59b15e13e96..c7a6cd8656e 100644 --- a/contrib/libs/openssl/include/openssl/rsaerr.h +++ b/contrib/libs/openssl/include/openssl/rsaerr.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Generated by util/mkerr.pl DO NOT EDIT * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. diff --git a/contrib/libs/openssl/include/openssl/safestack.h b/contrib/libs/openssl/include/openssl/safestack.h index 38b5578978c..3201ba18ad3 100644 --- a/contrib/libs/openssl/include/openssl/safestack.h +++ b/contrib/libs/openssl/include/openssl/safestack.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 1999-2019 The OpenSSL Project Authors. All Rights Reserved. * diff --git a/contrib/libs/openssl/include/openssl/seed.h b/contrib/libs/openssl/include/openssl/seed.h index de10b085720..bd716b7bc7b 100644 --- a/contrib/libs/openssl/include/openssl/seed.h +++ b/contrib/libs/openssl/include/openssl/seed.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 2007-2016 The OpenSSL Project Authors. All Rights Reserved. * diff --git a/contrib/libs/openssl/include/openssl/sha.h b/contrib/libs/openssl/include/openssl/sha.h index 6a1eb0de8bd..2fdc711dc4f 100644 --- a/contrib/libs/openssl/include/openssl/sha.h +++ b/contrib/libs/openssl/include/openssl/sha.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. * diff --git a/contrib/libs/openssl/include/openssl/srp.h b/contrib/libs/openssl/include/openssl/srp.h index aaf13558e3c..84e212d1650 100644 --- a/contrib/libs/openssl/include/openssl/srp.h +++ b/contrib/libs/openssl/include/openssl/srp.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 2004-2018 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2004, EdelKey Project. All Rights Reserved. diff --git a/contrib/libs/openssl/include/openssl/srtp.h b/contrib/libs/openssl/include/openssl/srtp.h index 0b57c2356c9..a5380b64cc4 100644 --- a/contrib/libs/openssl/include/openssl/srtp.h +++ b/contrib/libs/openssl/include/openssl/srtp.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 2011-2016 The OpenSSL Project Authors. All Rights Reserved. * diff --git a/contrib/libs/openssl/include/openssl/ssl.h b/contrib/libs/openssl/include/openssl/ssl.h index 63ee3baae74..f961b98ece0 100644 --- a/contrib/libs/openssl/include/openssl/ssl.h +++ b/contrib/libs/openssl/include/openssl/ssl.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved diff --git a/contrib/libs/openssl/include/openssl/ssl2.h b/contrib/libs/openssl/include/openssl/ssl2.h index 5321bd272cb..d8d17746e0c 100644 --- a/contrib/libs/openssl/include/openssl/ssl2.h +++ b/contrib/libs/openssl/include/openssl/ssl2.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. * diff --git a/contrib/libs/openssl/include/openssl/ssl3.h b/contrib/libs/openssl/include/openssl/ssl3.h index 07effba287d..ef4552efa19 100644 --- a/contrib/libs/openssl/include/openssl/ssl3.h +++ b/contrib/libs/openssl/include/openssl/ssl3.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved diff --git a/contrib/libs/openssl/include/openssl/sslerr.h b/contrib/libs/openssl/include/openssl/sslerr.h index 64e152cc517..dce2bec4a3a 100644 --- a/contrib/libs/openssl/include/openssl/sslerr.h +++ b/contrib/libs/openssl/include/openssl/sslerr.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Generated by util/mkerr.pl DO NOT EDIT * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. diff --git a/contrib/libs/openssl/include/openssl/stack.h b/contrib/libs/openssl/include/openssl/stack.h index cfc075057ae..40c414733d8 100644 --- a/contrib/libs/openssl/include/openssl/stack.h +++ b/contrib/libs/openssl/include/openssl/stack.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 1995-2017 The OpenSSL Project Authors. All Rights Reserved. * diff --git a/contrib/libs/openssl/include/openssl/store.h b/contrib/libs/openssl/include/openssl/store.h index a40a7339e61..afcb18e2880 100644 --- a/contrib/libs/openssl/include/openssl/store.h +++ b/contrib/libs/openssl/include/openssl/store.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 2016-2019 The OpenSSL Project Authors. All Rights Reserved. * diff --git a/contrib/libs/openssl/include/openssl/storeerr.h b/contrib/libs/openssl/include/openssl/storeerr.h index 190eab07fb0..b5c82584970 100644 --- a/contrib/libs/openssl/include/openssl/storeerr.h +++ b/contrib/libs/openssl/include/openssl/storeerr.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Generated by util/mkerr.pl DO NOT EDIT * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. diff --git a/contrib/libs/openssl/include/openssl/symhacks.h b/contrib/libs/openssl/include/openssl/symhacks.h index 156ea6e4ee9..70ada24e4a6 100644 --- a/contrib/libs/openssl/include/openssl/symhacks.h +++ b/contrib/libs/openssl/include/openssl/symhacks.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 1999-2018 The OpenSSL Project Authors. All Rights Reserved. * diff --git a/contrib/libs/openssl/include/openssl/tls1.h b/contrib/libs/openssl/include/openssl/tls1.h index 2cbf53265f8..ab9bae3337f 100644 --- a/contrib/libs/openssl/include/openssl/tls1.h +++ b/contrib/libs/openssl/include/openssl/tls1.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved diff --git a/contrib/libs/openssl/include/openssl/ts.h b/contrib/libs/openssl/include/openssl/ts.h index 3b58aa527ed..151878e1b67 100644 --- a/contrib/libs/openssl/include/openssl/ts.h +++ b/contrib/libs/openssl/include/openssl/ts.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 2006-2018 The OpenSSL Project Authors. All Rights Reserved. * diff --git a/contrib/libs/openssl/include/openssl/tserr.h b/contrib/libs/openssl/include/openssl/tserr.h index 07f23339c81..5079f3dd542 100644 --- a/contrib/libs/openssl/include/openssl/tserr.h +++ b/contrib/libs/openssl/include/openssl/tserr.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Generated by util/mkerr.pl DO NOT EDIT * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. diff --git a/contrib/libs/openssl/include/openssl/txt_db.h b/contrib/libs/openssl/include/openssl/txt_db.h index ec981a439fe..13183675ef8 100644 --- a/contrib/libs/openssl/include/openssl/txt_db.h +++ b/contrib/libs/openssl/include/openssl/txt_db.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 1995-2017 The OpenSSL Project Authors. All Rights Reserved. * diff --git a/contrib/libs/openssl/include/openssl/ui.h b/contrib/libs/openssl/include/openssl/ui.h index 7c721ec818d..adb123fe053 100644 --- a/contrib/libs/openssl/include/openssl/ui.h +++ b/contrib/libs/openssl/include/openssl/ui.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 2001-2018 The OpenSSL Project Authors. All Rights Reserved. * diff --git a/contrib/libs/openssl/include/openssl/uierr.h b/contrib/libs/openssl/include/openssl/uierr.h index bd68864d0d8..d843da5645a 100644 --- a/contrib/libs/openssl/include/openssl/uierr.h +++ b/contrib/libs/openssl/include/openssl/uierr.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Generated by util/mkerr.pl DO NOT EDIT * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. diff --git a/contrib/libs/openssl/include/openssl/whrlpool.h b/contrib/libs/openssl/include/openssl/whrlpool.h index 20ea3503b76..518936f69f9 100644 --- a/contrib/libs/openssl/include/openssl/whrlpool.h +++ b/contrib/libs/openssl/include/openssl/whrlpool.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 2005-2016 The OpenSSL Project Authors. All Rights Reserved. * diff --git a/contrib/libs/openssl/include/openssl/x509.h b/contrib/libs/openssl/include/openssl/x509.h index 3ff86ec7b54..12ec813b270 100644 --- a/contrib/libs/openssl/include/openssl/x509.h +++ b/contrib/libs/openssl/include/openssl/x509.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved diff --git a/contrib/libs/openssl/include/openssl/x509_vfy.h b/contrib/libs/openssl/include/openssl/x509_vfy.h index 25c79f1be2f..32dc41dc1cd 100644 --- a/contrib/libs/openssl/include/openssl/x509_vfy.h +++ b/contrib/libs/openssl/include/openssl/x509_vfy.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. * diff --git a/contrib/libs/openssl/include/openssl/x509err.h b/contrib/libs/openssl/include/openssl/x509err.h index cd08673f8f6..83bcf85fde4 100644 --- a/contrib/libs/openssl/include/openssl/x509err.h +++ b/contrib/libs/openssl/include/openssl/x509err.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Generated by util/mkerr.pl DO NOT EDIT * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. diff --git a/contrib/libs/openssl/include/openssl/x509v3.h b/contrib/libs/openssl/include/openssl/x509v3.h index 3a4f04c183e..5eda72eb4b8 100644 --- a/contrib/libs/openssl/include/openssl/x509v3.h +++ b/contrib/libs/openssl/include/openssl/x509v3.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Copyright 1999-2023 The OpenSSL Project Authors. All Rights Reserved. * diff --git a/contrib/libs/openssl/include/openssl/x509v3err.h b/contrib/libs/openssl/include/openssl/x509v3err.h index 3b9f7139d80..724cc423791 100644 --- a/contrib/libs/openssl/include/openssl/x509v3err.h +++ b/contrib/libs/openssl/include/openssl/x509v3err.h @@ -1,3 +1,4 @@ +#include <contrib/libs/openssl/redef.h> /* * Generated by util/mkerr.pl DO NOT EDIT * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. diff --git a/contrib/libs/openssl/redef.h b/contrib/libs/openssl/redef.h new file mode 100644 index 00000000000..017967ebbd5 --- /dev/null +++ b/contrib/libs/openssl/redef.h @@ -0,0 +1,6282 @@ +#pragma once + +#if !defined(OPENSSL_BUILD) && !defined(_MSC_VER) +#define a2d_ASN1_OBJECT v1_a2d_ASN1_OBJECT +#define a2i_ASN1_ENUMERATED v1_a2i_ASN1_ENUMERATED +#define a2i_ASN1_INTEGER v1_a2i_ASN1_INTEGER +#define a2i_ASN1_STRING v1_a2i_ASN1_STRING +#define a2i_GENERAL_NAME v1_a2i_GENERAL_NAME +#define a2i_ipadd v1_a2i_ipadd +#define a2i_IPADDRESS v1_a2i_IPADDRESS +#define a2i_IPADDRESS_NC v1_a2i_IPADDRESS_NC +#define ACCESS_DESCRIPTION_free v1_ACCESS_DESCRIPTION_free +#define ACCESS_DESCRIPTION_it v1_ACCESS_DESCRIPTION_it +#define ACCESS_DESCRIPTION_new v1_ACCESS_DESCRIPTION_new +#define ADMISSIONS_free v1_ADMISSIONS_free +#define ADMISSIONS_get0_admissionAuthority v1_ADMISSIONS_get0_admissionAuthority +#define ADMISSIONS_get0_namingAuthority v1_ADMISSIONS_get0_namingAuthority +#define ADMISSIONS_get0_professionInfos v1_ADMISSIONS_get0_professionInfos +#define ADMISSIONS_it v1_ADMISSIONS_it +#define ADMISSIONS_new v1_ADMISSIONS_new +#define ADMISSIONS_set0_admissionAuthority v1_ADMISSIONS_set0_admissionAuthority +#define ADMISSIONS_set0_namingAuthority v1_ADMISSIONS_set0_namingAuthority +#define ADMISSIONS_set0_professionInfos v1_ADMISSIONS_set0_professionInfos +#define ADMISSION_SYNTAX_free v1_ADMISSION_SYNTAX_free +#define ADMISSION_SYNTAX_get0_admissionAuthority v1_ADMISSION_SYNTAX_get0_admissionAuthority +#define ADMISSION_SYNTAX_get0_contentsOfAdmissions v1_ADMISSION_SYNTAX_get0_contentsOfAdmissions +#define ADMISSION_SYNTAX_it v1_ADMISSION_SYNTAX_it +#define ADMISSION_SYNTAX_new v1_ADMISSION_SYNTAX_new +#define ADMISSION_SYNTAX_set0_admissionAuthority v1_ADMISSION_SYNTAX_set0_admissionAuthority +#define ADMISSION_SYNTAX_set0_contentsOfAdmissions v1_ADMISSION_SYNTAX_set0_contentsOfAdmissions +#define AES_bi_ige_encrypt v1_AES_bi_ige_encrypt +#define AES_cbc_encrypt v1_AES_cbc_encrypt +#define AES_cfb128_encrypt v1_AES_cfb128_encrypt +#define AES_cfb1_encrypt v1_AES_cfb1_encrypt +#define AES_cfb8_encrypt v1_AES_cfb8_encrypt +#define AES_decrypt v1_AES_decrypt +#define AES_ecb_encrypt v1_AES_ecb_encrypt +#define AES_encrypt v1_AES_encrypt +#define AES_ige_encrypt v1_AES_ige_encrypt +#define aesni_cbc_encrypt v1_aesni_cbc_encrypt +#define aesni_cbc_sha1_enc v1_aesni_cbc_sha1_enc +#define aesni_cbc_sha256_enc v1_aesni_cbc_sha256_enc +#define aesni_ccm64_decrypt_blocks v1_aesni_ccm64_decrypt_blocks +#define aesni_ccm64_encrypt_blocks v1_aesni_ccm64_encrypt_blocks +#define aesni_ctr32_encrypt_blocks v1_aesni_ctr32_encrypt_blocks +#define aesni_decrypt v1_aesni_decrypt +#define aesni_ecb_encrypt v1_aesni_ecb_encrypt +#define aesni_encrypt v1_aesni_encrypt +#define aesni_gcm_decrypt v1_aesni_gcm_decrypt +#define aesni_gcm_encrypt v1_aesni_gcm_encrypt +#define aesni_multi_cbc_decrypt v1_aesni_multi_cbc_decrypt +#define aesni_multi_cbc_encrypt v1_aesni_multi_cbc_encrypt +#define aesni_ocb_decrypt v1_aesni_ocb_decrypt +#define aesni_ocb_encrypt v1_aesni_ocb_encrypt +#define aesni_set_decrypt_key v1_aesni_set_decrypt_key +#define aesni_set_encrypt_key v1_aesni_set_encrypt_key +#define aesni_xts_decrypt v1_aesni_xts_decrypt +#define aesni_xts_encrypt v1_aesni_xts_encrypt +#define AES_ofb128_encrypt v1_AES_ofb128_encrypt +#define AES_options v1_AES_options +#define AES_set_decrypt_key v1_AES_set_decrypt_key +#define AES_set_encrypt_key v1_AES_set_encrypt_key +#define AES_unwrap_key v1_AES_unwrap_key +#define AES_wrap_key v1_AES_wrap_key +#define aria_encrypt v1_aria_encrypt +#define aria_set_decrypt_key v1_aria_set_decrypt_key +#define aria_set_encrypt_key v1_aria_set_encrypt_key +#define ascii_isdigit v1_ascii_isdigit +#define ASIdentifierChoice_free v1_ASIdentifierChoice_free +#define ASIdentifierChoice_it v1_ASIdentifierChoice_it +#define ASIdentifierChoice_new v1_ASIdentifierChoice_new +#define ASIdentifiers_free v1_ASIdentifiers_free +#define ASIdentifiers_it v1_ASIdentifiers_it +#define ASIdentifiers_new v1_ASIdentifiers_new +#define ASIdOrRange_free v1_ASIdOrRange_free +#define ASIdOrRange_it v1_ASIdOrRange_it +#define ASIdOrRange_new v1_ASIdOrRange_new +#define ASN1_add_oid_module v1_ASN1_add_oid_module +#define ASN1_add_stable_module v1_ASN1_add_stable_module +#define ASN1_ANY_it v1_ASN1_ANY_it +#define ASN1_BIT_STRING_check v1_ASN1_BIT_STRING_check +#define ASN1_BIT_STRING_free v1_ASN1_BIT_STRING_free +#define ASN1_BIT_STRING_get_bit v1_ASN1_BIT_STRING_get_bit +#define ASN1_BIT_STRING_it v1_ASN1_BIT_STRING_it +#define ASN1_BIT_STRING_name_print v1_ASN1_BIT_STRING_name_print +#define ASN1_BIT_STRING_new v1_ASN1_BIT_STRING_new +#define ASN1_BIT_STRING_num_asc v1_ASN1_BIT_STRING_num_asc +#define ASN1_BIT_STRING_set v1_ASN1_BIT_STRING_set +#define ASN1_BIT_STRING_set_asc v1_ASN1_BIT_STRING_set_asc +#define ASN1_BIT_STRING_set_bit v1_ASN1_BIT_STRING_set_bit +#define ASN1_BMPSTRING_free v1_ASN1_BMPSTRING_free +#define ASN1_BMPSTRING_it v1_ASN1_BMPSTRING_it +#define ASN1_BMPSTRING_new v1_ASN1_BMPSTRING_new +#define ASN1_bn_print v1_ASN1_bn_print +#define ASN1_BOOLEAN_it v1_ASN1_BOOLEAN_it +#define ASN1_buf_print v1_ASN1_buf_print +#define ASN1_check_infinite_end v1_ASN1_check_infinite_end +#define ASN1_const_check_infinite_end v1_ASN1_const_check_infinite_end +#define ASN1_d2i_bio v1_ASN1_d2i_bio +#define ASN1_d2i_fp v1_ASN1_d2i_fp +#define asn1_d2i_read_bio v1_asn1_d2i_read_bio +#define ASN1_digest v1_ASN1_digest +#define asn1_do_adb v1_asn1_do_adb +#define asn1_do_lock v1_asn1_do_lock +#define ASN1_dup v1_ASN1_dup +#define asn1_enc_free v1_asn1_enc_free +#define asn1_enc_init v1_asn1_enc_init +#define asn1_enc_restore v1_asn1_enc_restore +#define asn1_enc_save v1_asn1_enc_save +#define ASN1_ENUMERATED_free v1_ASN1_ENUMERATED_free +#define ASN1_ENUMERATED_get v1_ASN1_ENUMERATED_get +#define ASN1_ENUMERATED_get_int64 v1_ASN1_ENUMERATED_get_int64 +#define ASN1_ENUMERATED_it v1_ASN1_ENUMERATED_it +#define ASN1_ENUMERATED_new v1_ASN1_ENUMERATED_new +#define ASN1_ENUMERATED_set v1_ASN1_ENUMERATED_set +#define ASN1_ENUMERATED_set_int64 v1_ASN1_ENUMERATED_set_int64 +#define ASN1_ENUMERATED_to_BN v1_ASN1_ENUMERATED_to_BN +#define ASN1_FBOOLEAN_it v1_ASN1_FBOOLEAN_it +#define ASN1_GENERALIZEDTIME_adj v1_ASN1_GENERALIZEDTIME_adj +#define ASN1_GENERALIZEDTIME_check v1_ASN1_GENERALIZEDTIME_check +#define ASN1_GENERALIZEDTIME_free v1_ASN1_GENERALIZEDTIME_free +#define ASN1_GENERALIZEDTIME_it v1_ASN1_GENERALIZEDTIME_it +#define ASN1_GENERALIZEDTIME_new v1_ASN1_GENERALIZEDTIME_new +#define ASN1_GENERALIZEDTIME_print v1_ASN1_GENERALIZEDTIME_print +#define ASN1_GENERALIZEDTIME_set v1_ASN1_GENERALIZEDTIME_set +#define ASN1_GENERALIZEDTIME_set_string v1_ASN1_GENERALIZEDTIME_set_string +#define asn1_generalizedtime_to_tm v1_asn1_generalizedtime_to_tm +#define ASN1_GENERALSTRING_free v1_ASN1_GENERALSTRING_free +#define ASN1_GENERALSTRING_it v1_ASN1_GENERALSTRING_it +#define ASN1_GENERALSTRING_new v1_ASN1_GENERALSTRING_new +#define ASN1_generate_nconf v1_ASN1_generate_nconf +#define ASN1_generate_v3 v1_ASN1_generate_v3 +#define asn1_get_choice_selector v1_asn1_get_choice_selector +#define asn1_get_field_ptr v1_asn1_get_field_ptr +#define ASN1_get_object v1_ASN1_get_object +#define ASN1_i2d_bio v1_ASN1_i2d_bio +#define ASN1_i2d_fp v1_ASN1_i2d_fp +#define ASN1_IA5STRING_free v1_ASN1_IA5STRING_free +#define ASN1_IA5STRING_it v1_ASN1_IA5STRING_it +#define ASN1_IA5STRING_new v1_ASN1_IA5STRING_new +#define ASN1_INTEGER_cmp v1_ASN1_INTEGER_cmp +#define ASN1_INTEGER_dup v1_ASN1_INTEGER_dup +#define ASN1_INTEGER_free v1_ASN1_INTEGER_free +#define ASN1_INTEGER_get v1_ASN1_INTEGER_get +#define ASN1_INTEGER_get_int64 v1_ASN1_INTEGER_get_int64 +#define ASN1_INTEGER_get_uint64 v1_ASN1_INTEGER_get_uint64 +#define ASN1_INTEGER_it v1_ASN1_INTEGER_it +#define ASN1_INTEGER_new v1_ASN1_INTEGER_new +#define ASN1_INTEGER_set v1_ASN1_INTEGER_set +#define ASN1_INTEGER_set_int64 v1_ASN1_INTEGER_set_int64 +#define ASN1_INTEGER_set_uint64 v1_ASN1_INTEGER_set_uint64 +#define ASN1_INTEGER_to_BN v1_ASN1_INTEGER_to_BN +#define ASN1_item_d2i v1_ASN1_item_d2i +#define ASN1_item_d2i_bio v1_ASN1_item_d2i_bio +#define ASN1_item_d2i_fp v1_ASN1_item_d2i_fp +#define ASN1_item_digest v1_ASN1_item_digest +#define ASN1_item_dup v1_ASN1_item_dup +#define asn1_item_embed_free v1_asn1_item_embed_free +#define ASN1_item_ex_d2i v1_ASN1_item_ex_d2i +#define ASN1_item_ex_free v1_ASN1_item_ex_free +#define ASN1_item_ex_i2d v1_ASN1_item_ex_i2d +#define ASN1_item_ex_new v1_ASN1_item_ex_new +#define ASN1_item_free v1_ASN1_item_free +#define ASN1_ITEM_get v1_ASN1_ITEM_get +#define ASN1_item_i2d v1_ASN1_item_i2d +#define ASN1_item_i2d_bio v1_ASN1_item_i2d_bio +#define ASN1_item_i2d_fp v1_ASN1_item_i2d_fp +#define ASN1_ITEM_lookup v1_ASN1_ITEM_lookup +#define ASN1_item_ndef_i2d v1_ASN1_item_ndef_i2d +#define ASN1_item_new v1_ASN1_item_new +#define ASN1_item_pack v1_ASN1_item_pack +#define ASN1_item_print v1_ASN1_item_print +#define ASN1_item_sign v1_ASN1_item_sign +#define ASN1_item_sign_ctx v1_ASN1_item_sign_ctx +#define ASN1_item_unpack v1_ASN1_item_unpack +#define ASN1_item_verify v1_ASN1_item_verify +#define ASN1_mbstring_copy v1_ASN1_mbstring_copy +#define ASN1_mbstring_ncopy v1_ASN1_mbstring_ncopy +#define ASN1_NULL_free v1_ASN1_NULL_free +#define ASN1_NULL_it v1_ASN1_NULL_it +#define ASN1_NULL_new v1_ASN1_NULL_new +#define ASN1_OBJECT_create v1_ASN1_OBJECT_create +#define ASN1_OBJECT_free v1_ASN1_OBJECT_free +#define ASN1_OBJECT_it v1_ASN1_OBJECT_it +#define ASN1_OBJECT_new v1_ASN1_OBJECT_new +#define ASN1_object_size v1_ASN1_object_size +#define ASN1_OCTET_STRING_cmp v1_ASN1_OCTET_STRING_cmp +#define ASN1_OCTET_STRING_dup v1_ASN1_OCTET_STRING_dup +#define ASN1_OCTET_STRING_free v1_ASN1_OCTET_STRING_free +#define ASN1_OCTET_STRING_it v1_ASN1_OCTET_STRING_it +#define ASN1_OCTET_STRING_NDEF_it v1_ASN1_OCTET_STRING_NDEF_it +#define ASN1_OCTET_STRING_new v1_ASN1_OCTET_STRING_new +#define ASN1_OCTET_STRING_set v1_ASN1_OCTET_STRING_set +#define ASN1_parse v1_ASN1_parse +#define ASN1_parse_dump v1_ASN1_parse_dump +#define ASN1_PCTX_free v1_ASN1_PCTX_free +#define ASN1_PCTX_get_cert_flags v1_ASN1_PCTX_get_cert_flags +#define ASN1_PCTX_get_flags v1_ASN1_PCTX_get_flags +#define ASN1_PCTX_get_nm_flags v1_ASN1_PCTX_get_nm_flags +#define ASN1_PCTX_get_oid_flags v1_ASN1_PCTX_get_oid_flags +#define ASN1_PCTX_get_str_flags v1_ASN1_PCTX_get_str_flags +#define ASN1_PCTX_new v1_ASN1_PCTX_new +#define ASN1_PCTX_set_cert_flags v1_ASN1_PCTX_set_cert_flags +#define ASN1_PCTX_set_flags v1_ASN1_PCTX_set_flags +#define ASN1_PCTX_set_nm_flags v1_ASN1_PCTX_set_nm_flags +#define ASN1_PCTX_set_oid_flags v1_ASN1_PCTX_set_oid_flags +#define ASN1_PCTX_set_str_flags v1_ASN1_PCTX_set_str_flags +#define asn1_primitive_free v1_asn1_primitive_free +#define ASN1_PRINTABLE_free v1_ASN1_PRINTABLE_free +#define ASN1_PRINTABLE_it v1_ASN1_PRINTABLE_it +#define ASN1_PRINTABLE_new v1_ASN1_PRINTABLE_new +#define ASN1_PRINTABLESTRING_free v1_ASN1_PRINTABLESTRING_free +#define ASN1_PRINTABLESTRING_it v1_ASN1_PRINTABLESTRING_it +#define ASN1_PRINTABLESTRING_new v1_ASN1_PRINTABLESTRING_new +#define ASN1_PRINTABLE_type v1_ASN1_PRINTABLE_type +#define ASN1_put_eoc v1_ASN1_put_eoc +#define ASN1_put_object v1_ASN1_put_object +#define ASN1_SCTX_free v1_ASN1_SCTX_free +#define ASN1_SCTX_get_app_data v1_ASN1_SCTX_get_app_data +#define ASN1_SCTX_get_flags v1_ASN1_SCTX_get_flags +#define ASN1_SCTX_get_item v1_ASN1_SCTX_get_item +#define ASN1_SCTX_get_template v1_ASN1_SCTX_get_template +#define ASN1_SCTX_new v1_ASN1_SCTX_new +#define ASN1_SCTX_set_app_data v1_ASN1_SCTX_set_app_data +#define ASN1_SEQUENCE_ANY_it v1_ASN1_SEQUENCE_ANY_it +#define ASN1_SEQUENCE_it v1_ASN1_SEQUENCE_it +#define ASN1_SET_ANY_it v1_ASN1_SET_ANY_it +#define asn1_set_choice_selector v1_asn1_set_choice_selector +#define ASN1_sign v1_ASN1_sign +#define ASN1_str2mask v1_ASN1_str2mask +#define ASN1_STRING_clear_free v1_ASN1_STRING_clear_free +#define ASN1_STRING_cmp v1_ASN1_STRING_cmp +#define ASN1_STRING_copy v1_ASN1_STRING_copy +#define ASN1_STRING_data v1_ASN1_STRING_data +#define ASN1_STRING_dup v1_ASN1_STRING_dup +#define asn1_string_embed_free v1_asn1_string_embed_free +#define ASN1_STRING_free v1_ASN1_STRING_free +#define ASN1_STRING_get0_data v1_ASN1_STRING_get0_data +#define ASN1_STRING_get_default_mask v1_ASN1_STRING_get_default_mask +#define ASN1_STRING_length v1_ASN1_STRING_length +#define ASN1_STRING_length_set v1_ASN1_STRING_length_set +#define ASN1_STRING_new v1_ASN1_STRING_new +#define ASN1_STRING_print v1_ASN1_STRING_print +#define ASN1_STRING_print_ex v1_ASN1_STRING_print_ex +#define ASN1_STRING_print_ex_fp v1_ASN1_STRING_print_ex_fp +#define ASN1_STRING_set v1_ASN1_STRING_set +#define ASN1_STRING_set0 v1_ASN1_STRING_set0 +#define ASN1_STRING_set_by_NID v1_ASN1_STRING_set_by_NID +#define ASN1_STRING_set_default_mask v1_ASN1_STRING_set_default_mask +#define ASN1_STRING_set_default_mask_asc v1_ASN1_STRING_set_default_mask_asc +#define ASN1_STRING_TABLE_add v1_ASN1_STRING_TABLE_add +#define ASN1_STRING_TABLE_cleanup v1_ASN1_STRING_TABLE_cleanup +#define ASN1_STRING_TABLE_get v1_ASN1_STRING_TABLE_get +#define ASN1_STRING_to_UTF8 v1_ASN1_STRING_to_UTF8 +#define ASN1_STRING_type v1_ASN1_STRING_type +#define ASN1_STRING_type_new v1_ASN1_STRING_type_new +#define ASN1_T61STRING_free v1_ASN1_T61STRING_free +#define ASN1_T61STRING_it v1_ASN1_T61STRING_it +#define ASN1_T61STRING_new v1_ASN1_T61STRING_new +#define ASN1_tag2bit v1_ASN1_tag2bit +#define ASN1_tag2str v1_ASN1_tag2str +#define ASN1_TBOOLEAN_it v1_ASN1_TBOOLEAN_it +#define asn1_template_free v1_asn1_template_free +#define ASN1_TIME_adj v1_ASN1_TIME_adj +#define ASN1_TIME_check v1_ASN1_TIME_check +#define ASN1_TIME_cmp_time_t v1_ASN1_TIME_cmp_time_t +#define ASN1_TIME_compare v1_ASN1_TIME_compare +#define ASN1_TIME_diff v1_ASN1_TIME_diff +#define ASN1_TIME_free v1_ASN1_TIME_free +#define asn1_time_from_tm v1_asn1_time_from_tm +#define ASN1_TIME_it v1_ASN1_TIME_it +#define ASN1_TIME_new v1_ASN1_TIME_new +#define ASN1_TIME_normalize v1_ASN1_TIME_normalize +#define ASN1_TIME_print v1_ASN1_TIME_print +#define ASN1_TIME_set v1_ASN1_TIME_set +#define ASN1_TIME_set_string v1_ASN1_TIME_set_string +#define ASN1_TIME_set_string_X509 v1_ASN1_TIME_set_string_X509 +#define ASN1_TIME_to_generalizedtime v1_ASN1_TIME_to_generalizedtime +#define asn1_time_to_tm v1_asn1_time_to_tm +#define ASN1_TIME_to_tm v1_ASN1_TIME_to_tm +#define ASN1_TYPE_cmp v1_ASN1_TYPE_cmp +#define ASN1_TYPE_free v1_ASN1_TYPE_free +#define ASN1_TYPE_get v1_ASN1_TYPE_get +#define ASN1_TYPE_get_int_octetstring v1_ASN1_TYPE_get_int_octetstring +#define ASN1_TYPE_get_octetstring v1_ASN1_TYPE_get_octetstring +#define ASN1_TYPE_new v1_ASN1_TYPE_new +#define ASN1_TYPE_pack_sequence v1_ASN1_TYPE_pack_sequence +#define ASN1_TYPE_set v1_ASN1_TYPE_set +#define ASN1_TYPE_set1 v1_ASN1_TYPE_set1 +#define ASN1_TYPE_set_int_octetstring v1_ASN1_TYPE_set_int_octetstring +#define ASN1_TYPE_set_octetstring v1_ASN1_TYPE_set_octetstring +#define ASN1_TYPE_unpack_sequence v1_ASN1_TYPE_unpack_sequence +#define ASN1_UNIVERSALSTRING_free v1_ASN1_UNIVERSALSTRING_free +#define ASN1_UNIVERSALSTRING_it v1_ASN1_UNIVERSALSTRING_it +#define ASN1_UNIVERSALSTRING_new v1_ASN1_UNIVERSALSTRING_new +#define ASN1_UNIVERSALSTRING_to_string v1_ASN1_UNIVERSALSTRING_to_string +#define ASN1_UTCTIME_adj v1_ASN1_UTCTIME_adj +#define ASN1_UTCTIME_check v1_ASN1_UTCTIME_check +#define ASN1_UTCTIME_cmp_time_t v1_ASN1_UTCTIME_cmp_time_t +#define ASN1_UTCTIME_free v1_ASN1_UTCTIME_free +#define ASN1_UTCTIME_it v1_ASN1_UTCTIME_it +#define ASN1_UTCTIME_new v1_ASN1_UTCTIME_new +#define ASN1_UTCTIME_print v1_ASN1_UTCTIME_print +#define ASN1_UTCTIME_set v1_ASN1_UTCTIME_set +#define ASN1_UTCTIME_set_string v1_ASN1_UTCTIME_set_string +#define asn1_utctime_to_tm v1_asn1_utctime_to_tm +#define ASN1_UTF8STRING_free v1_ASN1_UTF8STRING_free +#define ASN1_UTF8STRING_it v1_ASN1_UTF8STRING_it +#define ASN1_UTF8STRING_new v1_ASN1_UTF8STRING_new +#define ASN1_verify v1_ASN1_verify +#define ASN1_VISIBLESTRING_free v1_ASN1_VISIBLESTRING_free +#define ASN1_VISIBLESTRING_it v1_ASN1_VISIBLESTRING_it +#define ASN1_VISIBLESTRING_new v1_ASN1_VISIBLESTRING_new +#define ASRange_free v1_ASRange_free +#define ASRange_it v1_ASRange_it +#define ASRange_new v1_ASRange_new +#define ASYNC_block_pause v1_ASYNC_block_pause +#define ASYNC_cleanup_thread v1_ASYNC_cleanup_thread +#define async_deinit v1_async_deinit +#define async_delete_thread_state v1_async_delete_thread_state +#define async_fibre_free v1_async_fibre_free +#define async_fibre_makecontext v1_async_fibre_makecontext +#define async_get_ctx v1_async_get_ctx +#define ASYNC_get_current_job v1_ASYNC_get_current_job +#define ASYNC_get_wait_ctx v1_ASYNC_get_wait_ctx +#define async_init v1_async_init +#define ASYNC_init_thread v1_ASYNC_init_thread +#define ASYNC_is_capable v1_ASYNC_is_capable +#define async_local_cleanup v1_async_local_cleanup +#define ASYNC_pause_job v1_ASYNC_pause_job +#define async_start_func v1_async_start_func +#define ASYNC_start_job v1_ASYNC_start_job +#define ASYNC_unblock_pause v1_ASYNC_unblock_pause +#define ASYNC_WAIT_CTX_clear_fd v1_ASYNC_WAIT_CTX_clear_fd +#define ASYNC_WAIT_CTX_free v1_ASYNC_WAIT_CTX_free +#define ASYNC_WAIT_CTX_get_all_fds v1_ASYNC_WAIT_CTX_get_all_fds +#define ASYNC_WAIT_CTX_get_changed_fds v1_ASYNC_WAIT_CTX_get_changed_fds +#define ASYNC_WAIT_CTX_get_fd v1_ASYNC_WAIT_CTX_get_fd +#define ASYNC_WAIT_CTX_new v1_ASYNC_WAIT_CTX_new +#define async_wait_ctx_reset_counts v1_async_wait_ctx_reset_counts +#define ASYNC_WAIT_CTX_set_wait_fd v1_ASYNC_WAIT_CTX_set_wait_fd +#define AUTHORITY_INFO_ACCESS_free v1_AUTHORITY_INFO_ACCESS_free +#define AUTHORITY_INFO_ACCESS_it v1_AUTHORITY_INFO_ACCESS_it +#define AUTHORITY_INFO_ACCESS_new v1_AUTHORITY_INFO_ACCESS_new +#define AUTHORITY_KEYID_free v1_AUTHORITY_KEYID_free +#define AUTHORITY_KEYID_it v1_AUTHORITY_KEYID_it +#define AUTHORITY_KEYID_new v1_AUTHORITY_KEYID_new +#define b2i_PrivateKey v1_b2i_PrivateKey +#define b2i_PrivateKey_bio v1_b2i_PrivateKey_bio +#define b2i_PublicKey v1_b2i_PublicKey +#define b2i_PublicKey_bio v1_b2i_PublicKey_bio +#define b2i_PVK_bio v1_b2i_PVK_bio +#define BASIC_CONSTRAINTS_free v1_BASIC_CONSTRAINTS_free +#define BASIC_CONSTRAINTS_it v1_BASIC_CONSTRAINTS_it +#define BASIC_CONSTRAINTS_new v1_BASIC_CONSTRAINTS_new +#define BF_cbc_encrypt v1_BF_cbc_encrypt +#define BF_cfb64_encrypt v1_BF_cfb64_encrypt +#define BF_decrypt v1_BF_decrypt +#define BF_ecb_encrypt v1_BF_ecb_encrypt +#define BF_encrypt v1_BF_encrypt +#define BF_ofb64_encrypt v1_BF_ofb64_encrypt +#define BF_options v1_BF_options +#define BF_set_key v1_BF_set_key +#define _bignum_const_2 v1__bignum_const_2 +#define _bignum_dh1024_160_g v1__bignum_dh1024_160_g +#define _bignum_dh1024_160_p v1__bignum_dh1024_160_p +#define _bignum_dh1024_160_q v1__bignum_dh1024_160_q +#define _bignum_dh2048_224_g v1__bignum_dh2048_224_g +#define _bignum_dh2048_224_p v1__bignum_dh2048_224_p +#define _bignum_dh2048_224_q v1__bignum_dh2048_224_q +#define _bignum_dh2048_256_g v1__bignum_dh2048_256_g +#define _bignum_dh2048_256_p v1__bignum_dh2048_256_p +#define _bignum_dh2048_256_q v1__bignum_dh2048_256_q +#define _bignum_ffdhe2048_p v1__bignum_ffdhe2048_p +#define _bignum_ffdhe3072_p v1__bignum_ffdhe3072_p +#define _bignum_ffdhe4096_p v1__bignum_ffdhe4096_p +#define _bignum_ffdhe6144_p v1__bignum_ffdhe6144_p +#define _bignum_ffdhe8192_p v1__bignum_ffdhe8192_p +#define BIGNUM_it v1_BIGNUM_it +#define BIO_accept v1_BIO_accept +#define BIO_accept_ex v1_BIO_accept_ex +#define BIO_ADDR_clear v1_BIO_ADDR_clear +#define BIO_ADDR_family v1_BIO_ADDR_family +#define BIO_ADDR_free v1_BIO_ADDR_free +#define BIO_ADDR_hostname_string v1_BIO_ADDR_hostname_string +#define BIO_ADDRINFO_address v1_BIO_ADDRINFO_address +#define BIO_ADDRINFO_family v1_BIO_ADDRINFO_family +#define BIO_ADDRINFO_free v1_BIO_ADDRINFO_free +#define BIO_ADDRINFO_next v1_BIO_ADDRINFO_next +#define BIO_ADDRINFO_protocol v1_BIO_ADDRINFO_protocol +#define BIO_ADDRINFO_sockaddr v1_BIO_ADDRINFO_sockaddr +#define BIO_ADDRINFO_sockaddr_size v1_BIO_ADDRINFO_sockaddr_size +#define BIO_ADDRINFO_socktype v1_BIO_ADDRINFO_socktype +#define BIO_ADDR_make v1_BIO_ADDR_make +#define BIO_ADDR_new v1_BIO_ADDR_new +#define BIO_ADDR_path_string v1_BIO_ADDR_path_string +#define BIO_ADDR_rawaddress v1_BIO_ADDR_rawaddress +#define BIO_ADDR_rawmake v1_BIO_ADDR_rawmake +#define BIO_ADDR_rawport v1_BIO_ADDR_rawport +#define BIO_ADDR_service_string v1_BIO_ADDR_service_string +#define BIO_ADDR_sockaddr v1_BIO_ADDR_sockaddr +#define BIO_ADDR_sockaddr_noconst v1_BIO_ADDR_sockaddr_noconst +#define BIO_ADDR_sockaddr_size v1_BIO_ADDR_sockaddr_size +#define BIO_asn1_get_prefix v1_BIO_asn1_get_prefix +#define BIO_asn1_get_suffix v1_BIO_asn1_get_suffix +#define BIO_asn1_set_prefix v1_BIO_asn1_set_prefix +#define BIO_asn1_set_suffix v1_BIO_asn1_set_suffix +#define BIO_bind v1_BIO_bind +#define BIO_callback_ctrl v1_BIO_callback_ctrl +#define bio_cleanup v1_bio_cleanup +#define BIO_clear_flags v1_BIO_clear_flags +#define BIO_closesocket v1_BIO_closesocket +#define BIO_connect v1_BIO_connect +#define BIO_CONNECT_free v1_BIO_CONNECT_free +#define BIO_CONNECT_new v1_BIO_CONNECT_new +#define BIO_copy_next_retry v1_BIO_copy_next_retry +#define BIO_ctrl v1_BIO_ctrl +#define BIO_ctrl_get_read_request v1_BIO_ctrl_get_read_request +#define BIO_ctrl_get_write_guarantee v1_BIO_ctrl_get_write_guarantee +#define BIO_ctrl_pending v1_BIO_ctrl_pending +#define BIO_ctrl_reset_read_request v1_BIO_ctrl_reset_read_request +#define BIO_ctrl_wpending v1_BIO_ctrl_wpending +#define BIO_debug_callback v1_BIO_debug_callback +#define BIO_dgram_non_fatal_error v1_BIO_dgram_non_fatal_error +#define BIO_dump v1_BIO_dump +#define BIO_dump_cb v1_BIO_dump_cb +#define BIO_dump_fp v1_BIO_dump_fp +#define BIO_dump_indent v1_BIO_dump_indent +#define BIO_dump_indent_cb v1_BIO_dump_indent_cb +#define BIO_dump_indent_fp v1_BIO_dump_indent_fp +#define BIO_dup_chain v1_BIO_dup_chain +#define BIO_f_asn1 v1_BIO_f_asn1 +#define BIO_f_base64 v1_BIO_f_base64 +#define BIO_f_buffer v1_BIO_f_buffer +#define BIO_f_cipher v1_BIO_f_cipher +#define BIO_fd_non_fatal_error v1_BIO_fd_non_fatal_error +#define BIO_fd_should_retry v1_BIO_fd_should_retry +#define BIO_find_type v1_BIO_find_type +#define BIO_f_linebuffer v1_BIO_f_linebuffer +#define BIO_f_md v1_BIO_f_md +#define BIO_f_nbio_test v1_BIO_f_nbio_test +#define BIO_f_null v1_BIO_f_null +#define BIO_free v1_BIO_free +#define BIO_free_all v1_BIO_free_all +#define bio_free_ex_data v1_bio_free_ex_data +#define BIO_f_reliable v1_BIO_f_reliable +#define BIO_f_ssl v1_BIO_f_ssl +#define BIO_f_zlib v1_BIO_f_zlib +#define BIO_get_accept_socket v1_BIO_get_accept_socket +#define BIO_get_callback v1_BIO_get_callback +#define BIO_get_callback_arg v1_BIO_get_callback_arg +#define BIO_get_callback_ex v1_BIO_get_callback_ex +#define BIO_get_data v1_BIO_get_data +#define BIO_get_ex_data v1_BIO_get_ex_data +#define BIO_gethostbyname v1_BIO_gethostbyname +#define BIO_get_host_ip v1_BIO_get_host_ip +#define BIO_get_init v1_BIO_get_init +#define BIO_get_new_index v1_BIO_get_new_index +#define BIO_get_port v1_BIO_get_port +#define BIO_get_retry_BIO v1_BIO_get_retry_BIO +#define BIO_get_retry_reason v1_BIO_get_retry_reason +#define BIO_gets v1_BIO_gets +#define BIO_get_shutdown v1_BIO_get_shutdown +#define BIO_hex_string v1_BIO_hex_string +#define BIO_indent v1_BIO_indent +#define BIO_int_ctrl v1_BIO_int_ctrl +#define BIO_listen v1_BIO_listen +#define BIO_lookup v1_BIO_lookup +#define BIO_lookup_ex v1_BIO_lookup_ex +#define bio_lookup_lock v1_bio_lookup_lock +#define BIO_meth_free v1_BIO_meth_free +#define BIO_meth_get_callback_ctrl v1_BIO_meth_get_callback_ctrl +#define BIO_meth_get_create v1_BIO_meth_get_create +#define BIO_meth_get_ctrl v1_BIO_meth_get_ctrl +#define BIO_meth_get_destroy v1_BIO_meth_get_destroy +#define BIO_meth_get_gets v1_BIO_meth_get_gets +#define BIO_meth_get_puts v1_BIO_meth_get_puts +#define BIO_meth_get_read v1_BIO_meth_get_read +#define BIO_meth_get_read_ex v1_BIO_meth_get_read_ex +#define BIO_meth_get_write v1_BIO_meth_get_write +#define BIO_meth_get_write_ex v1_BIO_meth_get_write_ex +#define BIO_meth_new v1_BIO_meth_new +#define BIO_method_name v1_BIO_method_name +#define BIO_method_type v1_BIO_method_type +#define BIO_meth_set_callback_ctrl v1_BIO_meth_set_callback_ctrl +#define BIO_meth_set_create v1_BIO_meth_set_create +#define BIO_meth_set_ctrl v1_BIO_meth_set_ctrl +#define BIO_meth_set_destroy v1_BIO_meth_set_destroy +#define BIO_meth_set_gets v1_BIO_meth_set_gets +#define BIO_meth_set_puts v1_BIO_meth_set_puts +#define BIO_meth_set_read v1_BIO_meth_set_read +#define BIO_meth_set_read_ex v1_BIO_meth_set_read_ex +#define BIO_meth_set_write v1_BIO_meth_set_write +#define BIO_meth_set_write_ex v1_BIO_meth_set_write_ex +#define BIO_new v1_BIO_new +#define BIO_new_accept v1_BIO_new_accept +#define BIO_new_bio_pair v1_BIO_new_bio_pair +#define BIO_new_buffer_ssl_connect v1_BIO_new_buffer_ssl_connect +#define BIO_new_CMS v1_BIO_new_CMS +#define BIO_new_connect v1_BIO_new_connect +#define BIO_new_dgram v1_BIO_new_dgram +#define BIO_new_fd v1_BIO_new_fd +#define BIO_new_file v1_BIO_new_file +#define BIO_new_fp v1_BIO_new_fp +#define BIO_new_mem_buf v1_BIO_new_mem_buf +#define BIO_new_NDEF v1_BIO_new_NDEF +#define BIO_new_PKCS7 v1_BIO_new_PKCS7 +#define BIO_new_socket v1_BIO_new_socket +#define BIO_new_ssl v1_BIO_new_ssl +#define BIO_new_ssl_connect v1_BIO_new_ssl_connect +#define BIO_next v1_BIO_next +#define BIO_nread v1_BIO_nread +#define BIO_nread0 v1_BIO_nread0 +#define BIO_number_read v1_BIO_number_read +#define BIO_number_written v1_BIO_number_written +#define BIO_nwrite v1_BIO_nwrite +#define BIO_nwrite0 v1_BIO_nwrite0 +#define BIO_parse_hostserv v1_BIO_parse_hostserv +#define BIO_pop v1_BIO_pop +#define BIO_printf v1_BIO_printf +#define BIO_ptr_ctrl v1_BIO_ptr_ctrl +#define BIO_push v1_BIO_push +#define BIO_puts v1_BIO_puts +#define BIO_read v1_BIO_read +#define BIO_read_ex v1_BIO_read_ex +#define BIO_s_accept v1_BIO_s_accept +#define BIO_s_bio v1_BIO_s_bio +#define BIO_s_connect v1_BIO_s_connect +#define BIO_s_datagram v1_BIO_s_datagram +#define BIO_set_callback v1_BIO_set_callback +#define BIO_set_callback_arg v1_BIO_set_callback_arg +#define BIO_set_callback_ex v1_BIO_set_callback_ex +#define BIO_set_cipher v1_BIO_set_cipher +#define BIO_set_data v1_BIO_set_data +#define BIO_set_ex_data v1_BIO_set_ex_data +#define BIO_set_flags v1_BIO_set_flags +#define BIO_set_init v1_BIO_set_init +#define BIO_set_next v1_BIO_set_next +#define BIO_set_retry_reason v1_BIO_set_retry_reason +#define BIO_set_shutdown v1_BIO_set_shutdown +#define BIO_set_tcp_ndelay v1_BIO_set_tcp_ndelay +#define BIO_s_fd v1_BIO_s_fd +#define BIO_s_file v1_BIO_s_file +#define BIO_s_log v1_BIO_s_log +#define BIO_s_mem v1_BIO_s_mem +#define BIO_snprintf v1_BIO_snprintf +#define BIO_s_null v1_BIO_s_null +#define bio_sock_cleanup_int v1_bio_sock_cleanup_int +#define BIO_sock_error v1_BIO_sock_error +#define BIO_socket v1_BIO_socket +#define BIO_socket_ioctl v1_BIO_socket_ioctl +#define BIO_socket_nbio v1_BIO_socket_nbio +#define BIO_sock_info v1_BIO_sock_info +#define BIO_sock_init v1_BIO_sock_init +#define BIO_sock_non_fatal_error v1_BIO_sock_non_fatal_error +#define BIO_sock_should_retry v1_BIO_sock_should_retry +#define BIO_s_secmem v1_BIO_s_secmem +#define BIO_ssl_copy_session_id v1_BIO_ssl_copy_session_id +#define BIO_ssl_shutdown v1_BIO_ssl_shutdown +#define BIO_s_socket v1_BIO_s_socket +#define BIO_test_flags v1_BIO_test_flags +#define bio_type_lock v1_bio_type_lock +#define BIO_up_ref v1_BIO_up_ref +#define BIO_vfree v1_BIO_vfree +#define BIO_vprintf v1_BIO_vprintf +#define BIO_vsnprintf v1_BIO_vsnprintf +#define BIO_write v1_BIO_write +#define BIO_write_ex v1_BIO_write_ex +#define BLAKE2b_Final v1_BLAKE2b_Final +#define BLAKE2b_Init v1_BLAKE2b_Init +#define BLAKE2b_Update v1_BLAKE2b_Update +#define BLAKE2s_Final v1_BLAKE2s_Final +#define BLAKE2s_Init v1_BLAKE2s_Init +#define BLAKE2s_Update v1_BLAKE2s_Update +#define BN_abs_is_word v1_BN_abs_is_word +#define BN_add v1_BN_add +#define BN_add_word v1_BN_add_word +#define bn_add_words v1_bn_add_words +#define BN_asc2bn v1_BN_asc2bn +#define BN_bin2bn v1_BN_bin2bn +#define BN_BLINDING_convert v1_BN_BLINDING_convert +#define BN_BLINDING_convert_ex v1_BN_BLINDING_convert_ex +#define BN_BLINDING_create_param v1_BN_BLINDING_create_param +#define BN_BLINDING_free v1_BN_BLINDING_free +#define BN_BLINDING_get_flags v1_BN_BLINDING_get_flags +#define BN_BLINDING_invert v1_BN_BLINDING_invert +#define BN_BLINDING_invert_ex v1_BN_BLINDING_invert_ex +#define BN_BLINDING_is_current_thread v1_BN_BLINDING_is_current_thread +#define BN_BLINDING_lock v1_BN_BLINDING_lock +#define BN_BLINDING_new v1_BN_BLINDING_new +#define BN_BLINDING_set_current_thread v1_BN_BLINDING_set_current_thread +#define BN_BLINDING_set_flags v1_BN_BLINDING_set_flags +#define BN_BLINDING_unlock v1_BN_BLINDING_unlock +#define BN_BLINDING_update v1_BN_BLINDING_update +#define BN_bn2bin v1_BN_bn2bin +#define BN_bn2binpad v1_BN_bn2binpad +#define BN_bn2dec v1_BN_bn2dec +#define BN_bn2hex v1_BN_bn2hex +#define BN_bn2lebinpad v1_BN_bn2lebinpad +#define BN_bn2mpi v1_BN_bn2mpi +#define BN_bntest_rand v1_BN_bntest_rand +#define BN_clear v1_BN_clear +#define BN_clear_bit v1_BN_clear_bit +#define BN_clear_free v1_BN_clear_free +#define BN_cmp v1_BN_cmp +#define bn_cmp_part_words v1_bn_cmp_part_words +#define bn_cmp_words v1_bn_cmp_words +#define bn_compute_wNAF v1_bn_compute_wNAF +#define BN_consttime_swap v1_BN_consttime_swap +#define BN_copy v1_BN_copy +#define bn_copy_words v1_bn_copy_words +#define bn_correct_top v1_bn_correct_top +#define bn_correct_top_consttime v1_bn_correct_top_consttime +#define BN_CTX_end v1_BN_CTX_end +#define BN_CTX_free v1_BN_CTX_free +#define BN_CTX_get v1_BN_CTX_get +#define BN_CTX_new v1_BN_CTX_new +#define BN_CTX_secure_new v1_BN_CTX_secure_new +#define BN_CTX_start v1_BN_CTX_start +#define BN_dec2bn v1_BN_dec2bn +#define BN_div v1_BN_div +#define bn_div_fixed_top v1_bn_div_fixed_top +#define BN_div_recp v1_BN_div_recp +#define BN_div_word v1_BN_div_word +#define bn_div_words v1_bn_div_words +#define BN_dup v1_BN_dup +#define BN_exp v1_BN_exp +#define bn_expand2 v1_bn_expand2 +#define BN_free v1_BN_free +#define bn_from_mont_fixed_top v1_bn_from_mont_fixed_top +#define BN_from_montgomery v1_BN_from_montgomery +#define bn_gather5 v1_bn_gather5 +#define BN_gcd v1_BN_gcd +#define BN_GENCB_call v1_BN_GENCB_call +#define BN_GENCB_free v1_BN_GENCB_free +#define BN_GENCB_get_arg v1_BN_GENCB_get_arg +#define BN_GENCB_new v1_BN_GENCB_new +#define BN_GENCB_set v1_BN_GENCB_set +#define BN_GENCB_set_old v1_BN_GENCB_set_old +#define BN_generate_dsa_nonce v1_BN_generate_dsa_nonce +#define BN_generate_prime v1_BN_generate_prime +#define BN_generate_prime_ex v1_BN_generate_prime_ex +#define bn_generator_19 v1_bn_generator_19 +#define bn_generator_2 v1_bn_generator_2 +#define bn_generator_5 v1_bn_generator_5 +#define BN_get0_nist_prime_192 v1_BN_get0_nist_prime_192 +#define BN_get0_nist_prime_224 v1_BN_get0_nist_prime_224 +#define BN_get0_nist_prime_256 v1_BN_get0_nist_prime_256 +#define BN_get0_nist_prime_384 v1_BN_get0_nist_prime_384 +#define BN_get0_nist_prime_521 v1_BN_get0_nist_prime_521 +#define bn_get_bits5 v1_bn_get_bits5 +#define bn_get_dmax v1_bn_get_dmax +#define BN_get_flags v1_BN_get_flags +#define BN_get_params v1_BN_get_params +#define BN_get_rfc2409_prime_1024 v1_BN_get_rfc2409_prime_1024 +#define BN_get_rfc2409_prime_768 v1_BN_get_rfc2409_prime_768 +#define BN_get_rfc3526_prime_1536 v1_BN_get_rfc3526_prime_1536 +#define BN_get_rfc3526_prime_2048 v1_BN_get_rfc3526_prime_2048 +#define BN_get_rfc3526_prime_3072 v1_BN_get_rfc3526_prime_3072 +#define BN_get_rfc3526_prime_4096 v1_BN_get_rfc3526_prime_4096 +#define BN_get_rfc3526_prime_6144 v1_BN_get_rfc3526_prime_6144 +#define BN_get_rfc3526_prime_8192 v1_BN_get_rfc3526_prime_8192 +#define bn_get_top v1_bn_get_top +#define BN_get_word v1_BN_get_word +#define bn_get_words v1_bn_get_words +#define BN_GF2m_add v1_BN_GF2m_add +#define BN_GF2m_arr2poly v1_BN_GF2m_arr2poly +#define BN_GF2m_mod v1_BN_GF2m_mod +#define BN_GF2m_mod_arr v1_BN_GF2m_mod_arr +#define BN_GF2m_mod_div v1_BN_GF2m_mod_div +#define BN_GF2m_mod_div_arr v1_BN_GF2m_mod_div_arr +#define BN_GF2m_mod_exp v1_BN_GF2m_mod_exp +#define BN_GF2m_mod_exp_arr v1_BN_GF2m_mod_exp_arr +#define BN_GF2m_mod_inv v1_BN_GF2m_mod_inv +#define BN_GF2m_mod_inv_arr v1_BN_GF2m_mod_inv_arr +#define BN_GF2m_mod_mul v1_BN_GF2m_mod_mul +#define BN_GF2m_mod_mul_arr v1_BN_GF2m_mod_mul_arr +#define BN_GF2m_mod_solve_quad v1_BN_GF2m_mod_solve_quad +#define BN_GF2m_mod_solve_quad_arr v1_BN_GF2m_mod_solve_quad_arr +#define BN_GF2m_mod_sqr v1_BN_GF2m_mod_sqr +#define BN_GF2m_mod_sqr_arr v1_BN_GF2m_mod_sqr_arr +#define BN_GF2m_mod_sqrt v1_BN_GF2m_mod_sqrt +#define BN_GF2m_mod_sqrt_arr v1_BN_GF2m_mod_sqrt_arr +#define bn_GF2m_mul_2x2 v1_bn_GF2m_mul_2x2 +#define BN_GF2m_poly2arr v1_BN_GF2m_poly2arr +#define bn_group_1024 v1_bn_group_1024 +#define bn_group_1536 v1_bn_group_1536 +#define bn_group_2048 v1_bn_group_2048 +#define bn_group_3072 v1_bn_group_3072 +#define bn_group_4096 v1_bn_group_4096 +#define bn_group_6144 v1_bn_group_6144 +#define bn_group_8192 v1_bn_group_8192 +#define BN_hex2bn v1_BN_hex2bn +#define bn_init v1_bn_init +#define BN_is_bit_set v1_BN_is_bit_set +#define BN_is_negative v1_BN_is_negative +#define BN_is_odd v1_BN_is_odd +#define BN_is_one v1_BN_is_one +#define BN_is_prime v1_BN_is_prime +#define BN_is_prime_ex v1_BN_is_prime_ex +#define BN_is_prime_fasttest v1_BN_is_prime_fasttest +#define BN_is_prime_fasttest_ex v1_BN_is_prime_fasttest_ex +#define BN_is_word v1_BN_is_word +#define BN_is_zero v1_BN_is_zero +#define BN_kronecker v1_BN_kronecker +#define BN_lebin2bn v1_BN_lebin2bn +#define BN_lshift v1_BN_lshift +#define BN_lshift1 v1_BN_lshift1 +#define bn_lshift_fixed_top v1_bn_lshift_fixed_top +#define BN_mask_bits v1_BN_mask_bits +#define BN_mod_add v1_BN_mod_add +#define bn_mod_add_fixed_top v1_bn_mod_add_fixed_top +#define BN_mod_add_quick v1_BN_mod_add_quick +#define BN_mod_exp v1_BN_mod_exp +#define BN_mod_exp2_mont v1_BN_mod_exp2_mont +#define BN_mod_exp_mont v1_BN_mod_exp_mont +#define BN_mod_exp_mont_consttime v1_BN_mod_exp_mont_consttime +#define BN_mod_exp_mont_word v1_BN_mod_exp_mont_word +#define BN_mod_exp_recp v1_BN_mod_exp_recp +#define BN_mod_exp_simple v1_BN_mod_exp_simple +#define BN_mod_inverse v1_BN_mod_inverse +#define BN_mod_lshift v1_BN_mod_lshift +#define BN_mod_lshift1 v1_BN_mod_lshift1 +#define BN_mod_lshift1_quick v1_BN_mod_lshift1_quick +#define BN_mod_lshift_quick v1_BN_mod_lshift_quick +#define BN_mod_mul v1_BN_mod_mul +#define BN_mod_mul_montgomery v1_BN_mod_mul_montgomery +#define BN_mod_mul_reciprocal v1_BN_mod_mul_reciprocal +#define BN_mod_sqr v1_BN_mod_sqr +#define BN_mod_sqrt v1_BN_mod_sqrt +#define BN_mod_sub v1_BN_mod_sub +#define bn_mod_sub_fixed_top v1_bn_mod_sub_fixed_top +#define BN_mod_sub_quick v1_BN_mod_sub_quick +#define BN_mod_word v1_BN_mod_word +#define BN_MONT_CTX_copy v1_BN_MONT_CTX_copy +#define BN_MONT_CTX_free v1_BN_MONT_CTX_free +#define BN_MONT_CTX_init v1_BN_MONT_CTX_init +#define BN_MONT_CTX_new v1_BN_MONT_CTX_new +#define BN_MONT_CTX_set v1_BN_MONT_CTX_set +#define BN_MONT_CTX_set_locked v1_BN_MONT_CTX_set_locked +#define BN_mpi2bn v1_BN_mpi2bn +#define BN_mul v1_BN_mul +#define bn_mul_add_words v1_bn_mul_add_words +#define bn_mul_comba4 v1_bn_mul_comba4 +#define bn_mul_comba8 v1_bn_mul_comba8 +#define bn_mul_fixed_top v1_bn_mul_fixed_top +#define bn_mul_low_normal v1_bn_mul_low_normal +#define bn_mul_low_recursive v1_bn_mul_low_recursive +#define bn_mul_mont v1_bn_mul_mont +#define bn_mul_mont_fixed_top v1_bn_mul_mont_fixed_top +#define bn_mul_mont_gather5 v1_bn_mul_mont_gather5 +#define bn_mul_normal v1_bn_mul_normal +#define bn_mul_part_recursive v1_bn_mul_part_recursive +#define bn_mul_recursive v1_bn_mul_recursive +#define BN_mul_word v1_BN_mul_word +#define bn_mul_words v1_bn_mul_words +#define BN_new v1_BN_new +#define BN_nist_mod_192 v1_BN_nist_mod_192 +#define BN_nist_mod_224 v1_BN_nist_mod_224 +#define BN_nist_mod_256 v1_BN_nist_mod_256 +#define BN_nist_mod_384 v1_BN_nist_mod_384 +#define BN_nist_mod_521 v1_BN_nist_mod_521 +#define BN_nist_mod_func v1_BN_nist_mod_func +#define BN_nnmod v1_BN_nnmod +#define BN_num_bits v1_BN_num_bits +#define BN_num_bits_word v1_BN_num_bits_word +#define BN_options v1_BN_options +#define bn_power5 v1_bn_power5 +#define BN_print v1_BN_print +#define BN_print_fp v1_BN_print_fp +#define BN_priv_rand v1_BN_priv_rand +#define BN_priv_rand_range v1_BN_priv_rand_range +#define BN_pseudo_rand v1_BN_pseudo_rand +#define BN_pseudo_rand_range v1_BN_pseudo_rand_range +#define BN_rand v1_BN_rand +#define BN_rand_range v1_BN_rand_range +#define BN_reciprocal v1_BN_reciprocal +#define BN_RECP_CTX_free v1_BN_RECP_CTX_free +#define BN_RECP_CTX_init v1_BN_RECP_CTX_init +#define BN_RECP_CTX_new v1_BN_RECP_CTX_new +#define BN_RECP_CTX_set v1_BN_RECP_CTX_set +#define BN_rshift v1_BN_rshift +#define BN_rshift1 v1_BN_rshift1 +#define bn_rshift_fixed_top v1_bn_rshift_fixed_top +#define bn_scatter5 v1_bn_scatter5 +#define BN_secure_new v1_BN_secure_new +#define BN_security_bits v1_BN_security_bits +#define bn_set_all_zero v1_bn_set_all_zero +#define BN_set_bit v1_BN_set_bit +#define BN_set_flags v1_BN_set_flags +#define BN_set_negative v1_BN_set_negative +#define BN_set_params v1_BN_set_params +#define bn_set_static_words v1_bn_set_static_words +#define BN_set_word v1_BN_set_word +#define bn_set_words v1_bn_set_words +#define BN_sqr v1_BN_sqr +#define bn_sqr8x_internal v1_bn_sqr8x_internal +#define bn_sqr_comba4 v1_bn_sqr_comba4 +#define bn_sqr_comba8 v1_bn_sqr_comba8 +#define bn_sqr_fixed_top v1_bn_sqr_fixed_top +#define bn_sqr_normal v1_bn_sqr_normal +#define bn_sqr_recursive v1_bn_sqr_recursive +#define bn_sqr_words v1_bn_sqr_words +#define bn_sqrx8x_internal v1_bn_sqrx8x_internal +#define BN_sub v1_BN_sub +#define bn_sub_part_words v1_bn_sub_part_words +#define BN_sub_word v1_BN_sub_word +#define bn_sub_words v1_bn_sub_words +#define BN_swap v1_BN_swap +#define BN_to_ASN1_ENUMERATED v1_BN_to_ASN1_ENUMERATED +#define BN_to_ASN1_INTEGER v1_BN_to_ASN1_INTEGER +#define bn_to_mont_fixed_top v1_bn_to_mont_fixed_top +#define BN_to_montgomery v1_BN_to_montgomery +#define BN_uadd v1_BN_uadd +#define BN_ucmp v1_BN_ucmp +#define BN_usub v1_BN_usub +#define BN_value_one v1_BN_value_one +#define bn_wexpand v1_bn_wexpand +#define BN_with_flags v1_BN_with_flags +#define BN_X931_derive_prime_ex v1_BN_X931_derive_prime_ex +#define BN_X931_generate_prime_ex v1_BN_X931_generate_prime_ex +#define BN_X931_generate_Xpq v1_BN_X931_generate_Xpq +#define BN_zero_ex v1_BN_zero_ex +#define bread_conv v1_bread_conv +#define BUF_MEM_free v1_BUF_MEM_free +#define BUF_MEM_grow v1_BUF_MEM_grow +#define BUF_MEM_grow_clean v1_BUF_MEM_grow_clean +#define BUF_MEM_new v1_BUF_MEM_new +#define BUF_MEM_new_ex v1_BUF_MEM_new_ex +#define BUF_reverse v1_BUF_reverse +#define bwrite_conv v1_bwrite_conv +#define bytes_to_cipher_list v1_bytes_to_cipher_list +#define c2i_ASN1_BIT_STRING v1_c2i_ASN1_BIT_STRING +#define c2i_ASN1_INTEGER v1_c2i_ASN1_INTEGER +#define c2i_ASN1_OBJECT v1_c2i_ASN1_OBJECT +#define c2i_uint64_int v1_c2i_uint64_int +#define c448_ed448_convert_private_key_to_x448 v1_c448_ed448_convert_private_key_to_x448 +#define c448_ed448_derive_public_key v1_c448_ed448_derive_public_key +#define c448_ed448_sign v1_c448_ed448_sign +#define c448_ed448_sign_prehash v1_c448_ed448_sign_prehash +#define c448_ed448_verify v1_c448_ed448_verify +#define c448_ed448_verify_prehash v1_c448_ed448_verify_prehash +#define Camellia_cbc_encrypt v1_Camellia_cbc_encrypt +#define Camellia_cfb128_encrypt v1_Camellia_cfb128_encrypt +#define Camellia_cfb1_encrypt v1_Camellia_cfb1_encrypt +#define Camellia_cfb8_encrypt v1_Camellia_cfb8_encrypt +#define Camellia_ctr128_encrypt v1_Camellia_ctr128_encrypt +#define Camellia_decrypt v1_Camellia_decrypt +#define Camellia_DecryptBlock v1_Camellia_DecryptBlock +#define Camellia_DecryptBlock_Rounds v1_Camellia_DecryptBlock_Rounds +#define Camellia_ecb_encrypt v1_Camellia_ecb_encrypt +#define Camellia_Ekeygen v1_Camellia_Ekeygen +#define Camellia_encrypt v1_Camellia_encrypt +#define Camellia_EncryptBlock v1_Camellia_EncryptBlock +#define Camellia_EncryptBlock_Rounds v1_Camellia_EncryptBlock_Rounds +#define Camellia_ofb128_encrypt v1_Camellia_ofb128_encrypt +#define Camellia_set_key v1_Camellia_set_key +#define CAST_cbc_encrypt v1_CAST_cbc_encrypt +#define CAST_cfb64_encrypt v1_CAST_cfb64_encrypt +#define CAST_decrypt v1_CAST_decrypt +#define CAST_ecb_encrypt v1_CAST_ecb_encrypt +#define CAST_encrypt v1_CAST_encrypt +#define CAST_ofb64_encrypt v1_CAST_ofb64_encrypt +#define CAST_set_key v1_CAST_set_key +#define CAST_S_table0 v1_CAST_S_table0 +#define CAST_S_table1 v1_CAST_S_table1 +#define CAST_S_table2 v1_CAST_S_table2 +#define CAST_S_table3 v1_CAST_S_table3 +#define CAST_S_table4 v1_CAST_S_table4 +#define CAST_S_table5 v1_CAST_S_table5 +#define CAST_S_table6 v1_CAST_S_table6 +#define CAST_S_table7 v1_CAST_S_table7 +#define CBIGNUM_it v1_CBIGNUM_it +#define CERTIFICATEPOLICIES_free v1_CERTIFICATEPOLICIES_free +#define CERTIFICATEPOLICIES_it v1_CERTIFICATEPOLICIES_it +#define CERTIFICATEPOLICIES_new v1_CERTIFICATEPOLICIES_new +#define ChaCha20_ctr32 v1_ChaCha20_ctr32 +#define check_in_list v1_check_in_list +#define cmac_asn1_meth v1_cmac_asn1_meth +#define CMAC_CTX_cleanup v1_CMAC_CTX_cleanup +#define CMAC_CTX_copy v1_CMAC_CTX_copy +#define CMAC_CTX_free v1_CMAC_CTX_free +#define CMAC_CTX_get0_cipher_ctx v1_CMAC_CTX_get0_cipher_ctx +#define CMAC_CTX_new v1_CMAC_CTX_new +#define CMAC_Final v1_CMAC_Final +#define CMAC_Init v1_CMAC_Init +#define cmac_pkey_meth v1_cmac_pkey_meth +#define CMAC_resume v1_CMAC_resume +#define CMAC_Update v1_CMAC_Update +#define CMS_add0_cert v1_CMS_add0_cert +#define CMS_add0_CertificateChoices v1_CMS_add0_CertificateChoices +#define CMS_add0_crl v1_CMS_add0_crl +#define CMS_add0_recipient_key v1_CMS_add0_recipient_key +#define CMS_add0_recipient_password v1_CMS_add0_recipient_password +#define CMS_add0_RevocationInfoChoice v1_CMS_add0_RevocationInfoChoice +#define CMS_add1_cert v1_CMS_add1_cert +#define CMS_add1_crl v1_CMS_add1_crl +#define CMS_add1_ReceiptRequest v1_CMS_add1_ReceiptRequest +#define CMS_add1_recipient_cert v1_CMS_add1_recipient_cert +#define CMS_add1_signer v1_CMS_add1_signer +#define CMS_add_simple_smimecap v1_CMS_add_simple_smimecap +#define CMS_add_smimecap v1_CMS_add_smimecap +#define CMS_add_standard_smimecap v1_CMS_add_standard_smimecap +#define CMS_Attributes_Sign_it v1_CMS_Attributes_Sign_it +#define CMS_Attributes_Verify_it v1_CMS_Attributes_Verify_it +#define CMS_CertificateChoices_it v1_CMS_CertificateChoices_it +#define CMS_compress v1_CMS_compress +#define cms_CompressedData_create v1_cms_CompressedData_create +#define cms_CompressedData_init_bio v1_cms_CompressedData_init_bio +#define CMS_CompressedData_it v1_CMS_CompressedData_it +#define cms_content_bio v1_cms_content_bio +#define CMS_ContentInfo_free v1_CMS_ContentInfo_free +#define CMS_ContentInfo_it v1_CMS_ContentInfo_it +#define CMS_ContentInfo_new v1_CMS_ContentInfo_new +#define CMS_ContentInfo_print_ctx v1_CMS_ContentInfo_print_ctx +#define CMS_data v1_CMS_data +#define cms_Data_create v1_cms_Data_create +#define CMS_data_create v1_CMS_data_create +#define CMS_dataFinal v1_CMS_dataFinal +#define CMS_dataInit v1_CMS_dataInit +#define CMS_decrypt v1_CMS_decrypt +#define CMS_decrypt_set1_key v1_CMS_decrypt_set1_key +#define CMS_decrypt_set1_password v1_CMS_decrypt_set1_password +#define CMS_decrypt_set1_pkey v1_CMS_decrypt_set1_pkey +#define cms_DigestAlgorithm_find_ctx v1_cms_DigestAlgorithm_find_ctx +#define cms_DigestAlgorithm_init_bio v1_cms_DigestAlgorithm_init_bio +#define CMS_digest_create v1_CMS_digest_create +#define cms_DigestedData_create v1_cms_DigestedData_create +#define cms_DigestedData_do_final v1_cms_DigestedData_do_final +#define cms_DigestedData_init_bio v1_cms_DigestedData_init_bio +#define CMS_DigestedData_it v1_CMS_DigestedData_it +#define CMS_digest_verify v1_CMS_digest_verify +#define cms_encode_Receipt v1_cms_encode_Receipt +#define CMS_encrypt v1_CMS_encrypt +#define cms_EncryptedContent_init v1_cms_EncryptedContent_init +#define cms_EncryptedContent_init_bio v1_cms_EncryptedContent_init_bio +#define CMS_EncryptedData_decrypt v1_CMS_EncryptedData_decrypt +#define CMS_EncryptedData_encrypt v1_CMS_EncryptedData_encrypt +#define cms_EncryptedData_init_bio v1_cms_EncryptedData_init_bio +#define CMS_EncryptedData_it v1_CMS_EncryptedData_it +#define CMS_EncryptedData_set1_key v1_CMS_EncryptedData_set1_key +#define cms_env_asn1_ctrl v1_cms_env_asn1_ctrl +#define CMS_EnvelopedData_create v1_CMS_EnvelopedData_create +#define cms_EnvelopedData_init_bio v1_cms_EnvelopedData_init_bio +#define CMS_EnvelopedData_it v1_CMS_EnvelopedData_it +#define CMS_final v1_CMS_final +#define CMS_get0_content v1_CMS_get0_content +#define CMS_get0_eContentType v1_CMS_get0_eContentType +#define cms_get0_enveloped v1_cms_get0_enveloped +#define CMS_get0_RecipientInfos v1_CMS_get0_RecipientInfos +#define CMS_get0_SignerInfos v1_CMS_get0_SignerInfos +#define CMS_get0_signers v1_CMS_get0_signers +#define CMS_get0_type v1_CMS_get0_type +#define CMS_get1_certs v1_CMS_get1_certs +#define CMS_get1_crls v1_CMS_get1_crls +#define CMS_get1_ReceiptRequest v1_CMS_get1_ReceiptRequest +#define cms_ias_cert_cmp v1_cms_ias_cert_cmp +#define CMS_is_detached v1_CMS_is_detached +#define CMS_IssuerAndSerialNumber_it v1_CMS_IssuerAndSerialNumber_it +#define CMS_KEKRecipientInfo_it v1_CMS_KEKRecipientInfo_it +#define CMS_KeyAgreeRecipientInfo_it v1_CMS_KeyAgreeRecipientInfo_it +#define cms_keyid_cert_cmp v1_cms_keyid_cert_cmp +#define CMS_KeyTransRecipientInfo_it v1_CMS_KeyTransRecipientInfo_it +#define cms_msgSigDigest_add1 v1_cms_msgSigDigest_add1 +#define CMS_OriginatorPublicKey_it v1_CMS_OriginatorPublicKey_it +#define CMS_OtherKeyAttribute_it v1_CMS_OtherKeyAttribute_it +#define CMS_PasswordRecipientInfo_it v1_CMS_PasswordRecipientInfo_it +#define cms_pkey_get_ri_type v1_cms_pkey_get_ri_type +#define CMS_Receipt_it v1_CMS_Receipt_it +#define CMS_ReceiptRequest_create0 v1_CMS_ReceiptRequest_create0 +#define CMS_ReceiptRequest_free v1_CMS_ReceiptRequest_free +#define CMS_ReceiptRequest_get0_values v1_CMS_ReceiptRequest_get0_values +#define CMS_ReceiptRequest_it v1_CMS_ReceiptRequest_it +#define CMS_ReceiptRequest_new v1_CMS_ReceiptRequest_new +#define cms_Receipt_verify v1_cms_Receipt_verify +#define CMS_RecipientEncryptedKey_cert_cmp v1_CMS_RecipientEncryptedKey_cert_cmp +#define CMS_RecipientEncryptedKey_get0_id v1_CMS_RecipientEncryptedKey_get0_id +#define CMS_RecipientEncryptedKey_it v1_CMS_RecipientEncryptedKey_it +#define CMS_RecipientInfo_decrypt v1_CMS_RecipientInfo_decrypt +#define CMS_RecipientInfo_encrypt v1_CMS_RecipientInfo_encrypt +#define CMS_RecipientInfo_get0_pkey_ctx v1_CMS_RecipientInfo_get0_pkey_ctx +#define CMS_RecipientInfo_it v1_CMS_RecipientInfo_it +#define CMS_RecipientInfo_kari_decrypt v1_CMS_RecipientInfo_kari_decrypt +#define cms_RecipientInfo_kari_encrypt v1_cms_RecipientInfo_kari_encrypt +#define CMS_RecipientInfo_kari_get0_alg v1_CMS_RecipientInfo_kari_get0_alg +#define CMS_RecipientInfo_kari_get0_ctx v1_CMS_RecipientInfo_kari_get0_ctx +#define CMS_RecipientInfo_kari_get0_orig_id v1_CMS_RecipientInfo_kari_get0_orig_id +#define CMS_RecipientInfo_kari_get0_reks v1_CMS_RecipientInfo_kari_get0_reks +#define cms_RecipientInfo_kari_init v1_cms_RecipientInfo_kari_init +#define CMS_RecipientInfo_kari_orig_id_cmp v1_CMS_RecipientInfo_kari_orig_id_cmp +#define CMS_RecipientInfo_kari_set0_pkey v1_CMS_RecipientInfo_kari_set0_pkey +#define CMS_RecipientInfo_kekri_get0_id v1_CMS_RecipientInfo_kekri_get0_id +#define CMS_RecipientInfo_kekri_id_cmp v1_CMS_RecipientInfo_kekri_id_cmp +#define CMS_RecipientInfo_ktri_cert_cmp v1_CMS_RecipientInfo_ktri_cert_cmp +#define CMS_RecipientInfo_ktri_get0_algs v1_CMS_RecipientInfo_ktri_get0_algs +#define CMS_RecipientInfo_ktri_get0_signer_id v1_CMS_RecipientInfo_ktri_get0_signer_id +#define cms_RecipientInfo_pwri_crypt v1_cms_RecipientInfo_pwri_crypt +#define CMS_RecipientInfo_set0_key v1_CMS_RecipientInfo_set0_key +#define CMS_RecipientInfo_set0_password v1_CMS_RecipientInfo_set0_password +#define CMS_RecipientInfo_set0_pkey v1_CMS_RecipientInfo_set0_pkey +#define CMS_RecipientInfo_type v1_CMS_RecipientInfo_type +#define CMS_RecipientKeyIdentifier_it v1_CMS_RecipientKeyIdentifier_it +#define CMS_RevocationInfoChoice_it v1_CMS_RevocationInfoChoice_it +#define CMS_set1_eContentType v1_CMS_set1_eContentType +#define cms_set1_ias v1_cms_set1_ias +#define cms_set1_keyid v1_cms_set1_keyid +#define cms_set1_SignerIdentifier v1_cms_set1_SignerIdentifier +#define CMS_set1_signers_certs v1_CMS_set1_signers_certs +#define CMS_set_detached v1_CMS_set_detached +#define CMS_SharedInfo_encode v1_CMS_SharedInfo_encode +#define CMS_si_check_attributes v1_CMS_si_check_attributes +#define CMS_sign v1_CMS_sign +#define CMS_signed_add1_attr v1_CMS_signed_add1_attr +#define CMS_signed_add1_attr_by_NID v1_CMS_signed_add1_attr_by_NID +#define CMS_signed_add1_attr_by_OBJ v1_CMS_signed_add1_attr_by_OBJ +#define CMS_signed_add1_attr_by_txt v1_CMS_signed_add1_attr_by_txt +#define cms_SignedData_final v1_cms_SignedData_final +#define CMS_SignedData_init v1_CMS_SignedData_init +#define cms_SignedData_init_bio v1_cms_SignedData_init_bio +#define CMS_SignedData_it v1_CMS_SignedData_it +#define CMS_signed_delete_attr v1_CMS_signed_delete_attr +#define CMS_signed_get0_data_by_OBJ v1_CMS_signed_get0_data_by_OBJ +#define CMS_signed_get_attr v1_CMS_signed_get_attr +#define CMS_signed_get_attr_by_NID v1_CMS_signed_get_attr_by_NID +#define CMS_signed_get_attr_by_OBJ v1_CMS_signed_get_attr_by_OBJ +#define CMS_signed_get_attr_count v1_CMS_signed_get_attr_count +#define cms_SignerIdentifier_cert_cmp v1_cms_SignerIdentifier_cert_cmp +#define cms_SignerIdentifier_get0_signer_id v1_cms_SignerIdentifier_get0_signer_id +#define CMS_SignerInfo_cert_cmp v1_CMS_SignerInfo_cert_cmp +#define CMS_SignerInfo_get0_algs v1_CMS_SignerInfo_get0_algs +#define CMS_SignerInfo_get0_md_ctx v1_CMS_SignerInfo_get0_md_ctx +#define CMS_SignerInfo_get0_pkey_ctx v1_CMS_SignerInfo_get0_pkey_ctx +#define CMS_SignerInfo_get0_signature v1_CMS_SignerInfo_get0_signature +#define CMS_SignerInfo_get0_signer_id v1_CMS_SignerInfo_get0_signer_id +#define CMS_SignerInfo_it v1_CMS_SignerInfo_it +#define CMS_SignerInfo_set1_signer_cert v1_CMS_SignerInfo_set1_signer_cert +#define CMS_SignerInfo_sign v1_CMS_SignerInfo_sign +#define CMS_SignerInfo_verify v1_CMS_SignerInfo_verify +#define CMS_SignerInfo_verify_content v1_CMS_SignerInfo_verify_content +#define CMS_sign_receipt v1_CMS_sign_receipt +#define CMS_stream v1_CMS_stream +#define CMS_uncompress v1_CMS_uncompress +#define CMS_unsigned_add1_attr v1_CMS_unsigned_add1_attr +#define CMS_unsigned_add1_attr_by_NID v1_CMS_unsigned_add1_attr_by_NID +#define CMS_unsigned_add1_attr_by_OBJ v1_CMS_unsigned_add1_attr_by_OBJ +#define CMS_unsigned_add1_attr_by_txt v1_CMS_unsigned_add1_attr_by_txt +#define CMS_unsigned_delete_attr v1_CMS_unsigned_delete_attr +#define CMS_unsigned_get0_data_by_OBJ v1_CMS_unsigned_get0_data_by_OBJ +#define CMS_unsigned_get_attr v1_CMS_unsigned_get_attr +#define CMS_unsigned_get_attr_by_NID v1_CMS_unsigned_get_attr_by_NID +#define CMS_unsigned_get_attr_by_OBJ v1_CMS_unsigned_get_attr_by_OBJ +#define CMS_unsigned_get_attr_count v1_CMS_unsigned_get_attr_count +#define CMS_verify v1_CMS_verify +#define CMS_verify_receipt v1_CMS_verify_receipt +#define COMP_compress_block v1_COMP_compress_block +#define COMP_CTX_free v1_COMP_CTX_free +#define COMP_CTX_get_method v1_COMP_CTX_get_method +#define COMP_CTX_get_type v1_COMP_CTX_get_type +#define COMP_CTX_new v1_COMP_CTX_new +#define COMP_expand_block v1_COMP_expand_block +#define COMP_get_name v1_COMP_get_name +#define COMP_get_type v1_COMP_get_type +#define COMP_zlib v1_COMP_zlib +#define comp_zlib_cleanup_int v1_comp_zlib_cleanup_int +#define conf_add_ssl_module v1_conf_add_ssl_module +#define _CONF_add_string v1__CONF_add_string +#define CONF_dump_bio v1_CONF_dump_bio +#define CONF_dump_fp v1_CONF_dump_fp +#define CONF_free v1_CONF_free +#define _CONF_free_data v1__CONF_free_data +#define CONF_get1_default_config_file v1_CONF_get1_default_config_file +#define CONF_get_number v1_CONF_get_number +#define CONF_get_section v1_CONF_get_section +#define _CONF_get_section v1__CONF_get_section +#define _CONF_get_section_values v1__CONF_get_section_values +#define CONF_get_string v1_CONF_get_string +#define _CONF_get_string v1__CONF_get_string +#define CONF_imodule_get_flags v1_CONF_imodule_get_flags +#define CONF_imodule_get_module v1_CONF_imodule_get_module +#define CONF_imodule_get_name v1_CONF_imodule_get_name +#define CONF_imodule_get_usr_data v1_CONF_imodule_get_usr_data +#define CONF_imodule_get_value v1_CONF_imodule_get_value +#define CONF_imodule_set_flags v1_CONF_imodule_set_flags +#define CONF_imodule_set_usr_data v1_CONF_imodule_set_usr_data +#define CONF_load v1_CONF_load +#define CONF_load_bio v1_CONF_load_bio +#define CONF_load_fp v1_CONF_load_fp +#define CONF_module_add v1_CONF_module_add +#define CONF_module_get_usr_data v1_CONF_module_get_usr_data +#define CONF_module_set_usr_data v1_CONF_module_set_usr_data +#define CONF_modules_finish v1_CONF_modules_finish +#define conf_modules_free_int v1_conf_modules_free_int +#define CONF_modules_load v1_CONF_modules_load +#define CONF_modules_load_file v1_CONF_modules_load_file +#define CONF_modules_unload v1_CONF_modules_unload +#define _CONF_new_data v1__CONF_new_data +#define _CONF_new_section v1__CONF_new_section +#define CONF_parse_list v1_CONF_parse_list +#define CONF_set_default_method v1_CONF_set_default_method +#define CONF_set_nconf v1_CONF_set_nconf +#define conf_ssl_get v1_conf_ssl_get +#define conf_ssl_get_cmd v1_conf_ssl_get_cmd +#define conf_ssl_name_find v1_conf_ssl_name_find +#define construct_ca_names v1_construct_ca_names +#define construct_key_exchange_tbs v1_construct_key_exchange_tbs +#define create_synthetic_message_hash v1_create_synthetic_message_hash +#define CRL_DIST_POINTS_free v1_CRL_DIST_POINTS_free +#define CRL_DIST_POINTS_it v1_CRL_DIST_POINTS_it +#define CRL_DIST_POINTS_new v1_CRL_DIST_POINTS_new +#define CRYPTO_128_unwrap v1_CRYPTO_128_unwrap +#define CRYPTO_128_unwrap_pad v1_CRYPTO_128_unwrap_pad +#define CRYPTO_128_wrap v1_CRYPTO_128_wrap +#define CRYPTO_128_wrap_pad v1_CRYPTO_128_wrap_pad +#define CRYPTO_atomic_add v1_CRYPTO_atomic_add +#define CRYPTO_cbc128_decrypt v1_CRYPTO_cbc128_decrypt +#define CRYPTO_cbc128_encrypt v1_CRYPTO_cbc128_encrypt +#define CRYPTO_ccm128_aad v1_CRYPTO_ccm128_aad +#define CRYPTO_ccm128_decrypt v1_CRYPTO_ccm128_decrypt +#define CRYPTO_ccm128_decrypt_ccm64 v1_CRYPTO_ccm128_decrypt_ccm64 +#define CRYPTO_ccm128_encrypt v1_CRYPTO_ccm128_encrypt +#define CRYPTO_ccm128_encrypt_ccm64 v1_CRYPTO_ccm128_encrypt_ccm64 +#define CRYPTO_ccm128_init v1_CRYPTO_ccm128_init +#define CRYPTO_ccm128_setiv v1_CRYPTO_ccm128_setiv +#define CRYPTO_ccm128_tag v1_CRYPTO_ccm128_tag +#define CRYPTO_cfb128_1_encrypt v1_CRYPTO_cfb128_1_encrypt +#define CRYPTO_cfb128_8_encrypt v1_CRYPTO_cfb128_8_encrypt +#define CRYPTO_cfb128_encrypt v1_CRYPTO_cfb128_encrypt +#define crypto_cleanup_all_ex_data_int v1_crypto_cleanup_all_ex_data_int +#define CRYPTO_clear_free v1_CRYPTO_clear_free +#define CRYPTO_clear_realloc v1_CRYPTO_clear_realloc +#define CRYPTO_ctr128_encrypt v1_CRYPTO_ctr128_encrypt +#define CRYPTO_ctr128_encrypt_ctr32 v1_CRYPTO_ctr128_encrypt_ctr32 +#define CRYPTO_cts128_decrypt v1_CRYPTO_cts128_decrypt +#define CRYPTO_cts128_decrypt_block v1_CRYPTO_cts128_decrypt_block +#define CRYPTO_cts128_encrypt v1_CRYPTO_cts128_encrypt +#define CRYPTO_cts128_encrypt_block v1_CRYPTO_cts128_encrypt_block +#define CRYPTO_dup_ex_data v1_CRYPTO_dup_ex_data +#define CRYPTO_free v1_CRYPTO_free +#define CRYPTO_free_ex_data v1_CRYPTO_free_ex_data +#define CRYPTO_free_ex_index v1_CRYPTO_free_ex_index +#define CRYPTO_gcm128_aad v1_CRYPTO_gcm128_aad +#define CRYPTO_gcm128_decrypt v1_CRYPTO_gcm128_decrypt +#define CRYPTO_gcm128_decrypt_ctr32 v1_CRYPTO_gcm128_decrypt_ctr32 +#define CRYPTO_gcm128_encrypt v1_CRYPTO_gcm128_encrypt +#define CRYPTO_gcm128_encrypt_ctr32 v1_CRYPTO_gcm128_encrypt_ctr32 +#define CRYPTO_gcm128_finish v1_CRYPTO_gcm128_finish +#define CRYPTO_gcm128_init v1_CRYPTO_gcm128_init +#define CRYPTO_gcm128_new v1_CRYPTO_gcm128_new +#define CRYPTO_gcm128_release v1_CRYPTO_gcm128_release +#define CRYPTO_gcm128_setiv v1_CRYPTO_gcm128_setiv +#define CRYPTO_gcm128_tag v1_CRYPTO_gcm128_tag +#define CRYPTO_get_ex_data v1_CRYPTO_get_ex_data +#define CRYPTO_get_ex_new_index v1_CRYPTO_get_ex_new_index +#define CRYPTO_get_mem_functions v1_CRYPTO_get_mem_functions +#define CRYPTO_malloc v1_CRYPTO_malloc +#define CRYPTO_memcmp v1_CRYPTO_memcmp +#define CRYPTO_mem_ctrl v1_CRYPTO_mem_ctrl +#define CRYPTO_memdup v1_CRYPTO_memdup +#define CRYPTO_new_ex_data v1_CRYPTO_new_ex_data +#define CRYPTO_nistcts128_decrypt v1_CRYPTO_nistcts128_decrypt +#define CRYPTO_nistcts128_decrypt_block v1_CRYPTO_nistcts128_decrypt_block +#define CRYPTO_nistcts128_encrypt v1_CRYPTO_nistcts128_encrypt +#define CRYPTO_nistcts128_encrypt_block v1_CRYPTO_nistcts128_encrypt_block +#define CRYPTO_ocb128_aad v1_CRYPTO_ocb128_aad +#define CRYPTO_ocb128_cleanup v1_CRYPTO_ocb128_cleanup +#define CRYPTO_ocb128_copy_ctx v1_CRYPTO_ocb128_copy_ctx +#define CRYPTO_ocb128_decrypt v1_CRYPTO_ocb128_decrypt +#define CRYPTO_ocb128_encrypt v1_CRYPTO_ocb128_encrypt +#define CRYPTO_ocb128_finish v1_CRYPTO_ocb128_finish +#define CRYPTO_ocb128_init v1_CRYPTO_ocb128_init +#define CRYPTO_ocb128_new v1_CRYPTO_ocb128_new +#define CRYPTO_ocb128_setiv v1_CRYPTO_ocb128_setiv +#define CRYPTO_ocb128_tag v1_CRYPTO_ocb128_tag +#define CRYPTO_ofb128_encrypt v1_CRYPTO_ofb128_encrypt +#define CRYPTO_realloc v1_CRYPTO_realloc +#define CRYPTO_secure_actual_size v1_CRYPTO_secure_actual_size +#define CRYPTO_secure_allocated v1_CRYPTO_secure_allocated +#define CRYPTO_secure_clear_free v1_CRYPTO_secure_clear_free +#define CRYPTO_secure_free v1_CRYPTO_secure_free +#define CRYPTO_secure_malloc v1_CRYPTO_secure_malloc +#define CRYPTO_secure_malloc_done v1_CRYPTO_secure_malloc_done +#define CRYPTO_secure_malloc_init v1_CRYPTO_secure_malloc_init +#define CRYPTO_secure_malloc_initialized v1_CRYPTO_secure_malloc_initialized +#define CRYPTO_secure_used v1_CRYPTO_secure_used +#define CRYPTO_secure_zalloc v1_CRYPTO_secure_zalloc +#define CRYPTO_set_ex_data v1_CRYPTO_set_ex_data +#define CRYPTO_set_mem_debug v1_CRYPTO_set_mem_debug +#define CRYPTO_set_mem_functions v1_CRYPTO_set_mem_functions +#define CRYPTO_strdup v1_CRYPTO_strdup +#define CRYPTO_strndup v1_CRYPTO_strndup +#define CRYPTO_THREAD_cleanup_local v1_CRYPTO_THREAD_cleanup_local +#define CRYPTO_THREAD_compare_id v1_CRYPTO_THREAD_compare_id +#define CRYPTO_THREAD_get_current_id v1_CRYPTO_THREAD_get_current_id +#define CRYPTO_THREAD_get_local v1_CRYPTO_THREAD_get_local +#define CRYPTO_THREAD_init_local v1_CRYPTO_THREAD_init_local +#define CRYPTO_THREAD_lock_free v1_CRYPTO_THREAD_lock_free +#define CRYPTO_THREAD_lock_new v1_CRYPTO_THREAD_lock_new +#define CRYPTO_THREAD_read_lock v1_CRYPTO_THREAD_read_lock +#define CRYPTO_THREAD_run_once v1_CRYPTO_THREAD_run_once +#define CRYPTO_THREAD_set_local v1_CRYPTO_THREAD_set_local +#define CRYPTO_THREAD_unlock v1_CRYPTO_THREAD_unlock +#define CRYPTO_THREAD_write_lock v1_CRYPTO_THREAD_write_lock +#define CRYPTO_xts128_encrypt v1_CRYPTO_xts128_encrypt +#define CRYPTO_zalloc v1_CRYPTO_zalloc +#define CTLOG_free v1_CTLOG_free +#define CTLOG_get0_log_id v1_CTLOG_get0_log_id +#define CTLOG_get0_name v1_CTLOG_get0_name +#define CTLOG_get0_public_key v1_CTLOG_get0_public_key +#define CTLOG_new v1_CTLOG_new +#define CTLOG_new_from_base64 v1_CTLOG_new_from_base64 +#define CTLOG_STORE_free v1_CTLOG_STORE_free +#define CTLOG_STORE_get0_log_by_id v1_CTLOG_STORE_get0_log_by_id +#define CTLOG_STORE_load_default_file v1_CTLOG_STORE_load_default_file +#define CTLOG_STORE_load_file v1_CTLOG_STORE_load_file +#define CTLOG_STORE_new v1_CTLOG_STORE_new +#define CT_POLICY_EVAL_CTX_free v1_CT_POLICY_EVAL_CTX_free +#define CT_POLICY_EVAL_CTX_get0_cert v1_CT_POLICY_EVAL_CTX_get0_cert +#define CT_POLICY_EVAL_CTX_get0_issuer v1_CT_POLICY_EVAL_CTX_get0_issuer +#define CT_POLICY_EVAL_CTX_get0_log_store v1_CT_POLICY_EVAL_CTX_get0_log_store +#define CT_POLICY_EVAL_CTX_get_time v1_CT_POLICY_EVAL_CTX_get_time +#define CT_POLICY_EVAL_CTX_new v1_CT_POLICY_EVAL_CTX_new +#define CT_POLICY_EVAL_CTX_set1_cert v1_CT_POLICY_EVAL_CTX_set1_cert +#define CT_POLICY_EVAL_CTX_set1_issuer v1_CT_POLICY_EVAL_CTX_set1_issuer +#define CT_POLICY_EVAL_CTX_set_shared_CTLOG_STORE v1_CT_POLICY_EVAL_CTX_set_shared_CTLOG_STORE +#define CT_POLICY_EVAL_CTX_set_time v1_CT_POLICY_EVAL_CTX_set_time +#define curve448_base_double_scalarmul_non_secret v1_curve448_base_double_scalarmul_non_secret +#define curve448_point_decode_like_eddsa_and_mul_by_ratio v1_curve448_point_decode_like_eddsa_and_mul_by_ratio +#define curve448_point_destroy v1_curve448_point_destroy +#define curve448_point_double v1_curve448_point_double +#define curve448_point_eq v1_curve448_point_eq +#define curve448_point_identity v1_curve448_point_identity +#define curve448_point_mul_by_ratio_and_encode_like_eddsa v1_curve448_point_mul_by_ratio_and_encode_like_eddsa +#define curve448_point_mul_by_ratio_and_encode_like_x448 v1_curve448_point_mul_by_ratio_and_encode_like_x448 +#define curve448_point_valid v1_curve448_point_valid +#define curve448_precomputed_base v1_curve448_precomputed_base +#define curve448_precomputed_scalarmul v1_curve448_precomputed_scalarmul +#define curve448_scalar_add v1_curve448_scalar_add +#define curve448_scalar_decode v1_curve448_scalar_decode +#define curve448_scalar_decode_long v1_curve448_scalar_decode_long +#define curve448_scalar_destroy v1_curve448_scalar_destroy +#define curve448_scalar_encode v1_curve448_scalar_encode +#define curve448_scalar_halve v1_curve448_scalar_halve +#define curve448_scalar_mul v1_curve448_scalar_mul +#define curve448_scalar_one v1_curve448_scalar_one +#define curve448_scalar_sub v1_curve448_scalar_sub +#define curve448_scalar_zero v1_curve448_scalar_zero +#define curve448_wnaf_base v1_curve448_wnaf_base +#define custom_ext_add v1_custom_ext_add +#define custom_ext_find v1_custom_ext_find +#define custom_ext_init v1_custom_ext_init +#define custom_ext_parse v1_custom_ext_parse +#define custom_exts_copy v1_custom_exts_copy +#define custom_exts_copy_flags v1_custom_exts_copy_flags +#define custom_exts_free v1_custom_exts_free +#define d2i_ACCESS_DESCRIPTION v1_d2i_ACCESS_DESCRIPTION +#define d2i_ADMISSIONS v1_d2i_ADMISSIONS +#define d2i_ADMISSION_SYNTAX v1_d2i_ADMISSION_SYNTAX +#define d2i_ASIdentifierChoice v1_d2i_ASIdentifierChoice +#define d2i_ASIdentifiers v1_d2i_ASIdentifiers +#define d2i_ASIdOrRange v1_d2i_ASIdOrRange +#define d2i_ASN1_BIT_STRING v1_d2i_ASN1_BIT_STRING +#define d2i_ASN1_BMPSTRING v1_d2i_ASN1_BMPSTRING +#define d2i_ASN1_ENUMERATED v1_d2i_ASN1_ENUMERATED +#define d2i_ASN1_GENERALIZEDTIME v1_d2i_ASN1_GENERALIZEDTIME +#define d2i_ASN1_GENERALSTRING v1_d2i_ASN1_GENERALSTRING +#define d2i_ASN1_IA5STRING v1_d2i_ASN1_IA5STRING +#define d2i_ASN1_INTEGER v1_d2i_ASN1_INTEGER +#define d2i_ASN1_NULL v1_d2i_ASN1_NULL +#define d2i_ASN1_OBJECT v1_d2i_ASN1_OBJECT +#define d2i_ASN1_OCTET_STRING v1_d2i_ASN1_OCTET_STRING +#define d2i_ASN1_PRINTABLE v1_d2i_ASN1_PRINTABLE +#define d2i_ASN1_PRINTABLESTRING v1_d2i_ASN1_PRINTABLESTRING +#define d2i_ASN1_SEQUENCE_ANY v1_d2i_ASN1_SEQUENCE_ANY +#define d2i_ASN1_SET_ANY v1_d2i_ASN1_SET_ANY +#define d2i_ASN1_T61STRING v1_d2i_ASN1_T61STRING +#define d2i_ASN1_TIME v1_d2i_ASN1_TIME +#define d2i_ASN1_TYPE v1_d2i_ASN1_TYPE +#define d2i_ASN1_UINTEGER v1_d2i_ASN1_UINTEGER +#define d2i_ASN1_UNIVERSALSTRING v1_d2i_ASN1_UNIVERSALSTRING +#define d2i_ASN1_UTCTIME v1_d2i_ASN1_UTCTIME +#define d2i_ASN1_UTF8STRING v1_d2i_ASN1_UTF8STRING +#define d2i_ASN1_VISIBLESTRING v1_d2i_ASN1_VISIBLESTRING +#define d2i_ASRange v1_d2i_ASRange +#define d2i_AUTHORITY_INFO_ACCESS v1_d2i_AUTHORITY_INFO_ACCESS +#define d2i_AUTHORITY_KEYID v1_d2i_AUTHORITY_KEYID +#define d2i_AutoPrivateKey v1_d2i_AutoPrivateKey +#define d2i_BASIC_CONSTRAINTS v1_d2i_BASIC_CONSTRAINTS +#define d2i_CERTIFICATEPOLICIES v1_d2i_CERTIFICATEPOLICIES +#define d2i_CMS_bio v1_d2i_CMS_bio +#define d2i_CMS_ContentInfo v1_d2i_CMS_ContentInfo +#define d2i_CMS_ReceiptRequest v1_d2i_CMS_ReceiptRequest +#define d2i_CRL_DIST_POINTS v1_d2i_CRL_DIST_POINTS +#define d2i_DHparams v1_d2i_DHparams +#define d2i_DHxparams v1_d2i_DHxparams +#define d2i_DIRECTORYSTRING v1_d2i_DIRECTORYSTRING +#define d2i_DISPLAYTEXT v1_d2i_DISPLAYTEXT +#define d2i_DIST_POINT v1_d2i_DIST_POINT +#define d2i_DIST_POINT_NAME v1_d2i_DIST_POINT_NAME +#define d2i_DSAparams v1_d2i_DSAparams +#define d2i_DSAPrivateKey v1_d2i_DSAPrivateKey +#define d2i_DSAPrivateKey_bio v1_d2i_DSAPrivateKey_bio +#define d2i_DSAPrivateKey_fp v1_d2i_DSAPrivateKey_fp +#define d2i_DSA_PUBKEY v1_d2i_DSA_PUBKEY +#define d2i_DSA_PUBKEY_bio v1_d2i_DSA_PUBKEY_bio +#define d2i_DSA_PUBKEY_fp v1_d2i_DSA_PUBKEY_fp +#define d2i_DSAPublicKey v1_d2i_DSAPublicKey +#define d2i_DSA_SIG v1_d2i_DSA_SIG +#define d2i_ECDSA_SIG v1_d2i_ECDSA_SIG +#define d2i_ECParameters v1_d2i_ECParameters +#define d2i_ECPKParameters v1_d2i_ECPKParameters +#define d2i_ECPKPARAMETERS v1_d2i_ECPKPARAMETERS +#define d2i_ECPrivateKey v1_d2i_ECPrivateKey +#define d2i_EC_PRIVATEKEY v1_d2i_EC_PRIVATEKEY +#define d2i_ECPrivateKey_bio v1_d2i_ECPrivateKey_bio +#define d2i_ECPrivateKey_fp v1_d2i_ECPrivateKey_fp +#define d2i_EC_PUBKEY v1_d2i_EC_PUBKEY +#define d2i_EC_PUBKEY_bio v1_d2i_EC_PUBKEY_bio +#define d2i_EC_PUBKEY_fp v1_d2i_EC_PUBKEY_fp +#define d2i_EDIPARTYNAME v1_d2i_EDIPARTYNAME +#define d2i_ESS_CERT_ID v1_d2i_ESS_CERT_ID +#define d2i_ESS_CERT_ID_V2 v1_d2i_ESS_CERT_ID_V2 +#define d2i_ESS_ISSUER_SERIAL v1_d2i_ESS_ISSUER_SERIAL +#define d2i_ESS_SIGNING_CERT v1_d2i_ESS_SIGNING_CERT +#define d2i_ESS_SIGNING_CERT_V2 v1_d2i_ESS_SIGNING_CERT_V2 +#define d2i_EXTENDED_KEY_USAGE v1_d2i_EXTENDED_KEY_USAGE +#define d2i_GENERAL_NAME v1_d2i_GENERAL_NAME +#define d2i_GENERAL_NAMES v1_d2i_GENERAL_NAMES +#define d2i_GOST_KX_MESSAGE v1_d2i_GOST_KX_MESSAGE +#define d2i_int_dhx v1_d2i_int_dhx +#define d2i_IPAddressChoice v1_d2i_IPAddressChoice +#define d2i_IPAddressFamily v1_d2i_IPAddressFamily +#define d2i_IPAddressOrRange v1_d2i_IPAddressOrRange +#define d2i_IPAddressRange v1_d2i_IPAddressRange +#define d2i_ISSUING_DIST_POINT v1_d2i_ISSUING_DIST_POINT +#define d2i_NAMING_AUTHORITY v1_d2i_NAMING_AUTHORITY +#define d2i_NETSCAPE_CERT_SEQUENCE v1_d2i_NETSCAPE_CERT_SEQUENCE +#define d2i_NETSCAPE_ENCRYPTED_PKEY v1_d2i_NETSCAPE_ENCRYPTED_PKEY +#define d2i_NETSCAPE_PKEY v1_d2i_NETSCAPE_PKEY +#define d2i_NETSCAPE_SPKAC v1_d2i_NETSCAPE_SPKAC +#define d2i_NETSCAPE_SPKI v1_d2i_NETSCAPE_SPKI +#define d2i_NOTICEREF v1_d2i_NOTICEREF +#define d2i_OCSP_BASICRESP v1_d2i_OCSP_BASICRESP +#define d2i_OCSP_CERTID v1_d2i_OCSP_CERTID +#define d2i_OCSP_CERTSTATUS v1_d2i_OCSP_CERTSTATUS +#define d2i_OCSP_CRLID v1_d2i_OCSP_CRLID +#define d2i_OCSP_ONEREQ v1_d2i_OCSP_ONEREQ +#define d2i_OCSP_REQINFO v1_d2i_OCSP_REQINFO +#define d2i_OCSP_REQUEST v1_d2i_OCSP_REQUEST +#define d2i_OCSP_RESPBYTES v1_d2i_OCSP_RESPBYTES +#define d2i_OCSP_RESPDATA v1_d2i_OCSP_RESPDATA +#define d2i_OCSP_RESPID v1_d2i_OCSP_RESPID +#define d2i_OCSP_RESPONSE v1_d2i_OCSP_RESPONSE +#define d2i_OCSP_REVOKEDINFO v1_d2i_OCSP_REVOKEDINFO +#define d2i_OCSP_SERVICELOC v1_d2i_OCSP_SERVICELOC +#define d2i_OCSP_SIGNATURE v1_d2i_OCSP_SIGNATURE +#define d2i_OCSP_SINGLERESP v1_d2i_OCSP_SINGLERESP +#define d2i_OTHERNAME v1_d2i_OTHERNAME +#define d2i_PBE2PARAM v1_d2i_PBE2PARAM +#define d2i_PBEPARAM v1_d2i_PBEPARAM +#define d2i_PBKDF2PARAM v1_d2i_PBKDF2PARAM +#define d2i_PKCS12 v1_d2i_PKCS12 +#define d2i_PKCS12_BAGS v1_d2i_PKCS12_BAGS +#define d2i_PKCS12_bio v1_d2i_PKCS12_bio +#define d2i_PKCS12_fp v1_d2i_PKCS12_fp +#define d2i_PKCS12_MAC_DATA v1_d2i_PKCS12_MAC_DATA +#define d2i_PKCS12_SAFEBAG v1_d2i_PKCS12_SAFEBAG +#define d2i_PKCS7 v1_d2i_PKCS7 +#define d2i_PKCS7_bio v1_d2i_PKCS7_bio +#define d2i_PKCS7_DIGEST v1_d2i_PKCS7_DIGEST +#define d2i_PKCS7_ENC_CONTENT v1_d2i_PKCS7_ENC_CONTENT +#define d2i_PKCS7_ENCRYPT v1_d2i_PKCS7_ENCRYPT +#define d2i_PKCS7_ENVELOPE v1_d2i_PKCS7_ENVELOPE +#define d2i_PKCS7_fp v1_d2i_PKCS7_fp +#define d2i_PKCS7_ISSUER_AND_SERIAL v1_d2i_PKCS7_ISSUER_AND_SERIAL +#define d2i_PKCS7_RECIP_INFO v1_d2i_PKCS7_RECIP_INFO +#define d2i_PKCS7_SIGNED v1_d2i_PKCS7_SIGNED +#define d2i_PKCS7_SIGN_ENVELOPE v1_d2i_PKCS7_SIGN_ENVELOPE +#define d2i_PKCS7_SIGNER_INFO v1_d2i_PKCS7_SIGNER_INFO +#define d2i_PKCS8_bio v1_d2i_PKCS8_bio +#define d2i_PKCS8_fp v1_d2i_PKCS8_fp +#define d2i_PKCS8PrivateKey_bio v1_d2i_PKCS8PrivateKey_bio +#define d2i_PKCS8PrivateKey_fp v1_d2i_PKCS8PrivateKey_fp +#define d2i_PKCS8_PRIV_KEY_INFO v1_d2i_PKCS8_PRIV_KEY_INFO +#define d2i_PKCS8_PRIV_KEY_INFO_bio v1_d2i_PKCS8_PRIV_KEY_INFO_bio +#define d2i_PKCS8_PRIV_KEY_INFO_fp v1_d2i_PKCS8_PRIV_KEY_INFO_fp +#define d2i_PKEY_USAGE_PERIOD v1_d2i_PKEY_USAGE_PERIOD +#define d2i_POLICYINFO v1_d2i_POLICYINFO +#define d2i_POLICYQUALINFO v1_d2i_POLICYQUALINFO +#define d2i_PrivateKey v1_d2i_PrivateKey +#define d2i_PrivateKey_bio v1_d2i_PrivateKey_bio +#define d2i_PrivateKey_fp v1_d2i_PrivateKey_fp +#define d2i_PROFESSION_INFO v1_d2i_PROFESSION_INFO +#define d2i_PROXY_CERT_INFO_EXTENSION v1_d2i_PROXY_CERT_INFO_EXTENSION +#define d2i_PROXY_POLICY v1_d2i_PROXY_POLICY +#define d2i_PUBKEY v1_d2i_PUBKEY +#define d2i_PUBKEY_bio v1_d2i_PUBKEY_bio +#define d2i_PUBKEY_fp v1_d2i_PUBKEY_fp +#define d2i_PublicKey v1_d2i_PublicKey +#define d2i_RSA_OAEP_PARAMS v1_d2i_RSA_OAEP_PARAMS +#define d2i_RSAPrivateKey v1_d2i_RSAPrivateKey +#define d2i_RSAPrivateKey_bio v1_d2i_RSAPrivateKey_bio +#define d2i_RSAPrivateKey_fp v1_d2i_RSAPrivateKey_fp +#define d2i_RSA_PSS_PARAMS v1_d2i_RSA_PSS_PARAMS +#define d2i_RSA_PUBKEY v1_d2i_RSA_PUBKEY +#define d2i_RSA_PUBKEY_bio v1_d2i_RSA_PUBKEY_bio +#define d2i_RSA_PUBKEY_fp v1_d2i_RSA_PUBKEY_fp +#define d2i_RSAPublicKey v1_d2i_RSAPublicKey +#define d2i_RSAPublicKey_bio v1_d2i_RSAPublicKey_bio +#define d2i_RSAPublicKey_fp v1_d2i_RSAPublicKey_fp +#define d2i_SCRYPT_PARAMS v1_d2i_SCRYPT_PARAMS +#define d2i_SCT_LIST v1_d2i_SCT_LIST +#define d2i_SM2_Ciphertext v1_d2i_SM2_Ciphertext +#define d2i_SSL_SESSION v1_d2i_SSL_SESSION +#define d2i_SXNET v1_d2i_SXNET +#define d2i_SXNETID v1_d2i_SXNETID +#define d2i_TS_ACCURACY v1_d2i_TS_ACCURACY +#define d2i_TS_MSG_IMPRINT v1_d2i_TS_MSG_IMPRINT +#define d2i_TS_MSG_IMPRINT_bio v1_d2i_TS_MSG_IMPRINT_bio +#define d2i_TS_MSG_IMPRINT_fp v1_d2i_TS_MSG_IMPRINT_fp +#define d2i_TS_REQ v1_d2i_TS_REQ +#define d2i_TS_REQ_bio v1_d2i_TS_REQ_bio +#define d2i_TS_REQ_fp v1_d2i_TS_REQ_fp +#define d2i_TS_RESP v1_d2i_TS_RESP +#define d2i_TS_RESP_bio v1_d2i_TS_RESP_bio +#define d2i_TS_RESP_fp v1_d2i_TS_RESP_fp +#define d2i_TS_STATUS_INFO v1_d2i_TS_STATUS_INFO +#define d2i_TS_TST_INFO v1_d2i_TS_TST_INFO +#define d2i_TS_TST_INFO_bio v1_d2i_TS_TST_INFO_bio +#define d2i_TS_TST_INFO_fp v1_d2i_TS_TST_INFO_fp +#define d2i_USERNOTICE v1_d2i_USERNOTICE +#define d2i_X509 v1_d2i_X509 +#define d2i_X509_ALGOR v1_d2i_X509_ALGOR +#define d2i_X509_ALGORS v1_d2i_X509_ALGORS +#define d2i_X509_ATTRIBUTE v1_d2i_X509_ATTRIBUTE +#define d2i_X509_AUX v1_d2i_X509_AUX +#define d2i_X509_bio v1_d2i_X509_bio +#define d2i_X509_CERT_AUX v1_d2i_X509_CERT_AUX +#define d2i_X509_CINF v1_d2i_X509_CINF +#define d2i_X509_CRL v1_d2i_X509_CRL +#define d2i_X509_CRL_bio v1_d2i_X509_CRL_bio +#define d2i_X509_CRL_fp v1_d2i_X509_CRL_fp +#define d2i_X509_CRL_INFO v1_d2i_X509_CRL_INFO +#define d2i_X509_EXTENSION v1_d2i_X509_EXTENSION +#define d2i_X509_EXTENSIONS v1_d2i_X509_EXTENSIONS +#define d2i_X509_fp v1_d2i_X509_fp +#define d2i_X509_NAME v1_d2i_X509_NAME +#define d2i_X509_NAME_ENTRY v1_d2i_X509_NAME_ENTRY +#define d2i_X509_PUBKEY v1_d2i_X509_PUBKEY +#define d2i_X509_REQ v1_d2i_X509_REQ +#define d2i_X509_REQ_bio v1_d2i_X509_REQ_bio +#define d2i_X509_REQ_fp v1_d2i_X509_REQ_fp +#define d2i_X509_REQ_INFO v1_d2i_X509_REQ_INFO +#define d2i_X509_REVOKED v1_d2i_X509_REVOKED +#define d2i_X509_SIG v1_d2i_X509_SIG +#define d2i_X509_VAL v1_d2i_X509_VAL +#define DES_cbc_cksum v1_DES_cbc_cksum +#define DES_cbc_encrypt v1_DES_cbc_encrypt +#define DES_cfb64_encrypt v1_DES_cfb64_encrypt +#define DES_cfb_encrypt v1_DES_cfb_encrypt +#define DES_check_key_parity v1_DES_check_key_parity +#define DES_crypt v1_DES_crypt +#define DES_decrypt3 v1_DES_decrypt3 +#define DES_ecb3_encrypt v1_DES_ecb3_encrypt +#define DES_ecb_encrypt v1_DES_ecb_encrypt +#define DES_ede3_cbc_encrypt v1_DES_ede3_cbc_encrypt +#define DES_ede3_cfb64_encrypt v1_DES_ede3_cfb64_encrypt +#define DES_ede3_cfb_encrypt v1_DES_ede3_cfb_encrypt +#define DES_ede3_ofb64_encrypt v1_DES_ede3_ofb64_encrypt +#define DES_encrypt1 v1_DES_encrypt1 +#define DES_encrypt2 v1_DES_encrypt2 +#define DES_encrypt3 v1_DES_encrypt3 +#define DES_fcrypt v1_DES_fcrypt +#define DES_is_weak_key v1_DES_is_weak_key +#define DES_key_sched v1_DES_key_sched +#define DES_ncbc_encrypt v1_DES_ncbc_encrypt +#define DES_ofb64_encrypt v1_DES_ofb64_encrypt +#define DES_ofb_encrypt v1_DES_ofb_encrypt +#define DES_options v1_DES_options +#define DES_pcbc_encrypt v1_DES_pcbc_encrypt +#define DES_quad_cksum v1_DES_quad_cksum +#define DES_random_key v1_DES_random_key +#define DES_set_key v1_DES_set_key +#define DES_set_key_checked v1_DES_set_key_checked +#define DES_set_key_unchecked v1_DES_set_key_unchecked +#define DES_set_odd_parity v1_DES_set_odd_parity +#define DES_SPtrans v1_DES_SPtrans +#define DES_string_to_2keys v1_DES_string_to_2keys +#define DES_string_to_key v1_DES_string_to_key +#define DES_xcbc_encrypt v1_DES_xcbc_encrypt +#define dh_asn1_meth v1_dh_asn1_meth +#define DH_bits v1_DH_bits +#define DH_check v1_DH_check +#define DH_check_ex v1_DH_check_ex +#define DH_check_params v1_DH_check_params +#define DH_check_params_ex v1_DH_check_params_ex +#define DH_check_pub_key v1_DH_check_pub_key +#define DH_check_pub_key_ex v1_DH_check_pub_key_ex +#define DH_clear_flags v1_DH_clear_flags +#define DH_compute_key v1_DH_compute_key +#define DH_compute_key_padded v1_DH_compute_key_padded +#define DH_free v1_DH_free +#define DH_generate_key v1_DH_generate_key +#define DH_generate_parameters v1_DH_generate_parameters +#define DH_generate_parameters_ex v1_DH_generate_parameters_ex +#define DH_get0_engine v1_DH_get0_engine +#define DH_get0_g v1_DH_get0_g +#define DH_get0_key v1_DH_get0_key +#define DH_get0_p v1_DH_get0_p +#define DH_get0_pqg v1_DH_get0_pqg +#define DH_get0_priv_key v1_DH_get0_priv_key +#define DH_get0_pub_key v1_DH_get0_pub_key +#define DH_get0_q v1_DH_get0_q +#define DH_get_1024_160 v1_DH_get_1024_160 +#define DH_get_2048_224 v1_DH_get_2048_224 +#define DH_get_2048_256 v1_DH_get_2048_256 +#define DH_get_default_method v1_DH_get_default_method +#define DH_get_ex_data v1_DH_get_ex_data +#define DH_get_length v1_DH_get_length +#define DH_get_nid v1_DH_get_nid +#define DH_KDF_X9_42 v1_DH_KDF_X9_42 +#define DH_meth_dup v1_DH_meth_dup +#define DH_meth_free v1_DH_meth_free +#define DH_meth_get0_app_data v1_DH_meth_get0_app_data +#define DH_meth_get0_name v1_DH_meth_get0_name +#define DH_meth_get_bn_mod_exp v1_DH_meth_get_bn_mod_exp +#define DH_meth_get_compute_key v1_DH_meth_get_compute_key +#define DH_meth_get_finish v1_DH_meth_get_finish +#define DH_meth_get_flags v1_DH_meth_get_flags +#define DH_meth_get_generate_key v1_DH_meth_get_generate_key +#define DH_meth_get_generate_params v1_DH_meth_get_generate_params +#define DH_meth_get_init v1_DH_meth_get_init +#define DH_meth_new v1_DH_meth_new +#define DH_meth_set0_app_data v1_DH_meth_set0_app_data +#define DH_meth_set1_name v1_DH_meth_set1_name +#define DH_meth_set_bn_mod_exp v1_DH_meth_set_bn_mod_exp +#define DH_meth_set_compute_key v1_DH_meth_set_compute_key +#define DH_meth_set_finish v1_DH_meth_set_finish +#define DH_meth_set_flags v1_DH_meth_set_flags +#define DH_meth_set_generate_key v1_DH_meth_set_generate_key +#define DH_meth_set_generate_params v1_DH_meth_set_generate_params +#define DH_meth_set_init v1_DH_meth_set_init +#define DH_new v1_DH_new +#define DH_new_by_nid v1_DH_new_by_nid +#define DH_new_method v1_DH_new_method +#define DH_OpenSSL v1_DH_OpenSSL +#define DHparams_dup v1_DHparams_dup +#define DHparams_it v1_DHparams_it +#define DHparams_print v1_DHparams_print +#define DHparams_print_fp v1_DHparams_print_fp +#define dh_pkey_meth v1_dh_pkey_meth +#define DH_security_bits v1_DH_security_bits +#define DH_set0_key v1_DH_set0_key +#define DH_set0_pqg v1_DH_set0_pqg +#define DH_set_default_method v1_DH_set_default_method +#define DH_set_ex_data v1_DH_set_ex_data +#define DH_set_flags v1_DH_set_flags +#define DH_set_length v1_DH_set_length +#define DH_set_method v1_DH_set_method +#define DH_size v1_DH_size +#define DH_test_flags v1_DH_test_flags +#define DH_up_ref v1_DH_up_ref +#define dhx_asn1_meth v1_dhx_asn1_meth +#define dhx_pkey_meth v1_dhx_pkey_meth +#define DIRECTORYSTRING_free v1_DIRECTORYSTRING_free +#define DIRECTORYSTRING_it v1_DIRECTORYSTRING_it +#define DIRECTORYSTRING_new v1_DIRECTORYSTRING_new +#define DISPLAYTEXT_free v1_DISPLAYTEXT_free +#define DISPLAYTEXT_it v1_DISPLAYTEXT_it +#define DISPLAYTEXT_new v1_DISPLAYTEXT_new +#define DIST_POINT_free v1_DIST_POINT_free +#define DIST_POINT_it v1_DIST_POINT_it +#define DIST_POINT_NAME_free v1_DIST_POINT_NAME_free +#define DIST_POINT_NAME_it v1_DIST_POINT_NAME_it +#define DIST_POINT_NAME_new v1_DIST_POINT_NAME_new +#define DIST_POINT_new v1_DIST_POINT_new +#define DIST_POINT_set_dpname v1_DIST_POINT_set_dpname +#define do_dtls1_write v1_do_dtls1_write +#define do_engine_lock_init_ossl_ v1_do_engine_lock_init_ossl_ +#define do_engine_lock_init_ossl_ret_ v1_do_engine_lock_init_ossl_ret_ +#define do_ssl3_write v1_do_ssl3_write +#define drbg_ctr_init v1_drbg_ctr_init +#define drbg_delete_thread_state v1_drbg_delete_thread_state +#define dsa_asn1_meths v1_dsa_asn1_meths +#define DSA_bits v1_DSA_bits +#define dsa_builtin_paramgen v1_dsa_builtin_paramgen +#define dsa_builtin_paramgen2 v1_dsa_builtin_paramgen2 +#define DSA_clear_flags v1_DSA_clear_flags +#define DSA_do_sign v1_DSA_do_sign +#define DSA_do_verify v1_DSA_do_verify +#define DSA_dup_DH v1_DSA_dup_DH +#define DSA_free v1_DSA_free +#define DSA_generate_key v1_DSA_generate_key +#define DSA_generate_parameters v1_DSA_generate_parameters +#define DSA_generate_parameters_ex v1_DSA_generate_parameters_ex +#define DSA_get0_engine v1_DSA_get0_engine +#define DSA_get0_g v1_DSA_get0_g +#define DSA_get0_key v1_DSA_get0_key +#define DSA_get0_p v1_DSA_get0_p +#define DSA_get0_pqg v1_DSA_get0_pqg +#define DSA_get0_priv_key v1_DSA_get0_priv_key +#define DSA_get0_pub_key v1_DSA_get0_pub_key +#define DSA_get0_q v1_DSA_get0_q +#define DSA_get_default_method v1_DSA_get_default_method +#define DSA_get_ex_data v1_DSA_get_ex_data +#define DSA_get_method v1_DSA_get_method +#define DSA_meth_dup v1_DSA_meth_dup +#define DSA_meth_free v1_DSA_meth_free +#define DSA_meth_get0_app_data v1_DSA_meth_get0_app_data +#define DSA_meth_get0_name v1_DSA_meth_get0_name +#define DSA_meth_get_bn_mod_exp v1_DSA_meth_get_bn_mod_exp +#define DSA_meth_get_finish v1_DSA_meth_get_finish +#define DSA_meth_get_flags v1_DSA_meth_get_flags +#define DSA_meth_get_init v1_DSA_meth_get_init +#define DSA_meth_get_keygen v1_DSA_meth_get_keygen +#define DSA_meth_get_mod_exp v1_DSA_meth_get_mod_exp +#define DSA_meth_get_paramgen v1_DSA_meth_get_paramgen +#define DSA_meth_get_sign v1_DSA_meth_get_sign +#define DSA_meth_get_sign_setup v1_DSA_meth_get_sign_setup +#define DSA_meth_get_verify v1_DSA_meth_get_verify +#define DSA_meth_new v1_DSA_meth_new +#define DSA_meth_set0_app_data v1_DSA_meth_set0_app_data +#define DSA_meth_set1_name v1_DSA_meth_set1_name +#define DSA_meth_set_bn_mod_exp v1_DSA_meth_set_bn_mod_exp +#define DSA_meth_set_finish v1_DSA_meth_set_finish +#define DSA_meth_set_flags v1_DSA_meth_set_flags +#define DSA_meth_set_init v1_DSA_meth_set_init +#define DSA_meth_set_keygen v1_DSA_meth_set_keygen +#define DSA_meth_set_mod_exp v1_DSA_meth_set_mod_exp +#define DSA_meth_set_paramgen v1_DSA_meth_set_paramgen +#define DSA_meth_set_sign v1_DSA_meth_set_sign +#define DSA_meth_set_sign_setup v1_DSA_meth_set_sign_setup +#define DSA_meth_set_verify v1_DSA_meth_set_verify +#define DSA_new v1_DSA_new +#define DSA_new_method v1_DSA_new_method +#define DSA_OpenSSL v1_DSA_OpenSSL +#define DSAparams_dup v1_DSAparams_dup +#define DSAparams_print v1_DSAparams_print +#define DSAparams_print_fp v1_DSAparams_print_fp +#define dsa_pkey_meth v1_dsa_pkey_meth +#define DSA_print v1_DSA_print +#define DSA_print_fp v1_DSA_print_fp +#define DSA_security_bits v1_DSA_security_bits +#define DSA_set0_key v1_DSA_set0_key +#define DSA_set0_pqg v1_DSA_set0_pqg +#define DSA_set_default_method v1_DSA_set_default_method +#define DSA_set_ex_data v1_DSA_set_ex_data +#define DSA_set_flags v1_DSA_set_flags +#define DSA_set_method v1_DSA_set_method +#define DSA_SIG_free v1_DSA_SIG_free +#define DSA_SIG_get0 v1_DSA_SIG_get0 +#define DSA_sign v1_DSA_sign +#define DSA_SIG_new v1_DSA_SIG_new +#define DSA_sign_setup v1_DSA_sign_setup +#define DSA_SIG_set0 v1_DSA_SIG_set0 +#define DSA_size v1_DSA_size +#define DSA_test_flags v1_DSA_test_flags +#define DSA_up_ref v1_DSA_up_ref +#define DSA_verify v1_DSA_verify +#define DSO_bind_func v1_DSO_bind_func +#define DSO_convert_filename v1_DSO_convert_filename +#define DSO_ctrl v1_DSO_ctrl +#define DSO_dsobyaddr v1_DSO_dsobyaddr +#define DSO_flags v1_DSO_flags +#define DSO_free v1_DSO_free +#define DSO_get_filename v1_DSO_get_filename +#define DSO_global_lookup v1_DSO_global_lookup +#define DSO_load v1_DSO_load +#define DSO_merge v1_DSO_merge +#define DSO_METHOD_openssl v1_DSO_METHOD_openssl +#define DSO_new v1_DSO_new +#define DSO_pathbyaddr v1_DSO_pathbyaddr +#define DSO_set_filename v1_DSO_set_filename +#define DSO_up_ref v1_DSO_up_ref +#define dtls1_buffer_message v1_dtls1_buffer_message +#define dtls1_buffer_record v1_dtls1_buffer_record +#define dtls1_check_timeout_num v1_dtls1_check_timeout_num +#define dtls1_clear v1_dtls1_clear +#define dtls1_clear_received_buffer v1_dtls1_clear_received_buffer +#define dtls1_clear_sent_buffer v1_dtls1_clear_sent_buffer +#define dtls1_close_construct_packet v1_dtls1_close_construct_packet +#define dtls1_ctrl v1_dtls1_ctrl +#define dtls1_default_timeout v1_dtls1_default_timeout +#define dtls1_dispatch_alert v1_dtls1_dispatch_alert +#define dtls1_do_write v1_dtls1_do_write +#define dtls1_free v1_dtls1_free +#define dtls1_get_bitmap v1_dtls1_get_bitmap +#define dtls1_get_message_header v1_dtls1_get_message_header +#define dtls1_get_queue_priority v1_dtls1_get_queue_priority +#define dtls1_get_record v1_dtls1_get_record +#define dtls1_get_timeout v1_dtls1_get_timeout +#define dtls1_handle_timeout v1_dtls1_handle_timeout +#define dtls1_hm_fragment_free v1_dtls1_hm_fragment_free +#define dtls1_is_timer_expired v1_dtls1_is_timer_expired +#define dtls1_min_mtu v1_dtls1_min_mtu +#define dtls1_new v1_dtls1_new +#define dtls1_process_buffered_records v1_dtls1_process_buffered_records +#define dtls1_process_record v1_dtls1_process_record +#define dtls1_query_mtu v1_dtls1_query_mtu +#define dtls1_read_bytes v1_dtls1_read_bytes +#define dtls1_read_failed v1_dtls1_read_failed +#define dtls1_record_bitmap_update v1_dtls1_record_bitmap_update +#define dtls1_record_replay_check v1_dtls1_record_replay_check +#define dtls1_reset_seq_numbers v1_dtls1_reset_seq_numbers +#define dtls1_retransmit_buffered_messages v1_dtls1_retransmit_buffered_messages +#define dtls1_retransmit_message v1_dtls1_retransmit_message +#define dtls1_retrieve_buffered_record v1_dtls1_retrieve_buffered_record +#define dtls1_set_handshake_header v1_dtls1_set_handshake_header +#define dtls1_set_message_header v1_dtls1_set_message_header +#define dtls1_shutdown v1_dtls1_shutdown +#define dtls1_start_timer v1_dtls1_start_timer +#define dtls1_stop_timer v1_dtls1_stop_timer +#define dtls1_write_app_data_bytes v1_dtls1_write_app_data_bytes +#define dtls1_write_bytes v1_dtls1_write_bytes +#define dtls_bad_ver_client_method v1_dtls_bad_ver_client_method +#define dtls_buffer_listen_record v1_dtls_buffer_listen_record +#define DTLS_client_method v1_DTLS_client_method +#define dtls_construct_change_cipher_spec v1_dtls_construct_change_cipher_spec +#define dtls_construct_hello_verify_request v1_dtls_construct_hello_verify_request +#define DTLS_get_data_mtu v1_DTLS_get_data_mtu +#define dtls_get_message v1_dtls_get_message +#define DTLS_method v1_DTLS_method +#define dtls_process_hello_verify v1_dtls_process_hello_verify +#define dtls_raw_hello_verify_request v1_dtls_raw_hello_verify_request +#define DTLS_RECORD_LAYER_clear v1_DTLS_RECORD_LAYER_clear +#define DTLS_RECORD_LAYER_free v1_DTLS_RECORD_LAYER_free +#define DTLS_RECORD_LAYER_new v1_DTLS_RECORD_LAYER_new +#define DTLS_RECORD_LAYER_set_saved_w_epoch v1_DTLS_RECORD_LAYER_set_saved_w_epoch +#define DTLS_RECORD_LAYER_set_write_sequence v1_DTLS_RECORD_LAYER_set_write_sequence +#define DTLS_server_method v1_DTLS_server_method +#define DTLS_set_timer_cb v1_DTLS_set_timer_cb +#define dtlsv1_2_client_method v1_dtlsv1_2_client_method +#define DTLSv1_2_client_method v1_DTLSv1_2_client_method +#define DTLSv1_2_enc_data v1_DTLSv1_2_enc_data +#define dtlsv1_2_method v1_dtlsv1_2_method +#define DTLSv1_2_method v1_DTLSv1_2_method +#define dtlsv1_2_server_method v1_dtlsv1_2_server_method +#define DTLSv1_2_server_method v1_DTLSv1_2_server_method +#define dtlsv1_client_method v1_dtlsv1_client_method +#define DTLSv1_client_method v1_DTLSv1_client_method +#define DTLSv1_enc_data v1_DTLSv1_enc_data +#define DTLSv1_listen v1_DTLSv1_listen +#define dtlsv1_method v1_dtlsv1_method +#define DTLSv1_method v1_DTLSv1_method +#define dtlsv1_server_method v1_dtlsv1_server_method +#define DTLSv1_server_method v1_DTLSv1_server_method +#define early_data_count_ok v1_early_data_count_ok +#define EC_curve_nid2nist v1_EC_curve_nid2nist +#define ec_curve_nid_from_params v1_ec_curve_nid_from_params +#define EC_curve_nist2nid v1_EC_curve_nist2nid +#define ECDH_compute_key v1_ECDH_compute_key +#define ECDH_KDF_X9_62 v1_ECDH_KDF_X9_62 +#define ecdh_KDF_X9_63 v1_ecdh_KDF_X9_63 +#define ecdh_simple_compute_key v1_ecdh_simple_compute_key +#define ECDSA_do_sign v1_ECDSA_do_sign +#define ECDSA_do_sign_ex v1_ECDSA_do_sign_ex +#define ECDSA_do_verify v1_ECDSA_do_verify +#define ECDSA_SIG_free v1_ECDSA_SIG_free +#define ECDSA_SIG_get0 v1_ECDSA_SIG_get0 +#define ECDSA_SIG_get0_r v1_ECDSA_SIG_get0_r +#define ECDSA_SIG_get0_s v1_ECDSA_SIG_get0_s +#define ECDSA_sign v1_ECDSA_sign +#define ECDSA_SIG_new v1_ECDSA_SIG_new +#define ECDSA_sign_ex v1_ECDSA_sign_ex +#define ECDSA_sign_setup v1_ECDSA_sign_setup +#define ECDSA_SIG_set0 v1_ECDSA_SIG_set0 +#define ECDSA_size v1_ECDSA_size +#define ECDSA_verify v1_ECDSA_verify +#define EC_ec_pre_comp_dup v1_EC_ec_pre_comp_dup +#define EC_ec_pre_comp_free v1_EC_ec_pre_comp_free +#define EC_get_builtin_curves v1_EC_get_builtin_curves +#define ec_GF2m_simple_add v1_ec_GF2m_simple_add +#define ec_GF2m_simple_cmp v1_ec_GF2m_simple_cmp +#define ec_GF2m_simple_dbl v1_ec_GF2m_simple_dbl +#define ec_GF2m_simple_field_div v1_ec_GF2m_simple_field_div +#define ec_GF2m_simple_field_mul v1_ec_GF2m_simple_field_mul +#define ec_GF2m_simple_field_sqr v1_ec_GF2m_simple_field_sqr +#define ec_GF2m_simple_group_check_discriminant v1_ec_GF2m_simple_group_check_discriminant +#define ec_GF2m_simple_group_clear_finish v1_ec_GF2m_simple_group_clear_finish +#define ec_GF2m_simple_group_copy v1_ec_GF2m_simple_group_copy +#define ec_GF2m_simple_group_finish v1_ec_GF2m_simple_group_finish +#define ec_GF2m_simple_group_get_curve v1_ec_GF2m_simple_group_get_curve +#define ec_GF2m_simple_group_get_degree v1_ec_GF2m_simple_group_get_degree +#define ec_GF2m_simple_group_init v1_ec_GF2m_simple_group_init +#define ec_GF2m_simple_group_set_curve v1_ec_GF2m_simple_group_set_curve +#define ec_GF2m_simple_invert v1_ec_GF2m_simple_invert +#define ec_GF2m_simple_is_at_infinity v1_ec_GF2m_simple_is_at_infinity +#define ec_GF2m_simple_is_on_curve v1_ec_GF2m_simple_is_on_curve +#define ec_GF2m_simple_make_affine v1_ec_GF2m_simple_make_affine +#define EC_GF2m_simple_method v1_EC_GF2m_simple_method +#define ec_GF2m_simple_oct2point v1_ec_GF2m_simple_oct2point +#define ec_GF2m_simple_point2oct v1_ec_GF2m_simple_point2oct +#define ec_GF2m_simple_point_clear_finish v1_ec_GF2m_simple_point_clear_finish +#define ec_GF2m_simple_point_copy v1_ec_GF2m_simple_point_copy +#define ec_GF2m_simple_point_finish v1_ec_GF2m_simple_point_finish +#define ec_GF2m_simple_point_get_affine_coordinates v1_ec_GF2m_simple_point_get_affine_coordinates +#define ec_GF2m_simple_point_init v1_ec_GF2m_simple_point_init +#define ec_GF2m_simple_point_set_affine_coordinates v1_ec_GF2m_simple_point_set_affine_coordinates +#define ec_GF2m_simple_point_set_to_infinity v1_ec_GF2m_simple_point_set_to_infinity +#define ec_GF2m_simple_points_make_affine v1_ec_GF2m_simple_points_make_affine +#define ec_GF2m_simple_set_compressed_coordinates v1_ec_GF2m_simple_set_compressed_coordinates +#define ec_GFp_mont_field_decode v1_ec_GFp_mont_field_decode +#define ec_GFp_mont_field_encode v1_ec_GFp_mont_field_encode +#define ec_GFp_mont_field_inv v1_ec_GFp_mont_field_inv +#define ec_GFp_mont_field_mul v1_ec_GFp_mont_field_mul +#define ec_GFp_mont_field_set_to_one v1_ec_GFp_mont_field_set_to_one +#define ec_GFp_mont_field_sqr v1_ec_GFp_mont_field_sqr +#define ec_GFp_mont_group_clear_finish v1_ec_GFp_mont_group_clear_finish +#define ec_GFp_mont_group_copy v1_ec_GFp_mont_group_copy +#define ec_GFp_mont_group_finish v1_ec_GFp_mont_group_finish +#define ec_GFp_mont_group_init v1_ec_GFp_mont_group_init +#define ec_GFp_mont_group_set_curve v1_ec_GFp_mont_group_set_curve +#define EC_GFp_mont_method v1_EC_GFp_mont_method +#define ec_GFp_nist_field_mul v1_ec_GFp_nist_field_mul +#define ec_GFp_nist_field_sqr v1_ec_GFp_nist_field_sqr +#define ec_GFp_nist_group_copy v1_ec_GFp_nist_group_copy +#define ec_GFp_nist_group_set_curve v1_ec_GFp_nist_group_set_curve +#define EC_GFp_nist_method v1_EC_GFp_nist_method +#define ec_GFp_nistp224_group_init v1_ec_GFp_nistp224_group_init +#define ec_GFp_nistp224_group_set_curve v1_ec_GFp_nistp224_group_set_curve +#define ec_GFp_nistp224_have_precompute_mult v1_ec_GFp_nistp224_have_precompute_mult +#define EC_GFp_nistp224_method v1_EC_GFp_nistp224_method +#define ec_GFp_nistp224_point_get_affine_coordinates v1_ec_GFp_nistp224_point_get_affine_coordinates +#define ec_GFp_nistp224_points_mul v1_ec_GFp_nistp224_points_mul +#define ec_GFp_nistp224_precompute_mult v1_ec_GFp_nistp224_precompute_mult +#define ec_GFp_nistp256_group_init v1_ec_GFp_nistp256_group_init +#define ec_GFp_nistp256_group_set_curve v1_ec_GFp_nistp256_group_set_curve +#define ec_GFp_nistp256_have_precompute_mult v1_ec_GFp_nistp256_have_precompute_mult +#define EC_GFp_nistp256_method v1_EC_GFp_nistp256_method +#define ec_GFp_nistp256_point_get_affine_coordinates v1_ec_GFp_nistp256_point_get_affine_coordinates +#define ec_GFp_nistp256_points_mul v1_ec_GFp_nistp256_points_mul +#define ec_GFp_nistp256_precompute_mult v1_ec_GFp_nistp256_precompute_mult +#define ec_GFp_nistp521_group_init v1_ec_GFp_nistp521_group_init +#define ec_GFp_nistp521_group_set_curve v1_ec_GFp_nistp521_group_set_curve +#define ec_GFp_nistp521_have_precompute_mult v1_ec_GFp_nistp521_have_precompute_mult +#define EC_GFp_nistp521_method v1_EC_GFp_nistp521_method +#define ec_GFp_nistp521_point_get_affine_coordinates v1_ec_GFp_nistp521_point_get_affine_coordinates +#define ec_GFp_nistp521_points_mul v1_ec_GFp_nistp521_points_mul +#define ec_GFp_nistp521_precompute_mult v1_ec_GFp_nistp521_precompute_mult +#define ec_GFp_nistp_points_make_affine_internal v1_ec_GFp_nistp_points_make_affine_internal +#define ec_GFp_nistp_recode_scalar_bits v1_ec_GFp_nistp_recode_scalar_bits +#define EC_GFp_nistz256_method v1_EC_GFp_nistz256_method +#define ec_GFp_simple_add v1_ec_GFp_simple_add +#define ec_GFp_simple_blind_coordinates v1_ec_GFp_simple_blind_coordinates +#define ec_GFp_simple_cmp v1_ec_GFp_simple_cmp +#define ec_GFp_simple_dbl v1_ec_GFp_simple_dbl +#define ec_GFp_simple_field_inv v1_ec_GFp_simple_field_inv +#define ec_GFp_simple_field_mul v1_ec_GFp_simple_field_mul +#define ec_GFp_simple_field_sqr v1_ec_GFp_simple_field_sqr +#define ec_GFp_simple_get_Jprojective_coordinates_GFp v1_ec_GFp_simple_get_Jprojective_coordinates_GFp +#define ec_GFp_simple_group_check_discriminant v1_ec_GFp_simple_group_check_discriminant +#define ec_GFp_simple_group_clear_finish v1_ec_GFp_simple_group_clear_finish +#define ec_GFp_simple_group_copy v1_ec_GFp_simple_group_copy +#define ec_GFp_simple_group_finish v1_ec_GFp_simple_group_finish +#define ec_GFp_simple_group_get_curve v1_ec_GFp_simple_group_get_curve +#define ec_GFp_simple_group_get_degree v1_ec_GFp_simple_group_get_degree +#define ec_GFp_simple_group_init v1_ec_GFp_simple_group_init +#define ec_GFp_simple_group_set_curve v1_ec_GFp_simple_group_set_curve +#define ec_GFp_simple_invert v1_ec_GFp_simple_invert +#define ec_GFp_simple_is_at_infinity v1_ec_GFp_simple_is_at_infinity +#define ec_GFp_simple_is_on_curve v1_ec_GFp_simple_is_on_curve +#define ec_GFp_simple_ladder_post v1_ec_GFp_simple_ladder_post +#define ec_GFp_simple_ladder_pre v1_ec_GFp_simple_ladder_pre +#define ec_GFp_simple_ladder_step v1_ec_GFp_simple_ladder_step +#define ec_GFp_simple_make_affine v1_ec_GFp_simple_make_affine +#define EC_GFp_simple_method v1_EC_GFp_simple_method +#define ec_GFp_simple_oct2point v1_ec_GFp_simple_oct2point +#define ec_GFp_simple_point2oct v1_ec_GFp_simple_point2oct +#define ec_GFp_simple_point_clear_finish v1_ec_GFp_simple_point_clear_finish +#define ec_GFp_simple_point_copy v1_ec_GFp_simple_point_copy +#define ec_GFp_simple_point_finish v1_ec_GFp_simple_point_finish +#define ec_GFp_simple_point_get_affine_coordinates v1_ec_GFp_simple_point_get_affine_coordinates +#define ec_GFp_simple_point_init v1_ec_GFp_simple_point_init +#define ec_GFp_simple_point_set_affine_coordinates v1_ec_GFp_simple_point_set_affine_coordinates +#define ec_GFp_simple_point_set_to_infinity v1_ec_GFp_simple_point_set_to_infinity +#define ec_GFp_simple_points_make_affine v1_ec_GFp_simple_points_make_affine +#define ec_GFp_simple_set_compressed_coordinates v1_ec_GFp_simple_set_compressed_coordinates +#define ec_GFp_simple_set_Jprojective_coordinates_GFp v1_ec_GFp_simple_set_Jprojective_coordinates_GFp +#define EC_GROUP_check v1_EC_GROUP_check +#define EC_GROUP_check_discriminant v1_EC_GROUP_check_discriminant +#define EC_GROUP_clear_free v1_EC_GROUP_clear_free +#define EC_GROUP_cmp v1_EC_GROUP_cmp +#define EC_GROUP_copy v1_EC_GROUP_copy +#define ec_group_do_inverse_ord v1_ec_group_do_inverse_ord +#define EC_GROUP_dup v1_EC_GROUP_dup +#define EC_GROUP_free v1_EC_GROUP_free +#define EC_GROUP_get0_cofactor v1_EC_GROUP_get0_cofactor +#define EC_GROUP_get0_generator v1_EC_GROUP_get0_generator +#define EC_GROUP_get0_order v1_EC_GROUP_get0_order +#define EC_GROUP_get0_seed v1_EC_GROUP_get0_seed +#define EC_GROUP_get_asn1_flag v1_EC_GROUP_get_asn1_flag +#define EC_GROUP_get_basis_type v1_EC_GROUP_get_basis_type +#define EC_GROUP_get_cofactor v1_EC_GROUP_get_cofactor +#define EC_GROUP_get_curve v1_EC_GROUP_get_curve +#define EC_GROUP_get_curve_GF2m v1_EC_GROUP_get_curve_GF2m +#define EC_GROUP_get_curve_GFp v1_EC_GROUP_get_curve_GFp +#define EC_GROUP_get_curve_name v1_EC_GROUP_get_curve_name +#define EC_GROUP_get_degree v1_EC_GROUP_get_degree +#define EC_GROUP_get_ecparameters v1_EC_GROUP_get_ecparameters +#define EC_GROUP_get_ecpkparameters v1_EC_GROUP_get_ecpkparameters +#define EC_GROUP_get_mont_data v1_EC_GROUP_get_mont_data +#define EC_GROUP_get_order v1_EC_GROUP_get_order +#define EC_GROUP_get_pentanomial_basis v1_EC_GROUP_get_pentanomial_basis +#define EC_GROUP_get_point_conversion_form v1_EC_GROUP_get_point_conversion_form +#define EC_GROUP_get_seed_len v1_EC_GROUP_get_seed_len +#define EC_GROUP_get_trinomial_basis v1_EC_GROUP_get_trinomial_basis +#define EC_GROUP_have_precompute_mult v1_EC_GROUP_have_precompute_mult +#define EC_GROUP_method_of v1_EC_GROUP_method_of +#define EC_GROUP_new v1_EC_GROUP_new +#define EC_GROUP_new_by_curve_name v1_EC_GROUP_new_by_curve_name +#define EC_GROUP_new_curve_GF2m v1_EC_GROUP_new_curve_GF2m +#define EC_GROUP_new_curve_GFp v1_EC_GROUP_new_curve_GFp +#define EC_GROUP_new_from_ecparameters v1_EC_GROUP_new_from_ecparameters +#define EC_GROUP_new_from_ecpkparameters v1_EC_GROUP_new_from_ecpkparameters +#define EC_GROUP_order_bits v1_EC_GROUP_order_bits +#define EC_GROUP_precompute_mult v1_EC_GROUP_precompute_mult +#define EC_GROUP_set_asn1_flag v1_EC_GROUP_set_asn1_flag +#define EC_GROUP_set_curve v1_EC_GROUP_set_curve +#define EC_GROUP_set_curve_GF2m v1_EC_GROUP_set_curve_GF2m +#define EC_GROUP_set_curve_GFp v1_EC_GROUP_set_curve_GFp +#define EC_GROUP_set_curve_name v1_EC_GROUP_set_curve_name +#define EC_GROUP_set_generator v1_EC_GROUP_set_generator +#define EC_GROUP_set_point_conversion_form v1_EC_GROUP_set_point_conversion_form +#define EC_GROUP_set_seed v1_EC_GROUP_set_seed +#define ec_group_simple_order_bits v1_ec_group_simple_order_bits +#define eckey_asn1_meth v1_eckey_asn1_meth +#define EC_KEY_can_sign v1_EC_KEY_can_sign +#define EC_KEY_check_key v1_EC_KEY_check_key +#define EC_KEY_clear_flags v1_EC_KEY_clear_flags +#define EC_KEY_copy v1_EC_KEY_copy +#define EC_KEY_decoded_from_explicit_params v1_EC_KEY_decoded_from_explicit_params +#define EC_KEY_dup v1_EC_KEY_dup +#define EC_KEY_free v1_EC_KEY_free +#define EC_KEY_generate_key v1_EC_KEY_generate_key +#define EC_KEY_get0_engine v1_EC_KEY_get0_engine +#define EC_KEY_get0_group v1_EC_KEY_get0_group +#define EC_KEY_get0_private_key v1_EC_KEY_get0_private_key +#define EC_KEY_get0_public_key v1_EC_KEY_get0_public_key +#define EC_KEY_get_conv_form v1_EC_KEY_get_conv_form +#define EC_KEY_get_default_method v1_EC_KEY_get_default_method +#define EC_KEY_get_enc_flags v1_EC_KEY_get_enc_flags +#define EC_KEY_get_ex_data v1_EC_KEY_get_ex_data +#define EC_KEY_get_flags v1_EC_KEY_get_flags +#define EC_KEY_get_method v1_EC_KEY_get_method +#define EC_KEY_key2buf v1_EC_KEY_key2buf +#define EC_KEY_METHOD_free v1_EC_KEY_METHOD_free +#define EC_KEY_METHOD_get_compute_key v1_EC_KEY_METHOD_get_compute_key +#define EC_KEY_METHOD_get_init v1_EC_KEY_METHOD_get_init +#define EC_KEY_METHOD_get_keygen v1_EC_KEY_METHOD_get_keygen +#define EC_KEY_METHOD_get_sign v1_EC_KEY_METHOD_get_sign +#define EC_KEY_METHOD_get_verify v1_EC_KEY_METHOD_get_verify +#define EC_KEY_METHOD_new v1_EC_KEY_METHOD_new +#define EC_KEY_METHOD_set_compute_key v1_EC_KEY_METHOD_set_compute_key +#define EC_KEY_METHOD_set_init v1_EC_KEY_METHOD_set_init +#define EC_KEY_METHOD_set_keygen v1_EC_KEY_METHOD_set_keygen +#define EC_KEY_METHOD_set_sign v1_EC_KEY_METHOD_set_sign +#define EC_KEY_METHOD_set_verify v1_EC_KEY_METHOD_set_verify +#define EC_KEY_new v1_EC_KEY_new +#define EC_KEY_new_by_curve_name v1_EC_KEY_new_by_curve_name +#define EC_KEY_new_method v1_EC_KEY_new_method +#define EC_KEY_oct2key v1_EC_KEY_oct2key +#define EC_KEY_oct2priv v1_EC_KEY_oct2priv +#define EC_KEY_OpenSSL v1_EC_KEY_OpenSSL +#define EC_KEY_precompute_mult v1_EC_KEY_precompute_mult +#define EC_KEY_print v1_EC_KEY_print +#define EC_KEY_print_fp v1_EC_KEY_print_fp +#define EC_KEY_priv2buf v1_EC_KEY_priv2buf +#define EC_KEY_priv2oct v1_EC_KEY_priv2oct +#define EC_KEY_set_asn1_flag v1_EC_KEY_set_asn1_flag +#define EC_KEY_set_conv_form v1_EC_KEY_set_conv_form +#define EC_KEY_set_default_method v1_EC_KEY_set_default_method +#define EC_KEY_set_enc_flags v1_EC_KEY_set_enc_flags +#define EC_KEY_set_ex_data v1_EC_KEY_set_ex_data +#define EC_KEY_set_flags v1_EC_KEY_set_flags +#define EC_KEY_set_group v1_EC_KEY_set_group +#define EC_KEY_set_method v1_EC_KEY_set_method +#define EC_KEY_set_private_key v1_EC_KEY_set_private_key +#define EC_KEY_set_public_key v1_EC_KEY_set_public_key +#define EC_KEY_set_public_key_affine_coordinates v1_EC_KEY_set_public_key_affine_coordinates +#define ec_key_simple_check_key v1_ec_key_simple_check_key +#define ec_key_simple_generate_key v1_ec_key_simple_generate_key +#define ec_key_simple_generate_public_key v1_ec_key_simple_generate_public_key +#define ec_key_simple_oct2priv v1_ec_key_simple_oct2priv +#define ec_key_simple_priv2oct v1_ec_key_simple_priv2oct +#define EC_KEY_up_ref v1_EC_KEY_up_ref +#define EC_METHOD_get_field_type v1_EC_METHOD_get_field_type +#define EC_nistp224_pre_comp_dup v1_EC_nistp224_pre_comp_dup +#define EC_nistp224_pre_comp_free v1_EC_nistp224_pre_comp_free +#define EC_nistp256_pre_comp_dup v1_EC_nistp256_pre_comp_dup +#define EC_nistp256_pre_comp_free v1_EC_nistp256_pre_comp_free +#define EC_nistp521_pre_comp_dup v1_EC_nistp521_pre_comp_dup +#define EC_nistp521_pre_comp_free v1_EC_nistp521_pre_comp_free +#define EC_nistz256_pre_comp_dup v1_EC_nistz256_pre_comp_dup +#define EC_nistz256_pre_comp_free v1_EC_nistz256_pre_comp_free +#define ECPARAMETERS_free v1_ECPARAMETERS_free +#define ECPARAMETERS_it v1_ECPARAMETERS_it +#define ECPARAMETERS_new v1_ECPARAMETERS_new +#define ECParameters_print v1_ECParameters_print +#define ECParameters_print_fp v1_ECParameters_print_fp +#define ec_pkey_meth v1_ec_pkey_meth +#define ECPKPARAMETERS_free v1_ECPKPARAMETERS_free +#define ECPKPARAMETERS_it v1_ECPKPARAMETERS_it +#define ECPKPARAMETERS_new v1_ECPKPARAMETERS_new +#define ECPKParameters_print v1_ECPKParameters_print +#define ECPKParameters_print_fp v1_ECPKParameters_print_fp +#define ecp_nistz256_add v1_ecp_nistz256_add +#define ecp_nistz256_avx2_gather_w7 v1_ecp_nistz256_avx2_gather_w7 +#define ecp_nistz256_div_by_2 v1_ecp_nistz256_div_by_2 +#define ecp_nistz256_from_mont v1_ecp_nistz256_from_mont +#define ecp_nistz256_gather_w5 v1_ecp_nistz256_gather_w5 +#define ecp_nistz256_gather_w7 v1_ecp_nistz256_gather_w7 +#define ecp_nistz256_mul_by_2 v1_ecp_nistz256_mul_by_2 +#define ecp_nistz256_mul_by_3 v1_ecp_nistz256_mul_by_3 +#define ecp_nistz256_mul_mont v1_ecp_nistz256_mul_mont +#define ecp_nistz256_neg v1_ecp_nistz256_neg +#define ecp_nistz256_ord_mul_mont v1_ecp_nistz256_ord_mul_mont +#define ecp_nistz256_ord_sqr_mont v1_ecp_nistz256_ord_sqr_mont +#define ecp_nistz256_point_add v1_ecp_nistz256_point_add +#define ecp_nistz256_point_add_affine v1_ecp_nistz256_point_add_affine +#define ecp_nistz256_point_double v1_ecp_nistz256_point_double +#define ecp_nistz256_precomputed v1_ecp_nistz256_precomputed +#define ecp_nistz256_scatter_w5 v1_ecp_nistz256_scatter_w5 +#define ecp_nistz256_scatter_w7 v1_ecp_nistz256_scatter_w7 +#define ecp_nistz256_sqr_mont v1_ecp_nistz256_sqr_mont +#define ecp_nistz256_sub v1_ecp_nistz256_sub +#define ecp_nistz256_to_mont v1_ecp_nistz256_to_mont +#define EC_POINT_add v1_EC_POINT_add +#define ec_point_blind_coordinates v1_ec_point_blind_coordinates +#define EC_POINT_bn2point v1_EC_POINT_bn2point +#define EC_POINT_clear_free v1_EC_POINT_clear_free +#define EC_POINT_cmp v1_EC_POINT_cmp +#define EC_POINT_copy v1_EC_POINT_copy +#define EC_POINT_dbl v1_EC_POINT_dbl +#define EC_POINT_dup v1_EC_POINT_dup +#define EC_POINT_free v1_EC_POINT_free +#define EC_POINT_get_affine_coordinates v1_EC_POINT_get_affine_coordinates +#define EC_POINT_get_affine_coordinates_GF2m v1_EC_POINT_get_affine_coordinates_GF2m +#define EC_POINT_get_affine_coordinates_GFp v1_EC_POINT_get_affine_coordinates_GFp +#define EC_POINT_get_Jprojective_coordinates_GFp v1_EC_POINT_get_Jprojective_coordinates_GFp +#define EC_POINT_hex2point v1_EC_POINT_hex2point +#define EC_POINT_invert v1_EC_POINT_invert +#define EC_POINT_is_at_infinity v1_EC_POINT_is_at_infinity +#define EC_POINT_is_on_curve v1_EC_POINT_is_on_curve +#define EC_POINT_make_affine v1_EC_POINT_make_affine +#define EC_POINT_method_of v1_EC_POINT_method_of +#define EC_POINT_mul v1_EC_POINT_mul +#define EC_POINT_new v1_EC_POINT_new +#define EC_POINT_oct2point v1_EC_POINT_oct2point +#define EC_POINT_point2bn v1_EC_POINT_point2bn +#define EC_POINT_point2buf v1_EC_POINT_point2buf +#define EC_POINT_point2hex v1_EC_POINT_point2hex +#define EC_POINT_point2oct v1_EC_POINT_point2oct +#define EC_POINT_set_affine_coordinates v1_EC_POINT_set_affine_coordinates +#define EC_POINT_set_affine_coordinates_GF2m v1_EC_POINT_set_affine_coordinates_GF2m +#define EC_POINT_set_affine_coordinates_GFp v1_EC_POINT_set_affine_coordinates_GFp +#define EC_POINT_set_compressed_coordinates v1_EC_POINT_set_compressed_coordinates +#define EC_POINT_set_compressed_coordinates_GF2m v1_EC_POINT_set_compressed_coordinates_GF2m +#define EC_POINT_set_compressed_coordinates_GFp v1_EC_POINT_set_compressed_coordinates_GFp +#define EC_POINT_set_Jprojective_coordinates_GFp v1_EC_POINT_set_Jprojective_coordinates_GFp +#define EC_POINT_set_to_infinity v1_EC_POINT_set_to_infinity +#define EC_POINTs_make_affine v1_EC_POINTs_make_affine +#define EC_POINTs_mul v1_EC_POINTs_mul +#define EC_pre_comp_free v1_EC_pre_comp_free +#define EC_PRIVATEKEY_free v1_EC_PRIVATEKEY_free +#define EC_PRIVATEKEY_new v1_EC_PRIVATEKEY_new +#define ec_scalar_mul_ladder v1_ec_scalar_mul_ladder +#define ec_wNAF_have_precompute_mult v1_ec_wNAF_have_precompute_mult +#define ec_wNAF_mul v1_ec_wNAF_mul +#define ec_wNAF_precompute_mult v1_ec_wNAF_precompute_mult +#define ecx25519_asn1_meth v1_ecx25519_asn1_meth +#define ecx25519_pkey_meth v1_ecx25519_pkey_meth +#define ecx448_asn1_meth v1_ecx448_asn1_meth +#define ecx448_pkey_meth v1_ecx448_pkey_meth +#define ed25519_asn1_meth v1_ed25519_asn1_meth +#define ed25519_pkey_meth v1_ed25519_pkey_meth +#define ED25519_public_from_private v1_ED25519_public_from_private +#define ED25519_sign v1_ED25519_sign +#define ED25519_verify v1_ED25519_verify +#define ed448_asn1_meth v1_ed448_asn1_meth +#define ED448ph_sign v1_ED448ph_sign +#define ED448ph_verify v1_ED448ph_verify +#define ed448_pkey_meth v1_ed448_pkey_meth +#define ED448_public_from_private v1_ED448_public_from_private +#define ED448_sign v1_ED448_sign +#define ED448_verify v1_ED448_verify +#define EDIPARTYNAME_free v1_EDIPARTYNAME_free +#define EDIPARTYNAME_it v1_EDIPARTYNAME_it +#define EDIPARTYNAME_new v1_EDIPARTYNAME_new +#define ENGINE_add v1_ENGINE_add +#define ENGINE_add_conf_module v1_ENGINE_add_conf_module +#define engine_add_dynamic_id v1_engine_add_dynamic_id +#define ENGINE_by_id v1_ENGINE_by_id +#define engine_cleanup_add_first v1_engine_cleanup_add_first +#define engine_cleanup_add_last v1_engine_cleanup_add_last +#define engine_cleanup_int v1_engine_cleanup_int +#define ENGINE_cmd_is_executable v1_ENGINE_cmd_is_executable +#define ENGINE_ctrl v1_ENGINE_ctrl +#define ENGINE_ctrl_cmd v1_ENGINE_ctrl_cmd +#define ENGINE_ctrl_cmd_string v1_ENGINE_ctrl_cmd_string +#define ENGINE_finish v1_ENGINE_finish +#define ENGINE_free v1_ENGINE_free +#define engine_free_util v1_engine_free_util +#define ENGINE_get_cipher v1_ENGINE_get_cipher +#define ENGINE_get_cipher_engine v1_ENGINE_get_cipher_engine +#define ENGINE_get_ciphers v1_ENGINE_get_ciphers +#define ENGINE_get_cmd_defns v1_ENGINE_get_cmd_defns +#define ENGINE_get_ctrl_function v1_ENGINE_get_ctrl_function +#define ENGINE_get_default_DH v1_ENGINE_get_default_DH +#define ENGINE_get_default_DSA v1_ENGINE_get_default_DSA +#define ENGINE_get_default_EC v1_ENGINE_get_default_EC +#define ENGINE_get_default_RAND v1_ENGINE_get_default_RAND +#define ENGINE_get_default_RSA v1_ENGINE_get_default_RSA +#define ENGINE_get_destroy_function v1_ENGINE_get_destroy_function +#define ENGINE_get_DH v1_ENGINE_get_DH +#define ENGINE_get_digest v1_ENGINE_get_digest +#define ENGINE_get_digest_engine v1_ENGINE_get_digest_engine +#define ENGINE_get_digests v1_ENGINE_get_digests +#define ENGINE_get_DSA v1_ENGINE_get_DSA +#define ENGINE_get_EC v1_ENGINE_get_EC +#define ENGINE_get_ex_data v1_ENGINE_get_ex_data +#define ENGINE_get_finish_function v1_ENGINE_get_finish_function +#define ENGINE_get_first v1_ENGINE_get_first +#define ENGINE_get_flags v1_ENGINE_get_flags +#define ENGINE_get_id v1_ENGINE_get_id +#define ENGINE_get_init_function v1_ENGINE_get_init_function +#define ENGINE_get_last v1_ENGINE_get_last +#define ENGINE_get_load_privkey_function v1_ENGINE_get_load_privkey_function +#define ENGINE_get_load_pubkey_function v1_ENGINE_get_load_pubkey_function +#define ENGINE_get_name v1_ENGINE_get_name +#define ENGINE_get_next v1_ENGINE_get_next +#define ENGINE_get_pkey_asn1_meth v1_ENGINE_get_pkey_asn1_meth +#define ENGINE_get_pkey_asn1_meth_engine v1_ENGINE_get_pkey_asn1_meth_engine +#define ENGINE_get_pkey_asn1_meths v1_ENGINE_get_pkey_asn1_meths +#define ENGINE_get_pkey_asn1_meth_str v1_ENGINE_get_pkey_asn1_meth_str +#define ENGINE_get_pkey_meth v1_ENGINE_get_pkey_meth +#define ENGINE_get_pkey_meth_engine v1_ENGINE_get_pkey_meth_engine +#define ENGINE_get_pkey_meths v1_ENGINE_get_pkey_meths +#define ENGINE_get_prev v1_ENGINE_get_prev +#define ENGINE_get_RAND v1_ENGINE_get_RAND +#define ENGINE_get_RSA v1_ENGINE_get_RSA +#define ENGINE_get_ssl_client_cert_function v1_ENGINE_get_ssl_client_cert_function +#define ENGINE_get_static_state v1_ENGINE_get_static_state +#define ENGINE_get_table_flags v1_ENGINE_get_table_flags +#define ENGINE_init v1_ENGINE_init +#define engine_load_afalg_int v1_engine_load_afalg_int +#define ENGINE_load_builtin_engines v1_ENGINE_load_builtin_engines +#define engine_load_capi_int v1_engine_load_capi_int +#define engine_load_dynamic_int v1_engine_load_dynamic_int +#define engine_load_openssl_int v1_engine_load_openssl_int +#define engine_load_padlock_int v1_engine_load_padlock_int +#define ENGINE_load_private_key v1_ENGINE_load_private_key +#define ENGINE_load_public_key v1_ENGINE_load_public_key +#define engine_load_rdrand_int v1_engine_load_rdrand_int +#define ENGINE_load_ssl_client_cert v1_ENGINE_load_ssl_client_cert +#define engine_lock_init v1_engine_lock_init +#define ENGINE_new v1_ENGINE_new +#define ENGINE_pkey_asn1_find_str v1_ENGINE_pkey_asn1_find_str +#define engine_pkey_asn1_meths_free v1_engine_pkey_asn1_meths_free +#define engine_pkey_meths_free v1_engine_pkey_meths_free +#define ENGINE_register_all_ciphers v1_ENGINE_register_all_ciphers +#define ENGINE_register_all_complete v1_ENGINE_register_all_complete +#define ENGINE_register_all_DH v1_ENGINE_register_all_DH +#define ENGINE_register_all_digests v1_ENGINE_register_all_digests +#define ENGINE_register_all_DSA v1_ENGINE_register_all_DSA +#define ENGINE_register_all_EC v1_ENGINE_register_all_EC +#define ENGINE_register_all_pkey_asn1_meths v1_ENGINE_register_all_pkey_asn1_meths +#define ENGINE_register_all_pkey_meths v1_ENGINE_register_all_pkey_meths +#define ENGINE_register_all_RAND v1_ENGINE_register_all_RAND +#define ENGINE_register_all_RSA v1_ENGINE_register_all_RSA +#define ENGINE_register_ciphers v1_ENGINE_register_ciphers +#define ENGINE_register_complete v1_ENGINE_register_complete +#define ENGINE_register_DH v1_ENGINE_register_DH +#define ENGINE_register_digests v1_ENGINE_register_digests +#define ENGINE_register_DSA v1_ENGINE_register_DSA +#define ENGINE_register_EC v1_ENGINE_register_EC +#define ENGINE_register_pkey_asn1_meths v1_ENGINE_register_pkey_asn1_meths +#define ENGINE_register_pkey_meths v1_ENGINE_register_pkey_meths +#define ENGINE_register_RAND v1_ENGINE_register_RAND +#define ENGINE_register_RSA v1_ENGINE_register_RSA +#define ENGINE_remove v1_ENGINE_remove +#define engine_remove_dynamic_id v1_engine_remove_dynamic_id +#define engine_set_all_null v1_engine_set_all_null +#define ENGINE_set_ciphers v1_ENGINE_set_ciphers +#define ENGINE_set_cmd_defns v1_ENGINE_set_cmd_defns +#define ENGINE_set_ctrl_function v1_ENGINE_set_ctrl_function +#define ENGINE_set_default v1_ENGINE_set_default +#define ENGINE_set_default_ciphers v1_ENGINE_set_default_ciphers +#define ENGINE_set_default_DH v1_ENGINE_set_default_DH +#define ENGINE_set_default_digests v1_ENGINE_set_default_digests +#define ENGINE_set_default_DSA v1_ENGINE_set_default_DSA +#define ENGINE_set_default_EC v1_ENGINE_set_default_EC +#define ENGINE_set_default_pkey_asn1_meths v1_ENGINE_set_default_pkey_asn1_meths +#define ENGINE_set_default_pkey_meths v1_ENGINE_set_default_pkey_meths +#define ENGINE_set_default_RAND v1_ENGINE_set_default_RAND +#define ENGINE_set_default_RSA v1_ENGINE_set_default_RSA +#define ENGINE_set_default_string v1_ENGINE_set_default_string +#define ENGINE_set_destroy_function v1_ENGINE_set_destroy_function +#define ENGINE_set_DH v1_ENGINE_set_DH +#define ENGINE_set_digests v1_ENGINE_set_digests +#define ENGINE_set_DSA v1_ENGINE_set_DSA +#define ENGINE_set_EC v1_ENGINE_set_EC +#define ENGINE_set_ex_data v1_ENGINE_set_ex_data +#define ENGINE_set_finish_function v1_ENGINE_set_finish_function +#define ENGINE_set_flags v1_ENGINE_set_flags +#define ENGINE_set_id v1_ENGINE_set_id +#define ENGINE_set_init_function v1_ENGINE_set_init_function +#define ENGINE_set_load_privkey_function v1_ENGINE_set_load_privkey_function +#define ENGINE_set_load_pubkey_function v1_ENGINE_set_load_pubkey_function +#define ENGINE_set_load_ssl_client_cert_function v1_ENGINE_set_load_ssl_client_cert_function +#define ENGINE_set_name v1_ENGINE_set_name +#define ENGINE_set_pkey_asn1_meths v1_ENGINE_set_pkey_asn1_meths +#define ENGINE_set_pkey_meths v1_ENGINE_set_pkey_meths +#define ENGINE_set_RAND v1_ENGINE_set_RAND +#define ENGINE_set_RSA v1_ENGINE_set_RSA +#define ENGINE_set_table_flags v1_ENGINE_set_table_flags +#define engine_table_cleanup v1_engine_table_cleanup +#define engine_table_doall v1_engine_table_doall +#define engine_table_register v1_engine_table_register +#define engine_table_select v1_engine_table_select +#define engine_table_unregister v1_engine_table_unregister +#define engine_unlocked_finish v1_engine_unlocked_finish +#define engine_unlocked_init v1_engine_unlocked_init +#define ENGINE_unregister_ciphers v1_ENGINE_unregister_ciphers +#define ENGINE_unregister_DH v1_ENGINE_unregister_DH +#define ENGINE_unregister_digests v1_ENGINE_unregister_digests +#define ENGINE_unregister_DSA v1_ENGINE_unregister_DSA +#define ENGINE_unregister_EC v1_ENGINE_unregister_EC +#define ENGINE_unregister_pkey_asn1_meths v1_ENGINE_unregister_pkey_asn1_meths +#define ENGINE_unregister_pkey_meths v1_ENGINE_unregister_pkey_meths +#define ENGINE_unregister_RAND v1_ENGINE_unregister_RAND +#define ENGINE_unregister_RSA v1_ENGINE_unregister_RSA +#define ENGINE_up_ref v1_ENGINE_up_ref +#define ERR_add_error_data v1_ERR_add_error_data +#define ERR_add_error_vdata v1_ERR_add_error_vdata +#define err_cleanup v1_err_cleanup +#define ERR_clear_error v1_ERR_clear_error +#define err_clear_last_constant_time v1_err_clear_last_constant_time +#define ERR_clear_last_mark v1_ERR_clear_last_mark +#define err_delete_thread_state v1_err_delete_thread_state +#define ERR_error_string v1_ERR_error_string +#define ERR_error_string_n v1_ERR_error_string_n +#define err_free_strings_int v1_err_free_strings_int +#define ERR_func_error_string v1_ERR_func_error_string +#define ERR_get_error v1_ERR_get_error +#define ERR_get_error_line v1_ERR_get_error_line +#define ERR_get_error_line_data v1_ERR_get_error_line_data +#define ERR_get_next_error_library v1_ERR_get_next_error_library +#define ERR_get_state v1_ERR_get_state +#define ERR_lib_error_string v1_ERR_lib_error_string +#define ERR_load_ASN1_strings v1_ERR_load_ASN1_strings +#define ERR_load_ASYNC_strings v1_ERR_load_ASYNC_strings +#define ERR_load_BIO_strings v1_ERR_load_BIO_strings +#define ERR_load_BN_strings v1_ERR_load_BN_strings +#define ERR_load_BUF_strings v1_ERR_load_BUF_strings +#define ERR_load_CMS_strings v1_ERR_load_CMS_strings +#define ERR_load_COMP_strings v1_ERR_load_COMP_strings +#define ERR_load_CONF_strings v1_ERR_load_CONF_strings +#define ERR_load_CRYPTO_strings v1_ERR_load_CRYPTO_strings +#define err_load_crypto_strings_int v1_err_load_crypto_strings_int +#define ERR_load_CT_strings v1_ERR_load_CT_strings +#define ERR_load_DH_strings v1_ERR_load_DH_strings +#define ERR_load_DSA_strings v1_ERR_load_DSA_strings +#define ERR_load_DSO_strings v1_ERR_load_DSO_strings +#define ERR_load_EC_strings v1_ERR_load_EC_strings +#define ERR_load_ENGINE_strings v1_ERR_load_ENGINE_strings +#define ERR_load_ERR_strings v1_ERR_load_ERR_strings +#define ERR_load_EVP_strings v1_ERR_load_EVP_strings +#define ERR_load_KDF_strings v1_ERR_load_KDF_strings +#define ERR_load_OBJ_strings v1_ERR_load_OBJ_strings +#define ERR_load_OCSP_strings v1_ERR_load_OCSP_strings +#define ERR_load_OSSL_STORE_strings v1_ERR_load_OSSL_STORE_strings +#define ERR_load_PEM_strings v1_ERR_load_PEM_strings +#define ERR_load_PKCS12_strings v1_ERR_load_PKCS12_strings +#define ERR_load_PKCS7_strings v1_ERR_load_PKCS7_strings +#define ERR_load_RAND_strings v1_ERR_load_RAND_strings +#define ERR_load_RSA_strings v1_ERR_load_RSA_strings +#define ERR_load_SM2_strings v1_ERR_load_SM2_strings +#define ERR_load_SSL_strings v1_ERR_load_SSL_strings +#define ERR_load_strings v1_ERR_load_strings +#define ERR_load_strings_const v1_ERR_load_strings_const +#define ERR_load_TS_strings v1_ERR_load_TS_strings +#define ERR_load_UI_strings v1_ERR_load_UI_strings +#define ERR_load_X509_strings v1_ERR_load_X509_strings +#define ERR_load_X509V3_strings v1_ERR_load_X509V3_strings +#define ERR_peek_error v1_ERR_peek_error +#define ERR_peek_error_line v1_ERR_peek_error_line +#define ERR_peek_error_line_data v1_ERR_peek_error_line_data +#define ERR_peek_last_error v1_ERR_peek_last_error +#define ERR_peek_last_error_line v1_ERR_peek_last_error_line +#define ERR_peek_last_error_line_data v1_ERR_peek_last_error_line_data +#define ERR_pop_to_mark v1_ERR_pop_to_mark +#define ERR_print_errors v1_ERR_print_errors +#define ERR_print_errors_cb v1_ERR_print_errors_cb +#define ERR_print_errors_fp v1_ERR_print_errors_fp +#define ERR_put_error v1_ERR_put_error +#define ERR_reason_error_string v1_ERR_reason_error_string +#define ERR_remove_state v1_ERR_remove_state +#define ERR_remove_thread_state v1_ERR_remove_thread_state +#define ERR_set_error_data v1_ERR_set_error_data +#define ERR_set_mark v1_ERR_set_mark +#define err_shelve_state v1_err_shelve_state +#define ERR_unload_strings v1_ERR_unload_strings +#define err_unshelve_state v1_err_unshelve_state +#define ESS_CERT_ID_dup v1_ESS_CERT_ID_dup +#define ESS_CERT_ID_free v1_ESS_CERT_ID_free +#define ESS_CERT_ID_new v1_ESS_CERT_ID_new +#define ESS_CERT_ID_V2_dup v1_ESS_CERT_ID_V2_dup +#define ESS_CERT_ID_V2_free v1_ESS_CERT_ID_V2_free +#define ESS_CERT_ID_V2_new v1_ESS_CERT_ID_V2_new +#define ESS_ISSUER_SERIAL_dup v1_ESS_ISSUER_SERIAL_dup +#define ESS_ISSUER_SERIAL_free v1_ESS_ISSUER_SERIAL_free +#define ESS_ISSUER_SERIAL_new v1_ESS_ISSUER_SERIAL_new +#define ESS_SIGNING_CERT_dup v1_ESS_SIGNING_CERT_dup +#define ESS_SIGNING_CERT_free v1_ESS_SIGNING_CERT_free +#define ESS_SIGNING_CERT_new v1_ESS_SIGNING_CERT_new +#define ESS_SIGNING_CERT_V2_dup v1_ESS_SIGNING_CERT_V2_dup +#define ESS_SIGNING_CERT_V2_free v1_ESS_SIGNING_CERT_V2_free +#define ESS_SIGNING_CERT_V2_new v1_ESS_SIGNING_CERT_V2_new +#define EVP_add_alg_module v1_EVP_add_alg_module +#define EVP_add_cipher v1_EVP_add_cipher +#define EVP_add_digest v1_EVP_add_digest +#define EVP_aes_128_cbc v1_EVP_aes_128_cbc +#define EVP_aes_128_cbc_hmac_sha1 v1_EVP_aes_128_cbc_hmac_sha1 +#define EVP_aes_128_cbc_hmac_sha256 v1_EVP_aes_128_cbc_hmac_sha256 +#define EVP_aes_128_ccm v1_EVP_aes_128_ccm +//#define EVP_aes_128_cfb v1_EVP_aes_128_cfb +#define EVP_aes_128_cfb1 v1_EVP_aes_128_cfb1 +#define EVP_aes_128_cfb128 v1_EVP_aes_128_cfb128 +#define EVP_aes_128_cfb8 v1_EVP_aes_128_cfb8 +#define EVP_aes_128_ctr v1_EVP_aes_128_ctr +#define EVP_aes_128_ecb v1_EVP_aes_128_ecb +#define EVP_aes_128_gcm v1_EVP_aes_128_gcm +#define EVP_aes_128_ocb v1_EVP_aes_128_ocb +#define EVP_aes_128_ofb v1_EVP_aes_128_ofb +#define EVP_aes_128_wrap v1_EVP_aes_128_wrap +#define EVP_aes_128_wrap_pad v1_EVP_aes_128_wrap_pad +#define EVP_aes_128_xts v1_EVP_aes_128_xts +#define EVP_aes_192_cbc v1_EVP_aes_192_cbc +#define EVP_aes_192_ccm v1_EVP_aes_192_ccm +//#define EVP_aes_192_cfb v1_EVP_aes_192_cfb +#define EVP_aes_192_cfb1 v1_EVP_aes_192_cfb1 +#define EVP_aes_192_cfb128 v1_EVP_aes_192_cfb128 +#define EVP_aes_192_cfb8 v1_EVP_aes_192_cfb8 +#define EVP_aes_192_ctr v1_EVP_aes_192_ctr +#define EVP_aes_192_ecb v1_EVP_aes_192_ecb +#define EVP_aes_192_gcm v1_EVP_aes_192_gcm +#define EVP_aes_192_ocb v1_EVP_aes_192_ocb +#define EVP_aes_192_ofb v1_EVP_aes_192_ofb +#define EVP_aes_192_wrap v1_EVP_aes_192_wrap +#define EVP_aes_192_wrap_pad v1_EVP_aes_192_wrap_pad +#define EVP_aes_256_cbc v1_EVP_aes_256_cbc +#define EVP_aes_256_cbc_hmac_sha1 v1_EVP_aes_256_cbc_hmac_sha1 +#define EVP_aes_256_cbc_hmac_sha256 v1_EVP_aes_256_cbc_hmac_sha256 +#define EVP_aes_256_ccm v1_EVP_aes_256_ccm +//#define EVP_aes_256_cfb v1_EVP_aes_256_cfb +#define EVP_aes_256_cfb1 v1_EVP_aes_256_cfb1 +#define EVP_aes_256_cfb128 v1_EVP_aes_256_cfb128 +#define EVP_aes_256_cfb8 v1_EVP_aes_256_cfb8 +#define EVP_aes_256_ctr v1_EVP_aes_256_ctr +#define EVP_aes_256_ecb v1_EVP_aes_256_ecb +#define EVP_aes_256_gcm v1_EVP_aes_256_gcm +#define EVP_aes_256_ocb v1_EVP_aes_256_ocb +#define EVP_aes_256_ofb v1_EVP_aes_256_ofb +#define EVP_aes_256_wrap v1_EVP_aes_256_wrap +#define EVP_aes_256_wrap_pad v1_EVP_aes_256_wrap_pad +#define EVP_aes_256_xts v1_EVP_aes_256_xts +#define evp_app_cleanup_int v1_evp_app_cleanup_int +#define EVP_aria_128_cbc v1_EVP_aria_128_cbc +#define EVP_aria_128_ccm v1_EVP_aria_128_ccm +#define EVP_aria_128_cfb1 v1_EVP_aria_128_cfb1 +#define EVP_aria_128_cfb128 v1_EVP_aria_128_cfb128 +#define EVP_aria_128_cfb8 v1_EVP_aria_128_cfb8 +#define EVP_aria_128_ctr v1_EVP_aria_128_ctr +#define EVP_aria_128_ecb v1_EVP_aria_128_ecb +#define EVP_aria_128_gcm v1_EVP_aria_128_gcm +#define EVP_aria_128_ofb v1_EVP_aria_128_ofb +#define EVP_aria_192_cbc v1_EVP_aria_192_cbc +#define EVP_aria_192_ccm v1_EVP_aria_192_ccm +#define EVP_aria_192_cfb1 v1_EVP_aria_192_cfb1 +#define EVP_aria_192_cfb128 v1_EVP_aria_192_cfb128 +#define EVP_aria_192_cfb8 v1_EVP_aria_192_cfb8 +#define EVP_aria_192_ctr v1_EVP_aria_192_ctr +#define EVP_aria_192_ecb v1_EVP_aria_192_ecb +#define EVP_aria_192_gcm v1_EVP_aria_192_gcm +#define EVP_aria_192_ofb v1_EVP_aria_192_ofb +#define EVP_aria_256_cbc v1_EVP_aria_256_cbc +#define EVP_aria_256_ccm v1_EVP_aria_256_ccm +#define EVP_aria_256_cfb1 v1_EVP_aria_256_cfb1 +#define EVP_aria_256_cfb128 v1_EVP_aria_256_cfb128 +#define EVP_aria_256_cfb8 v1_EVP_aria_256_cfb8 +#define EVP_aria_256_ctr v1_EVP_aria_256_ctr +#define EVP_aria_256_ecb v1_EVP_aria_256_ecb +#define EVP_aria_256_gcm v1_EVP_aria_256_gcm +#define EVP_aria_256_ofb v1_EVP_aria_256_ofb +#define EVP_bf_cbc v1_EVP_bf_cbc +//#define EVP_bf_cfb v1_EVP_bf_cfb +#define EVP_bf_cfb64 v1_EVP_bf_cfb64 +#define EVP_bf_ecb v1_EVP_bf_ecb +#define EVP_bf_ofb v1_EVP_bf_ofb +#define EVP_blake2b512 v1_EVP_blake2b512 +#define EVP_blake2s256 v1_EVP_blake2s256 +#define EVP_BytesToKey v1_EVP_BytesToKey +#define EVP_camellia_128_cbc v1_EVP_camellia_128_cbc +#define EVP_camellia_128_cfb1 v1_EVP_camellia_128_cfb1 +#define EVP_camellia_128_cfb128 v1_EVP_camellia_128_cfb128 +#define EVP_camellia_128_cfb8 v1_EVP_camellia_128_cfb8 +#define EVP_camellia_128_ctr v1_EVP_camellia_128_ctr +#define EVP_camellia_128_ecb v1_EVP_camellia_128_ecb +#define EVP_camellia_128_ofb v1_EVP_camellia_128_ofb +#define EVP_camellia_192_cbc v1_EVP_camellia_192_cbc +#define EVP_camellia_192_cfb1 v1_EVP_camellia_192_cfb1 +#define EVP_camellia_192_cfb128 v1_EVP_camellia_192_cfb128 +#define EVP_camellia_192_cfb8 v1_EVP_camellia_192_cfb8 +#define EVP_camellia_192_ctr v1_EVP_camellia_192_ctr +#define EVP_camellia_192_ecb v1_EVP_camellia_192_ecb +#define EVP_camellia_192_ofb v1_EVP_camellia_192_ofb +#define EVP_camellia_256_cbc v1_EVP_camellia_256_cbc +#define EVP_camellia_256_cfb1 v1_EVP_camellia_256_cfb1 +#define EVP_camellia_256_cfb128 v1_EVP_camellia_256_cfb128 +#define EVP_camellia_256_cfb8 v1_EVP_camellia_256_cfb8 +#define EVP_camellia_256_ctr v1_EVP_camellia_256_ctr +#define EVP_camellia_256_ecb v1_EVP_camellia_256_ecb +#define EVP_camellia_256_ofb v1_EVP_camellia_256_ofb +#define EVP_cast5_cbc v1_EVP_cast5_cbc +//#define EVP_cast5_cfb v1_EVP_cast5_cfb +#define EVP_cast5_cfb64 v1_EVP_cast5_cfb64 +#define EVP_cast5_ecb v1_EVP_cast5_ecb +#define EVP_cast5_ofb v1_EVP_cast5_ofb +#define EVP_chacha20 v1_EVP_chacha20 +#define EVP_chacha20_poly1305 v1_EVP_chacha20_poly1305 +#define EVP_Cipher v1_EVP_Cipher +#define EVP_CIPHER_asn1_to_param v1_EVP_CIPHER_asn1_to_param +#define EVP_CIPHER_block_size v1_EVP_CIPHER_block_size +#define EVP_CIPHER_CTX_block_size v1_EVP_CIPHER_CTX_block_size +#define EVP_CIPHER_CTX_buf_noconst v1_EVP_CIPHER_CTX_buf_noconst +#define EVP_CIPHER_CTX_cipher v1_EVP_CIPHER_CTX_cipher +#define EVP_CIPHER_CTX_clear_flags v1_EVP_CIPHER_CTX_clear_flags +#define EVP_CIPHER_CTX_copy v1_EVP_CIPHER_CTX_copy +#define EVP_CIPHER_CTX_ctrl v1_EVP_CIPHER_CTX_ctrl +#define EVP_CIPHER_CTX_encrypting v1_EVP_CIPHER_CTX_encrypting +#define EVP_CIPHER_CTX_free v1_EVP_CIPHER_CTX_free +#define EVP_CIPHER_CTX_get_app_data v1_EVP_CIPHER_CTX_get_app_data +#define EVP_CIPHER_CTX_get_cipher_data v1_EVP_CIPHER_CTX_get_cipher_data +#define EVP_CIPHER_CTX_iv v1_EVP_CIPHER_CTX_iv +#define EVP_CIPHER_CTX_iv_length v1_EVP_CIPHER_CTX_iv_length +#define EVP_CIPHER_CTX_iv_noconst v1_EVP_CIPHER_CTX_iv_noconst +#define EVP_CIPHER_CTX_key_length v1_EVP_CIPHER_CTX_key_length +#define EVP_CIPHER_CTX_new v1_EVP_CIPHER_CTX_new +#define EVP_CIPHER_CTX_nid v1_EVP_CIPHER_CTX_nid +#define EVP_CIPHER_CTX_num v1_EVP_CIPHER_CTX_num +#define EVP_CIPHER_CTX_original_iv v1_EVP_CIPHER_CTX_original_iv +#define EVP_CIPHER_CTX_rand_key v1_EVP_CIPHER_CTX_rand_key +#define EVP_CIPHER_CTX_reset v1_EVP_CIPHER_CTX_reset +#define EVP_CIPHER_CTX_set_app_data v1_EVP_CIPHER_CTX_set_app_data +#define EVP_CIPHER_CTX_set_cipher_data v1_EVP_CIPHER_CTX_set_cipher_data +#define EVP_CIPHER_CTX_set_flags v1_EVP_CIPHER_CTX_set_flags +#define EVP_CIPHER_CTX_set_key_length v1_EVP_CIPHER_CTX_set_key_length +#define EVP_CIPHER_CTX_set_num v1_EVP_CIPHER_CTX_set_num +#define EVP_CIPHER_CTX_set_padding v1_EVP_CIPHER_CTX_set_padding +#define EVP_CIPHER_CTX_test_flags v1_EVP_CIPHER_CTX_test_flags +#define EVP_CIPHER_do_all v1_EVP_CIPHER_do_all +#define EVP_CIPHER_do_all_sorted v1_EVP_CIPHER_do_all_sorted +#define EVP_CipherFinal v1_EVP_CipherFinal +#define EVP_CipherFinal_ex v1_EVP_CipherFinal_ex +#define EVP_CIPHER_flags v1_EVP_CIPHER_flags +#define EVP_CIPHER_get_asn1_iv v1_EVP_CIPHER_get_asn1_iv +#define EVP_CIPHER_impl_ctx_size v1_EVP_CIPHER_impl_ctx_size +#define EVP_CipherInit v1_EVP_CipherInit +#define EVP_CipherInit_ex v1_EVP_CipherInit_ex +#define EVP_CIPHER_iv_length v1_EVP_CIPHER_iv_length +#define EVP_CIPHER_key_length v1_EVP_CIPHER_key_length +#define EVP_CIPHER_meth_dup v1_EVP_CIPHER_meth_dup +#define EVP_CIPHER_meth_free v1_EVP_CIPHER_meth_free +#define EVP_CIPHER_meth_get_cleanup v1_EVP_CIPHER_meth_get_cleanup +#define EVP_CIPHER_meth_get_ctrl v1_EVP_CIPHER_meth_get_ctrl +#define EVP_CIPHER_meth_get_do_cipher v1_EVP_CIPHER_meth_get_do_cipher +#define EVP_CIPHER_meth_get_get_asn1_params v1_EVP_CIPHER_meth_get_get_asn1_params +#define EVP_CIPHER_meth_get_init v1_EVP_CIPHER_meth_get_init +#define EVP_CIPHER_meth_get_set_asn1_params v1_EVP_CIPHER_meth_get_set_asn1_params +#define EVP_CIPHER_meth_new v1_EVP_CIPHER_meth_new +#define EVP_CIPHER_meth_set_cleanup v1_EVP_CIPHER_meth_set_cleanup +#define EVP_CIPHER_meth_set_ctrl v1_EVP_CIPHER_meth_set_ctrl +#define EVP_CIPHER_meth_set_do_cipher v1_EVP_CIPHER_meth_set_do_cipher +#define EVP_CIPHER_meth_set_flags v1_EVP_CIPHER_meth_set_flags +#define EVP_CIPHER_meth_set_get_asn1_params v1_EVP_CIPHER_meth_set_get_asn1_params +#define EVP_CIPHER_meth_set_impl_ctx_size v1_EVP_CIPHER_meth_set_impl_ctx_size +#define EVP_CIPHER_meth_set_init v1_EVP_CIPHER_meth_set_init +#define EVP_CIPHER_meth_set_iv_length v1_EVP_CIPHER_meth_set_iv_length +#define EVP_CIPHER_meth_set_set_asn1_params v1_EVP_CIPHER_meth_set_set_asn1_params +#define EVP_CIPHER_nid v1_EVP_CIPHER_nid +#define EVP_CIPHER_param_to_asn1 v1_EVP_CIPHER_param_to_asn1 +#define EVP_CIPHER_set_asn1_iv v1_EVP_CIPHER_set_asn1_iv +#define EVP_CIPHER_type v1_EVP_CIPHER_type +#define EVP_CipherUpdate v1_EVP_CipherUpdate +#define evp_cleanup_int v1_evp_cleanup_int +#define EVP_DecodeBlock v1_EVP_DecodeBlock +#define EVP_DecodeFinal v1_EVP_DecodeFinal +#define EVP_DecodeInit v1_EVP_DecodeInit +#define EVP_DecodeUpdate v1_EVP_DecodeUpdate +#define EVP_DecryptFinal v1_EVP_DecryptFinal +#define EVP_DecryptFinal_ex v1_EVP_DecryptFinal_ex +#define EVP_DecryptInit v1_EVP_DecryptInit +#define EVP_DecryptInit_ex v1_EVP_DecryptInit_ex +#define EVP_DecryptUpdate v1_EVP_DecryptUpdate +#define EVP_des_cbc v1_EVP_des_cbc +//#define EVP_des_cfb v1_EVP_des_cfb +#define EVP_des_cfb1 v1_EVP_des_cfb1 +#define EVP_des_cfb64 v1_EVP_des_cfb64 +#define EVP_des_cfb8 v1_EVP_des_cfb8 +#define EVP_des_ecb v1_EVP_des_ecb +#define EVP_des_ede v1_EVP_des_ede +#define EVP_des_ede3 v1_EVP_des_ede3 +#define EVP_des_ede3_cbc v1_EVP_des_ede3_cbc +//#define EVP_des_ede3_cfb v1_EVP_des_ede3_cfb +#define EVP_des_ede3_cfb1 v1_EVP_des_ede3_cfb1 +#define EVP_des_ede3_cfb64 v1_EVP_des_ede3_cfb64 +#define EVP_des_ede3_cfb8 v1_EVP_des_ede3_cfb8 +#define EVP_des_ede3_ecb v1_EVP_des_ede3_ecb +#define EVP_des_ede3_ofb v1_EVP_des_ede3_ofb +#define EVP_des_ede3_wrap v1_EVP_des_ede3_wrap +#define EVP_des_ede_cbc v1_EVP_des_ede_cbc +//#define EVP_des_ede_cfb v1_EVP_des_ede_cfb +#define EVP_des_ede_cfb64 v1_EVP_des_ede_cfb64 +#define EVP_des_ede_ecb v1_EVP_des_ede_ecb +#define EVP_des_ede_ofb v1_EVP_des_ede_ofb +#define EVP_des_ofb v1_EVP_des_ofb +#define EVP_desx_cbc v1_EVP_desx_cbc +#define EVP_Digest v1_EVP_Digest +#define EVP_DigestFinal v1_EVP_DigestFinal +#define EVP_DigestFinal_ex v1_EVP_DigestFinal_ex +#define EVP_DigestFinalXOF v1_EVP_DigestFinalXOF +#define EVP_DigestInit v1_EVP_DigestInit +#define EVP_DigestInit_ex v1_EVP_DigestInit_ex +#define EVP_DigestSign v1_EVP_DigestSign +#define EVP_DigestSignFinal v1_EVP_DigestSignFinal +#define EVP_DigestSignInit v1_EVP_DigestSignInit +#define EVP_DigestUpdate v1_EVP_DigestUpdate +#define EVP_DigestVerify v1_EVP_DigestVerify +#define EVP_DigestVerifyFinal v1_EVP_DigestVerifyFinal +#define EVP_DigestVerifyInit v1_EVP_DigestVerifyInit +#define EVP_enc_null v1_EVP_enc_null +#define EVP_EncodeBlock v1_EVP_EncodeBlock +#define EVP_ENCODE_CTX_copy v1_EVP_ENCODE_CTX_copy +#define EVP_ENCODE_CTX_free v1_EVP_ENCODE_CTX_free +#define EVP_ENCODE_CTX_new v1_EVP_ENCODE_CTX_new +#define EVP_ENCODE_CTX_num v1_EVP_ENCODE_CTX_num +#define evp_encode_ctx_set_flags v1_evp_encode_ctx_set_flags +#define EVP_EncodeFinal v1_EVP_EncodeFinal +#define EVP_EncodeInit v1_EVP_EncodeInit +#define EVP_EncodeUpdate v1_EVP_EncodeUpdate +#define EVP_EncryptFinal v1_EVP_EncryptFinal +#define EVP_EncryptFinal_ex v1_EVP_EncryptFinal_ex +#define EVP_EncryptInit v1_EVP_EncryptInit +#define EVP_EncryptInit_ex v1_EVP_EncryptInit_ex +#define EVP_EncryptUpdate v1_EVP_EncryptUpdate +#define EVP_get_cipherbyname v1_EVP_get_cipherbyname +#define EVP_get_digestbyname v1_EVP_get_digestbyname +#define EVP_get_pw_prompt v1_EVP_get_pw_prompt +#define EVP_idea_cbc v1_EVP_idea_cbc +//#define EVP_idea_cfb v1_EVP_idea_cfb +#define EVP_idea_cfb64 v1_EVP_idea_cfb64 +#define EVP_idea_ecb v1_EVP_idea_ecb +#define EVP_idea_ofb v1_EVP_idea_ofb +#define EVP_md4 v1_EVP_md4 +#define EVP_md5 v1_EVP_md5 +#define EVP_md5_sha1 v1_EVP_md5_sha1 +#define EVP_MD_block_size v1_EVP_MD_block_size +#define EVP_mdc2 v1_EVP_mdc2 +#define EVP_MD_CTX_clear_flags v1_EVP_MD_CTX_clear_flags +#define EVP_MD_CTX_copy v1_EVP_MD_CTX_copy +#define EVP_MD_CTX_copy_ex v1_EVP_MD_CTX_copy_ex +#define EVP_MD_CTX_ctrl v1_EVP_MD_CTX_ctrl +#define EVP_MD_CTX_free v1_EVP_MD_CTX_free +#define EVP_MD_CTX_md v1_EVP_MD_CTX_md +#define EVP_MD_CTX_md_data v1_EVP_MD_CTX_md_data +#define EVP_MD_CTX_new v1_EVP_MD_CTX_new +#define EVP_MD_CTX_pkey_ctx v1_EVP_MD_CTX_pkey_ctx +#define EVP_MD_CTX_reset v1_EVP_MD_CTX_reset +#define EVP_MD_CTX_set_flags v1_EVP_MD_CTX_set_flags +#define EVP_MD_CTX_set_pkey_ctx v1_EVP_MD_CTX_set_pkey_ctx +#define EVP_MD_CTX_set_update_fn v1_EVP_MD_CTX_set_update_fn +#define EVP_MD_CTX_test_flags v1_EVP_MD_CTX_test_flags +#define EVP_MD_CTX_update_fn v1_EVP_MD_CTX_update_fn +#define EVP_MD_do_all v1_EVP_MD_do_all +#define EVP_MD_do_all_sorted v1_EVP_MD_do_all_sorted +#define EVP_MD_flags v1_EVP_MD_flags +#define EVP_MD_meth_dup v1_EVP_MD_meth_dup +#define EVP_MD_meth_free v1_EVP_MD_meth_free +#define EVP_MD_meth_get_app_datasize v1_EVP_MD_meth_get_app_datasize +#define EVP_MD_meth_get_cleanup v1_EVP_MD_meth_get_cleanup +#define EVP_MD_meth_get_copy v1_EVP_MD_meth_get_copy +#define EVP_MD_meth_get_ctrl v1_EVP_MD_meth_get_ctrl +#define EVP_MD_meth_get_final v1_EVP_MD_meth_get_final +#define EVP_MD_meth_get_flags v1_EVP_MD_meth_get_flags +#define EVP_MD_meth_get_init v1_EVP_MD_meth_get_init +#define EVP_MD_meth_get_input_blocksize v1_EVP_MD_meth_get_input_blocksize +#define EVP_MD_meth_get_result_size v1_EVP_MD_meth_get_result_size +#define EVP_MD_meth_get_update v1_EVP_MD_meth_get_update +#define EVP_MD_meth_new v1_EVP_MD_meth_new +#define EVP_MD_meth_set_app_datasize v1_EVP_MD_meth_set_app_datasize +#define EVP_MD_meth_set_cleanup v1_EVP_MD_meth_set_cleanup +#define EVP_MD_meth_set_copy v1_EVP_MD_meth_set_copy +#define EVP_MD_meth_set_ctrl v1_EVP_MD_meth_set_ctrl +#define EVP_MD_meth_set_final v1_EVP_MD_meth_set_final +#define EVP_MD_meth_set_flags v1_EVP_MD_meth_set_flags +#define EVP_MD_meth_set_init v1_EVP_MD_meth_set_init +#define EVP_MD_meth_set_input_blocksize v1_EVP_MD_meth_set_input_blocksize +#define EVP_MD_meth_set_result_size v1_EVP_MD_meth_set_result_size +#define EVP_MD_meth_set_update v1_EVP_MD_meth_set_update +#define EVP_md_null v1_EVP_md_null +#define EVP_MD_pkey_type v1_EVP_MD_pkey_type +#define EVP_MD_size v1_EVP_MD_size +#define EVP_MD_type v1_EVP_MD_type +#define EVP_OpenFinal v1_EVP_OpenFinal +#define EVP_OpenInit v1_EVP_OpenInit +#define EVP_PBE_alg_add v1_EVP_PBE_alg_add +#define EVP_PBE_alg_add_type v1_EVP_PBE_alg_add_type +#define EVP_PBE_CipherInit v1_EVP_PBE_CipherInit +#define EVP_PBE_cleanup v1_EVP_PBE_cleanup +#define EVP_PBE_find v1_EVP_PBE_find +#define EVP_PBE_get v1_EVP_PBE_get +#define EVP_PBE_scrypt v1_EVP_PBE_scrypt +#define EVP_PKCS82PKEY v1_EVP_PKCS82PKEY +#define EVP_PKEY2PKCS8 v1_EVP_PKEY2PKCS8 +#define EVP_PKEY_add1_attr v1_EVP_PKEY_add1_attr +#define EVP_PKEY_add1_attr_by_NID v1_EVP_PKEY_add1_attr_by_NID +#define EVP_PKEY_add1_attr_by_OBJ v1_EVP_PKEY_add1_attr_by_OBJ +#define EVP_PKEY_add1_attr_by_txt v1_EVP_PKEY_add1_attr_by_txt +#define EVP_PKEY_asn1_add0 v1_EVP_PKEY_asn1_add0 +#define EVP_PKEY_asn1_add_alias v1_EVP_PKEY_asn1_add_alias +#define EVP_PKEY_asn1_copy v1_EVP_PKEY_asn1_copy +#define EVP_PKEY_asn1_find v1_EVP_PKEY_asn1_find +#define EVP_PKEY_asn1_find_str v1_EVP_PKEY_asn1_find_str +#define EVP_PKEY_asn1_free v1_EVP_PKEY_asn1_free +#define EVP_PKEY_asn1_get0 v1_EVP_PKEY_asn1_get0 +#define EVP_PKEY_asn1_get0_info v1_EVP_PKEY_asn1_get0_info +#define EVP_PKEY_asn1_get_count v1_EVP_PKEY_asn1_get_count +#define EVP_PKEY_asn1_new v1_EVP_PKEY_asn1_new +#define EVP_PKEY_asn1_set_check v1_EVP_PKEY_asn1_set_check +#define EVP_PKEY_asn1_set_ctrl v1_EVP_PKEY_asn1_set_ctrl +#define EVP_PKEY_asn1_set_free v1_EVP_PKEY_asn1_set_free +#define EVP_PKEY_asn1_set_get_priv_key v1_EVP_PKEY_asn1_set_get_priv_key +#define EVP_PKEY_asn1_set_get_pub_key v1_EVP_PKEY_asn1_set_get_pub_key +#define EVP_PKEY_asn1_set_item v1_EVP_PKEY_asn1_set_item +#define EVP_PKEY_asn1_set_param v1_EVP_PKEY_asn1_set_param +#define EVP_PKEY_asn1_set_param_check v1_EVP_PKEY_asn1_set_param_check +#define EVP_PKEY_asn1_set_private v1_EVP_PKEY_asn1_set_private +#define EVP_PKEY_asn1_set_public v1_EVP_PKEY_asn1_set_public +#define EVP_PKEY_asn1_set_public_check v1_EVP_PKEY_asn1_set_public_check +#define EVP_PKEY_asn1_set_security_bits v1_EVP_PKEY_asn1_set_security_bits +#define EVP_PKEY_asn1_set_set_priv_key v1_EVP_PKEY_asn1_set_set_priv_key +#define EVP_PKEY_asn1_set_set_pub_key v1_EVP_PKEY_asn1_set_set_pub_key +#define EVP_PKEY_asn1_set_siginf v1_EVP_PKEY_asn1_set_siginf +#define EVP_PKEY_assign v1_EVP_PKEY_assign +#define EVP_PKEY_base_id v1_EVP_PKEY_base_id +#define EVP_PKEY_bits v1_EVP_PKEY_bits +#define EVP_PKEY_check v1_EVP_PKEY_check +#define EVP_PKEY_cmp v1_EVP_PKEY_cmp +#define EVP_PKEY_cmp_parameters v1_EVP_PKEY_cmp_parameters +#define EVP_PKEY_copy_parameters v1_EVP_PKEY_copy_parameters +#define EVP_PKEY_CTX_ctrl v1_EVP_PKEY_CTX_ctrl +#define EVP_PKEY_CTX_ctrl_str v1_EVP_PKEY_CTX_ctrl_str +#define EVP_PKEY_CTX_ctrl_uint64 v1_EVP_PKEY_CTX_ctrl_uint64 +#define EVP_PKEY_CTX_dup v1_EVP_PKEY_CTX_dup +#define EVP_PKEY_CTX_free v1_EVP_PKEY_CTX_free +#define EVP_PKEY_CTX_get0_peerkey v1_EVP_PKEY_CTX_get0_peerkey +#define EVP_PKEY_CTX_get0_pkey v1_EVP_PKEY_CTX_get0_pkey +#define EVP_PKEY_CTX_get_app_data v1_EVP_PKEY_CTX_get_app_data +#define EVP_PKEY_CTX_get_cb v1_EVP_PKEY_CTX_get_cb +#define EVP_PKEY_CTX_get_data v1_EVP_PKEY_CTX_get_data +#define EVP_PKEY_CTX_get_keygen_info v1_EVP_PKEY_CTX_get_keygen_info +#define EVP_PKEY_CTX_get_operation v1_EVP_PKEY_CTX_get_operation +#define EVP_PKEY_CTX_hex2ctrl v1_EVP_PKEY_CTX_hex2ctrl +#define EVP_PKEY_CTX_md v1_EVP_PKEY_CTX_md +#define EVP_PKEY_CTX_new v1_EVP_PKEY_CTX_new +#define EVP_PKEY_CTX_new_id v1_EVP_PKEY_CTX_new_id +#define EVP_PKEY_CTX_set0_keygen_info v1_EVP_PKEY_CTX_set0_keygen_info +#define EVP_PKEY_CTX_set_app_data v1_EVP_PKEY_CTX_set_app_data +#define EVP_PKEY_CTX_set_cb v1_EVP_PKEY_CTX_set_cb +#define EVP_PKEY_CTX_set_data v1_EVP_PKEY_CTX_set_data +#define EVP_PKEY_CTX_str2ctrl v1_EVP_PKEY_CTX_str2ctrl +#define EVP_PKEY_decrypt v1_EVP_PKEY_decrypt +#define EVP_PKEY_decrypt_init v1_EVP_PKEY_decrypt_init +#define EVP_PKEY_decrypt_old v1_EVP_PKEY_decrypt_old +#define EVP_PKEY_delete_attr v1_EVP_PKEY_delete_attr +#define EVP_PKEY_derive v1_EVP_PKEY_derive +#define EVP_PKEY_derive_init v1_EVP_PKEY_derive_init +#define EVP_PKEY_derive_set_peer v1_EVP_PKEY_derive_set_peer +#define EVP_PKEY_encrypt v1_EVP_PKEY_encrypt +#define EVP_PKEY_encrypt_init v1_EVP_PKEY_encrypt_init +#define EVP_PKEY_encrypt_old v1_EVP_PKEY_encrypt_old +#define EVP_PKEY_free v1_EVP_PKEY_free +#define EVP_PKEY_get0 v1_EVP_PKEY_get0 +#define EVP_PKEY_get0_asn1 v1_EVP_PKEY_get0_asn1 +#define EVP_PKEY_get0_DH v1_EVP_PKEY_get0_DH +#define EVP_PKEY_get0_DSA v1_EVP_PKEY_get0_DSA +#define EVP_PKEY_get0_EC_KEY v1_EVP_PKEY_get0_EC_KEY +#define EVP_PKEY_get0_engine v1_EVP_PKEY_get0_engine +#define EVP_PKEY_get0_hmac v1_EVP_PKEY_get0_hmac +#define EVP_PKEY_get0_poly1305 v1_EVP_PKEY_get0_poly1305 +#define EVP_PKEY_get0_RSA v1_EVP_PKEY_get0_RSA +#define EVP_PKEY_get0_siphash v1_EVP_PKEY_get0_siphash +#define EVP_PKEY_get1_DH v1_EVP_PKEY_get1_DH +#define EVP_PKEY_get1_DSA v1_EVP_PKEY_get1_DSA +#define EVP_PKEY_get1_EC_KEY v1_EVP_PKEY_get1_EC_KEY +#define EVP_PKEY_get1_RSA v1_EVP_PKEY_get1_RSA +#define EVP_PKEY_get1_tls_encodedpoint v1_EVP_PKEY_get1_tls_encodedpoint +#define EVP_PKEY_get_attr v1_EVP_PKEY_get_attr +#define EVP_PKEY_get_attr_by_NID v1_EVP_PKEY_get_attr_by_NID +#define EVP_PKEY_get_attr_by_OBJ v1_EVP_PKEY_get_attr_by_OBJ +#define EVP_PKEY_get_attr_count v1_EVP_PKEY_get_attr_count +#define EVP_PKEY_get_default_digest_nid v1_EVP_PKEY_get_default_digest_nid +#define EVP_PKEY_get_raw_private_key v1_EVP_PKEY_get_raw_private_key +#define EVP_PKEY_get_raw_public_key v1_EVP_PKEY_get_raw_public_key +#define EVP_PKEY_id v1_EVP_PKEY_id +#define EVP_PKEY_keygen v1_EVP_PKEY_keygen +#define EVP_PKEY_keygen_init v1_EVP_PKEY_keygen_init +#define EVP_PKEY_meth_add0 v1_EVP_PKEY_meth_add0 +#define EVP_PKEY_meth_copy v1_EVP_PKEY_meth_copy +#define EVP_PKEY_meth_find v1_EVP_PKEY_meth_find +#define EVP_PKEY_meth_free v1_EVP_PKEY_meth_free +#define EVP_PKEY_meth_get0 v1_EVP_PKEY_meth_get0 +#define EVP_PKEY_meth_get0_info v1_EVP_PKEY_meth_get0_info +#define EVP_PKEY_meth_get_check v1_EVP_PKEY_meth_get_check +#define EVP_PKEY_meth_get_cleanup v1_EVP_PKEY_meth_get_cleanup +#define EVP_PKEY_meth_get_copy v1_EVP_PKEY_meth_get_copy +#define EVP_PKEY_meth_get_count v1_EVP_PKEY_meth_get_count +#define EVP_PKEY_meth_get_ctrl v1_EVP_PKEY_meth_get_ctrl +#define EVP_PKEY_meth_get_decrypt v1_EVP_PKEY_meth_get_decrypt +#define EVP_PKEY_meth_get_derive v1_EVP_PKEY_meth_get_derive +#define EVP_PKEY_meth_get_digest_custom v1_EVP_PKEY_meth_get_digest_custom +#define EVP_PKEY_meth_get_digestsign v1_EVP_PKEY_meth_get_digestsign +#define EVP_PKEY_meth_get_digestverify v1_EVP_PKEY_meth_get_digestverify +#define EVP_PKEY_meth_get_encrypt v1_EVP_PKEY_meth_get_encrypt +#define EVP_PKEY_meth_get_init v1_EVP_PKEY_meth_get_init +#define EVP_PKEY_meth_get_keygen v1_EVP_PKEY_meth_get_keygen +#define EVP_PKEY_meth_get_param_check v1_EVP_PKEY_meth_get_param_check +#define EVP_PKEY_meth_get_paramgen v1_EVP_PKEY_meth_get_paramgen +#define EVP_PKEY_meth_get_public_check v1_EVP_PKEY_meth_get_public_check +#define EVP_PKEY_meth_get_sign v1_EVP_PKEY_meth_get_sign +#define EVP_PKEY_meth_get_signctx v1_EVP_PKEY_meth_get_signctx +#define EVP_PKEY_meth_get_verify v1_EVP_PKEY_meth_get_verify +#define EVP_PKEY_meth_get_verifyctx v1_EVP_PKEY_meth_get_verifyctx +#define EVP_PKEY_meth_get_verify_recover v1_EVP_PKEY_meth_get_verify_recover +#define EVP_PKEY_meth_new v1_EVP_PKEY_meth_new +#define EVP_PKEY_meth_remove v1_EVP_PKEY_meth_remove +#define EVP_PKEY_meth_set_check v1_EVP_PKEY_meth_set_check +#define EVP_PKEY_meth_set_cleanup v1_EVP_PKEY_meth_set_cleanup +#define EVP_PKEY_meth_set_copy v1_EVP_PKEY_meth_set_copy +#define EVP_PKEY_meth_set_ctrl v1_EVP_PKEY_meth_set_ctrl +#define EVP_PKEY_meth_set_decrypt v1_EVP_PKEY_meth_set_decrypt +#define EVP_PKEY_meth_set_derive v1_EVP_PKEY_meth_set_derive +#define EVP_PKEY_meth_set_digest_custom v1_EVP_PKEY_meth_set_digest_custom +#define EVP_PKEY_meth_set_digestsign v1_EVP_PKEY_meth_set_digestsign +#define EVP_PKEY_meth_set_digestverify v1_EVP_PKEY_meth_set_digestverify +#define EVP_PKEY_meth_set_encrypt v1_EVP_PKEY_meth_set_encrypt +#define EVP_PKEY_meth_set_init v1_EVP_PKEY_meth_set_init +#define EVP_PKEY_meth_set_keygen v1_EVP_PKEY_meth_set_keygen +#define EVP_PKEY_meth_set_param_check v1_EVP_PKEY_meth_set_param_check +#define EVP_PKEY_meth_set_paramgen v1_EVP_PKEY_meth_set_paramgen +#define EVP_PKEY_meth_set_public_check v1_EVP_PKEY_meth_set_public_check +#define EVP_PKEY_meth_set_sign v1_EVP_PKEY_meth_set_sign +#define EVP_PKEY_meth_set_signctx v1_EVP_PKEY_meth_set_signctx +#define EVP_PKEY_meth_set_verify v1_EVP_PKEY_meth_set_verify +#define EVP_PKEY_meth_set_verifyctx v1_EVP_PKEY_meth_set_verifyctx +#define EVP_PKEY_meth_set_verify_recover v1_EVP_PKEY_meth_set_verify_recover +#define EVP_PKEY_missing_parameters v1_EVP_PKEY_missing_parameters +#define EVP_PKEY_new v1_EVP_PKEY_new +#define EVP_PKEY_new_CMAC_key v1_EVP_PKEY_new_CMAC_key +#define EVP_PKEY_new_mac_key v1_EVP_PKEY_new_mac_key +#define EVP_PKEY_new_raw_private_key v1_EVP_PKEY_new_raw_private_key +#define EVP_PKEY_new_raw_public_key v1_EVP_PKEY_new_raw_public_key +#define EVP_PKEY_param_check v1_EVP_PKEY_param_check +#define EVP_PKEY_paramgen v1_EVP_PKEY_paramgen +#define EVP_PKEY_paramgen_init v1_EVP_PKEY_paramgen_init +#define EVP_PKEY_print_params v1_EVP_PKEY_print_params +#define EVP_PKEY_print_private v1_EVP_PKEY_print_private +#define EVP_PKEY_print_public v1_EVP_PKEY_print_public +#define EVP_PKEY_public_check v1_EVP_PKEY_public_check +#define EVP_PKEY_save_parameters v1_EVP_PKEY_save_parameters +#define EVP_PKEY_security_bits v1_EVP_PKEY_security_bits +#define EVP_PKEY_set1_DH v1_EVP_PKEY_set1_DH +#define EVP_PKEY_set1_DSA v1_EVP_PKEY_set1_DSA +#define EVP_PKEY_set1_EC_KEY v1_EVP_PKEY_set1_EC_KEY +#define EVP_PKEY_set1_engine v1_EVP_PKEY_set1_engine +#define EVP_PKEY_set1_RSA v1_EVP_PKEY_set1_RSA +#define EVP_PKEY_set1_tls_encodedpoint v1_EVP_PKEY_set1_tls_encodedpoint +#define EVP_PKEY_set_alias_type v1_EVP_PKEY_set_alias_type +#define evp_pkey_set_cb_translate v1_evp_pkey_set_cb_translate +#define EVP_PKEY_set_type v1_EVP_PKEY_set_type +#define EVP_PKEY_set_type_str v1_EVP_PKEY_set_type_str +#define EVP_PKEY_sign v1_EVP_PKEY_sign +#define EVP_PKEY_sign_init v1_EVP_PKEY_sign_init +#define EVP_PKEY_size v1_EVP_PKEY_size +#define EVP_PKEY_type v1_EVP_PKEY_type +#define EVP_PKEY_up_ref v1_EVP_PKEY_up_ref +#define EVP_PKEY_verify v1_EVP_PKEY_verify +#define EVP_PKEY_verify_init v1_EVP_PKEY_verify_init +#define EVP_PKEY_verify_recover v1_EVP_PKEY_verify_recover +#define EVP_PKEY_verify_recover_init v1_EVP_PKEY_verify_recover_init +#define EVP_rc2_40_cbc v1_EVP_rc2_40_cbc +#define EVP_rc2_64_cbc v1_EVP_rc2_64_cbc +#define EVP_rc2_cbc v1_EVP_rc2_cbc +//#define EVP_rc2_cfb v1_EVP_rc2_cfb +#define EVP_rc2_cfb64 v1_EVP_rc2_cfb64 +#define EVP_rc2_ecb v1_EVP_rc2_ecb +#define EVP_rc2_ofb v1_EVP_rc2_ofb +#define EVP_rc4 v1_EVP_rc4 +#define EVP_rc4_40 v1_EVP_rc4_40 +#define EVP_rc4_hmac_md5 v1_EVP_rc4_hmac_md5 +#define EVP_read_pw_string v1_EVP_read_pw_string +#define EVP_read_pw_string_min v1_EVP_read_pw_string_min +#define EVP_ripemd160 v1_EVP_ripemd160 +#define EVP_SealFinal v1_EVP_SealFinal +#define EVP_SealInit v1_EVP_SealInit +#define EVP_seed_cbc v1_EVP_seed_cbc +#define EVP_seed_cfb128 v1_EVP_seed_cfb128 +#define EVP_seed_ecb v1_EVP_seed_ecb +#define EVP_seed_ofb v1_EVP_seed_ofb +#define EVP_set_pw_prompt v1_EVP_set_pw_prompt +#define EVP_sha1 v1_EVP_sha1 +#define EVP_sha224 v1_EVP_sha224 +#define EVP_sha256 v1_EVP_sha256 +#define EVP_sha3_224 v1_EVP_sha3_224 +#define EVP_sha3_256 v1_EVP_sha3_256 +#define EVP_sha3_384 v1_EVP_sha3_384 +#define EVP_sha3_512 v1_EVP_sha3_512 +#define EVP_sha384 v1_EVP_sha384 +#define EVP_sha512 v1_EVP_sha512 +#define EVP_sha512_224 v1_EVP_sha512_224 +#define EVP_sha512_256 v1_EVP_sha512_256 +#define EVP_shake128 v1_EVP_shake128 +#define EVP_shake256 v1_EVP_shake256 +#define EVP_SignFinal v1_EVP_SignFinal +#define EVP_sm3 v1_EVP_sm3 +#define EVP_sm4_cbc v1_EVP_sm4_cbc +#define EVP_sm4_cfb128 v1_EVP_sm4_cfb128 +#define EVP_sm4_ctr v1_EVP_sm4_ctr +#define EVP_sm4_ecb v1_EVP_sm4_ecb +#define EVP_sm4_ofb v1_EVP_sm4_ofb +#define EVP_VerifyFinal v1_EVP_VerifyFinal +#define EVP_whirlpool v1_EVP_whirlpool +#define EXTENDED_KEY_USAGE_free v1_EXTENDED_KEY_USAGE_free +#define EXTENDED_KEY_USAGE_it v1_EXTENDED_KEY_USAGE_it +#define EXTENDED_KEY_USAGE_new v1_EXTENDED_KEY_USAGE_new +#define extension_is_relevant v1_extension_is_relevant +#define fcrypt_body v1_fcrypt_body +#define FIPS_mode v1_FIPS_mode +#define FIPS_mode_set v1_FIPS_mode_set +#define gcm_ghash_4bit v1_gcm_ghash_4bit +#define gcm_ghash_avx v1_gcm_ghash_avx +#define gcm_ghash_clmul v1_gcm_ghash_clmul +#define gcm_gmult_4bit v1_gcm_gmult_4bit +#define gcm_gmult_avx v1_gcm_gmult_avx +#define gcm_gmult_clmul v1_gcm_gmult_clmul +#define gcm_init_avx v1_gcm_init_avx +#define gcm_init_clmul v1_gcm_init_clmul +#define GENERAL_NAME_cmp v1_GENERAL_NAME_cmp +#define GENERAL_NAME_dup v1_GENERAL_NAME_dup +#define GENERAL_NAME_free v1_GENERAL_NAME_free +#define GENERAL_NAME_get0_otherName v1_GENERAL_NAME_get0_otherName +#define GENERAL_NAME_get0_value v1_GENERAL_NAME_get0_value +#define GENERAL_NAME_it v1_GENERAL_NAME_it +#define GENERAL_NAME_new v1_GENERAL_NAME_new +#define GENERAL_NAME_print v1_GENERAL_NAME_print +#define GENERAL_NAME_set0_othername v1_GENERAL_NAME_set0_othername +#define GENERAL_NAME_set0_value v1_GENERAL_NAME_set0_value +#define GENERAL_NAMES_free v1_GENERAL_NAMES_free +#define GENERAL_NAMES_it v1_GENERAL_NAMES_it +#define GENERAL_NAMES_new v1_GENERAL_NAMES_new +#define GENERAL_SUBTREE_free v1_GENERAL_SUBTREE_free +#define GENERAL_SUBTREE_it v1_GENERAL_SUBTREE_it +#define GENERAL_SUBTREE_new v1_GENERAL_SUBTREE_new +#define get_ca_names v1_get_ca_names +#define gf_add v1_gf_add +#define gf_deserialize v1_gf_deserialize +#define gf_eq v1_gf_eq +#define gf_hibit v1_gf_hibit +#define gf_isr v1_gf_isr +#define gf_lobit v1_gf_lobit +#define gf_mul v1_gf_mul +#define gf_mulw_unsigned v1_gf_mulw_unsigned +#define gf_serialize v1_gf_serialize +#define gf_sqr v1_gf_sqr +#define gf_strong_reduce v1_gf_strong_reduce +#define gf_sub v1_gf_sub +#define global_engine_lock v1_global_engine_lock +#define GOST_KX_MESSAGE_free v1_GOST_KX_MESSAGE_free +#define GOST_KX_MESSAGE_it v1_GOST_KX_MESSAGE_it +#define GOST_KX_MESSAGE_new v1_GOST_KX_MESSAGE_new +#define hkdf_pkey_meth v1_hkdf_pkey_meth +//#define HMAC v1_HMAC +#define hmac_asn1_meth v1_hmac_asn1_meth +#define HMAC_CTX_copy v1_HMAC_CTX_copy +#define HMAC_CTX_free v1_HMAC_CTX_free +#define HMAC_CTX_get_md v1_HMAC_CTX_get_md +#define HMAC_CTX_new v1_HMAC_CTX_new +#define HMAC_CTX_reset v1_HMAC_CTX_reset +#define HMAC_CTX_set_flags v1_HMAC_CTX_set_flags +#define HMAC_Final v1_HMAC_Final +#define HMAC_Init v1_HMAC_Init +#define HMAC_Init_ex v1_HMAC_Init_ex +#define hmac_pkey_meth v1_hmac_pkey_meth +#define HMAC_size v1_HMAC_size +#define HMAC_Update v1_HMAC_Update +#define hrrrandom v1_hrrrandom +#define i2a_ACCESS_DESCRIPTION v1_i2a_ACCESS_DESCRIPTION +#define i2a_ASN1_ENUMERATED v1_i2a_ASN1_ENUMERATED +#define i2a_ASN1_INTEGER v1_i2a_ASN1_INTEGER +#define i2a_ASN1_OBJECT v1_i2a_ASN1_OBJECT +#define i2a_ASN1_STRING v1_i2a_ASN1_STRING +#define i2b_PrivateKey_bio v1_i2b_PrivateKey_bio +#define i2b_PublicKey_bio v1_i2b_PublicKey_bio +#define i2b_PVK_bio v1_i2b_PVK_bio +#define i2c_ASN1_BIT_STRING v1_i2c_ASN1_BIT_STRING +#define i2c_ASN1_INTEGER v1_i2c_ASN1_INTEGER +#define i2c_uint64_int v1_i2c_uint64_int +#define i2d_ACCESS_DESCRIPTION v1_i2d_ACCESS_DESCRIPTION +#define i2d_ADMISSIONS v1_i2d_ADMISSIONS +#define i2d_ADMISSION_SYNTAX v1_i2d_ADMISSION_SYNTAX +#define i2d_ASIdentifierChoice v1_i2d_ASIdentifierChoice +#define i2d_ASIdentifiers v1_i2d_ASIdentifiers +#define i2d_ASIdOrRange v1_i2d_ASIdOrRange +#define i2d_ASN1_bio_stream v1_i2d_ASN1_bio_stream +#define i2d_ASN1_BIT_STRING v1_i2d_ASN1_BIT_STRING +#define i2d_ASN1_BMPSTRING v1_i2d_ASN1_BMPSTRING +#define i2d_ASN1_ENUMERATED v1_i2d_ASN1_ENUMERATED +#define i2d_ASN1_GENERALIZEDTIME v1_i2d_ASN1_GENERALIZEDTIME +#define i2d_ASN1_GENERALSTRING v1_i2d_ASN1_GENERALSTRING +#define i2d_ASN1_IA5STRING v1_i2d_ASN1_IA5STRING +#define i2d_ASN1_INTEGER v1_i2d_ASN1_INTEGER +#define i2d_ASN1_NULL v1_i2d_ASN1_NULL +#define i2d_ASN1_OBJECT v1_i2d_ASN1_OBJECT +#define i2d_ASN1_OCTET_STRING v1_i2d_ASN1_OCTET_STRING +#define i2d_ASN1_PRINTABLE v1_i2d_ASN1_PRINTABLE +#define i2d_ASN1_PRINTABLESTRING v1_i2d_ASN1_PRINTABLESTRING +#define i2d_ASN1_SEQUENCE_ANY v1_i2d_ASN1_SEQUENCE_ANY +#define i2d_ASN1_SET_ANY v1_i2d_ASN1_SET_ANY +#define i2d_ASN1_T61STRING v1_i2d_ASN1_T61STRING +#define i2d_ASN1_TIME v1_i2d_ASN1_TIME +#define i2d_ASN1_TYPE v1_i2d_ASN1_TYPE +#define i2d_ASN1_UNIVERSALSTRING v1_i2d_ASN1_UNIVERSALSTRING +#define i2d_ASN1_UTCTIME v1_i2d_ASN1_UTCTIME +#define i2d_ASN1_UTF8STRING v1_i2d_ASN1_UTF8STRING +#define i2d_ASN1_VISIBLESTRING v1_i2d_ASN1_VISIBLESTRING +#define i2d_ASRange v1_i2d_ASRange +#define i2d_AUTHORITY_INFO_ACCESS v1_i2d_AUTHORITY_INFO_ACCESS +#define i2d_AUTHORITY_KEYID v1_i2d_AUTHORITY_KEYID +#define i2d_BASIC_CONSTRAINTS v1_i2d_BASIC_CONSTRAINTS +#define i2d_CERTIFICATEPOLICIES v1_i2d_CERTIFICATEPOLICIES +#define i2d_CMS_bio v1_i2d_CMS_bio +#define i2d_CMS_bio_stream v1_i2d_CMS_bio_stream +#define i2d_CMS_ContentInfo v1_i2d_CMS_ContentInfo +#define i2d_CMS_ReceiptRequest v1_i2d_CMS_ReceiptRequest +#define i2d_CRL_DIST_POINTS v1_i2d_CRL_DIST_POINTS +#define i2d_DHparams v1_i2d_DHparams +#define i2d_DHxparams v1_i2d_DHxparams +#define i2d_DIRECTORYSTRING v1_i2d_DIRECTORYSTRING +#define i2d_DISPLAYTEXT v1_i2d_DISPLAYTEXT +#define i2d_DIST_POINT v1_i2d_DIST_POINT +#define i2d_DIST_POINT_NAME v1_i2d_DIST_POINT_NAME +#define i2d_DSAparams v1_i2d_DSAparams +#define i2d_DSAPrivateKey v1_i2d_DSAPrivateKey +#define i2d_DSAPrivateKey_bio v1_i2d_DSAPrivateKey_bio +#define i2d_DSAPrivateKey_fp v1_i2d_DSAPrivateKey_fp +#define i2d_DSA_PUBKEY v1_i2d_DSA_PUBKEY +#define i2d_DSA_PUBKEY_bio v1_i2d_DSA_PUBKEY_bio +#define i2d_DSA_PUBKEY_fp v1_i2d_DSA_PUBKEY_fp +#define i2d_DSAPublicKey v1_i2d_DSAPublicKey +#define i2d_DSA_SIG v1_i2d_DSA_SIG +#define i2d_ECDSA_SIG v1_i2d_ECDSA_SIG +#define i2d_ECParameters v1_i2d_ECParameters +#define i2d_ECPKParameters v1_i2d_ECPKParameters +#define i2d_ECPKPARAMETERS v1_i2d_ECPKPARAMETERS +#define i2d_ECPrivateKey v1_i2d_ECPrivateKey +#define i2d_EC_PRIVATEKEY v1_i2d_EC_PRIVATEKEY +#define i2d_ECPrivateKey_bio v1_i2d_ECPrivateKey_bio +#define i2d_ECPrivateKey_fp v1_i2d_ECPrivateKey_fp +#define i2d_EC_PUBKEY v1_i2d_EC_PUBKEY +#define i2d_EC_PUBKEY_bio v1_i2d_EC_PUBKEY_bio +#define i2d_EC_PUBKEY_fp v1_i2d_EC_PUBKEY_fp +#define i2d_EDIPARTYNAME v1_i2d_EDIPARTYNAME +#define i2d_ESS_CERT_ID v1_i2d_ESS_CERT_ID +#define i2d_ESS_CERT_ID_V2 v1_i2d_ESS_CERT_ID_V2 +#define i2d_ESS_ISSUER_SERIAL v1_i2d_ESS_ISSUER_SERIAL +#define i2d_ESS_SIGNING_CERT v1_i2d_ESS_SIGNING_CERT +#define i2d_ESS_SIGNING_CERT_V2 v1_i2d_ESS_SIGNING_CERT_V2 +#define i2d_EXTENDED_KEY_USAGE v1_i2d_EXTENDED_KEY_USAGE +#define i2d_GENERAL_NAME v1_i2d_GENERAL_NAME +#define i2d_GENERAL_NAMES v1_i2d_GENERAL_NAMES +#define i2d_GOST_KX_MESSAGE v1_i2d_GOST_KX_MESSAGE +#define i2d_int_dhx v1_i2d_int_dhx +#define i2d_IPAddressChoice v1_i2d_IPAddressChoice +#define i2d_IPAddressFamily v1_i2d_IPAddressFamily +#define i2d_IPAddressOrRange v1_i2d_IPAddressOrRange +#define i2d_IPAddressRange v1_i2d_IPAddressRange +#define i2d_ISSUING_DIST_POINT v1_i2d_ISSUING_DIST_POINT +#define i2d_NAMING_AUTHORITY v1_i2d_NAMING_AUTHORITY +#define i2d_NETSCAPE_CERT_SEQUENCE v1_i2d_NETSCAPE_CERT_SEQUENCE +#define i2d_NETSCAPE_ENCRYPTED_PKEY v1_i2d_NETSCAPE_ENCRYPTED_PKEY +#define i2d_NETSCAPE_PKEY v1_i2d_NETSCAPE_PKEY +#define i2d_NETSCAPE_SPKAC v1_i2d_NETSCAPE_SPKAC +#define i2d_NETSCAPE_SPKI v1_i2d_NETSCAPE_SPKI +#define i2d_NOTICEREF v1_i2d_NOTICEREF +#define i2d_OCSP_BASICRESP v1_i2d_OCSP_BASICRESP +#define i2d_OCSP_CERTID v1_i2d_OCSP_CERTID +#define i2d_OCSP_CERTSTATUS v1_i2d_OCSP_CERTSTATUS +#define i2d_OCSP_CRLID v1_i2d_OCSP_CRLID +#define i2d_OCSP_ONEREQ v1_i2d_OCSP_ONEREQ +#define i2d_OCSP_REQINFO v1_i2d_OCSP_REQINFO +#define i2d_OCSP_REQUEST v1_i2d_OCSP_REQUEST +#define i2d_OCSP_RESPBYTES v1_i2d_OCSP_RESPBYTES +#define i2d_OCSP_RESPDATA v1_i2d_OCSP_RESPDATA +#define i2d_OCSP_RESPID v1_i2d_OCSP_RESPID +#define i2d_OCSP_RESPONSE v1_i2d_OCSP_RESPONSE +#define i2d_OCSP_REVOKEDINFO v1_i2d_OCSP_REVOKEDINFO +#define i2d_OCSP_SERVICELOC v1_i2d_OCSP_SERVICELOC +#define i2d_OCSP_SIGNATURE v1_i2d_OCSP_SIGNATURE +#define i2d_OCSP_SINGLERESP v1_i2d_OCSP_SINGLERESP +#define i2d_OTHERNAME v1_i2d_OTHERNAME +#define i2d_PBE2PARAM v1_i2d_PBE2PARAM +#define i2d_PBEPARAM v1_i2d_PBEPARAM +#define i2d_PBKDF2PARAM v1_i2d_PBKDF2PARAM +#define i2d_PKCS12 v1_i2d_PKCS12 +#define i2d_PKCS12_BAGS v1_i2d_PKCS12_BAGS +#define i2d_PKCS12_bio v1_i2d_PKCS12_bio +#define i2d_PKCS12_fp v1_i2d_PKCS12_fp +#define i2d_PKCS12_MAC_DATA v1_i2d_PKCS12_MAC_DATA +#define i2d_PKCS12_SAFEBAG v1_i2d_PKCS12_SAFEBAG +#define i2d_PKCS7 v1_i2d_PKCS7 +#define i2d_PKCS7_bio v1_i2d_PKCS7_bio +#define i2d_PKCS7_bio_stream v1_i2d_PKCS7_bio_stream +#define i2d_PKCS7_DIGEST v1_i2d_PKCS7_DIGEST +#define i2d_PKCS7_ENC_CONTENT v1_i2d_PKCS7_ENC_CONTENT +#define i2d_PKCS7_ENCRYPT v1_i2d_PKCS7_ENCRYPT +#define i2d_PKCS7_ENVELOPE v1_i2d_PKCS7_ENVELOPE +#define i2d_PKCS7_fp v1_i2d_PKCS7_fp +#define i2d_PKCS7_ISSUER_AND_SERIAL v1_i2d_PKCS7_ISSUER_AND_SERIAL +#define i2d_PKCS7_NDEF v1_i2d_PKCS7_NDEF +#define i2d_PKCS7_RECIP_INFO v1_i2d_PKCS7_RECIP_INFO +#define i2d_PKCS7_SIGNED v1_i2d_PKCS7_SIGNED +#define i2d_PKCS7_SIGN_ENVELOPE v1_i2d_PKCS7_SIGN_ENVELOPE +#define i2d_PKCS7_SIGNER_INFO v1_i2d_PKCS7_SIGNER_INFO +#define i2d_PKCS8_bio v1_i2d_PKCS8_bio +#define i2d_PKCS8_fp v1_i2d_PKCS8_fp +#define i2d_PKCS8PrivateKey_bio v1_i2d_PKCS8PrivateKey_bio +#define i2d_PKCS8PrivateKey_fp v1_i2d_PKCS8PrivateKey_fp +#define i2d_PKCS8PrivateKeyInfo_bio v1_i2d_PKCS8PrivateKeyInfo_bio +#define i2d_PKCS8PrivateKeyInfo_fp v1_i2d_PKCS8PrivateKeyInfo_fp +#define i2d_PKCS8PrivateKey_nid_bio v1_i2d_PKCS8PrivateKey_nid_bio +#define i2d_PKCS8PrivateKey_nid_fp v1_i2d_PKCS8PrivateKey_nid_fp +#define i2d_PKCS8_PRIV_KEY_INFO v1_i2d_PKCS8_PRIV_KEY_INFO +#define i2d_PKCS8_PRIV_KEY_INFO_bio v1_i2d_PKCS8_PRIV_KEY_INFO_bio +#define i2d_PKCS8_PRIV_KEY_INFO_fp v1_i2d_PKCS8_PRIV_KEY_INFO_fp +#define i2d_PKEY_USAGE_PERIOD v1_i2d_PKEY_USAGE_PERIOD +#define i2d_POLICYINFO v1_i2d_POLICYINFO +#define i2d_POLICYQUALINFO v1_i2d_POLICYQUALINFO +#define i2d_PrivateKey v1_i2d_PrivateKey +#define i2d_PrivateKey_bio v1_i2d_PrivateKey_bio +#define i2d_PrivateKey_fp v1_i2d_PrivateKey_fp +#define i2d_PROFESSION_INFO v1_i2d_PROFESSION_INFO +#define i2d_PROXY_CERT_INFO_EXTENSION v1_i2d_PROXY_CERT_INFO_EXTENSION +#define i2d_PROXY_POLICY v1_i2d_PROXY_POLICY +#define i2d_PUBKEY v1_i2d_PUBKEY +#define i2d_PUBKEY_bio v1_i2d_PUBKEY_bio +#define i2d_PUBKEY_fp v1_i2d_PUBKEY_fp +#define i2d_PublicKey v1_i2d_PublicKey +#define i2d_re_X509_CRL_tbs v1_i2d_re_X509_CRL_tbs +#define i2d_re_X509_REQ_tbs v1_i2d_re_X509_REQ_tbs +#define i2d_re_X509_tbs v1_i2d_re_X509_tbs +#define i2d_RSA_OAEP_PARAMS v1_i2d_RSA_OAEP_PARAMS +#define i2d_RSAPrivateKey v1_i2d_RSAPrivateKey +#define i2d_RSAPrivateKey_bio v1_i2d_RSAPrivateKey_bio +#define i2d_RSAPrivateKey_fp v1_i2d_RSAPrivateKey_fp +#define i2d_RSA_PSS_PARAMS v1_i2d_RSA_PSS_PARAMS +#define i2d_RSA_PUBKEY v1_i2d_RSA_PUBKEY +#define i2d_RSA_PUBKEY_bio v1_i2d_RSA_PUBKEY_bio +#define i2d_RSA_PUBKEY_fp v1_i2d_RSA_PUBKEY_fp +#define i2d_RSAPublicKey v1_i2d_RSAPublicKey +#define i2d_RSAPublicKey_bio v1_i2d_RSAPublicKey_bio +#define i2d_RSAPublicKey_fp v1_i2d_RSAPublicKey_fp +#define i2d_SCRYPT_PARAMS v1_i2d_SCRYPT_PARAMS +#define i2d_SCT_LIST v1_i2d_SCT_LIST +#define i2d_SM2_Ciphertext v1_i2d_SM2_Ciphertext +#define i2d_SSL_SESSION v1_i2d_SSL_SESSION +#define i2d_SXNET v1_i2d_SXNET +#define i2d_SXNETID v1_i2d_SXNETID +#define i2d_TS_ACCURACY v1_i2d_TS_ACCURACY +#define i2d_TS_MSG_IMPRINT v1_i2d_TS_MSG_IMPRINT +#define i2d_TS_MSG_IMPRINT_bio v1_i2d_TS_MSG_IMPRINT_bio +#define i2d_TS_MSG_IMPRINT_fp v1_i2d_TS_MSG_IMPRINT_fp +#define i2d_TS_REQ v1_i2d_TS_REQ +#define i2d_TS_REQ_bio v1_i2d_TS_REQ_bio +#define i2d_TS_REQ_fp v1_i2d_TS_REQ_fp +#define i2d_TS_RESP v1_i2d_TS_RESP +#define i2d_TS_RESP_bio v1_i2d_TS_RESP_bio +#define i2d_TS_RESP_fp v1_i2d_TS_RESP_fp +#define i2d_TS_STATUS_INFO v1_i2d_TS_STATUS_INFO +#define i2d_TS_TST_INFO v1_i2d_TS_TST_INFO +#define i2d_TS_TST_INFO_bio v1_i2d_TS_TST_INFO_bio +#define i2d_TS_TST_INFO_fp v1_i2d_TS_TST_INFO_fp +#define i2d_USERNOTICE v1_i2d_USERNOTICE +#define i2d_X509 v1_i2d_X509 +#define i2d_X509_ALGOR v1_i2d_X509_ALGOR +#define i2d_X509_ALGORS v1_i2d_X509_ALGORS +#define i2d_X509_ATTRIBUTE v1_i2d_X509_ATTRIBUTE +#define i2d_X509_AUX v1_i2d_X509_AUX +#define i2d_X509_bio v1_i2d_X509_bio +#define i2d_X509_CERT_AUX v1_i2d_X509_CERT_AUX +#define i2d_X509_CINF v1_i2d_X509_CINF +#define i2d_X509_CRL v1_i2d_X509_CRL +#define i2d_X509_CRL_bio v1_i2d_X509_CRL_bio +#define i2d_X509_CRL_fp v1_i2d_X509_CRL_fp +#define i2d_X509_CRL_INFO v1_i2d_X509_CRL_INFO +#define i2d_X509_EXTENSION v1_i2d_X509_EXTENSION +#define i2d_X509_EXTENSIONS v1_i2d_X509_EXTENSIONS +#define i2d_X509_fp v1_i2d_X509_fp +#define i2d_X509_NAME v1_i2d_X509_NAME +#define i2d_X509_NAME_ENTRY v1_i2d_X509_NAME_ENTRY +#define i2d_X509_PUBKEY v1_i2d_X509_PUBKEY +#define i2d_X509_REQ v1_i2d_X509_REQ +#define i2d_X509_REQ_bio v1_i2d_X509_REQ_bio +#define i2d_X509_REQ_fp v1_i2d_X509_REQ_fp +#define i2d_X509_REQ_INFO v1_i2d_X509_REQ_INFO +#define i2d_X509_REVOKED v1_i2d_X509_REVOKED +#define i2d_X509_SIG v1_i2d_X509_SIG +#define i2d_X509_VAL v1_i2d_X509_VAL +#define i2o_ECPublicKey v1_i2o_ECPublicKey +#define i2o_SCT v1_i2o_SCT +#define i2o_SCT_LIST v1_i2o_SCT_LIST +#define i2o_SCT_signature v1_i2o_SCT_signature +#define i2s_ASN1_ENUMERATED v1_i2s_ASN1_ENUMERATED +#define i2s_ASN1_ENUMERATED_TABLE v1_i2s_ASN1_ENUMERATED_TABLE +#define i2s_ASN1_IA5STRING v1_i2s_ASN1_IA5STRING +#define i2s_ASN1_INTEGER v1_i2s_ASN1_INTEGER +#define i2s_ASN1_OCTET_STRING v1_i2s_ASN1_OCTET_STRING +#define i2t_ASN1_OBJECT v1_i2t_ASN1_OBJECT +#define i2v_ASN1_BIT_STRING v1_i2v_ASN1_BIT_STRING +#define i2v_GENERAL_NAME v1_i2v_GENERAL_NAME +#define i2v_GENERAL_NAMES v1_i2v_GENERAL_NAMES +#define IDEA_cbc_encrypt v1_IDEA_cbc_encrypt +#define IDEA_cfb64_encrypt v1_IDEA_cfb64_encrypt +#define IDEA_ecb_encrypt v1_IDEA_ecb_encrypt +#define IDEA_encrypt v1_IDEA_encrypt +#define IDEA_ofb64_encrypt v1_IDEA_ofb64_encrypt +#define IDEA_options v1_IDEA_options +#define IDEA_set_decrypt_key v1_IDEA_set_decrypt_key +#define IDEA_set_encrypt_key v1_IDEA_set_encrypt_key +#define INT32_it v1_INT32_it +#define INT64_it v1_INT64_it +#define int_bn_mod_inverse v1_int_bn_mod_inverse +#define int_rsa_verify v1_int_rsa_verify +#define IPAddressChoice_free v1_IPAddressChoice_free +#define IPAddressChoice_it v1_IPAddressChoice_it +#define IPAddressChoice_new v1_IPAddressChoice_new +#define IPAddressFamily_free v1_IPAddressFamily_free +#define IPAddressFamily_it v1_IPAddressFamily_it +#define IPAddressFamily_new v1_IPAddressFamily_new +#define IPAddressOrRange_free v1_IPAddressOrRange_free +#define IPAddressOrRange_it v1_IPAddressOrRange_it +#define IPAddressOrRange_new v1_IPAddressOrRange_new +#define IPAddressRange_free v1_IPAddressRange_free +#define IPAddressRange_it v1_IPAddressRange_it +#define IPAddressRange_new v1_IPAddressRange_new +#define is_partially_overlapping v1_is_partially_overlapping +#define ISSUING_DIST_POINT_free v1_ISSUING_DIST_POINT_free +#define ISSUING_DIST_POINT_it v1_ISSUING_DIST_POINT_it +#define ISSUING_DIST_POINT_new v1_ISSUING_DIST_POINT_new +#define level_add_node v1_level_add_node +#define level_find_node v1_level_find_node +#define LONG_it v1_LONG_it +#define lookup_sess_in_cache v1_lookup_sess_in_cache +#define MD4 v1_MD4 +#define md4_block_data_order v1_md4_block_data_order +#define MD4_Final v1_MD4_Final +#define MD4_Init v1_MD4_Init +#define MD4_Transform v1_MD4_Transform +#define MD4_Update v1_MD4_Update +//#define MD5 v1_MD5 +#define md5_block_asm_data_order v1_md5_block_asm_data_order +#define MD5_Final v1_MD5_Final +#define MD5_Init v1_MD5_Init +#define MD5_Transform v1_MD5_Transform +#define MD5_Update v1_MD5_Update +#define MDC2 v1_MDC2 +#define MDC2_Final v1_MDC2_Final +#define MDC2_Init v1_MDC2_Init +#define MDC2_Update v1_MDC2_Update +#define name_cmp v1_name_cmp +#define NAME_CONSTRAINTS_check v1_NAME_CONSTRAINTS_check +#define NAME_CONSTRAINTS_check_CN v1_NAME_CONSTRAINTS_check_CN +#define NAME_CONSTRAINTS_free v1_NAME_CONSTRAINTS_free +#define NAME_CONSTRAINTS_it v1_NAME_CONSTRAINTS_it +#define NAME_CONSTRAINTS_new v1_NAME_CONSTRAINTS_new +#define NAMING_AUTHORITY_free v1_NAMING_AUTHORITY_free +#define NAMING_AUTHORITY_get0_authorityId v1_NAMING_AUTHORITY_get0_authorityId +#define NAMING_AUTHORITY_get0_authorityText v1_NAMING_AUTHORITY_get0_authorityText +#define NAMING_AUTHORITY_get0_authorityURL v1_NAMING_AUTHORITY_get0_authorityURL +#define NAMING_AUTHORITY_it v1_NAMING_AUTHORITY_it +#define NAMING_AUTHORITY_new v1_NAMING_AUTHORITY_new +#define NAMING_AUTHORITY_set0_authorityId v1_NAMING_AUTHORITY_set0_authorityId +#define NAMING_AUTHORITY_set0_authorityText v1_NAMING_AUTHORITY_set0_authorityText +#define NAMING_AUTHORITY_set0_authorityURL v1_NAMING_AUTHORITY_set0_authorityURL +#define NCONF_default v1_NCONF_default +#define NCONF_dump_bio v1_NCONF_dump_bio +#define NCONF_dump_fp v1_NCONF_dump_fp +#define NCONF_free v1_NCONF_free +#define NCONF_free_data v1_NCONF_free_data +#define NCONF_get_number_e v1_NCONF_get_number_e +#define NCONF_get_section v1_NCONF_get_section +#define NCONF_get_string v1_NCONF_get_string +#define NCONF_load v1_NCONF_load +#define NCONF_load_bio v1_NCONF_load_bio +#define NCONF_load_fp v1_NCONF_load_fp +#define NCONF_new v1_NCONF_new +#define NCONF_WIN32 v1_NCONF_WIN32 +#define NETSCAPE_CERT_SEQUENCE_free v1_NETSCAPE_CERT_SEQUENCE_free +#define NETSCAPE_CERT_SEQUENCE_it v1_NETSCAPE_CERT_SEQUENCE_it +#define NETSCAPE_CERT_SEQUENCE_new v1_NETSCAPE_CERT_SEQUENCE_new +#define NETSCAPE_ENCRYPTED_PKEY_free v1_NETSCAPE_ENCRYPTED_PKEY_free +#define NETSCAPE_ENCRYPTED_PKEY_new v1_NETSCAPE_ENCRYPTED_PKEY_new +#define NETSCAPE_PKEY_free v1_NETSCAPE_PKEY_free +#define NETSCAPE_PKEY_new v1_NETSCAPE_PKEY_new +#define NETSCAPE_SPKAC_free v1_NETSCAPE_SPKAC_free +#define NETSCAPE_SPKAC_it v1_NETSCAPE_SPKAC_it +#define NETSCAPE_SPKAC_new v1_NETSCAPE_SPKAC_new +#define NETSCAPE_SPKI_b64_decode v1_NETSCAPE_SPKI_b64_decode +#define NETSCAPE_SPKI_b64_encode v1_NETSCAPE_SPKI_b64_encode +#define NETSCAPE_SPKI_free v1_NETSCAPE_SPKI_free +#define NETSCAPE_SPKI_get_pubkey v1_NETSCAPE_SPKI_get_pubkey +#define NETSCAPE_SPKI_it v1_NETSCAPE_SPKI_it +#define NETSCAPE_SPKI_new v1_NETSCAPE_SPKI_new +#define NETSCAPE_SPKI_print v1_NETSCAPE_SPKI_print +#define NETSCAPE_SPKI_set_pubkey v1_NETSCAPE_SPKI_set_pubkey +#define NETSCAPE_SPKI_sign v1_NETSCAPE_SPKI_sign +#define NETSCAPE_SPKI_verify v1_NETSCAPE_SPKI_verify +#define NOTICEREF_free v1_NOTICEREF_free +#define NOTICEREF_it v1_NOTICEREF_it +#define NOTICEREF_new v1_NOTICEREF_new +#define n_ssl3_mac v1_n_ssl3_mac +#define o2i_ECPublicKey v1_o2i_ECPublicKey +#define o2i_SCT v1_o2i_SCT +#define o2i_SCT_LIST v1_o2i_SCT_LIST +#define o2i_SCT_signature v1_o2i_SCT_signature +#define OBJ_add_object v1_OBJ_add_object +#define OBJ_add_sigid v1_OBJ_add_sigid +#define OBJ_bsearch_ v1_OBJ_bsearch_ +#define OBJ_bsearch_ex_ v1_OBJ_bsearch_ex_ +#define OBJ_bsearch_ssl_cipher_id v1_OBJ_bsearch_ssl_cipher_id +#define obj_cleanup_int v1_obj_cleanup_int +#define OBJ_cmp v1_OBJ_cmp +#define OBJ_create v1_OBJ_create +#define OBJ_create_objects v1_OBJ_create_objects +#define OBJ_dup v1_OBJ_dup +#define OBJ_find_sigid_algs v1_OBJ_find_sigid_algs +#define OBJ_find_sigid_by_algs v1_OBJ_find_sigid_by_algs +#define OBJ_get0_data v1_OBJ_get0_data +#define OBJ_length v1_OBJ_length +#define OBJ_ln2nid v1_OBJ_ln2nid +#define OBJ_NAME_add v1_OBJ_NAME_add +#define OBJ_NAME_cleanup v1_OBJ_NAME_cleanup +#define OBJ_NAME_do_all v1_OBJ_NAME_do_all +#define OBJ_NAME_do_all_sorted v1_OBJ_NAME_do_all_sorted +#define OBJ_NAME_get v1_OBJ_NAME_get +#define OBJ_NAME_init v1_OBJ_NAME_init +#define OBJ_NAME_new_index v1_OBJ_NAME_new_index +#define OBJ_NAME_remove v1_OBJ_NAME_remove +#define OBJ_new_nid v1_OBJ_new_nid +#define OBJ_nid2ln v1_OBJ_nid2ln +#define OBJ_nid2obj v1_OBJ_nid2obj +#define OBJ_nid2sn v1_OBJ_nid2sn +#define OBJ_obj2nid v1_OBJ_obj2nid +#define OBJ_obj2txt v1_OBJ_obj2txt +#define OBJ_sigid_free v1_OBJ_sigid_free +#define OBJ_sn2nid v1_OBJ_sn2nid +#define OBJ_txt2nid v1_OBJ_txt2nid +#define OBJ_txt2obj v1_OBJ_txt2obj +#define OCSP_accept_responses_new v1_OCSP_accept_responses_new +#define OCSP_archive_cutoff_new v1_OCSP_archive_cutoff_new +#define OCSP_basic_add1_cert v1_OCSP_basic_add1_cert +#define OCSP_basic_add1_nonce v1_OCSP_basic_add1_nonce +#define OCSP_basic_add1_status v1_OCSP_basic_add1_status +#define OCSP_BASICRESP_add1_ext_i2d v1_OCSP_BASICRESP_add1_ext_i2d +#define OCSP_BASICRESP_add_ext v1_OCSP_BASICRESP_add_ext +#define OCSP_BASICRESP_delete_ext v1_OCSP_BASICRESP_delete_ext +#define OCSP_BASICRESP_free v1_OCSP_BASICRESP_free +#define OCSP_BASICRESP_get1_ext_d2i v1_OCSP_BASICRESP_get1_ext_d2i +#define OCSP_BASICRESP_get_ext v1_OCSP_BASICRESP_get_ext +#define OCSP_BASICRESP_get_ext_by_critical v1_OCSP_BASICRESP_get_ext_by_critical +#define OCSP_BASICRESP_get_ext_by_NID v1_OCSP_BASICRESP_get_ext_by_NID +#define OCSP_BASICRESP_get_ext_by_OBJ v1_OCSP_BASICRESP_get_ext_by_OBJ +#define OCSP_BASICRESP_get_ext_count v1_OCSP_BASICRESP_get_ext_count +#define OCSP_BASICRESP_it v1_OCSP_BASICRESP_it +#define OCSP_BASICRESP_new v1_OCSP_BASICRESP_new +#define OCSP_basic_sign v1_OCSP_basic_sign +#define OCSP_basic_sign_ctx v1_OCSP_basic_sign_ctx +#define OCSP_basic_verify v1_OCSP_basic_verify +#define OCSP_CERTID_dup v1_OCSP_CERTID_dup +#define OCSP_CERTID_free v1_OCSP_CERTID_free +#define OCSP_CERTID_it v1_OCSP_CERTID_it +#define OCSP_cert_id_new v1_OCSP_cert_id_new +#define OCSP_CERTID_new v1_OCSP_CERTID_new +#define OCSP_CERTSTATUS_free v1_OCSP_CERTSTATUS_free +#define OCSP_CERTSTATUS_it v1_OCSP_CERTSTATUS_it +#define OCSP_CERTSTATUS_new v1_OCSP_CERTSTATUS_new +#define OCSP_cert_status_str v1_OCSP_cert_status_str +#define OCSP_cert_to_id v1_OCSP_cert_to_id +#define OCSP_check_nonce v1_OCSP_check_nonce +#define OCSP_check_validity v1_OCSP_check_validity +#define OCSP_copy_nonce v1_OCSP_copy_nonce +#define OCSP_CRLID_free v1_OCSP_CRLID_free +#define OCSP_CRLID_it v1_OCSP_CRLID_it +#define OCSP_crlID_new v1_OCSP_crlID_new +#define OCSP_CRLID_new v1_OCSP_CRLID_new +#define OCSP_crl_reason_str v1_OCSP_crl_reason_str +#define OCSP_id_cmp v1_OCSP_id_cmp +#define OCSP_id_get0_info v1_OCSP_id_get0_info +#define OCSP_id_issuer_cmp v1_OCSP_id_issuer_cmp +#define OCSP_ONEREQ_add1_ext_i2d v1_OCSP_ONEREQ_add1_ext_i2d +#define OCSP_ONEREQ_add_ext v1_OCSP_ONEREQ_add_ext +#define OCSP_ONEREQ_delete_ext v1_OCSP_ONEREQ_delete_ext +#define OCSP_ONEREQ_free v1_OCSP_ONEREQ_free +#define OCSP_onereq_get0_id v1_OCSP_onereq_get0_id +#define OCSP_ONEREQ_get1_ext_d2i v1_OCSP_ONEREQ_get1_ext_d2i +#define OCSP_ONEREQ_get_ext v1_OCSP_ONEREQ_get_ext +#define OCSP_ONEREQ_get_ext_by_critical v1_OCSP_ONEREQ_get_ext_by_critical +#define OCSP_ONEREQ_get_ext_by_NID v1_OCSP_ONEREQ_get_ext_by_NID +#define OCSP_ONEREQ_get_ext_by_OBJ v1_OCSP_ONEREQ_get_ext_by_OBJ +#define OCSP_ONEREQ_get_ext_count v1_OCSP_ONEREQ_get_ext_count +#define OCSP_ONEREQ_it v1_OCSP_ONEREQ_it +#define OCSP_ONEREQ_new v1_OCSP_ONEREQ_new +#define OCSP_parse_url v1_OCSP_parse_url +#define OCSP_REQ_CTX_add1_header v1_OCSP_REQ_CTX_add1_header +#define OCSP_REQ_CTX_free v1_OCSP_REQ_CTX_free +#define OCSP_REQ_CTX_get0_mem_bio v1_OCSP_REQ_CTX_get0_mem_bio +#define OCSP_REQ_CTX_http v1_OCSP_REQ_CTX_http +#define OCSP_REQ_CTX_i2d v1_OCSP_REQ_CTX_i2d +#define OCSP_REQ_CTX_nbio v1_OCSP_REQ_CTX_nbio +#define OCSP_REQ_CTX_nbio_d2i v1_OCSP_REQ_CTX_nbio_d2i +#define OCSP_REQ_CTX_new v1_OCSP_REQ_CTX_new +#define OCSP_REQ_CTX_set1_req v1_OCSP_REQ_CTX_set1_req +#define OCSP_REQINFO_free v1_OCSP_REQINFO_free +#define OCSP_REQINFO_it v1_OCSP_REQINFO_it +#define OCSP_REQINFO_new v1_OCSP_REQINFO_new +#define OCSP_request_add0_id v1_OCSP_request_add0_id +#define OCSP_request_add1_cert v1_OCSP_request_add1_cert +#define OCSP_REQUEST_add1_ext_i2d v1_OCSP_REQUEST_add1_ext_i2d +#define OCSP_request_add1_nonce v1_OCSP_request_add1_nonce +#define OCSP_REQUEST_add_ext v1_OCSP_REQUEST_add_ext +#define OCSP_REQUEST_delete_ext v1_OCSP_REQUEST_delete_ext +#define OCSP_REQUEST_free v1_OCSP_REQUEST_free +#define OCSP_REQUEST_get1_ext_d2i v1_OCSP_REQUEST_get1_ext_d2i +#define OCSP_REQUEST_get_ext v1_OCSP_REQUEST_get_ext +#define OCSP_REQUEST_get_ext_by_critical v1_OCSP_REQUEST_get_ext_by_critical +#define OCSP_REQUEST_get_ext_by_NID v1_OCSP_REQUEST_get_ext_by_NID +#define OCSP_REQUEST_get_ext_by_OBJ v1_OCSP_REQUEST_get_ext_by_OBJ +#define OCSP_REQUEST_get_ext_count v1_OCSP_REQUEST_get_ext_count +#define OCSP_request_is_signed v1_OCSP_request_is_signed +#define OCSP_REQUEST_it v1_OCSP_REQUEST_it +#define OCSP_REQUEST_new v1_OCSP_REQUEST_new +#define OCSP_request_onereq_count v1_OCSP_request_onereq_count +#define OCSP_request_onereq_get0 v1_OCSP_request_onereq_get0 +#define OCSP_REQUEST_print v1_OCSP_REQUEST_print +#define OCSP_request_set1_name v1_OCSP_request_set1_name +#define OCSP_request_sign v1_OCSP_request_sign +#define OCSP_request_verify v1_OCSP_request_verify +#define OCSP_RESPBYTES_free v1_OCSP_RESPBYTES_free +#define OCSP_RESPBYTES_it v1_OCSP_RESPBYTES_it +#define OCSP_RESPBYTES_new v1_OCSP_RESPBYTES_new +#define OCSP_resp_count v1_OCSP_resp_count +#define OCSP_RESPDATA_free v1_OCSP_RESPDATA_free +#define OCSP_RESPDATA_it v1_OCSP_RESPDATA_it +#define OCSP_RESPDATA_new v1_OCSP_RESPDATA_new +#define OCSP_resp_find v1_OCSP_resp_find +#define OCSP_resp_find_status v1_OCSP_resp_find_status +#define OCSP_resp_get0 v1_OCSP_resp_get0 +#define OCSP_resp_get0_certs v1_OCSP_resp_get0_certs +#define OCSP_resp_get0_id v1_OCSP_resp_get0_id +#define OCSP_resp_get0_produced_at v1_OCSP_resp_get0_produced_at +#define OCSP_resp_get0_respdata v1_OCSP_resp_get0_respdata +#define OCSP_resp_get0_signature v1_OCSP_resp_get0_signature +#define OCSP_resp_get0_signer v1_OCSP_resp_get0_signer +#define OCSP_resp_get0_tbs_sigalg v1_OCSP_resp_get0_tbs_sigalg +#define OCSP_resp_get1_id v1_OCSP_resp_get1_id +#define OCSP_RESPID_free v1_OCSP_RESPID_free +#define OCSP_RESPID_it v1_OCSP_RESPID_it +#define OCSP_RESPID_match v1_OCSP_RESPID_match +#define OCSP_RESPID_new v1_OCSP_RESPID_new +#define OCSP_RESPID_set_by_key v1_OCSP_RESPID_set_by_key +#define OCSP_RESPID_set_by_name v1_OCSP_RESPID_set_by_name +#define OCSP_response_create v1_OCSP_response_create +#define OCSP_RESPONSE_free v1_OCSP_RESPONSE_free +#define OCSP_response_get1_basic v1_OCSP_response_get1_basic +#define OCSP_RESPONSE_it v1_OCSP_RESPONSE_it +#define OCSP_RESPONSE_new v1_OCSP_RESPONSE_new +#define OCSP_RESPONSE_print v1_OCSP_RESPONSE_print +#define OCSP_response_status v1_OCSP_response_status +#define OCSP_response_status_str v1_OCSP_response_status_str +#define OCSP_REVOKEDINFO_free v1_OCSP_REVOKEDINFO_free +#define OCSP_REVOKEDINFO_it v1_OCSP_REVOKEDINFO_it +#define OCSP_REVOKEDINFO_new v1_OCSP_REVOKEDINFO_new +#define OCSP_sendreq_bio v1_OCSP_sendreq_bio +#define OCSP_sendreq_nbio v1_OCSP_sendreq_nbio +#define OCSP_sendreq_new v1_OCSP_sendreq_new +#define OCSP_SERVICELOC_free v1_OCSP_SERVICELOC_free +#define OCSP_SERVICELOC_it v1_OCSP_SERVICELOC_it +#define OCSP_SERVICELOC_new v1_OCSP_SERVICELOC_new +#define OCSP_set_max_response_length v1_OCSP_set_max_response_length +#define OCSP_SIGNATURE_free v1_OCSP_SIGNATURE_free +#define OCSP_SIGNATURE_it v1_OCSP_SIGNATURE_it +#define OCSP_SIGNATURE_new v1_OCSP_SIGNATURE_new +#define OCSP_single_get0_status v1_OCSP_single_get0_status +#define OCSP_SINGLERESP_add1_ext_i2d v1_OCSP_SINGLERESP_add1_ext_i2d +#define OCSP_SINGLERESP_add_ext v1_OCSP_SINGLERESP_add_ext +#define OCSP_SINGLERESP_delete_ext v1_OCSP_SINGLERESP_delete_ext +#define OCSP_SINGLERESP_free v1_OCSP_SINGLERESP_free +#define OCSP_SINGLERESP_get0_id v1_OCSP_SINGLERESP_get0_id +#define OCSP_SINGLERESP_get1_ext_d2i v1_OCSP_SINGLERESP_get1_ext_d2i +#define OCSP_SINGLERESP_get_ext v1_OCSP_SINGLERESP_get_ext +#define OCSP_SINGLERESP_get_ext_by_critical v1_OCSP_SINGLERESP_get_ext_by_critical +#define OCSP_SINGLERESP_get_ext_by_NID v1_OCSP_SINGLERESP_get_ext_by_NID +#define OCSP_SINGLERESP_get_ext_by_OBJ v1_OCSP_SINGLERESP_get_ext_by_OBJ +#define OCSP_SINGLERESP_get_ext_count v1_OCSP_SINGLERESP_get_ext_count +#define OCSP_SINGLERESP_it v1_OCSP_SINGLERESP_it +#define OCSP_SINGLERESP_new v1_OCSP_SINGLERESP_new +#define OCSP_url_svcloc_new v1_OCSP_url_svcloc_new +#define openssl_add_all_ciphers_int v1_openssl_add_all_ciphers_int +#define openssl_add_all_digests_int v1_openssl_add_all_digests_int +#define OPENSSL_asc2uni v1_OPENSSL_asc2uni +#define OPENSSL_atexit v1_OPENSSL_atexit +#define OPENSSL_atomic_add v1_OPENSSL_atomic_add +#define OPENSSL_buf2hexstr v1_OPENSSL_buf2hexstr +#define OPENSSL_cipher_name v1_OPENSSL_cipher_name +#define OPENSSL_cleanse v1_OPENSSL_cleanse +#define OPENSSL_cleanup v1_OPENSSL_cleanup +#define OPENSSL_config v1_OPENSSL_config +#define openssl_config_int v1_openssl_config_int +#define OPENSSL_cpuid_setup v1_OPENSSL_cpuid_setup +#define OPENSSL_die v1_OPENSSL_die +#define OPENSSL_DIR_end v1_OPENSSL_DIR_end +#define OPENSSL_DIR_read v1_OPENSSL_DIR_read +#define openssl_fopen v1_openssl_fopen +#define OPENSSL_fork_child v1_OPENSSL_fork_child +#define OPENSSL_fork_parent v1_OPENSSL_fork_parent +#define OPENSSL_fork_prepare v1_OPENSSL_fork_prepare +#define openssl_get_fork_id v1_openssl_get_fork_id +#define OPENSSL_gmtime v1_OPENSSL_gmtime +#define OPENSSL_gmtime_adj v1_OPENSSL_gmtime_adj +#define OPENSSL_gmtime_diff v1_OPENSSL_gmtime_diff +#define OPENSSL_hexchar2int v1_OPENSSL_hexchar2int +#define OPENSSL_hexstr2buf v1_OPENSSL_hexstr2buf +#define OPENSSL_ia32cap_P v1_OPENSSL_ia32cap_P +#define OPENSSL_ia32_cpuid v1_OPENSSL_ia32_cpuid +#define OPENSSL_ia32_rdrand_bytes v1_OPENSSL_ia32_rdrand_bytes +#define OPENSSL_ia32_rdseed_bytes v1_OPENSSL_ia32_rdseed_bytes +#define OPENSSL_init v1_OPENSSL_init +#define OPENSSL_init_crypto v1_OPENSSL_init_crypto +#define openssl_init_fork_handlers v1_openssl_init_fork_handlers +#define OPENSSL_INIT_free v1_OPENSSL_INIT_free +#define OPENSSL_INIT_new v1_OPENSSL_INIT_new +#define OPENSSL_INIT_set_config_appname v1_OPENSSL_INIT_set_config_appname +#define OPENSSL_INIT_set_config_file_flags v1_OPENSSL_INIT_set_config_file_flags +#define OPENSSL_INIT_set_config_filename v1_OPENSSL_INIT_set_config_filename +#define OPENSSL_init_ssl v1_OPENSSL_init_ssl +#define OPENSSL_instrument_bus v1_OPENSSL_instrument_bus +#define OPENSSL_instrument_bus2 v1_OPENSSL_instrument_bus2 +#define OPENSSL_isservice v1_OPENSSL_isservice +#define OPENSSL_issetugid v1_OPENSSL_issetugid +#define OPENSSL_LH_delete v1_OPENSSL_LH_delete +#define OPENSSL_LH_doall v1_OPENSSL_LH_doall +#define OPENSSL_LH_doall_arg v1_OPENSSL_LH_doall_arg +#define OPENSSL_LH_error v1_OPENSSL_LH_error +#define OPENSSL_LH_free v1_OPENSSL_LH_free +#define OPENSSL_LH_get_down_load v1_OPENSSL_LH_get_down_load +#define OPENSSL_LH_insert v1_OPENSSL_LH_insert +#define OPENSSL_LH_new v1_OPENSSL_LH_new +#define OPENSSL_LH_node_stats v1_OPENSSL_LH_node_stats +#define OPENSSL_LH_node_stats_bio v1_OPENSSL_LH_node_stats_bio +#define OPENSSL_LH_node_usage_stats v1_OPENSSL_LH_node_usage_stats +#define OPENSSL_LH_node_usage_stats_bio v1_OPENSSL_LH_node_usage_stats_bio +#define OPENSSL_LH_num_items v1_OPENSSL_LH_num_items +#define OPENSSL_LH_retrieve v1_OPENSSL_LH_retrieve +#define OPENSSL_LH_set_down_load v1_OPENSSL_LH_set_down_load +#define OPENSSL_LH_stats v1_OPENSSL_LH_stats +#define OPENSSL_LH_stats_bio v1_OPENSSL_LH_stats_bio +#define openssl_lh_strcasehash v1_openssl_lh_strcasehash +#define OPENSSL_LH_strhash v1_OPENSSL_LH_strhash +#define OPENSSL_load_builtin_modules v1_OPENSSL_load_builtin_modules +#define OPENSSL_memcmp v1_OPENSSL_memcmp +#define openssl_no_config_int v1_openssl_no_config_int +#define OPENSSL_rdtsc v1_OPENSSL_rdtsc +#define OPENSSL_showfatal v1_OPENSSL_showfatal +#define OPENSSL_sk_deep_copy v1_OPENSSL_sk_deep_copy +#define OPENSSL_sk_delete v1_OPENSSL_sk_delete +#define OPENSSL_sk_delete_ptr v1_OPENSSL_sk_delete_ptr +#define OPENSSL_sk_dup v1_OPENSSL_sk_dup +#define OPENSSL_sk_find v1_OPENSSL_sk_find +#define OPENSSL_sk_find_ex v1_OPENSSL_sk_find_ex +#define OPENSSL_sk_free v1_OPENSSL_sk_free +#define OPENSSL_sk_insert v1_OPENSSL_sk_insert +#define OPENSSL_sk_is_sorted v1_OPENSSL_sk_is_sorted +#define OPENSSL_sk_new v1_OPENSSL_sk_new +#define OPENSSL_sk_new_null v1_OPENSSL_sk_new_null +#define OPENSSL_sk_new_reserve v1_OPENSSL_sk_new_reserve +#define OPENSSL_sk_num v1_OPENSSL_sk_num +#define OPENSSL_sk_pop v1_OPENSSL_sk_pop +#define OPENSSL_sk_pop_free v1_OPENSSL_sk_pop_free +#define OPENSSL_sk_push v1_OPENSSL_sk_push +#define OPENSSL_sk_reserve v1_OPENSSL_sk_reserve +#define OPENSSL_sk_set v1_OPENSSL_sk_set +#define OPENSSL_sk_set_cmp_func v1_OPENSSL_sk_set_cmp_func +#define OPENSSL_sk_shift v1_OPENSSL_sk_shift +#define OPENSSL_sk_sort v1_OPENSSL_sk_sort +#define OPENSSL_sk_unshift v1_OPENSSL_sk_unshift +#define OPENSSL_sk_value v1_OPENSSL_sk_value +#define OPENSSL_sk_zero v1_OPENSSL_sk_zero +#define openssl_strerror_r v1_openssl_strerror_r +#define OPENSSL_strlcat v1_OPENSSL_strlcat +#define OPENSSL_strlcpy v1_OPENSSL_strlcpy +#define OPENSSL_strnlen v1_OPENSSL_strnlen +#define OPENSSL_thread_stop v1_OPENSSL_thread_stop +#define OPENSSL_uni2asc v1_OPENSSL_uni2asc +#define OPENSSL_uni2utf8 v1_OPENSSL_uni2utf8 +#define OPENSSL_utf82uni v1_OPENSSL_utf82uni +#define OpenSSL_version v1_OpenSSL_version +#define OpenSSL_version_num v1_OpenSSL_version_num +#define OPENSSL_wipe_cpu v1_OPENSSL_wipe_cpu +#define ossl_ctype_check v1_ossl_ctype_check +#define ossl_ecdh_compute_key v1_ossl_ecdh_compute_key +#define ossl_ecdsa_sign v1_ossl_ecdsa_sign +#define ossl_ecdsa_sign_setup v1_ossl_ecdsa_sign_setup +#define ossl_ecdsa_sign_sig v1_ossl_ecdsa_sign_sig +#define ossl_ecdsa_verify v1_ossl_ecdsa_verify +#define ossl_ecdsa_verify_sig v1_ossl_ecdsa_verify_sig +#define ossl_ec_key_gen v1_ossl_ec_key_gen +#define ossl_init_thread_start v1_ossl_init_thread_start +#define ossl_safe_getenv v1_ossl_safe_getenv +#define ossl_statem_accept v1_ossl_statem_accept +#define ossl_statem_app_data_allowed v1_ossl_statem_app_data_allowed +#define ossl_statem_check_finish_init v1_ossl_statem_check_finish_init +#define ossl_statem_clear v1_ossl_statem_clear +#define ossl_statem_client_construct_message v1_ossl_statem_client_construct_message +#define ossl_statem_client_max_message_size v1_ossl_statem_client_max_message_size +#define ossl_statem_client_post_process_message v1_ossl_statem_client_post_process_message +#define ossl_statem_client_post_work v1_ossl_statem_client_post_work +#define ossl_statem_client_pre_work v1_ossl_statem_client_pre_work +#define ossl_statem_client_process_message v1_ossl_statem_client_process_message +#define ossl_statem_client_read_transition v1_ossl_statem_client_read_transition +#define ossl_statem_client_write_transition v1_ossl_statem_client_write_transition +#define ossl_statem_connect v1_ossl_statem_connect +#define ossl_statem_export_allowed v1_ossl_statem_export_allowed +#define ossl_statem_export_early_allowed v1_ossl_statem_export_early_allowed +#define ossl_statem_fatal v1_ossl_statem_fatal +#define ossl_statem_get_in_handshake v1_ossl_statem_get_in_handshake +#define ossl_statem_in_error v1_ossl_statem_in_error +#define ossl_statem_server_construct_message v1_ossl_statem_server_construct_message +#define ossl_statem_server_max_message_size v1_ossl_statem_server_max_message_size +#define ossl_statem_server_post_process_message v1_ossl_statem_server_post_process_message +#define ossl_statem_server_post_work v1_ossl_statem_server_post_work +#define ossl_statem_server_pre_work v1_ossl_statem_server_pre_work +#define ossl_statem_server_process_message v1_ossl_statem_server_process_message +#define ossl_statem_server_read_transition v1_ossl_statem_server_read_transition +#define ossl_statem_server_write_transition v1_ossl_statem_server_write_transition +#define ossl_statem_set_hello_verify_done v1_ossl_statem_set_hello_verify_done +#define ossl_statem_set_in_handshake v1_ossl_statem_set_in_handshake +#define ossl_statem_set_in_init v1_ossl_statem_set_in_init +#define ossl_statem_set_renegotiate v1_ossl_statem_set_renegotiate +#define ossl_statem_skip_early_data v1_ossl_statem_skip_early_data +#define ossl_store_attach_pem_bio v1_ossl_store_attach_pem_bio +#define ossl_store_cleanup_int v1_ossl_store_cleanup_int +#define OSSL_STORE_close v1_OSSL_STORE_close +#define OSSL_STORE_ctrl v1_OSSL_STORE_ctrl +#define ossl_store_destroy_loaders_int v1_ossl_store_destroy_loaders_int +#define ossl_store_detach_pem_bio v1_ossl_store_detach_pem_bio +#define OSSL_STORE_do_all_loaders v1_OSSL_STORE_do_all_loaders +#define OSSL_STORE_eof v1_OSSL_STORE_eof +#define OSSL_STORE_error v1_OSSL_STORE_error +#define OSSL_STORE_expect v1_OSSL_STORE_expect +#define ossl_store_file_attach_pem_bio_int v1_ossl_store_file_attach_pem_bio_int +#define ossl_store_file_detach_pem_bio_int v1_ossl_store_file_detach_pem_bio_int +#define ossl_store_file_loader_init v1_ossl_store_file_loader_init +#define OSSL_STORE_find v1_OSSL_STORE_find +#define ossl_store_get0_loader_int v1_ossl_store_get0_loader_int +#define OSSL_STORE_INFO_free v1_OSSL_STORE_INFO_free +#define OSSL_STORE_INFO_get0_CERT v1_OSSL_STORE_INFO_get0_CERT +#define OSSL_STORE_INFO_get0_CRL v1_OSSL_STORE_INFO_get0_CRL +#define ossl_store_info_get0_EMBEDDED_buffer v1_ossl_store_info_get0_EMBEDDED_buffer +#define ossl_store_info_get0_EMBEDDED_pem_name v1_ossl_store_info_get0_EMBEDDED_pem_name +#define OSSL_STORE_INFO_get0_NAME v1_OSSL_STORE_INFO_get0_NAME +#define OSSL_STORE_INFO_get0_NAME_description v1_OSSL_STORE_INFO_get0_NAME_description +#define OSSL_STORE_INFO_get0_PARAMS v1_OSSL_STORE_INFO_get0_PARAMS +#define OSSL_STORE_INFO_get0_PKEY v1_OSSL_STORE_INFO_get0_PKEY +#define OSSL_STORE_INFO_get1_CERT v1_OSSL_STORE_INFO_get1_CERT +#define OSSL_STORE_INFO_get1_CRL v1_OSSL_STORE_INFO_get1_CRL +#define OSSL_STORE_INFO_get1_NAME v1_OSSL_STORE_INFO_get1_NAME +#define OSSL_STORE_INFO_get1_NAME_description v1_OSSL_STORE_INFO_get1_NAME_description +#define OSSL_STORE_INFO_get1_PARAMS v1_OSSL_STORE_INFO_get1_PARAMS +#define OSSL_STORE_INFO_get1_PKEY v1_OSSL_STORE_INFO_get1_PKEY +#define OSSL_STORE_INFO_get_type v1_OSSL_STORE_INFO_get_type +#define OSSL_STORE_INFO_new_CERT v1_OSSL_STORE_INFO_new_CERT +#define OSSL_STORE_INFO_new_CRL v1_OSSL_STORE_INFO_new_CRL +#define ossl_store_info_new_EMBEDDED v1_ossl_store_info_new_EMBEDDED +#define OSSL_STORE_INFO_new_NAME v1_OSSL_STORE_INFO_new_NAME +#define OSSL_STORE_INFO_new_PARAMS v1_OSSL_STORE_INFO_new_PARAMS +#define OSSL_STORE_INFO_new_PKEY v1_OSSL_STORE_INFO_new_PKEY +#define OSSL_STORE_INFO_set0_NAME_description v1_OSSL_STORE_INFO_set0_NAME_description +#define OSSL_STORE_INFO_type_string v1_OSSL_STORE_INFO_type_string +#define ossl_store_init_once v1_ossl_store_init_once +#define OSSL_STORE_load v1_OSSL_STORE_load +#define OSSL_STORE_LOADER_free v1_OSSL_STORE_LOADER_free +#define OSSL_STORE_LOADER_get0_engine v1_OSSL_STORE_LOADER_get0_engine +#define OSSL_STORE_LOADER_get0_scheme v1_OSSL_STORE_LOADER_get0_scheme +#define OSSL_STORE_LOADER_new v1_OSSL_STORE_LOADER_new +#define OSSL_STORE_LOADER_set_close v1_OSSL_STORE_LOADER_set_close +#define OSSL_STORE_LOADER_set_ctrl v1_OSSL_STORE_LOADER_set_ctrl +#define OSSL_STORE_LOADER_set_eof v1_OSSL_STORE_LOADER_set_eof +#define OSSL_STORE_LOADER_set_error v1_OSSL_STORE_LOADER_set_error +#define OSSL_STORE_LOADER_set_expect v1_OSSL_STORE_LOADER_set_expect +#define OSSL_STORE_LOADER_set_find v1_OSSL_STORE_LOADER_set_find +#define OSSL_STORE_LOADER_set_load v1_OSSL_STORE_LOADER_set_load +#define OSSL_STORE_LOADER_set_open v1_OSSL_STORE_LOADER_set_open +#define OSSL_STORE_open v1_OSSL_STORE_open +#define OSSL_STORE_register_loader v1_OSSL_STORE_register_loader +#define ossl_store_register_loader_int v1_ossl_store_register_loader_int +#define OSSL_STORE_SEARCH_by_alias v1_OSSL_STORE_SEARCH_by_alias +#define OSSL_STORE_SEARCH_by_issuer_serial v1_OSSL_STORE_SEARCH_by_issuer_serial +#define OSSL_STORE_SEARCH_by_key_fingerprint v1_OSSL_STORE_SEARCH_by_key_fingerprint +#define OSSL_STORE_SEARCH_by_name v1_OSSL_STORE_SEARCH_by_name +#define OSSL_STORE_SEARCH_free v1_OSSL_STORE_SEARCH_free +#define OSSL_STORE_SEARCH_get0_bytes v1_OSSL_STORE_SEARCH_get0_bytes +#define OSSL_STORE_SEARCH_get0_digest v1_OSSL_STORE_SEARCH_get0_digest +#define OSSL_STORE_SEARCH_get0_name v1_OSSL_STORE_SEARCH_get0_name +#define OSSL_STORE_SEARCH_get0_serial v1_OSSL_STORE_SEARCH_get0_serial +#define OSSL_STORE_SEARCH_get0_string v1_OSSL_STORE_SEARCH_get0_string +#define OSSL_STORE_SEARCH_get_type v1_OSSL_STORE_SEARCH_get_type +#define OSSL_STORE_supports_search v1_OSSL_STORE_supports_search +#define OSSL_STORE_unregister_loader v1_OSSL_STORE_unregister_loader +#define ossl_store_unregister_loader_int v1_ossl_store_unregister_loader_int +#define OSSL_STORE_vctrl v1_OSSL_STORE_vctrl +#define ossl_tolower v1_ossl_tolower +#define ossl_toupper v1_ossl_toupper +#define OTHERNAME_cmp v1_OTHERNAME_cmp +#define OTHERNAME_free v1_OTHERNAME_free +#define OTHERNAME_it v1_OTHERNAME_it +#define OTHERNAME_new v1_OTHERNAME_new +#define padlock_aes_block v1_padlock_aes_block +#define padlock_capability v1_padlock_capability +#define padlock_cbc_encrypt v1_padlock_cbc_encrypt +#define padlock_cfb_encrypt v1_padlock_cfb_encrypt +#define padlock_ctr32_encrypt v1_padlock_ctr32_encrypt +#define padlock_ecb_encrypt v1_padlock_ecb_encrypt +#define padlock_key_bswap v1_padlock_key_bswap +#define padlock_ofb_encrypt v1_padlock_ofb_encrypt +#define padlock_reload_key v1_padlock_reload_key +#define padlock_sha1_blocks v1_padlock_sha1_blocks +#define padlock_sha1_oneshot v1_padlock_sha1_oneshot +#define padlock_sha256_blocks v1_padlock_sha256_blocks +#define padlock_sha256_oneshot v1_padlock_sha256_oneshot +#define padlock_sha512_blocks v1_padlock_sha512_blocks +#define padlock_verify_context v1_padlock_verify_context +#define padlock_xstore v1_padlock_xstore +#define parse_ca_names v1_parse_ca_names +#define PBE2PARAM_free v1_PBE2PARAM_free +#define PBE2PARAM_it v1_PBE2PARAM_it +#define PBE2PARAM_new v1_PBE2PARAM_new +#define PBEPARAM_free v1_PBEPARAM_free +#define PBEPARAM_it v1_PBEPARAM_it +#define PBEPARAM_new v1_PBEPARAM_new +#define PBKDF2PARAM_free v1_PBKDF2PARAM_free +#define PBKDF2PARAM_it v1_PBKDF2PARAM_it +#define PBKDF2PARAM_new v1_PBKDF2PARAM_new +#define PEM_ASN1_read v1_PEM_ASN1_read +#define PEM_ASN1_read_bio v1_PEM_ASN1_read_bio +#define PEM_ASN1_write v1_PEM_ASN1_write +#define PEM_ASN1_write_bio v1_PEM_ASN1_write_bio +#define PEM_bytes_read_bio v1_PEM_bytes_read_bio +#define PEM_bytes_read_bio_secmem v1_PEM_bytes_read_bio_secmem +#define pem_check_suffix v1_pem_check_suffix +#define PEM_def_callback v1_PEM_def_callback +#define PEM_dek_info v1_PEM_dek_info +#define PEM_do_header v1_PEM_do_header +#define PEM_get_EVP_CIPHER_INFO v1_PEM_get_EVP_CIPHER_INFO +#define PEM_proc_type v1_PEM_proc_type +#define PEM_read v1_PEM_read +#define PEM_read_bio v1_PEM_read_bio +#define PEM_read_bio_CMS v1_PEM_read_bio_CMS +#define PEM_read_bio_DHparams v1_PEM_read_bio_DHparams +#define PEM_read_bio_DSAparams v1_PEM_read_bio_DSAparams +#define PEM_read_bio_DSAPrivateKey v1_PEM_read_bio_DSAPrivateKey +#define PEM_read_bio_DSA_PUBKEY v1_PEM_read_bio_DSA_PUBKEY +#define PEM_read_bio_ECPKParameters v1_PEM_read_bio_ECPKParameters +#define PEM_read_bio_ECPrivateKey v1_PEM_read_bio_ECPrivateKey +#define PEM_read_bio_EC_PUBKEY v1_PEM_read_bio_EC_PUBKEY +#define PEM_read_bio_ex v1_PEM_read_bio_ex +#define PEM_read_bio_NETSCAPE_CERT_SEQUENCE v1_PEM_read_bio_NETSCAPE_CERT_SEQUENCE +#define PEM_read_bio_Parameters v1_PEM_read_bio_Parameters +#define PEM_read_bio_PKCS7 v1_PEM_read_bio_PKCS7 +#define PEM_read_bio_PKCS8 v1_PEM_read_bio_PKCS8 +#define PEM_read_bio_PKCS8_PRIV_KEY_INFO v1_PEM_read_bio_PKCS8_PRIV_KEY_INFO +#define PEM_read_bio_PrivateKey v1_PEM_read_bio_PrivateKey +#define PEM_read_bio_PUBKEY v1_PEM_read_bio_PUBKEY +#define PEM_read_bio_RSAPrivateKey v1_PEM_read_bio_RSAPrivateKey +#define PEM_read_bio_RSA_PUBKEY v1_PEM_read_bio_RSA_PUBKEY +#define PEM_read_bio_RSAPublicKey v1_PEM_read_bio_RSAPublicKey +#define PEM_read_bio_SSL_SESSION v1_PEM_read_bio_SSL_SESSION +#define PEM_read_bio_X509 v1_PEM_read_bio_X509 +#define PEM_read_bio_X509_AUX v1_PEM_read_bio_X509_AUX +#define PEM_read_bio_X509_CRL v1_PEM_read_bio_X509_CRL +#define PEM_read_bio_X509_REQ v1_PEM_read_bio_X509_REQ +#define PEM_read_CMS v1_PEM_read_CMS +#define PEM_read_DHparams v1_PEM_read_DHparams +#define PEM_read_DSAparams v1_PEM_read_DSAparams +#define PEM_read_DSAPrivateKey v1_PEM_read_DSAPrivateKey +#define PEM_read_DSA_PUBKEY v1_PEM_read_DSA_PUBKEY +#define PEM_read_ECPKParameters v1_PEM_read_ECPKParameters +#define PEM_read_ECPrivateKey v1_PEM_read_ECPrivateKey +#define PEM_read_EC_PUBKEY v1_PEM_read_EC_PUBKEY +#define PEM_read_NETSCAPE_CERT_SEQUENCE v1_PEM_read_NETSCAPE_CERT_SEQUENCE +#define PEM_read_PKCS7 v1_PEM_read_PKCS7 +#define PEM_read_PKCS8 v1_PEM_read_PKCS8 +#define PEM_read_PKCS8_PRIV_KEY_INFO v1_PEM_read_PKCS8_PRIV_KEY_INFO +#define PEM_read_PrivateKey v1_PEM_read_PrivateKey +#define PEM_read_PUBKEY v1_PEM_read_PUBKEY +#define PEM_read_RSAPrivateKey v1_PEM_read_RSAPrivateKey +#define PEM_read_RSA_PUBKEY v1_PEM_read_RSA_PUBKEY +#define PEM_read_RSAPublicKey v1_PEM_read_RSAPublicKey +#define PEM_read_SSL_SESSION v1_PEM_read_SSL_SESSION +#define PEM_read_X509 v1_PEM_read_X509 +#define PEM_read_X509_AUX v1_PEM_read_X509_AUX +#define PEM_read_X509_CRL v1_PEM_read_X509_CRL +#define PEM_read_X509_REQ v1_PEM_read_X509_REQ +#define PEM_SignFinal v1_PEM_SignFinal +#define PEM_SignInit v1_PEM_SignInit +#define PEM_SignUpdate v1_PEM_SignUpdate +#define PEM_write v1_PEM_write +#define PEM_write_bio v1_PEM_write_bio +#define PEM_write_bio_ASN1_stream v1_PEM_write_bio_ASN1_stream +#define PEM_write_bio_CMS v1_PEM_write_bio_CMS +#define PEM_write_bio_CMS_stream v1_PEM_write_bio_CMS_stream +#define PEM_write_bio_DHparams v1_PEM_write_bio_DHparams +#define PEM_write_bio_DHxparams v1_PEM_write_bio_DHxparams +#define PEM_write_bio_DSAparams v1_PEM_write_bio_DSAparams +#define PEM_write_bio_DSAPrivateKey v1_PEM_write_bio_DSAPrivateKey +#define PEM_write_bio_DSA_PUBKEY v1_PEM_write_bio_DSA_PUBKEY +#define PEM_write_bio_ECPKParameters v1_PEM_write_bio_ECPKParameters +#define PEM_write_bio_ECPrivateKey v1_PEM_write_bio_ECPrivateKey +#define PEM_write_bio_EC_PUBKEY v1_PEM_write_bio_EC_PUBKEY +#define PEM_write_bio_NETSCAPE_CERT_SEQUENCE v1_PEM_write_bio_NETSCAPE_CERT_SEQUENCE +#define PEM_write_bio_Parameters v1_PEM_write_bio_Parameters +#define PEM_write_bio_PKCS7 v1_PEM_write_bio_PKCS7 +#define PEM_write_bio_PKCS7_stream v1_PEM_write_bio_PKCS7_stream +#define PEM_write_bio_PKCS8 v1_PEM_write_bio_PKCS8 +#define PEM_write_bio_PKCS8PrivateKey v1_PEM_write_bio_PKCS8PrivateKey +#define PEM_write_bio_PKCS8PrivateKey_nid v1_PEM_write_bio_PKCS8PrivateKey_nid +#define PEM_write_bio_PKCS8_PRIV_KEY_INFO v1_PEM_write_bio_PKCS8_PRIV_KEY_INFO +#define PEM_write_bio_PrivateKey v1_PEM_write_bio_PrivateKey +#define PEM_write_bio_PrivateKey_traditional v1_PEM_write_bio_PrivateKey_traditional +#define PEM_write_bio_PUBKEY v1_PEM_write_bio_PUBKEY +#define PEM_write_bio_RSAPrivateKey v1_PEM_write_bio_RSAPrivateKey +#define PEM_write_bio_RSA_PUBKEY v1_PEM_write_bio_RSA_PUBKEY +#define PEM_write_bio_RSAPublicKey v1_PEM_write_bio_RSAPublicKey +#define PEM_write_bio_SSL_SESSION v1_PEM_write_bio_SSL_SESSION +#define PEM_write_bio_X509 v1_PEM_write_bio_X509 +#define PEM_write_bio_X509_AUX v1_PEM_write_bio_X509_AUX +#define PEM_write_bio_X509_CRL v1_PEM_write_bio_X509_CRL +#define PEM_write_bio_X509_REQ v1_PEM_write_bio_X509_REQ +#define PEM_write_bio_X509_REQ_NEW v1_PEM_write_bio_X509_REQ_NEW +#define PEM_write_CMS v1_PEM_write_CMS +#define PEM_write_DHparams v1_PEM_write_DHparams +#define PEM_write_DHxparams v1_PEM_write_DHxparams +#define PEM_write_DSAparams v1_PEM_write_DSAparams +#define PEM_write_DSAPrivateKey v1_PEM_write_DSAPrivateKey +#define PEM_write_DSA_PUBKEY v1_PEM_write_DSA_PUBKEY +#define PEM_write_ECPKParameters v1_PEM_write_ECPKParameters +#define PEM_write_ECPrivateKey v1_PEM_write_ECPrivateKey +#define PEM_write_EC_PUBKEY v1_PEM_write_EC_PUBKEY +#define PEM_write_NETSCAPE_CERT_SEQUENCE v1_PEM_write_NETSCAPE_CERT_SEQUENCE +#define PEM_write_PKCS7 v1_PEM_write_PKCS7 +#define PEM_write_PKCS8 v1_PEM_write_PKCS8 +#define PEM_write_PKCS8PrivateKey v1_PEM_write_PKCS8PrivateKey +#define PEM_write_PKCS8PrivateKey_nid v1_PEM_write_PKCS8PrivateKey_nid +#define PEM_write_PKCS8_PRIV_KEY_INFO v1_PEM_write_PKCS8_PRIV_KEY_INFO +#define PEM_write_PrivateKey v1_PEM_write_PrivateKey +#define PEM_write_PUBKEY v1_PEM_write_PUBKEY +#define PEM_write_RSAPrivateKey v1_PEM_write_RSAPrivateKey +#define PEM_write_RSA_PUBKEY v1_PEM_write_RSA_PUBKEY +#define PEM_write_RSAPublicKey v1_PEM_write_RSAPublicKey +#define PEM_write_SSL_SESSION v1_PEM_write_SSL_SESSION +#define PEM_write_X509 v1_PEM_write_X509 +#define PEM_write_X509_AUX v1_PEM_write_X509_AUX +#define PEM_write_X509_CRL v1_PEM_write_X509_CRL +#define PEM_write_X509_REQ v1_PEM_write_X509_REQ +#define PEM_write_X509_REQ_NEW v1_PEM_write_X509_REQ_NEW +#define PEM_X509_INFO_read v1_PEM_X509_INFO_read +#define PEM_X509_INFO_read_bio v1_PEM_X509_INFO_read_bio +#define PEM_X509_INFO_write_bio v1_PEM_X509_INFO_write_bio +#define pitem_free v1_pitem_free +#define pitem_new v1_pitem_new +#define PKCS12_add_cert v1_PKCS12_add_cert +#define PKCS12_add_CSPName_asc v1_PKCS12_add_CSPName_asc +#define PKCS12_add_friendlyname_asc v1_PKCS12_add_friendlyname_asc +#define PKCS12_add_friendlyname_uni v1_PKCS12_add_friendlyname_uni +#define PKCS12_add_friendlyname_utf8 v1_PKCS12_add_friendlyname_utf8 +#define PKCS12_add_key v1_PKCS12_add_key +#define PKCS12_add_localkeyid v1_PKCS12_add_localkeyid +#define PKCS12_add_safe v1_PKCS12_add_safe +#define PKCS12_add_safes v1_PKCS12_add_safes +#define PKCS12_AUTHSAFES_it v1_PKCS12_AUTHSAFES_it +#define PKCS12_BAGS_free v1_PKCS12_BAGS_free +#define PKCS12_BAGS_it v1_PKCS12_BAGS_it +#define PKCS12_BAGS_new v1_PKCS12_BAGS_new +#define PKCS12_create v1_PKCS12_create +#define PKCS12_decrypt_skey v1_PKCS12_decrypt_skey +#define PKCS12_free v1_PKCS12_free +#define PKCS12_gen_mac v1_PKCS12_gen_mac +#define PKCS12_get0_mac v1_PKCS12_get0_mac +#define PKCS12_get_attr v1_PKCS12_get_attr +#define PKCS12_get_attr_gen v1_PKCS12_get_attr_gen +#define PKCS12_get_friendlyname v1_PKCS12_get_friendlyname +#define PKCS12_init v1_PKCS12_init +#define PKCS12_it v1_PKCS12_it +#define PKCS12_item_decrypt_d2i v1_PKCS12_item_decrypt_d2i +#define PKCS12_item_i2d_encrypt v1_PKCS12_item_i2d_encrypt +#define PKCS12_item_pack_safebag v1_PKCS12_item_pack_safebag +#define PKCS12_key_gen_asc v1_PKCS12_key_gen_asc +#define PKCS12_key_gen_uni v1_PKCS12_key_gen_uni +#define PKCS12_key_gen_utf8 v1_PKCS12_key_gen_utf8 +#define PKCS12_MAC_DATA_free v1_PKCS12_MAC_DATA_free +#define PKCS12_MAC_DATA_it v1_PKCS12_MAC_DATA_it +#define PKCS12_MAC_DATA_new v1_PKCS12_MAC_DATA_new +#define PKCS12_mac_present v1_PKCS12_mac_present +#define PKCS12_new v1_PKCS12_new +#define PKCS12_newpass v1_PKCS12_newpass +#define PKCS12_pack_authsafes v1_PKCS12_pack_authsafes +#define PKCS12_pack_p7data v1_PKCS12_pack_p7data +#define PKCS12_pack_p7encdata v1_PKCS12_pack_p7encdata +#define PKCS12_parse v1_PKCS12_parse +#define PKCS12_PBE_add v1_PKCS12_PBE_add +#define PKCS12_pbe_crypt v1_PKCS12_pbe_crypt +#define PKCS12_PBE_keyivgen v1_PKCS12_PBE_keyivgen +#define PKCS12_SAFEBAG_create0_p8inf v1_PKCS12_SAFEBAG_create0_p8inf +#define PKCS12_SAFEBAG_create0_pkcs8 v1_PKCS12_SAFEBAG_create0_pkcs8 +#define PKCS12_SAFEBAG_create_cert v1_PKCS12_SAFEBAG_create_cert +#define PKCS12_SAFEBAG_create_crl v1_PKCS12_SAFEBAG_create_crl +#define PKCS12_SAFEBAG_create_pkcs8_encrypt v1_PKCS12_SAFEBAG_create_pkcs8_encrypt +#define PKCS12_SAFEBAG_free v1_PKCS12_SAFEBAG_free +#define PKCS12_SAFEBAG_get0_attr v1_PKCS12_SAFEBAG_get0_attr +#define PKCS12_SAFEBAG_get0_attrs v1_PKCS12_SAFEBAG_get0_attrs +#define PKCS12_SAFEBAG_get0_p8inf v1_PKCS12_SAFEBAG_get0_p8inf +#define PKCS12_SAFEBAG_get0_pkcs8 v1_PKCS12_SAFEBAG_get0_pkcs8 +#define PKCS12_SAFEBAG_get0_safes v1_PKCS12_SAFEBAG_get0_safes +#define PKCS12_SAFEBAG_get0_type v1_PKCS12_SAFEBAG_get0_type +#define PKCS12_SAFEBAG_get1_cert v1_PKCS12_SAFEBAG_get1_cert +#define PKCS12_SAFEBAG_get1_crl v1_PKCS12_SAFEBAG_get1_crl +#define PKCS12_SAFEBAG_get_bag_nid v1_PKCS12_SAFEBAG_get_bag_nid +#define PKCS12_SAFEBAG_get_nid v1_PKCS12_SAFEBAG_get_nid +#define PKCS12_SAFEBAG_it v1_PKCS12_SAFEBAG_it +#define PKCS12_SAFEBAG_new v1_PKCS12_SAFEBAG_new +#define PKCS12_SAFEBAGS_it v1_PKCS12_SAFEBAGS_it +#define PKCS12_set_mac v1_PKCS12_set_mac +#define PKCS12_setup_mac v1_PKCS12_setup_mac +#define PKCS12_unpack_authsafes v1_PKCS12_unpack_authsafes +#define PKCS12_unpack_p7data v1_PKCS12_unpack_p7data +#define PKCS12_unpack_p7encdata v1_PKCS12_unpack_p7encdata +#define PKCS12_verify_mac v1_PKCS12_verify_mac +#define PKCS1_MGF1 v1_PKCS1_MGF1 +#define PKCS5_pbe2_set v1_PKCS5_pbe2_set +#define PKCS5_pbe2_set_iv v1_PKCS5_pbe2_set_iv +#define PKCS5_pbe2_set_scrypt v1_PKCS5_pbe2_set_scrypt +#define PKCS5_PBE_add v1_PKCS5_PBE_add +#define PKCS5_PBE_keyivgen v1_PKCS5_PBE_keyivgen +#define PKCS5_pbe_set v1_PKCS5_pbe_set +#define PKCS5_pbe_set0_algor v1_PKCS5_pbe_set0_algor +#define PKCS5_PBKDF2_HMAC v1_PKCS5_PBKDF2_HMAC +#define PKCS5_PBKDF2_HMAC_SHA1 v1_PKCS5_PBKDF2_HMAC_SHA1 +#define PKCS5_pbkdf2_set v1_PKCS5_pbkdf2_set +#define PKCS5_v2_PBE_keyivgen v1_PKCS5_v2_PBE_keyivgen +#define PKCS5_v2_PBKDF2_keyivgen v1_PKCS5_v2_PBKDF2_keyivgen +#define PKCS5_v2_scrypt_keyivgen v1_PKCS5_v2_scrypt_keyivgen +#define PKCS7_add0_attrib_signing_time v1_PKCS7_add0_attrib_signing_time +#define PKCS7_add1_attrib_digest v1_PKCS7_add1_attrib_digest +#define PKCS7_add_attrib_content_type v1_PKCS7_add_attrib_content_type +#define PKCS7_add_attrib_smimecap v1_PKCS7_add_attrib_smimecap +#define PKCS7_add_attribute v1_PKCS7_add_attribute +#define PKCS7_add_certificate v1_PKCS7_add_certificate +#define PKCS7_add_crl v1_PKCS7_add_crl +#define PKCS7_add_recipient v1_PKCS7_add_recipient +#define PKCS7_add_recipient_info v1_PKCS7_add_recipient_info +#define PKCS7_add_signature v1_PKCS7_add_signature +#define PKCS7_add_signed_attribute v1_PKCS7_add_signed_attribute +#define PKCS7_add_signer v1_PKCS7_add_signer +#define PKCS7_ATTR_SIGN_it v1_PKCS7_ATTR_SIGN_it +#define PKCS7_ATTR_VERIFY_it v1_PKCS7_ATTR_VERIFY_it +#define PKCS7_cert_from_signer_info v1_PKCS7_cert_from_signer_info +#define PKCS7_content_new v1_PKCS7_content_new +#define PKCS7_ctrl v1_PKCS7_ctrl +#define PKCS7_dataDecode v1_PKCS7_dataDecode +#define PKCS7_dataFinal v1_PKCS7_dataFinal +#define PKCS7_dataInit v1_PKCS7_dataInit +#define PKCS7_dataVerify v1_PKCS7_dataVerify +#define PKCS7_decrypt v1_PKCS7_decrypt +#define PKCS7_DIGEST_free v1_PKCS7_DIGEST_free +#define PKCS7_digest_from_attributes v1_PKCS7_digest_from_attributes +#define PKCS7_DIGEST_it v1_PKCS7_DIGEST_it +#define PKCS7_DIGEST_new v1_PKCS7_DIGEST_new +#define PKCS7_dup v1_PKCS7_dup +#define PKCS7_ENC_CONTENT_free v1_PKCS7_ENC_CONTENT_free +#define PKCS7_ENC_CONTENT_it v1_PKCS7_ENC_CONTENT_it +#define PKCS7_ENC_CONTENT_new v1_PKCS7_ENC_CONTENT_new +#define PKCS7_encrypt v1_PKCS7_encrypt +#define PKCS7_ENCRYPT_free v1_PKCS7_ENCRYPT_free +#define PKCS7_ENCRYPT_it v1_PKCS7_ENCRYPT_it +#define PKCS7_ENCRYPT_new v1_PKCS7_ENCRYPT_new +#define PKCS7_ENVELOPE_free v1_PKCS7_ENVELOPE_free +#define PKCS7_ENVELOPE_it v1_PKCS7_ENVELOPE_it +#define PKCS7_ENVELOPE_new v1_PKCS7_ENVELOPE_new +#define PKCS7_final v1_PKCS7_final +#define PKCS7_free v1_PKCS7_free +#define PKCS7_get0_signers v1_PKCS7_get0_signers +#define PKCS7_get_attribute v1_PKCS7_get_attribute +#define PKCS7_get_issuer_and_serial v1_PKCS7_get_issuer_and_serial +#define PKCS7_get_signed_attribute v1_PKCS7_get_signed_attribute +#define PKCS7_get_signer_info v1_PKCS7_get_signer_info +#define PKCS7_get_smimecap v1_PKCS7_get_smimecap +#define PKCS7_ISSUER_AND_SERIAL_digest v1_PKCS7_ISSUER_AND_SERIAL_digest +#define PKCS7_ISSUER_AND_SERIAL_free v1_PKCS7_ISSUER_AND_SERIAL_free +#define PKCS7_ISSUER_AND_SERIAL_it v1_PKCS7_ISSUER_AND_SERIAL_it +#define PKCS7_ISSUER_AND_SERIAL_new v1_PKCS7_ISSUER_AND_SERIAL_new +#define PKCS7_it v1_PKCS7_it +#define PKCS7_new v1_PKCS7_new +#define PKCS7_print_ctx v1_PKCS7_print_ctx +#define PKCS7_RECIP_INFO_free v1_PKCS7_RECIP_INFO_free +#define PKCS7_RECIP_INFO_get0_alg v1_PKCS7_RECIP_INFO_get0_alg +#define PKCS7_RECIP_INFO_it v1_PKCS7_RECIP_INFO_it +#define PKCS7_RECIP_INFO_new v1_PKCS7_RECIP_INFO_new +#define PKCS7_RECIP_INFO_set v1_PKCS7_RECIP_INFO_set +#define PKCS7_set0_type_other v1_PKCS7_set0_type_other +#define PKCS7_set_attributes v1_PKCS7_set_attributes +#define PKCS7_set_cipher v1_PKCS7_set_cipher +#define PKCS7_set_content v1_PKCS7_set_content +#define PKCS7_set_digest v1_PKCS7_set_digest +#define PKCS7_set_signed_attributes v1_PKCS7_set_signed_attributes +#define PKCS7_set_type v1_PKCS7_set_type +#define PKCS7_sign v1_PKCS7_sign +#define PKCS7_sign_add_signer v1_PKCS7_sign_add_signer +#define PKCS7_signatureVerify v1_PKCS7_signatureVerify +#define PKCS7_SIGNED_free v1_PKCS7_SIGNED_free +#define PKCS7_SIGNED_it v1_PKCS7_SIGNED_it +#define PKCS7_SIGNED_new v1_PKCS7_SIGNED_new +#define PKCS7_SIGN_ENVELOPE_free v1_PKCS7_SIGN_ENVELOPE_free +#define PKCS7_SIGN_ENVELOPE_it v1_PKCS7_SIGN_ENVELOPE_it +#define PKCS7_SIGN_ENVELOPE_new v1_PKCS7_SIGN_ENVELOPE_new +#define PKCS7_SIGNER_INFO_free v1_PKCS7_SIGNER_INFO_free +#define PKCS7_SIGNER_INFO_get0_algs v1_PKCS7_SIGNER_INFO_get0_algs +#define PKCS7_SIGNER_INFO_it v1_PKCS7_SIGNER_INFO_it +#define PKCS7_SIGNER_INFO_new v1_PKCS7_SIGNER_INFO_new +#define PKCS7_SIGNER_INFO_set v1_PKCS7_SIGNER_INFO_set +#define PKCS7_SIGNER_INFO_sign v1_PKCS7_SIGNER_INFO_sign +#define PKCS7_simple_smimecap v1_PKCS7_simple_smimecap +#define PKCS7_stream v1_PKCS7_stream +#define PKCS7_to_TS_TST_INFO v1_PKCS7_to_TS_TST_INFO +#define PKCS7_verify v1_PKCS7_verify +#define PKCS8_add_keyusage v1_PKCS8_add_keyusage +#define PKCS8_decrypt v1_PKCS8_decrypt +#define PKCS8_encrypt v1_PKCS8_encrypt +#define PKCS8_get_attr v1_PKCS8_get_attr +#define PKCS8_pkey_add1_attr_by_NID v1_PKCS8_pkey_add1_attr_by_NID +#define PKCS8_pkey_get0 v1_PKCS8_pkey_get0 +#define PKCS8_pkey_get0_attrs v1_PKCS8_pkey_get0_attrs +#define PKCS8_pkey_set0 v1_PKCS8_pkey_set0 +#define PKCS8_PRIV_KEY_INFO_free v1_PKCS8_PRIV_KEY_INFO_free +#define PKCS8_PRIV_KEY_INFO_it v1_PKCS8_PRIV_KEY_INFO_it +#define PKCS8_PRIV_KEY_INFO_new v1_PKCS8_PRIV_KEY_INFO_new +#define PKCS8_set0_pbe v1_PKCS8_set0_pbe +#define PKEY_USAGE_PERIOD_free v1_PKEY_USAGE_PERIOD_free +#define PKEY_USAGE_PERIOD_it v1_PKEY_USAGE_PERIOD_it +#define PKEY_USAGE_PERIOD_new v1_PKEY_USAGE_PERIOD_new +#define policy_cache_find_data v1_policy_cache_find_data +#define policy_cache_free v1_policy_cache_free +#define policy_cache_set v1_policy_cache_set +#define policy_cache_set_mapping v1_policy_cache_set_mapping +#define POLICY_CONSTRAINTS_free v1_POLICY_CONSTRAINTS_free +#define POLICY_CONSTRAINTS_it v1_POLICY_CONSTRAINTS_it +#define POLICY_CONSTRAINTS_new v1_POLICY_CONSTRAINTS_new +#define policy_data_free v1_policy_data_free +#define policy_data_new v1_policy_data_new +#define POLICYINFO_free v1_POLICYINFO_free +#define POLICYINFO_it v1_POLICYINFO_it +#define POLICYINFO_new v1_POLICYINFO_new +#define POLICY_MAPPING_free v1_POLICY_MAPPING_free +#define POLICY_MAPPING_it v1_POLICY_MAPPING_it +#define POLICY_MAPPING_new v1_POLICY_MAPPING_new +#define POLICY_MAPPINGS_it v1_POLICY_MAPPINGS_it +#define policy_node_cmp_new v1_policy_node_cmp_new +#define policy_node_free v1_policy_node_free +#define policy_node_match v1_policy_node_match +#define POLICYQUALINFO_free v1_POLICYQUALINFO_free +#define POLICYQUALINFO_it v1_POLICYQUALINFO_it +#define POLICYQUALINFO_new v1_POLICYQUALINFO_new +#define poly1305_asn1_meth v1_poly1305_asn1_meth +#define poly1305_blocks v1_poly1305_blocks +#define Poly1305_ctx_size v1_Poly1305_ctx_size +#define poly1305_emit v1_poly1305_emit +#define Poly1305_Final v1_Poly1305_Final +#define poly1305_init v1_poly1305_init +#define Poly1305_Init v1_Poly1305_Init +#define poly1305_pkey_meth v1_poly1305_pkey_meth +#define Poly1305_Update v1_Poly1305_Update +#define pqueue_find v1_pqueue_find +#define pqueue_free v1_pqueue_free +#define pqueue_insert v1_pqueue_insert +#define pqueue_iterator v1_pqueue_iterator +#define pqueue_new v1_pqueue_new +#define pqueue_next v1_pqueue_next +#define pqueue_peek v1_pqueue_peek +#define pqueue_pop v1_pqueue_pop +#define pqueue_size v1_pqueue_size +#define PROFESSION_INFO_free v1_PROFESSION_INFO_free +#define PROFESSION_INFO_get0_addProfessionInfo v1_PROFESSION_INFO_get0_addProfessionInfo +#define PROFESSION_INFO_get0_namingAuthority v1_PROFESSION_INFO_get0_namingAuthority +#define PROFESSION_INFO_get0_professionItems v1_PROFESSION_INFO_get0_professionItems +#define PROFESSION_INFO_get0_professionOIDs v1_PROFESSION_INFO_get0_professionOIDs +#define PROFESSION_INFO_get0_registrationNumber v1_PROFESSION_INFO_get0_registrationNumber +#define PROFESSION_INFO_it v1_PROFESSION_INFO_it +#define PROFESSION_INFO_new v1_PROFESSION_INFO_new +#define PROFESSION_INFO_set0_addProfessionInfo v1_PROFESSION_INFO_set0_addProfessionInfo +#define PROFESSION_INFO_set0_namingAuthority v1_PROFESSION_INFO_set0_namingAuthority +#define PROFESSION_INFO_set0_professionItems v1_PROFESSION_INFO_set0_professionItems +#define PROFESSION_INFO_set0_professionOIDs v1_PROFESSION_INFO_set0_professionOIDs +#define PROFESSION_INFO_set0_registrationNumber v1_PROFESSION_INFO_set0_registrationNumber +#define PROXY_CERT_INFO_EXTENSION_free v1_PROXY_CERT_INFO_EXTENSION_free +#define PROXY_CERT_INFO_EXTENSION_it v1_PROXY_CERT_INFO_EXTENSION_it +#define PROXY_CERT_INFO_EXTENSION_new v1_PROXY_CERT_INFO_EXTENSION_new +#define PROXY_POLICY_free v1_PROXY_POLICY_free +#define PROXY_POLICY_it v1_PROXY_POLICY_it +#define PROXY_POLICY_new v1_PROXY_POLICY_new +#define quic_get_message v1_quic_get_message +#define quic_set_encryption_secrets v1_quic_set_encryption_secrets +#define RAND_add v1_RAND_add +#define RAND_bytes v1_RAND_bytes +#define rand_cleanup_int v1_rand_cleanup_int +#define RAND_DRBG_bytes v1_RAND_DRBG_bytes +#define rand_drbg_cleanup_additional_data v1_rand_drbg_cleanup_additional_data +#define rand_drbg_cleanup_entropy v1_rand_drbg_cleanup_entropy +#define rand_drbg_cleanup_int v1_rand_drbg_cleanup_int +#define rand_drbg_cleanup_nonce v1_rand_drbg_cleanup_nonce +#define rand_drbg_enable_locking v1_rand_drbg_enable_locking +#define RAND_DRBG_free v1_RAND_DRBG_free +#define RAND_DRBG_generate v1_RAND_DRBG_generate +#define RAND_DRBG_get0_master v1_RAND_DRBG_get0_master +#define RAND_DRBG_get0_private v1_RAND_DRBG_get0_private +#define RAND_DRBG_get0_public v1_RAND_DRBG_get0_public +#define rand_drbg_get_additional_data v1_rand_drbg_get_additional_data +#define rand_drbg_get_entropy v1_rand_drbg_get_entropy +#define RAND_DRBG_get_ex_data v1_RAND_DRBG_get_ex_data +#define rand_drbg_get_nonce v1_rand_drbg_get_nonce +#define RAND_DRBG_instantiate v1_RAND_DRBG_instantiate +#define rand_drbg_lock v1_rand_drbg_lock +#define RAND_DRBG_new v1_RAND_DRBG_new +#define RAND_DRBG_reseed v1_RAND_DRBG_reseed +#define rand_drbg_restart v1_rand_drbg_restart +#define RAND_DRBG_secure_new v1_RAND_DRBG_secure_new +#define rand_drbg_seedlen v1_rand_drbg_seedlen +#define RAND_DRBG_set v1_RAND_DRBG_set +#define RAND_DRBG_set_callbacks v1_RAND_DRBG_set_callbacks +#define RAND_DRBG_set_defaults v1_RAND_DRBG_set_defaults +#define RAND_DRBG_set_ex_data v1_RAND_DRBG_set_ex_data +#define RAND_DRBG_set_reseed_defaults v1_RAND_DRBG_set_reseed_defaults +#define RAND_DRBG_set_reseed_interval v1_RAND_DRBG_set_reseed_interval +#define RAND_DRBG_set_reseed_time_interval v1_RAND_DRBG_set_reseed_time_interval +#define RAND_DRBG_uninstantiate v1_RAND_DRBG_uninstantiate +#define rand_drbg_unlock v1_rand_drbg_unlock +#define RAND_file_name v1_RAND_file_name +#define RAND_get_rand_method v1_RAND_get_rand_method +#define RAND_keep_random_devices_open v1_RAND_keep_random_devices_open +#define RAND_load_file v1_RAND_load_file +#define rand_meth v1_rand_meth +#define RAND_OpenSSL v1_RAND_OpenSSL +#define RAND_poll v1_RAND_poll +#define rand_pool_acquire_entropy v1_rand_pool_acquire_entropy +#define rand_pool_add v1_rand_pool_add +#define rand_pool_add_additional_data v1_rand_pool_add_additional_data +#define rand_pool_add_begin v1_rand_pool_add_begin +#define rand_pool_add_end v1_rand_pool_add_end +#define rand_pool_add_nonce_data v1_rand_pool_add_nonce_data +#define rand_pool_attach v1_rand_pool_attach +#define rand_pool_buffer v1_rand_pool_buffer +#define rand_pool_bytes_needed v1_rand_pool_bytes_needed +#define rand_pool_bytes_remaining v1_rand_pool_bytes_remaining +#define rand_pool_cleanup v1_rand_pool_cleanup +#define rand_pool_detach v1_rand_pool_detach +#define rand_pool_entropy v1_rand_pool_entropy +#define rand_pool_entropy_available v1_rand_pool_entropy_available +#define rand_pool_entropy_needed v1_rand_pool_entropy_needed +#define rand_pool_free v1_rand_pool_free +#define rand_pool_init v1_rand_pool_init +#define rand_pool_keep_random_devices_open v1_rand_pool_keep_random_devices_open +#define rand_pool_length v1_rand_pool_length +#define rand_pool_new v1_rand_pool_new +#define rand_pool_reattach v1_rand_pool_reattach +#define RAND_priv_bytes v1_RAND_priv_bytes +#define RAND_pseudo_bytes v1_RAND_pseudo_bytes +#define RAND_seed v1_RAND_seed +#define RAND_set_rand_engine v1_RAND_set_rand_engine +#define RAND_set_rand_method v1_RAND_set_rand_method +#define RAND_status v1_RAND_status +#define RAND_write_file v1_RAND_write_file +#define RC2_cbc_encrypt v1_RC2_cbc_encrypt +#define RC2_cfb64_encrypt v1_RC2_cfb64_encrypt +#define RC2_decrypt v1_RC2_decrypt +#define RC2_ecb_encrypt v1_RC2_ecb_encrypt +#define RC2_encrypt v1_RC2_encrypt +#define RC2_ofb64_encrypt v1_RC2_ofb64_encrypt +#define RC2_set_key v1_RC2_set_key +//#define RC4 v1_RC4 +#define rc4_md5_enc v1_rc4_md5_enc +#define RC4_options v1_RC4_options +#define RC4_set_key v1_RC4_set_key +#define RECORD_LAYER_clear v1_RECORD_LAYER_clear +#define RECORD_LAYER_get_rrec_length v1_RECORD_LAYER_get_rrec_length +#define RECORD_LAYER_init v1_RECORD_LAYER_init +#define RECORD_LAYER_is_sslv2_record v1_RECORD_LAYER_is_sslv2_record +#define RECORD_LAYER_processed_read_pending v1_RECORD_LAYER_processed_read_pending +#define RECORD_LAYER_read_pending v1_RECORD_LAYER_read_pending +#define RECORD_LAYER_release v1_RECORD_LAYER_release +#define RECORD_LAYER_reset_read_sequence v1_RECORD_LAYER_reset_read_sequence +#define RECORD_LAYER_reset_write_sequence v1_RECORD_LAYER_reset_write_sequence +#define RECORD_LAYER_write_pending v1_RECORD_LAYER_write_pending +#define RIPEMD160 v1_RIPEMD160 +#define ripemd160_block_data_order v1_ripemd160_block_data_order +#define RIPEMD160_Final v1_RIPEMD160_Final +#define RIPEMD160_Init v1_RIPEMD160_Init +#define RIPEMD160_Transform v1_RIPEMD160_Transform +#define RIPEMD160_Update v1_RIPEMD160_Update +#define rsa_asn1_meths v1_rsa_asn1_meths +#define RSA_bits v1_RSA_bits +#define RSA_blinding_off v1_RSA_blinding_off +#define RSA_blinding_on v1_RSA_blinding_on +#define RSA_check_key v1_RSA_check_key +#define RSA_check_key_ex v1_RSA_check_key_ex +#define RSA_clear_flags v1_RSA_clear_flags +#define RSA_flags v1_RSA_flags +#define RSA_free v1_RSA_free +#define RSA_generate_key v1_RSA_generate_key +#define RSA_generate_key_ex v1_RSA_generate_key_ex +#define RSA_generate_multi_prime_key v1_RSA_generate_multi_prime_key +#define RSA_get0_crt_params v1_RSA_get0_crt_params +#define RSA_get0_d v1_RSA_get0_d +#define RSA_get0_dmp1 v1_RSA_get0_dmp1 +#define RSA_get0_dmq1 v1_RSA_get0_dmq1 +#define RSA_get0_e v1_RSA_get0_e +#define RSA_get0_engine v1_RSA_get0_engine +#define RSA_get0_factors v1_RSA_get0_factors +#define RSA_get0_iqmp v1_RSA_get0_iqmp +#define RSA_get0_key v1_RSA_get0_key +#define RSA_get0_multi_prime_crt_params v1_RSA_get0_multi_prime_crt_params +#define RSA_get0_multi_prime_factors v1_RSA_get0_multi_prime_factors +#define RSA_get0_n v1_RSA_get0_n +#define RSA_get0_p v1_RSA_get0_p +#define RSA_get0_pss_params v1_RSA_get0_pss_params +#define RSA_get0_q v1_RSA_get0_q +#define RSA_get_default_method v1_RSA_get_default_method +#define RSA_get_ex_data v1_RSA_get_ex_data +#define RSA_get_method v1_RSA_get_method +#define RSA_get_multi_prime_extra_count v1_RSA_get_multi_prime_extra_count +#define RSA_get_version v1_RSA_get_version +#define RSA_meth_dup v1_RSA_meth_dup +#define RSA_meth_free v1_RSA_meth_free +#define RSA_meth_get0_app_data v1_RSA_meth_get0_app_data +#define RSA_meth_get0_name v1_RSA_meth_get0_name +#define RSA_meth_get_bn_mod_exp v1_RSA_meth_get_bn_mod_exp +#define RSA_meth_get_finish v1_RSA_meth_get_finish +#define RSA_meth_get_flags v1_RSA_meth_get_flags +#define RSA_meth_get_init v1_RSA_meth_get_init +#define RSA_meth_get_keygen v1_RSA_meth_get_keygen +#define RSA_meth_get_mod_exp v1_RSA_meth_get_mod_exp +#define RSA_meth_get_multi_prime_keygen v1_RSA_meth_get_multi_prime_keygen +#define RSA_meth_get_priv_dec v1_RSA_meth_get_priv_dec +#define RSA_meth_get_priv_enc v1_RSA_meth_get_priv_enc +#define RSA_meth_get_pub_dec v1_RSA_meth_get_pub_dec +#define RSA_meth_get_pub_enc v1_RSA_meth_get_pub_enc +#define RSA_meth_get_sign v1_RSA_meth_get_sign +#define RSA_meth_get_verify v1_RSA_meth_get_verify +#define RSA_meth_new v1_RSA_meth_new +#define RSA_meth_set0_app_data v1_RSA_meth_set0_app_data +#define RSA_meth_set1_name v1_RSA_meth_set1_name +#define RSA_meth_set_bn_mod_exp v1_RSA_meth_set_bn_mod_exp +#define RSA_meth_set_finish v1_RSA_meth_set_finish +#define RSA_meth_set_flags v1_RSA_meth_set_flags +#define RSA_meth_set_init v1_RSA_meth_set_init +#define RSA_meth_set_keygen v1_RSA_meth_set_keygen +#define RSA_meth_set_mod_exp v1_RSA_meth_set_mod_exp +#define RSA_meth_set_multi_prime_keygen v1_RSA_meth_set_multi_prime_keygen +#define RSA_meth_set_priv_dec v1_RSA_meth_set_priv_dec +#define RSA_meth_set_priv_enc v1_RSA_meth_set_priv_enc +#define RSA_meth_set_pub_dec v1_RSA_meth_set_pub_dec +#define RSA_meth_set_pub_enc v1_RSA_meth_set_pub_enc +#define RSA_meth_set_sign v1_RSA_meth_set_sign +#define RSA_meth_set_verify v1_RSA_meth_set_verify +#define rsa_multip_calc_product v1_rsa_multip_calc_product +#define rsa_multip_cap v1_rsa_multip_cap +#define rsa_multip_info_free v1_rsa_multip_info_free +#define rsa_multip_info_free_ex v1_rsa_multip_info_free_ex +#define rsa_multip_info_new v1_rsa_multip_info_new +#define RSA_new v1_RSA_new +#define RSA_new_method v1_RSA_new_method +#define RSA_null_method v1_RSA_null_method +#define RSA_OAEP_PARAMS_free v1_RSA_OAEP_PARAMS_free +#define RSA_OAEP_PARAMS_it v1_RSA_OAEP_PARAMS_it +#define RSA_OAEP_PARAMS_new v1_RSA_OAEP_PARAMS_new +#define RSA_padding_add_none v1_RSA_padding_add_none +#define RSA_padding_add_PKCS1_OAEP v1_RSA_padding_add_PKCS1_OAEP +#define RSA_padding_add_PKCS1_OAEP_mgf1 v1_RSA_padding_add_PKCS1_OAEP_mgf1 +#define RSA_padding_add_PKCS1_PSS v1_RSA_padding_add_PKCS1_PSS +#define RSA_padding_add_PKCS1_PSS_mgf1 v1_RSA_padding_add_PKCS1_PSS_mgf1 +#define RSA_padding_add_PKCS1_type_1 v1_RSA_padding_add_PKCS1_type_1 +#define RSA_padding_add_PKCS1_type_2 v1_RSA_padding_add_PKCS1_type_2 +#define RSA_padding_add_SSLv23 v1_RSA_padding_add_SSLv23 +#define RSA_padding_add_X931 v1_RSA_padding_add_X931 +#define RSA_padding_check_none v1_RSA_padding_check_none +#define RSA_padding_check_PKCS1_OAEP v1_RSA_padding_check_PKCS1_OAEP +#define RSA_padding_check_PKCS1_OAEP_mgf1 v1_RSA_padding_check_PKCS1_OAEP_mgf1 +#define RSA_padding_check_PKCS1_type_1 v1_RSA_padding_check_PKCS1_type_1 +#define RSA_padding_check_PKCS1_type_2 v1_RSA_padding_check_PKCS1_type_2 +#define RSA_padding_check_SSLv23 v1_RSA_padding_check_SSLv23 +#define RSA_padding_check_X931 v1_RSA_padding_check_X931 +#define RSA_PKCS1_OpenSSL v1_RSA_PKCS1_OpenSSL +#define RSA_pkey_ctx_ctrl v1_RSA_pkey_ctx_ctrl +#define rsa_pkey_meth v1_rsa_pkey_meth +#define RSA_PRIME_INFO_it v1_RSA_PRIME_INFO_it +#define RSA_print v1_RSA_print +#define RSA_print_fp v1_RSA_print_fp +#define RSA_private_decrypt v1_RSA_private_decrypt +#define RSA_private_encrypt v1_RSA_private_encrypt +#define RSAPrivateKey_dup v1_RSAPrivateKey_dup +#define RSAPrivateKey_it v1_RSAPrivateKey_it +#define rsa_pss_asn1_meth v1_rsa_pss_asn1_meth +#define rsa_pss_get_param v1_rsa_pss_get_param +#define rsa_pss_params_create v1_rsa_pss_params_create +#define RSA_PSS_PARAMS_free v1_RSA_PSS_PARAMS_free +#define RSA_PSS_PARAMS_it v1_RSA_PSS_PARAMS_it +#define RSA_PSS_PARAMS_new v1_RSA_PSS_PARAMS_new +#define rsa_pss_pkey_meth v1_rsa_pss_pkey_meth +#define RSA_public_decrypt v1_RSA_public_decrypt +#define RSA_public_encrypt v1_RSA_public_encrypt +#define RSAPublicKey_dup v1_RSAPublicKey_dup +#define RSAPublicKey_it v1_RSAPublicKey_it +#define RSA_security_bits v1_RSA_security_bits +#define RSA_set0_crt_params v1_RSA_set0_crt_params +#define RSA_set0_factors v1_RSA_set0_factors +#define RSA_set0_key v1_RSA_set0_key +#define RSA_set0_multi_prime_params v1_RSA_set0_multi_prime_params +#define RSA_set_default_method v1_RSA_set_default_method +#define RSA_set_ex_data v1_RSA_set_ex_data +#define RSA_set_flags v1_RSA_set_flags +#define RSA_set_method v1_RSA_set_method +#define RSA_setup_blinding v1_RSA_setup_blinding +#define RSA_sign v1_RSA_sign +#define RSA_sign_ASN1_OCTET_STRING v1_RSA_sign_ASN1_OCTET_STRING +#define RSA_size v1_RSA_size +#define RSA_test_flags v1_RSA_test_flags +#define RSA_up_ref v1_RSA_up_ref +#define RSA_verify v1_RSA_verify +#define RSA_verify_ASN1_OCTET_STRING v1_RSA_verify_ASN1_OCTET_STRING +#define RSA_verify_PKCS1_PSS v1_RSA_verify_PKCS1_PSS +#define RSA_verify_PKCS1_PSS_mgf1 v1_RSA_verify_PKCS1_PSS_mgf1 +#define RSA_X931_derive_ex v1_RSA_X931_derive_ex +#define RSA_X931_generate_key_ex v1_RSA_X931_generate_key_ex +#define RSA_X931_hash_id v1_RSA_X931_hash_id +#define rsaz_1024_gather5_avx2 v1_rsaz_1024_gather5_avx2 +#define RSAZ_1024_mod_exp_avx2 v1_RSAZ_1024_mod_exp_avx2 +#define rsaz_1024_mul_avx2 v1_rsaz_1024_mul_avx2 +#define rsaz_1024_norm2red_avx2 v1_rsaz_1024_norm2red_avx2 +#define rsaz_1024_red2norm_avx2 v1_rsaz_1024_red2norm_avx2 +#define rsaz_1024_scatter5_avx2 v1_rsaz_1024_scatter5_avx2 +#define rsaz_1024_sqr_avx2 v1_rsaz_1024_sqr_avx2 +#define rsaz_512_gather4 v1_rsaz_512_gather4 +#define RSAZ_512_mod_exp v1_RSAZ_512_mod_exp +#define rsaz_512_mul v1_rsaz_512_mul +#define rsaz_512_mul_by_one v1_rsaz_512_mul_by_one +#define rsaz_512_mul_gather4 v1_rsaz_512_mul_gather4 +#define rsaz_512_mul_scatter4 v1_rsaz_512_mul_scatter4 +#define rsaz_512_scatter4 v1_rsaz_512_scatter4 +#define rsaz_512_sqr v1_rsaz_512_sqr +#define rsaz_avx2_eligible v1_rsaz_avx2_eligible +#define s2i_ASN1_IA5STRING v1_s2i_ASN1_IA5STRING +#define s2i_ASN1_INTEGER v1_s2i_ASN1_INTEGER +#define s2i_ASN1_OCTET_STRING v1_s2i_ASN1_OCTET_STRING +#define SCRYPT_PARAMS_free v1_SCRYPT_PARAMS_free +#define SCRYPT_PARAMS_it v1_SCRYPT_PARAMS_it +#define SCRYPT_PARAMS_new v1_SCRYPT_PARAMS_new +#define scrypt_pkey_meth v1_scrypt_pkey_meth +#define SCT_CTX_free v1_SCT_CTX_free +#define SCT_CTX_new v1_SCT_CTX_new +#define SCT_CTX_set1_cert v1_SCT_CTX_set1_cert +#define SCT_CTX_set1_issuer v1_SCT_CTX_set1_issuer +#define SCT_CTX_set1_issuer_pubkey v1_SCT_CTX_set1_issuer_pubkey +#define SCT_CTX_set1_pubkey v1_SCT_CTX_set1_pubkey +#define SCT_CTX_set_time v1_SCT_CTX_set_time +#define SCT_CTX_verify v1_SCT_CTX_verify +#define SCT_free v1_SCT_free +#define SCT_get0_extensions v1_SCT_get0_extensions +#define SCT_get0_log_id v1_SCT_get0_log_id +#define SCT_get0_signature v1_SCT_get0_signature +#define SCT_get_log_entry_type v1_SCT_get_log_entry_type +#define SCT_get_signature_nid v1_SCT_get_signature_nid +#define SCT_get_source v1_SCT_get_source +#define SCT_get_timestamp v1_SCT_get_timestamp +#define SCT_get_validation_status v1_SCT_get_validation_status +#define SCT_get_version v1_SCT_get_version +#define SCT_is_complete v1_SCT_is_complete +#define SCT_LIST_free v1_SCT_LIST_free +#define SCT_LIST_print v1_SCT_LIST_print +#define SCT_LIST_validate v1_SCT_LIST_validate +#define SCT_new v1_SCT_new +#define SCT_new_from_base64 v1_SCT_new_from_base64 +#define SCT_print v1_SCT_print +#define SCT_set0_extensions v1_SCT_set0_extensions +#define SCT_set0_log_id v1_SCT_set0_log_id +#define SCT_set0_signature v1_SCT_set0_signature +#define SCT_set1_extensions v1_SCT_set1_extensions +#define SCT_set1_log_id v1_SCT_set1_log_id +#define SCT_set1_signature v1_SCT_set1_signature +#define SCT_set_log_entry_type v1_SCT_set_log_entry_type +#define SCT_set_signature_nid v1_SCT_set_signature_nid +#define SCT_set_source v1_SCT_set_source +#define SCT_set_timestamp v1_SCT_set_timestamp +#define SCT_set_version v1_SCT_set_version +#define SCT_signature_is_complete v1_SCT_signature_is_complete +#define SCT_validate v1_SCT_validate +#define SCT_validation_status_string v1_SCT_validation_status_string +#define SEED_cbc_encrypt v1_SEED_cbc_encrypt +#define SEED_cfb128_encrypt v1_SEED_cfb128_encrypt +#define SEED_decrypt v1_SEED_decrypt +#define SEED_ecb_encrypt v1_SEED_ecb_encrypt +#define SEED_encrypt v1_SEED_encrypt +#define SEED_ofb128_encrypt v1_SEED_ofb128_encrypt +#define SEED_set_key v1_SEED_set_key +#define send_certificate_request v1_send_certificate_request +//#define SHA1 v1_SHA1 +#define sha1_block_data_order v1_sha1_block_data_order +#define SHA1_Final v1_SHA1_Final +#define SHA1_Init v1_SHA1_Init +#define sha1_multi_block v1_sha1_multi_block +#define SHA1_Transform v1_SHA1_Transform +#define SHA1_Update v1_SHA1_Update +#define SHA224 v1_SHA224 +#define SHA224_Final v1_SHA224_Final +#define SHA224_Init v1_SHA224_Init +#define SHA224_Update v1_SHA224_Update +//#define SHA256 v1_SHA256 +#define sha256_block_data_order v1_sha256_block_data_order +#define SHA256_Final v1_SHA256_Final +#define SHA256_Init v1_SHA256_Init +#define sha256_multi_block v1_sha256_multi_block +#define SHA256_Transform v1_SHA256_Transform +#define SHA256_Update v1_SHA256_Update +//#define SHA384 v1_SHA384 +#define SHA384_Final v1_SHA384_Final +#define SHA384_Init v1_SHA384_Init +#define SHA384_Update v1_SHA384_Update +#define SHA3_absorb v1_SHA3_absorb +#define SHA3_squeeze v1_SHA3_squeeze +//#define SHA512 v1_SHA512 +#define sha512_224_init v1_sha512_224_init +#define sha512_256_init v1_sha512_256_init +#define sha512_block_data_order v1_sha512_block_data_order +#define SHA512_Final v1_SHA512_Final +#define SHA512_Init v1_SHA512_Init +#define SHA512_Transform v1_SHA512_Transform +#define SHA512_Update v1_SHA512_Update +#define _shadow_DES_check_key v1__shadow_DES_check_key +#define should_add_extension v1_should_add_extension +#define siphash_asn1_meth v1_siphash_asn1_meth +#define SipHash_ctx_size v1_SipHash_ctx_size +#define SipHash_Final v1_SipHash_Final +#define SipHash_hash_size v1_SipHash_hash_size +#define SipHash_Init v1_SipHash_Init +#define siphash_pkey_meth v1_siphash_pkey_meth +#define SipHash_set_hash_size v1_SipHash_set_hash_size +#define SipHash_Update v1_SipHash_Update +#define sm2_asn1_meth v1_sm2_asn1_meth +#define SM2_Ciphertext_free v1_SM2_Ciphertext_free +#define SM2_Ciphertext_it v1_SM2_Ciphertext_it +#define SM2_Ciphertext_new v1_SM2_Ciphertext_new +#define sm2_ciphertext_size v1_sm2_ciphertext_size +#define sm2_compute_z_digest v1_sm2_compute_z_digest +#define sm2_decrypt v1_sm2_decrypt +#define sm2_do_sign v1_sm2_do_sign +#define sm2_do_verify v1_sm2_do_verify +#define sm2_encrypt v1_sm2_encrypt +#define sm2_pkey_meth v1_sm2_pkey_meth +#define sm2_plaintext_size v1_sm2_plaintext_size +#define sm2_sign v1_sm2_sign +#define sm2_verify v1_sm2_verify +#define sm3_block_data_order v1_sm3_block_data_order +#define sm3_final v1_sm3_final +#define sm3_init v1_sm3_init +#define sm3_transform v1_sm3_transform +#define sm3_update v1_sm3_update +#define SM4_decrypt v1_SM4_decrypt +#define SM4_encrypt v1_SM4_encrypt +#define SM4_set_key v1_SM4_set_key +#define SMIME_crlf_copy v1_SMIME_crlf_copy +#define SMIME_read_ASN1 v1_SMIME_read_ASN1 +#define SMIME_read_CMS v1_SMIME_read_CMS +#define SMIME_read_PKCS7 v1_SMIME_read_PKCS7 +#define SMIME_text v1_SMIME_text +#define SMIME_write_ASN1 v1_SMIME_write_ASN1 +#define SMIME_write_CMS v1_SMIME_write_CMS +#define SMIME_write_PKCS7 v1_SMIME_write_PKCS7 +#define SRP_Calc_A v1_SRP_Calc_A +#define SRP_Calc_A_param v1_SRP_Calc_A_param +#define SRP_Calc_B v1_SRP_Calc_B +#define SRP_Calc_client_key v1_SRP_Calc_client_key +#define SRP_Calc_server_key v1_SRP_Calc_server_key +#define SRP_Calc_u v1_SRP_Calc_u +#define SRP_Calc_x v1_SRP_Calc_x +#define SRP_check_known_gN_param v1_SRP_check_known_gN_param +#define SRP_create_verifier v1_SRP_create_verifier +#define SRP_create_verifier_BN v1_SRP_create_verifier_BN +#define srp_generate_client_master_secret v1_srp_generate_client_master_secret +#define srp_generate_server_master_secret v1_srp_generate_server_master_secret +#define SRP_get_default_gN v1_SRP_get_default_gN +#define SRP_user_pwd_free v1_SRP_user_pwd_free +#define SRP_VBASE_free v1_SRP_VBASE_free +#define SRP_VBASE_get1_by_user v1_SRP_VBASE_get1_by_user +#define SRP_VBASE_get_by_user v1_SRP_VBASE_get_by_user +#define SRP_VBASE_init v1_SRP_VBASE_init +#define SRP_VBASE_new v1_SRP_VBASE_new +#define SRP_Verify_A_mod_N v1_SRP_Verify_A_mod_N +#define SRP_Verify_B_mod_N v1_SRP_Verify_B_mod_N +#define srp_verify_server_param v1_srp_verify_server_param +#define ssl3_alert_code v1_ssl3_alert_code +#define SSL3_BUFFER_clear v1_SSL3_BUFFER_clear +#define SSL3_BUFFER_release v1_SSL3_BUFFER_release +#define SSL3_BUFFER_set_data v1_SSL3_BUFFER_set_data +#define ssl3_callback_ctrl v1_ssl3_callback_ctrl +#define ssl3_cbc_copy_mac v1_ssl3_cbc_copy_mac +#define ssl3_cbc_digest_record v1_ssl3_cbc_digest_record +#define ssl3_cbc_record_digest_supported v1_ssl3_cbc_record_digest_supported +#define ssl3_cbc_remove_padding v1_ssl3_cbc_remove_padding +#define ssl3_change_cipher_state v1_ssl3_change_cipher_state +#define ssl3_check_cert_and_algorithm v1_ssl3_check_cert_and_algorithm +#define ssl3_choose_cipher v1_ssl3_choose_cipher +#define ssl3_cleanup_key_block v1_ssl3_cleanup_key_block +#define ssl3_clear v1_ssl3_clear +#define ssl3_comp_find v1_ssl3_comp_find +#define ssl3_ctrl v1_ssl3_ctrl +#define ssl3_ctx_callback_ctrl v1_ssl3_ctx_callback_ctrl +#define ssl3_ctx_ctrl v1_ssl3_ctx_ctrl +#define ssl3_default_timeout v1_ssl3_default_timeout +#define ssl3_digest_cached_records v1_ssl3_digest_cached_records +#define ssl3_dispatch_alert v1_ssl3_dispatch_alert +#define ssl3_do_change_cipher_spec v1_ssl3_do_change_cipher_spec +#define ssl3_do_compress v1_ssl3_do_compress +#define ssl3_do_uncompress v1_ssl3_do_uncompress +#define ssl3_do_write v1_ssl3_do_write +#define ssl3_enc v1_ssl3_enc +#define ssl3_final_finish_mac v1_ssl3_final_finish_mac +#define ssl3_finish_mac v1_ssl3_finish_mac +#define ssl3_free v1_ssl3_free +#define ssl3_free_digest_list v1_ssl3_free_digest_list +#define ssl3_generate_master_secret v1_ssl3_generate_master_secret +#define ssl3_get_cipher v1_ssl3_get_cipher +#define ssl3_get_cipher_by_char v1_ssl3_get_cipher_by_char +#define ssl3_get_cipher_by_id v1_ssl3_get_cipher_by_id +#define ssl3_get_cipher_by_std_name v1_ssl3_get_cipher_by_std_name +#define ssl3_get_record v1_ssl3_get_record +#define ssl3_get_req_cert_type v1_ssl3_get_req_cert_type +#define ssl3_handshake_write v1_ssl3_handshake_write +#define ssl3_init_finished_mac v1_ssl3_init_finished_mac +#define ssl3_new v1_ssl3_new +#define ssl3_num_ciphers v1_ssl3_num_ciphers +#define ssl3_output_cert_chain v1_ssl3_output_cert_chain +#define ssl3_peek v1_ssl3_peek +#define ssl3_pending v1_ssl3_pending +#define ssl3_put_cipher_by_char v1_ssl3_put_cipher_by_char +#define ssl3_read v1_ssl3_read +#define ssl3_read_bytes v1_ssl3_read_bytes +#define ssl3_read_n v1_ssl3_read_n +#define SSL3_RECORD_clear v1_SSL3_RECORD_clear +#define SSL3_RECORD_release v1_SSL3_RECORD_release +#define ssl3_record_sequence_update v1_ssl3_record_sequence_update +#define SSL3_RECORD_set_seq_num v1_SSL3_RECORD_set_seq_num +#define ssl3_release_read_buffer v1_ssl3_release_read_buffer +#define ssl3_release_write_buffer v1_ssl3_release_write_buffer +#define ssl3_renegotiate v1_ssl3_renegotiate +#define ssl3_renegotiate_check v1_ssl3_renegotiate_check +#define ssl3_send_alert v1_ssl3_send_alert +#define ssl3_set_handshake_header v1_ssl3_set_handshake_header +#define ssl3_setup_buffers v1_ssl3_setup_buffers +#define ssl3_setup_key_block v1_ssl3_setup_key_block +#define ssl3_setup_read_buffer v1_ssl3_setup_read_buffer +#define ssl3_setup_write_buffer v1_ssl3_setup_write_buffer +#define ssl3_shutdown v1_ssl3_shutdown +#define ssl3_take_mac v1_ssl3_take_mac +#define ssl3_undef_enc_method v1_ssl3_undef_enc_method +#define ssl3_write v1_ssl3_write +#define ssl3_write_bytes v1_ssl3_write_bytes +#define ssl3_write_pending v1_ssl3_write_pending +#define SSL_accept v1_SSL_accept +#define SSL_add1_host v1_SSL_add1_host +#define SSL_add1_to_CA_list v1_SSL_add1_to_CA_list +#define SSL_add_client_CA v1_SSL_add_client_CA +#define SSL_add_dir_cert_subjects_to_stack v1_SSL_add_dir_cert_subjects_to_stack +#define SSL_add_file_cert_subjects_to_stack v1_SSL_add_file_cert_subjects_to_stack +#define SSL_add_ssl_module v1_SSL_add_ssl_module +#define SSL_alert_desc_string v1_SSL_alert_desc_string +#define SSL_alert_desc_string_long v1_SSL_alert_desc_string_long +#define SSL_alert_type_string v1_SSL_alert_type_string +#define SSL_alert_type_string_long v1_SSL_alert_type_string_long +#define SSL_alloc_buffers v1_SSL_alloc_buffers +#define ssl_allow_compression v1_ssl_allow_compression +#define ssl_bad_method v1_ssl_bad_method +#define ssl_build_cert_chain v1_ssl_build_cert_chain +#define SSL_bytes_to_cipher_list v1_SSL_bytes_to_cipher_list +#define ssl_cache_cipherlist v1_ssl_cache_cipherlist +#define SSL_callback_ctrl v1_SSL_callback_ctrl +#define ssl_cert_add0_chain_cert v1_ssl_cert_add0_chain_cert +#define ssl_cert_add1_chain_cert v1_ssl_cert_add1_chain_cert +#define ssl_cert_clear_certs v1_ssl_cert_clear_certs +#define ssl_cert_dup v1_ssl_cert_dup +#define ssl_cert_free v1_ssl_cert_free +#define ssl_cert_get_cert_store v1_ssl_cert_get_cert_store +#define ssl_cert_is_disabled v1_ssl_cert_is_disabled +#define ssl_cert_lookup_by_idx v1_ssl_cert_lookup_by_idx +#define ssl_cert_lookup_by_nid v1_ssl_cert_lookup_by_nid +#define ssl_cert_lookup_by_pkey v1_ssl_cert_lookup_by_pkey +#define ssl_cert_new v1_ssl_cert_new +#define SSL_certs_clear v1_SSL_certs_clear +#define ssl_cert_select_current v1_ssl_cert_select_current +#define ssl_cert_set0_chain v1_ssl_cert_set0_chain +#define ssl_cert_set1_chain v1_ssl_cert_set1_chain +#define ssl_cert_set_cert_cb v1_ssl_cert_set_cert_cb +#define ssl_cert_set_cert_store v1_ssl_cert_set_cert_store +#define ssl_cert_set_current v1_ssl_cert_set_current +#define SSL_check_chain v1_SSL_check_chain +#define SSL_check_private_key v1_SSL_check_private_key +#define ssl_check_srvr_ecc_cert_and_alg v1_ssl_check_srvr_ecc_cert_and_alg +#define ssl_check_version_downgrade v1_ssl_check_version_downgrade +#define ssl_choose_client_version v1_ssl_choose_client_version +#define ssl_choose_server_version v1_ssl_choose_server_version +#define SSL_CIPHER_description v1_SSL_CIPHER_description +#define ssl_cipher_disabled v1_ssl_cipher_disabled +#define SSL_CIPHER_find v1_SSL_CIPHER_find +#define SSL_CIPHER_get_auth_nid v1_SSL_CIPHER_get_auth_nid +#define SSL_CIPHER_get_bits v1_SSL_CIPHER_get_bits +#define SSL_CIPHER_get_cipher_nid v1_SSL_CIPHER_get_cipher_nid +#define SSL_CIPHER_get_digest_nid v1_SSL_CIPHER_get_digest_nid +#define ssl_cipher_get_evp v1_ssl_cipher_get_evp +#define SSL_CIPHER_get_handshake_digest v1_SSL_CIPHER_get_handshake_digest +#define SSL_CIPHER_get_id v1_SSL_CIPHER_get_id +#define SSL_CIPHER_get_kx_nid v1_SSL_CIPHER_get_kx_nid +#define SSL_CIPHER_get_name v1_SSL_CIPHER_get_name +#define ssl_cipher_get_overhead v1_ssl_cipher_get_overhead +#define SSL_CIPHER_get_prf_nid v1_SSL_CIPHER_get_prf_nid +#define SSL_CIPHER_get_protocol_id v1_SSL_CIPHER_get_protocol_id +#define SSL_CIPHER_get_version v1_SSL_CIPHER_get_version +#define ssl_cipher_id_cmp v1_ssl_cipher_id_cmp +#define SSL_CIPHER_is_aead v1_SSL_CIPHER_is_aead +#define ssl_cipher_ptr_id_cmp v1_ssl_cipher_ptr_id_cmp +#define SSL_CIPHER_standard_name v1_SSL_CIPHER_standard_name +#define SSL_clear v1_SSL_clear +#define ssl_clear_bad_session v1_ssl_clear_bad_session +#define ssl_clear_cipher_ctx v1_ssl_clear_cipher_ctx +#define ssl_clear_hash_ctx v1_ssl_clear_hash_ctx +#define SSL_clear_not_quic v1_SSL_clear_not_quic +#define SSL_clear_options v1_SSL_clear_options +#define SSL_clear_quic v1_SSL_clear_quic +#define SSL_client_hello_get0_ciphers v1_SSL_client_hello_get0_ciphers +#define SSL_client_hello_get0_compression_methods v1_SSL_client_hello_get0_compression_methods +#define SSL_client_hello_get0_ext v1_SSL_client_hello_get0_ext +#define SSL_client_hello_get0_legacy_version v1_SSL_client_hello_get0_legacy_version +#define SSL_client_hello_get0_random v1_SSL_client_hello_get0_random +#define SSL_client_hello_get0_session_id v1_SSL_client_hello_get0_session_id +#define SSL_client_hello_get1_extensions_present v1_SSL_client_hello_get1_extensions_present +#define SSL_client_hello_isv2 v1_SSL_client_hello_isv2 +#define SSL_client_version v1_SSL_client_version +#define SSL_COMP_add_compression_method v1_SSL_COMP_add_compression_method +#define ssl_comp_free_compression_methods_int v1_ssl_comp_free_compression_methods_int +#define SSL_COMP_get0_name v1_SSL_COMP_get0_name +#define SSL_COMP_get_compression_methods v1_SSL_COMP_get_compression_methods +#define SSL_COMP_get_id v1_SSL_COMP_get_id +#define SSL_COMP_get_name v1_SSL_COMP_get_name +#define SSL_COMP_set0_compression_methods v1_SSL_COMP_set0_compression_methods +#define SSL_CONF_cmd v1_SSL_CONF_cmd +#define SSL_CONF_cmd_argv v1_SSL_CONF_cmd_argv +#define SSL_CONF_cmd_value_type v1_SSL_CONF_cmd_value_type +#define SSL_CONF_CTX_clear_flags v1_SSL_CONF_CTX_clear_flags +#define SSL_CONF_CTX_finish v1_SSL_CONF_CTX_finish +#define SSL_CONF_CTX_free v1_SSL_CONF_CTX_free +#define SSL_CONF_CTX_new v1_SSL_CONF_CTX_new +#define SSL_CONF_CTX_set1_prefix v1_SSL_CONF_CTX_set1_prefix +#define SSL_CONF_CTX_set_flags v1_SSL_CONF_CTX_set_flags +#define SSL_CONF_CTX_set_ssl v1_SSL_CONF_CTX_set_ssl +#define SSL_CONF_CTX_set_ssl_ctx v1_SSL_CONF_CTX_set_ssl_ctx +#define SSL_config v1_SSL_config +#define SSL_connect v1_SSL_connect +#define SSL_copy_session_id v1_SSL_copy_session_id +#define ssl_create_cipher_list v1_ssl_create_cipher_list +#define SSL_ct_is_enabled v1_SSL_ct_is_enabled +#define SSL_ctrl v1_SSL_ctrl +#define SSL_CTX_add1_to_CA_list v1_SSL_CTX_add1_to_CA_list +#define SSL_CTX_add_client_CA v1_SSL_CTX_add_client_CA +#define SSL_CTX_add_client_custom_ext v1_SSL_CTX_add_client_custom_ext +#define SSL_CTX_add_custom_ext v1_SSL_CTX_add_custom_ext +#define SSL_CTX_add_server_custom_ext v1_SSL_CTX_add_server_custom_ext +#define SSL_CTX_add_session v1_SSL_CTX_add_session +#define SSL_CTX_callback_ctrl v1_SSL_CTX_callback_ctrl +#define SSL_CTX_check_private_key v1_SSL_CTX_check_private_key +#define SSL_CTX_clear_options v1_SSL_CTX_clear_options +#define SSL_CTX_config v1_SSL_CTX_config +#define SSL_CTX_ct_is_enabled v1_SSL_CTX_ct_is_enabled +#define SSL_CTX_ctrl v1_SSL_CTX_ctrl +#define SSL_CTX_dane_clear_flags v1_SSL_CTX_dane_clear_flags +#define SSL_CTX_dane_enable v1_SSL_CTX_dane_enable +#define SSL_CTX_dane_mtype_set v1_SSL_CTX_dane_mtype_set +#define SSL_CTX_dane_set_flags v1_SSL_CTX_dane_set_flags +#define SSL_CTX_enable_ct v1_SSL_CTX_enable_ct +#define SSL_CTX_flush_sessions v1_SSL_CTX_flush_sessions +#define SSL_CTX_free v1_SSL_CTX_free +#define SSL_CTX_get0_CA_list v1_SSL_CTX_get0_CA_list +#define SSL_CTX_get0_certificate v1_SSL_CTX_get0_certificate +#define SSL_CTX_get0_ctlog_store v1_SSL_CTX_get0_ctlog_store +#define SSL_CTX_get0_param v1_SSL_CTX_get0_param +#define SSL_CTX_get0_privatekey v1_SSL_CTX_get0_privatekey +#define SSL_CTX_get0_security_ex_data v1_SSL_CTX_get0_security_ex_data +#define SSL_CTX_get_cert_store v1_SSL_CTX_get_cert_store +#define SSL_CTX_get_ciphers v1_SSL_CTX_get_ciphers +#define SSL_CTX_get_client_CA_list v1_SSL_CTX_get_client_CA_list +#define SSL_CTX_get_client_cert_cb v1_SSL_CTX_get_client_cert_cb +#define SSL_CTX_get_default_passwd_cb v1_SSL_CTX_get_default_passwd_cb +#define SSL_CTX_get_default_passwd_cb_userdata v1_SSL_CTX_get_default_passwd_cb_userdata +#define SSL_CTX_get_ex_data v1_SSL_CTX_get_ex_data +#define SSL_CTX_get_info_callback v1_SSL_CTX_get_info_callback +#define SSL_CTX_get_keylog_callback v1_SSL_CTX_get_keylog_callback +#define SSL_CTX_get_max_early_data v1_SSL_CTX_get_max_early_data +#define SSL_CTX_get_num_tickets v1_SSL_CTX_get_num_tickets +#define SSL_CTX_get_options v1_SSL_CTX_get_options +#define SSL_CTX_get_quiet_shutdown v1_SSL_CTX_get_quiet_shutdown +#define SSL_CTX_get_record_padding_callback_arg v1_SSL_CTX_get_record_padding_callback_arg +#define SSL_CTX_get_recv_max_early_data v1_SSL_CTX_get_recv_max_early_data +#define SSL_CTX_get_security_callback v1_SSL_CTX_get_security_callback +#define SSL_CTX_get_security_level v1_SSL_CTX_get_security_level +#define SSL_CTX_get_ssl_method v1_SSL_CTX_get_ssl_method +#define SSL_CTX_get_timeout v1_SSL_CTX_get_timeout +#define SSL_CTX_get_verify_callback v1_SSL_CTX_get_verify_callback +#define SSL_CTX_get_verify_depth v1_SSL_CTX_get_verify_depth +#define SSL_CTX_get_verify_mode v1_SSL_CTX_get_verify_mode +#define SSL_CTX_has_client_custom_ext v1_SSL_CTX_has_client_custom_ext +#define SSL_CTX_load_verify_locations v1_SSL_CTX_load_verify_locations +#define SSL_CTX_new v1_SSL_CTX_new +#define SSL_CTX_remove_session v1_SSL_CTX_remove_session +#define ssl_ctx_security v1_ssl_ctx_security +#define SSL_CTX_sess_get_get_cb v1_SSL_CTX_sess_get_get_cb +#define SSL_CTX_sess_get_new_cb v1_SSL_CTX_sess_get_new_cb +#define SSL_CTX_sess_get_remove_cb v1_SSL_CTX_sess_get_remove_cb +#define SSL_CTX_sessions v1_SSL_CTX_sessions +#define SSL_CTX_sess_set_get_cb v1_SSL_CTX_sess_set_get_cb +#define SSL_CTX_sess_set_new_cb v1_SSL_CTX_sess_set_new_cb +#define SSL_CTX_sess_set_remove_cb v1_SSL_CTX_sess_set_remove_cb +#define SSL_CTX_set0_CA_list v1_SSL_CTX_set0_CA_list +#define SSL_CTX_set0_ctlog_store v1_SSL_CTX_set0_ctlog_store +#define SSL_CTX_set0_security_ex_data v1_SSL_CTX_set0_security_ex_data +#define SSL_CTX_set1_cert_store v1_SSL_CTX_set1_cert_store +#define SSL_CTX_set1_param v1_SSL_CTX_set1_param +#define SSL_CTX_set_allow_early_data_cb v1_SSL_CTX_set_allow_early_data_cb +#define SSL_CTX_set_alpn_protos v1_SSL_CTX_set_alpn_protos +#define SSL_CTX_set_alpn_select_cb v1_SSL_CTX_set_alpn_select_cb +#define SSL_CTX_set_block_padding v1_SSL_CTX_set_block_padding +#define SSL_CTX_set_cert_cb v1_SSL_CTX_set_cert_cb +#define SSL_CTX_set_cert_store v1_SSL_CTX_set_cert_store +#define SSL_CTX_set_cert_verify_callback v1_SSL_CTX_set_cert_verify_callback +#define SSL_CTX_set_cipher_list v1_SSL_CTX_set_cipher_list +#define SSL_CTX_set_ciphersuites v1_SSL_CTX_set_ciphersuites +#define SSL_CTX_set_client_CA_list v1_SSL_CTX_set_client_CA_list +#define SSL_CTX_set_client_cert_cb v1_SSL_CTX_set_client_cert_cb +#define SSL_CTX_set_client_cert_engine v1_SSL_CTX_set_client_cert_engine +#define SSL_CTX_set_client_hello_cb v1_SSL_CTX_set_client_hello_cb +#define SSL_CTX_set_cookie_generate_cb v1_SSL_CTX_set_cookie_generate_cb +#define SSL_CTX_set_cookie_verify_cb v1_SSL_CTX_set_cookie_verify_cb +#define SSL_CTX_set_ctlog_list_file v1_SSL_CTX_set_ctlog_list_file +#define SSL_CTX_set_ct_validation_callback v1_SSL_CTX_set_ct_validation_callback +#define SSL_CTX_set_default_ctlog_list_file v1_SSL_CTX_set_default_ctlog_list_file +#define SSL_CTX_set_default_passwd_cb v1_SSL_CTX_set_default_passwd_cb +#define SSL_CTX_set_default_passwd_cb_userdata v1_SSL_CTX_set_default_passwd_cb_userdata +#define SSL_CTX_set_default_read_buffer_len v1_SSL_CTX_set_default_read_buffer_len +#define SSL_CTX_set_default_verify_dir v1_SSL_CTX_set_default_verify_dir +#define SSL_CTX_set_default_verify_file v1_SSL_CTX_set_default_verify_file +#define SSL_CTX_set_default_verify_paths v1_SSL_CTX_set_default_verify_paths +#define SSL_CTX_set_ex_data v1_SSL_CTX_set_ex_data +#define SSL_CTX_set_generate_session_id v1_SSL_CTX_set_generate_session_id +#define SSL_CTX_set_info_callback v1_SSL_CTX_set_info_callback +#define SSL_CTX_set_keylog_callback v1_SSL_CTX_set_keylog_callback +#define SSL_CTX_set_max_early_data v1_SSL_CTX_set_max_early_data +#define SSL_CTX_set_msg_callback v1_SSL_CTX_set_msg_callback +#define SSL_CTX_set_next_protos_advertised_cb v1_SSL_CTX_set_next_protos_advertised_cb +#define SSL_CTX_set_next_proto_select_cb v1_SSL_CTX_set_next_proto_select_cb +#define SSL_CTX_set_not_resumable_session_callback v1_SSL_CTX_set_not_resumable_session_callback +#define SSL_CTX_set_num_tickets v1_SSL_CTX_set_num_tickets +#define SSL_CTX_set_options v1_SSL_CTX_set_options +#define SSL_CTX_set_post_handshake_auth v1_SSL_CTX_set_post_handshake_auth +#define SSL_CTX_set_psk_client_callback v1_SSL_CTX_set_psk_client_callback +#define SSL_CTX_set_psk_find_session_callback v1_SSL_CTX_set_psk_find_session_callback +#define SSL_CTX_set_psk_server_callback v1_SSL_CTX_set_psk_server_callback +#define SSL_CTX_set_psk_use_session_callback v1_SSL_CTX_set_psk_use_session_callback +#define SSL_CTX_set_purpose v1_SSL_CTX_set_purpose +#define SSL_CTX_set_quic_method v1_SSL_CTX_set_quic_method +#define SSL_CTX_set_quiet_shutdown v1_SSL_CTX_set_quiet_shutdown +#define SSL_CTX_set_record_padding_callback v1_SSL_CTX_set_record_padding_callback +#define SSL_CTX_set_record_padding_callback_arg v1_SSL_CTX_set_record_padding_callback_arg +#define SSL_CTX_set_recv_max_early_data v1_SSL_CTX_set_recv_max_early_data +#define SSL_CTX_set_security_callback v1_SSL_CTX_set_security_callback +#define SSL_CTX_set_security_level v1_SSL_CTX_set_security_level +#define SSL_CTX_set_session_id_context v1_SSL_CTX_set_session_id_context +#define SSL_CTX_set_session_ticket_cb v1_SSL_CTX_set_session_ticket_cb +#define SSL_CTX_set_srp_cb_arg v1_SSL_CTX_set_srp_cb_arg +#define SSL_CTX_set_srp_client_pwd_callback v1_SSL_CTX_set_srp_client_pwd_callback +#define SSL_CTX_set_srp_password v1_SSL_CTX_set_srp_password +#define SSL_CTX_set_srp_strength v1_SSL_CTX_set_srp_strength +#define SSL_CTX_set_srp_username v1_SSL_CTX_set_srp_username +#define SSL_CTX_set_srp_username_callback v1_SSL_CTX_set_srp_username_callback +#define SSL_CTX_set_srp_verify_param_callback v1_SSL_CTX_set_srp_verify_param_callback +#define SSL_CTX_set_ssl_version v1_SSL_CTX_set_ssl_version +#define SSL_CTX_set_stateless_cookie_generate_cb v1_SSL_CTX_set_stateless_cookie_generate_cb +#define SSL_CTX_set_stateless_cookie_verify_cb v1_SSL_CTX_set_stateless_cookie_verify_cb +#define SSL_CTX_set_timeout v1_SSL_CTX_set_timeout +#define SSL_CTX_set_tlsext_max_fragment_length v1_SSL_CTX_set_tlsext_max_fragment_length +#define SSL_CTX_set_tlsext_use_srtp v1_SSL_CTX_set_tlsext_use_srtp +#define SSL_CTX_set_tmp_dh_callback v1_SSL_CTX_set_tmp_dh_callback +#define SSL_CTX_set_trust v1_SSL_CTX_set_trust +#define SSL_CTX_set_verify v1_SSL_CTX_set_verify +#define SSL_CTX_set_verify_depth v1_SSL_CTX_set_verify_depth +#define SSL_CTX_SRP_CTX_free v1_SSL_CTX_SRP_CTX_free +#define SSL_CTX_SRP_CTX_init v1_SSL_CTX_SRP_CTX_init +#define ssl_ctx_system_config v1_ssl_ctx_system_config +#define SSL_CTX_up_ref v1_SSL_CTX_up_ref +#define SSL_CTX_use_cert_and_key v1_SSL_CTX_use_cert_and_key +#define SSL_CTX_use_certificate v1_SSL_CTX_use_certificate +#define SSL_CTX_use_certificate_ASN1 v1_SSL_CTX_use_certificate_ASN1 +#define SSL_CTX_use_certificate_chain_file v1_SSL_CTX_use_certificate_chain_file +#define SSL_CTX_use_certificate_file v1_SSL_CTX_use_certificate_file +#define SSL_CTX_use_PrivateKey v1_SSL_CTX_use_PrivateKey +#define SSL_CTX_use_PrivateKey_ASN1 v1_SSL_CTX_use_PrivateKey_ASN1 +#define SSL_CTX_use_PrivateKey_file v1_SSL_CTX_use_PrivateKey_file +#define SSL_CTX_use_psk_identity_hint v1_SSL_CTX_use_psk_identity_hint +#define SSL_CTX_use_RSAPrivateKey v1_SSL_CTX_use_RSAPrivateKey +#define SSL_CTX_use_RSAPrivateKey_ASN1 v1_SSL_CTX_use_RSAPrivateKey_ASN1 +#define SSL_CTX_use_RSAPrivateKey_file v1_SSL_CTX_use_RSAPrivateKey_file +#define SSL_CTX_use_serverinfo v1_SSL_CTX_use_serverinfo +#define SSL_CTX_use_serverinfo_ex v1_SSL_CTX_use_serverinfo_ex +#define SSL_CTX_use_serverinfo_file v1_SSL_CTX_use_serverinfo_file +#define SSL_dane_clear_flags v1_SSL_dane_clear_flags +#define SSL_dane_enable v1_SSL_dane_enable +#define SSL_dane_set_flags v1_SSL_dane_set_flags +#define SSL_dane_tlsa_add v1_SSL_dane_tlsa_add +#define ssl_derive v1_ssl_derive +#define ssl_dh_to_pkey v1_ssl_dh_to_pkey +#define ssl_do_client_cert_cb v1_ssl_do_client_cert_cb +#define SSL_do_handshake v1_SSL_do_handshake +#define SSL_dup v1_SSL_dup +#define SSL_dup_CA_list v1_SSL_dup_CA_list +#define SSL_enable_ct v1_SSL_enable_ct +#define SSL_export_keying_material v1_SSL_export_keying_material +#define SSL_export_keying_material_early v1_SSL_export_keying_material_early +#define SSL_extension_supported v1_SSL_extension_supported +#define ssl_fill_hello_random v1_ssl_fill_hello_random +#define SSL_free v1_SSL_free +#define SSL_free_buffers v1_SSL_free_buffers +#define ssl_free_wbio_buffer v1_ssl_free_wbio_buffer +#define ssl_generate_master_secret v1_ssl_generate_master_secret +#define ssl_generate_param_group v1_ssl_generate_param_group +#define ssl_generate_pkey v1_ssl_generate_pkey +#define ssl_generate_pkey_group v1_ssl_generate_pkey_group +#define ssl_generate_session_id v1_ssl_generate_session_id +#define SSL_get0_alpn_selected v1_SSL_get0_alpn_selected +#define SSL_get0_CA_list v1_SSL_get0_CA_list +#define SSL_get0_dane v1_SSL_get0_dane +#define SSL_get0_dane_authority v1_SSL_get0_dane_authority +#define SSL_get0_dane_tlsa v1_SSL_get0_dane_tlsa +#define SSL_get0_next_proto_negotiated v1_SSL_get0_next_proto_negotiated +#define SSL_get0_param v1_SSL_get0_param +#define SSL_get0_peer_CA_list v1_SSL_get0_peer_CA_list +#define SSL_get0_peername v1_SSL_get0_peername +#define SSL_get0_peer_scts v1_SSL_get0_peer_scts +#define SSL_get0_security_ex_data v1_SSL_get0_security_ex_data +#define SSL_get0_verified_chain v1_SSL_get0_verified_chain +#define SSL_get1_session v1_SSL_get1_session +#define SSL_get1_supported_ciphers v1_SSL_get1_supported_ciphers +#define ssl_get_algorithm2 v1_ssl_get_algorithm2 +#define SSL_get_all_async_fds v1_SSL_get_all_async_fds +#define ssl_get_auto_dh v1_ssl_get_auto_dh +#define SSL_get_certificate v1_SSL_get_certificate +#define SSL_get_changed_async_fds v1_SSL_get_changed_async_fds +#define ssl_get_cipher_by_char v1_ssl_get_cipher_by_char +#define SSL_get_cipher_list v1_SSL_get_cipher_list +#define SSL_get_ciphers v1_SSL_get_ciphers +#define ssl_get_ciphers_by_id v1_ssl_get_ciphers_by_id +#define SSL_get_client_CA_list v1_SSL_get_client_CA_list +#define SSL_get_client_ciphers v1_SSL_get_client_ciphers +#define SSL_get_client_random v1_SSL_get_client_random +#define SSL_get_current_cipher v1_SSL_get_current_cipher +#define SSL_get_current_compression v1_SSL_get_current_compression +#define SSL_get_current_expansion v1_SSL_get_current_expansion +#define SSL_get_default_passwd_cb v1_SSL_get_default_passwd_cb +#define SSL_get_default_passwd_cb_userdata v1_SSL_get_default_passwd_cb_userdata +#define SSL_get_default_timeout v1_SSL_get_default_timeout +#define SSL_get_early_data_status v1_SSL_get_early_data_status +#define SSL_get_error v1_SSL_get_error +#define SSL_get_ex_data v1_SSL_get_ex_data +#define SSL_get_ex_data_X509_STORE_CTX_idx v1_SSL_get_ex_data_X509_STORE_CTX_idx +#define SSL_get_fd v1_SSL_get_fd +#define SSL_get_finished v1_SSL_get_finished +#define SSL_get_info_callback v1_SSL_get_info_callback +#define SSL_get_key_update_type v1_SSL_get_key_update_type +#define SSL_get_max_early_data v1_SSL_get_max_early_data +#define ssl_get_max_send_fragment v1_ssl_get_max_send_fragment +#define ssl_get_min_max_version v1_ssl_get_min_max_version +#define ssl_get_new_session v1_ssl_get_new_session +#define SSL_get_num_tickets v1_SSL_get_num_tickets +#define SSL_get_options v1_SSL_get_options +#define SSL_get_peer_cert_chain v1_SSL_get_peer_cert_chain +#define SSL_get_peer_certificate v1_SSL_get_peer_certificate +#define SSL_get_peer_finished v1_SSL_get_peer_finished +#define SSL_get_peer_quic_transport_params v1_SSL_get_peer_quic_transport_params +#define SSL_get_peer_quic_transport_version v1_SSL_get_peer_quic_transport_version +#define SSL_get_peer_signature_type_nid v1_SSL_get_peer_signature_type_nid +#define SSL_get_pending_cipher v1_SSL_get_pending_cipher +#define ssl_get_prev_session v1_ssl_get_prev_session +#define SSL_get_privatekey v1_SSL_get_privatekey +#define SSL_get_psk_identity v1_SSL_get_psk_identity +#define SSL_get_psk_identity_hint v1_SSL_get_psk_identity_hint +#define SSL_get_quic_transport_version v1_SSL_get_quic_transport_version +#define SSL_get_quiet_shutdown v1_SSL_get_quiet_shutdown +#define SSL_get_rbio v1_SSL_get_rbio +#define SSL_get_read_ahead v1_SSL_get_read_ahead +#define SSL_get_record_padding_callback_arg v1_SSL_get_record_padding_callback_arg +#define SSL_get_recv_max_early_data v1_SSL_get_recv_max_early_data +#define SSL_get_rfd v1_SSL_get_rfd +#define SSL_get_security_callback v1_SSL_get_security_callback +#define SSL_get_security_level v1_SSL_get_security_level +#define ssl_get_security_level_bits v1_ssl_get_security_level_bits +#define SSL_get_selected_srtp_profile v1_SSL_get_selected_srtp_profile +#define ssl_get_server_cert_serverinfo v1_ssl_get_server_cert_serverinfo +#define SSL_get_servername v1_SSL_get_servername +#define SSL_get_servername_type v1_SSL_get_servername_type +#define SSL_get_server_random v1_SSL_get_server_random +#define SSL_get_session v1_SSL_get_session +#define SSL_get_shared_ciphers v1_SSL_get_shared_ciphers +#define SSL_get_shared_sigalgs v1_SSL_get_shared_sigalgs +#define SSL_get_shutdown v1_SSL_get_shutdown +#define SSL_get_sigalgs v1_SSL_get_sigalgs +#define SSL_get_signature_type_nid v1_SSL_get_signature_type_nid +#define ssl_get_split_send_fragment v1_ssl_get_split_send_fragment +#define SSL_get_srp_g v1_SSL_get_srp_g +#define SSL_get_srp_N v1_SSL_get_srp_N +#define SSL_get_srp_userinfo v1_SSL_get_srp_userinfo +#define SSL_get_srp_username v1_SSL_get_srp_username +#define SSL_get_srtp_profiles v1_SSL_get_srtp_profiles +#define SSL_get_SSL_CTX v1_SSL_get_SSL_CTX +#define SSL_get_ssl_method v1_SSL_get_ssl_method +#define SSL_get_state v1_SSL_get_state +#define SSL_get_verify_callback v1_SSL_get_verify_callback +#define SSL_get_verify_depth v1_SSL_get_verify_depth +#define SSL_get_verify_mode v1_SSL_get_verify_mode +#define SSL_get_verify_result v1_SSL_get_verify_result +#define SSL_get_version v1_SSL_get_version +#define SSL_get_wbio v1_SSL_get_wbio +#define SSL_get_wfd v1_SSL_get_wfd +#define ssl_handshake_hash v1_ssl_handshake_hash +#define ssl_handshake_md v1_ssl_handshake_md +#define SSL_has_matching_session_id v1_SSL_has_matching_session_id +#define SSL_has_pending v1_SSL_has_pending +#define SSL_in_before v1_SSL_in_before +#define SSL_in_init v1_SSL_in_init +#define ssl_init_wbio_buffer v1_ssl_init_wbio_buffer +#define SSL_is_dtls v1_SSL_is_dtls +#define SSL_is_init_finished v1_SSL_is_init_finished +#define SSL_is_quic v1_SSL_is_quic +#define SSL_is_server v1_SSL_is_server +#define SSL_key_update v1_SSL_key_update +#define ssl_load_ciphers v1_ssl_load_ciphers +#define SSL_load_client_CA_file v1_SSL_load_client_CA_file +#define ssl_log_rsa_client_key_exchange v1_ssl_log_rsa_client_key_exchange +#define ssl_log_secret v1_ssl_log_secret +#define ssl_md v1_ssl_md +#define SSL_new v1_SSL_new +#define SSL_new_session_ticket v1_SSL_new_session_ticket +#define SSL_peek v1_SSL_peek +#define SSL_peek_ex v1_SSL_peek_ex +#define SSL_pending v1_SSL_pending +#define ssl_prf_md v1_ssl_prf_md +#define SSL_process_quic_post_handshake v1_SSL_process_quic_post_handshake +#define ssl_protocol_to_string v1_ssl_protocol_to_string +#define SSL_provide_quic_data v1_SSL_provide_quic_data +#define SSL_quic_max_handshake_flight_len v1_SSL_quic_max_handshake_flight_len +#define SSL_quic_read_level v1_SSL_quic_read_level +#define SSL_quic_write_level v1_SSL_quic_write_level +#define SSL_read v1_SSL_read +#define SSL_read_early_data v1_SSL_read_early_data +#define SSL_read_ex v1_SSL_read_ex +#define ssl_read_internal v1_ssl_read_internal +#define SSL_renegotiate v1_SSL_renegotiate +#define SSL_renegotiate_abbreviated v1_SSL_renegotiate_abbreviated +#define SSL_renegotiate_pending v1_SSL_renegotiate_pending +#define ssl_replace_hash v1_ssl_replace_hash +#define SSL_rstate_string v1_SSL_rstate_string +#define SSL_rstate_string_long v1_SSL_rstate_string_long +#define ssl_security v1_ssl_security +#define ssl_security_cert v1_ssl_security_cert +#define ssl_security_cert_chain v1_ssl_security_cert_chain +#define SSL_select_next_proto v1_SSL_select_next_proto +#define ssl_session_dup v1_ssl_session_dup +#define SSL_SESSION_dup v1_SSL_SESSION_dup +#define SSL_SESSION_free v1_SSL_SESSION_free +#define SSL_SESSION_get0_alpn_selected v1_SSL_SESSION_get0_alpn_selected +#define SSL_SESSION_get0_cipher v1_SSL_SESSION_get0_cipher +#define SSL_SESSION_get0_hostname v1_SSL_SESSION_get0_hostname +#define SSL_SESSION_get0_id_context v1_SSL_SESSION_get0_id_context +#define SSL_SESSION_get0_peer v1_SSL_SESSION_get0_peer +#define SSL_SESSION_get0_ticket v1_SSL_SESSION_get0_ticket +#define SSL_SESSION_get0_ticket_appdata v1_SSL_SESSION_get0_ticket_appdata +#define SSL_SESSION_get_compress_id v1_SSL_SESSION_get_compress_id +#define SSL_SESSION_get_ex_data v1_SSL_SESSION_get_ex_data +#define SSL_SESSION_get_id v1_SSL_SESSION_get_id +#define SSL_SESSION_get_master_key v1_SSL_SESSION_get_master_key +#define SSL_SESSION_get_max_early_data v1_SSL_SESSION_get_max_early_data +#define SSL_SESSION_get_max_fragment_length v1_SSL_SESSION_get_max_fragment_length +#define SSL_SESSION_get_protocol_version v1_SSL_SESSION_get_protocol_version +#define SSL_SESSION_get_ticket_lifetime_hint v1_SSL_SESSION_get_ticket_lifetime_hint +#define SSL_SESSION_get_time v1_SSL_SESSION_get_time +#define SSL_SESSION_get_timeout v1_SSL_SESSION_get_timeout +#define SSL_SESSION_has_ticket v1_SSL_SESSION_has_ticket +#define SSL_SESSION_is_resumable v1_SSL_SESSION_is_resumable +#define SSL_SESSION_new v1_SSL_SESSION_new +#define SSL_SESSION_print v1_SSL_SESSION_print +#define SSL_SESSION_print_fp v1_SSL_SESSION_print_fp +#define SSL_SESSION_print_keylog v1_SSL_SESSION_print_keylog +#define SSL_session_reused v1_SSL_session_reused +#define SSL_SESSION_set1_alpn_selected v1_SSL_SESSION_set1_alpn_selected +#define SSL_SESSION_set1_hostname v1_SSL_SESSION_set1_hostname +#define SSL_SESSION_set1_id v1_SSL_SESSION_set1_id +#define SSL_SESSION_set1_id_context v1_SSL_SESSION_set1_id_context +#define SSL_SESSION_set1_master_key v1_SSL_SESSION_set1_master_key +#define SSL_SESSION_set1_ticket_appdata v1_SSL_SESSION_set1_ticket_appdata +#define SSL_SESSION_set_cipher v1_SSL_SESSION_set_cipher +#define SSL_SESSION_set_ex_data v1_SSL_SESSION_set_ex_data +#define SSL_SESSION_set_max_early_data v1_SSL_SESSION_set_max_early_data +#define SSL_SESSION_set_protocol_version v1_SSL_SESSION_set_protocol_version +#define SSL_SESSION_set_time v1_SSL_SESSION_set_time +#define SSL_SESSION_set_timeout v1_SSL_SESSION_set_timeout +#define SSL_SESSION_up_ref v1_SSL_SESSION_up_ref +#define SSL_set0_CA_list v1_SSL_set0_CA_list +#define SSL_set0_rbio v1_SSL_set0_rbio +#define SSL_set0_security_ex_data v1_SSL_set0_security_ex_data +#define SSL_set0_wbio v1_SSL_set0_wbio +#define SSL_set1_host v1_SSL_set1_host +#define SSL_set1_param v1_SSL_set1_param +#define SSL_set_accept_state v1_SSL_set_accept_state +#define SSL_set_allow_early_data_cb v1_SSL_set_allow_early_data_cb +#define SSL_set_alpn_protos v1_SSL_set_alpn_protos +#define SSL_set_bio v1_SSL_set_bio +#define SSL_set_block_padding v1_SSL_set_block_padding +#define SSL_set_cert_cb v1_SSL_set_cert_cb +#define SSL_set_cipher_list v1_SSL_set_cipher_list +#define SSL_set_ciphersuites v1_SSL_set_ciphersuites +#define SSL_set_client_CA_list v1_SSL_set_client_CA_list +#define ssl_set_client_disabled v1_ssl_set_client_disabled +#define ssl_set_client_hello_version v1_ssl_set_client_hello_version +#define SSL_set_connect_state v1_SSL_set_connect_state +#define SSL_set_ct_validation_callback v1_SSL_set_ct_validation_callback +#define SSL_set_debug v1_SSL_set_debug +#define SSL_set_default_passwd_cb v1_SSL_set_default_passwd_cb +#define SSL_set_default_passwd_cb_userdata v1_SSL_set_default_passwd_cb_userdata +#define SSL_set_default_read_buffer_len v1_SSL_set_default_read_buffer_len +#define SSL_set_ex_data v1_SSL_set_ex_data +#define SSL_set_fd v1_SSL_set_fd +#define SSL_set_generate_session_id v1_SSL_set_generate_session_id +#define SSL_set_hostflags v1_SSL_set_hostflags +#define SSL_set_info_callback v1_SSL_set_info_callback +#define ssl_set_masks v1_ssl_set_masks +#define SSL_set_max_early_data v1_SSL_set_max_early_data +#define SSL_set_msg_callback v1_SSL_set_msg_callback +#define SSL_set_not_resumable_session_callback v1_SSL_set_not_resumable_session_callback +#define SSL_set_num_tickets v1_SSL_set_num_tickets +#define SSL_set_options v1_SSL_set_options +#define SSL_set_post_handshake_auth v1_SSL_set_post_handshake_auth +#define SSL_set_psk_client_callback v1_SSL_set_psk_client_callback +#define SSL_set_psk_find_session_callback v1_SSL_set_psk_find_session_callback +#define SSL_set_psk_server_callback v1_SSL_set_psk_server_callback +#define SSL_set_psk_use_session_callback v1_SSL_set_psk_use_session_callback +#define SSL_set_purpose v1_SSL_set_purpose +#define SSL_set_quic_early_data_enabled v1_SSL_set_quic_early_data_enabled +#define SSL_set_quic_method v1_SSL_set_quic_method +#define SSL_set_quic_transport_params v1_SSL_set_quic_transport_params +#define SSL_set_quic_transport_version v1_SSL_set_quic_transport_version +#define SSL_set_quic_use_legacy_codepoint v1_SSL_set_quic_use_legacy_codepoint +#define SSL_set_quiet_shutdown v1_SSL_set_quiet_shutdown +#define SSL_set_read_ahead v1_SSL_set_read_ahead +#define SSL_set_record_padding_callback v1_SSL_set_record_padding_callback +#define SSL_set_record_padding_callback_arg v1_SSL_set_record_padding_callback_arg +#define SSL_set_recv_max_early_data v1_SSL_set_recv_max_early_data +#define SSL_set_rfd v1_SSL_set_rfd +#define SSL_set_security_callback v1_SSL_set_security_callback +#define SSL_set_security_level v1_SSL_set_security_level +#define SSL_set_session v1_SSL_set_session +#define SSL_set_session_id_context v1_SSL_set_session_id_context +#define SSL_set_session_secret_cb v1_SSL_set_session_secret_cb +#define SSL_set_session_ticket_ext v1_SSL_set_session_ticket_ext +#define SSL_set_session_ticket_ext_cb v1_SSL_set_session_ticket_ext_cb +#define SSL_set_shutdown v1_SSL_set_shutdown +#define ssl_set_sig_mask v1_ssl_set_sig_mask +#define SSL_set_srp_server_param v1_SSL_set_srp_server_param +#define SSL_set_srp_server_param_pw v1_SSL_set_srp_server_param_pw +#define SSL_set_SSL_CTX v1_SSL_set_SSL_CTX +#define SSL_set_ssl_method v1_SSL_set_ssl_method +#define SSL_set_tlsext_max_fragment_length v1_SSL_set_tlsext_max_fragment_length +#define SSL_set_tlsext_use_srtp v1_SSL_set_tlsext_use_srtp +#define SSL_set_tmp_dh_callback v1_SSL_set_tmp_dh_callback +#define SSL_set_trust v1_SSL_set_trust +#define SSL_set_verify v1_SSL_set_verify +#define SSL_set_verify_depth v1_SSL_set_verify_depth +#define SSL_set_verify_result v1_SSL_set_verify_result +#define ssl_set_version_bound v1_ssl_set_version_bound +#define SSL_set_wfd v1_SSL_set_wfd +#define SSL_shutdown v1_SSL_shutdown +#define ssl_sort_cipher_list v1_ssl_sort_cipher_list +#define SSL_SRP_CTX_free v1_SSL_SRP_CTX_free +#define SSL_SRP_CTX_init v1_SSL_SRP_CTX_init +#define SSL_srp_server_param_with_username v1_SSL_srp_server_param_with_username +#define SSL_stateless v1_SSL_stateless +#define SSL_state_string v1_SSL_state_string +#define SSL_state_string_long v1_SSL_state_string_long +#define ssl_undefined_const_function v1_ssl_undefined_const_function +#define ssl_undefined_function v1_ssl_undefined_function +#define ssl_undefined_void_function v1_ssl_undefined_void_function +#define ssl_update_cache v1_ssl_update_cache +#define SSL_up_ref v1_SSL_up_ref +#define SSL_use_cert_and_key v1_SSL_use_cert_and_key +#define SSL_use_certificate v1_SSL_use_certificate +#define SSL_use_certificate_ASN1 v1_SSL_use_certificate_ASN1 +#define SSL_use_certificate_chain_file v1_SSL_use_certificate_chain_file +#define SSL_use_certificate_file v1_SSL_use_certificate_file +#define SSL_use_PrivateKey v1_SSL_use_PrivateKey +#define SSL_use_PrivateKey_ASN1 v1_SSL_use_PrivateKey_ASN1 +#define SSL_use_PrivateKey_file v1_SSL_use_PrivateKey_file +#define SSL_use_psk_identity_hint v1_SSL_use_psk_identity_hint +#define SSL_use_RSAPrivateKey v1_SSL_use_RSAPrivateKey +#define SSL_use_RSAPrivateKey_ASN1 v1_SSL_use_RSAPrivateKey_ASN1 +#define SSL_use_RSAPrivateKey_file v1_SSL_use_RSAPrivateKey_file +#define sslv3_client_method v1_sslv3_client_method +#define SSLv3_client_method v1_SSLv3_client_method +#define SSLv3_enc_data v1_SSLv3_enc_data +#define sslv3_method v1_sslv3_method +#define SSLv3_method v1_SSLv3_method +#define sslv3_server_method v1_sslv3_server_method +#define SSLv3_server_method v1_SSLv3_server_method +#define ssl_validate_ct v1_ssl_validate_ct +#define ssl_verify_cert_chain v1_ssl_verify_cert_chain +#define SSL_verify_client_post_handshake v1_SSL_verify_client_post_handshake +#define SSL_version v1_SSL_version +#define SSL_version_str v1_SSL_version_str +#define ssl_version_supported v1_ssl_version_supported +#define SSL_waiting_for_async v1_SSL_waiting_for_async +#define SSL_want v1_SSL_want +#define SSL_write v1_SSL_write +#define SSL_write_early_data v1_SSL_write_early_data +#define SSL_write_ex v1_SSL_write_ex +#define ssl_write_internal v1_ssl_write_internal +#define ssl_x509err2alert v1_ssl_x509err2alert +#define statem_flush v1_statem_flush +#define SXNET_add_id_asc v1_SXNET_add_id_asc +#define SXNET_add_id_INTEGER v1_SXNET_add_id_INTEGER +#define SXNET_add_id_ulong v1_SXNET_add_id_ulong +#define SXNET_free v1_SXNET_free +#define SXNET_get_id_asc v1_SXNET_get_id_asc +#define SXNET_get_id_INTEGER v1_SXNET_get_id_INTEGER +#define SXNET_get_id_ulong v1_SXNET_get_id_ulong +#define SXNETID_free v1_SXNETID_free +#define SXNETID_it v1_SXNETID_it +#define SXNETID_new v1_SXNETID_new +#define SXNET_it v1_SXNET_it +#define SXNET_new v1_SXNET_new +#define tls11downgrade v1_tls11downgrade +#define tls12_check_peer_sigalg v1_tls12_check_peer_sigalg +#define tls12_copy_sigalgs v1_tls12_copy_sigalgs +#define tls12downgrade v1_tls12downgrade +#define tls12_get_psigalgs v1_tls12_get_psigalgs +#define tls13_alert_code v1_tls13_alert_code +#define tls13_change_cipher_state v1_tls13_change_cipher_state +#define tls13_derive_finishedkey v1_tls13_derive_finishedkey +#define tls13_derive_iv v1_tls13_derive_iv +#define tls13_derive_key v1_tls13_derive_key +#define tls13_enc v1_tls13_enc +#define tls13_export_keying_material v1_tls13_export_keying_material +#define tls13_export_keying_material_early v1_tls13_export_keying_material_early +#define tls13_final_finish_mac v1_tls13_final_finish_mac +#define tls13_generate_handshake_secret v1_tls13_generate_handshake_secret +#define tls13_generate_master_secret v1_tls13_generate_master_secret +#define tls13_generate_secret v1_tls13_generate_secret +#define tls13_hkdf_expand v1_tls13_hkdf_expand +#define tls13_restore_handshake_digest_for_pha v1_tls13_restore_handshake_digest_for_pha +#define tls13_save_handshake_digest_for_pha v1_tls13_save_handshake_digest_for_pha +#define tls13_setup_key_block v1_tls13_setup_key_block +#define tls13_update_key v1_tls13_update_key +#define tls1_alert_code v1_tls1_alert_code +#define tls1_cbc_remove_padding v1_tls1_cbc_remove_padding +#define tls1_change_cipher_state v1_tls1_change_cipher_state +#define tls1_check_chain v1_tls1_check_chain +#define tls1_check_ec_tmp_key v1_tls1_check_ec_tmp_key +#define tls1_check_group_id v1_tls1_check_group_id +#define tls1_clear v1_tls1_clear +#define tls1_default_timeout v1_tls1_default_timeout +#define tls1_enc v1_tls1_enc +#define tls1_export_keying_material v1_tls1_export_keying_material +#define tls1_final_finish_mac v1_tls1_final_finish_mac +#define tls1_free v1_tls1_free +#define tls1_generate_master_secret v1_tls1_generate_master_secret +#define tls1_get_formatlist v1_tls1_get_formatlist +#define tls1_get_supported_groups v1_tls1_get_supported_groups +#define tls1_group_id_lookup v1_tls1_group_id_lookup +#define tls1_lookup_md v1_tls1_lookup_md +#define tls1_mac v1_tls1_mac +#define tls1_new v1_tls1_new +#define tls1_prf_pkey_meth v1_tls1_prf_pkey_meth +#define tls1_process_sigalgs v1_tls1_process_sigalgs +#define tls1_save_sigalgs v1_tls1_save_sigalgs +#define tls1_save_u16 v1_tls1_save_u16 +#define tls1_set_cert_validity v1_tls1_set_cert_validity +#define tls1_set_groups v1_tls1_set_groups +#define tls1_set_groups_list v1_tls1_set_groups_list +#define tls1_set_peer_legacy_sigalg v1_tls1_set_peer_legacy_sigalg +#define tls1_set_raw_sigalgs v1_tls1_set_raw_sigalgs +#define tls1_set_server_sigalgs v1_tls1_set_server_sigalgs +#define tls1_set_sigalgs v1_tls1_set_sigalgs +#define tls1_set_sigalgs_list v1_tls1_set_sigalgs_list +#define tls1_setup_key_block v1_tls1_setup_key_block +#define tls1_shared_group v1_tls1_shared_group +#define tls_check_sigalg_curve v1_tls_check_sigalg_curve +#define tls_choose_sigalg v1_tls_choose_sigalg +#define tls_client_key_exchange_post_work v1_tls_client_key_exchange_post_work +#define TLS_client_method v1_TLS_client_method +#define tls_close_construct_packet v1_tls_close_construct_packet +#define tls_collect_extensions v1_tls_collect_extensions +#define tls_construct_certificate_request v1_tls_construct_certificate_request +#define tls_construct_cert_status v1_tls_construct_cert_status +#define tls_construct_cert_status_body v1_tls_construct_cert_status_body +#define tls_construct_cert_verify v1_tls_construct_cert_verify +#define tls_construct_change_cipher_spec v1_tls_construct_change_cipher_spec +#define tls_construct_client_certificate v1_tls_construct_client_certificate +#define tls_construct_client_hello v1_tls_construct_client_hello +#define tls_construct_client_key_exchange v1_tls_construct_client_key_exchange +#define tls_construct_ctos_alpn v1_tls_construct_ctos_alpn +#define tls_construct_ctos_cookie v1_tls_construct_ctos_cookie +#define tls_construct_ctos_early_data v1_tls_construct_ctos_early_data +#define tls_construct_ctos_ec_pt_formats v1_tls_construct_ctos_ec_pt_formats +#define tls_construct_ctos_ems v1_tls_construct_ctos_ems +#define tls_construct_ctos_etm v1_tls_construct_ctos_etm +#define tls_construct_ctos_key_share v1_tls_construct_ctos_key_share +#define tls_construct_ctos_maxfragmentlen v1_tls_construct_ctos_maxfragmentlen +#define tls_construct_ctos_npn v1_tls_construct_ctos_npn +#define tls_construct_ctos_padding v1_tls_construct_ctos_padding +#define tls_construct_ctos_post_handshake_auth v1_tls_construct_ctos_post_handshake_auth +#define tls_construct_ctos_psk v1_tls_construct_ctos_psk +#define tls_construct_ctos_psk_kex_modes v1_tls_construct_ctos_psk_kex_modes +#define tls_construct_ctos_quic_transport_params v1_tls_construct_ctos_quic_transport_params +#define tls_construct_ctos_quic_transport_params_draft v1_tls_construct_ctos_quic_transport_params_draft +#define tls_construct_ctos_renegotiate v1_tls_construct_ctos_renegotiate +#define tls_construct_ctos_sct v1_tls_construct_ctos_sct +#define tls_construct_ctos_server_name v1_tls_construct_ctos_server_name +#define tls_construct_ctos_session_ticket v1_tls_construct_ctos_session_ticket +#define tls_construct_ctos_sig_algs v1_tls_construct_ctos_sig_algs +#define tls_construct_ctos_srp v1_tls_construct_ctos_srp +#define tls_construct_ctos_status_request v1_tls_construct_ctos_status_request +#define tls_construct_ctos_supported_groups v1_tls_construct_ctos_supported_groups +#define tls_construct_ctos_supported_versions v1_tls_construct_ctos_supported_versions +#define tls_construct_ctos_use_srtp v1_tls_construct_ctos_use_srtp +#define tls_construct_end_of_early_data v1_tls_construct_end_of_early_data +#define tls_construct_extensions v1_tls_construct_extensions +#define tls_construct_finished v1_tls_construct_finished +#define tls_construct_key_update v1_tls_construct_key_update +#define tls_construct_new_session_ticket v1_tls_construct_new_session_ticket +#define tls_construct_next_proto v1_tls_construct_next_proto +#define tls_construct_server_certificate v1_tls_construct_server_certificate +#define tls_construct_server_done v1_tls_construct_server_done +#define tls_construct_server_hello v1_tls_construct_server_hello +#define tls_construct_server_key_exchange v1_tls_construct_server_key_exchange +#define tls_construct_stoc_alpn v1_tls_construct_stoc_alpn +#define tls_construct_stoc_cookie v1_tls_construct_stoc_cookie +#define tls_construct_stoc_cryptopro_bug v1_tls_construct_stoc_cryptopro_bug +#define tls_construct_stoc_early_data v1_tls_construct_stoc_early_data +#define tls_construct_stoc_ec_pt_formats v1_tls_construct_stoc_ec_pt_formats +#define tls_construct_stoc_ems v1_tls_construct_stoc_ems +#define tls_construct_stoc_etm v1_tls_construct_stoc_etm +#define tls_construct_stoc_key_share v1_tls_construct_stoc_key_share +#define tls_construct_stoc_maxfragmentlen v1_tls_construct_stoc_maxfragmentlen +#define tls_construct_stoc_next_proto_neg v1_tls_construct_stoc_next_proto_neg +#define tls_construct_stoc_psk v1_tls_construct_stoc_psk +#define tls_construct_stoc_quic_transport_params v1_tls_construct_stoc_quic_transport_params +#define tls_construct_stoc_quic_transport_params_draft v1_tls_construct_stoc_quic_transport_params_draft +#define tls_construct_stoc_renegotiate v1_tls_construct_stoc_renegotiate +#define tls_construct_stoc_server_name v1_tls_construct_stoc_server_name +#define tls_construct_stoc_session_ticket v1_tls_construct_stoc_session_ticket +#define tls_construct_stoc_status_request v1_tls_construct_stoc_status_request +#define tls_construct_stoc_supported_groups v1_tls_construct_stoc_supported_groups +#define tls_construct_stoc_supported_versions v1_tls_construct_stoc_supported_versions +#define tls_construct_stoc_use_srtp v1_tls_construct_stoc_use_srtp +#define tls_curve_allowed v1_tls_curve_allowed +#define tls_decrypt_ticket v1_tls_decrypt_ticket +#define TLS_FEATURE_free v1_TLS_FEATURE_free +#define TLS_FEATURE_new v1_TLS_FEATURE_new +#define tls_finish_handshake v1_tls_finish_handshake +#define tls_get_message_body v1_tls_get_message_body +#define tls_get_message_header v1_tls_get_message_header +#define tls_get_ticket_from_client v1_tls_get_ticket_from_client +#define tls_handle_alpn v1_tls_handle_alpn +#define TLS_method v1_TLS_method +#define tls_parse_all_extensions v1_tls_parse_all_extensions +#define tls_parse_ctos_alpn v1_tls_parse_ctos_alpn +#define tls_parse_ctos_cookie v1_tls_parse_ctos_cookie +#define tls_parse_ctos_early_data v1_tls_parse_ctos_early_data +#define tls_parse_ctos_ec_pt_formats v1_tls_parse_ctos_ec_pt_formats +#define tls_parse_ctos_ems v1_tls_parse_ctos_ems +#define tls_parse_ctos_etm v1_tls_parse_ctos_etm +#define tls_parse_ctos_key_share v1_tls_parse_ctos_key_share +#define tls_parse_ctos_maxfragmentlen v1_tls_parse_ctos_maxfragmentlen +#define tls_parse_ctos_npn v1_tls_parse_ctos_npn +#define tls_parse_ctos_post_handshake_auth v1_tls_parse_ctos_post_handshake_auth +#define tls_parse_ctos_psk v1_tls_parse_ctos_psk +#define tls_parse_ctos_psk_kex_modes v1_tls_parse_ctos_psk_kex_modes +#define tls_parse_ctos_quic_transport_params v1_tls_parse_ctos_quic_transport_params +#define tls_parse_ctos_quic_transport_params_draft v1_tls_parse_ctos_quic_transport_params_draft +#define tls_parse_ctos_renegotiate v1_tls_parse_ctos_renegotiate +#define tls_parse_ctos_server_name v1_tls_parse_ctos_server_name +#define tls_parse_ctos_session_ticket v1_tls_parse_ctos_session_ticket +#define tls_parse_ctos_sig_algs v1_tls_parse_ctos_sig_algs +#define tls_parse_ctos_sig_algs_cert v1_tls_parse_ctos_sig_algs_cert +#define tls_parse_ctos_srp v1_tls_parse_ctos_srp +#define tls_parse_ctos_status_request v1_tls_parse_ctos_status_request +#define tls_parse_ctos_supported_groups v1_tls_parse_ctos_supported_groups +#define tls_parse_ctos_use_srtp v1_tls_parse_ctos_use_srtp +#define tls_parse_extension v1_tls_parse_extension +#define tls_parse_stoc_alpn v1_tls_parse_stoc_alpn +#define tls_parse_stoc_cookie v1_tls_parse_stoc_cookie +#define tls_parse_stoc_early_data v1_tls_parse_stoc_early_data +#define tls_parse_stoc_ec_pt_formats v1_tls_parse_stoc_ec_pt_formats +#define tls_parse_stoc_ems v1_tls_parse_stoc_ems +#define tls_parse_stoc_etm v1_tls_parse_stoc_etm +#define tls_parse_stoc_key_share v1_tls_parse_stoc_key_share +#define tls_parse_stoc_maxfragmentlen v1_tls_parse_stoc_maxfragmentlen +#define tls_parse_stoc_npn v1_tls_parse_stoc_npn +#define tls_parse_stoc_psk v1_tls_parse_stoc_psk +#define tls_parse_stoc_quic_transport_params v1_tls_parse_stoc_quic_transport_params +#define tls_parse_stoc_quic_transport_params_draft v1_tls_parse_stoc_quic_transport_params_draft +#define tls_parse_stoc_renegotiate v1_tls_parse_stoc_renegotiate +#define tls_parse_stoc_sct v1_tls_parse_stoc_sct +#define tls_parse_stoc_server_name v1_tls_parse_stoc_server_name +#define tls_parse_stoc_session_ticket v1_tls_parse_stoc_session_ticket +#define tls_parse_stoc_status_request v1_tls_parse_stoc_status_request +#define tls_parse_stoc_supported_versions v1_tls_parse_stoc_supported_versions +#define tls_parse_stoc_use_srtp v1_tls_parse_stoc_use_srtp +#define tls_post_process_client_hello v1_tls_post_process_client_hello +#define tls_post_process_client_key_exchange v1_tls_post_process_client_key_exchange +#define tls_prepare_client_certificate v1_tls_prepare_client_certificate +#define tls_process_certificate_request v1_tls_process_certificate_request +#define tls_process_cert_status v1_tls_process_cert_status +#define tls_process_cert_status_body v1_tls_process_cert_status_body +#define tls_process_cert_verify v1_tls_process_cert_verify +#define tls_process_change_cipher_spec v1_tls_process_change_cipher_spec +#define tls_process_client_certificate v1_tls_process_client_certificate +#define tls_process_client_hello v1_tls_process_client_hello +#define tls_process_client_key_exchange v1_tls_process_client_key_exchange +#define tls_process_end_of_early_data v1_tls_process_end_of_early_data +#define tls_process_finished v1_tls_process_finished +#define tls_process_hello_req v1_tls_process_hello_req +#define tls_process_initial_server_flight v1_tls_process_initial_server_flight +#define tls_process_key_exchange v1_tls_process_key_exchange +#define tls_process_key_update v1_tls_process_key_update +#define tls_process_new_session_ticket v1_tls_process_new_session_ticket +#define tls_process_next_proto v1_tls_process_next_proto +#define tls_process_server_certificate v1_tls_process_server_certificate +#define tls_process_server_done v1_tls_process_server_done +#define tls_process_server_hello v1_tls_process_server_hello +#define tls_psk_do_binder v1_tls_psk_do_binder +#define TLS_server_method v1_TLS_server_method +#define tls_setup_handshake v1_tls_setup_handshake +#define tls_use_ticket v1_tls_use_ticket +#define tlsv1_1_client_method v1_tlsv1_1_client_method +#define TLSv1_1_client_method v1_TLSv1_1_client_method +#define TLSv1_1_enc_data v1_TLSv1_1_enc_data +#define tlsv1_1_method v1_tlsv1_1_method +#define TLSv1_1_method v1_TLSv1_1_method +#define tlsv1_1_server_method v1_tlsv1_1_server_method +#define TLSv1_1_server_method v1_TLSv1_1_server_method +#define tlsv1_2_client_method v1_tlsv1_2_client_method +#define TLSv1_2_client_method v1_TLSv1_2_client_method +#define TLSv1_2_enc_data v1_TLSv1_2_enc_data +#define tlsv1_2_method v1_tlsv1_2_method +#define TLSv1_2_method v1_TLSv1_2_method +#define tlsv1_2_server_method v1_tlsv1_2_server_method +#define TLSv1_2_server_method v1_TLSv1_2_server_method +#define tlsv1_3_client_method v1_tlsv1_3_client_method +#define TLSv1_3_enc_data v1_TLSv1_3_enc_data +#define tlsv1_3_method v1_tlsv1_3_method +#define tlsv1_3_server_method v1_tlsv1_3_server_method +#define tlsv1_client_method v1_tlsv1_client_method +#define TLSv1_client_method v1_TLSv1_client_method +#define TLSv1_enc_data v1_TLSv1_enc_data +#if !defined(tlsv1_method) +#define tlsv1_method v1_tlsv1_method +#endif +#define TLSv1_method v1_TLSv1_method +#define tlsv1_server_method v1_tlsv1_server_method +#define TLSv1_server_method v1_TLSv1_server_method +#define tls_validate_all_contexts v1_tls_validate_all_contexts +#define tree_find_sk v1_tree_find_sk +#define TS_ACCURACY_dup v1_TS_ACCURACY_dup +#define TS_ACCURACY_free v1_TS_ACCURACY_free +#define TS_ACCURACY_get_micros v1_TS_ACCURACY_get_micros +#define TS_ACCURACY_get_millis v1_TS_ACCURACY_get_millis +#define TS_ACCURACY_get_seconds v1_TS_ACCURACY_get_seconds +#define TS_ACCURACY_new v1_TS_ACCURACY_new +#define TS_ACCURACY_set_micros v1_TS_ACCURACY_set_micros +#define TS_ACCURACY_set_millis v1_TS_ACCURACY_set_millis +#define TS_ACCURACY_set_seconds v1_TS_ACCURACY_set_seconds +#define TS_ASN1_INTEGER_print_bio v1_TS_ASN1_INTEGER_print_bio +#define TS_CONF_get_tsa_section v1_TS_CONF_get_tsa_section +#define TS_CONF_load_cert v1_TS_CONF_load_cert +#define TS_CONF_load_certs v1_TS_CONF_load_certs +#define TS_CONF_load_key v1_TS_CONF_load_key +#define TS_CONF_set_accuracy v1_TS_CONF_set_accuracy +#define TS_CONF_set_certs v1_TS_CONF_set_certs +#define TS_CONF_set_clock_precision_digits v1_TS_CONF_set_clock_precision_digits +#define TS_CONF_set_crypto_device v1_TS_CONF_set_crypto_device +#define TS_CONF_set_default_engine v1_TS_CONF_set_default_engine +#define TS_CONF_set_def_policy v1_TS_CONF_set_def_policy +#define TS_CONF_set_digests v1_TS_CONF_set_digests +#define TS_CONF_set_ess_cert_id_chain v1_TS_CONF_set_ess_cert_id_chain +#define TS_CONF_set_ess_cert_id_digest v1_TS_CONF_set_ess_cert_id_digest +#define TS_CONF_set_ordering v1_TS_CONF_set_ordering +#define TS_CONF_set_policies v1_TS_CONF_set_policies +#define TS_CONF_set_serial v1_TS_CONF_set_serial +#define TS_CONF_set_signer_cert v1_TS_CONF_set_signer_cert +#define TS_CONF_set_signer_digest v1_TS_CONF_set_signer_digest +#define TS_CONF_set_signer_key v1_TS_CONF_set_signer_key +#define TS_CONF_set_tsa_name v1_TS_CONF_set_tsa_name +#define TS_ext_print_bio v1_TS_ext_print_bio +#define TS_MSG_IMPRINT_dup v1_TS_MSG_IMPRINT_dup +#define TS_MSG_IMPRINT_free v1_TS_MSG_IMPRINT_free +#define TS_MSG_IMPRINT_get_algo v1_TS_MSG_IMPRINT_get_algo +#define TS_MSG_IMPRINT_get_msg v1_TS_MSG_IMPRINT_get_msg +#define TS_MSG_IMPRINT_new v1_TS_MSG_IMPRINT_new +#define TS_MSG_IMPRINT_print_bio v1_TS_MSG_IMPRINT_print_bio +#define TS_MSG_IMPRINT_set_algo v1_TS_MSG_IMPRINT_set_algo +#define TS_MSG_IMPRINT_set_msg v1_TS_MSG_IMPRINT_set_msg +#define TS_OBJ_print_bio v1_TS_OBJ_print_bio +#define TS_REQ_add_ext v1_TS_REQ_add_ext +#define TS_REQ_delete_ext v1_TS_REQ_delete_ext +#define TS_REQ_dup v1_TS_REQ_dup +#define TS_REQ_ext_free v1_TS_REQ_ext_free +#define TS_REQ_free v1_TS_REQ_free +#define TS_REQ_get_cert_req v1_TS_REQ_get_cert_req +#define TS_REQ_get_ext v1_TS_REQ_get_ext +#define TS_REQ_get_ext_by_critical v1_TS_REQ_get_ext_by_critical +#define TS_REQ_get_ext_by_NID v1_TS_REQ_get_ext_by_NID +#define TS_REQ_get_ext_by_OBJ v1_TS_REQ_get_ext_by_OBJ +#define TS_REQ_get_ext_count v1_TS_REQ_get_ext_count +#define TS_REQ_get_ext_d2i v1_TS_REQ_get_ext_d2i +#define TS_REQ_get_exts v1_TS_REQ_get_exts +#define TS_REQ_get_msg_imprint v1_TS_REQ_get_msg_imprint +#define TS_REQ_get_nonce v1_TS_REQ_get_nonce +#define TS_REQ_get_policy_id v1_TS_REQ_get_policy_id +#define TS_REQ_get_version v1_TS_REQ_get_version +#define TS_REQ_new v1_TS_REQ_new +#define TS_REQ_print_bio v1_TS_REQ_print_bio +#define TS_REQ_set_cert_req v1_TS_REQ_set_cert_req +#define TS_REQ_set_msg_imprint v1_TS_REQ_set_msg_imprint +#define TS_REQ_set_nonce v1_TS_REQ_set_nonce +#define TS_REQ_set_policy_id v1_TS_REQ_set_policy_id +#define TS_REQ_set_version v1_TS_REQ_set_version +#define TS_REQ_to_TS_VERIFY_CTX v1_TS_REQ_to_TS_VERIFY_CTX +#define TS_RESP_create_response v1_TS_RESP_create_response +#define TS_RESP_CTX_add_failure_info v1_TS_RESP_CTX_add_failure_info +#define TS_RESP_CTX_add_flags v1_TS_RESP_CTX_add_flags +#define TS_RESP_CTX_add_md v1_TS_RESP_CTX_add_md +#define TS_RESP_CTX_add_policy v1_TS_RESP_CTX_add_policy +#define TS_RESP_CTX_free v1_TS_RESP_CTX_free +#define TS_RESP_CTX_get_request v1_TS_RESP_CTX_get_request +#define TS_RESP_CTX_get_tst_info v1_TS_RESP_CTX_get_tst_info +#define TS_RESP_CTX_new v1_TS_RESP_CTX_new +#define TS_RESP_CTX_set_accuracy v1_TS_RESP_CTX_set_accuracy +#define TS_RESP_CTX_set_certs v1_TS_RESP_CTX_set_certs +#define TS_RESP_CTX_set_clock_precision_digits v1_TS_RESP_CTX_set_clock_precision_digits +#define TS_RESP_CTX_set_def_policy v1_TS_RESP_CTX_set_def_policy +#define TS_RESP_CTX_set_ess_cert_id_digest v1_TS_RESP_CTX_set_ess_cert_id_digest +#define TS_RESP_CTX_set_extension_cb v1_TS_RESP_CTX_set_extension_cb +#define TS_RESP_CTX_set_serial_cb v1_TS_RESP_CTX_set_serial_cb +#define TS_RESP_CTX_set_signer_cert v1_TS_RESP_CTX_set_signer_cert +#define TS_RESP_CTX_set_signer_digest v1_TS_RESP_CTX_set_signer_digest +#define TS_RESP_CTX_set_signer_key v1_TS_RESP_CTX_set_signer_key +#define TS_RESP_CTX_set_status_info v1_TS_RESP_CTX_set_status_info +#define TS_RESP_CTX_set_status_info_cond v1_TS_RESP_CTX_set_status_info_cond +#define TS_RESP_CTX_set_time_cb v1_TS_RESP_CTX_set_time_cb +#define TS_RESP_dup v1_TS_RESP_dup +#define TS_RESP_free v1_TS_RESP_free +#define TS_RESP_get_status_info v1_TS_RESP_get_status_info +#define TS_RESP_get_token v1_TS_RESP_get_token +#define TS_RESP_get_tst_info v1_TS_RESP_get_tst_info +#define TS_RESP_new v1_TS_RESP_new +#define TS_RESP_print_bio v1_TS_RESP_print_bio +#define TS_RESP_set_status_info v1_TS_RESP_set_status_info +#define TS_RESP_set_tst_info v1_TS_RESP_set_tst_info +#define TS_RESP_verify_response v1_TS_RESP_verify_response +#define TS_RESP_verify_signature v1_TS_RESP_verify_signature +#define TS_RESP_verify_token v1_TS_RESP_verify_token +#define TS_STATUS_INFO_dup v1_TS_STATUS_INFO_dup +#define TS_STATUS_INFO_free v1_TS_STATUS_INFO_free +#define TS_STATUS_INFO_get0_failure_info v1_TS_STATUS_INFO_get0_failure_info +#define TS_STATUS_INFO_get0_status v1_TS_STATUS_INFO_get0_status +#define TS_STATUS_INFO_get0_text v1_TS_STATUS_INFO_get0_text +#define TS_STATUS_INFO_new v1_TS_STATUS_INFO_new +#define TS_STATUS_INFO_print_bio v1_TS_STATUS_INFO_print_bio +#define TS_STATUS_INFO_set_status v1_TS_STATUS_INFO_set_status +#define TS_TST_INFO_add_ext v1_TS_TST_INFO_add_ext +#define TS_TST_INFO_delete_ext v1_TS_TST_INFO_delete_ext +#define TS_TST_INFO_dup v1_TS_TST_INFO_dup +#define TS_TST_INFO_ext_free v1_TS_TST_INFO_ext_free +#define TS_TST_INFO_free v1_TS_TST_INFO_free +#define TS_TST_INFO_get_accuracy v1_TS_TST_INFO_get_accuracy +#define TS_TST_INFO_get_ext v1_TS_TST_INFO_get_ext +#define TS_TST_INFO_get_ext_by_critical v1_TS_TST_INFO_get_ext_by_critical +#define TS_TST_INFO_get_ext_by_NID v1_TS_TST_INFO_get_ext_by_NID +#define TS_TST_INFO_get_ext_by_OBJ v1_TS_TST_INFO_get_ext_by_OBJ +#define TS_TST_INFO_get_ext_count v1_TS_TST_INFO_get_ext_count +#define TS_TST_INFO_get_ext_d2i v1_TS_TST_INFO_get_ext_d2i +#define TS_TST_INFO_get_exts v1_TS_TST_INFO_get_exts +#define TS_TST_INFO_get_msg_imprint v1_TS_TST_INFO_get_msg_imprint +#define TS_TST_INFO_get_nonce v1_TS_TST_INFO_get_nonce +#define TS_TST_INFO_get_ordering v1_TS_TST_INFO_get_ordering +#define TS_TST_INFO_get_policy_id v1_TS_TST_INFO_get_policy_id +#define TS_TST_INFO_get_serial v1_TS_TST_INFO_get_serial +#define TS_TST_INFO_get_time v1_TS_TST_INFO_get_time +#define TS_TST_INFO_get_tsa v1_TS_TST_INFO_get_tsa +#define TS_TST_INFO_get_version v1_TS_TST_INFO_get_version +#define TS_TST_INFO_new v1_TS_TST_INFO_new +#define TS_TST_INFO_print_bio v1_TS_TST_INFO_print_bio +#define TS_TST_INFO_set_accuracy v1_TS_TST_INFO_set_accuracy +#define TS_TST_INFO_set_msg_imprint v1_TS_TST_INFO_set_msg_imprint +#define TS_TST_INFO_set_nonce v1_TS_TST_INFO_set_nonce +#define TS_TST_INFO_set_ordering v1_TS_TST_INFO_set_ordering +#define TS_TST_INFO_set_policy_id v1_TS_TST_INFO_set_policy_id +#define TS_TST_INFO_set_serial v1_TS_TST_INFO_set_serial +#define TS_TST_INFO_set_time v1_TS_TST_INFO_set_time +#define TS_TST_INFO_set_tsa v1_TS_TST_INFO_set_tsa +#define TS_TST_INFO_set_version v1_TS_TST_INFO_set_version +#define TS_VERIFY_CTS_set_certs v1_TS_VERIFY_CTS_set_certs +#define TS_VERIFY_CTX_add_flags v1_TS_VERIFY_CTX_add_flags +#define TS_VERIFY_CTX_cleanup v1_TS_VERIFY_CTX_cleanup +#define TS_VERIFY_CTX_free v1_TS_VERIFY_CTX_free +#define TS_VERIFY_CTX_init v1_TS_VERIFY_CTX_init +#define TS_VERIFY_CTX_new v1_TS_VERIFY_CTX_new +#define TS_VERIFY_CTX_set_data v1_TS_VERIFY_CTX_set_data +#define TS_VERIFY_CTX_set_flags v1_TS_VERIFY_CTX_set_flags +#define TS_VERIFY_CTX_set_imprint v1_TS_VERIFY_CTX_set_imprint +#define TS_VERIFY_CTX_set_store v1_TS_VERIFY_CTX_set_store +#define TS_X509_ALGOR_print_bio v1_TS_X509_ALGOR_print_bio +#define TXT_DB_create_index v1_TXT_DB_create_index +#define TXT_DB_free v1_TXT_DB_free +#define TXT_DB_get_by_index v1_TXT_DB_get_by_index +#define TXT_DB_insert v1_TXT_DB_insert +#define TXT_DB_read v1_TXT_DB_read +#define TXT_DB_write v1_TXT_DB_write +#define UI_add_error_string v1_UI_add_error_string +#define UI_add_info_string v1_UI_add_info_string +#define UI_add_input_boolean v1_UI_add_input_boolean +#define UI_add_input_string v1_UI_add_input_string +#define UI_add_user_data v1_UI_add_user_data +#define UI_add_verify_string v1_UI_add_verify_string +#define UI_construct_prompt v1_UI_construct_prompt +#define UI_create_method v1_UI_create_method +#define UI_ctrl v1_UI_ctrl +#define UI_destroy_method v1_UI_destroy_method +#define UI_dup_error_string v1_UI_dup_error_string +#define UI_dup_info_string v1_UI_dup_info_string +#define UI_dup_input_boolean v1_UI_dup_input_boolean +#define UI_dup_input_string v1_UI_dup_input_string +#define UI_dup_user_data v1_UI_dup_user_data +#define UI_dup_verify_string v1_UI_dup_verify_string +#define UI_free v1_UI_free +#define UI_get0_action_string v1_UI_get0_action_string +#define UI_get0_output_string v1_UI_get0_output_string +#define UI_get0_result v1_UI_get0_result +#define UI_get0_result_string v1_UI_get0_result_string +#define UI_get0_test_string v1_UI_get0_test_string +#define UI_get0_user_data v1_UI_get0_user_data +#define UI_get_default_method v1_UI_get_default_method +#define UI_get_ex_data v1_UI_get_ex_data +#define UI_get_input_flags v1_UI_get_input_flags +#define UI_get_method v1_UI_get_method +#define UI_get_result_length v1_UI_get_result_length +#define UI_get_result_maxsize v1_UI_get_result_maxsize +#define UI_get_result_minsize v1_UI_get_result_minsize +#define UI_get_result_string_length v1_UI_get_result_string_length +#define UI_get_string_type v1_UI_get_string_type +#define UI_method_get_closer v1_UI_method_get_closer +#define UI_method_get_data_destructor v1_UI_method_get_data_destructor +#define UI_method_get_data_duplicator v1_UI_method_get_data_duplicator +#define UI_method_get_ex_data v1_UI_method_get_ex_data +#define UI_method_get_flusher v1_UI_method_get_flusher +#define UI_method_get_opener v1_UI_method_get_opener +#define UI_method_get_prompt_constructor v1_UI_method_get_prompt_constructor +#define UI_method_get_reader v1_UI_method_get_reader +#define UI_method_get_writer v1_UI_method_get_writer +#define UI_method_set_closer v1_UI_method_set_closer +#define UI_method_set_data_duplicator v1_UI_method_set_data_duplicator +#define UI_method_set_ex_data v1_UI_method_set_ex_data +#define UI_method_set_flusher v1_UI_method_set_flusher +#define UI_method_set_opener v1_UI_method_set_opener +#define UI_method_set_prompt_constructor v1_UI_method_set_prompt_constructor +#define UI_method_set_reader v1_UI_method_set_reader +#define UI_method_set_writer v1_UI_method_set_writer +#define UI_new v1_UI_new +#define UI_new_method v1_UI_new_method +#define UINT32_it v1_UINT32_it +#define UINT64_it v1_UINT64_it +#define UI_null v1_UI_null +#define UI_OpenSSL v1_UI_OpenSSL +#define UI_process v1_UI_process +#define UI_set_default_method v1_UI_set_default_method +#define UI_set_ex_data v1_UI_set_ex_data +#define UI_set_method v1_UI_set_method +#define UI_set_result v1_UI_set_result +#define UI_set_result_ex v1_UI_set_result_ex +#define UI_UTIL_read_pw v1_UI_UTIL_read_pw +#define UI_UTIL_read_pw_string v1_UI_UTIL_read_pw_string +#define UI_UTIL_wrap_read_pem_callback v1_UI_UTIL_wrap_read_pem_callback +#define USERNOTICE_free v1_USERNOTICE_free +#define USERNOTICE_it v1_USERNOTICE_it +#define USERNOTICE_new v1_USERNOTICE_new +#define UTF8_getc v1_UTF8_getc +#define UTF8_putc v1_UTF8_putc +#define v2i_ASN1_BIT_STRING v1_v2i_ASN1_BIT_STRING +#define v2i_GENERAL_NAME v1_v2i_GENERAL_NAME +#define v2i_GENERAL_NAME_ex v1_v2i_GENERAL_NAME_ex +#define v2i_GENERAL_NAMES v1_v2i_GENERAL_NAMES +#define v3_addr v1_v3_addr +#define v3_akey_id v1_v3_akey_id +#define v3_alt v1_v3_alt +#define v3_asid v1_v3_asid +#define v3_bcons v1_v3_bcons +#define v3_cpols v1_v3_cpols +#define v3_crld v1_v3_crld +#define v3_crl_hold v1_v3_crl_hold +#define v3_crl_invdate v1_v3_crl_invdate +#define v3_crl_num v1_v3_crl_num +#define v3_crl_reason v1_v3_crl_reason +#define v3_ct_scts v1_v3_ct_scts +#define v3_delta_crl v1_v3_delta_crl +#define v3_ext_admission v1_v3_ext_admission +#define v3_ext_ku v1_v3_ext_ku +#define v3_freshest_crl v1_v3_freshest_crl +#define v3_idp v1_v3_idp +#define v3_info v1_v3_info +#define v3_inhibit_anyp v1_v3_inhibit_anyp +#define v3_key_usage v1_v3_key_usage +#define v3_name_constraints v1_v3_name_constraints +#define v3_nscert v1_v3_nscert +#define v3_ns_ia5_list v1_v3_ns_ia5_list +#define v3_ocsp_accresp v1_v3_ocsp_accresp +#define v3_ocsp_acutoff v1_v3_ocsp_acutoff +#define v3_ocsp_crlid v1_v3_ocsp_crlid +#define v3_ocsp_nocheck v1_v3_ocsp_nocheck +#define v3_ocsp_nonce v1_v3_ocsp_nonce +#define v3_ocsp_serviceloc v1_v3_ocsp_serviceloc +#define v3_pci v1_v3_pci +#define v3_pkey_usage_period v1_v3_pkey_usage_period +#define v3_policy_constraints v1_v3_policy_constraints +#define v3_policy_mappings v1_v3_policy_mappings +#define v3_sinfo v1_v3_sinfo +#define v3_skey_id v1_v3_skey_id +#define v3_sxnet v1_v3_sxnet +#define v3_tls_feature v1_v3_tls_feature +#define vpaes_cbc_encrypt v1_vpaes_cbc_encrypt +#define vpaes_decrypt v1_vpaes_decrypt +#define vpaes_encrypt v1_vpaes_encrypt +#define vpaes_set_decrypt_key v1_vpaes_set_decrypt_key +#define vpaes_set_encrypt_key v1_vpaes_set_encrypt_key +#define WHIRLPOOL v1_WHIRLPOOL +#define WHIRLPOOL_BitUpdate v1_WHIRLPOOL_BitUpdate +#define whirlpool_block v1_whirlpool_block +#define WHIRLPOOL_Final v1_WHIRLPOOL_Final +#define WHIRLPOOL_Init v1_WHIRLPOOL_Init +#define WHIRLPOOL_Update v1_WHIRLPOOL_Update +#define WPACKET_allocate_bytes v1_WPACKET_allocate_bytes +#define WPACKET_cleanup v1_WPACKET_cleanup +#define WPACKET_close v1_WPACKET_close +#define WPACKET_fill_lengths v1_WPACKET_fill_lengths +#define WPACKET_finish v1_WPACKET_finish +#define WPACKET_get_curr v1_WPACKET_get_curr +#define WPACKET_get_length v1_WPACKET_get_length +#define WPACKET_get_total_written v1_WPACKET_get_total_written +#define WPACKET_init v1_WPACKET_init +#define WPACKET_init_len v1_WPACKET_init_len +#define WPACKET_init_static_len v1_WPACKET_init_static_len +#define WPACKET_memcpy v1_WPACKET_memcpy +#define WPACKET_memset v1_WPACKET_memset +#define WPACKET_put_bytes__ v1_WPACKET_put_bytes__ +#define WPACKET_reserve_bytes v1_WPACKET_reserve_bytes +#define WPACKET_set_flags v1_WPACKET_set_flags +#define WPACKET_set_max_size v1_WPACKET_set_max_size +#define WPACKET_start_sub_packet v1_WPACKET_start_sub_packet +#define WPACKET_start_sub_packet_len__ v1_WPACKET_start_sub_packet_len__ +#define WPACKET_sub_allocate_bytes__ v1_WPACKET_sub_allocate_bytes__ +#define WPACKET_sub_memcpy__ v1_WPACKET_sub_memcpy__ +#define WPACKET_sub_reserve_bytes__ v1_WPACKET_sub_reserve_bytes__ +#define X25519 v1_X25519 +#define x25519_fe51_mul v1_x25519_fe51_mul +#define x25519_fe51_mul121666 v1_x25519_fe51_mul121666 +#define x25519_fe51_sqr v1_x25519_fe51_sqr +#define x25519_fe64_add v1_x25519_fe64_add +#define x25519_fe64_eligible v1_x25519_fe64_eligible +#define x25519_fe64_mul v1_x25519_fe64_mul +#define x25519_fe64_mul121666 v1_x25519_fe64_mul121666 +#define x25519_fe64_sqr v1_x25519_fe64_sqr +#define x25519_fe64_sub v1_x25519_fe64_sub +#define x25519_fe64_tobytes v1_x25519_fe64_tobytes +#define X25519_public_from_private v1_X25519_public_from_private +#define X448 v1_X448 +#define x448_derive_public_key v1_x448_derive_public_key +#define x448_int v1_x448_int +#define X448_public_from_private v1_X448_public_from_private +#define X509_add1_ext_i2d v1_X509_add1_ext_i2d +#define X509_add1_reject_object v1_X509_add1_reject_object +#define X509_add1_trust_object v1_X509_add1_trust_object +#define X509_add_ext v1_X509_add_ext +#define X509_ALGOR_cmp v1_X509_ALGOR_cmp +#define X509_ALGOR_copy v1_X509_ALGOR_copy +#define X509_ALGOR_dup v1_X509_ALGOR_dup +#define X509_ALGOR_free v1_X509_ALGOR_free +#define X509_ALGOR_get0 v1_X509_ALGOR_get0 +#define X509_ALGOR_it v1_X509_ALGOR_it +#define X509_ALGOR_new v1_X509_ALGOR_new +#define X509_ALGOR_set0 v1_X509_ALGOR_set0 +#define X509_ALGOR_set_md v1_X509_ALGOR_set_md +#define X509_ALGORS_it v1_X509_ALGORS_it +#define X509_alias_get0 v1_X509_alias_get0 +#define X509_alias_set1 v1_X509_alias_set1 +#define X509at_add1_attr v1_X509at_add1_attr +#define X509at_add1_attr_by_NID v1_X509at_add1_attr_by_NID +#define X509at_add1_attr_by_OBJ v1_X509at_add1_attr_by_OBJ +#define X509at_add1_attr_by_txt v1_X509at_add1_attr_by_txt +#define X509at_delete_attr v1_X509at_delete_attr +#define X509at_get0_data_by_OBJ v1_X509at_get0_data_by_OBJ +#define X509at_get_attr v1_X509at_get_attr +#define X509at_get_attr_by_NID v1_X509at_get_attr_by_NID +#define X509at_get_attr_by_OBJ v1_X509at_get_attr_by_OBJ +#define X509at_get_attr_count v1_X509at_get_attr_count +#define X509_ATTRIBUTE_count v1_X509_ATTRIBUTE_count +#define X509_ATTRIBUTE_create v1_X509_ATTRIBUTE_create +#define X509_ATTRIBUTE_create_by_NID v1_X509_ATTRIBUTE_create_by_NID +#define X509_ATTRIBUTE_create_by_OBJ v1_X509_ATTRIBUTE_create_by_OBJ +#define X509_ATTRIBUTE_create_by_txt v1_X509_ATTRIBUTE_create_by_txt +#define X509_ATTRIBUTE_dup v1_X509_ATTRIBUTE_dup +#define X509_ATTRIBUTE_free v1_X509_ATTRIBUTE_free +#define X509_ATTRIBUTE_get0_data v1_X509_ATTRIBUTE_get0_data +#define X509_ATTRIBUTE_get0_object v1_X509_ATTRIBUTE_get0_object +#define X509_ATTRIBUTE_get0_type v1_X509_ATTRIBUTE_get0_type +#define X509_ATTRIBUTE_it v1_X509_ATTRIBUTE_it +#define X509_ATTRIBUTE_new v1_X509_ATTRIBUTE_new +#define X509_ATTRIBUTE_set1_data v1_X509_ATTRIBUTE_set1_data +#define X509_ATTRIBUTE_set1_object v1_X509_ATTRIBUTE_set1_object +#define X509_aux_print v1_X509_aux_print +#define X509_CERT_AUX_free v1_X509_CERT_AUX_free +#define X509_CERT_AUX_it v1_X509_CERT_AUX_it +#define X509_CERT_AUX_new v1_X509_CERT_AUX_new +#define X509_certificate_type v1_X509_certificate_type +#define X509_chain_check_suiteb v1_X509_chain_check_suiteb +#define X509_chain_up_ref v1_X509_chain_up_ref +#define X509_check_akid v1_X509_check_akid +#define X509_check_ca v1_X509_check_ca +#define x509_check_cert_time v1_x509_check_cert_time +#define X509_check_email v1_X509_check_email +#define X509_check_host v1_X509_check_host +#define X509_check_ip v1_X509_check_ip +#define X509_check_ip_asc v1_X509_check_ip_asc +#define X509_check_issued v1_X509_check_issued +#define X509_check_private_key v1_X509_check_private_key +#define X509_check_purpose v1_X509_check_purpose +#define X509_check_trust v1_X509_check_trust +#define X509_CINF_free v1_X509_CINF_free +#define X509_CINF_it v1_X509_CINF_it +#define X509_CINF_new v1_X509_CINF_new +#define X509_cmp v1_X509_cmp +#define X509_cmp_current_time v1_X509_cmp_current_time +#define X509_cmp_time v1_X509_cmp_time +#define X509_CRL_add0_revoked v1_X509_CRL_add0_revoked +#define X509_CRL_add1_ext_i2d v1_X509_CRL_add1_ext_i2d +#define X509_CRL_add_ext v1_X509_CRL_add_ext +#define X509_CRL_check_suiteb v1_X509_CRL_check_suiteb +#define X509_CRL_cmp v1_X509_CRL_cmp +#define X509_CRL_delete_ext v1_X509_CRL_delete_ext +#define X509_CRL_diff v1_X509_CRL_diff +#define X509_CRL_digest v1_X509_CRL_digest +#define X509_CRL_dup v1_X509_CRL_dup +#define X509_CRL_free v1_X509_CRL_free +#define X509_CRL_get0_by_cert v1_X509_CRL_get0_by_cert +#define X509_CRL_get0_by_serial v1_X509_CRL_get0_by_serial +#define X509_CRL_get0_extensions v1_X509_CRL_get0_extensions +#define X509_CRL_get0_lastUpdate v1_X509_CRL_get0_lastUpdate +#define X509_CRL_get0_nextUpdate v1_X509_CRL_get0_nextUpdate +#define X509_CRL_get0_signature v1_X509_CRL_get0_signature +#define X509_CRL_get_ext v1_X509_CRL_get_ext +#define X509_CRL_get_ext_by_critical v1_X509_CRL_get_ext_by_critical +#define X509_CRL_get_ext_by_NID v1_X509_CRL_get_ext_by_NID +#define X509_CRL_get_ext_by_OBJ v1_X509_CRL_get_ext_by_OBJ +#define X509_CRL_get_ext_count v1_X509_CRL_get_ext_count +#define X509_CRL_get_ext_d2i v1_X509_CRL_get_ext_d2i +#define X509_CRL_get_issuer v1_X509_CRL_get_issuer +#define X509_CRL_get_lastUpdate v1_X509_CRL_get_lastUpdate +#define X509_CRL_get_meth_data v1_X509_CRL_get_meth_data +#define X509_CRL_get_nextUpdate v1_X509_CRL_get_nextUpdate +#define X509_CRL_get_REVOKED v1_X509_CRL_get_REVOKED +#define X509_CRL_get_signature_nid v1_X509_CRL_get_signature_nid +#define X509_CRL_get_version v1_X509_CRL_get_version +#define X509_CRL_http_nbio v1_X509_CRL_http_nbio +#define X509_CRL_INFO_free v1_X509_CRL_INFO_free +#define X509_CRL_INFO_it v1_X509_CRL_INFO_it +#define X509_CRL_INFO_new v1_X509_CRL_INFO_new +#define X509_CRL_it v1_X509_CRL_it +#define X509_CRL_match v1_X509_CRL_match +#define X509_CRL_METHOD_free v1_X509_CRL_METHOD_free +#define X509_CRL_METHOD_new v1_X509_CRL_METHOD_new +#define X509_CRL_new v1_X509_CRL_new +#define X509_CRL_print v1_X509_CRL_print +#define X509_CRL_print_ex v1_X509_CRL_print_ex +#define X509_CRL_print_fp v1_X509_CRL_print_fp +#define X509_CRL_set1_lastUpdate v1_X509_CRL_set1_lastUpdate +#define X509_CRL_set1_nextUpdate v1_X509_CRL_set1_nextUpdate +#define X509_CRL_set_default_method v1_X509_CRL_set_default_method +#define X509_CRL_set_issuer_name v1_X509_CRL_set_issuer_name +#define X509_CRL_set_meth_data v1_X509_CRL_set_meth_data +#define X509_CRL_set_version v1_X509_CRL_set_version +#define X509_CRL_sign v1_X509_CRL_sign +#define X509_CRL_sign_ctx v1_X509_CRL_sign_ctx +#define X509_CRL_sort v1_X509_CRL_sort +#define X509_CRL_up_ref v1_X509_CRL_up_ref +#define X509_CRL_verify v1_X509_CRL_verify +#define X509_delete_ext v1_X509_delete_ext +#define X509_digest v1_X509_digest +#define X509_dup v1_X509_dup +#define X509_email_free v1_X509_email_free +#define X509_EXTENSION_create_by_NID v1_X509_EXTENSION_create_by_NID +#define X509_EXTENSION_create_by_OBJ v1_X509_EXTENSION_create_by_OBJ +#define X509_EXTENSION_dup v1_X509_EXTENSION_dup +#define X509_EXTENSION_free v1_X509_EXTENSION_free +#define X509_EXTENSION_get_critical v1_X509_EXTENSION_get_critical +#define X509_EXTENSION_get_data v1_X509_EXTENSION_get_data +#define X509_EXTENSION_get_object v1_X509_EXTENSION_get_object +#define X509_EXTENSION_it v1_X509_EXTENSION_it +#define X509_EXTENSION_new v1_X509_EXTENSION_new +#define X509_EXTENSION_set_critical v1_X509_EXTENSION_set_critical +#define X509_EXTENSION_set_data v1_X509_EXTENSION_set_data +#define X509_EXTENSION_set_object v1_X509_EXTENSION_set_object +#define X509_EXTENSIONS_it v1_X509_EXTENSIONS_it +#define X509_find_by_issuer_and_serial v1_X509_find_by_issuer_and_serial +#define X509_find_by_subject v1_X509_find_by_subject +#define X509_free v1_X509_free +#define X509_get0_authority_issuer v1_X509_get0_authority_issuer +#define X509_get0_authority_key_id v1_X509_get0_authority_key_id +#define X509_get0_authority_serial v1_X509_get0_authority_serial +#define X509_get0_extensions v1_X509_get0_extensions +#define X509_get0_notAfter v1_X509_get0_notAfter +#define X509_get0_notBefore v1_X509_get0_notBefore +#define X509_get0_pubkey v1_X509_get0_pubkey +#define X509_get0_pubkey_bitstr v1_X509_get0_pubkey_bitstr +#define X509_get0_reject_objects v1_X509_get0_reject_objects +#define X509_get0_serialNumber v1_X509_get0_serialNumber +#define X509_get0_signature v1_X509_get0_signature +#define X509_get0_subject_key_id v1_X509_get0_subject_key_id +#define X509_get0_tbs_sigalg v1_X509_get0_tbs_sigalg +#define X509_get0_trust_objects v1_X509_get0_trust_objects +#define X509_get0_uids v1_X509_get0_uids +#define X509_get1_email v1_X509_get1_email +#define X509_get1_ocsp v1_X509_get1_ocsp +#define X509_get_default_cert_area v1_X509_get_default_cert_area +#define X509_get_default_cert_dir v1_X509_get_default_cert_dir +#define X509_get_default_cert_dir_env v1_X509_get_default_cert_dir_env +#define X509_get_default_cert_file v1_X509_get_default_cert_file +#define X509_get_default_cert_file_env v1_X509_get_default_cert_file_env +#define X509_get_default_private_dir v1_X509_get_default_private_dir +#define X509_get_ex_data v1_X509_get_ex_data +#define X509_get_ext v1_X509_get_ext +#define X509_get_ext_by_critical v1_X509_get_ext_by_critical +#define X509_get_ext_by_NID v1_X509_get_ext_by_NID +#define X509_get_ext_by_OBJ v1_X509_get_ext_by_OBJ +#define X509_get_ext_count v1_X509_get_ext_count +#define X509_get_ext_d2i v1_X509_get_ext_d2i +#define X509_get_extended_key_usage v1_X509_get_extended_key_usage +#define X509_get_extension_flags v1_X509_get_extension_flags +#define X509_get_issuer_name v1_X509_get_issuer_name +#define X509_get_key_usage v1_X509_get_key_usage +#define X509_getm_notAfter v1_X509_getm_notAfter +#define X509_getm_notBefore v1_X509_getm_notBefore +#define X509_get_pathlen v1_X509_get_pathlen +#define X509_get_proxy_pathlen v1_X509_get_proxy_pathlen +#define X509_get_pubkey v1_X509_get_pubkey +#define X509_get_pubkey_parameters v1_X509_get_pubkey_parameters +#define X509_get_serialNumber v1_X509_get_serialNumber +#define X509_get_signature_info v1_X509_get_signature_info +#define X509_get_signature_nid v1_X509_get_signature_nid +#define X509_get_signature_type v1_X509_get_signature_type +#define X509_get_subject_name v1_X509_get_subject_name +#define X509_get_version v1_X509_get_version +#define X509_get_X509_PUBKEY v1_X509_get_X509_PUBKEY +#define X509_gmtime_adj v1_X509_gmtime_adj +#define X509_http_nbio v1_X509_http_nbio +#define X509_INFO_free v1_X509_INFO_free +#define X509_INFO_new v1_X509_INFO_new +#define x509_init_sig_info v1_x509_init_sig_info +#define X509_issuer_and_serial_cmp v1_X509_issuer_and_serial_cmp +#define X509_issuer_and_serial_hash v1_X509_issuer_and_serial_hash +#define X509_issuer_name_cmp v1_X509_issuer_name_cmp +#define X509_issuer_name_hash v1_X509_issuer_name_hash +#define X509_issuer_name_hash_old v1_X509_issuer_name_hash_old +#define X509_it v1_X509_it +#define X509_keyid_get0 v1_X509_keyid_get0 +#define X509_keyid_set1 v1_X509_keyid_set1 +#define x509_likely_issued v1_x509_likely_issued +#define X509_load_cert_crl_file v1_X509_load_cert_crl_file +#define X509_load_cert_file v1_X509_load_cert_file +#define X509_load_crl_file v1_X509_load_crl_file +#define X509_LOOKUP_by_alias v1_X509_LOOKUP_by_alias +#define X509_LOOKUP_by_fingerprint v1_X509_LOOKUP_by_fingerprint +#define X509_LOOKUP_by_issuer_serial v1_X509_LOOKUP_by_issuer_serial +#define X509_LOOKUP_by_subject v1_X509_LOOKUP_by_subject +#define X509_LOOKUP_ctrl v1_X509_LOOKUP_ctrl +#define X509_LOOKUP_file v1_X509_LOOKUP_file +#define X509_LOOKUP_free v1_X509_LOOKUP_free +#define X509_LOOKUP_get_method_data v1_X509_LOOKUP_get_method_data +#define X509_LOOKUP_get_store v1_X509_LOOKUP_get_store +#define X509_LOOKUP_hash_dir v1_X509_LOOKUP_hash_dir +#define X509_LOOKUP_init v1_X509_LOOKUP_init +#define X509_LOOKUP_meth_free v1_X509_LOOKUP_meth_free +#define X509_LOOKUP_meth_get_ctrl v1_X509_LOOKUP_meth_get_ctrl +#define X509_LOOKUP_meth_get_free v1_X509_LOOKUP_meth_get_free +#define X509_LOOKUP_meth_get_get_by_alias v1_X509_LOOKUP_meth_get_get_by_alias +#define X509_LOOKUP_meth_get_get_by_fingerprint v1_X509_LOOKUP_meth_get_get_by_fingerprint +#define X509_LOOKUP_meth_get_get_by_issuer_serial v1_X509_LOOKUP_meth_get_get_by_issuer_serial +#define X509_LOOKUP_meth_get_get_by_subject v1_X509_LOOKUP_meth_get_get_by_subject +#define X509_LOOKUP_meth_get_init v1_X509_LOOKUP_meth_get_init +#define X509_LOOKUP_meth_get_new_item v1_X509_LOOKUP_meth_get_new_item +#define X509_LOOKUP_meth_get_shutdown v1_X509_LOOKUP_meth_get_shutdown +#define X509_LOOKUP_meth_new v1_X509_LOOKUP_meth_new +#define X509_LOOKUP_meth_set_ctrl v1_X509_LOOKUP_meth_set_ctrl +#define X509_LOOKUP_meth_set_free v1_X509_LOOKUP_meth_set_free +#define X509_LOOKUP_meth_set_get_by_alias v1_X509_LOOKUP_meth_set_get_by_alias +#define X509_LOOKUP_meth_set_get_by_fingerprint v1_X509_LOOKUP_meth_set_get_by_fingerprint +#define X509_LOOKUP_meth_set_get_by_issuer_serial v1_X509_LOOKUP_meth_set_get_by_issuer_serial +#define X509_LOOKUP_meth_set_get_by_subject v1_X509_LOOKUP_meth_set_get_by_subject +#define X509_LOOKUP_meth_set_init v1_X509_LOOKUP_meth_set_init +#define X509_LOOKUP_meth_set_new_item v1_X509_LOOKUP_meth_set_new_item +#define X509_LOOKUP_meth_set_shutdown v1_X509_LOOKUP_meth_set_shutdown +#define X509_LOOKUP_new v1_X509_LOOKUP_new +#define X509_LOOKUP_set_method_data v1_X509_LOOKUP_set_method_data +#define X509_LOOKUP_shutdown v1_X509_LOOKUP_shutdown +#define X509_NAME_add_entry v1_X509_NAME_add_entry +#define X509_NAME_add_entry_by_NID v1_X509_NAME_add_entry_by_NID +#define X509_NAME_add_entry_by_OBJ v1_X509_NAME_add_entry_by_OBJ +#define X509_NAME_add_entry_by_txt v1_X509_NAME_add_entry_by_txt +#define X509_NAME_cmp v1_X509_NAME_cmp +#define X509_NAME_delete_entry v1_X509_NAME_delete_entry +#define X509_NAME_digest v1_X509_NAME_digest +#define X509_NAME_dup v1_X509_NAME_dup +#define X509_NAME_entry_count v1_X509_NAME_entry_count +#define X509_NAME_ENTRY_create_by_NID v1_X509_NAME_ENTRY_create_by_NID +#define X509_NAME_ENTRY_create_by_OBJ v1_X509_NAME_ENTRY_create_by_OBJ +#define X509_NAME_ENTRY_create_by_txt v1_X509_NAME_ENTRY_create_by_txt +#define X509_NAME_ENTRY_dup v1_X509_NAME_ENTRY_dup +#define X509_NAME_ENTRY_free v1_X509_NAME_ENTRY_free +#define X509_NAME_ENTRY_get_data v1_X509_NAME_ENTRY_get_data +#define X509_NAME_ENTRY_get_object v1_X509_NAME_ENTRY_get_object +#define X509_NAME_ENTRY_it v1_X509_NAME_ENTRY_it +#define X509_NAME_ENTRY_new v1_X509_NAME_ENTRY_new +#define X509_NAME_ENTRY_set v1_X509_NAME_ENTRY_set +#define X509_NAME_ENTRY_set_data v1_X509_NAME_ENTRY_set_data +#define X509_NAME_ENTRY_set_object v1_X509_NAME_ENTRY_set_object +#define X509_NAME_free v1_X509_NAME_free +#define X509_NAME_get0_der v1_X509_NAME_get0_der +#define X509_NAME_get_entry v1_X509_NAME_get_entry +#define X509_NAME_get_index_by_NID v1_X509_NAME_get_index_by_NID +#define X509_NAME_get_index_by_OBJ v1_X509_NAME_get_index_by_OBJ +#define X509_NAME_get_text_by_NID v1_X509_NAME_get_text_by_NID +#define X509_NAME_get_text_by_OBJ v1_X509_NAME_get_text_by_OBJ +#define X509_NAME_hash v1_X509_NAME_hash +#define X509_NAME_hash_old v1_X509_NAME_hash_old +#define X509_NAME_it v1_X509_NAME_it +#define X509_NAME_new v1_X509_NAME_new +#define X509_NAME_oneline v1_X509_NAME_oneline +#define X509_NAME_print v1_X509_NAME_print +#define X509_NAME_print_ex v1_X509_NAME_print_ex +#define X509_NAME_print_ex_fp v1_X509_NAME_print_ex_fp +#define X509_NAME_set v1_X509_NAME_set +#define X509_new v1_X509_new +#define X509_OBJECT_free v1_X509_OBJECT_free +#define X509_OBJECT_get0_X509 v1_X509_OBJECT_get0_X509 +#define X509_OBJECT_get0_X509_CRL v1_X509_OBJECT_get0_X509_CRL +#define X509_OBJECT_get_type v1_X509_OBJECT_get_type +#define X509_OBJECT_idx_by_subject v1_X509_OBJECT_idx_by_subject +#define X509_OBJECT_new v1_X509_OBJECT_new +#define X509_OBJECT_retrieve_by_subject v1_X509_OBJECT_retrieve_by_subject +#define X509_OBJECT_retrieve_match v1_X509_OBJECT_retrieve_match +#define X509_OBJECT_set1_X509 v1_X509_OBJECT_set1_X509 +#define X509_OBJECT_set1_X509_CRL v1_X509_OBJECT_set1_X509_CRL +#define X509_OBJECT_up_ref_count v1_X509_OBJECT_up_ref_count +#define X509_ocspid_print v1_X509_ocspid_print +#define X509_PKEY_free v1_X509_PKEY_free +#define X509_PKEY_new v1_X509_PKEY_new +#define X509_policy_check v1_X509_policy_check +#define X509_policy_level_get0_node v1_X509_policy_level_get0_node +#define X509_policy_level_node_count v1_X509_policy_level_node_count +#define X509_policy_node_get0_parent v1_X509_policy_node_get0_parent +#define X509_policy_node_get0_policy v1_X509_policy_node_get0_policy +#define X509_policy_node_get0_qualifiers v1_X509_policy_node_get0_qualifiers +#define X509_POLICY_NODE_print v1_X509_POLICY_NODE_print +#define X509_policy_tree_free v1_X509_policy_tree_free +#define X509_policy_tree_get0_level v1_X509_policy_tree_get0_level +#define X509_policy_tree_get0_policies v1_X509_policy_tree_get0_policies +#define X509_policy_tree_get0_user_policies v1_X509_policy_tree_get0_user_policies +#define X509_policy_tree_level_count v1_X509_policy_tree_level_count +#define X509_print v1_X509_print +#define X509_print_ex v1_X509_print_ex +#define X509_print_ex_fp v1_X509_print_ex_fp +#define X509_print_fp v1_X509_print_fp +#define X509_pubkey_digest v1_X509_pubkey_digest +#define X509_PUBKEY_free v1_X509_PUBKEY_free +#define X509_PUBKEY_get v1_X509_PUBKEY_get +#define X509_PUBKEY_get0 v1_X509_PUBKEY_get0 +#define X509_PUBKEY_get0_param v1_X509_PUBKEY_get0_param +#define X509_PUBKEY_it v1_X509_PUBKEY_it +#define X509_PUBKEY_new v1_X509_PUBKEY_new +#define X509_PUBKEY_set v1_X509_PUBKEY_set +#define X509_PUBKEY_set0_param v1_X509_PUBKEY_set0_param +#define X509_PURPOSE_add v1_X509_PURPOSE_add +#define X509_PURPOSE_cleanup v1_X509_PURPOSE_cleanup +#define X509_PURPOSE_get0 v1_X509_PURPOSE_get0 +#define X509_PURPOSE_get0_name v1_X509_PURPOSE_get0_name +#define X509_PURPOSE_get0_sname v1_X509_PURPOSE_get0_sname +#define X509_PURPOSE_get_by_id v1_X509_PURPOSE_get_by_id +#define X509_PURPOSE_get_by_sname v1_X509_PURPOSE_get_by_sname +#define X509_PURPOSE_get_count v1_X509_PURPOSE_get_count +#define X509_PURPOSE_get_id v1_X509_PURPOSE_get_id +#define X509_PURPOSE_get_trust v1_X509_PURPOSE_get_trust +#define X509_PURPOSE_set v1_X509_PURPOSE_set +#define X509_reject_clear v1_X509_reject_clear +#define X509_REQ_add1_attr v1_X509_REQ_add1_attr +#define X509_REQ_add1_attr_by_NID v1_X509_REQ_add1_attr_by_NID +#define X509_REQ_add1_attr_by_OBJ v1_X509_REQ_add1_attr_by_OBJ +#define X509_REQ_add1_attr_by_txt v1_X509_REQ_add1_attr_by_txt +#define X509_REQ_add_extensions v1_X509_REQ_add_extensions +#define X509_REQ_add_extensions_nid v1_X509_REQ_add_extensions_nid +#define X509_REQ_check_private_key v1_X509_REQ_check_private_key +#define X509_REQ_delete_attr v1_X509_REQ_delete_attr +#define X509_REQ_digest v1_X509_REQ_digest +#define X509_REQ_dup v1_X509_REQ_dup +#define X509_REQ_extension_nid v1_X509_REQ_extension_nid +#define X509_REQ_free v1_X509_REQ_free +#define X509_REQ_get0_pubkey v1_X509_REQ_get0_pubkey +#define X509_REQ_get0_signature v1_X509_REQ_get0_signature +#define X509_REQ_get1_email v1_X509_REQ_get1_email +#define X509_REQ_get_attr v1_X509_REQ_get_attr +#define X509_REQ_get_attr_by_NID v1_X509_REQ_get_attr_by_NID +#define X509_REQ_get_attr_by_OBJ v1_X509_REQ_get_attr_by_OBJ +#define X509_REQ_get_attr_count v1_X509_REQ_get_attr_count +#define X509_REQ_get_extension_nids v1_X509_REQ_get_extension_nids +#define X509_REQ_get_extensions v1_X509_REQ_get_extensions +#define X509_REQ_get_pubkey v1_X509_REQ_get_pubkey +#define X509_REQ_get_signature_nid v1_X509_REQ_get_signature_nid +#define X509_REQ_get_subject_name v1_X509_REQ_get_subject_name +#define X509_REQ_get_version v1_X509_REQ_get_version +#define X509_REQ_get_X509_PUBKEY v1_X509_REQ_get_X509_PUBKEY +#define X509_REQ_INFO_free v1_X509_REQ_INFO_free +#define X509_REQ_INFO_it v1_X509_REQ_INFO_it +#define X509_REQ_INFO_new v1_X509_REQ_INFO_new +#define X509_REQ_it v1_X509_REQ_it +#define X509_REQ_new v1_X509_REQ_new +#define X509_REQ_print v1_X509_REQ_print +#define X509_REQ_print_ex v1_X509_REQ_print_ex +#define X509_REQ_print_fp v1_X509_REQ_print_fp +#define X509_REQ_set0_signature v1_X509_REQ_set0_signature +#define X509_REQ_set1_signature_algo v1_X509_REQ_set1_signature_algo +#define X509_REQ_set_extension_nids v1_X509_REQ_set_extension_nids +#define X509_REQ_set_pubkey v1_X509_REQ_set_pubkey +#define X509_REQ_set_subject_name v1_X509_REQ_set_subject_name +#define X509_REQ_set_version v1_X509_REQ_set_version +#define X509_REQ_sign v1_X509_REQ_sign +#define X509_REQ_sign_ctx v1_X509_REQ_sign_ctx +#define X509_REQ_to_X509 v1_X509_REQ_to_X509 +#define X509_REQ_verify v1_X509_REQ_verify +#define X509_REVOKED_add1_ext_i2d v1_X509_REVOKED_add1_ext_i2d +#define X509_REVOKED_add_ext v1_X509_REVOKED_add_ext +#define X509_REVOKED_delete_ext v1_X509_REVOKED_delete_ext +#define X509_REVOKED_dup v1_X509_REVOKED_dup +#define X509_REVOKED_free v1_X509_REVOKED_free +#define X509_REVOKED_get0_extensions v1_X509_REVOKED_get0_extensions +#define X509_REVOKED_get0_revocationDate v1_X509_REVOKED_get0_revocationDate +#define X509_REVOKED_get0_serialNumber v1_X509_REVOKED_get0_serialNumber +#define X509_REVOKED_get_ext v1_X509_REVOKED_get_ext +#define X509_REVOKED_get_ext_by_critical v1_X509_REVOKED_get_ext_by_critical +#define X509_REVOKED_get_ext_by_NID v1_X509_REVOKED_get_ext_by_NID +#define X509_REVOKED_get_ext_by_OBJ v1_X509_REVOKED_get_ext_by_OBJ +#define X509_REVOKED_get_ext_count v1_X509_REVOKED_get_ext_count +#define X509_REVOKED_get_ext_d2i v1_X509_REVOKED_get_ext_d2i +#define X509_REVOKED_it v1_X509_REVOKED_it +#define X509_REVOKED_new v1_X509_REVOKED_new +#define X509_REVOKED_set_revocationDate v1_X509_REVOKED_set_revocationDate +#define X509_REVOKED_set_serialNumber v1_X509_REVOKED_set_serialNumber +#define X509_set1_notAfter v1_X509_set1_notAfter +#define X509_set1_notBefore v1_X509_set1_notBefore +#define x509_set1_time v1_x509_set1_time +#define X509_set_ex_data v1_X509_set_ex_data +#define X509_set_issuer_name v1_X509_set_issuer_name +#define X509_set_proxy_flag v1_X509_set_proxy_flag +#define X509_set_proxy_pathlen v1_X509_set_proxy_pathlen +#define X509_set_pubkey v1_X509_set_pubkey +#define X509_set_serialNumber v1_X509_set_serialNumber +#define X509_set_subject_name v1_X509_set_subject_name +#define X509_set_version v1_X509_set_version +#define X509_SIG_free v1_X509_SIG_free +#define X509_SIG_get0 v1_X509_SIG_get0 +#define X509_SIG_getm v1_X509_SIG_getm +#define X509_SIG_INFO_get v1_X509_SIG_INFO_get +#define X509_SIG_INFO_set v1_X509_SIG_INFO_set +#define X509_SIG_it v1_X509_SIG_it +#define X509_sign v1_X509_sign +#define X509_signature_dump v1_X509_signature_dump +#define X509_signature_print v1_X509_signature_print +#define X509_sign_ctx v1_X509_sign_ctx +#define X509_SIG_new v1_X509_SIG_new +#define x509_signing_allowed v1_x509_signing_allowed +#define X509_STORE_add_cert v1_X509_STORE_add_cert +#define X509_STORE_add_crl v1_X509_STORE_add_crl +#define X509_STORE_add_lookup v1_X509_STORE_add_lookup +#define X509_STORE_CTX_cleanup v1_X509_STORE_CTX_cleanup +#define X509_STORE_CTX_free v1_X509_STORE_CTX_free +#define X509_STORE_CTX_get0_cert v1_X509_STORE_CTX_get0_cert +#define X509_STORE_CTX_get0_chain v1_X509_STORE_CTX_get0_chain +#define X509_STORE_CTX_get0_current_crl v1_X509_STORE_CTX_get0_current_crl +#define X509_STORE_CTX_get0_current_issuer v1_X509_STORE_CTX_get0_current_issuer +#define X509_STORE_CTX_get0_param v1_X509_STORE_CTX_get0_param +#define X509_STORE_CTX_get0_parent_ctx v1_X509_STORE_CTX_get0_parent_ctx +#define X509_STORE_CTX_get0_policy_tree v1_X509_STORE_CTX_get0_policy_tree +#define X509_STORE_CTX_get0_store v1_X509_STORE_CTX_get0_store +#define X509_STORE_CTX_get0_untrusted v1_X509_STORE_CTX_get0_untrusted +#define X509_STORE_CTX_get1_certs v1_X509_STORE_CTX_get1_certs +#define X509_STORE_CTX_get1_chain v1_X509_STORE_CTX_get1_chain +#define X509_STORE_CTX_get1_crls v1_X509_STORE_CTX_get1_crls +#define X509_STORE_CTX_get1_issuer v1_X509_STORE_CTX_get1_issuer +#define X509_STORE_CTX_get_by_subject v1_X509_STORE_CTX_get_by_subject +#define X509_STORE_CTX_get_cert_crl v1_X509_STORE_CTX_get_cert_crl +#define X509_STORE_CTX_get_check_crl v1_X509_STORE_CTX_get_check_crl +#define X509_STORE_CTX_get_check_issued v1_X509_STORE_CTX_get_check_issued +#define X509_STORE_CTX_get_check_policy v1_X509_STORE_CTX_get_check_policy +#define X509_STORE_CTX_get_check_revocation v1_X509_STORE_CTX_get_check_revocation +#define X509_STORE_CTX_get_cleanup v1_X509_STORE_CTX_get_cleanup +#define X509_STORE_CTX_get_current_cert v1_X509_STORE_CTX_get_current_cert +#define X509_STORE_CTX_get_error v1_X509_STORE_CTX_get_error +#define X509_STORE_CTX_get_error_depth v1_X509_STORE_CTX_get_error_depth +#define X509_STORE_CTX_get_ex_data v1_X509_STORE_CTX_get_ex_data +#define X509_STORE_CTX_get_explicit_policy v1_X509_STORE_CTX_get_explicit_policy +#define X509_STORE_CTX_get_get_crl v1_X509_STORE_CTX_get_get_crl +#define X509_STORE_CTX_get_get_issuer v1_X509_STORE_CTX_get_get_issuer +#define X509_STORE_CTX_get_lookup_certs v1_X509_STORE_CTX_get_lookup_certs +#define X509_STORE_CTX_get_lookup_crls v1_X509_STORE_CTX_get_lookup_crls +#define X509_STORE_CTX_get_num_untrusted v1_X509_STORE_CTX_get_num_untrusted +#define X509_STORE_CTX_get_obj_by_subject v1_X509_STORE_CTX_get_obj_by_subject +#define X509_STORE_CTX_get_verify v1_X509_STORE_CTX_get_verify +#define X509_STORE_CTX_get_verify_cb v1_X509_STORE_CTX_get_verify_cb +#define X509_STORE_CTX_init v1_X509_STORE_CTX_init +#define X509_STORE_CTX_new v1_X509_STORE_CTX_new +#define X509_STORE_CTX_purpose_inherit v1_X509_STORE_CTX_purpose_inherit +#define X509_STORE_CTX_set0_crls v1_X509_STORE_CTX_set0_crls +#define X509_STORE_CTX_set0_dane v1_X509_STORE_CTX_set0_dane +#define X509_STORE_CTX_set0_param v1_X509_STORE_CTX_set0_param +#define X509_STORE_CTX_set0_trusted_stack v1_X509_STORE_CTX_set0_trusted_stack +#define X509_STORE_CTX_set0_untrusted v1_X509_STORE_CTX_set0_untrusted +#define X509_STORE_CTX_set0_verified_chain v1_X509_STORE_CTX_set0_verified_chain +#define X509_STORE_CTX_set_cert v1_X509_STORE_CTX_set_cert +#define X509_STORE_CTX_set_current_cert v1_X509_STORE_CTX_set_current_cert +#define X509_STORE_CTX_set_default v1_X509_STORE_CTX_set_default +#define X509_STORE_CTX_set_depth v1_X509_STORE_CTX_set_depth +#define X509_STORE_CTX_set_error v1_X509_STORE_CTX_set_error +#define X509_STORE_CTX_set_error_depth v1_X509_STORE_CTX_set_error_depth +#define X509_STORE_CTX_set_ex_data v1_X509_STORE_CTX_set_ex_data +#define X509_STORE_CTX_set_flags v1_X509_STORE_CTX_set_flags +#define X509_STORE_CTX_set_purpose v1_X509_STORE_CTX_set_purpose +#define X509_STORE_CTX_set_time v1_X509_STORE_CTX_set_time +#define X509_STORE_CTX_set_trust v1_X509_STORE_CTX_set_trust +#define X509_STORE_CTX_set_verify v1_X509_STORE_CTX_set_verify +#define X509_STORE_CTX_set_verify_cb v1_X509_STORE_CTX_set_verify_cb +#define X509_STORE_free v1_X509_STORE_free +#define X509_STORE_get0_objects v1_X509_STORE_get0_objects +#define X509_STORE_get0_param v1_X509_STORE_get0_param +#define X509_STORE_get_cert_crl v1_X509_STORE_get_cert_crl +#define X509_STORE_get_check_crl v1_X509_STORE_get_check_crl +#define X509_STORE_get_check_issued v1_X509_STORE_get_check_issued +#define X509_STORE_get_check_policy v1_X509_STORE_get_check_policy +#define X509_STORE_get_check_revocation v1_X509_STORE_get_check_revocation +#define X509_STORE_get_cleanup v1_X509_STORE_get_cleanup +#define X509_STORE_get_ex_data v1_X509_STORE_get_ex_data +#define X509_STORE_get_get_crl v1_X509_STORE_get_get_crl +#define X509_STORE_get_get_issuer v1_X509_STORE_get_get_issuer +#define X509_STORE_get_lookup_certs v1_X509_STORE_get_lookup_certs +#define X509_STORE_get_lookup_crls v1_X509_STORE_get_lookup_crls +#define X509_STORE_get_verify v1_X509_STORE_get_verify +#define X509_STORE_get_verify_cb v1_X509_STORE_get_verify_cb +#define X509_STORE_load_locations v1_X509_STORE_load_locations +#define X509_STORE_lock v1_X509_STORE_lock +#define X509_STORE_new v1_X509_STORE_new +#define X509_STORE_set1_param v1_X509_STORE_set1_param +#define X509_STORE_set_cert_crl v1_X509_STORE_set_cert_crl +#define X509_STORE_set_check_crl v1_X509_STORE_set_check_crl +#define X509_STORE_set_check_issued v1_X509_STORE_set_check_issued +#define X509_STORE_set_check_policy v1_X509_STORE_set_check_policy +#define X509_STORE_set_check_revocation v1_X509_STORE_set_check_revocation +#define X509_STORE_set_cleanup v1_X509_STORE_set_cleanup +#define X509_STORE_set_default_paths v1_X509_STORE_set_default_paths +#define X509_STORE_set_depth v1_X509_STORE_set_depth +#define X509_STORE_set_ex_data v1_X509_STORE_set_ex_data +#define X509_STORE_set_flags v1_X509_STORE_set_flags +#define X509_STORE_set_get_crl v1_X509_STORE_set_get_crl +#define X509_STORE_set_get_issuer v1_X509_STORE_set_get_issuer +#define X509_STORE_set_lookup_certs v1_X509_STORE_set_lookup_certs +#define X509_STORE_set_lookup_crls v1_X509_STORE_set_lookup_crls +#define X509_STORE_set_purpose v1_X509_STORE_set_purpose +#define X509_STORE_set_trust v1_X509_STORE_set_trust +#define X509_STORE_set_verify v1_X509_STORE_set_verify +#define X509_STORE_set_verify_cb v1_X509_STORE_set_verify_cb +#define X509_STORE_unlock v1_X509_STORE_unlock +#define X509_STORE_up_ref v1_X509_STORE_up_ref +#define X509_subject_name_cmp v1_X509_subject_name_cmp +#define X509_subject_name_hash v1_X509_subject_name_hash +#define X509_subject_name_hash_old v1_X509_subject_name_hash_old +#define X509_supported_extension v1_X509_supported_extension +#define X509_time_adj v1_X509_time_adj +#define X509_time_adj_ex v1_X509_time_adj_ex +#define X509_to_X509_REQ v1_X509_to_X509_REQ +#define X509_TRUST_add v1_X509_TRUST_add +#define X509_TRUST_cleanup v1_X509_TRUST_cleanup +#define X509_trust_clear v1_X509_trust_clear +#define X509_trusted v1_X509_trusted +#define X509_TRUST_get0 v1_X509_TRUST_get0 +#define X509_TRUST_get0_name v1_X509_TRUST_get0_name +#define X509_TRUST_get_by_id v1_X509_TRUST_get_by_id +#define X509_TRUST_get_count v1_X509_TRUST_get_count +#define X509_TRUST_get_flags v1_X509_TRUST_get_flags +#define X509_TRUST_get_trust v1_X509_TRUST_get_trust +#define X509_TRUST_set v1_X509_TRUST_set +#define X509_TRUST_set_default v1_X509_TRUST_set_default +#define X509_up_ref v1_X509_up_ref +#define X509V3_add1_i2d v1_X509V3_add1_i2d +#define X509v3_add_ext v1_X509v3_add_ext +#define x509v3_add_len_value_uchar v1_x509v3_add_len_value_uchar +#define X509v3_addr_add_inherit v1_X509v3_addr_add_inherit +#define X509v3_addr_add_prefix v1_X509v3_addr_add_prefix +#define X509v3_addr_add_range v1_X509v3_addr_add_range +#define X509v3_addr_canonize v1_X509v3_addr_canonize +#define X509v3_addr_get_afi v1_X509v3_addr_get_afi +#define X509v3_addr_get_range v1_X509v3_addr_get_range +#define X509v3_addr_inherits v1_X509v3_addr_inherits +#define X509v3_addr_is_canonical v1_X509v3_addr_is_canonical +#define X509v3_addr_subset v1_X509v3_addr_subset +#define X509v3_addr_validate_path v1_X509v3_addr_validate_path +#define X509v3_addr_validate_resource_set v1_X509v3_addr_validate_resource_set +#define X509V3_add_standard_extensions v1_X509V3_add_standard_extensions +#define X509V3_add_value v1_X509V3_add_value +#define X509V3_add_value_bool v1_X509V3_add_value_bool +#define X509V3_add_value_bool_nf v1_X509V3_add_value_bool_nf +#define X509V3_add_value_int v1_X509V3_add_value_int +#define X509V3_add_value_uchar v1_X509V3_add_value_uchar +#define X509v3_asid_add_id_or_range v1_X509v3_asid_add_id_or_range +#define X509v3_asid_add_inherit v1_X509v3_asid_add_inherit +#define X509v3_asid_canonize v1_X509v3_asid_canonize +#define X509v3_asid_inherits v1_X509v3_asid_inherits +#define X509v3_asid_is_canonical v1_X509v3_asid_is_canonical +#define X509v3_asid_subset v1_X509v3_asid_subset +#define X509v3_asid_validate_path v1_X509v3_asid_validate_path +#define X509v3_asid_validate_resource_set v1_X509v3_asid_validate_resource_set +#define X509V3_conf_free v1_X509V3_conf_free +#define X509v3_delete_ext v1_X509v3_delete_ext +#define X509V3_EXT_add v1_X509V3_EXT_add +#define X509V3_EXT_add_alias v1_X509V3_EXT_add_alias +#define X509V3_EXT_add_conf v1_X509V3_EXT_add_conf +#define X509V3_EXT_add_list v1_X509V3_EXT_add_list +#define X509V3_EXT_add_nconf v1_X509V3_EXT_add_nconf +#define X509V3_EXT_add_nconf_sk v1_X509V3_EXT_add_nconf_sk +#define X509V3_EXT_cleanup v1_X509V3_EXT_cleanup +#define X509V3_EXT_conf v1_X509V3_EXT_conf +#define X509V3_EXT_conf_nid v1_X509V3_EXT_conf_nid +#define X509V3_EXT_CRL_add_conf v1_X509V3_EXT_CRL_add_conf +#define X509V3_EXT_CRL_add_nconf v1_X509V3_EXT_CRL_add_nconf +#define X509V3_EXT_d2i v1_X509V3_EXT_d2i +#define X509V3_extensions_print v1_X509V3_extensions_print +#define X509V3_EXT_get v1_X509V3_EXT_get +#define X509V3_EXT_get_nid v1_X509V3_EXT_get_nid +#define X509V3_EXT_i2d v1_X509V3_EXT_i2d +#define X509V3_EXT_nconf v1_X509V3_EXT_nconf +#define X509V3_EXT_nconf_nid v1_X509V3_EXT_nconf_nid +#define X509V3_EXT_print v1_X509V3_EXT_print +#define X509V3_EXT_print_fp v1_X509V3_EXT_print_fp +#define X509V3_EXT_REQ_add_conf v1_X509V3_EXT_REQ_add_conf +#define X509V3_EXT_REQ_add_nconf v1_X509V3_EXT_REQ_add_nconf +#define X509V3_EXT_val_prn v1_X509V3_EXT_val_prn +#define X509V3_get_d2i v1_X509V3_get_d2i +#define X509v3_get_ext v1_X509v3_get_ext +#define X509v3_get_ext_by_critical v1_X509v3_get_ext_by_critical +#define X509v3_get_ext_by_NID v1_X509v3_get_ext_by_NID +#define X509v3_get_ext_by_OBJ v1_X509v3_get_ext_by_OBJ +#define X509v3_get_ext_count v1_X509v3_get_ext_count +#define X509V3_get_section v1_X509V3_get_section +#define X509V3_get_string v1_X509V3_get_string +#define X509V3_get_value_bool v1_X509V3_get_value_bool +#define X509V3_get_value_int v1_X509V3_get_value_int +#define X509V3_NAME_from_section v1_X509V3_NAME_from_section +#define X509V3_parse_list v1_X509V3_parse_list +#define X509V3_section_free v1_X509V3_section_free +#define X509V3_set_conf_lhash v1_X509V3_set_conf_lhash +#define X509V3_set_ctx v1_X509V3_set_ctx +#define X509V3_set_nconf v1_X509V3_set_nconf +#define X509V3_string_free v1_X509V3_string_free +#define X509_VAL_free v1_X509_VAL_free +#define X509_VAL_it v1_X509_VAL_it +#define X509_VAL_new v1_X509_VAL_new +#define X509_verify v1_X509_verify +#define X509_verify_cert v1_X509_verify_cert +#define X509_verify_cert_error_string v1_X509_verify_cert_error_string +#define X509_VERIFY_PARAM_add0_policy v1_X509_VERIFY_PARAM_add0_policy +#define X509_VERIFY_PARAM_add0_table v1_X509_VERIFY_PARAM_add0_table +#define X509_VERIFY_PARAM_add1_host v1_X509_VERIFY_PARAM_add1_host +#define X509_VERIFY_PARAM_clear_flags v1_X509_VERIFY_PARAM_clear_flags +#define X509_VERIFY_PARAM_free v1_X509_VERIFY_PARAM_free +#define X509_VERIFY_PARAM_get0 v1_X509_VERIFY_PARAM_get0 +#define X509_VERIFY_PARAM_get0_name v1_X509_VERIFY_PARAM_get0_name +#define X509_VERIFY_PARAM_get0_peername v1_X509_VERIFY_PARAM_get0_peername +#define X509_VERIFY_PARAM_get_auth_level v1_X509_VERIFY_PARAM_get_auth_level +#define X509_VERIFY_PARAM_get_count v1_X509_VERIFY_PARAM_get_count +#define X509_VERIFY_PARAM_get_depth v1_X509_VERIFY_PARAM_get_depth +#define X509_VERIFY_PARAM_get_flags v1_X509_VERIFY_PARAM_get_flags +#define X509_VERIFY_PARAM_get_hostflags v1_X509_VERIFY_PARAM_get_hostflags +#define X509_VERIFY_PARAM_get_inh_flags v1_X509_VERIFY_PARAM_get_inh_flags +#define X509_VERIFY_PARAM_get_time v1_X509_VERIFY_PARAM_get_time +#define X509_VERIFY_PARAM_inherit v1_X509_VERIFY_PARAM_inherit +#define X509_VERIFY_PARAM_lookup v1_X509_VERIFY_PARAM_lookup +#define X509_VERIFY_PARAM_move_peername v1_X509_VERIFY_PARAM_move_peername +#define X509_VERIFY_PARAM_new v1_X509_VERIFY_PARAM_new +#define X509_VERIFY_PARAM_set1 v1_X509_VERIFY_PARAM_set1 +#define X509_VERIFY_PARAM_set1_email v1_X509_VERIFY_PARAM_set1_email +#define X509_VERIFY_PARAM_set1_host v1_X509_VERIFY_PARAM_set1_host +#define X509_VERIFY_PARAM_set1_ip v1_X509_VERIFY_PARAM_set1_ip +#define X509_VERIFY_PARAM_set1_ip_asc v1_X509_VERIFY_PARAM_set1_ip_asc +#define X509_VERIFY_PARAM_set1_name v1_X509_VERIFY_PARAM_set1_name +#define X509_VERIFY_PARAM_set1_policies v1_X509_VERIFY_PARAM_set1_policies +#define X509_VERIFY_PARAM_set_auth_level v1_X509_VERIFY_PARAM_set_auth_level +#define X509_VERIFY_PARAM_set_depth v1_X509_VERIFY_PARAM_set_depth +#define X509_VERIFY_PARAM_set_flags v1_X509_VERIFY_PARAM_set_flags +#define X509_VERIFY_PARAM_set_hostflags v1_X509_VERIFY_PARAM_set_hostflags +#define X509_VERIFY_PARAM_set_inh_flags v1_X509_VERIFY_PARAM_set_inh_flags +#define X509_VERIFY_PARAM_set_purpose v1_X509_VERIFY_PARAM_set_purpose +#define X509_VERIFY_PARAM_set_time v1_X509_VERIFY_PARAM_set_time +#define X509_VERIFY_PARAM_set_trust v1_X509_VERIFY_PARAM_set_trust +#define X509_VERIFY_PARAM_table_cleanup v1_X509_VERIFY_PARAM_table_cleanup +#define X9_62_CHARACTERISTIC_TWO_free v1_X9_62_CHARACTERISTIC_TWO_free +#define X9_62_CHARACTERISTIC_TWO_new v1_X9_62_CHARACTERISTIC_TWO_new +#define X9_62_PENTANOMIAL_free v1_X9_62_PENTANOMIAL_free +#define X9_62_PENTANOMIAL_new v1_X9_62_PENTANOMIAL_new +#define xor128_decrypt_n_pad v1_xor128_decrypt_n_pad +#define xor128_encrypt_n_pad v1_xor128_encrypt_n_pad +#define ZINT32_it v1_ZINT32_it +#define ZINT64_it v1_ZINT64_it +#define ZLONG_it v1_ZLONG_it +#define ZUINT32_it v1_ZUINT32_it +#define ZUINT64_it v1_ZUINT64_it +#endif diff --git a/contrib/libs/openssl/ya.make b/contrib/libs/openssl/ya.make index 67c4f080f9d..efa215f3baa 100644 --- a/contrib/libs/openssl/ya.make +++ b/contrib/libs/openssl/ya.make @@ -37,14 +37,17 @@ LICENSE_TEXTS(.yandex_meta/licenses.list.txt) PROVIDES(openssl) -PEERDIR( - contrib/libs/openssl/crypto -) +NO_LTO() + +SRCDIR(contrib/libs/openssl/crypto) +INCLUDE(crypto/ya.make.inc) ADDINCL( contrib/libs/openssl ) +CFLAGS(-DOPENSSL_BUILD=1) + IF (NOT EXPORT_CMAKE OR NOT OPENSOURCE_REPLACE_OPENSSL) IF (OS_LINUX) @@ -236,7 +239,7 @@ SRCS( ssl/tls_srp.c ) -IF (NOT IOS_ARMV7 AND NOT LINUX_ARMV7) +IF (NOT IOS_ARMV7 AND NOT LINUX_ARMV7 AND NOT ANDROID_ARMV7) CFLAGS( -DVPAES_ASM ) diff --git a/contrib/python/executing/.dist-info/METADATA b/contrib/python/executing/.dist-info/METADATA index 45ff9aa8813..6e4ac6516d3 100644 --- a/contrib/python/executing/.dist-info/METADATA +++ b/contrib/python/executing/.dist-info/METADATA @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: executing -Version: 2.1.0 +Version: 2.2.0 Summary: Get the currently executing AST node of a frame, and other information Home-page: https://github.com/alexmojaki/executing Author: Alex Hall @@ -42,7 +42,7 @@ This mini-package lets you get information about what a frame is currently doing * [How does it work?](#how-does-it-work) * [Is it reliable?](#is-it-reliable) * [Which nodes can it identify?](#which-nodes-can-it-identify) -* [Libraries that use this](#libraries-that-use-this) +* [Projects that use this](#projects-that-use-this) ## Usage diff --git a/contrib/python/executing/README.md b/contrib/python/executing/README.md index 1b4dbd8f074..61943dd7f54 100644 --- a/contrib/python/executing/README.md +++ b/contrib/python/executing/README.md @@ -13,7 +13,7 @@ This mini-package lets you get information about what a frame is currently doing * [How does it work?](#how-does-it-work) * [Is it reliable?](#is-it-reliable) * [Which nodes can it identify?](#which-nodes-can-it-identify) -* [Libraries that use this](#libraries-that-use-this) +* [Projects that use this](#projects-that-use-this) ## Usage diff --git a/contrib/python/executing/executing/__init__.py b/contrib/python/executing/executing/__init__.py index b6451973917..e5181a5c326 100644 --- a/contrib/python/executing/executing/__init__.py +++ b/contrib/python/executing/executing/__init__.py @@ -10,6 +10,9 @@ Get information about what a frame is currently doing. Typical usage: from collections import namedtuple _VersionInfo = namedtuple('_VersionInfo', ('major', 'minor', 'micro')) from .executing import Source, Executing, only, NotOneValueFound, cache, future_flags + +from ._pytest_utils import is_pytest_compatible + try: from .version import __version__ # type: ignore[import] if "dev" in __version__: @@ -22,4 +25,4 @@ else: __version_info__ = _VersionInfo(*map(int, __version__.split('.'))) -__all__ = ["Source"] +__all__ = ["Source","is_pytest_compatible"] diff --git a/contrib/python/executing/executing/_position_node_finder.py b/contrib/python/executing/executing/_position_node_finder.py index 7a814150da6..0f8344106f2 100644 --- a/contrib/python/executing/executing/_position_node_finder.py +++ b/contrib/python/executing/executing/_position_node_finder.py @@ -242,6 +242,66 @@ class PositionNodeFinder(object): # keeping the old behaviour makes it possible to distinguish both cases. return node.parent + + if ( + sys.version_info >= (3, 12, 6) + and instruction.opname in ("GET_ITER", "FOR_ITER") + and isinstance( + node.parent.parent, + (ast.ListComp, ast.SetComp, ast.DictComp, ast.GeneratorExp), + ) + and isinstance(node.parent,ast.comprehension) + and node is node.parent.iter + ): + # same as above but only for comprehensions, see: + # https://github.com/python/cpython/issues/123142 + + return node.parent.parent + + if sys.version_info >= (3, 12,6) and instruction.opname == "CALL": + before = self.instruction_before(instruction) + if ( + before is not None + and before.opname == "LOAD_CONST" + and before.positions == instruction.positions + and isinstance(node.parent, ast.withitem) + and node is node.parent.context_expr + ): + # node positions for with-statements have change + # and is now equal to the expression which created the context-manager + # https://github.com/python/cpython/pull/120763 + + # with context_manager: + # ... + + # but there is one problem to distinguish call-expressions from __exit__() + + # with context_manager(): + # ... + + # the call for __exit__ + + # 20 1:5 1:22 LOAD_CONST(None) + # 22 1:5 1:22 LOAD_CONST(None) + # 24 1:5 1:22 LOAD_CONST(None) + # 26 1:5 1:22 CALL() # <-- same source range as context_manager() + + # but we can use the fact that the previous load for None + # has the same source range as the call, wich can not happen for normal calls + + # we return the same ast.With statement at the and to preserve backward compatibility + + return node.parent.parent + + if ( + sys.version_info >= (3, 12,6) + and instruction.opname == "BEFORE_WITH" + and isinstance(node.parent, ast.withitem) + and node is node.parent.context_expr + ): + # handle positions changes for __enter__ + return node.parent.parent + return node def known_issues(self, node: EnhancedAST, instruction: dis.Instruction) -> None: @@ -880,6 +940,11 @@ class PositionNodeFinder(object): def instruction(self, index: int) -> Optional[dis.Instruction]: return self.bc_dict.get(index,None) + def instruction_before( + self, instruction: dis.Instruction + ) -> Optional[dis.Instruction]: + return self.bc_dict.get(instruction.offset - 2, None) + def opname(self, index: int) -> str: i=self.instruction(index) if i is None: diff --git a/contrib/python/executing/executing/_pytest_utils.py b/contrib/python/executing/executing/_pytest_utils.py new file mode 100644 index 00000000000..fab8693baf2 --- /dev/null +++ b/contrib/python/executing/executing/_pytest_utils.py @@ -0,0 +1,16 @@ +import sys + + + +def is_pytest_compatible() -> bool: + """ returns true if executing can be used for expressions inside assert statements which are rewritten by pytest + """ + if sys.version_info < (3, 11): + return False + + try: + import pytest + except ImportError: + return False + + return pytest.version_tuple >= (8, 3, 4) diff --git a/contrib/python/executing/executing/version.py b/contrib/python/executing/executing/version.py index b15121b0fec..e212710ff7b 100644 --- a/contrib/python/executing/executing/version.py +++ b/contrib/python/executing/executing/version.py @@ -1 +1 @@ -__version__ = '2.1.0'
\ No newline at end of file +__version__ = '2.2.0'
\ No newline at end of file diff --git a/contrib/python/executing/ya.make b/contrib/python/executing/ya.make index b437b26981c..32d111cc478 100644 --- a/contrib/python/executing/ya.make +++ b/contrib/python/executing/ya.make @@ -2,7 +2,7 @@ PY3_LIBRARY() -VERSION(2.1.0) +VERSION(2.2.0) LICENSE(MIT) @@ -13,6 +13,7 @@ PY_SRCS( executing/__init__.py executing/_exceptions.py executing/_position_node_finder.py + executing/_pytest_utils.py executing/executing.py executing/version.py ) diff --git a/contrib/python/packaging/py3/.dist-info/METADATA b/contrib/python/packaging/py3/.dist-info/METADATA index 358ace53624..1479c8694bf 100644 --- a/contrib/python/packaging/py3/.dist-info/METADATA +++ b/contrib/python/packaging/py3/.dist-info/METADATA @@ -1,12 +1,10 @@ -Metadata-Version: 2.1 +Metadata-Version: 2.3 Name: packaging -Version: 21.3 +Version: 24.2 Summary: Core utilities for Python packages -Home-page: https://github.com/pypa/packaging -Author: Donald Stufft and individual contributors -Author-email: donald@stufft.io -License: BSD-2-Clause or Apache-2.0 -Platform: UNKNOWN +Author-email: Donald Stufft <donald@stufft.io> +Requires-Python: >=3.8 +Description-Content-Type: text/x-rst Classifier: Development Status :: 5 - Production/Stable Classifier: Intended Audience :: Developers Classifier: License :: OSI Approved :: Apache Software License @@ -14,19 +12,17 @@ Classifier: License :: OSI Approved :: BSD License Classifier: Programming Language :: Python Classifier: Programming Language :: Python :: 3 Classifier: Programming Language :: Python :: 3 :: Only -Classifier: Programming Language :: Python :: 3.6 -Classifier: Programming Language :: Python :: 3.7 Classifier: Programming Language :: Python :: 3.8 Classifier: Programming Language :: Python :: 3.9 Classifier: Programming Language :: Python :: 3.10 +Classifier: Programming Language :: Python :: 3.11 +Classifier: Programming Language :: Python :: 3.12 +Classifier: Programming Language :: Python :: 3.13 Classifier: Programming Language :: Python :: Implementation :: CPython Classifier: Programming Language :: Python :: Implementation :: PyPy -Requires-Python: >=3.6 -Description-Content-Type: text/x-rst -License-File: LICENSE -License-File: LICENSE.APACHE -License-File: LICENSE.BSD -Requires-Dist: pyparsing (!=3.0.5,>=2.0.2) +Classifier: Typing :: Typed +Project-URL: Documentation, https://packaging.pypa.io/ +Project-URL: Source, https://github.com/pypa/packaging packaging ========= @@ -64,6 +60,8 @@ Use ``pip`` to install these utilities:: pip install packaging +The ``packaging`` library uses calendar-based versioning (``YY.N``). + Discussion ---------- @@ -102,352 +100,3 @@ recent changes and project history. .. _`Changelog documentation`: https://packaging.pypa.io/en/latest/changelog/ -Changelog ---------- - -21.3 - 2021-11-17 -~~~~~~~~~~~~~~~~~ - -* Add a ``pp3-none-any`` tag (`#311 <https://github.com/pypa/packaging/issues/311>`__) -* Replace the blank pyparsing 3 exclusion with a 3.0.5 exclusion (`#481 <https://github.com/pypa/packaging/issues/481>`__, `#486 <https://github.com/pypa/packaging/issues/486>`__) -* Fix a spelling mistake (`#479 <https://github.com/pypa/packaging/issues/479>`__) - -21.2 - 2021-10-29 -~~~~~~~~~~~~~~~~~ - -* Update documentation entry for 21.1. - -21.1 - 2021-10-29 -~~~~~~~~~~~~~~~~~ - -* Update pin to pyparsing to exclude 3.0.0. - -21.0 - 2021-07-03 -~~~~~~~~~~~~~~~~~ - -* PEP 656: musllinux support (`#411 <https://github.com/pypa/packaging/issues/411>`__) -* Drop support for Python 2.7, Python 3.4 and Python 3.5. -* Replace distutils usage with sysconfig (`#396 <https://github.com/pypa/packaging/issues/396>`__) -* Add support for zip files in ``parse_sdist_filename`` (`#429 <https://github.com/pypa/packaging/issues/429>`__) -* Use cached ``_hash`` attribute to short-circuit tag equality comparisons (`#417 <https://github.com/pypa/packaging/issues/417>`__) -* Specify the default value for the ``specifier`` argument to ``SpecifierSet`` (`#437 <https://github.com/pypa/packaging/issues/437>`__) -* Proper keyword-only "warn" argument in packaging.tags (`#403 <https://github.com/pypa/packaging/issues/403>`__) -* Correctly remove prerelease suffixes from ~= check (`#366 <https://github.com/pypa/packaging/issues/366>`__) -* Fix type hints for ``Version.post`` and ``Version.dev`` (`#393 <https://github.com/pypa/packaging/issues/393>`__) -* Use typing alias ``UnparsedVersion`` (`#398 <https://github.com/pypa/packaging/issues/398>`__) -* Improve type inference for ``packaging.specifiers.filter()`` (`#430 <https://github.com/pypa/packaging/issues/430>`__) -* Tighten the return type of ``canonicalize_version()`` (`#402 <https://github.com/pypa/packaging/issues/402>`__) - -20.9 - 2021-01-29 -~~~~~~~~~~~~~~~~~ - -* Run `isort <https://pypi.org/project/isort/>`_ over the code base (`#377 <https://github.com/pypa/packaging/issues/377>`__) -* Add support for the ``macosx_10_*_universal2`` platform tags (`#379 <https://github.com/pypa/packaging/issues/379>`__) -* Introduce ``packaging.utils.parse_wheel_filename()`` and ``parse_sdist_filename()`` - (`#387 <https://github.com/pypa/packaging/issues/387>`__ and `#389 <https://github.com/pypa/packaging/issues/389>`__) - -20.8 - 2020-12-11 -~~~~~~~~~~~~~~~~~ - -* Revert back to setuptools for compatibility purposes for some Linux distros (`#363 <https://github.com/pypa/packaging/issues/363>`__) -* Do not insert an underscore in wheel tags when the interpreter version number - is more than 2 digits (`#372 <https://github.com/pypa/packaging/issues/372>`__) - -20.7 - 2020-11-28 -~~~~~~~~~~~~~~~~~ - -No unreleased changes. - -20.6 - 2020-11-28 -~~~~~~~~~~~~~~~~~ - -.. note:: This release was subsequently yanked, and these changes were included in 20.7. - -* Fix flit configuration, to include LICENSE files (`#357 <https://github.com/pypa/packaging/issues/357>`__) -* Make `intel` a recognized CPU architecture for the `universal` macOS platform tag (`#361 <https://github.com/pypa/packaging/issues/361>`__) -* Add some missing type hints to `packaging.requirements` (issue:`350`) - -20.5 - 2020-11-27 -~~~~~~~~~~~~~~~~~ - -* Officially support Python 3.9 (`#343 <https://github.com/pypa/packaging/issues/343>`__) -* Deprecate the ``LegacyVersion`` and ``LegacySpecifier`` classes (`#321 <https://github.com/pypa/packaging/issues/321>`__) -* Handle ``OSError`` on non-dynamic executables when attempting to resolve - the glibc version string. - -20.4 - 2020-05-19 -~~~~~~~~~~~~~~~~~ - -* Canonicalize version before comparing specifiers. (`#282 <https://github.com/pypa/packaging/issues/282>`__) -* Change type hint for ``canonicalize_name`` to return - ``packaging.utils.NormalizedName``. - This enables the use of static typing tools (like mypy) to detect mixing of - normalized and un-normalized names. - -20.3 - 2020-03-05 -~~~~~~~~~~~~~~~~~ - -* Fix changelog for 20.2. - -20.2 - 2020-03-05 -~~~~~~~~~~~~~~~~~ - -* Fix a bug that caused a 32-bit OS that runs on a 64-bit ARM CPU (e.g. ARM-v8, - aarch64), to report the wrong bitness. - -20.1 - 2020-01-24 -~~~~~~~~~~~~~~~~~~~ - -* Fix a bug caused by reuse of an exhausted iterator. (`#257 <https://github.com/pypa/packaging/issues/257>`__) - -20.0 - 2020-01-06 -~~~~~~~~~~~~~~~~~ - -* Add type hints (`#191 <https://github.com/pypa/packaging/issues/191>`__) - -* Add proper trove classifiers for PyPy support (`#198 <https://github.com/pypa/packaging/issues/198>`__) - -* Scale back depending on ``ctypes`` for manylinux support detection (`#171 <https://github.com/pypa/packaging/issues/171>`__) - -* Use ``sys.implementation.name`` where appropriate for ``packaging.tags`` (`#193 <https://github.com/pypa/packaging/issues/193>`__) - -* Expand upon the API provided by ``packaging.tags``: ``interpreter_name()``, ``mac_platforms()``, ``compatible_tags()``, ``cpython_tags()``, ``generic_tags()`` (`#187 <https://github.com/pypa/packaging/issues/187>`__) - -* Officially support Python 3.8 (`#232 <https://github.com/pypa/packaging/issues/232>`__) - -* Add ``major``, ``minor``, and ``micro`` aliases to ``packaging.version.Version`` (`#226 <https://github.com/pypa/packaging/issues/226>`__) - -* Properly mark ``packaging`` has being fully typed by adding a `py.typed` file (`#226 <https://github.com/pypa/packaging/issues/226>`__) - -19.2 - 2019-09-18 -~~~~~~~~~~~~~~~~~ - -* Remove dependency on ``attrs`` (`#178 <https://github.com/pypa/packaging/issues/178>`__, `#179 <https://github.com/pypa/packaging/issues/179>`__) - -* Use appropriate fallbacks for CPython ABI tag (`#181 <https://github.com/pypa/packaging/issues/181>`__, `#185 <https://github.com/pypa/packaging/issues/185>`__) - -* Add manylinux2014 support (`#186 <https://github.com/pypa/packaging/issues/186>`__) - -* Improve ABI detection (`#181 <https://github.com/pypa/packaging/issues/181>`__) - -* Properly handle debug wheels for Python 3.8 (`#172 <https://github.com/pypa/packaging/issues/172>`__) - -* Improve detection of debug builds on Windows (`#194 <https://github.com/pypa/packaging/issues/194>`__) - -19.1 - 2019-07-30 -~~~~~~~~~~~~~~~~~ - -* Add the ``packaging.tags`` module. (`#156 <https://github.com/pypa/packaging/issues/156>`__) - -* Correctly handle two-digit versions in ``python_version`` (`#119 <https://github.com/pypa/packaging/issues/119>`__) - - -19.0 - 2019-01-20 -~~~~~~~~~~~~~~~~~ - -* Fix string representation of PEP 508 direct URL requirements with markers. - -* Better handling of file URLs - - This allows for using ``file:///absolute/path``, which was previously - prevented due to the missing ``netloc``. - - This allows for all file URLs that ``urlunparse`` turns back into the - original URL to be valid. - - -18.0 - 2018-09-26 -~~~~~~~~~~~~~~~~~ - -* Improve error messages when invalid requirements are given. (`#129 <https://github.com/pypa/packaging/issues/129>`__) - - -17.1 - 2017-02-28 -~~~~~~~~~~~~~~~~~ - -* Fix ``utils.canonicalize_version`` when supplying non PEP 440 versions. - - -17.0 - 2017-02-28 -~~~~~~~~~~~~~~~~~ - -* Drop support for python 2.6, 3.2, and 3.3. - -* Define minimal pyparsing version to 2.0.2 (`#91 <https://github.com/pypa/packaging/issues/91>`__). - -* Add ``epoch``, ``release``, ``pre``, ``dev``, and ``post`` attributes to - ``Version`` and ``LegacyVersion`` (`#34 <https://github.com/pypa/packaging/issues/34>`__). - -* Add ``Version().is_devrelease`` and ``LegacyVersion().is_devrelease`` to - make it easy to determine if a release is a development release. - -* Add ``utils.canonicalize_version`` to canonicalize version strings or - ``Version`` instances (`#121 <https://github.com/pypa/packaging/issues/121>`__). - - -16.8 - 2016-10-29 -~~~~~~~~~~~~~~~~~ - -* Fix markers that utilize ``in`` so that they render correctly. - -* Fix an erroneous test on Python RC releases. - - -16.7 - 2016-04-23 -~~~~~~~~~~~~~~~~~ - -* Add support for the deprecated ``python_implementation`` marker which was - an undocumented setuptools marker in addition to the newer markers. - - -16.6 - 2016-03-29 -~~~~~~~~~~~~~~~~~ - -* Add support for the deprecated, PEP 345 environment markers in addition to - the newer markers. - - -16.5 - 2016-02-26 -~~~~~~~~~~~~~~~~~ - -* Fix a regression in parsing requirements with whitespaces between the comma - separators. - - -16.4 - 2016-02-22 -~~~~~~~~~~~~~~~~~ - -* Fix a regression in parsing requirements like ``foo (==4)``. - - -16.3 - 2016-02-21 -~~~~~~~~~~~~~~~~~ - -* Fix a bug where ``packaging.requirements:Requirement`` was overly strict when - matching legacy requirements. - - -16.2 - 2016-02-09 -~~~~~~~~~~~~~~~~~ - -* Add a function that implements the name canonicalization from PEP 503. - - -16.1 - 2016-02-07 -~~~~~~~~~~~~~~~~~ - -* Implement requirement specifiers from PEP 508. - - -16.0 - 2016-01-19 -~~~~~~~~~~~~~~~~~ - -* Relicense so that packaging is available under *either* the Apache License, - Version 2.0 or a 2 Clause BSD license. - -* Support installation of packaging when only distutils is available. - -* Fix ``==`` comparison when there is a prefix and a local version in play. - (`#41 <https://github.com/pypa/packaging/issues/41>`__). - -* Implement environment markers from PEP 508. - - -15.3 - 2015-08-01 -~~~~~~~~~~~~~~~~~ - -* Normalize post-release spellings for rev/r prefixes. `#35 <https://github.com/pypa/packaging/issues/35>`__ - - -15.2 - 2015-05-13 -~~~~~~~~~~~~~~~~~ - -* Fix an error where the arbitrary specifier (``===``) was not correctly - allowing pre-releases when it was being used. - -* Expose the specifier and version parts through properties on the - ``Specifier`` classes. - -* Allow iterating over the ``SpecifierSet`` to get access to all of the - ``Specifier`` instances. - -* Allow testing if a version is contained within a specifier via the ``in`` - operator. - - -15.1 - 2015-04-13 -~~~~~~~~~~~~~~~~~ - -* Fix a logic error that was causing inconsistent answers about whether or not - a pre-release was contained within a ``SpecifierSet`` or not. - - -15.0 - 2015-01-02 -~~~~~~~~~~~~~~~~~ - -* Add ``Version().is_postrelease`` and ``LegacyVersion().is_postrelease`` to - make it easy to determine if a release is a post release. - -* Add ``Version().base_version`` and ``LegacyVersion().base_version`` to make - it easy to get the public version without any pre or post release markers. - -* Support the update to PEP 440 which removed the implied ``!=V.*`` when using - either ``>V`` or ``<V`` and which instead special cased the handling of - pre-releases, post-releases, and local versions when using ``>V`` or ``<V``. - - -14.5 - 2014-12-17 -~~~~~~~~~~~~~~~~~ - -* Normalize release candidates as ``rc`` instead of ``c``. - -* Expose the ``VERSION_PATTERN`` constant, a regular expression matching - a valid version. - - -14.4 - 2014-12-15 -~~~~~~~~~~~~~~~~~ - -* Ensure that versions are normalized before comparison when used in a - specifier with a less than (``<``) or greater than (``>``) operator. - - -14.3 - 2014-11-19 -~~~~~~~~~~~~~~~~~ - -* **BACKWARDS INCOMPATIBLE** Refactor specifier support so that it can sanely - handle legacy specifiers as well as PEP 440 specifiers. - -* **BACKWARDS INCOMPATIBLE** Move the specifier support out of - ``packaging.version`` into ``packaging.specifiers``. - - -14.2 - 2014-09-10 -~~~~~~~~~~~~~~~~~ - -* Add prerelease support to ``Specifier``. -* Remove the ability to do ``item in Specifier()`` and replace it with - ``Specifier().contains(item)`` in order to allow flags that signal if a - prerelease should be accepted or not. -* Add a method ``Specifier().filter()`` which will take an iterable and returns - an iterable with items that do not match the specifier filtered out. - - -14.1 - 2014-09-08 -~~~~~~~~~~~~~~~~~ - -* Allow ``LegacyVersion`` and ``Version`` to be sorted together. -* Add ``packaging.version.parse()`` to enable easily parsing a version string - as either a ``Version`` or a ``LegacyVersion`` depending on it's PEP 440 - validity. - - -14.0 - 2014-09-05 -~~~~~~~~~~~~~~~~~ - -* Initial release. - - -.. _`master`: https://github.com/pypa/packaging/ - - diff --git a/contrib/python/packaging/py3/README.rst b/contrib/python/packaging/py3/README.rst index e8bebe74dc1..4e01206a144 100644 --- a/contrib/python/packaging/py3/README.rst +++ b/contrib/python/packaging/py3/README.rst @@ -34,6 +34,8 @@ Use ``pip`` to install these utilities:: pip install packaging +The ``packaging`` library uses calendar-based versioning (``YY.N``). + Discussion ---------- diff --git a/contrib/python/packaging/py3/packaging/__about__.py b/contrib/python/packaging/py3/packaging/__about__.py deleted file mode 100644 index 3551bc2d298..00000000000 --- a/contrib/python/packaging/py3/packaging/__about__.py +++ /dev/null @@ -1,26 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - -__all__ = [ - "__title__", - "__summary__", - "__uri__", - "__version__", - "__author__", - "__email__", - "__license__", - "__copyright__", -] - -__title__ = "packaging" -__summary__ = "Core utilities for Python packages" -__uri__ = "https://github.com/pypa/packaging" - -__version__ = "21.3" - -__author__ = "Donald Stufft and individual contributors" -__email__ = "donald@stufft.io" - -__license__ = "BSD-2-Clause or Apache-2.0" -__copyright__ = "2014-2019 %s" % __author__ diff --git a/contrib/python/packaging/py3/packaging/__init__.py b/contrib/python/packaging/py3/packaging/__init__.py index 3c50c5dcfee..d79f73c574f 100644 --- a/contrib/python/packaging/py3/packaging/__init__.py +++ b/contrib/python/packaging/py3/packaging/__init__.py @@ -2,24 +2,14 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. -from .__about__ import ( - __author__, - __copyright__, - __email__, - __license__, - __summary__, - __title__, - __uri__, - __version__, -) +__title__ = "packaging" +__summary__ = "Core utilities for Python packages" +__uri__ = "https://github.com/pypa/packaging" -__all__ = [ - "__title__", - "__summary__", - "__uri__", - "__version__", - "__author__", - "__email__", - "__license__", - "__copyright__", -] +__version__ = "24.2" + +__author__ = "Donald Stufft and individual contributors" +__email__ = "donald@stufft.io" + +__license__ = "BSD-2-Clause or Apache-2.0" +__copyright__ = f"2014 {__author__}" diff --git a/contrib/python/packaging/py3/packaging/_elffile.py b/contrib/python/packaging/py3/packaging/_elffile.py new file mode 100644 index 00000000000..25f4282cc29 --- /dev/null +++ b/contrib/python/packaging/py3/packaging/_elffile.py @@ -0,0 +1,110 @@ +""" +ELF file parser. + +This provides a class ``ELFFile`` that parses an ELF executable in a similar +interface to ``ZipFile``. Only the read interface is implemented. + +Based on: https://gist.github.com/lyssdod/f51579ae8d93c8657a5564aefc2ffbca +ELF header: https://refspecs.linuxfoundation.org/elf/gabi4+/ch4.eheader.html +""" + +from __future__ import annotations + +import enum +import os +import struct +from typing import IO + + +class ELFInvalid(ValueError): + pass + + +class EIClass(enum.IntEnum): + C32 = 1 + C64 = 2 + + +class EIData(enum.IntEnum): + Lsb = 1 + Msb = 2 + + +class EMachine(enum.IntEnum): + I386 = 3 + S390 = 22 + Arm = 40 + X8664 = 62 + AArc64 = 183 + + +class ELFFile: + """ + Representation of an ELF executable. + """ + + def __init__(self, f: IO[bytes]) -> None: + self._f = f + + try: + ident = self._read("16B") + except struct.error as e: + raise ELFInvalid("unable to parse identification") from e + magic = bytes(ident[:4]) + if magic != b"\x7fELF": + raise ELFInvalid(f"invalid magic: {magic!r}") + + self.capacity = ident[4] # Format for program header (bitness). + self.encoding = ident[5] # Data structure encoding (endianness). + + try: + # e_fmt: Format for program header. + # p_fmt: Format for section header. + # p_idx: Indexes to find p_type, p_offset, and p_filesz. + e_fmt, self._p_fmt, self._p_idx = { + (1, 1): ("<HHIIIIIHHH", "<IIIIIIII", (0, 1, 4)), # 32-bit LSB. + (1, 2): (">HHIIIIIHHH", ">IIIIIIII", (0, 1, 4)), # 32-bit MSB. + (2, 1): ("<HHIQQQIHHH", "<IIQQQQQQ", (0, 2, 5)), # 64-bit LSB. + (2, 2): (">HHIQQQIHHH", ">IIQQQQQQ", (0, 2, 5)), # 64-bit MSB. + }[(self.capacity, self.encoding)] + except KeyError as e: + raise ELFInvalid( + f"unrecognized capacity ({self.capacity}) or " + f"encoding ({self.encoding})" + ) from e + + try: + ( + _, + self.machine, # Architecture type. + _, + _, + self._e_phoff, # Offset of program header. + _, + self.flags, # Processor-specific flags. + _, + self._e_phentsize, # Size of section. + self._e_phnum, # Number of sections. + ) = self._read(e_fmt) + except struct.error as e: + raise ELFInvalid("unable to parse machine and section information") from e + + def _read(self, fmt: str) -> tuple[int, ...]: + return struct.unpack(fmt, self._f.read(struct.calcsize(fmt))) + + @property + def interpreter(self) -> str | None: + """ + The path recorded in the ``PT_INTERP`` section header. + """ + for index in range(self._e_phnum): + self._f.seek(self._e_phoff + self._e_phentsize * index) + try: + data = self._read(self._p_fmt) + except struct.error: + continue + if data[self._p_idx[0]] != 3: # Not PT_INTERP. + continue + self._f.seek(data[self._p_idx[1]]) + return os.fsdecode(self._f.read(data[self._p_idx[2]])).strip("\0") + return None diff --git a/contrib/python/packaging/py3/packaging/_manylinux.py b/contrib/python/packaging/py3/packaging/_manylinux.py index 4c379aa6f69..61339a6fcc1 100644 --- a/contrib/python/packaging/py3/packaging/_manylinux.py +++ b/contrib/python/packaging/py3/packaging/_manylinux.py @@ -1,122 +1,72 @@ +from __future__ import annotations + import collections +import contextlib import functools import os import re -import struct import sys import warnings -from typing import IO, Dict, Iterator, NamedTuple, Optional, Tuple - - -# Python does not provide platform information at sufficient granularity to -# identify the architecture of the running executable in some cases, so we -# determine it dynamically by reading the information from the running -# process. This only applies on Linux, which uses the ELF format. -class _ELFFileHeader: - # https://en.wikipedia.org/wiki/Executable_and_Linkable_Format#File_header - class _InvalidELFFileHeader(ValueError): - """ - An invalid ELF file header was found. - """ - - ELF_MAGIC_NUMBER = 0x7F454C46 - ELFCLASS32 = 1 - ELFCLASS64 = 2 - ELFDATA2LSB = 1 - ELFDATA2MSB = 2 - EM_386 = 3 - EM_S390 = 22 - EM_ARM = 40 - EM_X86_64 = 62 - EF_ARM_ABIMASK = 0xFF000000 - EF_ARM_ABI_VER5 = 0x05000000 - EF_ARM_ABI_FLOAT_HARD = 0x00000400 - - def __init__(self, file: IO[bytes]) -> None: - def unpack(fmt: str) -> int: - try: - data = file.read(struct.calcsize(fmt)) - result: Tuple[int, ...] = struct.unpack(fmt, data) - except struct.error: - raise _ELFFileHeader._InvalidELFFileHeader() - return result[0] - - self.e_ident_magic = unpack(">I") - if self.e_ident_magic != self.ELF_MAGIC_NUMBER: - raise _ELFFileHeader._InvalidELFFileHeader() - self.e_ident_class = unpack("B") - if self.e_ident_class not in {self.ELFCLASS32, self.ELFCLASS64}: - raise _ELFFileHeader._InvalidELFFileHeader() - self.e_ident_data = unpack("B") - if self.e_ident_data not in {self.ELFDATA2LSB, self.ELFDATA2MSB}: - raise _ELFFileHeader._InvalidELFFileHeader() - self.e_ident_version = unpack("B") - self.e_ident_osabi = unpack("B") - self.e_ident_abiversion = unpack("B") - self.e_ident_pad = file.read(7) - format_h = "<H" if self.e_ident_data == self.ELFDATA2LSB else ">H" - format_i = "<I" if self.e_ident_data == self.ELFDATA2LSB else ">I" - format_q = "<Q" if self.e_ident_data == self.ELFDATA2LSB else ">Q" - format_p = format_i if self.e_ident_class == self.ELFCLASS32 else format_q - self.e_type = unpack(format_h) - self.e_machine = unpack(format_h) - self.e_version = unpack(format_i) - self.e_entry = unpack(format_p) - self.e_phoff = unpack(format_p) - self.e_shoff = unpack(format_p) - self.e_flags = unpack(format_i) - self.e_ehsize = unpack(format_h) - self.e_phentsize = unpack(format_h) - self.e_phnum = unpack(format_h) - self.e_shentsize = unpack(format_h) - self.e_shnum = unpack(format_h) - self.e_shstrndx = unpack(format_h) - - -def _get_elf_header() -> Optional[_ELFFileHeader]: +from typing import Generator, Iterator, NamedTuple, Sequence + +from ._elffile import EIClass, EIData, ELFFile, EMachine + +EF_ARM_ABIMASK = 0xFF000000 +EF_ARM_ABI_VER5 = 0x05000000 +EF_ARM_ABI_FLOAT_HARD = 0x00000400 + + +# `os.PathLike` not a generic type until Python 3.9, so sticking with `str` +# as the type for `path` until then. +@contextlib.contextmanager +def _parse_elf(path: str) -> Generator[ELFFile | None, None, None]: try: - with open(sys.executable, "rb") as f: - elf_header = _ELFFileHeader(f) - except (OSError, TypeError, _ELFFileHeader._InvalidELFFileHeader): - return None - return elf_header + with open(path, "rb") as f: + yield ELFFile(f) + except (OSError, TypeError, ValueError): + yield None -def _is_linux_armhf() -> bool: +def _is_linux_armhf(executable: str) -> bool: # hard-float ABI can be detected from the ELF header of the running # process # https://static.docs.arm.com/ihi0044/g/aaelf32.pdf - elf_header = _get_elf_header() - if elf_header is None: - return False - result = elf_header.e_ident_class == elf_header.ELFCLASS32 - result &= elf_header.e_ident_data == elf_header.ELFDATA2LSB - result &= elf_header.e_machine == elf_header.EM_ARM - result &= ( - elf_header.e_flags & elf_header.EF_ARM_ABIMASK - ) == elf_header.EF_ARM_ABI_VER5 - result &= ( - elf_header.e_flags & elf_header.EF_ARM_ABI_FLOAT_HARD - ) == elf_header.EF_ARM_ABI_FLOAT_HARD - return result - - -def _is_linux_i686() -> bool: - elf_header = _get_elf_header() - if elf_header is None: - return False - result = elf_header.e_ident_class == elf_header.ELFCLASS32 - result &= elf_header.e_ident_data == elf_header.ELFDATA2LSB - result &= elf_header.e_machine == elf_header.EM_386 - return result + with _parse_elf(executable) as f: + return ( + f is not None + and f.capacity == EIClass.C32 + and f.encoding == EIData.Lsb + and f.machine == EMachine.Arm + and f.flags & EF_ARM_ABIMASK == EF_ARM_ABI_VER5 + and f.flags & EF_ARM_ABI_FLOAT_HARD == EF_ARM_ABI_FLOAT_HARD + ) + + +def _is_linux_i686(executable: str) -> bool: + with _parse_elf(executable) as f: + return ( + f is not None + and f.capacity == EIClass.C32 + and f.encoding == EIData.Lsb + and f.machine == EMachine.I386 + ) -def _have_compatible_abi(arch: str) -> bool: - if arch == "armv7l": - return _is_linux_armhf() - if arch == "i686": - return _is_linux_i686() - return arch in {"x86_64", "aarch64", "ppc64", "ppc64le", "s390x"} +def _have_compatible_abi(executable: str, archs: Sequence[str]) -> bool: + if "armv7l" in archs: + return _is_linux_armhf(executable) + if "i686" in archs: + return _is_linux_i686(executable) + allowed_archs = { + "x86_64", + "aarch64", + "ppc64", + "ppc64le", + "s390x", + "loongarch64", + "riscv64", + } + return any(arch in allowed_archs for arch in archs) # If glibc ever changes its major version, we need to know what the last @@ -124,7 +74,7 @@ def _have_compatible_abi(arch: str) -> bool: # For now, guess what the highest minor version might be, assume it will # be 50 for testing. Once this actually happens, update the dictionary # with the actual value. -_LAST_GLIBC_MINOR: Dict[int, int] = collections.defaultdict(lambda: 50) +_LAST_GLIBC_MINOR: dict[int, int] = collections.defaultdict(lambda: 50) class _GLibCVersion(NamedTuple): @@ -132,7 +82,7 @@ class _GLibCVersion(NamedTuple): minor: int -def _glibc_version_string_confstr() -> Optional[str]: +def _glibc_version_string_confstr() -> str | None: """ Primary implementation of glibc_version_string using os.confstr. """ @@ -141,17 +91,17 @@ def _glibc_version_string_confstr() -> Optional[str]: # platform module. # https://github.com/python/cpython/blob/fcf1d003bf4f0100c/Lib/platform.py#L175-L183 try: - # os.confstr("CS_GNU_LIBC_VERSION") returns a string like "glibc 2.17". - version_string = os.confstr("CS_GNU_LIBC_VERSION") + # Should be a string like "glibc 2.17". + version_string: str | None = os.confstr("CS_GNU_LIBC_VERSION") assert version_string is not None - _, version = version_string.split() + _, version = version_string.rsplit() except (AssertionError, AttributeError, OSError, ValueError): # os.confstr() or CS_GNU_LIBC_VERSION not available (or a bad value)... return None return version -def _glibc_version_string_ctypes() -> Optional[str]: +def _glibc_version_string_ctypes() -> str | None: """ Fallback implementation of glibc_version_string using ctypes. """ @@ -195,12 +145,12 @@ def _glibc_version_string_ctypes() -> Optional[str]: return version_str -def _glibc_version_string() -> Optional[str]: +def _glibc_version_string() -> str | None: """Returns glibc version string, or None if not using glibc.""" return _glibc_version_string_confstr() or _glibc_version_string_ctypes() -def _parse_glibc_version(version_str: str) -> Tuple[int, int]: +def _parse_glibc_version(version_str: str) -> tuple[int, int]: """Parse glibc version. We use a regexp instead of str.split because we want to discard any @@ -211,16 +161,17 @@ def _parse_glibc_version(version_str: str) -> Tuple[int, int]: m = re.match(r"(?P<major>[0-9]+)\.(?P<minor>[0-9]+)", version_str) if not m: warnings.warn( - "Expected glibc version with 2 components major.minor," - " got: %s" % version_str, + f"Expected glibc version with 2 components major.minor," + f" got: {version_str}", RuntimeWarning, + stacklevel=2, ) return -1, -1 return int(m.group("major")), int(m.group("minor")) -@functools.lru_cache() -def _get_glibc_version() -> Tuple[int, int]: +@functools.lru_cache +def _get_glibc_version() -> tuple[int, int]: version_str = _glibc_version_string() if version_str is None: return (-1, -1) @@ -228,13 +179,13 @@ def _get_glibc_version() -> Tuple[int, int]: # From PEP 513, PEP 600 -def _is_compatible(name: str, arch: str, version: _GLibCVersion) -> bool: +def _is_compatible(arch: str, version: _GLibCVersion) -> bool: sys_glibc = _get_glibc_version() if sys_glibc < version: return False # Check for presence of _manylinux module. try: - import _manylinux # noqa + import _manylinux except ImportError: return True if hasattr(_manylinux, "manylinux_compatible"): @@ -264,12 +215,22 @@ _LEGACY_MANYLINUX_MAP = { } -def platform_tags(linux: str, arch: str) -> Iterator[str]: - if not _have_compatible_abi(arch): +def platform_tags(archs: Sequence[str]) -> Iterator[str]: + """Generate manylinux tags compatible to the current platform. + + :param archs: Sequence of compatible architectures. + The first one shall be the closest to the actual architecture and be the part of + platform tag after the ``linux_`` prefix, e.g. ``x86_64``. + The ``linux_`` prefix is assumed as a prerequisite for the current platform to + be manylinux-compatible. + + :returns: An iterator of compatible manylinux tags. + """ + if not _have_compatible_abi(sys.executable, archs): return # Oldest glibc to be supported regardless of architecture is (2, 17). too_old_glibc2 = _GLibCVersion(2, 16) - if arch in {"x86_64", "i686"}: + if set(archs) & {"x86_64", "i686"}: # On x86/i686 also oldest glibc to be supported is (2, 5). too_old_glibc2 = _GLibCVersion(2, 4) current_glibc = _GLibCVersion(*_get_glibc_version()) @@ -283,19 +244,20 @@ def platform_tags(linux: str, arch: str) -> Iterator[str]: for glibc_major in range(current_glibc.major - 1, 1, -1): glibc_minor = _LAST_GLIBC_MINOR[glibc_major] glibc_max_list.append(_GLibCVersion(glibc_major, glibc_minor)) - for glibc_max in glibc_max_list: - if glibc_max.major == too_old_glibc2.major: - min_minor = too_old_glibc2.minor - else: - # For other glibc major versions oldest supported is (x, 0). - min_minor = -1 - for glibc_minor in range(glibc_max.minor, min_minor, -1): - glibc_version = _GLibCVersion(glibc_max.major, glibc_minor) - tag = "manylinux_{}_{}".format(*glibc_version) - if _is_compatible(tag, arch, glibc_version): - yield linux.replace("linux", tag) - # Handle the legacy manylinux1, manylinux2010, manylinux2014 tags. - if glibc_version in _LEGACY_MANYLINUX_MAP: - legacy_tag = _LEGACY_MANYLINUX_MAP[glibc_version] - if _is_compatible(legacy_tag, arch, glibc_version): - yield linux.replace("linux", legacy_tag) + for arch in archs: + for glibc_max in glibc_max_list: + if glibc_max.major == too_old_glibc2.major: + min_minor = too_old_glibc2.minor + else: + # For other glibc major versions oldest supported is (x, 0). + min_minor = -1 + for glibc_minor in range(glibc_max.minor, min_minor, -1): + glibc_version = _GLibCVersion(glibc_max.major, glibc_minor) + tag = "manylinux_{}_{}".format(*glibc_version) + if _is_compatible(arch, glibc_version): + yield f"{tag}_{arch}" + # Handle the legacy manylinux1, manylinux2010, manylinux2014 tags. + if glibc_version in _LEGACY_MANYLINUX_MAP: + legacy_tag = _LEGACY_MANYLINUX_MAP[glibc_version] + if _is_compatible(arch, glibc_version): + yield f"{legacy_tag}_{arch}" diff --git a/contrib/python/packaging/py3/packaging/_musllinux.py b/contrib/python/packaging/py3/packaging/_musllinux.py index 8ac3059ba3c..d2bf30b5631 100644 --- a/contrib/python/packaging/py3/packaging/_musllinux.py +++ b/contrib/python/packaging/py3/packaging/_musllinux.py @@ -4,68 +4,15 @@ This module implements logic to detect if the currently running Python is linked against musl, and what musl version is used. """ -import contextlib +from __future__ import annotations + import functools -import operator -import os import re -import struct import subprocess import sys -from typing import IO, Iterator, NamedTuple, Optional, Tuple - - -def _read_unpacked(f: IO[bytes], fmt: str) -> Tuple[int, ...]: - return struct.unpack(fmt, f.read(struct.calcsize(fmt))) +from typing import Iterator, NamedTuple, Sequence - -def _parse_ld_musl_from_elf(f: IO[bytes]) -> Optional[str]: - """Detect musl libc location by parsing the Python executable. - - Based on: https://gist.github.com/lyssdod/f51579ae8d93c8657a5564aefc2ffbca - ELF header: https://refspecs.linuxfoundation.org/elf/gabi4+/ch4.eheader.html - """ - f.seek(0) - try: - ident = _read_unpacked(f, "16B") - except struct.error: - return None - if ident[:4] != tuple(b"\x7fELF"): # Invalid magic, not ELF. - return None - f.seek(struct.calcsize("HHI"), 1) # Skip file type, machine, and version. - - try: - # e_fmt: Format for program header. - # p_fmt: Format for section header. - # p_idx: Indexes to find p_type, p_offset, and p_filesz. - e_fmt, p_fmt, p_idx = { - 1: ("IIIIHHH", "IIIIIIII", (0, 1, 4)), # 32-bit. - 2: ("QQQIHHH", "IIQQQQQQ", (0, 2, 5)), # 64-bit. - }[ident[4]] - except KeyError: - return None - else: - p_get = operator.itemgetter(*p_idx) - - # Find the interpreter section and return its content. - try: - _, e_phoff, _, _, _, e_phentsize, e_phnum = _read_unpacked(f, e_fmt) - except struct.error: - return None - for i in range(e_phnum + 1): - f.seek(e_phoff + e_phentsize * i) - try: - p_type, p_offset, p_filesz = p_get(_read_unpacked(f, p_fmt)) - except struct.error: - return None - if p_type != 3: # Not PT_INTERP. - continue - f.seek(p_offset) - interpreter = os.fsdecode(f.read(p_filesz)).strip("\0") - if "musl" not in interpreter: - return None - return interpreter - return None +from ._elffile import ELFFile class _MuslVersion(NamedTuple): @@ -73,7 +20,7 @@ class _MuslVersion(NamedTuple): minor: int -def _parse_musl_version(output: str) -> Optional[_MuslVersion]: +def _parse_musl_version(output: str) -> _MuslVersion | None: lines = [n for n in (n.strip() for n in output.splitlines()) if n] if len(lines) < 2 or lines[0][:4] != "musl": return None @@ -83,8 +30,8 @@ def _parse_musl_version(output: str) -> Optional[_MuslVersion]: return _MuslVersion(major=int(m.group(1)), minor=int(m.group(2))) -@functools.lru_cache() -def _get_musl_version(executable: str) -> Optional[_MuslVersion]: +@functools.lru_cache +def _get_musl_version(executable: str) -> _MuslVersion | None: """Detect currently-running musl runtime version. This is done by checking the specified executable's dynamic linking @@ -95,32 +42,34 @@ def _get_musl_version(executable: str) -> Optional[_MuslVersion]: Version 1.2.2 Dynamic Program Loader """ - with contextlib.ExitStack() as stack: - try: - f = stack.enter_context(open(executable, "rb")) - except OSError: - return None - ld = _parse_ld_musl_from_elf(f) - if not ld: + try: + with open(executable, "rb") as f: + ld = ELFFile(f).interpreter + except (OSError, TypeError, ValueError): + return None + if ld is None or "musl" not in ld: return None - proc = subprocess.run([ld], stderr=subprocess.PIPE, universal_newlines=True) + proc = subprocess.run([ld], stderr=subprocess.PIPE, text=True) return _parse_musl_version(proc.stderr) -def platform_tags(arch: str) -> Iterator[str]: +def platform_tags(archs: Sequence[str]) -> Iterator[str]: """Generate musllinux tags compatible to the current platform. - :param arch: Should be the part of platform tag after the ``linux_`` - prefix, e.g. ``x86_64``. The ``linux_`` prefix is assumed as a - prerequisite for the current platform to be musllinux-compatible. + :param archs: Sequence of compatible architectures. + The first one shall be the closest to the actual architecture and be the part of + platform tag after the ``linux_`` prefix, e.g. ``x86_64``. + The ``linux_`` prefix is assumed as a prerequisite for the current platform to + be musllinux-compatible. :returns: An iterator of compatible musllinux tags. """ sys_musl = _get_musl_version(sys.executable) if sys_musl is None: # Python not dynamically linked against musl. return - for minor in range(sys_musl.minor, -1, -1): - yield f"musllinux_{sys_musl.major}_{minor}_{arch}" + for arch in archs: + for minor in range(sys_musl.minor, -1, -1): + yield f"musllinux_{sys_musl.major}_{minor}_{arch}" if __name__ == "__main__": # pragma: no cover diff --git a/contrib/python/packaging/py3/packaging/_parser.py b/contrib/python/packaging/py3/packaging/_parser.py new file mode 100644 index 00000000000..c1238c06eab --- /dev/null +++ b/contrib/python/packaging/py3/packaging/_parser.py @@ -0,0 +1,354 @@ +"""Handwritten parser of dependency specifiers. + +The docstring for each __parse_* function contains EBNF-inspired grammar representing +the implementation. +""" + +from __future__ import annotations + +import ast +from typing import NamedTuple, Sequence, Tuple, Union + +from ._tokenizer import DEFAULT_RULES, Tokenizer + + +class Node: + def __init__(self, value: str) -> None: + self.value = value + + def __str__(self) -> str: + return self.value + + def __repr__(self) -> str: + return f"<{self.__class__.__name__}('{self}')>" + + def serialize(self) -> str: + raise NotImplementedError + + +class Variable(Node): + def serialize(self) -> str: + return str(self) + + +class Value(Node): + def serialize(self) -> str: + return f'"{self}"' + + +class Op(Node): + def serialize(self) -> str: + return str(self) + + +MarkerVar = Union[Variable, Value] +MarkerItem = Tuple[MarkerVar, Op, MarkerVar] +MarkerAtom = Union[MarkerItem, Sequence["MarkerAtom"]] +MarkerList = Sequence[Union["MarkerList", MarkerAtom, str]] + + +class ParsedRequirement(NamedTuple): + name: str + url: str + extras: list[str] + specifier: str + marker: MarkerList | None + + +# -------------------------------------------------------------------------------------- +# Recursive descent parser for dependency specifier +# -------------------------------------------------------------------------------------- +def parse_requirement(source: str) -> ParsedRequirement: + return _parse_requirement(Tokenizer(source, rules=DEFAULT_RULES)) + + +def _parse_requirement(tokenizer: Tokenizer) -> ParsedRequirement: + """ + requirement = WS? IDENTIFIER WS? extras WS? requirement_details + """ + tokenizer.consume("WS") + + name_token = tokenizer.expect( + "IDENTIFIER", expected="package name at the start of dependency specifier" + ) + name = name_token.text + tokenizer.consume("WS") + + extras = _parse_extras(tokenizer) + tokenizer.consume("WS") + + url, specifier, marker = _parse_requirement_details(tokenizer) + tokenizer.expect("END", expected="end of dependency specifier") + + return ParsedRequirement(name, url, extras, specifier, marker) + + +def _parse_requirement_details( + tokenizer: Tokenizer, +) -> tuple[str, str, MarkerList | None]: + """ + requirement_details = AT URL (WS requirement_marker?)? + | specifier WS? (requirement_marker)? + """ + + specifier = "" + url = "" + marker = None + + if tokenizer.check("AT"): + tokenizer.read() + tokenizer.consume("WS") + + url_start = tokenizer.position + url = tokenizer.expect("URL", expected="URL after @").text + if tokenizer.check("END", peek=True): + return (url, specifier, marker) + + tokenizer.expect("WS", expected="whitespace after URL") + + # The input might end after whitespace. + if tokenizer.check("END", peek=True): + return (url, specifier, marker) + + marker = _parse_requirement_marker( + tokenizer, span_start=url_start, after="URL and whitespace" + ) + else: + specifier_start = tokenizer.position + specifier = _parse_specifier(tokenizer) + tokenizer.consume("WS") + + if tokenizer.check("END", peek=True): + return (url, specifier, marker) + + marker = _parse_requirement_marker( + tokenizer, + span_start=specifier_start, + after=( + "version specifier" + if specifier + else "name and no valid version specifier" + ), + ) + + return (url, specifier, marker) + + +def _parse_requirement_marker( + tokenizer: Tokenizer, *, span_start: int, after: str +) -> MarkerList: + """ + requirement_marker = SEMICOLON marker WS? + """ + + if not tokenizer.check("SEMICOLON"): + tokenizer.raise_syntax_error( + f"Expected end or semicolon (after {after})", + span_start=span_start, + ) + tokenizer.read() + + marker = _parse_marker(tokenizer) + tokenizer.consume("WS") + + return marker + + +def _parse_extras(tokenizer: Tokenizer) -> list[str]: + """ + extras = (LEFT_BRACKET wsp* extras_list? wsp* RIGHT_BRACKET)? + """ + if not tokenizer.check("LEFT_BRACKET", peek=True): + return [] + + with tokenizer.enclosing_tokens( + "LEFT_BRACKET", + "RIGHT_BRACKET", + around="extras", + ): + tokenizer.consume("WS") + extras = _parse_extras_list(tokenizer) + tokenizer.consume("WS") + + return extras + + +def _parse_extras_list(tokenizer: Tokenizer) -> list[str]: + """ + extras_list = identifier (wsp* ',' wsp* identifier)* + """ + extras: list[str] = [] + + if not tokenizer.check("IDENTIFIER"): + return extras + + extras.append(tokenizer.read().text) + + while True: + tokenizer.consume("WS") + if tokenizer.check("IDENTIFIER", peek=True): + tokenizer.raise_syntax_error("Expected comma between extra names") + elif not tokenizer.check("COMMA"): + break + + tokenizer.read() + tokenizer.consume("WS") + + extra_token = tokenizer.expect("IDENTIFIER", expected="extra name after comma") + extras.append(extra_token.text) + + return extras + + +def _parse_specifier(tokenizer: Tokenizer) -> str: + """ + specifier = LEFT_PARENTHESIS WS? version_many WS? RIGHT_PARENTHESIS + | WS? version_many WS? + """ + with tokenizer.enclosing_tokens( + "LEFT_PARENTHESIS", + "RIGHT_PARENTHESIS", + around="version specifier", + ): + tokenizer.consume("WS") + parsed_specifiers = _parse_version_many(tokenizer) + tokenizer.consume("WS") + + return parsed_specifiers + + +def _parse_version_many(tokenizer: Tokenizer) -> str: + """ + version_many = (SPECIFIER (WS? COMMA WS? SPECIFIER)*)? + """ + parsed_specifiers = "" + while tokenizer.check("SPECIFIER"): + span_start = tokenizer.position + parsed_specifiers += tokenizer.read().text + if tokenizer.check("VERSION_PREFIX_TRAIL", peek=True): + tokenizer.raise_syntax_error( + ".* suffix can only be used with `==` or `!=` operators", + span_start=span_start, + span_end=tokenizer.position + 1, + ) + if tokenizer.check("VERSION_LOCAL_LABEL_TRAIL", peek=True): + tokenizer.raise_syntax_error( + "Local version label can only be used with `==` or `!=` operators", + span_start=span_start, + span_end=tokenizer.position, + ) + tokenizer.consume("WS") + if not tokenizer.check("COMMA"): + break + parsed_specifiers += tokenizer.read().text + tokenizer.consume("WS") + + return parsed_specifiers + + +# -------------------------------------------------------------------------------------- +# Recursive descent parser for marker expression +# -------------------------------------------------------------------------------------- +def parse_marker(source: str) -> MarkerList: + return _parse_full_marker(Tokenizer(source, rules=DEFAULT_RULES)) + + +def _parse_full_marker(tokenizer: Tokenizer) -> MarkerList: + retval = _parse_marker(tokenizer) + tokenizer.expect("END", expected="end of marker expression") + return retval + + +def _parse_marker(tokenizer: Tokenizer) -> MarkerList: + """ + marker = marker_atom (BOOLOP marker_atom)+ + """ + expression = [_parse_marker_atom(tokenizer)] + while tokenizer.check("BOOLOP"): + token = tokenizer.read() + expr_right = _parse_marker_atom(tokenizer) + expression.extend((token.text, expr_right)) + return expression + + +def _parse_marker_atom(tokenizer: Tokenizer) -> MarkerAtom: + """ + marker_atom = WS? LEFT_PARENTHESIS WS? marker WS? RIGHT_PARENTHESIS WS? + | WS? marker_item WS? + """ + + tokenizer.consume("WS") + if tokenizer.check("LEFT_PARENTHESIS", peek=True): + with tokenizer.enclosing_tokens( + "LEFT_PARENTHESIS", + "RIGHT_PARENTHESIS", + around="marker expression", + ): + tokenizer.consume("WS") + marker: MarkerAtom = _parse_marker(tokenizer) + tokenizer.consume("WS") + else: + marker = _parse_marker_item(tokenizer) + tokenizer.consume("WS") + return marker + + +def _parse_marker_item(tokenizer: Tokenizer) -> MarkerItem: + """ + marker_item = WS? marker_var WS? marker_op WS? marker_var WS? + """ + tokenizer.consume("WS") + marker_var_left = _parse_marker_var(tokenizer) + tokenizer.consume("WS") + marker_op = _parse_marker_op(tokenizer) + tokenizer.consume("WS") + marker_var_right = _parse_marker_var(tokenizer) + tokenizer.consume("WS") + return (marker_var_left, marker_op, marker_var_right) + + +def _parse_marker_var(tokenizer: Tokenizer) -> MarkerVar: + """ + marker_var = VARIABLE | QUOTED_STRING + """ + if tokenizer.check("VARIABLE"): + return process_env_var(tokenizer.read().text.replace(".", "_")) + elif tokenizer.check("QUOTED_STRING"): + return process_python_str(tokenizer.read().text) + else: + tokenizer.raise_syntax_error( + message="Expected a marker variable or quoted string" + ) + + +def process_env_var(env_var: str) -> Variable: + if env_var in ("platform_python_implementation", "python_implementation"): + return Variable("platform_python_implementation") + else: + return Variable(env_var) + + +def process_python_str(python_str: str) -> Value: + value = ast.literal_eval(python_str) + return Value(str(value)) + + +def _parse_marker_op(tokenizer: Tokenizer) -> Op: + """ + marker_op = IN | NOT IN | OP + """ + if tokenizer.check("IN"): + tokenizer.read() + return Op("in") + elif tokenizer.check("NOT"): + tokenizer.read() + tokenizer.expect("WS", expected="whitespace after 'not'") + tokenizer.expect("IN", expected="'in' after 'not'") + return Op("not in") + elif tokenizer.check("OP"): + return Op(tokenizer.read().text) + else: + return tokenizer.raise_syntax_error( + "Expected marker operator, one of " + "<=, <, !=, ==, >=, >, ~=, ===, in, not in" + ) diff --git a/contrib/python/packaging/py3/packaging/_tokenizer.py b/contrib/python/packaging/py3/packaging/_tokenizer.py new file mode 100644 index 00000000000..89d041605c0 --- /dev/null +++ b/contrib/python/packaging/py3/packaging/_tokenizer.py @@ -0,0 +1,194 @@ +from __future__ import annotations + +import contextlib +import re +from dataclasses import dataclass +from typing import Iterator, NoReturn + +from .specifiers import Specifier + + +@dataclass +class Token: + name: str + text: str + position: int + + +class ParserSyntaxError(Exception): + """The provided source text could not be parsed correctly.""" + + def __init__( + self, + message: str, + *, + source: str, + span: tuple[int, int], + ) -> None: + self.span = span + self.message = message + self.source = source + + super().__init__() + + def __str__(self) -> str: + marker = " " * self.span[0] + "~" * (self.span[1] - self.span[0]) + "^" + return "\n ".join([self.message, self.source, marker]) + + +DEFAULT_RULES: dict[str, str | re.Pattern[str]] = { + "LEFT_PARENTHESIS": r"\(", + "RIGHT_PARENTHESIS": r"\)", + "LEFT_BRACKET": r"\[", + "RIGHT_BRACKET": r"\]", + "SEMICOLON": r";", + "COMMA": r",", + "QUOTED_STRING": re.compile( + r""" + ( + ('[^']*') + | + ("[^"]*") + ) + """, + re.VERBOSE, + ), + "OP": r"(===|==|~=|!=|<=|>=|<|>)", + "BOOLOP": r"\b(or|and)\b", + "IN": r"\bin\b", + "NOT": r"\bnot\b", + "VARIABLE": re.compile( + r""" + \b( + python_version + |python_full_version + |os[._]name + |sys[._]platform + |platform_(release|system) + |platform[._](version|machine|python_implementation) + |python_implementation + |implementation_(name|version) + |extra + )\b + """, + re.VERBOSE, + ), + "SPECIFIER": re.compile( + Specifier._operator_regex_str + Specifier._version_regex_str, + re.VERBOSE | re.IGNORECASE, + ), + "AT": r"\@", + "URL": r"[^ \t]+", + "IDENTIFIER": r"\b[a-zA-Z0-9][a-zA-Z0-9._-]*\b", + "VERSION_PREFIX_TRAIL": r"\.\*", + "VERSION_LOCAL_LABEL_TRAIL": r"\+[a-z0-9]+(?:[-_\.][a-z0-9]+)*", + "WS": r"[ \t]+", + "END": r"$", +} + + +class Tokenizer: + """Context-sensitive token parsing. + + Provides methods to examine the input stream to check whether the next token + matches. + """ + + def __init__( + self, + source: str, + *, + rules: dict[str, str | re.Pattern[str]], + ) -> None: + self.source = source + self.rules: dict[str, re.Pattern[str]] = { + name: re.compile(pattern) for name, pattern in rules.items() + } + self.next_token: Token | None = None + self.position = 0 + + def consume(self, name: str) -> None: + """Move beyond provided token name, if at current position.""" + if self.check(name): + self.read() + + def check(self, name: str, *, peek: bool = False) -> bool: + """Check whether the next token has the provided name. + + By default, if the check succeeds, the token *must* be read before + another check. If `peek` is set to `True`, the token is not loaded and + would need to be checked again. + """ + assert ( + self.next_token is None + ), f"Cannot check for {name!r}, already have {self.next_token!r}" + assert name in self.rules, f"Unknown token name: {name!r}" + + expression = self.rules[name] + + match = expression.match(self.source, self.position) + if match is None: + return False + if not peek: + self.next_token = Token(name, match[0], self.position) + return True + + def expect(self, name: str, *, expected: str) -> Token: + """Expect a certain token name next, failing with a syntax error otherwise. + + The token is *not* read. + """ + if not self.check(name): + raise self.raise_syntax_error(f"Expected {expected}") + return self.read() + + def read(self) -> Token: + """Consume the next token and return it.""" + token = self.next_token + assert token is not None + + self.position += len(token.text) + self.next_token = None + + return token + + def raise_syntax_error( + self, + message: str, + *, + span_start: int | None = None, + span_end: int | None = None, + ) -> NoReturn: + """Raise ParserSyntaxError at the given position.""" + span = ( + self.position if span_start is None else span_start, + self.position if span_end is None else span_end, + ) + raise ParserSyntaxError( + message, + source=self.source, + span=span, + ) + + @contextlib.contextmanager + def enclosing_tokens( + self, open_token: str, close_token: str, *, around: str + ) -> Iterator[None]: + if self.check(open_token): + open_position = self.position + self.read() + else: + open_position = None + + yield + + if open_position is None: + return + + if not self.check(close_token): + self.raise_syntax_error( + f"Expected matching {close_token} for {open_token}, after {around}", + span_start=open_position, + ) + + self.read() diff --git a/contrib/python/packaging/py3/packaging/licenses/__init__.py b/contrib/python/packaging/py3/packaging/licenses/__init__.py new file mode 100644 index 00000000000..569156d6ca4 --- /dev/null +++ b/contrib/python/packaging/py3/packaging/licenses/__init__.py @@ -0,0 +1,145 @@ +####################################################################################### +# +# Adapted from: +# https://github.com/pypa/hatch/blob/5352e44/backend/src/hatchling/licenses/parse.py +# +# MIT License +# +# Copyright (c) 2017-present Ofek Lev <oss@ofek.dev> +# +# Permission is hereby granted, free of charge, to any person obtaining a copy of this +# software and associated documentation files (the "Software"), to deal in the Software +# without restriction, including without limitation the rights to use, copy, modify, +# merge, publish, distribute, sublicense, and/or sell copies of the Software, and to +# permit persons to whom the Software is furnished to do so, subject to the following +# conditions: +# +# The above copyright notice and this permission notice shall be included in all copies +# or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +# INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +# PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF +# CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE +# OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +# +# +# With additional allowance of arbitrary `LicenseRef-` identifiers, not just +# `LicenseRef-Public-Domain` and `LicenseRef-Proprietary`. +# +####################################################################################### +from __future__ import annotations + +import re +from typing import NewType, cast + +from packaging.licenses._spdx import EXCEPTIONS, LICENSES + +__all__ = [ + "NormalizedLicenseExpression", + "InvalidLicenseExpression", + "canonicalize_license_expression", +] + +license_ref_allowed = re.compile("^[A-Za-z0-9.-]*$") + +NormalizedLicenseExpression = NewType("NormalizedLicenseExpression", str) + + +class InvalidLicenseExpression(ValueError): + """Raised when a license-expression string is invalid + + >>> canonicalize_license_expression("invalid") + Traceback (most recent call last): + ... + packaging.licenses.InvalidLicenseExpression: Invalid license expression: 'invalid' + """ + + +def canonicalize_license_expression( + raw_license_expression: str, +) -> NormalizedLicenseExpression: + if not raw_license_expression: + message = f"Invalid license expression: {raw_license_expression!r}" + raise InvalidLicenseExpression(message) + + # Pad any parentheses so tokenization can be achieved by merely splitting on + # whitespace. + license_expression = raw_license_expression.replace("(", " ( ").replace(")", " ) ") + licenseref_prefix = "LicenseRef-" + license_refs = { + ref.lower(): "LicenseRef-" + ref[len(licenseref_prefix) :] + for ref in license_expression.split() + if ref.lower().startswith(licenseref_prefix.lower()) + } + + # Normalize to lower case so we can look up licenses/exceptions + # and so boolean operators are Python-compatible. + license_expression = license_expression.lower() + + tokens = license_expression.split() + + # Rather than implementing boolean logic, we create an expression that Python can + # parse. Everything that is not involved with the grammar itself is treated as + # `False` and the expression should evaluate as such. + python_tokens = [] + for token in tokens: + if token not in {"or", "and", "with", "(", ")"}: + python_tokens.append("False") + elif token == "with": + python_tokens.append("or") + elif token == "(" and python_tokens and python_tokens[-1] not in {"or", "and"}: + message = f"Invalid license expression: {raw_license_expression!r}" + raise InvalidLicenseExpression(message) + else: + python_tokens.append(token) + + python_expression = " ".join(python_tokens) + try: + invalid = eval(python_expression, globals(), locals()) + except Exception: + invalid = True + + if invalid is not False: + message = f"Invalid license expression: {raw_license_expression!r}" + raise InvalidLicenseExpression(message) from None + + # Take a final pass to check for unknown licenses/exceptions. + normalized_tokens = [] + for token in tokens: + if token in {"or", "and", "with", "(", ")"}: + normalized_tokens.append(token.upper()) + continue + + if normalized_tokens and normalized_tokens[-1] == "WITH": + if token not in EXCEPTIONS: + message = f"Unknown license exception: {token!r}" + raise InvalidLicenseExpression(message) + + normalized_tokens.append(EXCEPTIONS[token]["id"]) + else: + if token.endswith("+"): + final_token = token[:-1] + suffix = "+" + else: + final_token = token + suffix = "" + + if final_token.startswith("licenseref-"): + if not license_ref_allowed.match(final_token): + message = f"Invalid licenseref: {final_token!r}" + raise InvalidLicenseExpression(message) + normalized_tokens.append(license_refs[final_token] + suffix) + else: + if final_token not in LICENSES: + message = f"Unknown license: {final_token!r}" + raise InvalidLicenseExpression(message) + normalized_tokens.append(LICENSES[final_token]["id"] + suffix) + + normalized_expression = " ".join(normalized_tokens) + + return cast( + NormalizedLicenseExpression, + normalized_expression.replace("( ", "(").replace(" )", ")"), + ) diff --git a/contrib/python/packaging/py3/packaging/licenses/_spdx.py b/contrib/python/packaging/py3/packaging/licenses/_spdx.py new file mode 100644 index 00000000000..eac22276a34 --- /dev/null +++ b/contrib/python/packaging/py3/packaging/licenses/_spdx.py @@ -0,0 +1,759 @@ + +from __future__ import annotations + +from typing import TypedDict + +class SPDXLicense(TypedDict): + id: str + deprecated: bool + +class SPDXException(TypedDict): + id: str + deprecated: bool + + +VERSION = '3.25.0' + +LICENSES: dict[str, SPDXLicense] = { + '0bsd': {'id': '0BSD', 'deprecated': False}, + '3d-slicer-1.0': {'id': '3D-Slicer-1.0', 'deprecated': False}, + 'aal': {'id': 'AAL', 'deprecated': False}, + 'abstyles': {'id': 'Abstyles', 'deprecated': False}, + 'adacore-doc': {'id': 'AdaCore-doc', 'deprecated': False}, + 'adobe-2006': {'id': 'Adobe-2006', 'deprecated': False}, + 'adobe-display-postscript': {'id': 'Adobe-Display-PostScript', 'deprecated': False}, + 'adobe-glyph': {'id': 'Adobe-Glyph', 'deprecated': False}, + 'adobe-utopia': {'id': 'Adobe-Utopia', 'deprecated': False}, + 'adsl': {'id': 'ADSL', 'deprecated': False}, + 'afl-1.1': {'id': 'AFL-1.1', 'deprecated': False}, + 'afl-1.2': {'id': 'AFL-1.2', 'deprecated': False}, + 'afl-2.0': {'id': 'AFL-2.0', 'deprecated': False}, + 'afl-2.1': {'id': 'AFL-2.1', 'deprecated': False}, + 'afl-3.0': {'id': 'AFL-3.0', 'deprecated': False}, + 'afmparse': {'id': 'Afmparse', 'deprecated': False}, + 'agpl-1.0': {'id': 'AGPL-1.0', 'deprecated': True}, + 'agpl-1.0-only': {'id': 'AGPL-1.0-only', 'deprecated': False}, + 'agpl-1.0-or-later': {'id': 'AGPL-1.0-or-later', 'deprecated': False}, + 'agpl-3.0': {'id': 'AGPL-3.0', 'deprecated': True}, + 'agpl-3.0-only': {'id': 'AGPL-3.0-only', 'deprecated': False}, + 'agpl-3.0-or-later': {'id': 'AGPL-3.0-or-later', 'deprecated': False}, + 'aladdin': {'id': 'Aladdin', 'deprecated': False}, + 'amd-newlib': {'id': 'AMD-newlib', 'deprecated': False}, + 'amdplpa': {'id': 'AMDPLPA', 'deprecated': False}, + 'aml': {'id': 'AML', 'deprecated': False}, + 'aml-glslang': {'id': 'AML-glslang', 'deprecated': False}, + 'ampas': {'id': 'AMPAS', 'deprecated': False}, + 'antlr-pd': {'id': 'ANTLR-PD', 'deprecated': False}, + 'antlr-pd-fallback': {'id': 'ANTLR-PD-fallback', 'deprecated': False}, + 'any-osi': {'id': 'any-OSI', 'deprecated': False}, + 'apache-1.0': {'id': 'Apache-1.0', 'deprecated': False}, + 'apache-1.1': {'id': 'Apache-1.1', 'deprecated': False}, + 'apache-2.0': {'id': 'Apache-2.0', 'deprecated': False}, + 'apafml': {'id': 'APAFML', 'deprecated': False}, + 'apl-1.0': {'id': 'APL-1.0', 'deprecated': False}, + 'app-s2p': {'id': 'App-s2p', 'deprecated': False}, + 'apsl-1.0': {'id': 'APSL-1.0', 'deprecated': False}, + 'apsl-1.1': {'id': 'APSL-1.1', 'deprecated': False}, + 'apsl-1.2': {'id': 'APSL-1.2', 'deprecated': False}, + 'apsl-2.0': {'id': 'APSL-2.0', 'deprecated': False}, + 'arphic-1999': {'id': 'Arphic-1999', 'deprecated': False}, + 'artistic-1.0': {'id': 'Artistic-1.0', 'deprecated': False}, + 'artistic-1.0-cl8': {'id': 'Artistic-1.0-cl8', 'deprecated': False}, + 'artistic-1.0-perl': {'id': 'Artistic-1.0-Perl', 'deprecated': False}, + 'artistic-2.0': {'id': 'Artistic-2.0', 'deprecated': False}, + 'aswf-digital-assets-1.0': {'id': 'ASWF-Digital-Assets-1.0', 'deprecated': False}, + 'aswf-digital-assets-1.1': {'id': 'ASWF-Digital-Assets-1.1', 'deprecated': False}, + 'baekmuk': {'id': 'Baekmuk', 'deprecated': False}, + 'bahyph': {'id': 'Bahyph', 'deprecated': False}, + 'barr': {'id': 'Barr', 'deprecated': False}, + 'bcrypt-solar-designer': {'id': 'bcrypt-Solar-Designer', 'deprecated': False}, + 'beerware': {'id': 'Beerware', 'deprecated': False}, + 'bitstream-charter': {'id': 'Bitstream-Charter', 'deprecated': False}, + 'bitstream-vera': {'id': 'Bitstream-Vera', 'deprecated': False}, + 'bittorrent-1.0': {'id': 'BitTorrent-1.0', 'deprecated': False}, + 'bittorrent-1.1': {'id': 'BitTorrent-1.1', 'deprecated': False}, + 'blessing': {'id': 'blessing', 'deprecated': False}, + 'blueoak-1.0.0': {'id': 'BlueOak-1.0.0', 'deprecated': False}, + 'boehm-gc': {'id': 'Boehm-GC', 'deprecated': False}, + 'borceux': {'id': 'Borceux', 'deprecated': False}, + 'brian-gladman-2-clause': {'id': 'Brian-Gladman-2-Clause', 'deprecated': False}, + 'brian-gladman-3-clause': {'id': 'Brian-Gladman-3-Clause', 'deprecated': False}, + 'bsd-1-clause': {'id': 'BSD-1-Clause', 'deprecated': False}, + 'bsd-2-clause': {'id': 'BSD-2-Clause', 'deprecated': False}, + 'bsd-2-clause-darwin': {'id': 'BSD-2-Clause-Darwin', 'deprecated': False}, + 'bsd-2-clause-first-lines': {'id': 'BSD-2-Clause-first-lines', 'deprecated': False}, + 'bsd-2-clause-freebsd': {'id': 'BSD-2-Clause-FreeBSD', 'deprecated': True}, + 'bsd-2-clause-netbsd': {'id': 'BSD-2-Clause-NetBSD', 'deprecated': True}, + 'bsd-2-clause-patent': {'id': 'BSD-2-Clause-Patent', 'deprecated': False}, + 'bsd-2-clause-views': {'id': 'BSD-2-Clause-Views', 'deprecated': False}, + 'bsd-3-clause': {'id': 'BSD-3-Clause', 'deprecated': False}, + 'bsd-3-clause-acpica': {'id': 'BSD-3-Clause-acpica', 'deprecated': False}, + 'bsd-3-clause-attribution': {'id': 'BSD-3-Clause-Attribution', 'deprecated': False}, + 'bsd-3-clause-clear': {'id': 'BSD-3-Clause-Clear', 'deprecated': False}, + 'bsd-3-clause-flex': {'id': 'BSD-3-Clause-flex', 'deprecated': False}, + 'bsd-3-clause-hp': {'id': 'BSD-3-Clause-HP', 'deprecated': False}, + 'bsd-3-clause-lbnl': {'id': 'BSD-3-Clause-LBNL', 'deprecated': False}, + 'bsd-3-clause-modification': {'id': 'BSD-3-Clause-Modification', 'deprecated': False}, + 'bsd-3-clause-no-military-license': {'id': 'BSD-3-Clause-No-Military-License', 'deprecated': False}, + 'bsd-3-clause-no-nuclear-license': {'id': 'BSD-3-Clause-No-Nuclear-License', 'deprecated': False}, + 'bsd-3-clause-no-nuclear-license-2014': {'id': 'BSD-3-Clause-No-Nuclear-License-2014', 'deprecated': False}, + 'bsd-3-clause-no-nuclear-warranty': {'id': 'BSD-3-Clause-No-Nuclear-Warranty', 'deprecated': False}, + 'bsd-3-clause-open-mpi': {'id': 'BSD-3-Clause-Open-MPI', 'deprecated': False}, + 'bsd-3-clause-sun': {'id': 'BSD-3-Clause-Sun', 'deprecated': False}, + 'bsd-4-clause': {'id': 'BSD-4-Clause', 'deprecated': False}, + 'bsd-4-clause-shortened': {'id': 'BSD-4-Clause-Shortened', 'deprecated': False}, + 'bsd-4-clause-uc': {'id': 'BSD-4-Clause-UC', 'deprecated': False}, + 'bsd-4.3reno': {'id': 'BSD-4.3RENO', 'deprecated': False}, + 'bsd-4.3tahoe': {'id': 'BSD-4.3TAHOE', 'deprecated': False}, + 'bsd-advertising-acknowledgement': {'id': 'BSD-Advertising-Acknowledgement', 'deprecated': False}, + 'bsd-attribution-hpnd-disclaimer': {'id': 'BSD-Attribution-HPND-disclaimer', 'deprecated': False}, + 'bsd-inferno-nettverk': {'id': 'BSD-Inferno-Nettverk', 'deprecated': False}, + 'bsd-protection': {'id': 'BSD-Protection', 'deprecated': False}, + 'bsd-source-beginning-file': {'id': 'BSD-Source-beginning-file', 'deprecated': False}, + 'bsd-source-code': {'id': 'BSD-Source-Code', 'deprecated': False}, + 'bsd-systemics': {'id': 'BSD-Systemics', 'deprecated': False}, + 'bsd-systemics-w3works': {'id': 'BSD-Systemics-W3Works', 'deprecated': False}, + 'bsl-1.0': {'id': 'BSL-1.0', 'deprecated': False}, + 'busl-1.1': {'id': 'BUSL-1.1', 'deprecated': False}, + 'bzip2-1.0.5': {'id': 'bzip2-1.0.5', 'deprecated': True}, + 'bzip2-1.0.6': {'id': 'bzip2-1.0.6', 'deprecated': False}, + 'c-uda-1.0': {'id': 'C-UDA-1.0', 'deprecated': False}, + 'cal-1.0': {'id': 'CAL-1.0', 'deprecated': False}, + 'cal-1.0-combined-work-exception': {'id': 'CAL-1.0-Combined-Work-Exception', 'deprecated': False}, + 'caldera': {'id': 'Caldera', 'deprecated': False}, + 'caldera-no-preamble': {'id': 'Caldera-no-preamble', 'deprecated': False}, + 'catharon': {'id': 'Catharon', 'deprecated': False}, + 'catosl-1.1': {'id': 'CATOSL-1.1', 'deprecated': False}, + 'cc-by-1.0': {'id': 'CC-BY-1.0', 'deprecated': False}, + 'cc-by-2.0': {'id': 'CC-BY-2.0', 'deprecated': False}, + 'cc-by-2.5': {'id': 'CC-BY-2.5', 'deprecated': False}, + 'cc-by-2.5-au': {'id': 'CC-BY-2.5-AU', 'deprecated': False}, + 'cc-by-3.0': {'id': 'CC-BY-3.0', 'deprecated': False}, + 'cc-by-3.0-at': {'id': 'CC-BY-3.0-AT', 'deprecated': False}, + 'cc-by-3.0-au': {'id': 'CC-BY-3.0-AU', 'deprecated': False}, + 'cc-by-3.0-de': {'id': 'CC-BY-3.0-DE', 'deprecated': False}, + 'cc-by-3.0-igo': {'id': 'CC-BY-3.0-IGO', 'deprecated': False}, + 'cc-by-3.0-nl': {'id': 'CC-BY-3.0-NL', 'deprecated': False}, + 'cc-by-3.0-us': {'id': 'CC-BY-3.0-US', 'deprecated': False}, + 'cc-by-4.0': {'id': 'CC-BY-4.0', 'deprecated': False}, + 'cc-by-nc-1.0': {'id': 'CC-BY-NC-1.0', 'deprecated': False}, + 'cc-by-nc-2.0': {'id': 'CC-BY-NC-2.0', 'deprecated': False}, + 'cc-by-nc-2.5': {'id': 'CC-BY-NC-2.5', 'deprecated': False}, + 'cc-by-nc-3.0': {'id': 'CC-BY-NC-3.0', 'deprecated': False}, + 'cc-by-nc-3.0-de': {'id': 'CC-BY-NC-3.0-DE', 'deprecated': False}, + 'cc-by-nc-4.0': {'id': 'CC-BY-NC-4.0', 'deprecated': False}, + 'cc-by-nc-nd-1.0': {'id': 'CC-BY-NC-ND-1.0', 'deprecated': False}, + 'cc-by-nc-nd-2.0': {'id': 'CC-BY-NC-ND-2.0', 'deprecated': False}, + 'cc-by-nc-nd-2.5': {'id': 'CC-BY-NC-ND-2.5', 'deprecated': False}, + 'cc-by-nc-nd-3.0': {'id': 'CC-BY-NC-ND-3.0', 'deprecated': False}, + 'cc-by-nc-nd-3.0-de': {'id': 'CC-BY-NC-ND-3.0-DE', 'deprecated': False}, + 'cc-by-nc-nd-3.0-igo': {'id': 'CC-BY-NC-ND-3.0-IGO', 'deprecated': False}, + 'cc-by-nc-nd-4.0': {'id': 'CC-BY-NC-ND-4.0', 'deprecated': False}, + 'cc-by-nc-sa-1.0': {'id': 'CC-BY-NC-SA-1.0', 'deprecated': False}, + 'cc-by-nc-sa-2.0': {'id': 'CC-BY-NC-SA-2.0', 'deprecated': False}, + 'cc-by-nc-sa-2.0-de': {'id': 'CC-BY-NC-SA-2.0-DE', 'deprecated': False}, + 'cc-by-nc-sa-2.0-fr': {'id': 'CC-BY-NC-SA-2.0-FR', 'deprecated': False}, + 'cc-by-nc-sa-2.0-uk': {'id': 'CC-BY-NC-SA-2.0-UK', 'deprecated': False}, + 'cc-by-nc-sa-2.5': {'id': 'CC-BY-NC-SA-2.5', 'deprecated': False}, + 'cc-by-nc-sa-3.0': {'id': 'CC-BY-NC-SA-3.0', 'deprecated': False}, + 'cc-by-nc-sa-3.0-de': {'id': 'CC-BY-NC-SA-3.0-DE', 'deprecated': False}, + 'cc-by-nc-sa-3.0-igo': {'id': 'CC-BY-NC-SA-3.0-IGO', 'deprecated': False}, + 'cc-by-nc-sa-4.0': {'id': 'CC-BY-NC-SA-4.0', 'deprecated': False}, + 'cc-by-nd-1.0': {'id': 'CC-BY-ND-1.0', 'deprecated': False}, + 'cc-by-nd-2.0': {'id': 'CC-BY-ND-2.0', 'deprecated': False}, + 'cc-by-nd-2.5': {'id': 'CC-BY-ND-2.5', 'deprecated': False}, + 'cc-by-nd-3.0': {'id': 'CC-BY-ND-3.0', 'deprecated': False}, + 'cc-by-nd-3.0-de': {'id': 'CC-BY-ND-3.0-DE', 'deprecated': False}, + 'cc-by-nd-4.0': {'id': 'CC-BY-ND-4.0', 'deprecated': False}, + 'cc-by-sa-1.0': {'id': 'CC-BY-SA-1.0', 'deprecated': False}, + 'cc-by-sa-2.0': {'id': 'CC-BY-SA-2.0', 'deprecated': False}, + 'cc-by-sa-2.0-uk': {'id': 'CC-BY-SA-2.0-UK', 'deprecated': False}, + 'cc-by-sa-2.1-jp': {'id': 'CC-BY-SA-2.1-JP', 'deprecated': False}, + 'cc-by-sa-2.5': {'id': 'CC-BY-SA-2.5', 'deprecated': False}, + 'cc-by-sa-3.0': {'id': 'CC-BY-SA-3.0', 'deprecated': False}, + 'cc-by-sa-3.0-at': {'id': 'CC-BY-SA-3.0-AT', 'deprecated': False}, + 'cc-by-sa-3.0-de': {'id': 'CC-BY-SA-3.0-DE', 'deprecated': False}, + 'cc-by-sa-3.0-igo': {'id': 'CC-BY-SA-3.0-IGO', 'deprecated': False}, + 'cc-by-sa-4.0': {'id': 'CC-BY-SA-4.0', 'deprecated': False}, + 'cc-pddc': {'id': 'CC-PDDC', 'deprecated': False}, + 'cc0-1.0': {'id': 'CC0-1.0', 'deprecated': False}, + 'cddl-1.0': {'id': 'CDDL-1.0', 'deprecated': False}, + 'cddl-1.1': {'id': 'CDDL-1.1', 'deprecated': False}, + 'cdl-1.0': {'id': 'CDL-1.0', 'deprecated': False}, + 'cdla-permissive-1.0': {'id': 'CDLA-Permissive-1.0', 'deprecated': False}, + 'cdla-permissive-2.0': {'id': 'CDLA-Permissive-2.0', 'deprecated': False}, + 'cdla-sharing-1.0': {'id': 'CDLA-Sharing-1.0', 'deprecated': False}, + 'cecill-1.0': {'id': 'CECILL-1.0', 'deprecated': False}, + 'cecill-1.1': {'id': 'CECILL-1.1', 'deprecated': False}, + 'cecill-2.0': {'id': 'CECILL-2.0', 'deprecated': False}, + 'cecill-2.1': {'id': 'CECILL-2.1', 'deprecated': False}, + 'cecill-b': {'id': 'CECILL-B', 'deprecated': False}, + 'cecill-c': {'id': 'CECILL-C', 'deprecated': False}, + 'cern-ohl-1.1': {'id': 'CERN-OHL-1.1', 'deprecated': False}, + 'cern-ohl-1.2': {'id': 'CERN-OHL-1.2', 'deprecated': False}, + 'cern-ohl-p-2.0': {'id': 'CERN-OHL-P-2.0', 'deprecated': False}, + 'cern-ohl-s-2.0': {'id': 'CERN-OHL-S-2.0', 'deprecated': False}, + 'cern-ohl-w-2.0': {'id': 'CERN-OHL-W-2.0', 'deprecated': False}, + 'cfitsio': {'id': 'CFITSIO', 'deprecated': False}, + 'check-cvs': {'id': 'check-cvs', 'deprecated': False}, + 'checkmk': {'id': 'checkmk', 'deprecated': False}, + 'clartistic': {'id': 'ClArtistic', 'deprecated': False}, + 'clips': {'id': 'Clips', 'deprecated': False}, + 'cmu-mach': {'id': 'CMU-Mach', 'deprecated': False}, + 'cmu-mach-nodoc': {'id': 'CMU-Mach-nodoc', 'deprecated': False}, + 'cnri-jython': {'id': 'CNRI-Jython', 'deprecated': False}, + 'cnri-python': {'id': 'CNRI-Python', 'deprecated': False}, + 'cnri-python-gpl-compatible': {'id': 'CNRI-Python-GPL-Compatible', 'deprecated': False}, + 'coil-1.0': {'id': 'COIL-1.0', 'deprecated': False}, + 'community-spec-1.0': {'id': 'Community-Spec-1.0', 'deprecated': False}, + 'condor-1.1': {'id': 'Condor-1.1', 'deprecated': False}, + 'copyleft-next-0.3.0': {'id': 'copyleft-next-0.3.0', 'deprecated': False}, + 'copyleft-next-0.3.1': {'id': 'copyleft-next-0.3.1', 'deprecated': False}, + 'cornell-lossless-jpeg': {'id': 'Cornell-Lossless-JPEG', 'deprecated': False}, + 'cpal-1.0': {'id': 'CPAL-1.0', 'deprecated': False}, + 'cpl-1.0': {'id': 'CPL-1.0', 'deprecated': False}, + 'cpol-1.02': {'id': 'CPOL-1.02', 'deprecated': False}, + 'cronyx': {'id': 'Cronyx', 'deprecated': False}, + 'crossword': {'id': 'Crossword', 'deprecated': False}, + 'crystalstacker': {'id': 'CrystalStacker', 'deprecated': False}, + 'cua-opl-1.0': {'id': 'CUA-OPL-1.0', 'deprecated': False}, + 'cube': {'id': 'Cube', 'deprecated': False}, + 'curl': {'id': 'curl', 'deprecated': False}, + 'cve-tou': {'id': 'cve-tou', 'deprecated': False}, + 'd-fsl-1.0': {'id': 'D-FSL-1.0', 'deprecated': False}, + 'dec-3-clause': {'id': 'DEC-3-Clause', 'deprecated': False}, + 'diffmark': {'id': 'diffmark', 'deprecated': False}, + 'dl-de-by-2.0': {'id': 'DL-DE-BY-2.0', 'deprecated': False}, + 'dl-de-zero-2.0': {'id': 'DL-DE-ZERO-2.0', 'deprecated': False}, + 'doc': {'id': 'DOC', 'deprecated': False}, + 'docbook-schema': {'id': 'DocBook-Schema', 'deprecated': False}, + 'docbook-xml': {'id': 'DocBook-XML', 'deprecated': False}, + 'dotseqn': {'id': 'Dotseqn', 'deprecated': False}, + 'drl-1.0': {'id': 'DRL-1.0', 'deprecated': False}, + 'drl-1.1': {'id': 'DRL-1.1', 'deprecated': False}, + 'dsdp': {'id': 'DSDP', 'deprecated': False}, + 'dtoa': {'id': 'dtoa', 'deprecated': False}, + 'dvipdfm': {'id': 'dvipdfm', 'deprecated': False}, + 'ecl-1.0': {'id': 'ECL-1.0', 'deprecated': False}, + 'ecl-2.0': {'id': 'ECL-2.0', 'deprecated': False}, + 'ecos-2.0': {'id': 'eCos-2.0', 'deprecated': True}, + 'efl-1.0': {'id': 'EFL-1.0', 'deprecated': False}, + 'efl-2.0': {'id': 'EFL-2.0', 'deprecated': False}, + 'egenix': {'id': 'eGenix', 'deprecated': False}, + 'elastic-2.0': {'id': 'Elastic-2.0', 'deprecated': False}, + 'entessa': {'id': 'Entessa', 'deprecated': False}, + 'epics': {'id': 'EPICS', 'deprecated': False}, + 'epl-1.0': {'id': 'EPL-1.0', 'deprecated': False}, + 'epl-2.0': {'id': 'EPL-2.0', 'deprecated': False}, + 'erlpl-1.1': {'id': 'ErlPL-1.1', 'deprecated': False}, + 'etalab-2.0': {'id': 'etalab-2.0', 'deprecated': False}, + 'eudatagrid': {'id': 'EUDatagrid', 'deprecated': False}, + 'eupl-1.0': {'id': 'EUPL-1.0', 'deprecated': False}, + 'eupl-1.1': {'id': 'EUPL-1.1', 'deprecated': False}, + 'eupl-1.2': {'id': 'EUPL-1.2', 'deprecated': False}, + 'eurosym': {'id': 'Eurosym', 'deprecated': False}, + 'fair': {'id': 'Fair', 'deprecated': False}, + 'fbm': {'id': 'FBM', 'deprecated': False}, + 'fdk-aac': {'id': 'FDK-AAC', 'deprecated': False}, + 'ferguson-twofish': {'id': 'Ferguson-Twofish', 'deprecated': False}, + 'frameworx-1.0': {'id': 'Frameworx-1.0', 'deprecated': False}, + 'freebsd-doc': {'id': 'FreeBSD-DOC', 'deprecated': False}, + 'freeimage': {'id': 'FreeImage', 'deprecated': False}, + 'fsfap': {'id': 'FSFAP', 'deprecated': False}, + 'fsfap-no-warranty-disclaimer': {'id': 'FSFAP-no-warranty-disclaimer', 'deprecated': False}, + 'fsful': {'id': 'FSFUL', 'deprecated': False}, + 'fsfullr': {'id': 'FSFULLR', 'deprecated': False}, + 'fsfullrwd': {'id': 'FSFULLRWD', 'deprecated': False}, + 'ftl': {'id': 'FTL', 'deprecated': False}, + 'furuseth': {'id': 'Furuseth', 'deprecated': False}, + 'fwlw': {'id': 'fwlw', 'deprecated': False}, + 'gcr-docs': {'id': 'GCR-docs', 'deprecated': False}, + 'gd': {'id': 'GD', 'deprecated': False}, + 'gfdl-1.1': {'id': 'GFDL-1.1', 'deprecated': True}, + 'gfdl-1.1-invariants-only': {'id': 'GFDL-1.1-invariants-only', 'deprecated': False}, + 'gfdl-1.1-invariants-or-later': {'id': 'GFDL-1.1-invariants-or-later', 'deprecated': False}, + 'gfdl-1.1-no-invariants-only': {'id': 'GFDL-1.1-no-invariants-only', 'deprecated': False}, + 'gfdl-1.1-no-invariants-or-later': {'id': 'GFDL-1.1-no-invariants-or-later', 'deprecated': False}, + 'gfdl-1.1-only': {'id': 'GFDL-1.1-only', 'deprecated': False}, + 'gfdl-1.1-or-later': {'id': 'GFDL-1.1-or-later', 'deprecated': False}, + 'gfdl-1.2': {'id': 'GFDL-1.2', 'deprecated': True}, + 'gfdl-1.2-invariants-only': {'id': 'GFDL-1.2-invariants-only', 'deprecated': False}, + 'gfdl-1.2-invariants-or-later': {'id': 'GFDL-1.2-invariants-or-later', 'deprecated': False}, + 'gfdl-1.2-no-invariants-only': {'id': 'GFDL-1.2-no-invariants-only', 'deprecated': False}, + 'gfdl-1.2-no-invariants-or-later': {'id': 'GFDL-1.2-no-invariants-or-later', 'deprecated': False}, + 'gfdl-1.2-only': {'id': 'GFDL-1.2-only', 'deprecated': False}, + 'gfdl-1.2-or-later': {'id': 'GFDL-1.2-or-later', 'deprecated': False}, + 'gfdl-1.3': {'id': 'GFDL-1.3', 'deprecated': True}, + 'gfdl-1.3-invariants-only': {'id': 'GFDL-1.3-invariants-only', 'deprecated': False}, + 'gfdl-1.3-invariants-or-later': {'id': 'GFDL-1.3-invariants-or-later', 'deprecated': False}, + 'gfdl-1.3-no-invariants-only': {'id': 'GFDL-1.3-no-invariants-only', 'deprecated': False}, + 'gfdl-1.3-no-invariants-or-later': {'id': 'GFDL-1.3-no-invariants-or-later', 'deprecated': False}, + 'gfdl-1.3-only': {'id': 'GFDL-1.3-only', 'deprecated': False}, + 'gfdl-1.3-or-later': {'id': 'GFDL-1.3-or-later', 'deprecated': False}, + 'giftware': {'id': 'Giftware', 'deprecated': False}, + 'gl2ps': {'id': 'GL2PS', 'deprecated': False}, + 'glide': {'id': 'Glide', 'deprecated': False}, + 'glulxe': {'id': 'Glulxe', 'deprecated': False}, + 'glwtpl': {'id': 'GLWTPL', 'deprecated': False}, + 'gnuplot': {'id': 'gnuplot', 'deprecated': False}, + 'gpl-1.0': {'id': 'GPL-1.0', 'deprecated': True}, + 'gpl-1.0+': {'id': 'GPL-1.0+', 'deprecated': True}, + 'gpl-1.0-only': {'id': 'GPL-1.0-only', 'deprecated': False}, + 'gpl-1.0-or-later': {'id': 'GPL-1.0-or-later', 'deprecated': False}, + 'gpl-2.0': {'id': 'GPL-2.0', 'deprecated': True}, + 'gpl-2.0+': {'id': 'GPL-2.0+', 'deprecated': True}, + 'gpl-2.0-only': {'id': 'GPL-2.0-only', 'deprecated': False}, + 'gpl-2.0-or-later': {'id': 'GPL-2.0-or-later', 'deprecated': False}, + 'gpl-2.0-with-autoconf-exception': {'id': 'GPL-2.0-with-autoconf-exception', 'deprecated': True}, + 'gpl-2.0-with-bison-exception': {'id': 'GPL-2.0-with-bison-exception', 'deprecated': True}, + 'gpl-2.0-with-classpath-exception': {'id': 'GPL-2.0-with-classpath-exception', 'deprecated': True}, + 'gpl-2.0-with-font-exception': {'id': 'GPL-2.0-with-font-exception', 'deprecated': True}, + 'gpl-2.0-with-gcc-exception': {'id': 'GPL-2.0-with-GCC-exception', 'deprecated': True}, + 'gpl-3.0': {'id': 'GPL-3.0', 'deprecated': True}, + 'gpl-3.0+': {'id': 'GPL-3.0+', 'deprecated': True}, + 'gpl-3.0-only': {'id': 'GPL-3.0-only', 'deprecated': False}, + 'gpl-3.0-or-later': {'id': 'GPL-3.0-or-later', 'deprecated': False}, + 'gpl-3.0-with-autoconf-exception': {'id': 'GPL-3.0-with-autoconf-exception', 'deprecated': True}, + 'gpl-3.0-with-gcc-exception': {'id': 'GPL-3.0-with-GCC-exception', 'deprecated': True}, + 'graphics-gems': {'id': 'Graphics-Gems', 'deprecated': False}, + 'gsoap-1.3b': {'id': 'gSOAP-1.3b', 'deprecated': False}, + 'gtkbook': {'id': 'gtkbook', 'deprecated': False}, + 'gutmann': {'id': 'Gutmann', 'deprecated': False}, + 'haskellreport': {'id': 'HaskellReport', 'deprecated': False}, + 'hdparm': {'id': 'hdparm', 'deprecated': False}, + 'hidapi': {'id': 'HIDAPI', 'deprecated': False}, + 'hippocratic-2.1': {'id': 'Hippocratic-2.1', 'deprecated': False}, + 'hp-1986': {'id': 'HP-1986', 'deprecated': False}, + 'hp-1989': {'id': 'HP-1989', 'deprecated': False}, + 'hpnd': {'id': 'HPND', 'deprecated': False}, + 'hpnd-dec': {'id': 'HPND-DEC', 'deprecated': False}, + 'hpnd-doc': {'id': 'HPND-doc', 'deprecated': False}, + 'hpnd-doc-sell': {'id': 'HPND-doc-sell', 'deprecated': False}, + 'hpnd-export-us': {'id': 'HPND-export-US', 'deprecated': False}, + 'hpnd-export-us-acknowledgement': {'id': 'HPND-export-US-acknowledgement', 'deprecated': False}, + 'hpnd-export-us-modify': {'id': 'HPND-export-US-modify', 'deprecated': False}, + 'hpnd-export2-us': {'id': 'HPND-export2-US', 'deprecated': False}, + 'hpnd-fenneberg-livingston': {'id': 'HPND-Fenneberg-Livingston', 'deprecated': False}, + 'hpnd-inria-imag': {'id': 'HPND-INRIA-IMAG', 'deprecated': False}, + 'hpnd-intel': {'id': 'HPND-Intel', 'deprecated': False}, + 'hpnd-kevlin-henney': {'id': 'HPND-Kevlin-Henney', 'deprecated': False}, + 'hpnd-markus-kuhn': {'id': 'HPND-Markus-Kuhn', 'deprecated': False}, + 'hpnd-merchantability-variant': {'id': 'HPND-merchantability-variant', 'deprecated': False}, + 'hpnd-mit-disclaimer': {'id': 'HPND-MIT-disclaimer', 'deprecated': False}, + 'hpnd-netrek': {'id': 'HPND-Netrek', 'deprecated': False}, + 'hpnd-pbmplus': {'id': 'HPND-Pbmplus', 'deprecated': False}, + 'hpnd-sell-mit-disclaimer-xserver': {'id': 'HPND-sell-MIT-disclaimer-xserver', 'deprecated': False}, + 'hpnd-sell-regexpr': {'id': 'HPND-sell-regexpr', 'deprecated': False}, + 'hpnd-sell-variant': {'id': 'HPND-sell-variant', 'deprecated': False}, + 'hpnd-sell-variant-mit-disclaimer': {'id': 'HPND-sell-variant-MIT-disclaimer', 'deprecated': False}, + 'hpnd-sell-variant-mit-disclaimer-rev': {'id': 'HPND-sell-variant-MIT-disclaimer-rev', 'deprecated': False}, + 'hpnd-uc': {'id': 'HPND-UC', 'deprecated': False}, + 'hpnd-uc-export-us': {'id': 'HPND-UC-export-US', 'deprecated': False}, + 'htmltidy': {'id': 'HTMLTIDY', 'deprecated': False}, + 'ibm-pibs': {'id': 'IBM-pibs', 'deprecated': False}, + 'icu': {'id': 'ICU', 'deprecated': False}, + 'iec-code-components-eula': {'id': 'IEC-Code-Components-EULA', 'deprecated': False}, + 'ijg': {'id': 'IJG', 'deprecated': False}, + 'ijg-short': {'id': 'IJG-short', 'deprecated': False}, + 'imagemagick': {'id': 'ImageMagick', 'deprecated': False}, + 'imatix': {'id': 'iMatix', 'deprecated': False}, + 'imlib2': {'id': 'Imlib2', 'deprecated': False}, + 'info-zip': {'id': 'Info-ZIP', 'deprecated': False}, + 'inner-net-2.0': {'id': 'Inner-Net-2.0', 'deprecated': False}, + 'intel': {'id': 'Intel', 'deprecated': False}, + 'intel-acpi': {'id': 'Intel-ACPI', 'deprecated': False}, + 'interbase-1.0': {'id': 'Interbase-1.0', 'deprecated': False}, + 'ipa': {'id': 'IPA', 'deprecated': False}, + 'ipl-1.0': {'id': 'IPL-1.0', 'deprecated': False}, + 'isc': {'id': 'ISC', 'deprecated': False}, + 'isc-veillard': {'id': 'ISC-Veillard', 'deprecated': False}, + 'jam': {'id': 'Jam', 'deprecated': False}, + 'jasper-2.0': {'id': 'JasPer-2.0', 'deprecated': False}, + 'jpl-image': {'id': 'JPL-image', 'deprecated': False}, + 'jpnic': {'id': 'JPNIC', 'deprecated': False}, + 'json': {'id': 'JSON', 'deprecated': False}, + 'kastrup': {'id': 'Kastrup', 'deprecated': False}, + 'kazlib': {'id': 'Kazlib', 'deprecated': False}, + 'knuth-ctan': {'id': 'Knuth-CTAN', 'deprecated': False}, + 'lal-1.2': {'id': 'LAL-1.2', 'deprecated': False}, + 'lal-1.3': {'id': 'LAL-1.3', 'deprecated': False}, + 'latex2e': {'id': 'Latex2e', 'deprecated': False}, + 'latex2e-translated-notice': {'id': 'Latex2e-translated-notice', 'deprecated': False}, + 'leptonica': {'id': 'Leptonica', 'deprecated': False}, + 'lgpl-2.0': {'id': 'LGPL-2.0', 'deprecated': True}, + 'lgpl-2.0+': {'id': 'LGPL-2.0+', 'deprecated': True}, + 'lgpl-2.0-only': {'id': 'LGPL-2.0-only', 'deprecated': False}, + 'lgpl-2.0-or-later': {'id': 'LGPL-2.0-or-later', 'deprecated': False}, + 'lgpl-2.1': {'id': 'LGPL-2.1', 'deprecated': True}, + 'lgpl-2.1+': {'id': 'LGPL-2.1+', 'deprecated': True}, + 'lgpl-2.1-only': {'id': 'LGPL-2.1-only', 'deprecated': False}, + 'lgpl-2.1-or-later': {'id': 'LGPL-2.1-or-later', 'deprecated': False}, + 'lgpl-3.0': {'id': 'LGPL-3.0', 'deprecated': True}, + 'lgpl-3.0+': {'id': 'LGPL-3.0+', 'deprecated': True}, + 'lgpl-3.0-only': {'id': 'LGPL-3.0-only', 'deprecated': False}, + 'lgpl-3.0-or-later': {'id': 'LGPL-3.0-or-later', 'deprecated': False}, + 'lgpllr': {'id': 'LGPLLR', 'deprecated': False}, + 'libpng': {'id': 'Libpng', 'deprecated': False}, + 'libpng-2.0': {'id': 'libpng-2.0', 'deprecated': False}, + 'libselinux-1.0': {'id': 'libselinux-1.0', 'deprecated': False}, + 'libtiff': {'id': 'libtiff', 'deprecated': False}, + 'libutil-david-nugent': {'id': 'libutil-David-Nugent', 'deprecated': False}, + 'liliq-p-1.1': {'id': 'LiLiQ-P-1.1', 'deprecated': False}, + 'liliq-r-1.1': {'id': 'LiLiQ-R-1.1', 'deprecated': False}, + 'liliq-rplus-1.1': {'id': 'LiLiQ-Rplus-1.1', 'deprecated': False}, + 'linux-man-pages-1-para': {'id': 'Linux-man-pages-1-para', 'deprecated': False}, + 'linux-man-pages-copyleft': {'id': 'Linux-man-pages-copyleft', 'deprecated': False}, + 'linux-man-pages-copyleft-2-para': {'id': 'Linux-man-pages-copyleft-2-para', 'deprecated': False}, + 'linux-man-pages-copyleft-var': {'id': 'Linux-man-pages-copyleft-var', 'deprecated': False}, + 'linux-openib': {'id': 'Linux-OpenIB', 'deprecated': False}, + 'loop': {'id': 'LOOP', 'deprecated': False}, + 'lpd-document': {'id': 'LPD-document', 'deprecated': False}, + 'lpl-1.0': {'id': 'LPL-1.0', 'deprecated': False}, + 'lpl-1.02': {'id': 'LPL-1.02', 'deprecated': False}, + 'lppl-1.0': {'id': 'LPPL-1.0', 'deprecated': False}, + 'lppl-1.1': {'id': 'LPPL-1.1', 'deprecated': False}, + 'lppl-1.2': {'id': 'LPPL-1.2', 'deprecated': False}, + 'lppl-1.3a': {'id': 'LPPL-1.3a', 'deprecated': False}, + 'lppl-1.3c': {'id': 'LPPL-1.3c', 'deprecated': False}, + 'lsof': {'id': 'lsof', 'deprecated': False}, + 'lucida-bitmap-fonts': {'id': 'Lucida-Bitmap-Fonts', 'deprecated': False}, + 'lzma-sdk-9.11-to-9.20': {'id': 'LZMA-SDK-9.11-to-9.20', 'deprecated': False}, + 'lzma-sdk-9.22': {'id': 'LZMA-SDK-9.22', 'deprecated': False}, + 'mackerras-3-clause': {'id': 'Mackerras-3-Clause', 'deprecated': False}, + 'mackerras-3-clause-acknowledgment': {'id': 'Mackerras-3-Clause-acknowledgment', 'deprecated': False}, + 'magaz': {'id': 'magaz', 'deprecated': False}, + 'mailprio': {'id': 'mailprio', 'deprecated': False}, + 'makeindex': {'id': 'MakeIndex', 'deprecated': False}, + 'martin-birgmeier': {'id': 'Martin-Birgmeier', 'deprecated': False}, + 'mcphee-slideshow': {'id': 'McPhee-slideshow', 'deprecated': False}, + 'metamail': {'id': 'metamail', 'deprecated': False}, + 'minpack': {'id': 'Minpack', 'deprecated': False}, + 'miros': {'id': 'MirOS', 'deprecated': False}, + 'mit': {'id': 'MIT', 'deprecated': False}, + 'mit-0': {'id': 'MIT-0', 'deprecated': False}, + 'mit-advertising': {'id': 'MIT-advertising', 'deprecated': False}, + 'mit-cmu': {'id': 'MIT-CMU', 'deprecated': False}, + 'mit-enna': {'id': 'MIT-enna', 'deprecated': False}, + 'mit-feh': {'id': 'MIT-feh', 'deprecated': False}, + 'mit-festival': {'id': 'MIT-Festival', 'deprecated': False}, + 'mit-khronos-old': {'id': 'MIT-Khronos-old', 'deprecated': False}, + 'mit-modern-variant': {'id': 'MIT-Modern-Variant', 'deprecated': False}, + 'mit-open-group': {'id': 'MIT-open-group', 'deprecated': False}, + 'mit-testregex': {'id': 'MIT-testregex', 'deprecated': False}, + 'mit-wu': {'id': 'MIT-Wu', 'deprecated': False}, + 'mitnfa': {'id': 'MITNFA', 'deprecated': False}, + 'mmixware': {'id': 'MMIXware', 'deprecated': False}, + 'motosoto': {'id': 'Motosoto', 'deprecated': False}, + 'mpeg-ssg': {'id': 'MPEG-SSG', 'deprecated': False}, + 'mpi-permissive': {'id': 'mpi-permissive', 'deprecated': False}, + 'mpich2': {'id': 'mpich2', 'deprecated': False}, + 'mpl-1.0': {'id': 'MPL-1.0', 'deprecated': False}, + 'mpl-1.1': {'id': 'MPL-1.1', 'deprecated': False}, + 'mpl-2.0': {'id': 'MPL-2.0', 'deprecated': False}, + 'mpl-2.0-no-copyleft-exception': {'id': 'MPL-2.0-no-copyleft-exception', 'deprecated': False}, + 'mplus': {'id': 'mplus', 'deprecated': False}, + 'ms-lpl': {'id': 'MS-LPL', 'deprecated': False}, + 'ms-pl': {'id': 'MS-PL', 'deprecated': False}, + 'ms-rl': {'id': 'MS-RL', 'deprecated': False}, + 'mtll': {'id': 'MTLL', 'deprecated': False}, + 'mulanpsl-1.0': {'id': 'MulanPSL-1.0', 'deprecated': False}, + 'mulanpsl-2.0': {'id': 'MulanPSL-2.0', 'deprecated': False}, + 'multics': {'id': 'Multics', 'deprecated': False}, + 'mup': {'id': 'Mup', 'deprecated': False}, + 'naist-2003': {'id': 'NAIST-2003', 'deprecated': False}, + 'nasa-1.3': {'id': 'NASA-1.3', 'deprecated': False}, + 'naumen': {'id': 'Naumen', 'deprecated': False}, + 'nbpl-1.0': {'id': 'NBPL-1.0', 'deprecated': False}, + 'ncbi-pd': {'id': 'NCBI-PD', 'deprecated': False}, + 'ncgl-uk-2.0': {'id': 'NCGL-UK-2.0', 'deprecated': False}, + 'ncl': {'id': 'NCL', 'deprecated': False}, + 'ncsa': {'id': 'NCSA', 'deprecated': False}, + 'net-snmp': {'id': 'Net-SNMP', 'deprecated': True}, + 'netcdf': {'id': 'NetCDF', 'deprecated': False}, + 'newsletr': {'id': 'Newsletr', 'deprecated': False}, + 'ngpl': {'id': 'NGPL', 'deprecated': False}, + 'nicta-1.0': {'id': 'NICTA-1.0', 'deprecated': False}, + 'nist-pd': {'id': 'NIST-PD', 'deprecated': False}, + 'nist-pd-fallback': {'id': 'NIST-PD-fallback', 'deprecated': False}, + 'nist-software': {'id': 'NIST-Software', 'deprecated': False}, + 'nlod-1.0': {'id': 'NLOD-1.0', 'deprecated': False}, + 'nlod-2.0': {'id': 'NLOD-2.0', 'deprecated': False}, + 'nlpl': {'id': 'NLPL', 'deprecated': False}, + 'nokia': {'id': 'Nokia', 'deprecated': False}, + 'nosl': {'id': 'NOSL', 'deprecated': False}, + 'noweb': {'id': 'Noweb', 'deprecated': False}, + 'npl-1.0': {'id': 'NPL-1.0', 'deprecated': False}, + 'npl-1.1': {'id': 'NPL-1.1', 'deprecated': False}, + 'nposl-3.0': {'id': 'NPOSL-3.0', 'deprecated': False}, + 'nrl': {'id': 'NRL', 'deprecated': False}, + 'ntp': {'id': 'NTP', 'deprecated': False}, + 'ntp-0': {'id': 'NTP-0', 'deprecated': False}, + 'nunit': {'id': 'Nunit', 'deprecated': True}, + 'o-uda-1.0': {'id': 'O-UDA-1.0', 'deprecated': False}, + 'oar': {'id': 'OAR', 'deprecated': False}, + 'occt-pl': {'id': 'OCCT-PL', 'deprecated': False}, + 'oclc-2.0': {'id': 'OCLC-2.0', 'deprecated': False}, + 'odbl-1.0': {'id': 'ODbL-1.0', 'deprecated': False}, + 'odc-by-1.0': {'id': 'ODC-By-1.0', 'deprecated': False}, + 'offis': {'id': 'OFFIS', 'deprecated': False}, + 'ofl-1.0': {'id': 'OFL-1.0', 'deprecated': False}, + 'ofl-1.0-no-rfn': {'id': 'OFL-1.0-no-RFN', 'deprecated': False}, + 'ofl-1.0-rfn': {'id': 'OFL-1.0-RFN', 'deprecated': False}, + 'ofl-1.1': {'id': 'OFL-1.1', 'deprecated': False}, + 'ofl-1.1-no-rfn': {'id': 'OFL-1.1-no-RFN', 'deprecated': False}, + 'ofl-1.1-rfn': {'id': 'OFL-1.1-RFN', 'deprecated': False}, + 'ogc-1.0': {'id': 'OGC-1.0', 'deprecated': False}, + 'ogdl-taiwan-1.0': {'id': 'OGDL-Taiwan-1.0', 'deprecated': False}, + 'ogl-canada-2.0': {'id': 'OGL-Canada-2.0', 'deprecated': False}, + 'ogl-uk-1.0': {'id': 'OGL-UK-1.0', 'deprecated': False}, + 'ogl-uk-2.0': {'id': 'OGL-UK-2.0', 'deprecated': False}, + 'ogl-uk-3.0': {'id': 'OGL-UK-3.0', 'deprecated': False}, + 'ogtsl': {'id': 'OGTSL', 'deprecated': False}, + 'oldap-1.1': {'id': 'OLDAP-1.1', 'deprecated': False}, + 'oldap-1.2': {'id': 'OLDAP-1.2', 'deprecated': False}, + 'oldap-1.3': {'id': 'OLDAP-1.3', 'deprecated': False}, + 'oldap-1.4': {'id': 'OLDAP-1.4', 'deprecated': False}, + 'oldap-2.0': {'id': 'OLDAP-2.0', 'deprecated': False}, + 'oldap-2.0.1': {'id': 'OLDAP-2.0.1', 'deprecated': False}, + 'oldap-2.1': {'id': 'OLDAP-2.1', 'deprecated': False}, + 'oldap-2.2': {'id': 'OLDAP-2.2', 'deprecated': False}, + 'oldap-2.2.1': {'id': 'OLDAP-2.2.1', 'deprecated': False}, + 'oldap-2.2.2': {'id': 'OLDAP-2.2.2', 'deprecated': False}, + 'oldap-2.3': {'id': 'OLDAP-2.3', 'deprecated': False}, + 'oldap-2.4': {'id': 'OLDAP-2.4', 'deprecated': False}, + 'oldap-2.5': {'id': 'OLDAP-2.5', 'deprecated': False}, + 'oldap-2.6': {'id': 'OLDAP-2.6', 'deprecated': False}, + 'oldap-2.7': {'id': 'OLDAP-2.7', 'deprecated': False}, + 'oldap-2.8': {'id': 'OLDAP-2.8', 'deprecated': False}, + 'olfl-1.3': {'id': 'OLFL-1.3', 'deprecated': False}, + 'oml': {'id': 'OML', 'deprecated': False}, + 'openpbs-2.3': {'id': 'OpenPBS-2.3', 'deprecated': False}, + 'openssl': {'id': 'OpenSSL', 'deprecated': False}, + 'openssl-standalone': {'id': 'OpenSSL-standalone', 'deprecated': False}, + 'openvision': {'id': 'OpenVision', 'deprecated': False}, + 'opl-1.0': {'id': 'OPL-1.0', 'deprecated': False}, + 'opl-uk-3.0': {'id': 'OPL-UK-3.0', 'deprecated': False}, + 'opubl-1.0': {'id': 'OPUBL-1.0', 'deprecated': False}, + 'oset-pl-2.1': {'id': 'OSET-PL-2.1', 'deprecated': False}, + 'osl-1.0': {'id': 'OSL-1.0', 'deprecated': False}, + 'osl-1.1': {'id': 'OSL-1.1', 'deprecated': False}, + 'osl-2.0': {'id': 'OSL-2.0', 'deprecated': False}, + 'osl-2.1': {'id': 'OSL-2.1', 'deprecated': False}, + 'osl-3.0': {'id': 'OSL-3.0', 'deprecated': False}, + 'padl': {'id': 'PADL', 'deprecated': False}, + 'parity-6.0.0': {'id': 'Parity-6.0.0', 'deprecated': False}, + 'parity-7.0.0': {'id': 'Parity-7.0.0', 'deprecated': False}, + 'pddl-1.0': {'id': 'PDDL-1.0', 'deprecated': False}, + 'php-3.0': {'id': 'PHP-3.0', 'deprecated': False}, + 'php-3.01': {'id': 'PHP-3.01', 'deprecated': False}, + 'pixar': {'id': 'Pixar', 'deprecated': False}, + 'pkgconf': {'id': 'pkgconf', 'deprecated': False}, + 'plexus': {'id': 'Plexus', 'deprecated': False}, + 'pnmstitch': {'id': 'pnmstitch', 'deprecated': False}, + 'polyform-noncommercial-1.0.0': {'id': 'PolyForm-Noncommercial-1.0.0', 'deprecated': False}, + 'polyform-small-business-1.0.0': {'id': 'PolyForm-Small-Business-1.0.0', 'deprecated': False}, + 'postgresql': {'id': 'PostgreSQL', 'deprecated': False}, + 'ppl': {'id': 'PPL', 'deprecated': False}, + 'psf-2.0': {'id': 'PSF-2.0', 'deprecated': False}, + 'psfrag': {'id': 'psfrag', 'deprecated': False}, + 'psutils': {'id': 'psutils', 'deprecated': False}, + 'python-2.0': {'id': 'Python-2.0', 'deprecated': False}, + 'python-2.0.1': {'id': 'Python-2.0.1', 'deprecated': False}, + 'python-ldap': {'id': 'python-ldap', 'deprecated': False}, + 'qhull': {'id': 'Qhull', 'deprecated': False}, + 'qpl-1.0': {'id': 'QPL-1.0', 'deprecated': False}, + 'qpl-1.0-inria-2004': {'id': 'QPL-1.0-INRIA-2004', 'deprecated': False}, + 'radvd': {'id': 'radvd', 'deprecated': False}, + 'rdisc': {'id': 'Rdisc', 'deprecated': False}, + 'rhecos-1.1': {'id': 'RHeCos-1.1', 'deprecated': False}, + 'rpl-1.1': {'id': 'RPL-1.1', 'deprecated': False}, + 'rpl-1.5': {'id': 'RPL-1.5', 'deprecated': False}, + 'rpsl-1.0': {'id': 'RPSL-1.0', 'deprecated': False}, + 'rsa-md': {'id': 'RSA-MD', 'deprecated': False}, + 'rscpl': {'id': 'RSCPL', 'deprecated': False}, + 'ruby': {'id': 'Ruby', 'deprecated': False}, + 'ruby-pty': {'id': 'Ruby-pty', 'deprecated': False}, + 'sax-pd': {'id': 'SAX-PD', 'deprecated': False}, + 'sax-pd-2.0': {'id': 'SAX-PD-2.0', 'deprecated': False}, + 'saxpath': {'id': 'Saxpath', 'deprecated': False}, + 'scea': {'id': 'SCEA', 'deprecated': False}, + 'schemereport': {'id': 'SchemeReport', 'deprecated': False}, + 'sendmail': {'id': 'Sendmail', 'deprecated': False}, + 'sendmail-8.23': {'id': 'Sendmail-8.23', 'deprecated': False}, + 'sgi-b-1.0': {'id': 'SGI-B-1.0', 'deprecated': False}, + 'sgi-b-1.1': {'id': 'SGI-B-1.1', 'deprecated': False}, + 'sgi-b-2.0': {'id': 'SGI-B-2.0', 'deprecated': False}, + 'sgi-opengl': {'id': 'SGI-OpenGL', 'deprecated': False}, + 'sgp4': {'id': 'SGP4', 'deprecated': False}, + 'shl-0.5': {'id': 'SHL-0.5', 'deprecated': False}, + 'shl-0.51': {'id': 'SHL-0.51', 'deprecated': False}, + 'simpl-2.0': {'id': 'SimPL-2.0', 'deprecated': False}, + 'sissl': {'id': 'SISSL', 'deprecated': False}, + 'sissl-1.2': {'id': 'SISSL-1.2', 'deprecated': False}, + 'sl': {'id': 'SL', 'deprecated': False}, + 'sleepycat': {'id': 'Sleepycat', 'deprecated': False}, + 'smlnj': {'id': 'SMLNJ', 'deprecated': False}, + 'smppl': {'id': 'SMPPL', 'deprecated': False}, + 'snia': {'id': 'SNIA', 'deprecated': False}, + 'snprintf': {'id': 'snprintf', 'deprecated': False}, + 'softsurfer': {'id': 'softSurfer', 'deprecated': False}, + 'soundex': {'id': 'Soundex', 'deprecated': False}, + 'spencer-86': {'id': 'Spencer-86', 'deprecated': False}, + 'spencer-94': {'id': 'Spencer-94', 'deprecated': False}, + 'spencer-99': {'id': 'Spencer-99', 'deprecated': False}, + 'spl-1.0': {'id': 'SPL-1.0', 'deprecated': False}, + 'ssh-keyscan': {'id': 'ssh-keyscan', 'deprecated': False}, + 'ssh-openssh': {'id': 'SSH-OpenSSH', 'deprecated': False}, + 'ssh-short': {'id': 'SSH-short', 'deprecated': False}, + 'ssleay-standalone': {'id': 'SSLeay-standalone', 'deprecated': False}, + 'sspl-1.0': {'id': 'SSPL-1.0', 'deprecated': False}, + 'standardml-nj': {'id': 'StandardML-NJ', 'deprecated': True}, + 'sugarcrm-1.1.3': {'id': 'SugarCRM-1.1.3', 'deprecated': False}, + 'sun-ppp': {'id': 'Sun-PPP', 'deprecated': False}, + 'sun-ppp-2000': {'id': 'Sun-PPP-2000', 'deprecated': False}, + 'sunpro': {'id': 'SunPro', 'deprecated': False}, + 'swl': {'id': 'SWL', 'deprecated': False}, + 'swrule': {'id': 'swrule', 'deprecated': False}, + 'symlinks': {'id': 'Symlinks', 'deprecated': False}, + 'tapr-ohl-1.0': {'id': 'TAPR-OHL-1.0', 'deprecated': False}, + 'tcl': {'id': 'TCL', 'deprecated': False}, + 'tcp-wrappers': {'id': 'TCP-wrappers', 'deprecated': False}, + 'termreadkey': {'id': 'TermReadKey', 'deprecated': False}, + 'tgppl-1.0': {'id': 'TGPPL-1.0', 'deprecated': False}, + 'threeparttable': {'id': 'threeparttable', 'deprecated': False}, + 'tmate': {'id': 'TMate', 'deprecated': False}, + 'torque-1.1': {'id': 'TORQUE-1.1', 'deprecated': False}, + 'tosl': {'id': 'TOSL', 'deprecated': False}, + 'tpdl': {'id': 'TPDL', 'deprecated': False}, + 'tpl-1.0': {'id': 'TPL-1.0', 'deprecated': False}, + 'ttwl': {'id': 'TTWL', 'deprecated': False}, + 'ttyp0': {'id': 'TTYP0', 'deprecated': False}, + 'tu-berlin-1.0': {'id': 'TU-Berlin-1.0', 'deprecated': False}, + 'tu-berlin-2.0': {'id': 'TU-Berlin-2.0', 'deprecated': False}, + 'ubuntu-font-1.0': {'id': 'Ubuntu-font-1.0', 'deprecated': False}, + 'ucar': {'id': 'UCAR', 'deprecated': False}, + 'ucl-1.0': {'id': 'UCL-1.0', 'deprecated': False}, + 'ulem': {'id': 'ulem', 'deprecated': False}, + 'umich-merit': {'id': 'UMich-Merit', 'deprecated': False}, + 'unicode-3.0': {'id': 'Unicode-3.0', 'deprecated': False}, + 'unicode-dfs-2015': {'id': 'Unicode-DFS-2015', 'deprecated': False}, + 'unicode-dfs-2016': {'id': 'Unicode-DFS-2016', 'deprecated': False}, + 'unicode-tou': {'id': 'Unicode-TOU', 'deprecated': False}, + 'unixcrypt': {'id': 'UnixCrypt', 'deprecated': False}, + 'unlicense': {'id': 'Unlicense', 'deprecated': False}, + 'upl-1.0': {'id': 'UPL-1.0', 'deprecated': False}, + 'urt-rle': {'id': 'URT-RLE', 'deprecated': False}, + 'vim': {'id': 'Vim', 'deprecated': False}, + 'vostrom': {'id': 'VOSTROM', 'deprecated': False}, + 'vsl-1.0': {'id': 'VSL-1.0', 'deprecated': False}, + 'w3c': {'id': 'W3C', 'deprecated': False}, + 'w3c-19980720': {'id': 'W3C-19980720', 'deprecated': False}, + 'w3c-20150513': {'id': 'W3C-20150513', 'deprecated': False}, + 'w3m': {'id': 'w3m', 'deprecated': False}, + 'watcom-1.0': {'id': 'Watcom-1.0', 'deprecated': False}, + 'widget-workshop': {'id': 'Widget-Workshop', 'deprecated': False}, + 'wsuipa': {'id': 'Wsuipa', 'deprecated': False}, + 'wtfpl': {'id': 'WTFPL', 'deprecated': False}, + 'wxwindows': {'id': 'wxWindows', 'deprecated': True}, + 'x11': {'id': 'X11', 'deprecated': False}, + 'x11-distribute-modifications-variant': {'id': 'X11-distribute-modifications-variant', 'deprecated': False}, + 'x11-swapped': {'id': 'X11-swapped', 'deprecated': False}, + 'xdebug-1.03': {'id': 'Xdebug-1.03', 'deprecated': False}, + 'xerox': {'id': 'Xerox', 'deprecated': False}, + 'xfig': {'id': 'Xfig', 'deprecated': False}, + 'xfree86-1.1': {'id': 'XFree86-1.1', 'deprecated': False}, + 'xinetd': {'id': 'xinetd', 'deprecated': False}, + 'xkeyboard-config-zinoviev': {'id': 'xkeyboard-config-Zinoviev', 'deprecated': False}, + 'xlock': {'id': 'xlock', 'deprecated': False}, + 'xnet': {'id': 'Xnet', 'deprecated': False}, + 'xpp': {'id': 'xpp', 'deprecated': False}, + 'xskat': {'id': 'XSkat', 'deprecated': False}, + 'xzoom': {'id': 'xzoom', 'deprecated': False}, + 'ypl-1.0': {'id': 'YPL-1.0', 'deprecated': False}, + 'ypl-1.1': {'id': 'YPL-1.1', 'deprecated': False}, + 'zed': {'id': 'Zed', 'deprecated': False}, + 'zeeff': {'id': 'Zeeff', 'deprecated': False}, + 'zend-2.0': {'id': 'Zend-2.0', 'deprecated': False}, + 'zimbra-1.3': {'id': 'Zimbra-1.3', 'deprecated': False}, + 'zimbra-1.4': {'id': 'Zimbra-1.4', 'deprecated': False}, + 'zlib': {'id': 'Zlib', 'deprecated': False}, + 'zlib-acknowledgement': {'id': 'zlib-acknowledgement', 'deprecated': False}, + 'zpl-1.1': {'id': 'ZPL-1.1', 'deprecated': False}, + 'zpl-2.0': {'id': 'ZPL-2.0', 'deprecated': False}, + 'zpl-2.1': {'id': 'ZPL-2.1', 'deprecated': False}, +} + +EXCEPTIONS: dict[str, SPDXException] = { + '389-exception': {'id': '389-exception', 'deprecated': False}, + 'asterisk-exception': {'id': 'Asterisk-exception', 'deprecated': False}, + 'asterisk-linking-protocols-exception': {'id': 'Asterisk-linking-protocols-exception', 'deprecated': False}, + 'autoconf-exception-2.0': {'id': 'Autoconf-exception-2.0', 'deprecated': False}, + 'autoconf-exception-3.0': {'id': 'Autoconf-exception-3.0', 'deprecated': False}, + 'autoconf-exception-generic': {'id': 'Autoconf-exception-generic', 'deprecated': False}, + 'autoconf-exception-generic-3.0': {'id': 'Autoconf-exception-generic-3.0', 'deprecated': False}, + 'autoconf-exception-macro': {'id': 'Autoconf-exception-macro', 'deprecated': False}, + 'bison-exception-1.24': {'id': 'Bison-exception-1.24', 'deprecated': False}, + 'bison-exception-2.2': {'id': 'Bison-exception-2.2', 'deprecated': False}, + 'bootloader-exception': {'id': 'Bootloader-exception', 'deprecated': False}, + 'classpath-exception-2.0': {'id': 'Classpath-exception-2.0', 'deprecated': False}, + 'clisp-exception-2.0': {'id': 'CLISP-exception-2.0', 'deprecated': False}, + 'cryptsetup-openssl-exception': {'id': 'cryptsetup-OpenSSL-exception', 'deprecated': False}, + 'digirule-foss-exception': {'id': 'DigiRule-FOSS-exception', 'deprecated': False}, + 'ecos-exception-2.0': {'id': 'eCos-exception-2.0', 'deprecated': False}, + 'erlang-otp-linking-exception': {'id': 'erlang-otp-linking-exception', 'deprecated': False}, + 'fawkes-runtime-exception': {'id': 'Fawkes-Runtime-exception', 'deprecated': False}, + 'fltk-exception': {'id': 'FLTK-exception', 'deprecated': False}, + 'fmt-exception': {'id': 'fmt-exception', 'deprecated': False}, + 'font-exception-2.0': {'id': 'Font-exception-2.0', 'deprecated': False}, + 'freertos-exception-2.0': {'id': 'freertos-exception-2.0', 'deprecated': False}, + 'gcc-exception-2.0': {'id': 'GCC-exception-2.0', 'deprecated': False}, + 'gcc-exception-2.0-note': {'id': 'GCC-exception-2.0-note', 'deprecated': False}, + 'gcc-exception-3.1': {'id': 'GCC-exception-3.1', 'deprecated': False}, + 'gmsh-exception': {'id': 'Gmsh-exception', 'deprecated': False}, + 'gnat-exception': {'id': 'GNAT-exception', 'deprecated': False}, + 'gnome-examples-exception': {'id': 'GNOME-examples-exception', 'deprecated': False}, + 'gnu-compiler-exception': {'id': 'GNU-compiler-exception', 'deprecated': False}, + 'gnu-javamail-exception': {'id': 'gnu-javamail-exception', 'deprecated': False}, + 'gpl-3.0-interface-exception': {'id': 'GPL-3.0-interface-exception', 'deprecated': False}, + 'gpl-3.0-linking-exception': {'id': 'GPL-3.0-linking-exception', 'deprecated': False}, + 'gpl-3.0-linking-source-exception': {'id': 'GPL-3.0-linking-source-exception', 'deprecated': False}, + 'gpl-cc-1.0': {'id': 'GPL-CC-1.0', 'deprecated': False}, + 'gstreamer-exception-2005': {'id': 'GStreamer-exception-2005', 'deprecated': False}, + 'gstreamer-exception-2008': {'id': 'GStreamer-exception-2008', 'deprecated': False}, + 'i2p-gpl-java-exception': {'id': 'i2p-gpl-java-exception', 'deprecated': False}, + 'kicad-libraries-exception': {'id': 'KiCad-libraries-exception', 'deprecated': False}, + 'lgpl-3.0-linking-exception': {'id': 'LGPL-3.0-linking-exception', 'deprecated': False}, + 'libpri-openh323-exception': {'id': 'libpri-OpenH323-exception', 'deprecated': False}, + 'libtool-exception': {'id': 'Libtool-exception', 'deprecated': False}, + 'linux-syscall-note': {'id': 'Linux-syscall-note', 'deprecated': False}, + 'llgpl': {'id': 'LLGPL', 'deprecated': False}, + 'llvm-exception': {'id': 'LLVM-exception', 'deprecated': False}, + 'lzma-exception': {'id': 'LZMA-exception', 'deprecated': False}, + 'mif-exception': {'id': 'mif-exception', 'deprecated': False}, + 'nokia-qt-exception-1.1': {'id': 'Nokia-Qt-exception-1.1', 'deprecated': True}, + 'ocaml-lgpl-linking-exception': {'id': 'OCaml-LGPL-linking-exception', 'deprecated': False}, + 'occt-exception-1.0': {'id': 'OCCT-exception-1.0', 'deprecated': False}, + 'openjdk-assembly-exception-1.0': {'id': 'OpenJDK-assembly-exception-1.0', 'deprecated': False}, + 'openvpn-openssl-exception': {'id': 'openvpn-openssl-exception', 'deprecated': False}, + 'pcre2-exception': {'id': 'PCRE2-exception', 'deprecated': False}, + 'ps-or-pdf-font-exception-20170817': {'id': 'PS-or-PDF-font-exception-20170817', 'deprecated': False}, + 'qpl-1.0-inria-2004-exception': {'id': 'QPL-1.0-INRIA-2004-exception', 'deprecated': False}, + 'qt-gpl-exception-1.0': {'id': 'Qt-GPL-exception-1.0', 'deprecated': False}, + 'qt-lgpl-exception-1.1': {'id': 'Qt-LGPL-exception-1.1', 'deprecated': False}, + 'qwt-exception-1.0': {'id': 'Qwt-exception-1.0', 'deprecated': False}, + 'romic-exception': {'id': 'romic-exception', 'deprecated': False}, + 'rrdtool-floss-exception-2.0': {'id': 'RRDtool-FLOSS-exception-2.0', 'deprecated': False}, + 'sane-exception': {'id': 'SANE-exception', 'deprecated': False}, + 'shl-2.0': {'id': 'SHL-2.0', 'deprecated': False}, + 'shl-2.1': {'id': 'SHL-2.1', 'deprecated': False}, + 'stunnel-exception': {'id': 'stunnel-exception', 'deprecated': False}, + 'swi-exception': {'id': 'SWI-exception', 'deprecated': False}, + 'swift-exception': {'id': 'Swift-exception', 'deprecated': False}, + 'texinfo-exception': {'id': 'Texinfo-exception', 'deprecated': False}, + 'u-boot-exception-2.0': {'id': 'u-boot-exception-2.0', 'deprecated': False}, + 'ubdl-exception': {'id': 'UBDL-exception', 'deprecated': False}, + 'universal-foss-exception-1.0': {'id': 'Universal-FOSS-exception-1.0', 'deprecated': False}, + 'vsftpd-openssl-exception': {'id': 'vsftpd-openssl-exception', 'deprecated': False}, + 'wxwindows-exception-3.1': {'id': 'WxWindows-exception-3.1', 'deprecated': False}, + 'x11vnc-openssl-exception': {'id': 'x11vnc-openssl-exception', 'deprecated': False}, +} diff --git a/contrib/python/packaging/py3/packaging/markers.py b/contrib/python/packaging/py3/packaging/markers.py index cb640e8f9b8..fb7f49cf8cd 100644 --- a/contrib/python/packaging/py3/packaging/markers.py +++ b/contrib/python/packaging/py3/packaging/markers.py @@ -2,31 +2,25 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. +from __future__ import annotations + import operator import os import platform import sys -from typing import Any, Callable, Dict, List, Optional, Tuple, Union - -from pyparsing import ( # noqa: N817 - Forward, - Group, - Literal as L, - ParseException, - ParseResults, - QuotedString, - ZeroOrMore, - stringEnd, - stringStart, -) +from typing import Any, Callable, TypedDict, cast +from ._parser import MarkerAtom, MarkerList, Op, Value, Variable +from ._parser import parse_marker as _parse_marker +from ._tokenizer import ParserSyntaxError from .specifiers import InvalidSpecifier, Specifier +from .utils import canonicalize_name __all__ = [ "InvalidMarker", + "Marker", "UndefinedComparison", "UndefinedEnvironmentName", - "Marker", "default_environment", ] @@ -52,103 +46,97 @@ class UndefinedEnvironmentName(ValueError): """ -class Node: - def __init__(self, value: Any) -> None: - self.value = value +class Environment(TypedDict): + implementation_name: str + """The implementation's identifier, e.g. ``'cpython'``.""" - def __str__(self) -> str: - return str(self.value) + implementation_version: str + """ + The implementation's version, e.g. ``'3.13.0a2'`` for CPython 3.13.0a2, or + ``'7.3.13'`` for PyPy3.10 v7.3.13. + """ - def __repr__(self) -> str: - return f"<{self.__class__.__name__}('{self}')>" - - def serialize(self) -> str: - raise NotImplementedError - - -class Variable(Node): - def serialize(self) -> str: - return str(self) - - -class Value(Node): - def serialize(self) -> str: - return f'"{self}"' - - -class Op(Node): - def serialize(self) -> str: - return str(self) - - -VARIABLE = ( - L("implementation_version") - | L("platform_python_implementation") - | L("implementation_name") - | L("python_full_version") - | L("platform_release") - | L("platform_version") - | L("platform_machine") - | L("platform_system") - | L("python_version") - | L("sys_platform") - | L("os_name") - | L("os.name") # PEP-345 - | L("sys.platform") # PEP-345 - | L("platform.version") # PEP-345 - | L("platform.machine") # PEP-345 - | L("platform.python_implementation") # PEP-345 - | L("python_implementation") # undocumented setuptools legacy - | L("extra") # PEP-508 -) -ALIASES = { - "os.name": "os_name", - "sys.platform": "sys_platform", - "platform.version": "platform_version", - "platform.machine": "platform_machine", - "platform.python_implementation": "platform_python_implementation", - "python_implementation": "platform_python_implementation", -} -VARIABLE.setParseAction(lambda s, l, t: Variable(ALIASES.get(t[0], t[0]))) + os_name: str + """ + The value of :py:data:`os.name`. The name of the operating system dependent module + imported, e.g. ``'posix'``. + """ -VERSION_CMP = ( - L("===") | L("==") | L(">=") | L("<=") | L("!=") | L("~=") | L(">") | L("<") -) + platform_machine: str + """ + Returns the machine type, e.g. ``'i386'``. -MARKER_OP = VERSION_CMP | L("not in") | L("in") -MARKER_OP.setParseAction(lambda s, l, t: Op(t[0])) + An empty string if the value cannot be determined. + """ -MARKER_VALUE = QuotedString("'") | QuotedString('"') -MARKER_VALUE.setParseAction(lambda s, l, t: Value(t[0])) + platform_release: str + """ + The system's release, e.g. ``'2.2.0'`` or ``'NT'``. -BOOLOP = L("and") | L("or") + An empty string if the value cannot be determined. + """ -MARKER_VAR = VARIABLE | MARKER_VALUE + platform_system: str + """ + The system/OS name, e.g. ``'Linux'``, ``'Windows'`` or ``'Java'``. -MARKER_ITEM = Group(MARKER_VAR + MARKER_OP + MARKER_VAR) -MARKER_ITEM.setParseAction(lambda s, l, t: tuple(t[0])) + An empty string if the value cannot be determined. + """ -LPAREN = L("(").suppress() -RPAREN = L(")").suppress() + platform_version: str + """ + The system's release version, e.g. ``'#3 on degas'``. -MARKER_EXPR = Forward() -MARKER_ATOM = MARKER_ITEM | Group(LPAREN + MARKER_EXPR + RPAREN) -MARKER_EXPR << MARKER_ATOM + ZeroOrMore(BOOLOP + MARKER_EXPR) + An empty string if the value cannot be determined. + """ -MARKER = stringStart + MARKER_EXPR + stringEnd + python_full_version: str + """ + The Python version as string ``'major.minor.patchlevel'``. + Note that unlike the Python :py:data:`sys.version`, this value will always include + the patchlevel (it defaults to 0). + """ -def _coerce_parse_result(results: Union[ParseResults, List[Any]]) -> List[Any]: - if isinstance(results, ParseResults): - return [_coerce_parse_result(i) for i in results] - else: - return results + platform_python_implementation: str + """ + A string identifying the Python implementation, e.g. ``'CPython'``. + """ + + python_version: str + """The Python version as string ``'major.minor'``.""" + + sys_platform: str + """ + This string contains a platform identifier that can be used to append + platform-specific components to :py:data:`sys.path`, for instance. + + For Unix systems, except on Linux and AIX, this is the lowercased OS name as + returned by ``uname -s`` with the first part of the version as returned by + ``uname -r`` appended, e.g. ``'sunos5'`` or ``'freebsd8'``, at the time when Python + was built. + """ + + +def _normalize_extra_values(results: Any) -> Any: + """ + Normalize extra values. + """ + if isinstance(results[0], tuple): + lhs, op, rhs = results[0] + if isinstance(lhs, Variable) and lhs.value == "extra": + normalized_extra = canonicalize_name(rhs.value) + rhs = Value(normalized_extra) + elif isinstance(rhs, Variable) and rhs.value == "extra": + normalized_extra = canonicalize_name(lhs.value) + lhs = Value(normalized_extra) + results[0] = lhs, op, rhs + return results def _format_marker( - marker: Union[List[str], Tuple[Node, ...], str], first: Optional[bool] = True + marker: list[str] | MarkerAtom | str, first: bool | None = True ) -> str: - assert isinstance(marker, (list, tuple, str)) # Sometimes we have a structure like [[...]] which is a single item list @@ -174,7 +162,7 @@ def _format_marker( return marker -_operators: Dict[str, Operator] = { +_operators: dict[str, Operator] = { "in": lambda lhs, rhs: lhs in rhs, "not in": lambda lhs, rhs: lhs not in rhs, "<": operator.lt, @@ -192,35 +180,29 @@ def _eval_op(lhs: str, op: Op, rhs: str) -> bool: except InvalidSpecifier: pass else: - return spec.contains(lhs) + return spec.contains(lhs, prereleases=True) - oper: Optional[Operator] = _operators.get(op.serialize()) + oper: Operator | None = _operators.get(op.serialize()) if oper is None: raise UndefinedComparison(f"Undefined {op!r} on {lhs!r} and {rhs!r}.") return oper(lhs, rhs) -class Undefined: - pass +def _normalize(*values: str, key: str) -> tuple[str, ...]: + # PEP 685 – Comparison of extra names for optional distribution dependencies + # https://peps.python.org/pep-0685/ + # > When comparing extra names, tools MUST normalize the names being + # > compared using the semantics outlined in PEP 503 for names + if key == "extra": + return tuple(canonicalize_name(v) for v in values) + # other environment markers don't have such standards + return values -_undefined = Undefined() - -def _get_env(environment: Dict[str, str], name: str) -> str: - value: Union[str, Undefined] = environment.get(name, _undefined) - - if isinstance(value, Undefined): - raise UndefinedEnvironmentName( - f"{name!r} does not exist in evaluation environment." - ) - - return value - - -def _evaluate_markers(markers: List[Any], environment: Dict[str, str]) -> bool: - groups: List[List[bool]] = [[]] +def _evaluate_markers(markers: MarkerList, environment: dict[str, str]) -> bool: + groups: list[list[bool]] = [[]] for marker in markers: assert isinstance(marker, (list, tuple, str)) @@ -231,12 +213,15 @@ def _evaluate_markers(markers: List[Any], environment: Dict[str, str]) -> bool: lhs, op, rhs = marker if isinstance(lhs, Variable): - lhs_value = _get_env(environment, lhs.value) + environment_key = lhs.value + lhs_value = environment[environment_key] rhs_value = rhs.value else: lhs_value = lhs.value - rhs_value = _get_env(environment, rhs.value) + environment_key = rhs.value + rhs_value = environment[environment_key] + lhs_value, rhs_value = _normalize(lhs_value, rhs_value, key=environment_key) groups[-1].append(_eval_op(lhs_value, op, rhs_value)) else: assert marker in ["and", "or"] @@ -246,15 +231,15 @@ def _evaluate_markers(markers: List[Any], environment: Dict[str, str]) -> bool: return any(all(item) for item in groups) -def format_full_version(info: "sys._version_info") -> str: - version = "{0.major}.{0.minor}.{0.micro}".format(info) +def format_full_version(info: sys._version_info) -> str: + version = f"{info.major}.{info.minor}.{info.micro}" kind = info.releaselevel if kind != "final": version += kind[0] + str(info.serial) return version -def default_environment() -> Dict[str, str]: +def default_environment() -> Environment: iver = format_full_version(sys.implementation.version) implementation_name = sys.implementation.name return { @@ -274,13 +259,29 @@ def default_environment() -> Dict[str, str]: class Marker: def __init__(self, marker: str) -> None: + # Note: We create a Marker object without calling this constructor in + # packaging.requirements.Requirement. If any additional logic is + # added here, make sure to mirror/adapt Requirement. try: - self._markers = _coerce_parse_result(MARKER.parseString(marker)) - except ParseException as e: - raise InvalidMarker( - f"Invalid marker: {marker!r}, parse error at " - f"{marker[e.loc : e.loc + 8]!r}" - ) + self._markers = _normalize_extra_values(_parse_marker(marker)) + # The attribute `_markers` can be described in terms of a recursive type: + # MarkerList = List[Union[Tuple[Node, ...], str, MarkerList]] + # + # For example, the following expression: + # python_version > "3.6" or (python_version == "3.6" and os_name == "unix") + # + # is parsed into: + # [ + # (<Variable('python_version')>, <Op('>')>, <Value('3.6')>), + # 'and', + # [ + # (<Variable('python_version')>, <Op('==')>, <Value('3.6')>), + # 'or', + # (<Variable('os_name')>, <Op('==')>, <Value('unix')>) + # ] + # ] + except ParserSyntaxError as e: + raise InvalidMarker(str(e)) from e def __str__(self) -> str: return _format_marker(self._markers) @@ -288,7 +289,16 @@ class Marker: def __repr__(self) -> str: return f"<Marker('{self}')>" - def evaluate(self, environment: Optional[Dict[str, str]] = None) -> bool: + def __hash__(self) -> int: + return hash((self.__class__.__name__, str(self))) + + def __eq__(self, other: Any) -> bool: + if not isinstance(other, Marker): + return NotImplemented + + return str(self) == str(other) + + def evaluate(self, environment: dict[str, str] | None = None) -> bool: """Evaluate a marker. Return the boolean from evaluating the given marker against the @@ -297,8 +307,25 @@ class Marker: The environment is determined from the current Python process. """ - current_environment = default_environment() + current_environment = cast("dict[str, str]", default_environment()) + current_environment["extra"] = "" if environment is not None: current_environment.update(environment) + # The API used to allow setting extra to None. We need to handle this + # case for backwards compatibility. + if current_environment["extra"] is None: + current_environment["extra"] = "" - return _evaluate_markers(self._markers, current_environment) + return _evaluate_markers( + self._markers, _repair_python_full_version(current_environment) + ) + + +def _repair_python_full_version(env: dict[str, str]) -> dict[str, str]: + """ + Work around platform.python_version() returning something that is not PEP 440 + compliant for non-tagged Python builds. + """ + if env["python_full_version"].endswith("+"): + env["python_full_version"] += "local" + return env diff --git a/contrib/python/packaging/py3/packaging/metadata.py b/contrib/python/packaging/py3/packaging/metadata.py new file mode 100644 index 00000000000..721f411cfc4 --- /dev/null +++ b/contrib/python/packaging/py3/packaging/metadata.py @@ -0,0 +1,863 @@ +from __future__ import annotations + +import email.feedparser +import email.header +import email.message +import email.parser +import email.policy +import pathlib +import sys +import typing +from typing import ( + Any, + Callable, + Generic, + Literal, + TypedDict, + cast, +) + +from . import licenses, requirements, specifiers, utils +from . import version as version_module +from .licenses import NormalizedLicenseExpression + +T = typing.TypeVar("T") + + +if sys.version_info >= (3, 11): # pragma: no cover + ExceptionGroup = ExceptionGroup +else: # pragma: no cover + + class ExceptionGroup(Exception): + """A minimal implementation of :external:exc:`ExceptionGroup` from Python 3.11. + + If :external:exc:`ExceptionGroup` is already defined by Python itself, + that version is used instead. + """ + + message: str + exceptions: list[Exception] + + def __init__(self, message: str, exceptions: list[Exception]) -> None: + self.message = message + self.exceptions = exceptions + + def __repr__(self) -> str: + return f"{self.__class__.__name__}({self.message!r}, {self.exceptions!r})" + + +class InvalidMetadata(ValueError): + """A metadata field contains invalid data.""" + + field: str + """The name of the field that contains invalid data.""" + + def __init__(self, field: str, message: str) -> None: + self.field = field + super().__init__(message) + + +# The RawMetadata class attempts to make as few assumptions about the underlying +# serialization formats as possible. The idea is that as long as a serialization +# formats offer some very basic primitives in *some* way then we can support +# serializing to and from that format. +class RawMetadata(TypedDict, total=False): + """A dictionary of raw core metadata. + + Each field in core metadata maps to a key of this dictionary (when data is + provided). The key is lower-case and underscores are used instead of dashes + compared to the equivalent core metadata field. Any core metadata field that + can be specified multiple times or can hold multiple values in a single + field have a key with a plural name. See :class:`Metadata` whose attributes + match the keys of this dictionary. + + Core metadata fields that can be specified multiple times are stored as a + list or dict depending on which is appropriate for the field. Any fields + which hold multiple values in a single field are stored as a list. + + """ + + # Metadata 1.0 - PEP 241 + metadata_version: str + name: str + version: str + platforms: list[str] + summary: str + description: str + keywords: list[str] + home_page: str + author: str + author_email: str + license: str + + # Metadata 1.1 - PEP 314 + supported_platforms: list[str] + download_url: str + classifiers: list[str] + requires: list[str] + provides: list[str] + obsoletes: list[str] + + # Metadata 1.2 - PEP 345 + maintainer: str + maintainer_email: str + requires_dist: list[str] + provides_dist: list[str] + obsoletes_dist: list[str] + requires_python: str + requires_external: list[str] + project_urls: dict[str, str] + + # Metadata 2.0 + # PEP 426 attempted to completely revamp the metadata format + # but got stuck without ever being able to build consensus on + # it and ultimately ended up withdrawn. + # + # However, a number of tools had started emitting METADATA with + # `2.0` Metadata-Version, so for historical reasons, this version + # was skipped. + + # Metadata 2.1 - PEP 566 + description_content_type: str + provides_extra: list[str] + + # Metadata 2.2 - PEP 643 + dynamic: list[str] + + # Metadata 2.3 - PEP 685 + # No new fields were added in PEP 685, just some edge case were + # tightened up to provide better interoptability. + + # Metadata 2.4 - PEP 639 + license_expression: str + license_files: list[str] + + +_STRING_FIELDS = { + "author", + "author_email", + "description", + "description_content_type", + "download_url", + "home_page", + "license", + "license_expression", + "maintainer", + "maintainer_email", + "metadata_version", + "name", + "requires_python", + "summary", + "version", +} + +_LIST_FIELDS = { + "classifiers", + "dynamic", + "license_files", + "obsoletes", + "obsoletes_dist", + "platforms", + "provides", + "provides_dist", + "provides_extra", + "requires", + "requires_dist", + "requires_external", + "supported_platforms", +} + +_DICT_FIELDS = { + "project_urls", +} + + +def _parse_keywords(data: str) -> list[str]: + """Split a string of comma-separated keywords into a list of keywords.""" + return [k.strip() for k in data.split(",")] + + +def _parse_project_urls(data: list[str]) -> dict[str, str]: + """Parse a list of label/URL string pairings separated by a comma.""" + urls = {} + for pair in data: + # Our logic is slightly tricky here as we want to try and do + # *something* reasonable with malformed data. + # + # The main thing that we have to worry about, is data that does + # not have a ',' at all to split the label from the Value. There + # isn't a singular right answer here, and we will fail validation + # later on (if the caller is validating) so it doesn't *really* + # matter, but since the missing value has to be an empty str + # and our return value is dict[str, str], if we let the key + # be the missing value, then they'd have multiple '' values that + # overwrite each other in a accumulating dict. + # + # The other potentional issue is that it's possible to have the + # same label multiple times in the metadata, with no solid "right" + # answer with what to do in that case. As such, we'll do the only + # thing we can, which is treat the field as unparseable and add it + # to our list of unparsed fields. + parts = [p.strip() for p in pair.split(",", 1)] + parts.extend([""] * (max(0, 2 - len(parts)))) # Ensure 2 items + + # TODO: The spec doesn't say anything about if the keys should be + # considered case sensitive or not... logically they should + # be case-preserving and case-insensitive, but doing that + # would open up more cases where we might have duplicate + # entries. + label, url = parts + if label in urls: + # The label already exists in our set of urls, so this field + # is unparseable, and we can just add the whole thing to our + # unparseable data and stop processing it. + raise KeyError("duplicate labels in project urls") + urls[label] = url + + return urls + + +def _get_payload(msg: email.message.Message, source: bytes | str) -> str: + """Get the body of the message.""" + # If our source is a str, then our caller has managed encodings for us, + # and we don't need to deal with it. + if isinstance(source, str): + payload = msg.get_payload() + assert isinstance(payload, str) + return payload + # If our source is a bytes, then we're managing the encoding and we need + # to deal with it. + else: + bpayload = msg.get_payload(decode=True) + assert isinstance(bpayload, bytes) + try: + return bpayload.decode("utf8", "strict") + except UnicodeDecodeError as exc: + raise ValueError("payload in an invalid encoding") from exc + + +# The various parse_FORMAT functions here are intended to be as lenient as +# possible in their parsing, while still returning a correctly typed +# RawMetadata. +# +# To aid in this, we also generally want to do as little touching of the +# data as possible, except where there are possibly some historic holdovers +# that make valid data awkward to work with. +# +# While this is a lower level, intermediate format than our ``Metadata`` +# class, some light touch ups can make a massive difference in usability. + +# Map METADATA fields to RawMetadata. +_EMAIL_TO_RAW_MAPPING = { + "author": "author", + "author-email": "author_email", + "classifier": "classifiers", + "description": "description", + "description-content-type": "description_content_type", + "download-url": "download_url", + "dynamic": "dynamic", + "home-page": "home_page", + "keywords": "keywords", + "license": "license", + "license-expression": "license_expression", + "license-file": "license_files", + "maintainer": "maintainer", + "maintainer-email": "maintainer_email", + "metadata-version": "metadata_version", + "name": "name", + "obsoletes": "obsoletes", + "obsoletes-dist": "obsoletes_dist", + "platform": "platforms", + "project-url": "project_urls", + "provides": "provides", + "provides-dist": "provides_dist", + "provides-extra": "provides_extra", + "requires": "requires", + "requires-dist": "requires_dist", + "requires-external": "requires_external", + "requires-python": "requires_python", + "summary": "summary", + "supported-platform": "supported_platforms", + "version": "version", +} +_RAW_TO_EMAIL_MAPPING = {raw: email for email, raw in _EMAIL_TO_RAW_MAPPING.items()} + + +def parse_email(data: bytes | str) -> tuple[RawMetadata, dict[str, list[str]]]: + """Parse a distribution's metadata stored as email headers (e.g. from ``METADATA``). + + This function returns a two-item tuple of dicts. The first dict is of + recognized fields from the core metadata specification. Fields that can be + parsed and translated into Python's built-in types are converted + appropriately. All other fields are left as-is. Fields that are allowed to + appear multiple times are stored as lists. + + The second dict contains all other fields from the metadata. This includes + any unrecognized fields. It also includes any fields which are expected to + be parsed into a built-in type but were not formatted appropriately. Finally, + any fields that are expected to appear only once but are repeated are + included in this dict. + + """ + raw: dict[str, str | list[str] | dict[str, str]] = {} + unparsed: dict[str, list[str]] = {} + + if isinstance(data, str): + parsed = email.parser.Parser(policy=email.policy.compat32).parsestr(data) + else: + parsed = email.parser.BytesParser(policy=email.policy.compat32).parsebytes(data) + + # We have to wrap parsed.keys() in a set, because in the case of multiple + # values for a key (a list), the key will appear multiple times in the + # list of keys, but we're avoiding that by using get_all(). + for name in frozenset(parsed.keys()): + # Header names in RFC are case insensitive, so we'll normalize to all + # lower case to make comparisons easier. + name = name.lower() + + # We use get_all() here, even for fields that aren't multiple use, + # because otherwise someone could have e.g. two Name fields, and we + # would just silently ignore it rather than doing something about it. + headers = parsed.get_all(name) or [] + + # The way the email module works when parsing bytes is that it + # unconditionally decodes the bytes as ascii using the surrogateescape + # handler. When you pull that data back out (such as with get_all() ), + # it looks to see if the str has any surrogate escapes, and if it does + # it wraps it in a Header object instead of returning the string. + # + # As such, we'll look for those Header objects, and fix up the encoding. + value = [] + # Flag if we have run into any issues processing the headers, thus + # signalling that the data belongs in 'unparsed'. + valid_encoding = True + for h in headers: + # It's unclear if this can return more types than just a Header or + # a str, so we'll just assert here to make sure. + assert isinstance(h, (email.header.Header, str)) + + # If it's a header object, we need to do our little dance to get + # the real data out of it. In cases where there is invalid data + # we're going to end up with mojibake, but there's no obvious, good + # way around that without reimplementing parts of the Header object + # ourselves. + # + # That should be fine since, if mojibacked happens, this key is + # going into the unparsed dict anyways. + if isinstance(h, email.header.Header): + # The Header object stores it's data as chunks, and each chunk + # can be independently encoded, so we'll need to check each + # of them. + chunks: list[tuple[bytes, str | None]] = [] + for bin, encoding in email.header.decode_header(h): + try: + bin.decode("utf8", "strict") + except UnicodeDecodeError: + # Enable mojibake. + encoding = "latin1" + valid_encoding = False + else: + encoding = "utf8" + chunks.append((bin, encoding)) + + # Turn our chunks back into a Header object, then let that + # Header object do the right thing to turn them into a + # string for us. + value.append(str(email.header.make_header(chunks))) + # This is already a string, so just add it. + else: + value.append(h) + + # We've processed all of our values to get them into a list of str, + # but we may have mojibake data, in which case this is an unparsed + # field. + if not valid_encoding: + unparsed[name] = value + continue + + raw_name = _EMAIL_TO_RAW_MAPPING.get(name) + if raw_name is None: + # This is a bit of a weird situation, we've encountered a key that + # we don't know what it means, so we don't know whether it's meant + # to be a list or not. + # + # Since we can't really tell one way or another, we'll just leave it + # as a list, even though it may be a single item list, because that's + # what makes the most sense for email headers. + unparsed[name] = value + continue + + # If this is one of our string fields, then we'll check to see if our + # value is a list of a single item. If it is then we'll assume that + # it was emitted as a single string, and unwrap the str from inside + # the list. + # + # If it's any other kind of data, then we haven't the faintest clue + # what we should parse it as, and we have to just add it to our list + # of unparsed stuff. + if raw_name in _STRING_FIELDS and len(value) == 1: + raw[raw_name] = value[0] + # If this is one of our list of string fields, then we can just assign + # the value, since email *only* has strings, and our get_all() call + # above ensures that this is a list. + elif raw_name in _LIST_FIELDS: + raw[raw_name] = value + # Special Case: Keywords + # The keywords field is implemented in the metadata spec as a str, + # but it conceptually is a list of strings, and is serialized using + # ", ".join(keywords), so we'll do some light data massaging to turn + # this into what it logically is. + elif raw_name == "keywords" and len(value) == 1: + raw[raw_name] = _parse_keywords(value[0]) + # Special Case: Project-URL + # The project urls is implemented in the metadata spec as a list of + # specially-formatted strings that represent a key and a value, which + # is fundamentally a mapping, however the email format doesn't support + # mappings in a sane way, so it was crammed into a list of strings + # instead. + # + # We will do a little light data massaging to turn this into a map as + # it logically should be. + elif raw_name == "project_urls": + try: + raw[raw_name] = _parse_project_urls(value) + except KeyError: + unparsed[name] = value + # Nothing that we've done has managed to parse this, so it'll just + # throw it in our unparseable data and move on. + else: + unparsed[name] = value + + # We need to support getting the Description from the message payload in + # addition to getting it from the the headers. This does mean, though, there + # is the possibility of it being set both ways, in which case we put both + # in 'unparsed' since we don't know which is right. + try: + payload = _get_payload(parsed, data) + except ValueError: + unparsed.setdefault("description", []).append( + parsed.get_payload(decode=isinstance(data, bytes)) # type: ignore[call-overload] + ) + else: + if payload: + # Check to see if we've already got a description, if so then both + # it, and this body move to unparseable. + if "description" in raw: + description_header = cast(str, raw.pop("description")) + unparsed.setdefault("description", []).extend( + [description_header, payload] + ) + elif "description" in unparsed: + unparsed["description"].append(payload) + else: + raw["description"] = payload + + # We need to cast our `raw` to a metadata, because a TypedDict only support + # literal key names, but we're computing our key names on purpose, but the + # way this function is implemented, our `TypedDict` can only have valid key + # names. + return cast(RawMetadata, raw), unparsed + + +_NOT_FOUND = object() + + +# Keep the two values in sync. +_VALID_METADATA_VERSIONS = ["1.0", "1.1", "1.2", "2.1", "2.2", "2.3", "2.4"] +_MetadataVersion = Literal["1.0", "1.1", "1.2", "2.1", "2.2", "2.3", "2.4"] + +_REQUIRED_ATTRS = frozenset(["metadata_version", "name", "version"]) + + +class _Validator(Generic[T]): + """Validate a metadata field. + + All _process_*() methods correspond to a core metadata field. The method is + called with the field's raw value. If the raw value is valid it is returned + in its "enriched" form (e.g. ``version.Version`` for the ``Version`` field). + If the raw value is invalid, :exc:`InvalidMetadata` is raised (with a cause + as appropriate). + """ + + name: str + raw_name: str + added: _MetadataVersion + + def __init__( + self, + *, + added: _MetadataVersion = "1.0", + ) -> None: + self.added = added + + def __set_name__(self, _owner: Metadata, name: str) -> None: + self.name = name + self.raw_name = _RAW_TO_EMAIL_MAPPING[name] + + def __get__(self, instance: Metadata, _owner: type[Metadata]) -> T: + # With Python 3.8, the caching can be replaced with functools.cached_property(). + # No need to check the cache as attribute lookup will resolve into the + # instance's __dict__ before __get__ is called. + cache = instance.__dict__ + value = instance._raw.get(self.name) + + # To make the _process_* methods easier, we'll check if the value is None + # and if this field is NOT a required attribute, and if both of those + # things are true, we'll skip the the converter. This will mean that the + # converters never have to deal with the None union. + if self.name in _REQUIRED_ATTRS or value is not None: + try: + converter: Callable[[Any], T] = getattr(self, f"_process_{self.name}") + except AttributeError: + pass + else: + value = converter(value) + + cache[self.name] = value + try: + del instance._raw[self.name] # type: ignore[misc] + except KeyError: + pass + + return cast(T, value) + + def _invalid_metadata( + self, msg: str, cause: Exception | None = None + ) -> InvalidMetadata: + exc = InvalidMetadata( + self.raw_name, msg.format_map({"field": repr(self.raw_name)}) + ) + exc.__cause__ = cause + return exc + + def _process_metadata_version(self, value: str) -> _MetadataVersion: + # Implicitly makes Metadata-Version required. + if value not in _VALID_METADATA_VERSIONS: + raise self._invalid_metadata(f"{value!r} is not a valid metadata version") + return cast(_MetadataVersion, value) + + def _process_name(self, value: str) -> str: + if not value: + raise self._invalid_metadata("{field} is a required field") + # Validate the name as a side-effect. + try: + utils.canonicalize_name(value, validate=True) + except utils.InvalidName as exc: + raise self._invalid_metadata( + f"{value!r} is invalid for {{field}}", cause=exc + ) from exc + else: + return value + + def _process_version(self, value: str) -> version_module.Version: + if not value: + raise self._invalid_metadata("{field} is a required field") + try: + return version_module.parse(value) + except version_module.InvalidVersion as exc: + raise self._invalid_metadata( + f"{value!r} is invalid for {{field}}", cause=exc + ) from exc + + def _process_summary(self, value: str) -> str: + """Check the field contains no newlines.""" + if "\n" in value: + raise self._invalid_metadata("{field} must be a single line") + return value + + def _process_description_content_type(self, value: str) -> str: + content_types = {"text/plain", "text/x-rst", "text/markdown"} + message = email.message.EmailMessage() + message["content-type"] = value + + content_type, parameters = ( + # Defaults to `text/plain` if parsing failed. + message.get_content_type().lower(), + message["content-type"].params, + ) + # Check if content-type is valid or defaulted to `text/plain` and thus was + # not parseable. + if content_type not in content_types or content_type not in value.lower(): + raise self._invalid_metadata( + f"{{field}} must be one of {list(content_types)}, not {value!r}" + ) + + charset = parameters.get("charset", "UTF-8") + if charset != "UTF-8": + raise self._invalid_metadata( + f"{{field}} can only specify the UTF-8 charset, not {list(charset)}" + ) + + markdown_variants = {"GFM", "CommonMark"} + variant = parameters.get("variant", "GFM") # Use an acceptable default. + if content_type == "text/markdown" and variant not in markdown_variants: + raise self._invalid_metadata( + f"valid Markdown variants for {{field}} are {list(markdown_variants)}, " + f"not {variant!r}", + ) + return value + + def _process_dynamic(self, value: list[str]) -> list[str]: + for dynamic_field in map(str.lower, value): + if dynamic_field in {"name", "version", "metadata-version"}: + raise self._invalid_metadata( + f"{dynamic_field!r} is not allowed as a dynamic field" + ) + elif dynamic_field not in _EMAIL_TO_RAW_MAPPING: + raise self._invalid_metadata( + f"{dynamic_field!r} is not a valid dynamic field" + ) + return list(map(str.lower, value)) + + def _process_provides_extra( + self, + value: list[str], + ) -> list[utils.NormalizedName]: + normalized_names = [] + try: + for name in value: + normalized_names.append(utils.canonicalize_name(name, validate=True)) + except utils.InvalidName as exc: + raise self._invalid_metadata( + f"{name!r} is invalid for {{field}}", cause=exc + ) from exc + else: + return normalized_names + + def _process_requires_python(self, value: str) -> specifiers.SpecifierSet: + try: + return specifiers.SpecifierSet(value) + except specifiers.InvalidSpecifier as exc: + raise self._invalid_metadata( + f"{value!r} is invalid for {{field}}", cause=exc + ) from exc + + def _process_requires_dist( + self, + value: list[str], + ) -> list[requirements.Requirement]: + reqs = [] + try: + for req in value: + reqs.append(requirements.Requirement(req)) + except requirements.InvalidRequirement as exc: + raise self._invalid_metadata( + f"{req!r} is invalid for {{field}}", cause=exc + ) from exc + else: + return reqs + + def _process_license_expression( + self, value: str + ) -> NormalizedLicenseExpression | None: + try: + return licenses.canonicalize_license_expression(value) + except ValueError as exc: + raise self._invalid_metadata( + f"{value!r} is invalid for {{field}}", cause=exc + ) from exc + + def _process_license_files(self, value: list[str]) -> list[str]: + paths = [] + for path in value: + if ".." in path: + raise self._invalid_metadata( + f"{path!r} is invalid for {{field}}, " + "parent directory indicators are not allowed" + ) + if "*" in path: + raise self._invalid_metadata( + f"{path!r} is invalid for {{field}}, paths must be resolved" + ) + if ( + pathlib.PurePosixPath(path).is_absolute() + or pathlib.PureWindowsPath(path).is_absolute() + ): + raise self._invalid_metadata( + f"{path!r} is invalid for {{field}}, paths must be relative" + ) + if pathlib.PureWindowsPath(path).as_posix() != path: + raise self._invalid_metadata( + f"{path!r} is invalid for {{field}}, " + "paths must use '/' delimiter" + ) + paths.append(path) + return paths + + +class Metadata: + """Representation of distribution metadata. + + Compared to :class:`RawMetadata`, this class provides objects representing + metadata fields instead of only using built-in types. Any invalid metadata + will cause :exc:`InvalidMetadata` to be raised (with a + :py:attr:`~BaseException.__cause__` attribute as appropriate). + """ + + _raw: RawMetadata + + @classmethod + def from_raw(cls, data: RawMetadata, *, validate: bool = True) -> Metadata: + """Create an instance from :class:`RawMetadata`. + + If *validate* is true, all metadata will be validated. All exceptions + related to validation will be gathered and raised as an :class:`ExceptionGroup`. + """ + ins = cls() + ins._raw = data.copy() # Mutations occur due to caching enriched values. + + if validate: + exceptions: list[Exception] = [] + try: + metadata_version = ins.metadata_version + metadata_age = _VALID_METADATA_VERSIONS.index(metadata_version) + except InvalidMetadata as metadata_version_exc: + exceptions.append(metadata_version_exc) + metadata_version = None + + # Make sure to check for the fields that are present, the required + # fields (so their absence can be reported). + fields_to_check = frozenset(ins._raw) | _REQUIRED_ATTRS + # Remove fields that have already been checked. + fields_to_check -= {"metadata_version"} + + for key in fields_to_check: + try: + if metadata_version: + # Can't use getattr() as that triggers descriptor protocol which + # will fail due to no value for the instance argument. + try: + field_metadata_version = cls.__dict__[key].added + except KeyError: + exc = InvalidMetadata(key, f"unrecognized field: {key!r}") + exceptions.append(exc) + continue + field_age = _VALID_METADATA_VERSIONS.index( + field_metadata_version + ) + if field_age > metadata_age: + field = _RAW_TO_EMAIL_MAPPING[key] + exc = InvalidMetadata( + field, + f"{field} introduced in metadata version " + f"{field_metadata_version}, not {metadata_version}", + ) + exceptions.append(exc) + continue + getattr(ins, key) + except InvalidMetadata as exc: + exceptions.append(exc) + + if exceptions: + raise ExceptionGroup("invalid metadata", exceptions) + + return ins + + @classmethod + def from_email(cls, data: bytes | str, *, validate: bool = True) -> Metadata: + """Parse metadata from email headers. + + If *validate* is true, the metadata will be validated. All exceptions + related to validation will be gathered and raised as an :class:`ExceptionGroup`. + """ + raw, unparsed = parse_email(data) + + if validate: + exceptions: list[Exception] = [] + for unparsed_key in unparsed: + if unparsed_key in _EMAIL_TO_RAW_MAPPING: + message = f"{unparsed_key!r} has invalid data" + else: + message = f"unrecognized field: {unparsed_key!r}" + exceptions.append(InvalidMetadata(unparsed_key, message)) + + if exceptions: + raise ExceptionGroup("unparsed", exceptions) + + try: + return cls.from_raw(raw, validate=validate) + except ExceptionGroup as exc_group: + raise ExceptionGroup( + "invalid or unparsed metadata", exc_group.exceptions + ) from None + + metadata_version: _Validator[_MetadataVersion] = _Validator() + """:external:ref:`core-metadata-metadata-version` + (required; validated to be a valid metadata version)""" + # `name` is not normalized/typed to NormalizedName so as to provide access to + # the original/raw name. + name: _Validator[str] = _Validator() + """:external:ref:`core-metadata-name` + (required; validated using :func:`~packaging.utils.canonicalize_name` and its + *validate* parameter)""" + version: _Validator[version_module.Version] = _Validator() + """:external:ref:`core-metadata-version` (required)""" + dynamic: _Validator[list[str] | None] = _Validator( + added="2.2", + ) + """:external:ref:`core-metadata-dynamic` + (validated against core metadata field names and lowercased)""" + platforms: _Validator[list[str] | None] = _Validator() + """:external:ref:`core-metadata-platform`""" + supported_platforms: _Validator[list[str] | None] = _Validator(added="1.1") + """:external:ref:`core-metadata-supported-platform`""" + summary: _Validator[str | None] = _Validator() + """:external:ref:`core-metadata-summary` (validated to contain no newlines)""" + description: _Validator[str | None] = _Validator() # TODO 2.1: can be in body + """:external:ref:`core-metadata-description`""" + description_content_type: _Validator[str | None] = _Validator(added="2.1") + """:external:ref:`core-metadata-description-content-type` (validated)""" + keywords: _Validator[list[str] | None] = _Validator() + """:external:ref:`core-metadata-keywords`""" + home_page: _Validator[str | None] = _Validator() + """:external:ref:`core-metadata-home-page`""" + download_url: _Validator[str | None] = _Validator(added="1.1") + """:external:ref:`core-metadata-download-url`""" + author: _Validator[str | None] = _Validator() + """:external:ref:`core-metadata-author`""" + author_email: _Validator[str | None] = _Validator() + """:external:ref:`core-metadata-author-email`""" + maintainer: _Validator[str | None] = _Validator(added="1.2") + """:external:ref:`core-metadata-maintainer`""" + maintainer_email: _Validator[str | None] = _Validator(added="1.2") + """:external:ref:`core-metadata-maintainer-email`""" + license: _Validator[str | None] = _Validator() + """:external:ref:`core-metadata-license`""" + license_expression: _Validator[NormalizedLicenseExpression | None] = _Validator( + added="2.4" + ) + """:external:ref:`core-metadata-license-expression`""" + license_files: _Validator[list[str] | None] = _Validator(added="2.4") + """:external:ref:`core-metadata-license-file`""" + classifiers: _Validator[list[str] | None] = _Validator(added="1.1") + """:external:ref:`core-metadata-classifier`""" + requires_dist: _Validator[list[requirements.Requirement] | None] = _Validator( + added="1.2" + ) + """:external:ref:`core-metadata-requires-dist`""" + requires_python: _Validator[specifiers.SpecifierSet | None] = _Validator( + added="1.2" + ) + """:external:ref:`core-metadata-requires-python`""" + # Because `Requires-External` allows for non-PEP 440 version specifiers, we + # don't do any processing on the values. + requires_external: _Validator[list[str] | None] = _Validator(added="1.2") + """:external:ref:`core-metadata-requires-external`""" + project_urls: _Validator[dict[str, str] | None] = _Validator(added="1.2") + """:external:ref:`core-metadata-project-url`""" + # PEP 685 lets us raise an error if an extra doesn't pass `Name` validation + # regardless of metadata version. + provides_extra: _Validator[list[utils.NormalizedName] | None] = _Validator( + added="2.1", + ) + """:external:ref:`core-metadata-provides-extra`""" + provides_dist: _Validator[list[str] | None] = _Validator(added="1.2") + """:external:ref:`core-metadata-provides-dist`""" + obsoletes_dist: _Validator[list[str] | None] = _Validator(added="1.2") + """:external:ref:`core-metadata-obsoletes-dist`""" + requires: _Validator[list[str] | None] = _Validator(added="1.1") + """``Requires`` (deprecated)""" + provides: _Validator[list[str] | None] = _Validator(added="1.1") + """``Provides`` (deprecated)""" + obsoletes: _Validator[list[str] | None] = _Validator(added="1.1") + """``Obsoletes`` (deprecated)""" diff --git a/contrib/python/packaging/py3/packaging/requirements.py b/contrib/python/packaging/py3/packaging/requirements.py index 53f9a3aa42b..4e068c9567d 100644 --- a/contrib/python/packaging/py3/packaging/requirements.py +++ b/contrib/python/packaging/py3/packaging/requirements.py @@ -1,27 +1,15 @@ # This file is dual licensed under the terms of the Apache License, Version # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. +from __future__ import annotations -import re -import string -import urllib.parse -from typing import List, Optional as TOptional, Set +from typing import Any, Iterator -from pyparsing import ( # noqa - Combine, - Literal as L, - Optional, - ParseException, - Regex, - Word, - ZeroOrMore, - originalTextFor, - stringEnd, - stringStart, -) - -from .markers import MARKER_EXPR, Marker -from .specifiers import LegacySpecifier, Specifier, SpecifierSet +from ._parser import parse_requirement as _parse_requirement +from ._tokenizer import ParserSyntaxError +from .markers import Marker, _normalize_extra_values +from .specifiers import SpecifierSet +from .utils import canonicalize_name class InvalidRequirement(ValueError): @@ -30,60 +18,6 @@ class InvalidRequirement(ValueError): """ -ALPHANUM = Word(string.ascii_letters + string.digits) - -LBRACKET = L("[").suppress() -RBRACKET = L("]").suppress() -LPAREN = L("(").suppress() -RPAREN = L(")").suppress() -COMMA = L(",").suppress() -SEMICOLON = L(";").suppress() -AT = L("@").suppress() - -PUNCTUATION = Word("-_.") -IDENTIFIER_END = ALPHANUM | (ZeroOrMore(PUNCTUATION) + ALPHANUM) -IDENTIFIER = Combine(ALPHANUM + ZeroOrMore(IDENTIFIER_END)) - -NAME = IDENTIFIER("name") -EXTRA = IDENTIFIER - -URI = Regex(r"[^ ]+")("url") -URL = AT + URI - -EXTRAS_LIST = EXTRA + ZeroOrMore(COMMA + EXTRA) -EXTRAS = (LBRACKET + Optional(EXTRAS_LIST) + RBRACKET)("extras") - -VERSION_PEP440 = Regex(Specifier._regex_str, re.VERBOSE | re.IGNORECASE) -VERSION_LEGACY = Regex(LegacySpecifier._regex_str, re.VERBOSE | re.IGNORECASE) - -VERSION_ONE = VERSION_PEP440 ^ VERSION_LEGACY -VERSION_MANY = Combine( - VERSION_ONE + ZeroOrMore(COMMA + VERSION_ONE), joinString=",", adjacent=False -)("_raw_spec") -_VERSION_SPEC = Optional((LPAREN + VERSION_MANY + RPAREN) | VERSION_MANY) -_VERSION_SPEC.setParseAction(lambda s, l, t: t._raw_spec or "") - -VERSION_SPEC = originalTextFor(_VERSION_SPEC)("specifier") -VERSION_SPEC.setParseAction(lambda s, l, t: t[1]) - -MARKER_EXPR = originalTextFor(MARKER_EXPR())("marker") -MARKER_EXPR.setParseAction( - lambda s, l, t: Marker(s[t._original_start : t._original_end]) -) -MARKER_SEPARATOR = SEMICOLON -MARKER = MARKER_SEPARATOR + MARKER_EXPR - -VERSION_AND_MARKER = VERSION_SPEC + Optional(MARKER) -URL_AND_MARKER = URL + Optional(MARKER) - -NAMED_REQUIREMENT = NAME + Optional(EXTRAS) + (URL_AND_MARKER | VERSION_AND_MARKER) - -REQUIREMENT = stringStart + NAMED_REQUIREMENT + stringEnd -# pyparsing isn't thread safe during initialization, so we do it eagerly, see -# issue #104 -REQUIREMENT.parseString("x[]") - - class Requirement: """Parse a requirement. @@ -99,48 +33,59 @@ class Requirement: def __init__(self, requirement_string: str) -> None: try: - req = REQUIREMENT.parseString(requirement_string) - except ParseException as e: - raise InvalidRequirement( - f'Parse error at "{ requirement_string[e.loc : e.loc + 8]!r}": {e.msg}' - ) - - self.name: str = req.name - if req.url: - parsed_url = urllib.parse.urlparse(req.url) - if parsed_url.scheme == "file": - if urllib.parse.urlunparse(parsed_url) != req.url: - raise InvalidRequirement("Invalid URL given") - elif not (parsed_url.scheme and parsed_url.netloc) or ( - not parsed_url.scheme and not parsed_url.netloc - ): - raise InvalidRequirement(f"Invalid URL: {req.url}") - self.url: TOptional[str] = req.url - else: - self.url = None - self.extras: Set[str] = set(req.extras.asList() if req.extras else []) - self.specifier: SpecifierSet = SpecifierSet(req.specifier) - self.marker: TOptional[Marker] = req.marker if req.marker else None - - def __str__(self) -> str: - parts: List[str] = [self.name] + parsed = _parse_requirement(requirement_string) + except ParserSyntaxError as e: + raise InvalidRequirement(str(e)) from e + + self.name: str = parsed.name + self.url: str | None = parsed.url or None + self.extras: set[str] = set(parsed.extras or []) + self.specifier: SpecifierSet = SpecifierSet(parsed.specifier) + self.marker: Marker | None = None + if parsed.marker is not None: + self.marker = Marker.__new__(Marker) + self.marker._markers = _normalize_extra_values(parsed.marker) + + def _iter_parts(self, name: str) -> Iterator[str]: + yield name if self.extras: formatted_extras = ",".join(sorted(self.extras)) - parts.append(f"[{formatted_extras}]") + yield f"[{formatted_extras}]" if self.specifier: - parts.append(str(self.specifier)) + yield str(self.specifier) if self.url: - parts.append(f"@ {self.url}") + yield f"@ {self.url}" if self.marker: - parts.append(" ") + yield " " if self.marker: - parts.append(f"; {self.marker}") + yield f"; {self.marker}" - return "".join(parts) + def __str__(self) -> str: + return "".join(self._iter_parts(self.name)) def __repr__(self) -> str: return f"<Requirement('{self}')>" + + def __hash__(self) -> int: + return hash( + ( + self.__class__.__name__, + *self._iter_parts(canonicalize_name(self.name)), + ) + ) + + def __eq__(self, other: Any) -> bool: + if not isinstance(other, Requirement): + return NotImplemented + + return ( + canonicalize_name(self.name) == canonicalize_name(other.name) + and self.extras == other.extras + and self.specifier == other.specifier + and self.url == other.url + and self.marker == other.marker + ) diff --git a/contrib/python/packaging/py3/packaging/specifiers.py b/contrib/python/packaging/py3/packaging/specifiers.py index 0e218a6f9f7..b30926af8bf 100644 --- a/contrib/python/packaging/py3/packaging/specifiers.py +++ b/contrib/python/packaging/py3/packaging/specifiers.py @@ -1,38 +1,43 @@ # This file is dual licensed under the terms of the Apache License, Version # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. +""" +.. testsetup:: + + from packaging.specifiers import Specifier, SpecifierSet, InvalidSpecifier + from packaging.version import Version +""" + +from __future__ import annotations import abc -import functools import itertools import re -import warnings -from typing import ( - Callable, - Dict, - Iterable, - Iterator, - List, - Optional, - Pattern, - Set, - Tuple, - TypeVar, - Union, -) +from typing import Callable, Iterable, Iterator, TypeVar, Union from .utils import canonicalize_version -from .version import LegacyVersion, Version, parse +from .version import Version + +UnparsedVersion = Union[Version, str] +UnparsedVersionVar = TypeVar("UnparsedVersionVar", bound=UnparsedVersion) +CallableOperator = Callable[[Version, str], bool] + -ParsedVersion = Union[Version, LegacyVersion] -UnparsedVersion = Union[Version, LegacyVersion, str] -VersionTypeVar = TypeVar("VersionTypeVar", bound=UnparsedVersion) -CallableOperator = Callable[[ParsedVersion, str], bool] +def _coerce_version(version: UnparsedVersion) -> Version: + if not isinstance(version, Version): + version = Version(version) + return version class InvalidSpecifier(ValueError): """ - An invalid specifier was found, users should refer to PEP 440. + Raised when attempting to create a :class:`Specifier` with a specifier + string that is invalid. + + >>> Specifier("lolwat") + Traceback (most recent call last): + ... + packaging.specifiers.InvalidSpecifier: Invalid specifier: 'lolwat' """ @@ -40,266 +45,71 @@ class BaseSpecifier(metaclass=abc.ABCMeta): @abc.abstractmethod def __str__(self) -> str: """ - Returns the str representation of this Specifier like object. This + Returns the str representation of this Specifier-like object. This should be representative of the Specifier itself. """ @abc.abstractmethod def __hash__(self) -> int: """ - Returns a hash value for this Specifier like object. + Returns a hash value for this Specifier-like object. """ @abc.abstractmethod def __eq__(self, other: object) -> bool: """ - Returns a boolean representing whether or not the two Specifier like + Returns a boolean representing whether or not the two Specifier-like objects are equal. - """ - @abc.abstractproperty - def prereleases(self) -> Optional[bool]: + :param other: The other object to check against. """ - Returns whether or not pre-releases as a whole are allowed by this - specifier. + + @property + @abc.abstractmethod + def prereleases(self) -> bool | None: + """Whether or not pre-releases as a whole are allowed. + + This can be set to either ``True`` or ``False`` to explicitly enable or disable + prereleases or it can be set to ``None`` (the default) to use default semantics. """ @prereleases.setter def prereleases(self, value: bool) -> None: - """ - Sets whether or not pre-releases as a whole are allowed by this - specifier. + """Setter for :attr:`prereleases`. + + :param value: The value to set. """ @abc.abstractmethod - def contains(self, item: str, prereleases: Optional[bool] = None) -> bool: + def contains(self, item: str, prereleases: bool | None = None) -> bool: """ Determines if the given item is contained within this specifier. """ @abc.abstractmethod def filter( - self, iterable: Iterable[VersionTypeVar], prereleases: Optional[bool] = None - ) -> Iterable[VersionTypeVar]: + self, iterable: Iterable[UnparsedVersionVar], prereleases: bool | None = None + ) -> Iterator[UnparsedVersionVar]: """ Takes an iterable of items and filters them so that only items which are contained within this specifier are allowed in it. """ -class _IndividualSpecifier(BaseSpecifier): - - _operators: Dict[str, str] = {} - _regex: Pattern[str] - - def __init__(self, spec: str = "", prereleases: Optional[bool] = None) -> None: - match = self._regex.search(spec) - if not match: - raise InvalidSpecifier(f"Invalid specifier: '{spec}'") - - self._spec: Tuple[str, str] = ( - match.group("operator").strip(), - match.group("version").strip(), - ) - - # Store whether or not this Specifier should accept prereleases - self._prereleases = prereleases - - def __repr__(self) -> str: - pre = ( - f", prereleases={self.prereleases!r}" - if self._prereleases is not None - else "" - ) - - return f"<{self.__class__.__name__}({str(self)!r}{pre})>" - - def __str__(self) -> str: - return "{}{}".format(*self._spec) - - @property - def _canonical_spec(self) -> Tuple[str, str]: - return self._spec[0], canonicalize_version(self._spec[1]) - - def __hash__(self) -> int: - return hash(self._canonical_spec) - - def __eq__(self, other: object) -> bool: - if isinstance(other, str): - try: - other = self.__class__(str(other)) - except InvalidSpecifier: - return NotImplemented - elif not isinstance(other, self.__class__): - return NotImplemented - - return self._canonical_spec == other._canonical_spec - - def _get_operator(self, op: str) -> CallableOperator: - operator_callable: CallableOperator = getattr( - self, f"_compare_{self._operators[op]}" - ) - return operator_callable - - def _coerce_version(self, version: UnparsedVersion) -> ParsedVersion: - if not isinstance(version, (LegacyVersion, Version)): - version = parse(version) - return version - - @property - def operator(self) -> str: - return self._spec[0] - - @property - def version(self) -> str: - return self._spec[1] - - @property - def prereleases(self) -> Optional[bool]: - return self._prereleases - - @prereleases.setter - def prereleases(self, value: bool) -> None: - self._prereleases = value - - def __contains__(self, item: str) -> bool: - return self.contains(item) - - def contains( - self, item: UnparsedVersion, prereleases: Optional[bool] = None - ) -> bool: - - # Determine if prereleases are to be allowed or not. - if prereleases is None: - prereleases = self.prereleases - - # Normalize item to a Version or LegacyVersion, this allows us to have - # a shortcut for ``"2.0" in Specifier(">=2") - normalized_item = self._coerce_version(item) - - # Determine if we should be supporting prereleases in this specifier - # or not, if we do not support prereleases than we can short circuit - # logic if this version is a prereleases. - if normalized_item.is_prerelease and not prereleases: - return False - - # Actually do the comparison to determine if this item is contained - # within this Specifier or not. - operator_callable: CallableOperator = self._get_operator(self.operator) - return operator_callable(normalized_item, self.version) - - def filter( - self, iterable: Iterable[VersionTypeVar], prereleases: Optional[bool] = None - ) -> Iterable[VersionTypeVar]: - - yielded = False - found_prereleases = [] - - kw = {"prereleases": prereleases if prereleases is not None else True} - - # Attempt to iterate over all the values in the iterable and if any of - # them match, yield them. - for version in iterable: - parsed_version = self._coerce_version(version) - - if self.contains(parsed_version, **kw): - # If our version is a prerelease, and we were not set to allow - # prereleases, then we'll store it for later in case nothing - # else matches this specifier. - if parsed_version.is_prerelease and not ( - prereleases or self.prereleases - ): - found_prereleases.append(version) - # Either this is not a prerelease, or we should have been - # accepting prereleases from the beginning. - else: - yielded = True - yield version - - # Now that we've iterated over everything, determine if we've yielded - # any values, and if we have not and we have any prereleases stored up - # then we will go ahead and yield the prereleases. - if not yielded and found_prereleases: - for version in found_prereleases: - yield version - - -class LegacySpecifier(_IndividualSpecifier): - - _regex_str = r""" - (?P<operator>(==|!=|<=|>=|<|>)) - \s* - (?P<version> - [^,;\s)]* # Since this is a "legacy" specifier, and the version - # string can be just about anything, we match everything - # except for whitespace, a semi-colon for marker support, - # a closing paren since versions can be enclosed in - # them, and a comma since it's a version separator. - ) - """ - - _regex = re.compile(r"^\s*" + _regex_str + r"\s*$", re.VERBOSE | re.IGNORECASE) - - _operators = { - "==": "equal", - "!=": "not_equal", - "<=": "less_than_equal", - ">=": "greater_than_equal", - "<": "less_than", - ">": "greater_than", - } - - def __init__(self, spec: str = "", prereleases: Optional[bool] = None) -> None: - super().__init__(spec, prereleases) - - warnings.warn( - "Creating a LegacyVersion has been deprecated and will be " - "removed in the next major release", - DeprecationWarning, - ) - - def _coerce_version(self, version: UnparsedVersion) -> LegacyVersion: - if not isinstance(version, LegacyVersion): - version = LegacyVersion(str(version)) - return version - - def _compare_equal(self, prospective: LegacyVersion, spec: str) -> bool: - return prospective == self._coerce_version(spec) - - def _compare_not_equal(self, prospective: LegacyVersion, spec: str) -> bool: - return prospective != self._coerce_version(spec) - - def _compare_less_than_equal(self, prospective: LegacyVersion, spec: str) -> bool: - return prospective <= self._coerce_version(spec) - - def _compare_greater_than_equal( - self, prospective: LegacyVersion, spec: str - ) -> bool: - return prospective >= self._coerce_version(spec) - - def _compare_less_than(self, prospective: LegacyVersion, spec: str) -> bool: - return prospective < self._coerce_version(spec) - - def _compare_greater_than(self, prospective: LegacyVersion, spec: str) -> bool: - return prospective > self._coerce_version(spec) +class Specifier(BaseSpecifier): + """This class abstracts handling of version specifiers. + .. tip:: -def _require_version_compare( - fn: Callable[["Specifier", ParsedVersion, str], bool] -) -> Callable[["Specifier", ParsedVersion, str], bool]: - @functools.wraps(fn) - def wrapped(self: "Specifier", prospective: ParsedVersion, spec: str) -> bool: - if not isinstance(prospective, Version): - return False - return fn(self, prospective, spec) - - return wrapped - - -class Specifier(_IndividualSpecifier): + It is generally not required to instantiate this manually. You should instead + prefer to work with :class:`SpecifierSet` instead, which can parse + comma-separated version specifiers (which is what package metadata contains). + """ - _regex_str = r""" + _operator_regex_str = r""" (?P<operator>(~=|==|!=|<=|>=|<|>|===)) + """ + _version_regex_str = r""" (?P<version> (?: # The identity operators allow for an escape hatch that will @@ -309,8 +119,10 @@ class Specifier(_IndividualSpecifier): # but included entirely as an escape hatch. (?<====) # Only match for the identity operator \s* - [^\s]* # We just match everything, except for whitespace - # since we are only testing for strict identity. + [^\s;)]* # The arbitrary version can be just about anything, + # we match everything except for whitespace, a + # semi-colon for marker support, and a closing paren + # since versions can be enclosed in them. ) | (?: @@ -323,23 +135,23 @@ class Specifier(_IndividualSpecifier): v? (?:[0-9]+!)? # epoch [0-9]+(?:\.[0-9]+)* # release - (?: # pre release - [-_\.]? - (a|b|c|rc|alpha|beta|pre|preview) - [-_\.]? - [0-9]* - )? - (?: # post release - (?:-[0-9]+)|(?:[-_\.]?(post|rev|r)[-_\.]?[0-9]*) - )? - # You cannot use a wild card and a dev or local version - # together so group them with a | and make them optional. + # You cannot use a wild card and a pre-release, post-release, a dev or + # local version together so group them with a | and make them optional. (?: + \.\* # Wild card syntax of .* + | + (?: # pre release + [-_\.]? + (alpha|beta|preview|pre|a|b|c|rc) + [-_\.]? + [0-9]* + )? + (?: # post release + (?:-[0-9]+)|(?:[-_\.]?(post|rev|r)[-_\.]?[0-9]*) + )? (?:[-_\.]?dev[-_\.]?[0-9]*)? # dev release (?:\+[a-z0-9]+(?:[-_\.][a-z0-9]+)*)? # local - | - \.\* # Wild card syntax of .* )? ) | @@ -354,7 +166,7 @@ class Specifier(_IndividualSpecifier): [0-9]+(?:\.[0-9]+)+ # release (We have a + instead of a *) (?: # pre release [-_\.]? - (a|b|c|rc|alpha|beta|pre|preview) + (alpha|beta|preview|pre|a|b|c|rc) [-_\.]? [0-9]* )? @@ -379,7 +191,7 @@ class Specifier(_IndividualSpecifier): [0-9]+(?:\.[0-9]+)* # release (?: # pre release [-_\.]? - (a|b|c|rc|alpha|beta|pre|preview) + (alpha|beta|preview|pre|a|b|c|rc) [-_\.]? [0-9]* )? @@ -391,7 +203,10 @@ class Specifier(_IndividualSpecifier): ) """ - _regex = re.compile(r"^\s*" + _regex_str + r"\s*$", re.VERBOSE | re.IGNORECASE) + _regex = re.compile( + r"^\s*" + _operator_regex_str + _version_regex_str + r"\s*$", + re.VERBOSE | re.IGNORECASE, + ) _operators = { "~=": "compatible", @@ -404,9 +219,153 @@ class Specifier(_IndividualSpecifier): "===": "arbitrary", } - @_require_version_compare - def _compare_compatible(self, prospective: ParsedVersion, spec: str) -> bool: + def __init__(self, spec: str = "", prereleases: bool | None = None) -> None: + """Initialize a Specifier instance. + + :param spec: + The string representation of a specifier which will be parsed and + normalized before use. + :param prereleases: + This tells the specifier if it should accept prerelease versions if + applicable or not. The default of ``None`` will autodetect it from the + given specifiers. + :raises InvalidSpecifier: + If the given specifier is invalid (i.e. bad syntax). + """ + match = self._regex.search(spec) + if not match: + raise InvalidSpecifier(f"Invalid specifier: {spec!r}") + + self._spec: tuple[str, str] = ( + match.group("operator").strip(), + match.group("version").strip(), + ) + + # Store whether or not this Specifier should accept prereleases + self._prereleases = prereleases + + # https://github.com/python/mypy/pull/13475#pullrequestreview-1079784515 + @property # type: ignore[override] + def prereleases(self) -> bool: + # If there is an explicit prereleases set for this, then we'll just + # blindly use that. + if self._prereleases is not None: + return self._prereleases + + # Look at all of our specifiers and determine if they are inclusive + # operators, and if they are if they are including an explicit + # prerelease. + operator, version = self._spec + if operator in ["==", ">=", "<=", "~=", "===", ">", "<"]: + # The == specifier can include a trailing .*, if it does we + # want to remove before parsing. + if operator == "==" and version.endswith(".*"): + version = version[:-2] + + # Parse the version, and if it is a pre-release than this + # specifier allows pre-releases. + if Version(version).is_prerelease: + return True + + return False + @prereleases.setter + def prereleases(self, value: bool) -> None: + self._prereleases = value + + @property + def operator(self) -> str: + """The operator of this specifier. + + >>> Specifier("==1.2.3").operator + '==' + """ + return self._spec[0] + + @property + def version(self) -> str: + """The version of this specifier. + + >>> Specifier("==1.2.3").version + '1.2.3' + """ + return self._spec[1] + + def __repr__(self) -> str: + """A representation of the Specifier that shows all internal state. + + >>> Specifier('>=1.0.0') + <Specifier('>=1.0.0')> + >>> Specifier('>=1.0.0', prereleases=False) + <Specifier('>=1.0.0', prereleases=False)> + >>> Specifier('>=1.0.0', prereleases=True) + <Specifier('>=1.0.0', prereleases=True)> + """ + pre = ( + f", prereleases={self.prereleases!r}" + if self._prereleases is not None + else "" + ) + + return f"<{self.__class__.__name__}({str(self)!r}{pre})>" + + def __str__(self) -> str: + """A string representation of the Specifier that can be round-tripped. + + >>> str(Specifier('>=1.0.0')) + '>=1.0.0' + >>> str(Specifier('>=1.0.0', prereleases=False)) + '>=1.0.0' + """ + return "{}{}".format(*self._spec) + + @property + def _canonical_spec(self) -> tuple[str, str]: + canonical_version = canonicalize_version( + self._spec[1], + strip_trailing_zero=(self._spec[0] != "~="), + ) + return self._spec[0], canonical_version + + def __hash__(self) -> int: + return hash(self._canonical_spec) + + def __eq__(self, other: object) -> bool: + """Whether or not the two Specifier-like objects are equal. + + :param other: The other object to check against. + + The value of :attr:`prereleases` is ignored. + + >>> Specifier("==1.2.3") == Specifier("== 1.2.3.0") + True + >>> (Specifier("==1.2.3", prereleases=False) == + ... Specifier("==1.2.3", prereleases=True)) + True + >>> Specifier("==1.2.3") == "==1.2.3" + True + >>> Specifier("==1.2.3") == Specifier("==1.2.4") + False + >>> Specifier("==1.2.3") == Specifier("~=1.2.3") + False + """ + if isinstance(other, str): + try: + other = self.__class__(str(other)) + except InvalidSpecifier: + return NotImplemented + elif not isinstance(other, self.__class__): + return NotImplemented + + return self._canonical_spec == other._canonical_spec + + def _get_operator(self, op: str) -> CallableOperator: + operator_callable: CallableOperator = getattr( + self, f"_compare_{self._operators[op]}" + ) + return operator_callable + + def _compare_compatible(self, prospective: Version, spec: str) -> bool: # Compatible releases have an equivalent combination of >= and ==. That # is that ~=2.2 is equivalent to >=2.2,==2.*. This allows us to # implement this in terms of the other specifiers instead of @@ -415,7 +374,7 @@ class Specifier(_IndividualSpecifier): # We want everything but the last item in the version, but we want to # ignore suffix segments. - prefix = ".".join( + prefix = _version_join( list(itertools.takewhile(_is_not_suffix, _version_split(spec)))[:-1] ) @@ -426,34 +385,34 @@ class Specifier(_IndividualSpecifier): prospective, prefix ) - @_require_version_compare - def _compare_equal(self, prospective: ParsedVersion, spec: str) -> bool: - + def _compare_equal(self, prospective: Version, spec: str) -> bool: # We need special logic to handle prefix matching if spec.endswith(".*"): # In the case of prefix matching we want to ignore local segment. - prospective = Version(prospective.public) - # Split the spec out by dots, and pretend that there is an implicit - # dot in between a release segment and a pre-release segment. - split_spec = _version_split(spec[:-2]) # Remove the trailing .* + normalized_prospective = canonicalize_version( + prospective.public, strip_trailing_zero=False + ) + # Get the normalized version string ignoring the trailing .* + normalized_spec = canonicalize_version(spec[:-2], strip_trailing_zero=False) + # Split the spec out by bangs and dots, and pretend that there is + # an implicit dot in between a release segment and a pre-release segment. + split_spec = _version_split(normalized_spec) - # Split the prospective version out by dots, and pretend that there - # is an implicit dot in between a release segment and a pre-release - # segment. - split_prospective = _version_split(str(prospective)) + # Split the prospective version out by bangs and dots, and pretend + # that there is an implicit dot in between a release segment and + # a pre-release segment. + split_prospective = _version_split(normalized_prospective) + + # 0-pad the prospective version before shortening it to get the correct + # shortened version. + padded_prospective, _ = _pad_version(split_prospective, split_spec) # Shorten the prospective version to be the same length as the spec # so that we can determine if the specifier is a prefix of the # prospective version or not. - shortened_prospective = split_prospective[: len(split_spec)] + shortened_prospective = padded_prospective[: len(split_spec)] - # Pad out our two sides with zeros so that they both equal the same - # length. - padded_spec, padded_prospective = _pad_version( - split_spec, shortened_prospective - ) - - return padded_prospective == padded_spec + return shortened_prospective == split_spec else: # Convert our spec string into a Version spec_version = Version(spec) @@ -466,31 +425,22 @@ class Specifier(_IndividualSpecifier): return prospective == spec_version - @_require_version_compare - def _compare_not_equal(self, prospective: ParsedVersion, spec: str) -> bool: + def _compare_not_equal(self, prospective: Version, spec: str) -> bool: return not self._compare_equal(prospective, spec) - @_require_version_compare - def _compare_less_than_equal(self, prospective: ParsedVersion, spec: str) -> bool: - + def _compare_less_than_equal(self, prospective: Version, spec: str) -> bool: # NB: Local version identifiers are NOT permitted in the version # specifier, so local version labels can be universally removed from # the prospective version. return Version(prospective.public) <= Version(spec) - @_require_version_compare - def _compare_greater_than_equal( - self, prospective: ParsedVersion, spec: str - ) -> bool: - + def _compare_greater_than_equal(self, prospective: Version, spec: str) -> bool: # NB: Local version identifiers are NOT permitted in the version # specifier, so local version labels can be universally removed from # the prospective version. return Version(prospective.public) >= Version(spec) - @_require_version_compare - def _compare_less_than(self, prospective: ParsedVersion, spec_str: str) -> bool: - + def _compare_less_than(self, prospective: Version, spec_str: str) -> bool: # Convert our spec to a Version instance, since we'll want to work with # it as a version. spec = Version(spec_str) @@ -514,9 +464,7 @@ class Specifier(_IndividualSpecifier): # version in the spec. return True - @_require_version_compare - def _compare_greater_than(self, prospective: ParsedVersion, spec_str: str) -> bool: - + def _compare_greater_than(self, prospective: Version, spec_str: str) -> bool: # Convert our spec to a Version instance, since we'll want to work with # it as a version. spec = Version(spec_str) @@ -549,42 +497,150 @@ class Specifier(_IndividualSpecifier): def _compare_arbitrary(self, prospective: Version, spec: str) -> bool: return str(prospective).lower() == str(spec).lower() - @property - def prereleases(self) -> bool: + def __contains__(self, item: str | Version) -> bool: + """Return whether or not the item is contained in this specifier. - # If there is an explicit prereleases set for this, then we'll just - # blindly use that. - if self._prereleases is not None: - return self._prereleases + :param item: The item to check for. - # Look at all of our specifiers and determine if they are inclusive - # operators, and if they are if they are including an explicit - # prerelease. - operator, version = self._spec - if operator in ["==", ">=", "<=", "~=", "==="]: - # The == specifier can include a trailing .*, if it does we - # want to remove before parsing. - if operator == "==" and version.endswith(".*"): - version = version[:-2] + This is used for the ``in`` operator and behaves the same as + :meth:`contains` with no ``prereleases`` argument passed. - # Parse the version, and if it is a pre-release than this - # specifier allows pre-releases. - if parse(version).is_prerelease: - return True + >>> "1.2.3" in Specifier(">=1.2.3") + True + >>> Version("1.2.3") in Specifier(">=1.2.3") + True + >>> "1.0.0" in Specifier(">=1.2.3") + False + >>> "1.3.0a1" in Specifier(">=1.2.3") + False + >>> "1.3.0a1" in Specifier(">=1.2.3", prereleases=True) + True + """ + return self.contains(item) - return False + def contains(self, item: UnparsedVersion, prereleases: bool | None = None) -> bool: + """Return whether or not the item is contained in this specifier. + + :param item: + The item to check for, which can be a version string or a + :class:`Version` instance. + :param prereleases: + Whether or not to match prereleases with this Specifier. If set to + ``None`` (the default), it uses :attr:`prereleases` to determine + whether or not prereleases are allowed. + + >>> Specifier(">=1.2.3").contains("1.2.3") + True + >>> Specifier(">=1.2.3").contains(Version("1.2.3")) + True + >>> Specifier(">=1.2.3").contains("1.0.0") + False + >>> Specifier(">=1.2.3").contains("1.3.0a1") + False + >>> Specifier(">=1.2.3", prereleases=True).contains("1.3.0a1") + True + >>> Specifier(">=1.2.3").contains("1.3.0a1", prereleases=True) + True + """ - @prereleases.setter - def prereleases(self, value: bool) -> None: - self._prereleases = value + # Determine if prereleases are to be allowed or not. + if prereleases is None: + prereleases = self.prereleases + + # Normalize item to a Version, this allows us to have a shortcut for + # "2.0" in Specifier(">=2") + normalized_item = _coerce_version(item) + + # Determine if we should be supporting prereleases in this specifier + # or not, if we do not support prereleases than we can short circuit + # logic if this version is a prereleases. + if normalized_item.is_prerelease and not prereleases: + return False + + # Actually do the comparison to determine if this item is contained + # within this Specifier or not. + operator_callable: CallableOperator = self._get_operator(self.operator) + return operator_callable(normalized_item, self.version) + + def filter( + self, iterable: Iterable[UnparsedVersionVar], prereleases: bool | None = None + ) -> Iterator[UnparsedVersionVar]: + """Filter items in the given iterable, that match the specifier. + + :param iterable: + An iterable that can contain version strings and :class:`Version` instances. + The items in the iterable will be filtered according to the specifier. + :param prereleases: + Whether or not to allow prereleases in the returned iterator. If set to + ``None`` (the default), it will be intelligently decide whether to allow + prereleases or not (based on the :attr:`prereleases` attribute, and + whether the only versions matching are prereleases). + + This method is smarter than just ``filter(Specifier().contains, [...])`` + because it implements the rule from :pep:`440` that a prerelease item + SHOULD be accepted if no other versions match the given specifier. + + >>> list(Specifier(">=1.2.3").filter(["1.2", "1.3", "1.5a1"])) + ['1.3'] + >>> list(Specifier(">=1.2.3").filter(["1.2", "1.2.3", "1.3", Version("1.4")])) + ['1.2.3', '1.3', <Version('1.4')>] + >>> list(Specifier(">=1.2.3").filter(["1.2", "1.5a1"])) + ['1.5a1'] + >>> list(Specifier(">=1.2.3").filter(["1.3", "1.5a1"], prereleases=True)) + ['1.3', '1.5a1'] + >>> list(Specifier(">=1.2.3", prereleases=True).filter(["1.3", "1.5a1"])) + ['1.3', '1.5a1'] + """ + + yielded = False + found_prereleases = [] + + kw = {"prereleases": prereleases if prereleases is not None else True} + + # Attempt to iterate over all the values in the iterable and if any of + # them match, yield them. + for version in iterable: + parsed_version = _coerce_version(version) + + if self.contains(parsed_version, **kw): + # If our version is a prerelease, and we were not set to allow + # prereleases, then we'll store it for later in case nothing + # else matches this specifier. + if parsed_version.is_prerelease and not ( + prereleases or self.prereleases + ): + found_prereleases.append(version) + # Either this is not a prerelease, or we should have been + # accepting prereleases from the beginning. + else: + yielded = True + yield version + + # Now that we've iterated over everything, determine if we've yielded + # any values, and if we have not and we have any prereleases stored up + # then we will go ahead and yield the prereleases. + if not yielded and found_prereleases: + for version in found_prereleases: + yield version _prefix_regex = re.compile(r"^([0-9]+)((?:a|b|c|rc)[0-9]+)$") -def _version_split(version: str) -> List[str]: - result: List[str] = [] - for item in version.split("."): +def _version_split(version: str) -> list[str]: + """Split version into components. + + The split components are intended for version comparison. The logic does + not attempt to retain the original version string, so joining the + components back with :func:`_version_join` may not produce the original + version string. + """ + result: list[str] = [] + + epoch, _, rest = version.rpartition("!") + result.append(epoch or "0") + + for item in rest.split("."): match = _prefix_regex.search(item) if match: result.extend(match.groups()) @@ -593,13 +649,24 @@ def _version_split(version: str) -> List[str]: return result +def _version_join(components: list[str]) -> str: + """Join split version components into a version string. + + This function assumes the input came from :func:`_version_split`, where the + first component must be the epoch (either empty or numeric), and all other + components numeric. + """ + epoch, *rest = components + return f"{epoch}!{'.'.join(rest)}" + + def _is_not_suffix(segment: str) -> bool: return not any( segment.startswith(prefix) for prefix in ("dev", "a", "b", "rc", "post") ) -def _pad_version(left: List[str], right: List[str]) -> Tuple[List[str], List[str]]: +def _pad_version(left: list[str], right: list[str]) -> tuple[list[str], list[str]]: left_split, right_split = [], [] # Get the release segment of our versions @@ -614,35 +681,91 @@ def _pad_version(left: List[str], right: List[str]) -> Tuple[List[str], List[str left_split.insert(1, ["0"] * max(0, len(right_split[0]) - len(left_split[0]))) right_split.insert(1, ["0"] * max(0, len(left_split[0]) - len(right_split[0]))) - return (list(itertools.chain(*left_split)), list(itertools.chain(*right_split))) + return ( + list(itertools.chain.from_iterable(left_split)), + list(itertools.chain.from_iterable(right_split)), + ) class SpecifierSet(BaseSpecifier): + """This class abstracts handling of a set of version specifiers. + + It can be passed a single specifier (``>=3.0``), a comma-separated list of + specifiers (``>=3.0,!=3.1``), or no specifier at all. + """ + def __init__( - self, specifiers: str = "", prereleases: Optional[bool] = None + self, + specifiers: str | Iterable[Specifier] = "", + prereleases: bool | None = None, ) -> None: + """Initialize a SpecifierSet instance. + + :param specifiers: + The string representation of a specifier or a comma-separated list of + specifiers which will be parsed and normalized before use. + May also be an iterable of ``Specifier`` instances, which will be used + as is. + :param prereleases: + This tells the SpecifierSet if it should accept prerelease versions if + applicable or not. The default of ``None`` will autodetect it from the + given specifiers. + + :raises InvalidSpecifier: + If the given ``specifiers`` are not parseable than this exception will be + raised. + """ - # Split on , to break each individual specifier into it's own item, and - # strip each item to remove leading/trailing whitespace. - split_specifiers = [s.strip() for s in specifiers.split(",") if s.strip()] - - # Parsed each individual specifier, attempting first to make it a - # Specifier and falling back to a LegacySpecifier. - parsed: Set[_IndividualSpecifier] = set() - for specifier in split_specifiers: - try: - parsed.add(Specifier(specifier)) - except InvalidSpecifier: - parsed.add(LegacySpecifier(specifier)) + if isinstance(specifiers, str): + # Split on `,` to break each individual specifier into its own item, and + # strip each item to remove leading/trailing whitespace. + split_specifiers = [s.strip() for s in specifiers.split(",") if s.strip()] - # Turn our parsed specifiers into a frozen set and save them for later. - self._specs = frozenset(parsed) + # Make each individual specifier a Specifier and save in a frozen set + # for later. + self._specs = frozenset(map(Specifier, split_specifiers)) + else: + # Save the supplied specifiers in a frozen set. + self._specs = frozenset(specifiers) # Store our prereleases value so we can use it later to determine if # we accept prereleases or not. self._prereleases = prereleases + @property + def prereleases(self) -> bool | None: + # If we have been given an explicit prerelease modifier, then we'll + # pass that through here. + if self._prereleases is not None: + return self._prereleases + + # If we don't have any specifiers, and we don't have a forced value, + # then we'll just return None since we don't know if this should have + # pre-releases or not. + if not self._specs: + return None + + # Otherwise we'll see if any of the given specifiers accept + # prereleases, if any of them do we'll return True, otherwise False. + return any(s.prereleases for s in self._specs) + + @prereleases.setter + def prereleases(self, value: bool) -> None: + self._prereleases = value + def __repr__(self) -> str: + """A representation of the specifier set that shows all internal state. + + Note that the ordering of the individual specifiers within the set may not + match the input string. + + >>> SpecifierSet('>=1.0.0,!=2.0.0') + <SpecifierSet('!=2.0.0,>=1.0.0')> + >>> SpecifierSet('>=1.0.0,!=2.0.0', prereleases=False) + <SpecifierSet('!=2.0.0,>=1.0.0', prereleases=False)> + >>> SpecifierSet('>=1.0.0,!=2.0.0', prereleases=True) + <SpecifierSet('!=2.0.0,>=1.0.0', prereleases=True)> + """ pre = ( f", prereleases={self.prereleases!r}" if self._prereleases is not None @@ -652,12 +775,31 @@ class SpecifierSet(BaseSpecifier): return f"<SpecifierSet({str(self)!r}{pre})>" def __str__(self) -> str: + """A string representation of the specifier set that can be round-tripped. + + Note that the ordering of the individual specifiers within the set may not + match the input string. + + >>> str(SpecifierSet(">=1.0.0,!=1.0.1")) + '!=1.0.1,>=1.0.0' + >>> str(SpecifierSet(">=1.0.0,!=1.0.1", prereleases=False)) + '!=1.0.1,>=1.0.0' + """ return ",".join(sorted(str(s) for s in self._specs)) def __hash__(self) -> int: return hash(self._specs) - def __and__(self, other: Union["SpecifierSet", str]) -> "SpecifierSet": + def __and__(self, other: SpecifierSet | str) -> SpecifierSet: + """Return a SpecifierSet which is a combination of the two sets. + + :param other: The other object to combine with. + + >>> SpecifierSet(">=1.0.0,!=1.0.1") & '<=2.0.0,!=2.0.1' + <SpecifierSet('!=1.0.1,!=2.0.1,<=2.0.0,>=1.0.0')> + >>> SpecifierSet(">=1.0.0,!=1.0.1") & SpecifierSet('<=2.0.0,!=2.0.1') + <SpecifierSet('!=1.0.1,!=2.0.1,<=2.0.0,>=1.0.0')> + """ if isinstance(other, str): other = SpecifierSet(other) elif not isinstance(other, SpecifierSet): @@ -681,7 +823,25 @@ class SpecifierSet(BaseSpecifier): return specifier def __eq__(self, other: object) -> bool: - if isinstance(other, (str, _IndividualSpecifier)): + """Whether or not the two SpecifierSet-like objects are equal. + + :param other: The other object to check against. + + The value of :attr:`prereleases` is ignored. + + >>> SpecifierSet(">=1.0.0,!=1.0.1") == SpecifierSet(">=1.0.0,!=1.0.1") + True + >>> (SpecifierSet(">=1.0.0,!=1.0.1", prereleases=False) == + ... SpecifierSet(">=1.0.0,!=1.0.1", prereleases=True)) + True + >>> SpecifierSet(">=1.0.0,!=1.0.1") == ">=1.0.0,!=1.0.1" + True + >>> SpecifierSet(">=1.0.0,!=1.0.1") == SpecifierSet(">=1.0.0") + False + >>> SpecifierSet(">=1.0.0,!=1.0.1") == SpecifierSet(">=1.0.0,!=1.0.2") + False + """ + if isinstance(other, (str, Specifier)): other = SpecifierSet(str(other)) elif not isinstance(other, SpecifierSet): return NotImplemented @@ -689,43 +849,72 @@ class SpecifierSet(BaseSpecifier): return self._specs == other._specs def __len__(self) -> int: + """Returns the number of specifiers in this specifier set.""" return len(self._specs) - def __iter__(self) -> Iterator[_IndividualSpecifier]: - return iter(self._specs) - - @property - def prereleases(self) -> Optional[bool]: - - # If we have been given an explicit prerelease modifier, then we'll - # pass that through here. - if self._prereleases is not None: - return self._prereleases - - # If we don't have any specifiers, and we don't have a forced value, - # then we'll just return None since we don't know if this should have - # pre-releases or not. - if not self._specs: - return None - - # Otherwise we'll see if any of the given specifiers accept - # prereleases, if any of them do we'll return True, otherwise False. - return any(s.prereleases for s in self._specs) + def __iter__(self) -> Iterator[Specifier]: + """ + Returns an iterator over all the underlying :class:`Specifier` instances + in this specifier set. - @prereleases.setter - def prereleases(self, value: bool) -> None: - self._prereleases = value + >>> sorted(SpecifierSet(">=1.0.0,!=1.0.1"), key=str) + [<Specifier('!=1.0.1')>, <Specifier('>=1.0.0')>] + """ + return iter(self._specs) def __contains__(self, item: UnparsedVersion) -> bool: + """Return whether or not the item is contained in this specifier. + + :param item: The item to check for. + + This is used for the ``in`` operator and behaves the same as + :meth:`contains` with no ``prereleases`` argument passed. + + >>> "1.2.3" in SpecifierSet(">=1.0.0,!=1.0.1") + True + >>> Version("1.2.3") in SpecifierSet(">=1.0.0,!=1.0.1") + True + >>> "1.0.1" in SpecifierSet(">=1.0.0,!=1.0.1") + False + >>> "1.3.0a1" in SpecifierSet(">=1.0.0,!=1.0.1") + False + >>> "1.3.0a1" in SpecifierSet(">=1.0.0,!=1.0.1", prereleases=True) + True + """ return self.contains(item) def contains( - self, item: UnparsedVersion, prereleases: Optional[bool] = None + self, + item: UnparsedVersion, + prereleases: bool | None = None, + installed: bool | None = None, ) -> bool: - - # Ensure that our item is a Version or LegacyVersion instance. - if not isinstance(item, (LegacyVersion, Version)): - item = parse(item) + """Return whether or not the item is contained in this SpecifierSet. + + :param item: + The item to check for, which can be a version string or a + :class:`Version` instance. + :param prereleases: + Whether or not to match prereleases with this SpecifierSet. If set to + ``None`` (the default), it uses :attr:`prereleases` to determine + whether or not prereleases are allowed. + + >>> SpecifierSet(">=1.0.0,!=1.0.1").contains("1.2.3") + True + >>> SpecifierSet(">=1.0.0,!=1.0.1").contains(Version("1.2.3")) + True + >>> SpecifierSet(">=1.0.0,!=1.0.1").contains("1.0.1") + False + >>> SpecifierSet(">=1.0.0,!=1.0.1").contains("1.3.0a1") + False + >>> SpecifierSet(">=1.0.0,!=1.0.1", prereleases=True).contains("1.3.0a1") + True + >>> SpecifierSet(">=1.0.0,!=1.0.1").contains("1.3.0a1", prereleases=True) + True + """ + # Ensure that our item is a Version instance. + if not isinstance(item, Version): + item = Version(item) # Determine if we're forcing a prerelease or not, if we're not forcing # one for this particular filter call, then we'll use whatever the @@ -742,6 +931,9 @@ class SpecifierSet(BaseSpecifier): if not prereleases and item.is_prerelease: return False + if installed and item.is_prerelease: + item = Version(item.base_version) + # We simply dispatch to the underlying specs here to make sure that the # given version is contained within all of them. # Note: This use of all() here means that an empty set of specifiers @@ -749,9 +941,46 @@ class SpecifierSet(BaseSpecifier): return all(s.contains(item, prereleases=prereleases) for s in self._specs) def filter( - self, iterable: Iterable[VersionTypeVar], prereleases: Optional[bool] = None - ) -> Iterable[VersionTypeVar]: - + self, iterable: Iterable[UnparsedVersionVar], prereleases: bool | None = None + ) -> Iterator[UnparsedVersionVar]: + """Filter items in the given iterable, that match the specifiers in this set. + + :param iterable: + An iterable that can contain version strings and :class:`Version` instances. + The items in the iterable will be filtered according to the specifier. + :param prereleases: + Whether or not to allow prereleases in the returned iterator. If set to + ``None`` (the default), it will be intelligently decide whether to allow + prereleases or not (based on the :attr:`prereleases` attribute, and + whether the only versions matching are prereleases). + + This method is smarter than just ``filter(SpecifierSet(...).contains, [...])`` + because it implements the rule from :pep:`440` that a prerelease item + SHOULD be accepted if no other versions match the given specifier. + + >>> list(SpecifierSet(">=1.2.3").filter(["1.2", "1.3", "1.5a1"])) + ['1.3'] + >>> list(SpecifierSet(">=1.2.3").filter(["1.2", "1.3", Version("1.4")])) + ['1.3', <Version('1.4')>] + >>> list(SpecifierSet(">=1.2.3").filter(["1.2", "1.5a1"])) + [] + >>> list(SpecifierSet(">=1.2.3").filter(["1.3", "1.5a1"], prereleases=True)) + ['1.3', '1.5a1'] + >>> list(SpecifierSet(">=1.2.3", prereleases=True).filter(["1.3", "1.5a1"])) + ['1.3', '1.5a1'] + + An "empty" SpecifierSet will filter items based on the presence of prerelease + versions in the set. + + >>> list(SpecifierSet("").filter(["1.3", "1.5a1"])) + ['1.3'] + >>> list(SpecifierSet("").filter(["1.5a1"])) + ['1.5a1'] + >>> list(SpecifierSet("", prereleases=True).filter(["1.3", "1.5a1"])) + ['1.3', '1.5a1'] + >>> list(SpecifierSet("").filter(["1.3", "1.5a1"], prereleases=True)) + ['1.3', '1.5a1'] + """ # Determine if we're forcing a prerelease or not, if we're not forcing # one for this particular filter call, then we'll use whatever the # SpecifierSet thinks for whether or not we should support prereleases. @@ -764,27 +993,16 @@ class SpecifierSet(BaseSpecifier): if self._specs: for spec in self._specs: iterable = spec.filter(iterable, prereleases=bool(prereleases)) - return iterable + return iter(iterable) # If we do not have any specifiers, then we need to have a rough filter # which will filter out any pre-releases, unless there are no final - # releases, and which will filter out LegacyVersion in general. + # releases. else: - filtered: List[VersionTypeVar] = [] - found_prereleases: List[VersionTypeVar] = [] - - item: UnparsedVersion - parsed_version: Union[Version, LegacyVersion] + filtered: list[UnparsedVersionVar] = [] + found_prereleases: list[UnparsedVersionVar] = [] for item in iterable: - # Ensure that we some kind of Version class for this item. - if not isinstance(item, (LegacyVersion, Version)): - parsed_version = parse(item) - else: - parsed_version = item - - # Filter out any item which is parsed as a LegacyVersion - if isinstance(parsed_version, LegacyVersion): - continue + parsed_version = _coerce_version(item) # Store any item which is a pre-release for later unless we've # already found a final version or we are accepting prereleases @@ -797,6 +1015,6 @@ class SpecifierSet(BaseSpecifier): # If we've found no items except for pre-releases, then we'll go # ahead and use the pre-releases if not filtered and found_prereleases and prereleases is None: - return found_prereleases + return iter(found_prereleases) - return filtered + return iter(filtered) diff --git a/contrib/python/packaging/py3/packaging/tags.py b/contrib/python/packaging/py3/packaging/tags.py index 9a3d25a71c7..f5903402abb 100644 --- a/contrib/python/packaging/py3/packaging/tags.py +++ b/contrib/python/packaging/py3/packaging/tags.py @@ -2,21 +2,21 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. +from __future__ import annotations + import logging import platform +import re +import struct +import subprocess import sys import sysconfig from importlib.machinery import EXTENSION_SUFFIXES from typing import ( - Dict, - FrozenSet, Iterable, Iterator, - List, - Optional, Sequence, Tuple, - Union, cast, ) @@ -25,9 +25,9 @@ from . import _manylinux, _musllinux logger = logging.getLogger(__name__) PythonVersion = Sequence[int] -MacVersion = Tuple[int, int] +AppleVersion = Tuple[int, int] -INTERPRETER_SHORT_NAMES: Dict[str, str] = { +INTERPRETER_SHORT_NAMES: dict[str, str] = { "python": "py", # Generic. "cpython": "cp", "pypy": "pp", @@ -36,7 +36,7 @@ INTERPRETER_SHORT_NAMES: Dict[str, str] = { } -_32_BIT_INTERPRETER = sys.maxsize <= 2 ** 32 +_32_BIT_INTERPRETER = struct.calcsize("P") == 4 class Tag: @@ -47,7 +47,7 @@ class Tag: is also supported. """ - __slots__ = ["_interpreter", "_abi", "_platform", "_hash"] + __slots__ = ["_abi", "_hash", "_interpreter", "_platform"] def __init__(self, interpreter: str, abi: str, platform: str) -> None: self._interpreter = interpreter.lower() @@ -93,7 +93,7 @@ class Tag: return f"<{self} @ {id(self)}>" -def parse_tag(tag: str) -> FrozenSet[Tag]: +def parse_tag(tag: str) -> frozenset[Tag]: """ Parses the provided tag (e.g. `py3-none-any`) into a frozenset of Tag instances. @@ -109,8 +109,8 @@ def parse_tag(tag: str) -> FrozenSet[Tag]: return frozenset(tags) -def _get_config_var(name: str, warn: bool = False) -> Union[int, str, None]: - value = sysconfig.get_config_var(name) +def _get_config_var(name: str, warn: bool = False) -> int | str | None: + value: int | str | None = sysconfig.get_config_var(name) if value is None and warn: logger.debug( "Config variable '%s' is unset, Python ABI tag may be incorrect", name @@ -119,23 +119,40 @@ def _get_config_var(name: str, warn: bool = False) -> Union[int, str, None]: def _normalize_string(string: str) -> str: - return string.replace(".", "_").replace("-", "_") + return string.replace(".", "_").replace("-", "_").replace(" ", "_") + + +def _is_threaded_cpython(abis: list[str]) -> bool: + """ + Determine if the ABI corresponds to a threaded (`--disable-gil`) build. + + The threaded builds are indicated by a "t" in the abiflags. + """ + if len(abis) == 0: + return False + # expect e.g., cp313 + m = re.match(r"cp\d+(.*)", abis[0]) + if not m: + return False + abiflags = m.group(1) + return "t" in abiflags -def _abi3_applies(python_version: PythonVersion) -> bool: +def _abi3_applies(python_version: PythonVersion, threading: bool) -> bool: """ Determine if the Python version supports abi3. - PEP 384 was first implemented in Python 3.2. + PEP 384 was first implemented in Python 3.2. The threaded (`--disable-gil`) + builds do not support abi3. """ - return len(python_version) > 1 and tuple(python_version) >= (3, 2) + return len(python_version) > 1 and tuple(python_version) >= (3, 2) and not threading -def _cpython_abis(py_version: PythonVersion, warn: bool = False) -> List[str]: +def _cpython_abis(py_version: PythonVersion, warn: bool = False) -> list[str]: py_version = tuple(py_version) # To allow for version comparison. abis = [] version = _version_nodot(py_version[:2]) - debug = pymalloc = ucs4 = "" + threading = debug = pymalloc = ucs4 = "" with_debug = _get_config_var("Py_DEBUG", warn) has_refcount = hasattr(sys, "gettotalrefcount") # Windows doesn't set Py_DEBUG, so checking for support of debug-compiled @@ -144,6 +161,8 @@ def _cpython_abis(py_version: PythonVersion, warn: bool = False) -> List[str]: has_ext = "_d.pyd" in EXTENSION_SUFFIXES if with_debug or (with_debug is None and (has_refcount or has_ext)): debug = "d" + if py_version >= (3, 13) and _get_config_var("Py_GIL_DISABLED", warn): + threading = "t" if py_version < (3, 8): with_pymalloc = _get_config_var("WITH_PYMALLOC", warn) if with_pymalloc or with_pymalloc is None: @@ -157,20 +176,15 @@ def _cpython_abis(py_version: PythonVersion, warn: bool = False) -> List[str]: elif debug: # Debug builds can also load "normal" extension modules. # We can also assume no UCS-4 or pymalloc requirement. - abis.append(f"cp{version}") - abis.insert( - 0, - "cp{version}{debug}{pymalloc}{ucs4}".format( - version=version, debug=debug, pymalloc=pymalloc, ucs4=ucs4 - ), - ) + abis.append(f"cp{version}{threading}") + abis.insert(0, f"cp{version}{threading}{debug}{pymalloc}{ucs4}") return abis def cpython_tags( - python_version: Optional[PythonVersion] = None, - abis: Optional[Iterable[str]] = None, - platforms: Optional[Iterable[str]] = None, + python_version: PythonVersion | None = None, + abis: Iterable[str] | None = None, + platforms: Iterable[str] | None = None, *, warn: bool = False, ) -> Iterator[Tag]: @@ -211,29 +225,66 @@ def cpython_tags( for abi in abis: for platform_ in platforms: yield Tag(interpreter, abi, platform_) - if _abi3_applies(python_version): + + threading = _is_threaded_cpython(abis) + use_abi3 = _abi3_applies(python_version, threading) + if use_abi3: yield from (Tag(interpreter, "abi3", platform_) for platform_ in platforms) yield from (Tag(interpreter, "none", platform_) for platform_ in platforms) - if _abi3_applies(python_version): + if use_abi3: for minor_version in range(python_version[1] - 1, 1, -1): for platform_ in platforms: - interpreter = "cp{version}".format( - version=_version_nodot((python_version[0], minor_version)) - ) + version = _version_nodot((python_version[0], minor_version)) + interpreter = f"cp{version}" yield Tag(interpreter, "abi3", platform_) -def _generic_abi() -> Iterator[str]: - abi = sysconfig.get_config_var("SOABI") - if abi: - yield _normalize_string(abi) +def _generic_abi() -> list[str]: + """ + Return the ABI tag based on EXT_SUFFIX. + """ + # The following are examples of `EXT_SUFFIX`. + # We want to keep the parts which are related to the ABI and remove the + # parts which are related to the platform: + # - linux: '.cpython-310-x86_64-linux-gnu.so' => cp310 + # - mac: '.cpython-310-darwin.so' => cp310 + # - win: '.cp310-win_amd64.pyd' => cp310 + # - win: '.pyd' => cp37 (uses _cpython_abis()) + # - pypy: '.pypy38-pp73-x86_64-linux-gnu.so' => pypy38_pp73 + # - graalpy: '.graalpy-38-native-x86_64-darwin.dylib' + # => graalpy_38_native + + ext_suffix = _get_config_var("EXT_SUFFIX", warn=True) + if not isinstance(ext_suffix, str) or ext_suffix[0] != ".": + raise SystemError("invalid sysconfig.get_config_var('EXT_SUFFIX')") + parts = ext_suffix.split(".") + if len(parts) < 3: + # CPython3.7 and earlier uses ".pyd" on Windows. + return _cpython_abis(sys.version_info[:2]) + soabi = parts[1] + if soabi.startswith("cpython"): + # non-windows + abi = "cp" + soabi.split("-")[1] + elif soabi.startswith("cp"): + # windows + abi = soabi.split("-")[0] + elif soabi.startswith("pypy"): + abi = "-".join(soabi.split("-")[:2]) + elif soabi.startswith("graalpy"): + abi = "-".join(soabi.split("-")[:3]) + elif soabi: + # pyston, ironpython, others? + abi = soabi + else: + return [] + return [_normalize_string(abi)] def generic_tags( - interpreter: Optional[str] = None, - abis: Optional[Iterable[str]] = None, - platforms: Optional[Iterable[str]] = None, + interpreter: str | None = None, + abis: Iterable[str] | None = None, + platforms: Iterable[str] | None = None, *, warn: bool = False, ) -> Iterator[Tag]: @@ -251,8 +302,9 @@ def generic_tags( interpreter = "".join([interp_name, interp_version]) if abis is None: abis = _generic_abi() + else: + abis = list(abis) platforms = list(platforms or platform_tags()) - abis = list(abis) if "none" not in abis: abis.append("none") for abi in abis: @@ -276,9 +328,9 @@ def _py_interpreter_range(py_version: PythonVersion) -> Iterator[str]: def compatible_tags( - python_version: Optional[PythonVersion] = None, - interpreter: Optional[str] = None, - platforms: Optional[Iterable[str]] = None, + python_version: PythonVersion | None = None, + interpreter: str | None = None, + platforms: Iterable[str] | None = None, ) -> Iterator[Tag]: """ Yields the sequence of tags that are compatible with a specific version of Python. @@ -310,7 +362,7 @@ def _mac_arch(arch: str, is_32bit: bool = _32_BIT_INTERPRETER) -> str: return "i386" -def _mac_binary_formats(version: MacVersion, cpu_arch: str) -> List[str]: +def _mac_binary_formats(version: AppleVersion, cpu_arch: str) -> list[str]: formats = [cpu_arch] if cpu_arch == "x86_64": if version < (10, 4): @@ -343,7 +395,7 @@ def _mac_binary_formats(version: MacVersion, cpu_arch: str) -> List[str]: def mac_platforms( - version: Optional[MacVersion] = None, arch: Optional[str] = None + version: AppleVersion | None = None, arch: str | None = None ) -> Iterator[str]: """ Yields the platform tags for a macOS system. @@ -355,7 +407,23 @@ def mac_platforms( """ version_str, _, cpu_arch = platform.mac_ver() if version is None: - version = cast("MacVersion", tuple(map(int, version_str.split(".")[:2]))) + version = cast("AppleVersion", tuple(map(int, version_str.split(".")[:2]))) + if version == (10, 16): + # When built against an older macOS SDK, Python will report macOS 10.16 + # instead of the real version. + version_str = subprocess.run( + [ + sys.executable, + "-sS", + "-c", + "import platform; print(platform.mac_ver()[0])", + ], + check=True, + env={"SYSTEM_VERSION_COMPAT": "0"}, + stdout=subprocess.PIPE, + text=True, + ).stdout + version = cast("AppleVersion", tuple(map(int, version_str.split(".")[:2]))) else: version = version if arch is None: @@ -366,24 +434,22 @@ def mac_platforms( if (10, 0) <= version and version < (11, 0): # Prior to Mac OS 11, each yearly release of Mac OS bumped the # "minor" version number. The major version was always 10. + major_version = 10 for minor_version in range(version[1], -1, -1): - compat_version = 10, minor_version + compat_version = major_version, minor_version binary_formats = _mac_binary_formats(compat_version, arch) for binary_format in binary_formats: - yield "macosx_{major}_{minor}_{binary_format}".format( - major=10, minor=minor_version, binary_format=binary_format - ) + yield f"macosx_{major_version}_{minor_version}_{binary_format}" if version >= (11, 0): # Starting with Mac OS 11, each yearly release bumps the major version # number. The minor versions are now the midyear updates. + minor_version = 0 for major_version in range(version[0], 10, -1): - compat_version = major_version, 0 + compat_version = major_version, minor_version binary_formats = _mac_binary_formats(compat_version, arch) for binary_format in binary_formats: - yield "macosx_{major}_{minor}_{binary_format}".format( - major=major_version, minor=0, binary_format=binary_format - ) + yield f"macosx_{major_version}_{minor_version}_{binary_format}" if version >= (11, 0): # Mac OS 11 on x86_64 is compatible with binaries from previous releases. @@ -393,38 +459,94 @@ def mac_platforms( # However, the "universal2" binary format can have a # macOS version earlier than 11.0 when the x86_64 part of the binary supports # that version of macOS. + major_version = 10 if arch == "x86_64": for minor_version in range(16, 3, -1): - compat_version = 10, minor_version + compat_version = major_version, minor_version binary_formats = _mac_binary_formats(compat_version, arch) for binary_format in binary_formats: - yield "macosx_{major}_{minor}_{binary_format}".format( - major=compat_version[0], - minor=compat_version[1], - binary_format=binary_format, - ) + yield f"macosx_{major_version}_{minor_version}_{binary_format}" else: for minor_version in range(16, 3, -1): - compat_version = 10, minor_version + compat_version = major_version, minor_version binary_format = "universal2" - yield "macosx_{major}_{minor}_{binary_format}".format( - major=compat_version[0], - minor=compat_version[1], - binary_format=binary_format, - ) + yield f"macosx_{major_version}_{minor_version}_{binary_format}" + + +def ios_platforms( + version: AppleVersion | None = None, multiarch: str | None = None +) -> Iterator[str]: + """ + Yields the platform tags for an iOS system. + + :param version: A two-item tuple specifying the iOS version to generate + platform tags for. Defaults to the current iOS version. + :param multiarch: The CPU architecture+ABI to generate platform tags for - + (the value used by `sys.implementation._multiarch` e.g., + `arm64_iphoneos` or `x84_64_iphonesimulator`). Defaults to the current + multiarch value. + """ + if version is None: + # if iOS is the current platform, ios_ver *must* be defined. However, + # it won't exist for CPython versions before 3.13, which causes a mypy + # error. + _, release, _, _ = platform.ios_ver() # type: ignore[attr-defined, unused-ignore] + version = cast("AppleVersion", tuple(map(int, release.split(".")[:2]))) + + if multiarch is None: + multiarch = sys.implementation._multiarch + multiarch = multiarch.replace("-", "_") + + ios_platform_template = "ios_{major}_{minor}_{multiarch}" + + # Consider any iOS major.minor version from the version requested, down to + # 12.0. 12.0 is the first iOS version that is known to have enough features + # to support CPython. Consider every possible minor release up to X.9. There + # highest the minor has ever gone is 8 (14.8 and 15.8) but having some extra + # candidates that won't ever match doesn't really hurt, and it saves us from + # having to keep an explicit list of known iOS versions in the code. Return + # the results descending order of version number. + + # If the requested major version is less than 12, there won't be any matches. + if version[0] < 12: + return + + # Consider the actual X.Y version that was requested. + yield ios_platform_template.format( + major=version[0], minor=version[1], multiarch=multiarch + ) + + # Consider every minor version from X.0 to the minor version prior to the + # version requested by the platform. + for minor in range(version[1] - 1, -1, -1): + yield ios_platform_template.format( + major=version[0], minor=minor, multiarch=multiarch + ) + + for major in range(version[0] - 1, 11, -1): + for minor in range(9, -1, -1): + yield ios_platform_template.format( + major=major, minor=minor, multiarch=multiarch + ) def _linux_platforms(is_32bit: bool = _32_BIT_INTERPRETER) -> Iterator[str]: linux = _normalize_string(sysconfig.get_platform()) + if not linux.startswith("linux_"): + # we should never be here, just yield the sysconfig one and return + yield linux + return if is_32bit: if linux == "linux_x86_64": linux = "linux_i686" elif linux == "linux_aarch64": - linux = "linux_armv7l" + linux = "linux_armv8l" _, arch = linux.split("_", 1) - yield from _manylinux.platform_tags(linux, arch) - yield from _musllinux.platform_tags(arch) - yield linux + archs = {"armv8l": ["armv8l", "armv7l"]}.get(arch, [arch]) + yield from _manylinux.platform_tags(archs) + yield from _musllinux.platform_tags(archs) + for arch in archs: + yield f"linux_{arch}" def _generic_platforms() -> Iterator[str]: @@ -437,6 +559,8 @@ def platform_tags() -> Iterator[str]: """ if platform.system() == "Darwin": return mac_platforms() + elif platform.system() == "iOS": + return ios_platforms() elif platform.system() == "Linux": return _linux_platforms() else: @@ -446,6 +570,9 @@ def platform_tags() -> Iterator[str]: def interpreter_name() -> str: """ Returns the name of the running interpreter. + + Some implementations have a reserved, two-letter abbreviation which will + be returned when appropriate. """ name = sys.implementation.name return INTERPRETER_SHORT_NAMES.get(name) or name @@ -482,6 +609,9 @@ def sys_tags(*, warn: bool = False) -> Iterator[Tag]: yield from generic_tags() if interp_name == "pp": - yield from compatible_tags(interpreter="pp3") + interp = "pp3" + elif interp_name == "cp": + interp = "cp" + interpreter_version(warn=warn) else: - yield from compatible_tags() + interp = None + yield from compatible_tags(interpreter=interp) diff --git a/contrib/python/packaging/py3/packaging/utils.py b/contrib/python/packaging/py3/packaging/utils.py index 80993eff132..23450953df7 100644 --- a/contrib/python/packaging/py3/packaging/utils.py +++ b/contrib/python/packaging/py3/packaging/utils.py @@ -2,16 +2,25 @@ # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. +from __future__ import annotations + +import functools import re -from typing import FrozenSet, NewType, Tuple, Union, cast +from typing import NewType, Tuple, Union, cast from .tags import Tag, parse_tag -from .version import InvalidVersion, Version +from .version import InvalidVersion, Version, _TrimmedRelease BuildTag = Union[Tuple[()], Tuple[int, str]] NormalizedName = NewType("NormalizedName", str) +class InvalidName(ValueError): + """ + An invalid distribution name; users should refer to the packaging user guide. + """ + + class InvalidWheelFilename(ValueError): """ An invalid wheel filename was found, users should refer to PEP 427. @@ -24,88 +33,99 @@ class InvalidSdistFilename(ValueError): """ +# Core metadata spec for `Name` +_validate_regex = re.compile( + r"^([A-Z0-9]|[A-Z0-9][A-Z0-9._-]*[A-Z0-9])$", re.IGNORECASE +) _canonicalize_regex = re.compile(r"[-_.]+") +_normalized_regex = re.compile(r"^([a-z0-9]|[a-z0-9]([a-z0-9-](?!--))*[a-z0-9])$") # PEP 427: The build number must start with a digit. _build_tag_regex = re.compile(r"(\d+)(.*)") -def canonicalize_name(name: str) -> NormalizedName: +def canonicalize_name(name: str, *, validate: bool = False) -> NormalizedName: + if validate and not _validate_regex.match(name): + raise InvalidName(f"name is invalid: {name!r}") # This is taken from PEP 503. value = _canonicalize_regex.sub("-", name).lower() return cast(NormalizedName, value) -def canonicalize_version(version: Union[Version, str], strip_trailing_zero: bool = False) -> str: - """ - This is very similar to Version.__str__, but has one subtle difference - with the way it handles the release segment. - """ - if isinstance(version, str): - try: - parsed = Version(version) - except InvalidVersion: - # Legacy versions cannot be normalized - return version - else: - parsed = version +def is_normalized_name(name: str) -> bool: + return _normalized_regex.match(name) is not None - parts = [] - # Epoch - if parsed.epoch != 0: - parts.append(f"{parsed.epoch}!") +@functools.singledispatch +def canonicalize_version( + version: Version | str, *, strip_trailing_zero: bool = True +) -> str: + """ + Return a canonical form of a version as a string. - # Release segment - # NB: This strips trailing '.0's to normalize - parts.append(re.sub(r"(\.0)+$", "", ".".join(str(x) for x in parsed.release))) + >>> canonicalize_version('1.0.1') + '1.0.1' - # Pre-release - if parsed.pre is not None: - parts.append("".join(str(x) for x in parsed.pre)) + Per PEP 625, versions may have multiple canonical forms, differing + only by trailing zeros. - # Post-release - if parsed.post is not None: - parts.append(f".post{parsed.post}") + >>> canonicalize_version('1.0.0') + '1' + >>> canonicalize_version('1.0.0', strip_trailing_zero=False) + '1.0.0' - # Development release - if parsed.dev is not None: - parts.append(f".dev{parsed.dev}") + Invalid versions are returned unaltered. + + >>> canonicalize_version('foo bar baz') + 'foo bar baz' + """ + return str(_TrimmedRelease(str(version)) if strip_trailing_zero else version) - # Local version segment - if parsed.local is not None: - parts.append(f"+{parsed.local}") - return "".join(parts) +@canonicalize_version.register +def _(version: str, *, strip_trailing_zero: bool = True) -> str: + try: + parsed = Version(version) + except InvalidVersion: + # Legacy versions cannot be normalized + return version + return canonicalize_version(parsed, strip_trailing_zero=strip_trailing_zero) def parse_wheel_filename( filename: str, -) -> Tuple[NormalizedName, Version, BuildTag, FrozenSet[Tag]]: +) -> tuple[NormalizedName, Version, BuildTag, frozenset[Tag]]: if not filename.endswith(".whl"): raise InvalidWheelFilename( - f"Invalid wheel filename (extension must be '.whl'): {filename}" + f"Invalid wheel filename (extension must be '.whl'): {filename!r}" ) filename = filename[:-4] dashes = filename.count("-") if dashes not in (4, 5): raise InvalidWheelFilename( - f"Invalid wheel filename (wrong number of parts): {filename}" + f"Invalid wheel filename (wrong number of parts): {filename!r}" ) parts = filename.split("-", dashes - 2) name_part = parts[0] - # See PEP 427 for the rules on escaping the project name + # See PEP 427 for the rules on escaping the project name. if "__" in name_part or re.match(r"^[\w\d._]*$", name_part, re.UNICODE) is None: - raise InvalidWheelFilename(f"Invalid project name: {filename}") + raise InvalidWheelFilename(f"Invalid project name: {filename!r}") name = canonicalize_name(name_part) - version = Version(parts[1]) + + try: + version = Version(parts[1]) + except InvalidVersion as e: + raise InvalidWheelFilename( + f"Invalid wheel filename (invalid version): {filename!r}" + ) from e + if dashes == 5: build_part = parts[2] build_match = _build_tag_regex.match(build_part) if build_match is None: raise InvalidWheelFilename( - f"Invalid build number: {build_part} in '{filename}'" + f"Invalid build number: {build_part} in {filename!r}" ) build = cast(BuildTag, (int(build_match.group(1)), build_match.group(2))) else: @@ -114,7 +134,7 @@ def parse_wheel_filename( return (name, version, build, tags) -def parse_sdist_filename(filename: str) -> Tuple[NormalizedName, Version]: +def parse_sdist_filename(filename: str) -> tuple[NormalizedName, Version]: if filename.endswith(".tar.gz"): file_stem = filename[: -len(".tar.gz")] elif filename.endswith(".zip"): @@ -122,15 +142,22 @@ def parse_sdist_filename(filename: str) -> Tuple[NormalizedName, Version]: else: raise InvalidSdistFilename( f"Invalid sdist filename (extension must be '.tar.gz' or '.zip'):" - f" {filename}" + f" {filename!r}" ) # We are requiring a PEP 440 version, which cannot contain dashes, # so we split on the last dash. name_part, sep, version_part = file_stem.rpartition("-") if not sep: - raise InvalidSdistFilename(f"Invalid sdist filename: {filename}") + raise InvalidSdistFilename(f"Invalid sdist filename: {filename!r}") name = canonicalize_name(name_part) - version = Version(version_part) + + try: + version = Version(version_part) + except InvalidVersion as e: + raise InvalidSdistFilename( + f"Invalid sdist filename (invalid version): {filename!r}" + ) from e + return (name, version) diff --git a/contrib/python/packaging/py3/packaging/version.py b/contrib/python/packaging/py3/packaging/version.py index de9a09a4ed3..c9bbda20e46 100644 --- a/contrib/python/packaging/py3/packaging/version.py +++ b/contrib/python/packaging/py3/packaging/version.py @@ -1,64 +1,73 @@ # This file is dual licensed under the terms of the Apache License, Version # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. +""" +.. testsetup:: + + from packaging.version import parse, Version +""" + +from __future__ import annotations -import collections import itertools import re -import warnings -from typing import Callable, Iterator, List, Optional, SupportsInt, Tuple, Union +from typing import Any, Callable, NamedTuple, SupportsInt, Tuple, Union from ._structures import Infinity, InfinityType, NegativeInfinity, NegativeInfinityType -__all__ = ["parse", "Version", "LegacyVersion", "InvalidVersion", "VERSION_PATTERN"] +__all__ = ["VERSION_PATTERN", "InvalidVersion", "Version", "parse"] + +LocalType = Tuple[Union[int, str], ...] -InfiniteTypes = Union[InfinityType, NegativeInfinityType] -PrePostDevType = Union[InfiniteTypes, Tuple[str, int]] -SubLocalType = Union[InfiniteTypes, int, str] -LocalType = Union[ +CmpPrePostDevType = Union[InfinityType, NegativeInfinityType, Tuple[str, int]] +CmpLocalType = Union[ NegativeInfinityType, - Tuple[ - Union[ - SubLocalType, - Tuple[SubLocalType, str], - Tuple[NegativeInfinityType, SubLocalType], - ], - ..., - ], + Tuple[Union[Tuple[int, str], Tuple[NegativeInfinityType, Union[int, str]]], ...], ] CmpKey = Tuple[ - int, Tuple[int, ...], PrePostDevType, PrePostDevType, PrePostDevType, LocalType -] -LegacyCmpKey = Tuple[int, Tuple[str, ...]] -VersionComparisonMethod = Callable[ - [Union[CmpKey, LegacyCmpKey], Union[CmpKey, LegacyCmpKey]], bool + int, + Tuple[int, ...], + CmpPrePostDevType, + CmpPrePostDevType, + CmpPrePostDevType, + CmpLocalType, ] +VersionComparisonMethod = Callable[[CmpKey, CmpKey], bool] -_Version = collections.namedtuple( - "_Version", ["epoch", "release", "dev", "pre", "post", "local"] -) +class _Version(NamedTuple): + epoch: int + release: tuple[int, ...] + dev: tuple[str, int] | None + pre: tuple[str, int] | None + post: tuple[str, int] | None + local: LocalType | None -def parse(version: str) -> Union["LegacyVersion", "Version"]: - """ - Parse the given version string and return either a :class:`Version` object - or a :class:`LegacyVersion` object depending on if the given version is - a valid PEP 440 version or a legacy version. + +def parse(version: str) -> Version: + """Parse the given version string. + + >>> parse('1.0.dev1') + <Version('1.0.dev1')> + + :param version: The version string to parse. + :raises InvalidVersion: When the version string is not a valid version. """ - try: - return Version(version) - except InvalidVersion: - return LegacyVersion(version) + return Version(version) class InvalidVersion(ValueError): - """ - An invalid version was found, users should refer to PEP 440. + """Raised when a version string is not a valid version. + + >>> Version("invalid") + Traceback (most recent call last): + ... + packaging.version.InvalidVersion: Invalid version: 'invalid' """ class _BaseVersion: - _key: Union[CmpKey, LegacyCmpKey] + _key: tuple[Any, ...] def __hash__(self) -> int: return hash(self._key) @@ -66,13 +75,13 @@ class _BaseVersion: # Please keep the duplicated `isinstance` check # in the six comparisons hereunder # unless you find a way to avoid adding overhead function calls. - def __lt__(self, other: "_BaseVersion") -> bool: + def __lt__(self, other: _BaseVersion) -> bool: if not isinstance(other, _BaseVersion): return NotImplemented return self._key < other._key - def __le__(self, other: "_BaseVersion") -> bool: + def __le__(self, other: _BaseVersion) -> bool: if not isinstance(other, _BaseVersion): return NotImplemented @@ -84,13 +93,13 @@ class _BaseVersion: return self._key == other._key - def __ge__(self, other: "_BaseVersion") -> bool: + def __ge__(self, other: _BaseVersion) -> bool: if not isinstance(other, _BaseVersion): return NotImplemented return self._key >= other._key - def __gt__(self, other: "_BaseVersion") -> bool: + def __gt__(self, other: _BaseVersion) -> bool: if not isinstance(other, _BaseVersion): return NotImplemented @@ -103,133 +112,16 @@ class _BaseVersion: return self._key != other._key -class LegacyVersion(_BaseVersion): - def __init__(self, version: str) -> None: - self._version = str(version) - self._key = _legacy_cmpkey(self._version) - - warnings.warn( - "Creating a LegacyVersion has been deprecated and will be " - "removed in the next major release", - DeprecationWarning, - ) - - def __str__(self) -> str: - return self._version - - def __repr__(self) -> str: - return f"<LegacyVersion('{self}')>" - - @property - def public(self) -> str: - return self._version - - @property - def base_version(self) -> str: - return self._version - - @property - def epoch(self) -> int: - return -1 - - @property - def release(self) -> None: - return None - - @property - def pre(self) -> None: - return None - - @property - def post(self) -> None: - return None - - @property - def dev(self) -> None: - return None - - @property - def local(self) -> None: - return None - - @property - def is_prerelease(self) -> bool: - return False - - @property - def is_postrelease(self) -> bool: - return False - - @property - def is_devrelease(self) -> bool: - return False - - -_legacy_version_component_re = re.compile(r"(\d+ | [a-z]+ | \.| -)", re.VERBOSE) - -_legacy_version_replacement_map = { - "pre": "c", - "preview": "c", - "-": "final-", - "rc": "c", - "dev": "@", -} - - -def _parse_version_parts(s: str) -> Iterator[str]: - for part in _legacy_version_component_re.split(s): - part = _legacy_version_replacement_map.get(part, part) - - if not part or part == ".": - continue - - if part[:1] in "0123456789": - # pad for numeric comparison - yield part.zfill(8) - else: - yield "*" + part - - # ensure that alpha/beta/candidate are before final - yield "*final" - - -def _legacy_cmpkey(version: str) -> LegacyCmpKey: - - # We hardcode an epoch of -1 here. A PEP 440 version can only have a epoch - # greater than or equal to 0. This will effectively put the LegacyVersion, - # which uses the defacto standard originally implemented by setuptools, - # as before all PEP 440 versions. - epoch = -1 - - # This scheme is taken from pkg_resources.parse_version setuptools prior to - # it's adoption of the packaging library. - parts: List[str] = [] - for part in _parse_version_parts(version.lower()): - if part.startswith("*"): - # remove "-" before a prerelease tag - if part < "*final": - while parts and parts[-1] == "*final-": - parts.pop() - - # remove trailing zeros from each series of numeric parts - while parts and parts[-1] == "00000000": - parts.pop() - - parts.append(part) - - return epoch, tuple(parts) - - # Deliberately not anchored to the start and end of the string, to make it # easier for 3rd party code to reuse -VERSION_PATTERN = r""" +_VERSION_PATTERN = r""" v? (?: (?:(?P<epoch>[0-9]+)!)? # epoch (?P<release>[0-9]+(?:\.[0-9]+)*) # release segment (?P<pre> # pre-release [-_\.]? - (?P<pre_l>(a|b|c|rc|alpha|beta|pre|preview)) + (?P<pre_l>alpha|a|beta|b|preview|pre|c|rc) [-_\.]? (?P<pre_n>[0-9]+)? )? @@ -253,17 +145,61 @@ VERSION_PATTERN = r""" (?:\+(?P<local>[a-z0-9]+(?:[-_\.][a-z0-9]+)*))? # local version """ +VERSION_PATTERN = _VERSION_PATTERN +""" +A string containing the regular expression used to match a valid version. + +The pattern is not anchored at either end, and is intended for embedding in larger +expressions (for example, matching a version number as part of a file name). The +regular expression should be compiled with the ``re.VERBOSE`` and ``re.IGNORECASE`` +flags set. + +:meta hide-value: +""" + class Version(_BaseVersion): + """This class abstracts handling of a project's versions. + + A :class:`Version` instance is comparison aware and can be compared and + sorted using the standard Python interfaces. + + >>> v1 = Version("1.0a5") + >>> v2 = Version("1.0") + >>> v1 + <Version('1.0a5')> + >>> v2 + <Version('1.0')> + >>> v1 < v2 + True + >>> v1 == v2 + False + >>> v1 > v2 + False + >>> v1 >= v2 + False + >>> v1 <= v2 + True + """ _regex = re.compile(r"^\s*" + VERSION_PATTERN + r"\s*$", re.VERBOSE | re.IGNORECASE) + _key: CmpKey def __init__(self, version: str) -> None: + """Initialize a Version object. + + :param version: + The string representation of a version which will be parsed and normalized + before use. + :raises InvalidVersion: + If the ``version`` does not conform to PEP 440 in any way then this + exception will be raised. + """ # Validate the version and parse it into pieces match = self._regex.search(version) if not match: - raise InvalidVersion(f"Invalid version: '{version}'") + raise InvalidVersion(f"Invalid version: {version!r}") # Store the parsed out pieces of the version self._version = _Version( @@ -288,9 +224,19 @@ class Version(_BaseVersion): ) def __repr__(self) -> str: + """A representation of the Version that shows all internal state. + + >>> Version('1.0.0') + <Version('1.0.0')> + """ return f"<Version('{self}')>" def __str__(self) -> str: + """A string representation of the version that can be round-tripped. + + >>> str(Version("1.0a5")) + '1.0a5' + """ parts = [] # Epoch @@ -320,29 +266,77 @@ class Version(_BaseVersion): @property def epoch(self) -> int: - _epoch: int = self._version.epoch - return _epoch + """The epoch of the version. + + >>> Version("2.0.0").epoch + 0 + >>> Version("1!2.0.0").epoch + 1 + """ + return self._version.epoch @property - def release(self) -> Tuple[int, ...]: - _release: Tuple[int, ...] = self._version.release - return _release + def release(self) -> tuple[int, ...]: + """The components of the "release" segment of the version. + + >>> Version("1.2.3").release + (1, 2, 3) + >>> Version("2.0.0").release + (2, 0, 0) + >>> Version("1!2.0.0.post0").release + (2, 0, 0) + + Includes trailing zeroes but not the epoch or any pre-release / development / + post-release suffixes. + """ + return self._version.release @property - def pre(self) -> Optional[Tuple[str, int]]: - _pre: Optional[Tuple[str, int]] = self._version.pre - return _pre + def pre(self) -> tuple[str, int] | None: + """The pre-release segment of the version. + + >>> print(Version("1.2.3").pre) + None + >>> Version("1.2.3a1").pre + ('a', 1) + >>> Version("1.2.3b1").pre + ('b', 1) + >>> Version("1.2.3rc1").pre + ('rc', 1) + """ + return self._version.pre @property - def post(self) -> Optional[int]: + def post(self) -> int | None: + """The post-release number of the version. + + >>> print(Version("1.2.3").post) + None + >>> Version("1.2.3.post1").post + 1 + """ return self._version.post[1] if self._version.post else None @property - def dev(self) -> Optional[int]: + def dev(self) -> int | None: + """The development number of the version. + + >>> print(Version("1.2.3").dev) + None + >>> Version("1.2.3.dev1").dev + 1 + """ return self._version.dev[1] if self._version.dev else None @property - def local(self) -> Optional[str]: + def local(self) -> str | None: + """The local version segment of the version. + + >>> print(Version("1.2.3").local) + None + >>> Version("1.2.3+abc").local + 'abc' + """ if self._version.local: return ".".join(str(x) for x in self._version.local) else: @@ -350,10 +344,31 @@ class Version(_BaseVersion): @property def public(self) -> str: + """The public portion of the version. + + >>> Version("1.2.3").public + '1.2.3' + >>> Version("1.2.3+abc").public + '1.2.3' + >>> Version("1!1.2.3dev1+abc").public + '1!1.2.3.dev1' + """ return str(self).split("+", 1)[0] @property def base_version(self) -> str: + """The "base version" of the version. + + >>> Version("1.2.3").base_version + '1.2.3' + >>> Version("1.2.3+abc").base_version + '1.2.3' + >>> Version("1!1.2.3dev1+abc").base_version + '1!1.2.3' + + The "base version" is the public version of the project without any pre or post + release markers. + """ parts = [] # Epoch @@ -367,33 +382,95 @@ class Version(_BaseVersion): @property def is_prerelease(self) -> bool: + """Whether this version is a pre-release. + + >>> Version("1.2.3").is_prerelease + False + >>> Version("1.2.3a1").is_prerelease + True + >>> Version("1.2.3b1").is_prerelease + True + >>> Version("1.2.3rc1").is_prerelease + True + >>> Version("1.2.3dev1").is_prerelease + True + """ return self.dev is not None or self.pre is not None @property def is_postrelease(self) -> bool: + """Whether this version is a post-release. + + >>> Version("1.2.3").is_postrelease + False + >>> Version("1.2.3.post1").is_postrelease + True + """ return self.post is not None @property def is_devrelease(self) -> bool: + """Whether this version is a development release. + + >>> Version("1.2.3").is_devrelease + False + >>> Version("1.2.3.dev1").is_devrelease + True + """ return self.dev is not None @property def major(self) -> int: + """The first item of :attr:`release` or ``0`` if unavailable. + + >>> Version("1.2.3").major + 1 + """ return self.release[0] if len(self.release) >= 1 else 0 @property def minor(self) -> int: + """The second item of :attr:`release` or ``0`` if unavailable. + + >>> Version("1.2.3").minor + 2 + >>> Version("1").minor + 0 + """ return self.release[1] if len(self.release) >= 2 else 0 @property def micro(self) -> int: + """The third item of :attr:`release` or ``0`` if unavailable. + + >>> Version("1.2.3").micro + 3 + >>> Version("1").micro + 0 + """ return self.release[2] if len(self.release) >= 3 else 0 -def _parse_letter_version( - letter: str, number: Union[str, bytes, SupportsInt] -) -> Optional[Tuple[str, int]]: +class _TrimmedRelease(Version): + @property + def release(self) -> tuple[int, ...]: + """ + Release segment without any trailing zeros. + >>> _TrimmedRelease('1.0.0').release + (1,) + >>> _TrimmedRelease('0.0').release + (0,) + """ + rel = super().release + nonzeros = (index for index, val in enumerate(rel) if val) + last_nonzero = max(nonzeros, default=0) + return rel[: last_nonzero + 1] + + +def _parse_letter_version( + letter: str | None, number: str | bytes | SupportsInt | None +) -> tuple[str, int] | None: if letter: # We consider there to be an implicit 0 in a pre-release if there is # not a numeral associated with it. @@ -416,7 +493,9 @@ def _parse_letter_version( letter = "post" return letter, int(number) - if not letter and number: + + assert not letter + if number: # We assume if we are given a number, but we are not given a letter # then this is using the implicit post release syntax (e.g. 1.0-1) letter = "post" @@ -429,7 +508,7 @@ def _parse_letter_version( _local_version_separators = re.compile(r"[\._-]") -def _parse_local_version(local: str) -> Optional[LocalType]: +def _parse_local_version(local: str | None) -> LocalType | None: """ Takes a string like abc.1.twelve and turns it into ("abc", 1, "twelve"). """ @@ -443,13 +522,12 @@ def _parse_local_version(local: str) -> Optional[LocalType]: def _cmpkey( epoch: int, - release: Tuple[int, ...], - pre: Optional[Tuple[str, int]], - post: Optional[Tuple[str, int]], - dev: Optional[Tuple[str, int]], - local: Optional[Tuple[SubLocalType]], + release: tuple[int, ...], + pre: tuple[str, int] | None, + post: tuple[str, int] | None, + dev: tuple[str, int] | None, + local: LocalType | None, ) -> CmpKey: - # When we compare a release version, we want to compare it with all of the # trailing zeros removed. So we'll use a reverse the list, drop all the now # leading zeros until we come to something non zero, then take the rest @@ -464,7 +542,7 @@ def _cmpkey( # if there is not a pre or a post segment. If we have one of those then # the normal sorting rules will handle this case correctly. if pre is None and post is None and dev is not None: - _pre: PrePostDevType = NegativeInfinity + _pre: CmpPrePostDevType = NegativeInfinity # Versions without a pre-release (except as noted above) should sort after # those with one. elif pre is None: @@ -474,21 +552,21 @@ def _cmpkey( # Versions without a post segment should sort before those with one. if post is None: - _post: PrePostDevType = NegativeInfinity + _post: CmpPrePostDevType = NegativeInfinity else: _post = post # Versions without a development segment should sort after those with one. if dev is None: - _dev: PrePostDevType = Infinity + _dev: CmpPrePostDevType = Infinity else: _dev = dev if local is None: # Versions without a local segment should sort before those with one. - _local: LocalType = NegativeInfinity + _local: CmpLocalType = NegativeInfinity else: # Versions with a local segment need that segment parsed to implement # the sorting rules in PEP440. diff --git a/contrib/python/packaging/py3/patches/01-support-setuptools-71.patch b/contrib/python/packaging/py3/patches/01-support-setuptools-71.patch deleted file mode 100644 index b3855dadb84..00000000000 --- a/contrib/python/packaging/py3/patches/01-support-setuptools-71.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- contrib/python/packaging/py3/packaging/utils.py (index) -+++ contrib/python/packaging/py3/packaging/utils.py (working tree) -@@ -35,7 +35,7 @@ def canonicalize_name(name: str) -> NormalizedName: - return cast(NormalizedName, value) - - --def canonicalize_version(version: Union[Version, str]) -> str: -+def canonicalize_version(version: Union[Version, str], strip_trailing_zero: bool = False) -> str: - """ - This is very similar to Version.__str__, but has one subtle difference - with the way it handles the release segment. diff --git a/contrib/python/packaging/py3/ya.make b/contrib/python/packaging/py3/ya.make index 059584b6684..aca7da38f48 100644 --- a/contrib/python/packaging/py3/ya.make +++ b/contrib/python/packaging/py3/ya.make @@ -2,24 +2,25 @@ PY3_LIBRARY() -VERSION(21.3) +VERSION(24.2) LICENSE(BSD-2-Clause AND Apache-2.0) -PEERDIR( - contrib/python/pyparsing -) - NO_LINT() PY_SRCS( TOP_LEVEL - packaging/__about__.py packaging/__init__.py + packaging/_elffile.py packaging/_manylinux.py packaging/_musllinux.py + packaging/_parser.py packaging/_structures.py + packaging/_tokenizer.py + packaging/licenses/__init__.py + packaging/licenses/_spdx.py packaging/markers.py + packaging/metadata.py packaging/requirements.py packaging/specifiers.py packaging/tags.py diff --git a/contrib/python/requests/py3/.dist-info/METADATA b/contrib/python/requests/py3/.dist-info/METADATA index 05779fa29c1..72d9dc53138 100644 --- a/contrib/python/requests/py3/.dist-info/METADATA +++ b/contrib/python/requests/py3/.dist-info/METADATA @@ -1,14 +1,13 @@ Metadata-Version: 2.1 Name: requests -Version: 2.31.0 +Version: 2.32.3 Summary: Python HTTP for Humans. Home-page: https://requests.readthedocs.io Author: Kenneth Reitz Author-email: me@kennethreitz.org -License: Apache 2.0 +License: Apache-2.0 Project-URL: Documentation, https://requests.readthedocs.io Project-URL: Source, https://github.com/psf/requests -Platform: UNKNOWN Classifier: Development Status :: 5 - Production/Stable Classifier: Environment :: Web Environment Classifier: Intended Audience :: Developers @@ -17,28 +16,28 @@ Classifier: Natural Language :: English Classifier: Operating System :: OS Independent Classifier: Programming Language :: Python Classifier: Programming Language :: Python :: 3 -Classifier: Programming Language :: Python :: 3.7 Classifier: Programming Language :: Python :: 3.8 Classifier: Programming Language :: Python :: 3.9 Classifier: Programming Language :: Python :: 3.10 Classifier: Programming Language :: Python :: 3.11 +Classifier: Programming Language :: Python :: 3.12 Classifier: Programming Language :: Python :: 3 :: Only Classifier: Programming Language :: Python :: Implementation :: CPython Classifier: Programming Language :: Python :: Implementation :: PyPy Classifier: Topic :: Internet :: WWW/HTTP Classifier: Topic :: Software Development :: Libraries -Requires-Python: >=3.7 +Requires-Python: >=3.8 Description-Content-Type: text/markdown License-File: LICENSE -Requires-Dist: charset-normalizer (<4,>=2) -Requires-Dist: idna (<4,>=2.5) -Requires-Dist: urllib3 (<3,>=1.21.1) -Requires-Dist: certifi (>=2017.4.17) +Requires-Dist: charset-normalizer <4,>=2 +Requires-Dist: idna <4,>=2.5 +Requires-Dist: urllib3 <3,>=1.21.1 +Requires-Dist: certifi >=2017.4.17 Provides-Extra: security Provides-Extra: socks -Requires-Dist: PySocks (!=1.5.7,>=1.5.6) ; extra == 'socks' +Requires-Dist: PySocks !=1.5.7,>=1.5.6 ; extra == 'socks' Provides-Extra: use_chardet_on_py3 -Requires-Dist: chardet (<6,>=3.0.2) ; extra == 'use_chardet_on_py3' +Requires-Dist: chardet <6,>=3.0.2 ; extra == 'use_chardet_on_py3' # Requests @@ -63,7 +62,7 @@ Requests allows you to send HTTP/1.1 requests extremely easily. There’s no nee Requests is one of the most downloaded Python packages today, pulling in around `30M downloads / week`— according to GitHub, Requests is currently [depended upon](https://github.com/psf/requests/network/dependents?package_id=UGFja2FnZS01NzA4OTExNg%3D%3D) by `1,000,000+` repositories. You may certainly put your trust in this code. -[](https://pepy.tech/project/requests) +[](https://pepy.tech/project/requests) [](https://pypi.org/project/requests) [](https://github.com/psf/requests/graphs/contributors) @@ -75,7 +74,7 @@ Requests is available on PyPI: $ python -m pip install requests ``` -Requests officially supports Python 3.7+. +Requests officially supports Python 3.8+. ## Supported Features & Best–Practices @@ -118,5 +117,3 @@ git config --global fetch.fsck.badTimezone ignore --- [](https://kennethreitz.org) [](https://www.python.org/psf) - - diff --git a/contrib/python/requests/py3/README.md b/contrib/python/requests/py3/README.md index c90ef08a5e9..79cf54d1e15 100644 --- a/contrib/python/requests/py3/README.md +++ b/contrib/python/requests/py3/README.md @@ -21,7 +21,7 @@ Requests allows you to send HTTP/1.1 requests extremely easily. There’s no nee Requests is one of the most downloaded Python packages today, pulling in around `30M downloads / week`— according to GitHub, Requests is currently [depended upon](https://github.com/psf/requests/network/dependents?package_id=UGFja2FnZS01NzA4OTExNg%3D%3D) by `1,000,000+` repositories. You may certainly put your trust in this code. -[](https://pepy.tech/project/requests) +[](https://pepy.tech/project/requests) [](https://pypi.org/project/requests) [](https://github.com/psf/requests/graphs/contributors) @@ -33,7 +33,7 @@ Requests is available on PyPI: $ python -m pip install requests ``` -Requests officially supports Python 3.7+. +Requests officially supports Python 3.8+. ## Supported Features & Best–Practices diff --git a/contrib/python/requests/py3/patches/01-arcadia.patch b/contrib/python/requests/py3/patches/01-arcadia.patch index 30b2617ba91..999df2aaa6a 100644 --- a/contrib/python/requests/py3/patches/01-arcadia.patch +++ b/contrib/python/requests/py3/patches/01-arcadia.patch @@ -1,23 +1,11 @@ --- contrib/python/requests/py3/requests/adapters.py (index) +++ contrib/python/requests/py3/requests/adapters.py (working tree) -@@ -259,7 +259,7 @@ class HTTPAdapter(BaseAdapter): - if not cert_loc: - cert_loc = extract_zipped_paths(DEFAULT_CA_BUNDLE_PATH) - -- if not cert_loc or not os.path.exists(cert_loc): -+ if not cert_loc or isinstance(cert_loc, basestring) and not os.path.exists(cert_loc): - raise OSError( - f"Could not find a suitable TLS CA certificate bundle, " - f"invalid path: {cert_loc}" -@@ -267,7 +267,7 @@ class HTTPAdapter(BaseAdapter): - - conn.cert_reqs = "CERT_REQUIRED" - -- if not os.path.isdir(cert_loc): -+ if not isinstance(cert_loc, basestring) or not os.path.isdir(cert_loc): - conn.ca_certs = cert_loc - else: - conn.ca_cert_dir = cert_loc +@@ -259,1 +259,1 @@ class HTTPAdapter(BaseAdapter): +- if not os.path.exists(cert_loc): ++ if isinstance(cert_loc, str) and not os.path.exists(cert_loc): +@@ -267,1 +267,1 @@ class HTTPAdapter(BaseAdapter): +- if not os.path.isdir(cert_loc): ++ if not isinstance(cert_loc, str) or not os.path.isdir(cert_loc): --- contrib/python/requests/py3/requests/utils.py (index) +++ contrib/python/requests/py3/requests/utils.py (working tree) @@ -260,7 +260,7 @@ def extract_zipped_paths(path): diff --git a/contrib/python/requests/py3/patches/02-hack-for-gevent.patch b/contrib/python/requests/py3/patches/02-hack-for-gevent.patch new file mode 100644 index 00000000000..b7eea5be8bc --- /dev/null +++ b/contrib/python/requests/py3/patches/02-hack-for-gevent.patch @@ -0,0 +1,12 @@ +--- contrib/python/requests/py3/requests/adapters.py (index) ++++ contrib/python/requests/py3/requests/adapters.py (working tree) +@@ -76,7 +76,8 @@ DEFAULT_POOL_TIMEOUT = None + + try: + import ssl # noqa: F401 +- ++ import urllib3.util.ssl_ ++ urllib3.util.ssl_.SSLContext = ssl.SSLContext + _preloaded_ssl_context = create_urllib3_context() + _preloaded_ssl_context.load_verify_locations( + extract_zipped_paths(DEFAULT_CA_BUNDLE_PATH) diff --git a/contrib/python/requests/py3/requests/__init__.py b/contrib/python/requests/py3/requests/__init__.py index 300a16c5741..051cda1340e 100644 --- a/contrib/python/requests/py3/requests/__init__.py +++ b/contrib/python/requests/py3/requests/__init__.py @@ -83,7 +83,11 @@ def check_compatibility(urllib3_version, chardet_version, charset_normalizer_ver # charset_normalizer >= 2.0.0 < 4.0.0 assert (2, 0, 0) <= (major, minor, patch) < (4, 0, 0) else: - raise Exception("You need either charset_normalizer or chardet installed") + warnings.warn( + "Unable to find acceptable character detection dependency " + "(chardet or charset_normalizer).", + RequestsDependencyWarning, + ) def _check_cryptography(cryptography_version): diff --git a/contrib/python/requests/py3/requests/__version__.py b/contrib/python/requests/py3/requests/__version__.py index 5063c3f8ee7..2c105aca7d4 100644 --- a/contrib/python/requests/py3/requests/__version__.py +++ b/contrib/python/requests/py3/requests/__version__.py @@ -5,10 +5,10 @@ __title__ = "requests" __description__ = "Python HTTP for Humans." __url__ = "https://requests.readthedocs.io" -__version__ = "2.31.0" -__build__ = 0x023100 +__version__ = "2.32.3" +__build__ = 0x023203 __author__ = "Kenneth Reitz" __author_email__ = "me@kennethreitz.org" -__license__ = "Apache 2.0" +__license__ = "Apache-2.0" __copyright__ = "Copyright Kenneth Reitz" __cake__ = "\u2728 \U0001f370 \u2728" diff --git a/contrib/python/requests/py3/requests/adapters.py b/contrib/python/requests/py3/requests/adapters.py index 25c6e5c51bf..9a8efc786cf 100644 --- a/contrib/python/requests/py3/requests/adapters.py +++ b/contrib/python/requests/py3/requests/adapters.py @@ -8,6 +8,8 @@ and maintain connections. import os.path import socket # noqa: F401 +import typing +import warnings from urllib3.exceptions import ClosedPoolError, ConnectTimeoutError from urllib3.exceptions import HTTPError as _HTTPError @@ -25,6 +27,7 @@ from urllib3.poolmanager import PoolManager, proxy_from_url from urllib3.util import Timeout as TimeoutSauce from urllib3.util import parse_url from urllib3.util.retry import Retry +from urllib3.util.ssl_ import create_urllib3_context from .auth import _basic_auth_str from .compat import basestring, urlparse @@ -61,12 +64,77 @@ except ImportError: raise InvalidSchema("Missing dependencies for SOCKS support.") +if typing.TYPE_CHECKING: + from .models import PreparedRequest + + DEFAULT_POOLBLOCK = False DEFAULT_POOLSIZE = 10 DEFAULT_RETRIES = 0 DEFAULT_POOL_TIMEOUT = None +try: + import ssl # noqa: F401 + import urllib3.util.ssl_ + urllib3.util.ssl_.SSLContext = ssl.SSLContext + _preloaded_ssl_context = create_urllib3_context() + _preloaded_ssl_context.load_verify_locations( + extract_zipped_paths(DEFAULT_CA_BUNDLE_PATH) + ) +except ImportError: + # Bypass default SSLContext creation when Python + # interpreter isn't built with the ssl module. + _preloaded_ssl_context = None + + +def _urllib3_request_context( + request: "PreparedRequest", + verify: "bool | str | None", + client_cert: "typing.Tuple[str, str] | str | None", + poolmanager: "PoolManager", +) -> "(typing.Dict[str, typing.Any], typing.Dict[str, typing.Any])": + host_params = {} + pool_kwargs = {} + parsed_request_url = urlparse(request.url) + scheme = parsed_request_url.scheme.lower() + port = parsed_request_url.port + + # Determine if we have and should use our default SSLContext + # to optimize performance on standard requests. + poolmanager_kwargs = getattr(poolmanager, "connection_pool_kw", {}) + has_poolmanager_ssl_context = poolmanager_kwargs.get("ssl_context") + should_use_default_ssl_context = ( + _preloaded_ssl_context is not None and not has_poolmanager_ssl_context + ) + + cert_reqs = "CERT_REQUIRED" + if verify is False: + cert_reqs = "CERT_NONE" + elif verify is True and should_use_default_ssl_context: + pool_kwargs["ssl_context"] = _preloaded_ssl_context + elif isinstance(verify, str): + if not os.path.isdir(verify): + pool_kwargs["ca_certs"] = verify + else: + pool_kwargs["ca_cert_dir"] = verify + pool_kwargs["cert_reqs"] = cert_reqs + if client_cert is not None: + if isinstance(client_cert, tuple) and len(client_cert) == 2: + pool_kwargs["cert_file"] = client_cert[0] + pool_kwargs["key_file"] = client_cert[1] + else: + # According to our docs, we allow users to specify just the client + # cert path + pool_kwargs["cert_file"] = client_cert + host_params = { + "scheme": scheme, + "host": parsed_request_url.hostname, + "port": port, + } + return host_params, pool_kwargs + + class BaseAdapter: """The Base Transport Adapter""" @@ -247,28 +315,26 @@ class HTTPAdapter(BaseAdapter): :param cert: The SSL certificate to verify. """ if url.lower().startswith("https") and verify: + conn.cert_reqs = "CERT_REQUIRED" - cert_loc = None - - # Allow self-specified cert location. + # Only load the CA certificates if 'verify' is a string indicating the CA bundle to use. + # Otherwise, if verify is a boolean, we don't load anything since + # the connection will be using a context with the default certificates already loaded, + # and this avoids a call to the slow load_verify_locations() if verify is not True: + # `verify` must be a str with a path then cert_loc = verify - if not cert_loc: - cert_loc = extract_zipped_paths(DEFAULT_CA_BUNDLE_PATH) + if isinstance(cert_loc, str) and not os.path.exists(cert_loc): + raise OSError( + f"Could not find a suitable TLS CA certificate bundle, " + f"invalid path: {cert_loc}" + ) - if not cert_loc or isinstance(cert_loc, basestring) and not os.path.exists(cert_loc): - raise OSError( - f"Could not find a suitable TLS CA certificate bundle, " - f"invalid path: {cert_loc}" - ) - - conn.cert_reqs = "CERT_REQUIRED" - - if not isinstance(cert_loc, basestring) or not os.path.isdir(cert_loc): - conn.ca_certs = cert_loc - else: - conn.ca_cert_dir = cert_loc + if not isinstance(cert_loc, str) or not os.path.isdir(cert_loc): + conn.ca_certs = cert_loc + else: + conn.ca_cert_dir = cert_loc else: conn.cert_reqs = "CERT_NONE" conn.ca_certs = None @@ -328,8 +394,110 @@ class HTTPAdapter(BaseAdapter): return response + def build_connection_pool_key_attributes(self, request, verify, cert=None): + """Build the PoolKey attributes used by urllib3 to return a connection. + + This looks at the PreparedRequest, the user-specified verify value, + and the value of the cert parameter to determine what PoolKey values + to use to select a connection from a given urllib3 Connection Pool. + + The SSL related pool key arguments are not consistently set. As of + this writing, use the following to determine what keys may be in that + dictionary: + + * If ``verify`` is ``True``, ``"ssl_context"`` will be set and will be the + default Requests SSL Context + * If ``verify`` is ``False``, ``"ssl_context"`` will not be set but + ``"cert_reqs"`` will be set + * If ``verify`` is a string, (i.e., it is a user-specified trust bundle) + ``"ca_certs"`` will be set if the string is not a directory recognized + by :py:func:`os.path.isdir`, otherwise ``"ca_certs_dir"`` will be + set. + * If ``"cert"`` is specified, ``"cert_file"`` will always be set. If + ``"cert"`` is a tuple with a second item, ``"key_file"`` will also + be present + + To override these settings, one may subclass this class, call this + method and use the above logic to change parameters as desired. For + example, if one wishes to use a custom :py:class:`ssl.SSLContext` one + must both set ``"ssl_context"`` and based on what else they require, + alter the other keys to ensure the desired behaviour. + + :param request: + The PreparedReqest being sent over the connection. + :type request: + :class:`~requests.models.PreparedRequest` + :param verify: + Either a boolean, in which case it controls whether + we verify the server's TLS certificate, or a string, in which case it + must be a path to a CA bundle to use. + :param cert: + (optional) Any user-provided SSL certificate for client + authentication (a.k.a., mTLS). This may be a string (i.e., just + the path to a file which holds both certificate and key) or a + tuple of length 2 with the certificate file path and key file + path. + :returns: + A tuple of two dictionaries. The first is the "host parameters" + portion of the Pool Key including scheme, hostname, and port. The + second is a dictionary of SSLContext related parameters. + """ + return _urllib3_request_context(request, verify, cert, self.poolmanager) + + def get_connection_with_tls_context(self, request, verify, proxies=None, cert=None): + """Returns a urllib3 connection for the given request and TLS settings. + This should not be called from user code, and is only exposed for use + when subclassing the :class:`HTTPAdapter <requests.adapters.HTTPAdapter>`. + + :param request: + The :class:`PreparedRequest <PreparedRequest>` object to be sent + over the connection. + :param verify: + Either a boolean, in which case it controls whether we verify the + server's TLS certificate, or a string, in which case it must be a + path to a CA bundle to use. + :param proxies: + (optional) The proxies dictionary to apply to the request. + :param cert: + (optional) Any user-provided SSL certificate to be used for client + authentication (a.k.a., mTLS). + :rtype: + urllib3.ConnectionPool + """ + proxy = select_proxy(request.url, proxies) + try: + host_params, pool_kwargs = self.build_connection_pool_key_attributes( + request, + verify, + cert, + ) + except ValueError as e: + raise InvalidURL(e, request=request) + if proxy: + proxy = prepend_scheme_if_needed(proxy, "http") + proxy_url = parse_url(proxy) + if not proxy_url.host: + raise InvalidProxyURL( + "Please check proxy URL. It is malformed " + "and could be missing the host." + ) + proxy_manager = self.proxy_manager_for(proxy) + conn = proxy_manager.connection_from_host( + **host_params, pool_kwargs=pool_kwargs + ) + else: + # Only scheme should be lower case + conn = self.poolmanager.connection_from_host( + **host_params, pool_kwargs=pool_kwargs + ) + + return conn + def get_connection(self, url, proxies=None): - """Returns a urllib3 connection for the given URL. This should not be + """DEPRECATED: Users should move to `get_connection_with_tls_context` + for all subclasses of HTTPAdapter using Requests>=2.32.2. + + Returns a urllib3 connection for the given URL. This should not be called from user code, and is only exposed for use when subclassing the :class:`HTTPAdapter <requests.adapters.HTTPAdapter>`. @@ -337,6 +505,15 @@ class HTTPAdapter(BaseAdapter): :param proxies: (optional) A Requests-style dictionary of proxies used on this request. :rtype: urllib3.ConnectionPool """ + warnings.warn( + ( + "`get_connection` has been deprecated in favor of " + "`get_connection_with_tls_context`. Custom HTTPAdapter subclasses " + "will need to migrate for Requests>=2.32.2. Please see " + "https://github.com/psf/requests/pull/6710 for more details." + ), + DeprecationWarning, + ) proxy = select_proxy(url, proxies) if proxy: @@ -391,6 +568,9 @@ class HTTPAdapter(BaseAdapter): using_socks_proxy = proxy_scheme.startswith("socks") url = request.path_url + if url.startswith("//"): # Don't confuse urllib3 + url = f"/{url.lstrip('/')}" + if is_proxied_http_request and not using_socks_proxy: url = urldefragauth(request.url) @@ -451,7 +631,9 @@ class HTTPAdapter(BaseAdapter): """ try: - conn = self.get_connection(request.url, proxies) + conn = self.get_connection_with_tls_context( + request, verify, proxies=proxies, cert=cert + ) except LocationValueError as e: raise InvalidURL(e, request=request) diff --git a/contrib/python/requests/py3/requests/api.py b/contrib/python/requests/py3/requests/api.py index cd0b3eeac3e..5960744552e 100644 --- a/contrib/python/requests/py3/requests/api.py +++ b/contrib/python/requests/py3/requests/api.py @@ -25,7 +25,7 @@ def request(method, url, **kwargs): :param cookies: (optional) Dict or CookieJar object to send with the :class:`Request`. :param files: (optional) Dictionary of ``'name': file-like-objects`` (or ``{'name': file-tuple}``) for multipart encoding upload. ``file-tuple`` can be a 2-tuple ``('filename', fileobj)``, 3-tuple ``('filename', fileobj, 'content_type')`` - or a 4-tuple ``('filename', fileobj, 'content_type', custom_headers)``, where ``'content-type'`` is a string + or a 4-tuple ``('filename', fileobj, 'content_type', custom_headers)``, where ``'content_type'`` is a string defining the content type of the given file and ``custom_headers`` a dict-like object containing additional headers to add for the file. :param auth: (optional) Auth tuple to enable Basic/Digest/Custom HTTP Auth. diff --git a/contrib/python/requests/py3/requests/auth.py b/contrib/python/requests/py3/requests/auth.py index 9733686ddb3..4a7ce6dc146 100644 --- a/contrib/python/requests/py3/requests/auth.py +++ b/contrib/python/requests/py3/requests/auth.py @@ -258,7 +258,6 @@ class HTTPDigestAuth(AuthBase): s_auth = r.headers.get("www-authenticate", "") if "digest" in s_auth.lower() and self._thread_local.num_401_calls < 2: - self._thread_local.num_401_calls += 1 pat = re.compile(r"digest ", flags=re.IGNORECASE) self._thread_local.chal = parse_dict_header(pat.sub("", s_auth, count=1)) diff --git a/contrib/python/requests/py3/requests/compat.py b/contrib/python/requests/py3/requests/compat.py index 6776163c94f..095de1b6cae 100644 --- a/contrib/python/requests/py3/requests/compat.py +++ b/contrib/python/requests/py3/requests/compat.py @@ -7,13 +7,28 @@ between Python 2 and Python 3. It remains for backwards compatibility until the next major version. """ -try: - import chardet -except ImportError: - import charset_normalizer as chardet - +import importlib import sys +# ------------------- +# Character Detection +# ------------------- + + +def _resolve_char_detection(): + """Find supported character detection libraries.""" + chardet = None + for lib in ("chardet", "charset_normalizer"): + if chardet is None: + try: + chardet = importlib.import_module(lib) + except ImportError: + pass + return chardet + + +chardet = _resolve_char_detection() + # ------- # Pythons # ------- diff --git a/contrib/python/requests/py3/requests/cookies.py b/contrib/python/requests/py3/requests/cookies.py index bf54ab237e4..f69d0cda9e1 100644 --- a/contrib/python/requests/py3/requests/cookies.py +++ b/contrib/python/requests/py3/requests/cookies.py @@ -2,7 +2,7 @@ requests.cookies ~~~~~~~~~~~~~~~~ -Compatibility code to be able to use `cookielib.CookieJar` with requests. +Compatibility code to be able to use `http.cookiejar.CookieJar` with requests. requests.utils imports from here, so be careful with imports. """ @@ -23,7 +23,7 @@ except ImportError: class MockRequest: """Wraps a `requests.Request` to mimic a `urllib2.Request`. - The code in `cookielib.CookieJar` expects this interface in order to correctly + The code in `http.cookiejar.CookieJar` expects this interface in order to correctly manage cookie policies, i.e., determine whether a cookie can be set, given the domains of the request and the cookie. @@ -76,7 +76,7 @@ class MockRequest: return self._r.headers.get(name, self._new_headers.get(name, default)) def add_header(self, key, val): - """cookielib has no legitimate use for this method; add it back if you find one.""" + """cookiejar has no legitimate use for this method; add it back if you find one.""" raise NotImplementedError( "Cookie headers should be added with add_unredirected_header()" ) @@ -104,11 +104,11 @@ class MockResponse: """Wraps a `httplib.HTTPMessage` to mimic a `urllib.addinfourl`. ...what? Basically, expose the parsed HTTP headers from the server response - the way `cookielib` expects to see them. + the way `http.cookiejar` expects to see them. """ def __init__(self, headers): - """Make a MockResponse for `cookielib` to read. + """Make a MockResponse for `cookiejar` to read. :param headers: a httplib.HTTPMessage or analogous carrying the headers """ @@ -124,7 +124,7 @@ class MockResponse: def extract_cookies_to_jar(jar, request, response): """Extract the cookies from the response into a CookieJar. - :param jar: cookielib.CookieJar (not necessarily a RequestsCookieJar) + :param jar: http.cookiejar.CookieJar (not necessarily a RequestsCookieJar) :param request: our own requests.Request object :param response: urllib3.HTTPResponse object """ @@ -174,7 +174,7 @@ class CookieConflictError(RuntimeError): class RequestsCookieJar(cookielib.CookieJar, MutableMapping): - """Compatibility class; is a cookielib.CookieJar, but exposes a dict + """Compatibility class; is a http.cookiejar.CookieJar, but exposes a dict interface. This is the CookieJar we create by default for requests and sessions that @@ -341,7 +341,7 @@ class RequestsCookieJar(cookielib.CookieJar, MutableMapping): self.set(name, value) def __delitem__(self, name): - """Deletes a cookie given a name. Wraps ``cookielib.CookieJar``'s + """Deletes a cookie given a name. Wraps ``http.cookiejar.CookieJar``'s ``remove_cookie_by_name()``. """ remove_cookie_by_name(self, name) diff --git a/contrib/python/requests/py3/requests/exceptions.py b/contrib/python/requests/py3/requests/exceptions.py index e1cedf883d3..83986b48984 100644 --- a/contrib/python/requests/py3/requests/exceptions.py +++ b/contrib/python/requests/py3/requests/exceptions.py @@ -41,6 +41,16 @@ class JSONDecodeError(InvalidJSONError, CompatJSONDecodeError): CompatJSONDecodeError.__init__(self, *args) InvalidJSONError.__init__(self, *self.args, **kwargs) + def __reduce__(self): + """ + The __reduce__ method called when pickling the object must + be the one from the JSONDecodeError (be it json/simplejson) + as it expects all the arguments for instantiation, not just + one like the IOError, and the MRO would by default call the + __reduce__ method from the IOError due to the inheritance order. + """ + return CompatJSONDecodeError.__reduce__(self) + class HTTPError(RequestException): """An HTTP error occurred.""" diff --git a/contrib/python/requests/py3/requests/models.py b/contrib/python/requests/py3/requests/models.py index 617a4134e55..8f56ca7d23a 100644 --- a/contrib/python/requests/py3/requests/models.py +++ b/contrib/python/requests/py3/requests/models.py @@ -170,7 +170,7 @@ class RequestEncodingMixin: ) ) - for (k, v) in files: + for k, v in files: # support for explicit filename ft = None fh = None @@ -268,7 +268,6 @@ class Request(RequestHooksMixin): hooks=None, json=None, ): - # Default empty dicts for dict params. data = [] if data is None else data files = [] if files is None else files @@ -277,7 +276,7 @@ class Request(RequestHooksMixin): hooks = {} if hooks is None else hooks self.hooks = default_hooks() - for (k, v) in list(hooks.items()): + for k, v in list(hooks.items()): self.register_hook(event=k, hook=v) self.method = method @@ -790,7 +789,12 @@ class Response: @property def apparent_encoding(self): """The apparent encoding, provided by the charset_normalizer or chardet libraries.""" - return chardet.detect(self.content)["encoding"] + if chardet is not None: + return chardet.detect(self.content)["encoding"] + else: + # If no character detection library is available, we'll fall back + # to a standard Python utf-8 str. + return "utf-8" def iter_content(self, chunk_size=1, decode_unicode=False): """Iterates over the response data. When stream=True is set on the @@ -865,7 +869,6 @@ class Response: for chunk in self.iter_content( chunk_size=chunk_size, decode_unicode=decode_unicode ): - if pending is not None: chunk = pending + chunk diff --git a/contrib/python/requests/py3/requests/packages.py b/contrib/python/requests/py3/requests/packages.py index 77c45c9e90c..5ab3d8e250d 100644 --- a/contrib/python/requests/py3/requests/packages.py +++ b/contrib/python/requests/py3/requests/packages.py @@ -1,13 +1,6 @@ import sys -try: - import chardet -except ImportError: - import warnings - - import charset_normalizer as chardet - - warnings.filterwarnings("ignore", "Trying to detect", module="charset_normalizer") +from .compat import chardet # This code exists for backwards compatibility reasons. # I don't like it either. Just look the other way. :) @@ -20,9 +13,11 @@ for package in ("urllib3", "idna"): if mod == package or mod.startswith(f"{package}."): sys.modules[f"requests.packages.{mod}"] = sys.modules[mod] -target = chardet.__name__ -for mod in list(sys.modules): - if mod == target or mod.startswith(f"{target}."): - target = target.replace(target, "chardet") - sys.modules[f"requests.packages.{target}"] = sys.modules[mod] -# Kinda cool, though, right? +if chardet is not None: + target = chardet.__name__ + for mod in list(sys.modules): + if mod == target or mod.startswith(f"{target}."): + imported_mod = sys.modules[mod] + sys.modules[f"requests.packages.{mod}"] = imported_mod + mod = mod.replace(target, "chardet") + sys.modules[f"requests.packages.{mod}"] = imported_mod diff --git a/contrib/python/requests/py3/requests/sessions.py b/contrib/python/requests/py3/requests/sessions.py index dbcf2a7b0ee..b387bc36df7 100644 --- a/contrib/python/requests/py3/requests/sessions.py +++ b/contrib/python/requests/py3/requests/sessions.py @@ -262,7 +262,6 @@ class SessionRedirectMixin: if yield_requests: yield req else: - resp = self.send( req, stream=stream, @@ -326,7 +325,7 @@ class SessionRedirectMixin: # urllib3 handles proxy authorization for us in the standard adapter. # Avoid appending this to TLS tunneled requests where it may be leaked. - if not scheme.startswith('https') and username and password: + if not scheme.startswith("https") and username and password: headers["Proxy-Authorization"] = _basic_auth_str(username, password) return new_proxies @@ -389,7 +388,6 @@ class Session(SessionRedirectMixin): ] def __init__(self): - #: A case-insensitive dictionary of headers to be sent on each #: :class:`Request <Request>` sent from this #: :class:`Session <Session>`. @@ -545,6 +543,8 @@ class Session(SessionRedirectMixin): :type allow_redirects: bool :param proxies: (optional) Dictionary mapping protocol or protocol and hostname to the URL of the proxy. + :param hooks: (optional) Dictionary mapping hook name to one event or + list of events, event must be callable. :param stream: (optional) whether to immediately download the response content. Defaults to ``False``. :param verify: (optional) Either a boolean, in which case it controls whether we verify @@ -711,7 +711,6 @@ class Session(SessionRedirectMixin): # Persist cookies if r.history: - # If the hooks create history then we want those cookies too for resp in r.history: extract_cookies_to_jar(self.cookies, resp.request, resp.raw) @@ -759,7 +758,7 @@ class Session(SessionRedirectMixin): # Set environment's proxies. no_proxy = proxies.get("no_proxy") if proxies is not None else None env_proxies = get_environ_proxies(url, no_proxy=no_proxy) - for (k, v) in env_proxies.items(): + for k, v in env_proxies.items(): proxies.setdefault(k, v) # Look for requests environment configuration @@ -785,8 +784,7 @@ class Session(SessionRedirectMixin): :rtype: requests.adapters.BaseAdapter """ - for (prefix, adapter) in self.adapters.items(): - + for prefix, adapter in self.adapters.items(): if url.lower().startswith(prefix.lower()): return adapter diff --git a/contrib/python/requests/py3/requests/status_codes.py b/contrib/python/requests/py3/requests/status_codes.py index 4bd072be976..c7945a2f068 100644 --- a/contrib/python/requests/py3/requests/status_codes.py +++ b/contrib/python/requests/py3/requests/status_codes.py @@ -24,7 +24,7 @@ _codes = { # Informational. 100: ("continue",), 101: ("switching_protocols",), - 102: ("processing",), + 102: ("processing", "early-hints"), 103: ("checkpoint",), 122: ("uri_too_long", "request_uri_too_long"), 200: ("ok", "okay", "all_ok", "all_okay", "all_good", "\\o/", "✓"), @@ -65,8 +65,8 @@ _codes = { 410: ("gone",), 411: ("length_required",), 412: ("precondition_failed", "precondition"), - 413: ("request_entity_too_large",), - 414: ("request_uri_too_large",), + 413: ("request_entity_too_large", "content_too_large"), + 414: ("request_uri_too_large", "uri_too_long"), 415: ("unsupported_media_type", "unsupported_media", "media_type"), 416: ( "requested_range_not_satisfiable", @@ -76,10 +76,10 @@ _codes = { 417: ("expectation_failed",), 418: ("im_a_teapot", "teapot", "i_am_a_teapot"), 421: ("misdirected_request",), - 422: ("unprocessable_entity", "unprocessable"), + 422: ("unprocessable_entity", "unprocessable", "unprocessable_content"), 423: ("locked",), 424: ("failed_dependency", "dependency"), - 425: ("unordered_collection", "unordered"), + 425: ("unordered_collection", "unordered", "too_early"), 426: ("upgrade_required", "upgrade"), 428: ("precondition_required", "precondition"), 429: ("too_many_requests", "too_many"), diff --git a/contrib/python/requests/py3/requests/utils.py b/contrib/python/requests/py3/requests/utils.py index 7e0e3184dc7..993efce108a 100644 --- a/contrib/python/requests/py3/requests/utils.py +++ b/contrib/python/requests/py3/requests/utils.py @@ -97,6 +97,8 @@ if sys.platform == "win32": # '<local>' string by the localhost entry and the corresponding # canonical entry. proxyOverride = proxyOverride.split(";") + # filter out empty strings to avoid re.match return true in the following code. + proxyOverride = filter(None, proxyOverride) # now check if we match one of the registry values. for test in proxyOverride: if test == "<local>": @@ -134,6 +136,9 @@ def super_len(o): total_length = None current_position = 0 + if isinstance(o, str): + o = o.encode("utf-8") + if hasattr(o, "__len__"): total_length = len(o) @@ -466,11 +471,7 @@ def dict_from_cookiejar(cj): :rtype: dict """ - cookie_dict = {} - - for cookie in cj: - cookie_dict[cookie.name] = cookie.value - + cookie_dict = {cookie.name: cookie.value for cookie in cj} return cookie_dict @@ -767,6 +768,7 @@ def should_bypass_proxies(url, no_proxy): :rtype: bool """ + # Prioritize lowercase environment variables over uppercase # to keep a consistent behaviour with other http projects (curl, wget). def get_proxy(key): @@ -862,7 +864,7 @@ def select_proxy(url, proxies): def resolve_proxies(request, proxies, trust_env=True): """This method takes proxy information from a request and configuration input to resolve a mapping of target proxies. This will consider settings - such a NO_PROXY to strip proxy configurations. + such as NO_PROXY to strip proxy configurations. :param request: Request or PreparedRequest :param proxies: A dictionary of schemes or schemes and hosts to proxy URLs @@ -1054,7 +1056,7 @@ def _validate_header_part(header, header_part, header_validator_index): if not validator.match(header_part): header_kind = "name" if header_validator_index == 0 else "value" raise InvalidHeader( - f"Invalid leading whitespace, reserved character(s), or return" + f"Invalid leading whitespace, reserved character(s), or return " f"character(s) in header {header_kind}: {header_part!r}" ) diff --git a/contrib/python/requests/py3/ya.make b/contrib/python/requests/py3/ya.make index 50a6f84bdc0..81ad2efcc41 100644 --- a/contrib/python/requests/py3/ya.make +++ b/contrib/python/requests/py3/ya.make @@ -2,7 +2,7 @@ PY3_LIBRARY() -VERSION(2.31.0) +VERSION(2.32.3) LICENSE(Apache-2.0) |