aboutsummaryrefslogtreecommitdiff
path: root/crypto
diff options
context:
space:
mode:
Diffstat (limited to 'crypto')
-rw-r--r--crypto/CMakeLists.txt176
-rw-r--r--crypto/Makefile.am114
-rw-r--r--crypto/Makefile.am.elf-arm3
-rw-r--r--crypto/Makefile.am.elf-mips3
-rw-r--r--crypto/Makefile.am.elf-mips643
-rw-r--r--crypto/Makefile.am.elf-x86_6416
-rw-r--r--crypto/Makefile.am.macosx-x86_6416
-rw-r--r--crypto/Makefile.am.masm-x86_6416
-rw-r--r--crypto/Makefile.am.mingw64-x86_6416
-rw-r--r--crypto/arch/loongarch64/crypto_arch.h21
-rw-r--r--crypto/arch/mips/crypto_arch.h21
-rw-r--r--crypto/bn/arch/loongarch64/bn_arch.h23
-rw-r--r--crypto/compat/getdelim.c78
-rw-r--r--crypto/compat/getline.c40
-rw-r--r--crypto/compat/posix_win.c91
-rw-r--r--crypto/compat/ui_openssl_win.c4
16 files changed, 349 insertions, 292 deletions
diff --git a/crypto/CMakeLists.txt b/crypto/CMakeLists.txt
index 5ee20ff..64bccd8 100644
--- a/crypto/CMakeLists.txt
+++ b/crypto/CMakeLists.txt
@@ -15,11 +15,7 @@ if(HOST_ASM_ELF_ARMV4)
15 add_definitions(-DAES_ASM) 15 add_definitions(-DAES_ASM)
16 add_definitions(-DOPENSSL_BN_ASM_MONT) 16 add_definitions(-DOPENSSL_BN_ASM_MONT)
17 add_definitions(-DGHASH_ASM) 17 add_definitions(-DGHASH_ASM)
18 add_definitions(-DSHA1_ASM)
19 add_definitions(-DSHA256_ASM)
20 add_definitions(-DSHA512_ASM)
21 add_definitions(-DOPENSSL_CPUID_OBJ) 18 add_definitions(-DOPENSSL_CPUID_OBJ)
22 set_property(SOURCE ${ASM_ARMV4_ELF_SRC} PROPERTY LANGUAGE C)
23 set(CRYPTO_SRC ${CRYPTO_SRC} ${ASM_ARMV4_ELF_SRC}) 19 set(CRYPTO_SRC ${CRYPTO_SRC} ${ASM_ARMV4_ELF_SRC})
24endif() 20endif()
25 21
@@ -33,13 +29,8 @@ if(HOST_ASM_ELF_X86_64)
33 bn/modexp512-elf-x86_64.S 29 bn/modexp512-elf-x86_64.S
34 bn/mont-elf-x86_64.S 30 bn/mont-elf-x86_64.S
35 bn/mont5-elf-x86_64.S 31 bn/mont5-elf-x86_64.S
36 md5/md5-elf-x86_64.S
37 modes/ghash-elf-x86_64.S 32 modes/ghash-elf-x86_64.S
38 rc4/rc4-elf-x86_64.S 33 rc4/rc4-elf-x86_64.S
39 sha/sha1-elf-x86_64.S
40 sha/sha256-elf-x86_64.S
41 sha/sha512-elf-x86_64.S
42 cpuid-elf-x86_64.S
43 34
44 bn/arch/amd64/bignum_add.S 35 bn/arch/amd64/bignum_add.S
45 bn/arch/amd64/bignum_cmadd.S 36 bn/arch/amd64/bignum_cmadd.S
@@ -57,24 +48,12 @@ if(HOST_ASM_ELF_X86_64)
57 add_definitions(-DAES_ASM) 48 add_definitions(-DAES_ASM)
58 add_definitions(-DBSAES_ASM) 49 add_definitions(-DBSAES_ASM)
59 add_definitions(-DVPAES_ASM) 50 add_definitions(-DVPAES_ASM)
60 add_definitions(-DHAVE_AES_CBC_ENCRYPT_INTERNAL)
61 add_definitions(-DHAVE_AES_SET_ENCRYPT_KEY_INTERNAL)
62 add_definitions(-DHAVE_AES_SET_DECRYPT_KEY_INTERNAL)
63 add_definitions(-DHAVE_AES_ENCRYPT_INTERNAL)
64 add_definitions(-DHAVE_AES_DECRYPT_INTERNAL)
65 add_definitions(-DOPENSSL_IA32_SSE2) 51 add_definitions(-DOPENSSL_IA32_SSE2)
66 add_definitions(-DOPENSSL_BN_ASM_MONT) 52 add_definitions(-DOPENSSL_BN_ASM_MONT)
67 add_definitions(-DOPENSSL_BN_ASM_MONT5) 53 add_definitions(-DOPENSSL_BN_ASM_MONT5)
68 add_definitions(-DMD5_ASM)
69 add_definitions(-DGHASH_ASM) 54 add_definitions(-DGHASH_ASM)
70 add_definitions(-DRSA_ASM) 55 add_definitions(-DRSA_ASM)
71 add_definitions(-DSHA1_ASM)
72 add_definitions(-DSHA256_ASM)
73 add_definitions(-DSHA512_ASM)
74 add_definitions(-DWHIRLPOOL_ASM)
75 add_definitions(-DOPENSSL_CPUID_OBJ)
76 set(CRYPTO_SRC ${CRYPTO_SRC} ${ASM_X86_64_ELF_SRC}) 56 set(CRYPTO_SRC ${CRYPTO_SRC} ${ASM_X86_64_ELF_SRC})
77 set_property(SOURCE ${ASM_X86_64_ELF_SRC} PROPERTY LANGUAGE C)
78endif() 57endif()
79 58
80if(HOST_ASM_MACOSX_X86_64) 59if(HOST_ASM_MACOSX_X86_64)
@@ -87,13 +66,8 @@ if(HOST_ASM_MACOSX_X86_64)
87 bn/modexp512-macosx-x86_64.S 66 bn/modexp512-macosx-x86_64.S
88 bn/mont-macosx-x86_64.S 67 bn/mont-macosx-x86_64.S
89 bn/mont5-macosx-x86_64.S 68 bn/mont5-macosx-x86_64.S
90 md5/md5-macosx-x86_64.S
91 modes/ghash-macosx-x86_64.S 69 modes/ghash-macosx-x86_64.S
92 rc4/rc4-macosx-x86_64.S 70 rc4/rc4-macosx-x86_64.S
93 sha/sha1-macosx-x86_64.S
94 sha/sha256-macosx-x86_64.S
95 sha/sha512-macosx-x86_64.S
96 cpuid-macosx-x86_64.S
97 71
98 bn/arch/amd64/bignum_add.S 72 bn/arch/amd64/bignum_add.S
99 bn/arch/amd64/bignum_cmadd.S 73 bn/arch/amd64/bignum_cmadd.S
@@ -111,24 +85,12 @@ if(HOST_ASM_MACOSX_X86_64)
111 add_definitions(-DAES_ASM) 85 add_definitions(-DAES_ASM)
112 add_definitions(-DBSAES_ASM) 86 add_definitions(-DBSAES_ASM)
113 add_definitions(-DVPAES_ASM) 87 add_definitions(-DVPAES_ASM)
114 add_definitions(-DHAVE_AES_CBC_ENCRYPT_INTERNAL)
115 add_definitions(-DHAVE_AES_SET_ENCRYPT_KEY_INTERNAL)
116 add_definitions(-DHAVE_AES_SET_DECRYPT_KEY_INTERNAL)
117 add_definitions(-DHAVE_AES_ENCRYPT_INTERNAL)
118 add_definitions(-DHAVE_AES_DECRYPT_INTERNAL)
119 add_definitions(-DOPENSSL_IA32_SSE2) 88 add_definitions(-DOPENSSL_IA32_SSE2)
120 add_definitions(-DOPENSSL_BN_ASM_MONT) 89 add_definitions(-DOPENSSL_BN_ASM_MONT)
121 add_definitions(-DOPENSSL_BN_ASM_MONT5) 90 add_definitions(-DOPENSSL_BN_ASM_MONT5)
122 add_definitions(-DMD5_ASM)
123 add_definitions(-DGHASH_ASM) 91 add_definitions(-DGHASH_ASM)
124 add_definitions(-DRSA_ASM) 92 add_definitions(-DRSA_ASM)
125 add_definitions(-DSHA1_ASM)
126 add_definitions(-DSHA256_ASM)
127 add_definitions(-DSHA512_ASM)
128 add_definitions(-DWHIRLPOOL_ASM)
129 add_definitions(-DOPENSSL_CPUID_OBJ)
130 set(CRYPTO_SRC ${CRYPTO_SRC} ${ASM_X86_64_MACOSX_SRC}) 93 set(CRYPTO_SRC ${CRYPTO_SRC} ${ASM_X86_64_MACOSX_SRC})
131 set_property(SOURCE ${ASM_X86_64_MACOSX_SRC} PROPERTY LANGUAGE C)
132 set_property(SOURCE ${ASM_X86_64_MACOSX_SRC} PROPERTY XCODE_EXPLICIT_FILE_TYPE "sourcecode.asm") 94 set_property(SOURCE ${ASM_X86_64_MACOSX_SRC} PROPERTY XCODE_EXPLICIT_FILE_TYPE "sourcecode.asm")
133endif() 95endif()
134 96
@@ -142,34 +104,18 @@ if(HOST_ASM_MASM_X86_64)
142 #bn/modexp512-masm-x86_64.S 104 #bn/modexp512-masm-x86_64.S
143 #bn/mont-masm-x86_64.S 105 #bn/mont-masm-x86_64.S
144 #bn/mont5-masm-x86_64.S 106 #bn/mont5-masm-x86_64.S
145 md5/md5-masm-x86_64.S
146 modes/ghash-masm-x86_64.S 107 modes/ghash-masm-x86_64.S
147 rc4/rc4-masm-x86_64.S 108 rc4/rc4-masm-x86_64.S
148 sha/sha1-masm-x86_64.S
149 sha/sha256-masm-x86_64.S
150 sha/sha512-masm-x86_64.S
151 cpuid-masm-x86_64.S
152 ) 109 )
153 add_definitions(-Dendbr64=) 110 add_definitions(-Dendbr64=)
154 add_definitions(-DAES_ASM) 111 add_definitions(-DAES_ASM)
155 add_definitions(-DBSAES_ASM) 112 add_definitions(-DBSAES_ASM)
156 add_definitions(-DVPAES_ASM) 113 add_definitions(-DVPAES_ASM)
157 add_definitions(-DHAVE_AES_CBC_ENCRYPT_INTERNAL)
158 add_definitions(-DHAVE_AES_SET_ENCRYPT_KEY_INTERNAL)
159 add_definitions(-DHAVE_AES_SET_DECRYPT_KEY_INTERNAL)
160 add_definitions(-DHAVE_AES_ENCRYPT_INTERNAL)
161 add_definitions(-DHAVE_AES_DECRYPT_INTERNAL)
162 add_definitions(-DOPENSSL_IA32_SSE2) 114 add_definitions(-DOPENSSL_IA32_SSE2)
163 #add_definitions(-DOPENSSL_BN_ASM_MONT) 115 #add_definitions(-DOPENSSL_BN_ASM_MONT)
164 #add_definitions(-DOPENSSL_BN_ASM_MONT5) 116 #add_definitions(-DOPENSSL_BN_ASM_MONT5)
165 add_definitions(-DMD5_ASM)
166 add_definitions(-DGHASH_ASM) 117 add_definitions(-DGHASH_ASM)
167 add_definitions(-DRSA_ASM) 118 add_definitions(-DRSA_ASM)
168 add_definitions(-DSHA1_ASM)
169 add_definitions(-DSHA256_ASM)
170 add_definitions(-DSHA512_ASM)
171 add_definitions(-DWHIRLPOOL_ASM)
172 add_definitions(-DOPENSSL_CPUID_OBJ)
173 set(CRYPTO_SRC ${CRYPTO_SRC} ${ASM_X86_64_MASM_SRC}) 119 set(CRYPTO_SRC ${CRYPTO_SRC} ${ASM_X86_64_MASM_SRC})
174 set_property(SOURCE ${ASM_X86_64_MASM_SRC} PROPERTY LANGUAGE ASM_MASM) 120 set_property(SOURCE ${ASM_X86_64_MASM_SRC} PROPERTY LANGUAGE ASM_MASM)
175endif() 121endif()
@@ -184,50 +130,37 @@ if(HOST_ASM_MINGW64_X86_64)
184 #bn/modexp512-mingw64-x86_64.S 130 #bn/modexp512-mingw64-x86_64.S
185 #bn/mont-mingw64-x86_64.S 131 #bn/mont-mingw64-x86_64.S
186 #bn/mont5-mingw64-x86_64.S 132 #bn/mont5-mingw64-x86_64.S
187 md5/md5-mingw64-x86_64.S
188 modes/ghash-mingw64-x86_64.S 133 modes/ghash-mingw64-x86_64.S
189 rc4/rc4-mingw64-x86_64.S 134 rc4/rc4-mingw64-x86_64.S
190 sha/sha1-mingw64-x86_64.S
191 sha/sha256-mingw64-x86_64.S
192 sha/sha512-mingw64-x86_64.S
193 cpuid-mingw64-x86_64.S
194 ) 135 )
195 add_definitions(-Dendbr32=endbr64) 136 add_definitions(-Dendbr32=endbr64)
196 add_definitions(-DAES_ASM) 137 add_definitions(-DAES_ASM)
197 add_definitions(-DBSAES_ASM) 138 add_definitions(-DBSAES_ASM)
198 add_definitions(-DVPAES_ASM) 139 add_definitions(-DVPAES_ASM)
199 add_definitions(-DHAVE_AES_CBC_ENCRYPT_INTERNAL)
200 add_definitions(-DHAVE_AES_SET_ENCRYPT_KEY_INTERNAL)
201 add_definitions(-DHAVE_AES_SET_DECRYPT_KEY_INTERNAL)
202 add_definitions(-DHAVE_AES_ENCRYPT_INTERNAL)
203 add_definitions(-DHAVE_AES_DECRYPT_INTERNAL)
204 add_definitions(-DOPENSSL_IA32_SSE2) 140 add_definitions(-DOPENSSL_IA32_SSE2)
205 #add_definitions(-DOPENSSL_BN_ASM_MONT) 141 #add_definitions(-DOPENSSL_BN_ASM_MONT)
206 #add_definitions(-DOPENSSL_BN_ASM_MONT5) 142 #add_definitions(-DOPENSSL_BN_ASM_MONT5)
207 add_definitions(-DMD5_ASM)
208 add_definitions(-DGHASH_ASM) 143 add_definitions(-DGHASH_ASM)
209 add_definitions(-DRSA_ASM) 144 add_definitions(-DRSA_ASM)
210 add_definitions(-DSHA1_ASM)
211 add_definitions(-DSHA256_ASM)
212 add_definitions(-DSHA512_ASM)
213 add_definitions(-DWHIRLPOOL_ASM)
214 add_definitions(-DOPENSSL_CPUID_OBJ)
215 set(CRYPTO_SRC ${CRYPTO_SRC} ${ASM_X86_64_MINGW64_SRC}) 145 set(CRYPTO_SRC ${CRYPTO_SRC} ${ASM_X86_64_MINGW64_SRC})
216 set_property(SOURCE ${ASM_X86_64_MINGW64_SRC} PROPERTY LANGUAGE C) 146endif()
147
148if(HOST_AARCH64)
149 set(CRYPTO_SRC ${CRYPTO_SRC} arch/aarch64/crypto_cpu_caps.c)
150elseif(HOST_X86_64)
151 set(CRYPTO_SRC ${CRYPTO_SRC} arch/amd64/crypto_cpu_caps.c)
152elseif(HOST_I386)
153 set(CRYPTO_SRC ${CRYPTO_SRC} arch/i386/crypto_cpu_caps.c)
217endif() 154endif()
218 155
219set( 156set(
220 CRYPTO_SRC 157 CRYPTO_SRC
221 ${CRYPTO_SRC} 158 ${CRYPTO_SRC}
222 cpt_err.c 159 crypto_err.c
223 cryptlib.c 160 crypto_ex_data.c
224 crypto_init.c 161 crypto_init.c
225 cversion.c 162 crypto_legacy.c
226 ex_data.c 163 crypto_memory.c
227 malloc-wrapper.c
228 mem_clr.c
229 mem_dbg.c
230 o_fips.c
231 aes/aes.c 164 aes/aes.c
232 aes/aes_core.c 165 aes/aes_core.c
233 aes/aes_ige.c 166 aes/aes_ige.c
@@ -364,7 +297,6 @@ set(
364 conf/conf_def.c 297 conf/conf_def.c
365 conf/conf_err.c 298 conf/conf_err.c
366 conf/conf_lib.c 299 conf/conf_lib.c
367 conf/conf_mall.c
368 conf/conf_mod.c 300 conf/conf_mod.c
369 conf/conf_sap.c 301 conf/conf_sap.c
370 ct/ct_b64.c 302 ct/ct_b64.c
@@ -379,26 +311,11 @@ set(
379 ct/ct_x509v3.c 311 ct/ct_x509v3.c
380 curve25519/curve25519-generic.c 312 curve25519/curve25519-generic.c
381 curve25519/curve25519.c 313 curve25519/curve25519.c
382 des/cbc_cksm.c 314 des/des.c
383 des/cbc_enc.c 315 des/des_cksum.c
384 des/cfb64ede.c
385 des/cfb64enc.c
386 des/cfb_enc.c
387 des/des_enc.c 316 des/des_enc.c
388 des/ecb3_enc.c 317 des/des_fcrypt.c
389 des/ecb_enc.c 318 des/des_key.c
390 des/ede_cbcm_enc.c
391 des/enc_read.c
392 des/fcrypt.c
393 des/fcrypt_b.c
394 des/ofb64ede.c
395 des/ofb64enc.c
396 des/ofb_enc.c
397 des/pcbc_enc.c
398 des/qud_cksm.c
399 des/set_key.c
400 des/str2key.c
401 des/xcbc_enc.c
402 dh/dh_ameth.c 319 dh/dh_ameth.c
403 dh/dh_asn1.c 320 dh/dh_asn1.c
404 dh/dh_check.c 321 dh/dh_check.c
@@ -419,21 +336,15 @@ set(
419 dsa/dsa_prn.c 336 dsa/dsa_prn.c
420 ec/ec_ameth.c 337 ec/ec_ameth.c
421 ec/ec_asn1.c 338 ec/ec_asn1.c
422 ec/ec_check.c 339 ec/ec_convert.c
423 ec/ec_curve.c 340 ec/ec_curve.c
424 ec/ec_cvt.c
425 ec/ec_err.c 341 ec/ec_err.c
426 ec/ec_key.c 342 ec/ec_key.c
427 ec/ec_kmeth.c
428 ec/ec_lib.c 343 ec/ec_lib.c
429 ec/ec_mult.c 344 ec/ec_mult.c
430 ec/ec_oct.c
431 ec/ec_pmeth.c 345 ec/ec_pmeth.c
432 ec/ec_print.c
433 ec/eck_prn.c 346 ec/eck_prn.c
434 ec/ecp_mont.c 347 ec/ecp_methods.c
435 ec/ecp_oct.c
436 ec/ecp_smpl.c
437 ec/ecx_methods.c 348 ec/ecx_methods.c
438 ecdh/ecdh.c 349 ecdh/ecdh.c
439 ecdsa/ecdsa.c 350 ecdsa/ecdsa.c
@@ -476,7 +387,6 @@ set(
476 evp/m_sha3.c 387 evp/m_sha3.c
477 evp/m_sigver.c 388 evp/m_sigver.c
478 evp/m_sm3.c 389 evp/m_sm3.c
479 evp/m_wp.c
480 evp/p_legacy.c 390 evp/p_legacy.c
481 evp/p_lib.c 391 evp/p_lib.c
482 evp/p_sign.c 392 evp/p_sign.c
@@ -495,6 +405,8 @@ set(
495 lhash/lhash.c 405 lhash/lhash.c
496 md4/md4.c 406 md4/md4.c
497 md5/md5.c 407 md5/md5.c
408 mlkem/mlkem768.c
409 mlkem/mlkem1024.c
498 modes/cbc128.c 410 modes/cbc128.c
499 modes/ccm128.c 411 modes/ccm128.c
500 modes/cfb128.c 412 modes/cfb128.c
@@ -599,8 +511,6 @@ set(
599 ui/ui_err.c 511 ui/ui_err.c
600 ui/ui_lib.c 512 ui/ui_lib.c
601 ui/ui_null.c 513 ui/ui_null.c
602 ui/ui_util.c
603 whrlpool/whirlpool.c
604 x509/by_dir.c 514 x509/by_dir.c
605 x509/by_file.c 515 x509/by_file.c
606 x509/by_mem.c 516 x509/by_mem.c
@@ -641,6 +551,7 @@ set(
641 x509/x509_r2x.c 551 x509/x509_r2x.c
642 x509/x509_req.c 552 x509/x509_req.c
643 x509/x509_set.c 553 x509/x509_set.c
554 x509/x509_siginfo.c
644 x509/x509_skey.c 555 x509/x509_skey.c
645 x509/x509_trs.c 556 x509/x509_trs.c
646 x509/x509_txt.c 557 x509/x509_txt.c
@@ -685,6 +596,14 @@ if(NOT HAVE_FREEZERO)
685 set(COMPAT_SRC ${COMPAT_SRC} compat/freezero.c) 596 set(COMPAT_SRC ${COMPAT_SRC} compat/freezero.c)
686endif() 597endif()
687 598
599if(NOT HAVE_GETDELIM)
600 set(COMPAT_SRC ${COMPAT_SRC} compat/getdelim.c)
601endif()
602
603if(NOT HAVE_GETLINE)
604 set(COMPAT_SRC ${COMPAT_SRC} compat/getline.c)
605endif()
606
688if(NOT HAVE_GETOPT) 607if(NOT HAVE_GETOPT)
689 set(COMPAT_SRC ${COMPAT_SRC} compat/getopt_long.c) 608 set(COMPAT_SRC ${COMPAT_SRC} compat/getopt_long.c)
690endif() 609endif()
@@ -821,6 +740,7 @@ target_include_directories(crypto_obj
821 bio 740 bio
822 bn 741 bn
823 bytestring 742 bytestring
743 conf
824 dh 744 dh
825 dsa 745 dsa
826 curve25519 746 curve25519
@@ -832,6 +752,7 @@ target_include_directories(crypto_obj
832 hidden 752 hidden
833 hmac 753 hmac
834 lhash 754 lhash
755 mlkem
835 modes 756 modes
836 ocsp 757 ocsp
837 pkcs12 758 pkcs12
@@ -845,41 +766,65 @@ target_include_directories(crypto_obj
845 ${CMAKE_BINARY_DIR}/include) 766 ${CMAKE_BINARY_DIR}/include)
846 767
847if(HOST_AARCH64) 768if(HOST_AARCH64)
769 target_include_directories(crypto_obj PRIVATE arch/aarch64/)
848 target_include_directories(crypto_obj PRIVATE bn/arch/aarch64/) 770 target_include_directories(crypto_obj PRIVATE bn/arch/aarch64/)
849elseif(HOST_ARM) 771elseif(HOST_ARM)
772 target_include_directories(crypto_obj PRIVATE arch/arm/)
850 target_include_directories(crypto_obj PRIVATE bn/arch/arm/) 773 target_include_directories(crypto_obj PRIVATE bn/arch/arm/)
851elseif(HOST_I386) 774elseif(HOST_I386)
775 target_include_directories(crypto_obj PRIVATE arch/i386/)
852 target_include_directories(crypto_obj PRIVATE bn/arch/i386/) 776 target_include_directories(crypto_obj PRIVATE bn/arch/i386/)
777elseif(HOST_LOONGARCH64)
778 target_include_directories(crypto_obj PRIVATE arch/loongarch64)
779 target_include_directories(crypto_obj PRIVATE bn/arch/loongarch64)
853elseif(HOST_MIPS64) 780elseif(HOST_MIPS64)
781 target_include_directories(crypto_obj PRIVATE arch/mips64)
854 target_include_directories(crypto_obj PRIVATE bn/arch/mips64) 782 target_include_directories(crypto_obj PRIVATE bn/arch/mips64)
855elseif(HOST_MIPS) 783elseif(HOST_MIPS)
784 target_include_directories(crypto_obj PRIVATE arch/mips)
856 target_include_directories(crypto_obj PRIVATE bn/arch/mips) 785 target_include_directories(crypto_obj PRIVATE bn/arch/mips)
857elseif(HOST_POWERPC) 786elseif(HOST_POWERPC)
787 target_include_directories(crypto_obj PRIVATE arch/powerpc)
858 target_include_directories(crypto_obj PRIVATE bn/arch/powerpc) 788 target_include_directories(crypto_obj PRIVATE bn/arch/powerpc)
859elseif(HOST_POWERPC64) 789elseif(HOST_POWERPC64)
790 target_include_directories(crypto_obj PRIVATE arch/powerpc64)
860 target_include_directories(crypto_obj PRIVATE bn/arch/powerpc64) 791 target_include_directories(crypto_obj PRIVATE bn/arch/powerpc64)
861elseif(HOST_RISCV64) 792elseif(HOST_RISCV64)
793 target_include_directories(crypto_obj PRIVATE arch/riscv64)
862 target_include_directories(crypto_obj PRIVATE bn/arch/riscv64) 794 target_include_directories(crypto_obj PRIVATE bn/arch/riscv64)
863elseif(HOST_SPARC64) 795elseif(HOST_SPARC64)
796 target_include_directories(crypto_obj PRIVATE arch/sparc64)
864 target_include_directories(crypto_obj PRIVATE bn/arch/sparc64) 797 target_include_directories(crypto_obj PRIVATE bn/arch/sparc64)
865elseif(HOST_X86_64) 798elseif(HOST_X86_64)
799 target_include_directories(crypto_obj PRIVATE arch/amd64)
866 target_include_directories(crypto_obj PRIVATE bn/arch/amd64) 800 target_include_directories(crypto_obj PRIVATE bn/arch/amd64)
867endif() 801endif()
868 802
803if(MSVC)
804 # "C4701" - Potentially uninitialized local variable 'name' used
805 set_source_files_properties(bn/bn_convert.c pem/pem_lib.c PROPERTIES
806 COMPILE_OPTIONS /wd4701
807 )
808 # "C4702" - unreachable code
809 set_source_files_properties(pkcs7/pk7_doit.c PROPERTIES
810 COMPILE_OPTIONS /wd4702
811 )
812endif()
813
869add_library(crypto $<TARGET_OBJECTS:crypto_obj> $<TARGET_OBJECTS:compat_obj> empty.c) 814add_library(crypto $<TARGET_OBJECTS:crypto_obj> $<TARGET_OBJECTS:compat_obj> empty.c)
870 815
871export_symbol(crypto ${CMAKE_CURRENT_BINARY_DIR}/crypto_p.sym) 816export_symbol(crypto ${CMAKE_CURRENT_BINARY_DIR}/crypto_p.sym)
872target_link_libraries(crypto ${PLATFORM_LIBS}) 817target_link_libraries(crypto ${PLATFORM_LIBS})
873if (WIN32)
874 set(CRYPTO_POSTFIX -${CRYPTO_MAJOR_VERSION} PARENT_SCOPE)
875endif()
876set_target_properties(crypto PROPERTIES 818set_target_properties(crypto PROPERTIES
877 OUTPUT_NAME crypto${CRYPTO_POSTFIX} 819 OUTPUT_NAME crypto
878 ARCHIVE_OUTPUT_NAME crypto${CRYPTO_POSTFIX} 820 ARCHIVE_OUTPUT_NAME crypto
879 EXPORT_NAME Crypto 821 EXPORT_NAME Crypto
880 VERSION ${CRYPTO_VERSION} 822 VERSION ${CRYPTO_VERSION}
881 SOVERSION ${CRYPTO_MAJOR_VERSION} 823 SOVERSION ${CRYPTO_MAJOR_VERSION}
882) 824)
825if(NOT CMAKE_VERSION VERSION_LESS 3.27.0)
826 set_target_properties(crypto PROPERTIES DLL_NAME_WITH_SOVERSION TRUE)
827endif()
883 828
884target_include_directories( 829target_include_directories(
885 crypto 830 crypto
@@ -919,4 +864,3 @@ if(BUILD_SHARED_LIBS)
919 add_library(crypto-static STATIC $<TARGET_OBJECTS:crypto_obj>) 864 add_library(crypto-static STATIC $<TARGET_OBJECTS:crypto_obj>)
920 target_link_libraries(crypto-static ${PLATFORM_LIBS}) 865 target_link_libraries(crypto-static ${PLATFORM_LIBS})
921endif() 866endif()
922
diff --git a/crypto/Makefile.am b/crypto/Makefile.am
index 6e1e975..d1c5b76 100644
--- a/crypto/Makefile.am
+++ b/crypto/Makefile.am
@@ -5,6 +5,7 @@ AM_CPPFLAGS += -I$(top_srcdir)/crypto/asn1
5AM_CPPFLAGS += -I$(top_srcdir)/crypto/bio 5AM_CPPFLAGS += -I$(top_srcdir)/crypto/bio
6AM_CPPFLAGS += -I$(top_srcdir)/crypto/bn 6AM_CPPFLAGS += -I$(top_srcdir)/crypto/bn
7AM_CPPFLAGS += -I$(top_srcdir)/crypto/bytestring 7AM_CPPFLAGS += -I$(top_srcdir)/crypto/bytestring
8AM_CPPFLAGS += -I$(top_srcdir)/crypto/conf
8AM_CPPFLAGS += -I$(top_srcdir)/crypto/curve25519 9AM_CPPFLAGS += -I$(top_srcdir)/crypto/curve25519
9AM_CPPFLAGS += -I$(top_srcdir)/crypto/dh 10AM_CPPFLAGS += -I$(top_srcdir)/crypto/dh
10AM_CPPFLAGS += -I$(top_srcdir)/crypto/dsa 11AM_CPPFLAGS += -I$(top_srcdir)/crypto/dsa
@@ -15,6 +16,7 @@ AM_CPPFLAGS += -I$(top_srcdir)/crypto/err
15AM_CPPFLAGS += -I$(top_srcdir)/crypto/evp 16AM_CPPFLAGS += -I$(top_srcdir)/crypto/evp
16AM_CPPFLAGS += -I$(top_srcdir)/crypto/hmac 17AM_CPPFLAGS += -I$(top_srcdir)/crypto/hmac
17AM_CPPFLAGS += -I$(top_srcdir)/crypto/lhash 18AM_CPPFLAGS += -I$(top_srcdir)/crypto/lhash
19AM_CPPFLAGS += -I$(top_srcdir)/crypto/mlkem
18AM_CPPFLAGS += -I$(top_srcdir)/crypto/modes 20AM_CPPFLAGS += -I$(top_srcdir)/crypto/modes
19AM_CPPFLAGS += -I$(top_srcdir)/crypto/ocsp 21AM_CPPFLAGS += -I$(top_srcdir)/crypto/ocsp
20AM_CPPFLAGS += -I$(top_srcdir)/crypto/pkcs12 22AM_CPPFLAGS += -I$(top_srcdir)/crypto/pkcs12
@@ -132,6 +134,14 @@ if !HAVE_FREEZERO
132libcompat_la_SOURCES += compat/freezero.c 134libcompat_la_SOURCES += compat/freezero.c
133endif 135endif
134 136
137if !HAVE_GETDELIM
138libcompat_la_SOURCES += compat/getdelim.c
139endif
140
141if !HAVE_GETLINE
142libcompat_la_SOURCES += compat/getline.c
143endif
144
135if !HAVE_GETPAGESIZE 145if !HAVE_GETPAGESIZE
136libcompat_la_SOURCES += compat/getpagesize.c 146libcompat_la_SOURCES += compat/getpagesize.c
137endif 147endif
@@ -201,23 +211,28 @@ endif
201endif 211endif
202endif 212endif
203 213
204libcrypto_la_SOURCES += cpt_err.c 214if HOST_AARCH64
205libcrypto_la_SOURCES += cryptlib.c 215libcrypto_la_SOURCES += arch/aarch64/crypto_cpu_caps.c
216endif
217if HOST_X86_64
218libcrypto_la_SOURCES += arch/amd64/crypto_cpu_caps.c
219endif
220if HOST_I386
221libcrypto_la_SOURCES += arch/i386/crypto_cpu_caps.c
222endif
223
224libcrypto_la_SOURCES += crypto_err.c
225libcrypto_la_SOURCES += crypto_ex_data.c
206libcrypto_la_SOURCES += crypto_init.c 226libcrypto_la_SOURCES += crypto_init.c
227libcrypto_la_SOURCES += crypto_legacy.c
207if !HOST_WIN 228if !HOST_WIN
208libcrypto_la_SOURCES += crypto_lock.c 229libcrypto_la_SOURCES += crypto_lock.c
209else 230else
210libcrypto_la_SOURCES += compat/crypto_lock_win.c 231libcrypto_la_SOURCES += compat/crypto_lock_win.c
211endif 232endif
212libcrypto_la_SOURCES += cversion.c 233libcrypto_la_SOURCES += crypto_memory.c
213libcrypto_la_SOURCES += ex_data.c
214libcrypto_la_SOURCES += malloc-wrapper.c
215libcrypto_la_SOURCES += mem_clr.c
216libcrypto_la_SOURCES += mem_dbg.c
217libcrypto_la_SOURCES += o_fips.c
218noinst_HEADERS += arm_arch.h 234noinst_HEADERS += arm_arch.h
219noinst_HEADERS += constant_time.h 235noinst_HEADERS += constant_time.h
220noinst_HEADERS += cryptlib.h
221noinst_HEADERS += crypto_internal.h 236noinst_HEADERS += crypto_internal.h
222noinst_HEADERS += crypto_local.h 237noinst_HEADERS += crypto_local.h
223noinst_HEADERS += x86_arch.h 238noinst_HEADERS += x86_arch.h
@@ -359,55 +374,82 @@ noinst_HEADERS += bn/bn_prime.h
359noinst_HEADERS += bn/s2n_bignum.h 374noinst_HEADERS += bn/s2n_bignum.h
360noinst_HEADERS += bn/s2n_bignum_internal.h 375noinst_HEADERS += bn/s2n_bignum_internal.h
361 376
362# bn/arch 377# arch, bn/arch
363if HOST_AARCH64 378if HOST_AARCH64
379libcrypto_la_CPPFLAGS += -I$(top_srcdir)/crypto/arch/aarch64/
364libcrypto_la_CPPFLAGS += -I$(top_srcdir)/crypto/bn/arch/aarch64/ 380libcrypto_la_CPPFLAGS += -I$(top_srcdir)/crypto/bn/arch/aarch64/
365endif 381endif
382noinst_HEADERS += arch/aarch64/crypto_arch.h
366noinst_HEADERS += bn/arch/aarch64/bn_arch.h 383noinst_HEADERS += bn/arch/aarch64/bn_arch.h
367 384
368if HOST_ARM 385if HOST_ARM
386libcrypto_la_CPPFLAGS += -I$(top_srcdir)/crypto/arch/arm/
369libcrypto_la_CPPFLAGS += -I$(top_srcdir)/crypto/bn/arch/arm/ 387libcrypto_la_CPPFLAGS += -I$(top_srcdir)/crypto/bn/arch/arm/
370endif 388endif
389noinst_HEADERS += arch/arm/crypto_arch.h
371noinst_HEADERS += bn/arch/arm/bn_arch.h 390noinst_HEADERS += bn/arch/arm/bn_arch.h
372 391
373if HOST_I386 392if HOST_I386
393libcrypto_la_CPPFLAGS += -I$(top_srcdir)/crypto/arch/i386/
374libcrypto_la_CPPFLAGS += -I$(top_srcdir)/crypto/bn/arch/i386/ 394libcrypto_la_CPPFLAGS += -I$(top_srcdir)/crypto/bn/arch/i386/
375endif 395endif
396noinst_HEADERS += arch/i386/crypto_arch.h
376noinst_HEADERS += bn/arch/i386/bn_arch.h 397noinst_HEADERS += bn/arch/i386/bn_arch.h
377 398
399if HOST_LOONGARCH64
400libcrypto_la_CPPFLAGS += -I$(top_srcdir)/crypto/arch/loongarch64/
401libcrypto_la_CPPFLAGS += -I$(top_srcdir)/crypto/bn/arch/loongarch64/
402endif
403noinst_HEADERS += arch/loongarch64/crypto_arch.h
404noinst_HEADERS += bn/arch/loongarch64/bn_arch.h
405
378if HOST_MIPS 406if HOST_MIPS
407libcrypto_la_CPPFLAGS += -I$(top_srcdir)/crypto/arch/mips/
379libcrypto_la_CPPFLAGS += -I$(top_srcdir)/crypto/bn/arch/mips/ 408libcrypto_la_CPPFLAGS += -I$(top_srcdir)/crypto/bn/arch/mips/
380endif 409endif
410noinst_HEADERS += arch/mips/crypto_arch.h
381noinst_HEADERS += bn/arch/mips/bn_arch.h 411noinst_HEADERS += bn/arch/mips/bn_arch.h
382 412
383if HOST_MIPS64 413if HOST_MIPS64
414libcrypto_la_CPPFLAGS += -I$(top_srcdir)/crypto/arch/mips64/
384libcrypto_la_CPPFLAGS += -I$(top_srcdir)/crypto/bn/arch/mips64/ 415libcrypto_la_CPPFLAGS += -I$(top_srcdir)/crypto/bn/arch/mips64/
385endif 416endif
417noinst_HEADERS += arch/mips64/crypto_arch.h
386noinst_HEADERS += bn/arch/mips64/bn_arch.h 418noinst_HEADERS += bn/arch/mips64/bn_arch.h
387 419
388if HOST_POWERPC 420if HOST_POWERPC
421libcrypto_la_CPPFLAGS += -I$(top_srcdir)/crypto/arch/powerpc/
389libcrypto_la_CPPFLAGS += -I$(top_srcdir)/crypto/bn/arch/powerpc/ 422libcrypto_la_CPPFLAGS += -I$(top_srcdir)/crypto/bn/arch/powerpc/
390endif 423endif
424noinst_HEADERS += arch/powerpc/crypto_arch.h
391noinst_HEADERS += bn/arch/powerpc/bn_arch.h 425noinst_HEADERS += bn/arch/powerpc/bn_arch.h
392 426
393if HOST_POWERPC64 427if HOST_POWERPC64
428libcrypto_la_CPPFLAGS += -I$(top_srcdir)/crypto/arch/powerpc64/
394libcrypto_la_CPPFLAGS += -I$(top_srcdir)/crypto/bn/arch/powerpc64/ 429libcrypto_la_CPPFLAGS += -I$(top_srcdir)/crypto/bn/arch/powerpc64/
395endif 430endif
431noinst_HEADERS += arch/powerpc64/crypto_arch.h
396noinst_HEADERS += bn/arch/powerpc64/bn_arch.h 432noinst_HEADERS += bn/arch/powerpc64/bn_arch.h
397 433
398if HOST_RISCV64 434if HOST_RISCV64
435libcrypto_la_CPPFLAGS += -I$(top_srcdir)/crypto/arch/riscv64/
399libcrypto_la_CPPFLAGS += -I$(top_srcdir)/crypto/bn/arch/riscv64/ 436libcrypto_la_CPPFLAGS += -I$(top_srcdir)/crypto/bn/arch/riscv64/
400endif 437endif
438noinst_HEADERS += arch/riscv64/crypto_arch.h
401noinst_HEADERS += bn/arch/riscv64/bn_arch.h 439noinst_HEADERS += bn/arch/riscv64/bn_arch.h
402 440
403if HOST_SPARC64 441if HOST_SPARC64
442libcrypto_la_CPPFLAGS += -I$(top_srcdir)/crypto/arch/sparc64/
404libcrypto_la_CPPFLAGS += -I$(top_srcdir)/crypto/bn/arch/sparc64/ 443libcrypto_la_CPPFLAGS += -I$(top_srcdir)/crypto/bn/arch/sparc64/
405endif 444endif
445noinst_HEADERS += arch/sparc64/crypto_arch.h
406noinst_HEADERS += bn/arch/sparc64/bn_arch.h 446noinst_HEADERS += bn/arch/sparc64/bn_arch.h
407 447
408if HOST_X86_64 448if HOST_X86_64
449libcrypto_la_CPPFLAGS += -I$(top_srcdir)/crypto/arch/amd64/
409libcrypto_la_CPPFLAGS += -I$(top_srcdir)/crypto/bn/arch/amd64/ 450libcrypto_la_CPPFLAGS += -I$(top_srcdir)/crypto/bn/arch/amd64/
410endif 451endif
452noinst_HEADERS += arch/amd64/crypto_arch.h
411noinst_HEADERS += bn/arch/amd64/bn_arch.h 453noinst_HEADERS += bn/arch/amd64/bn_arch.h
412 454
413# buffer 455# buffer
@@ -458,10 +500,10 @@ libcrypto_la_SOURCES += conf/conf_api.c
458libcrypto_la_SOURCES += conf/conf_def.c 500libcrypto_la_SOURCES += conf/conf_def.c
459libcrypto_la_SOURCES += conf/conf_err.c 501libcrypto_la_SOURCES += conf/conf_err.c
460libcrypto_la_SOURCES += conf/conf_lib.c 502libcrypto_la_SOURCES += conf/conf_lib.c
461libcrypto_la_SOURCES += conf/conf_mall.c
462libcrypto_la_SOURCES += conf/conf_mod.c 503libcrypto_la_SOURCES += conf/conf_mod.c
463libcrypto_la_SOURCES += conf/conf_sap.c 504libcrypto_la_SOURCES += conf/conf_sap.c
464noinst_HEADERS += conf/conf_def.h 505noinst_HEADERS += conf/conf_def.h
506noinst_HEADERS += conf/conf_local.h
465 507
466# ct 508# ct
467libcrypto_la_SOURCES += ct/ct_b64.c 509libcrypto_la_SOURCES += ct/ct_b64.c
@@ -483,29 +525,12 @@ noinst_HEADERS += curve25519/curve25519_internal.h
483 525
484 526
485# des 527# des
486libcrypto_la_SOURCES += des/cbc_cksm.c 528libcrypto_la_SOURCES += des/des.c
487libcrypto_la_SOURCES += des/cbc_enc.c 529libcrypto_la_SOURCES += des/des_cksum.c
488libcrypto_la_SOURCES += des/cfb64ede.c
489libcrypto_la_SOURCES += des/cfb64enc.c
490libcrypto_la_SOURCES += des/cfb_enc.c
491libcrypto_la_SOURCES += des/des_enc.c 530libcrypto_la_SOURCES += des/des_enc.c
492libcrypto_la_SOURCES += des/ecb3_enc.c 531libcrypto_la_SOURCES += des/des_fcrypt.c
493libcrypto_la_SOURCES += des/ecb_enc.c 532libcrypto_la_SOURCES += des/des_key.c
494libcrypto_la_SOURCES += des/ede_cbcm_enc.c
495libcrypto_la_SOURCES += des/enc_read.c
496libcrypto_la_SOURCES += des/fcrypt.c
497libcrypto_la_SOURCES += des/fcrypt_b.c
498EXTRA_libcrypto_la_SOURCES += des/ncbc_enc.c
499libcrypto_la_SOURCES += des/ofb64ede.c
500libcrypto_la_SOURCES += des/ofb64enc.c
501libcrypto_la_SOURCES += des/ofb_enc.c
502libcrypto_la_SOURCES += des/pcbc_enc.c
503libcrypto_la_SOURCES += des/qud_cksm.c
504libcrypto_la_SOURCES += des/set_key.c
505libcrypto_la_SOURCES += des/str2key.c
506libcrypto_la_SOURCES += des/xcbc_enc.c
507noinst_HEADERS += des/des_local.h 533noinst_HEADERS += des/des_local.h
508noinst_HEADERS += des/spr.h
509 534
510# dh 535# dh
511libcrypto_la_SOURCES += dh/dh_ameth.c 536libcrypto_la_SOURCES += dh/dh_ameth.c
@@ -534,21 +559,15 @@ noinst_HEADERS += dsa/dsa_local.h
534# ec 559# ec
535libcrypto_la_SOURCES += ec/ec_ameth.c 560libcrypto_la_SOURCES += ec/ec_ameth.c
536libcrypto_la_SOURCES += ec/ec_asn1.c 561libcrypto_la_SOURCES += ec/ec_asn1.c
537libcrypto_la_SOURCES += ec/ec_check.c 562libcrypto_la_SOURCES += ec/ec_convert.c
538libcrypto_la_SOURCES += ec/ec_curve.c 563libcrypto_la_SOURCES += ec/ec_curve.c
539libcrypto_la_SOURCES += ec/ec_cvt.c
540libcrypto_la_SOURCES += ec/ec_err.c 564libcrypto_la_SOURCES += ec/ec_err.c
541libcrypto_la_SOURCES += ec/ec_key.c 565libcrypto_la_SOURCES += ec/ec_key.c
542libcrypto_la_SOURCES += ec/ec_kmeth.c
543libcrypto_la_SOURCES += ec/ec_lib.c 566libcrypto_la_SOURCES += ec/ec_lib.c
544libcrypto_la_SOURCES += ec/ec_mult.c 567libcrypto_la_SOURCES += ec/ec_mult.c
545libcrypto_la_SOURCES += ec/ec_oct.c
546libcrypto_la_SOURCES += ec/ec_pmeth.c 568libcrypto_la_SOURCES += ec/ec_pmeth.c
547libcrypto_la_SOURCES += ec/ec_print.c
548libcrypto_la_SOURCES += ec/eck_prn.c 569libcrypto_la_SOURCES += ec/eck_prn.c
549libcrypto_la_SOURCES += ec/ecp_mont.c 570libcrypto_la_SOURCES += ec/ecp_methods.c
550libcrypto_la_SOURCES += ec/ecp_oct.c
551libcrypto_la_SOURCES += ec/ecp_smpl.c
552libcrypto_la_SOURCES += ec/ecx_methods.c 571libcrypto_la_SOURCES += ec/ecx_methods.c
553noinst_HEADERS += ec/ec_local.h 572noinst_HEADERS += ec/ec_local.h
554 573
@@ -604,7 +623,6 @@ libcrypto_la_SOURCES += evp/m_sha1.c
604libcrypto_la_SOURCES += evp/m_sha3.c 623libcrypto_la_SOURCES += evp/m_sha3.c
605libcrypto_la_SOURCES += evp/m_sigver.c 624libcrypto_la_SOURCES += evp/m_sigver.c
606libcrypto_la_SOURCES += evp/m_sm3.c 625libcrypto_la_SOURCES += evp/m_sm3.c
607libcrypto_la_SOURCES += evp/m_wp.c
608libcrypto_la_SOURCES += evp/p_legacy.c 626libcrypto_la_SOURCES += evp/p_legacy.c
609libcrypto_la_SOURCES += evp/p_lib.c 627libcrypto_la_SOURCES += evp/p_lib.c
610libcrypto_la_SOURCES += evp/p_sign.c 628libcrypto_la_SOURCES += evp/p_sign.c
@@ -629,7 +647,6 @@ noinst_HEADERS += hidden/openssl/chacha.h
629noinst_HEADERS += hidden/openssl/cmac.h 647noinst_HEADERS += hidden/openssl/cmac.h
630noinst_HEADERS += hidden/openssl/cms.h 648noinst_HEADERS += hidden/openssl/cms.h
631noinst_HEADERS += hidden/openssl/conf.h 649noinst_HEADERS += hidden/openssl/conf.h
632noinst_HEADERS += hidden/openssl/conf_api.h
633noinst_HEADERS += hidden/openssl/crypto.h 650noinst_HEADERS += hidden/openssl/crypto.h
634noinst_HEADERS += hidden/openssl/ct.h 651noinst_HEADERS += hidden/openssl/ct.h
635noinst_HEADERS += hidden/openssl/curve25519.h 652noinst_HEADERS += hidden/openssl/curve25519.h
@@ -646,6 +663,7 @@ noinst_HEADERS += hidden/openssl/idea.h
646noinst_HEADERS += hidden/openssl/lhash.h 663noinst_HEADERS += hidden/openssl/lhash.h
647noinst_HEADERS += hidden/openssl/md4.h 664noinst_HEADERS += hidden/openssl/md4.h
648noinst_HEADERS += hidden/openssl/md5.h 665noinst_HEADERS += hidden/openssl/md5.h
666noinst_HEADERS += hidden/openssl/mlkem.h
649noinst_HEADERS += hidden/openssl/modes.h 667noinst_HEADERS += hidden/openssl/modes.h
650noinst_HEADERS += hidden/openssl/objects.h 668noinst_HEADERS += hidden/openssl/objects.h
651noinst_HEADERS += hidden/openssl/ocsp.h 669noinst_HEADERS += hidden/openssl/ocsp.h
@@ -666,7 +684,6 @@ noinst_HEADERS += hidden/openssl/stack.h
666noinst_HEADERS += hidden/openssl/ts.h 684noinst_HEADERS += hidden/openssl/ts.h
667noinst_HEADERS += hidden/openssl/txt_db.h 685noinst_HEADERS += hidden/openssl/txt_db.h
668noinst_HEADERS += hidden/openssl/ui.h 686noinst_HEADERS += hidden/openssl/ui.h
669noinst_HEADERS += hidden/openssl/whrlpool.h
670noinst_HEADERS += hidden/openssl/x509.h 687noinst_HEADERS += hidden/openssl/x509.h
671noinst_HEADERS += hidden/openssl/x509_vfy.h 688noinst_HEADERS += hidden/openssl/x509_vfy.h
672noinst_HEADERS += hidden/openssl/x509v3.h 689noinst_HEADERS += hidden/openssl/x509v3.h
@@ -698,6 +715,12 @@ libcrypto_la_SOURCES += md4/md4.c
698# md5 715# md5
699libcrypto_la_SOURCES += md5/md5.c 716libcrypto_la_SOURCES += md5/md5.c
700 717
718# mlkem
719libcrypto_la_SOURCES += mlkem/mlkem768.c
720libcrypto_la_SOURCES += mlkem/mlkem1024.c
721noinst_HEADERS += mlkem/mlkem.h
722noinst_HEADERS += mlkem/mlkem_internal.h
723
701# modes 724# modes
702libcrypto_la_SOURCES += modes/cbc128.c 725libcrypto_la_SOURCES += modes/cbc128.c
703libcrypto_la_SOURCES += modes/ccm128.c 726libcrypto_la_SOURCES += modes/ccm128.c
@@ -856,12 +879,8 @@ endif
856if HOST_WIN 879if HOST_WIN
857libcrypto_la_SOURCES += ui/ui_openssl_win.c 880libcrypto_la_SOURCES += ui/ui_openssl_win.c
858endif 881endif
859libcrypto_la_SOURCES += ui/ui_util.c
860noinst_HEADERS += ui/ui_local.h 882noinst_HEADERS += ui/ui_local.h
861 883
862# whrlpool
863libcrypto_la_SOURCES += whrlpool/whirlpool.c
864
865# x509 884# x509
866libcrypto_la_SOURCES += x509/by_dir.c 885libcrypto_la_SOURCES += x509/by_dir.c
867libcrypto_la_SOURCES += x509/by_file.c 886libcrypto_la_SOURCES += x509/by_file.c
@@ -903,6 +922,7 @@ libcrypto_la_SOURCES += x509/x509_purp.c
903libcrypto_la_SOURCES += x509/x509_r2x.c 922libcrypto_la_SOURCES += x509/x509_r2x.c
904libcrypto_la_SOURCES += x509/x509_req.c 923libcrypto_la_SOURCES += x509/x509_req.c
905libcrypto_la_SOURCES += x509/x509_set.c 924libcrypto_la_SOURCES += x509/x509_set.c
925libcrypto_la_SOURCES += x509/x509_siginfo.c
906libcrypto_la_SOURCES += x509/x509_skey.c 926libcrypto_la_SOURCES += x509/x509_skey.c
907libcrypto_la_SOURCES += x509/x509_trs.c 927libcrypto_la_SOURCES += x509/x509_trs.c
908libcrypto_la_SOURCES += x509/x509_txt.c 928libcrypto_la_SOURCES += x509/x509_txt.c
diff --git a/crypto/Makefile.am.elf-arm b/crypto/Makefile.am.elf-arm
index 4f88994..6a9fa50 100644
--- a/crypto/Makefile.am.elf-arm
+++ b/crypto/Makefile.am.elf-arm
@@ -13,9 +13,6 @@ if HOST_ASM_ELF_ARM
13libcrypto_la_CPPFLAGS += -DAES_ASM 13libcrypto_la_CPPFLAGS += -DAES_ASM
14libcrypto_la_CPPFLAGS += -DOPENSSL_BN_ASM_MONT 14libcrypto_la_CPPFLAGS += -DOPENSSL_BN_ASM_MONT
15libcrypto_la_CPPFLAGS += -DGHASH_ASM 15libcrypto_la_CPPFLAGS += -DGHASH_ASM
16libcrypto_la_CPPFLAGS += -DSHA1_ASM
17libcrypto_la_CPPFLAGS += -DSHA256_ASM
18libcrypto_la_CPPFLAGS += -DSHA512_ASM
19libcrypto_la_CPPFLAGS += -DOPENSSL_CPUID_OBJ 16libcrypto_la_CPPFLAGS += -DOPENSSL_CPUID_OBJ
20libcrypto_la_SOURCES += $(ASM_ARM_ELF) 17libcrypto_la_SOURCES += $(ASM_ARM_ELF)
21endif 18endif
diff --git a/crypto/Makefile.am.elf-mips b/crypto/Makefile.am.elf-mips
index ea0a730..f7a44f2 100644
--- a/crypto/Makefile.am.elf-mips
+++ b/crypto/Makefile.am.elf-mips
@@ -10,8 +10,5 @@ EXTRA_DIST += $(ASM_MIPS_ELF)
10if HOST_ASM_ELF_MIPS 10if HOST_ASM_ELF_MIPS
11libcrypto_la_CPPFLAGS += -DAES_ASM 11libcrypto_la_CPPFLAGS += -DAES_ASM
12libcrypto_la_CPPFLAGS += -DOPENSSL_BN_ASM_MONT 12libcrypto_la_CPPFLAGS += -DOPENSSL_BN_ASM_MONT
13libcrypto_la_CPPFLAGS += -DSHA1_ASM
14libcrypto_la_CPPFLAGS += -DSHA256_ASM
15libcrypto_la_CPPFLAGS += -DSHA512_ASM
16libcrypto_la_SOURCES += $(ASM_MIPS_ELF) 13libcrypto_la_SOURCES += $(ASM_MIPS_ELF)
17endif 14endif
diff --git a/crypto/Makefile.am.elf-mips64 b/crypto/Makefile.am.elf-mips64
index 8f851f3..7d90bc0 100644
--- a/crypto/Makefile.am.elf-mips64
+++ b/crypto/Makefile.am.elf-mips64
@@ -10,8 +10,5 @@ EXTRA_DIST += $(ASM_MIPS64_ELF)
10if HOST_ASM_ELF_MIPS64 10if HOST_ASM_ELF_MIPS64
11libcrypto_la_CPPFLAGS += -DAES_ASM 11libcrypto_la_CPPFLAGS += -DAES_ASM
12libcrypto_la_CPPFLAGS += -DOPENSSL_BN_ASM_MONT 12libcrypto_la_CPPFLAGS += -DOPENSSL_BN_ASM_MONT
13libcrypto_la_CPPFLAGS += -DSHA1_ASM
14libcrypto_la_CPPFLAGS += -DSHA256_ASM
15libcrypto_la_CPPFLAGS += -DSHA512_ASM
16libcrypto_la_SOURCES += $(ASM_MIPS64_ELF) 13libcrypto_la_SOURCES += $(ASM_MIPS64_ELF)
17endif 14endif
diff --git a/crypto/Makefile.am.elf-x86_64 b/crypto/Makefile.am.elf-x86_64
index 6933a11..c62662c 100644
--- a/crypto/Makefile.am.elf-x86_64
+++ b/crypto/Makefile.am.elf-x86_64
@@ -6,13 +6,8 @@ ASM_X86_64_ELF += aes/aesni-elf-x86_64.S
6ASM_X86_64_ELF += bn/modexp512-elf-x86_64.S 6ASM_X86_64_ELF += bn/modexp512-elf-x86_64.S
7ASM_X86_64_ELF += bn/mont-elf-x86_64.S 7ASM_X86_64_ELF += bn/mont-elf-x86_64.S
8ASM_X86_64_ELF += bn/mont5-elf-x86_64.S 8ASM_X86_64_ELF += bn/mont5-elf-x86_64.S
9ASM_X86_64_ELF += md5/md5-elf-x86_64.S
10ASM_X86_64_ELF += modes/ghash-elf-x86_64.S 9ASM_X86_64_ELF += modes/ghash-elf-x86_64.S
11ASM_X86_64_ELF += rc4/rc4-elf-x86_64.S 10ASM_X86_64_ELF += rc4/rc4-elf-x86_64.S
12ASM_X86_64_ELF += sha/sha1-elf-x86_64.S
13ASM_X86_64_ELF += sha/sha256-elf-x86_64.S
14ASM_X86_64_ELF += sha/sha512-elf-x86_64.S
15ASM_X86_64_ELF += cpuid-elf-x86_64.S
16 11
17ASM_X86_64_ELF += bn/arch/amd64/bignum_add.S 12ASM_X86_64_ELF += bn/arch/amd64/bignum_add.S
18ASM_X86_64_ELF += bn/arch/amd64/bignum_cmadd.S 13ASM_X86_64_ELF += bn/arch/amd64/bignum_cmadd.S
@@ -33,21 +28,10 @@ if HOST_ASM_ELF_X86_64
33libcrypto_la_CPPFLAGS += -DAES_ASM 28libcrypto_la_CPPFLAGS += -DAES_ASM
34libcrypto_la_CPPFLAGS += -DBSAES_ASM 29libcrypto_la_CPPFLAGS += -DBSAES_ASM
35libcrypto_la_CPPFLAGS += -DVPAES_ASM 30libcrypto_la_CPPFLAGS += -DVPAES_ASM
36libcrypto_la_CPPFLAGS += -DHAVE_AES_CBC_ENCRYPT_INTERNAL
37libcrypto_la_CPPFLAGS += -DHAVE_AES_SET_ENCRYPT_KEY_INTERNAL
38libcrypto_la_CPPFLAGS += -DHAVE_AES_SET_DECRYPT_KEY_INTERNAL
39libcrypto_la_CPPFLAGS += -DHAVE_AES_ENCRYPT_INTERNAL
40libcrypto_la_CPPFLAGS += -DHAVE_AES_DECRYPT_INTERNAL
41libcrypto_la_CPPFLAGS += -DOPENSSL_IA32_SSE2 31libcrypto_la_CPPFLAGS += -DOPENSSL_IA32_SSE2
42libcrypto_la_CPPFLAGS += -DOPENSSL_BN_ASM_MONT 32libcrypto_la_CPPFLAGS += -DOPENSSL_BN_ASM_MONT
43libcrypto_la_CPPFLAGS += -DOPENSSL_BN_ASM_MONT5 33libcrypto_la_CPPFLAGS += -DOPENSSL_BN_ASM_MONT5
44libcrypto_la_CPPFLAGS += -DMD5_ASM
45libcrypto_la_CPPFLAGS += -DGHASH_ASM 34libcrypto_la_CPPFLAGS += -DGHASH_ASM
46libcrypto_la_CPPFLAGS += -DRSA_ASM 35libcrypto_la_CPPFLAGS += -DRSA_ASM
47libcrypto_la_CPPFLAGS += -DSHA1_ASM
48libcrypto_la_CPPFLAGS += -DSHA256_ASM
49libcrypto_la_CPPFLAGS += -DSHA512_ASM
50libcrypto_la_CPPFLAGS += -DWHIRLPOOL_ASM
51libcrypto_la_CPPFLAGS += -DOPENSSL_CPUID_OBJ
52libcrypto_la_SOURCES += $(ASM_X86_64_ELF) 36libcrypto_la_SOURCES += $(ASM_X86_64_ELF)
53endif 37endif
diff --git a/crypto/Makefile.am.macosx-x86_64 b/crypto/Makefile.am.macosx-x86_64
index 1020567..010e3be 100644
--- a/crypto/Makefile.am.macosx-x86_64
+++ b/crypto/Makefile.am.macosx-x86_64
@@ -6,13 +6,8 @@ ASM_X86_64_MACOSX += aes/aesni-macosx-x86_64.S
6ASM_X86_64_MACOSX += bn/modexp512-macosx-x86_64.S 6ASM_X86_64_MACOSX += bn/modexp512-macosx-x86_64.S
7ASM_X86_64_MACOSX += bn/mont-macosx-x86_64.S 7ASM_X86_64_MACOSX += bn/mont-macosx-x86_64.S
8ASM_X86_64_MACOSX += bn/mont5-macosx-x86_64.S 8ASM_X86_64_MACOSX += bn/mont5-macosx-x86_64.S
9ASM_X86_64_MACOSX += md5/md5-macosx-x86_64.S
10ASM_X86_64_MACOSX += modes/ghash-macosx-x86_64.S 9ASM_X86_64_MACOSX += modes/ghash-macosx-x86_64.S
11ASM_X86_64_MACOSX += rc4/rc4-macosx-x86_64.S 10ASM_X86_64_MACOSX += rc4/rc4-macosx-x86_64.S
12ASM_X86_64_MACOSX += sha/sha1-macosx-x86_64.S
13ASM_X86_64_MACOSX += sha/sha256-macosx-x86_64.S
14ASM_X86_64_MACOSX += sha/sha512-macosx-x86_64.S
15ASM_X86_64_MACOSX += cpuid-macosx-x86_64.S
16 11
17ASM_X86_64_MACOSX += bn/arch/amd64/bignum_add.S 12ASM_X86_64_MACOSX += bn/arch/amd64/bignum_add.S
18ASM_X86_64_MACOSX += bn/arch/amd64/bignum_cmadd.S 13ASM_X86_64_MACOSX += bn/arch/amd64/bignum_cmadd.S
@@ -33,21 +28,10 @@ if HOST_ASM_MACOSX_X86_64
33libcrypto_la_CPPFLAGS += -DAES_ASM 28libcrypto_la_CPPFLAGS += -DAES_ASM
34libcrypto_la_CPPFLAGS += -DBSAES_ASM 29libcrypto_la_CPPFLAGS += -DBSAES_ASM
35libcrypto_la_CPPFLAGS += -DVPAES_ASM 30libcrypto_la_CPPFLAGS += -DVPAES_ASM
36libcrypto_la_CPPFLAGS += -DHAVE_AES_CBC_ENCRYPT_INTERNAL
37libcrypto_la_CPPFLAGS += -DHAVE_AES_SET_ENCRYPT_KEY_INTERNAL
38libcrypto_la_CPPFLAGS += -DHAVE_AES_SET_DECRYPT_KEY_INTERNAL
39libcrypto_la_CPPFLAGS += -DHAVE_AES_ENCRYPT_INTERNAL
40libcrypto_la_CPPFLAGS += -DHAVE_AES_DECRYPT_INTERNAL
41libcrypto_la_CPPFLAGS += -DOPENSSL_IA32_SSE2 31libcrypto_la_CPPFLAGS += -DOPENSSL_IA32_SSE2
42libcrypto_la_CPPFLAGS += -DOPENSSL_BN_ASM_MONT 32libcrypto_la_CPPFLAGS += -DOPENSSL_BN_ASM_MONT
43libcrypto_la_CPPFLAGS += -DOPENSSL_BN_ASM_MONT5 33libcrypto_la_CPPFLAGS += -DOPENSSL_BN_ASM_MONT5
44libcrypto_la_CPPFLAGS += -DMD5_ASM
45libcrypto_la_CPPFLAGS += -DGHASH_ASM 34libcrypto_la_CPPFLAGS += -DGHASH_ASM
46libcrypto_la_CPPFLAGS += -DRSA_ASM 35libcrypto_la_CPPFLAGS += -DRSA_ASM
47libcrypto_la_CPPFLAGS += -DSHA1_ASM
48libcrypto_la_CPPFLAGS += -DSHA256_ASM
49libcrypto_la_CPPFLAGS += -DSHA512_ASM
50libcrypto_la_CPPFLAGS += -DWHIRLPOOL_ASM
51libcrypto_la_CPPFLAGS += -DOPENSSL_CPUID_OBJ
52libcrypto_la_SOURCES += $(ASM_X86_64_MACOSX) 36libcrypto_la_SOURCES += $(ASM_X86_64_MACOSX)
53endif 37endif
diff --git a/crypto/Makefile.am.masm-x86_64 b/crypto/Makefile.am.masm-x86_64
index 7da3cc2..2ef7e1b 100644
--- a/crypto/Makefile.am.masm-x86_64
+++ b/crypto/Makefile.am.masm-x86_64
@@ -6,13 +6,8 @@ ASM_X86_64_MASM += aes/aesni-masm-x86_64.S
6ASM_X86_64_MASM += bn/modexp512-masm-x86_64.S 6ASM_X86_64_MASM += bn/modexp512-masm-x86_64.S
7ASM_X86_64_MASM += bn/mont-masm-x86_64.S 7ASM_X86_64_MASM += bn/mont-masm-x86_64.S
8ASM_X86_64_MASM += bn/mont5-masm-x86_64.S 8ASM_X86_64_MASM += bn/mont5-masm-x86_64.S
9ASM_X86_64_MASM += md5/md5-masm-x86_64.S
10ASM_X86_64_MASM += modes/ghash-masm-x86_64.S 9ASM_X86_64_MASM += modes/ghash-masm-x86_64.S
11ASM_X86_64_MASM += rc4/rc4-masm-x86_64.S 10ASM_X86_64_MASM += rc4/rc4-masm-x86_64.S
12ASM_X86_64_MASM += sha/sha1-masm-x86_64.S
13ASM_X86_64_MASM += sha/sha256-masm-x86_64.S
14ASM_X86_64_MASM += sha/sha512-masm-x86_64.S
15ASM_X86_64_MASM += cpuid-masm-x86_64.S
16 11
17EXTRA_DIST += $(ASM_X86_64_MASM) 12EXTRA_DIST += $(ASM_X86_64_MASM)
18 13
@@ -20,21 +15,10 @@ if HOST_ASM_MASM_X86_64
20libcrypto_la_CPPFLAGS += -DAES_ASM 15libcrypto_la_CPPFLAGS += -DAES_ASM
21libcrypto_la_CPPFLAGS += -DBSAES_ASM 16libcrypto_la_CPPFLAGS += -DBSAES_ASM
22libcrypto_la_CPPFLAGS += -DVPAES_ASM 17libcrypto_la_CPPFLAGS += -DVPAES_ASM
23libcrypto_la_CPPFLAGS += -DHAVE_AES_CBC_ENCRYPT_INTERNAL
24libcrypto_la_CPPFLAGS += -DHAVE_AES_SET_ENCRYPT_KEY_INTERNAL
25libcrypto_la_CPPFLAGS += -DHAVE_AES_SET_DECRYPT_KEY_INTERNAL
26libcrypto_la_CPPFLAGS += -DHAVE_AES_ENCRYPT_INTERNAL
27libcrypto_la_CPPFLAGS += -DHAVE_AES_DECRYPT_INTERNAL
28libcrypto_la_CPPFLAGS += -DOPENSSL_IA32_SSE2 18libcrypto_la_CPPFLAGS += -DOPENSSL_IA32_SSE2
29libcrypto_la_CPPFLAGS += -DOPENSSL_BN_ASM_MONT 19libcrypto_la_CPPFLAGS += -DOPENSSL_BN_ASM_MONT
30libcrypto_la_CPPFLAGS += -DOPENSSL_BN_ASM_MONT5 20libcrypto_la_CPPFLAGS += -DOPENSSL_BN_ASM_MONT5
31libcrypto_la_CPPFLAGS += -DMD5_ASM
32libcrypto_la_CPPFLAGS += -DGHASH_ASM 21libcrypto_la_CPPFLAGS += -DGHASH_ASM
33libcrypto_la_CPPFLAGS += -DRSA_ASM 22libcrypto_la_CPPFLAGS += -DRSA_ASM
34libcrypto_la_CPPFLAGS += -DSHA1_ASM
35libcrypto_la_CPPFLAGS += -DSHA256_ASM
36libcrypto_la_CPPFLAGS += -DSHA512_ASM
37libcrypto_la_CPPFLAGS += -DWHIRLPOOL_ASM
38libcrypto_la_CPPFLAGS += -DOPENSSL_CPUID_OBJ
39libcrypto_la_SOURCES += $(ASM_X86_64_MASM) 23libcrypto_la_SOURCES += $(ASM_X86_64_MASM)
40endif 24endif
diff --git a/crypto/Makefile.am.mingw64-x86_64 b/crypto/Makefile.am.mingw64-x86_64
index 7d0d3f7..8e39e9f 100644
--- a/crypto/Makefile.am.mingw64-x86_64
+++ b/crypto/Makefile.am.mingw64-x86_64
@@ -6,13 +6,8 @@ ASM_X86_64_MINGW64 += aes/aesni-mingw64-x86_64.S
6#ASM_X86_64_MINGW64 += bn/modexp512-mingw64-x86_64.S 6#ASM_X86_64_MINGW64 += bn/modexp512-mingw64-x86_64.S
7#ASM_X86_64_MINGW64 += bn/mont-mingw64-x86_64.S 7#ASM_X86_64_MINGW64 += bn/mont-mingw64-x86_64.S
8#ASM_X86_64_MINGW64 += bn/mont5-mingw64-x86_64.S 8#ASM_X86_64_MINGW64 += bn/mont5-mingw64-x86_64.S
9ASM_X86_64_MINGW64 += md5/md5-mingw64-x86_64.S
10ASM_X86_64_MINGW64 += modes/ghash-mingw64-x86_64.S 9ASM_X86_64_MINGW64 += modes/ghash-mingw64-x86_64.S
11ASM_X86_64_MINGW64 += rc4/rc4-mingw64-x86_64.S 10ASM_X86_64_MINGW64 += rc4/rc4-mingw64-x86_64.S
12ASM_X86_64_MINGW64 += sha/sha1-mingw64-x86_64.S
13ASM_X86_64_MINGW64 += sha/sha256-mingw64-x86_64.S
14ASM_X86_64_MINGW64 += sha/sha512-mingw64-x86_64.S
15ASM_X86_64_MINGW64 += cpuid-mingw64-x86_64.S
16 11
17EXTRA_DIST += $(ASM_X86_64_MINGW64) 12EXTRA_DIST += $(ASM_X86_64_MINGW64)
18 13
@@ -21,21 +16,10 @@ libcrypto_la_CPPFLAGS += -Dendbr32=endbr64
21libcrypto_la_CPPFLAGS += -DAES_ASM 16libcrypto_la_CPPFLAGS += -DAES_ASM
22libcrypto_la_CPPFLAGS += -DBSAES_ASM 17libcrypto_la_CPPFLAGS += -DBSAES_ASM
23libcrypto_la_CPPFLAGS += -DVPAES_ASM 18libcrypto_la_CPPFLAGS += -DVPAES_ASM
24libcrypto_la_CPPFLAGS += -DHAVE_AES_CBC_ENCRYPT_INTERNAL
25libcrypto_la_CPPFLAGS += -DHAVE_AES_SET_ENCRYPT_KEY_INTERNAL
26libcrypto_la_CPPFLAGS += -DHAVE_AES_SET_DECRYPT_KEY_INTERNAL
27libcrypto_la_CPPFLAGS += -DHAVE_AES_ENCRYPT_INTERNAL
28libcrypto_la_CPPFLAGS += -DHAVE_AES_DECRYPT_INTERNAL
29libcrypto_la_CPPFLAGS += -DOPENSSL_IA32_SSE2 19libcrypto_la_CPPFLAGS += -DOPENSSL_IA32_SSE2
30#libcrypto_la_CPPFLAGS += -DOPENSSL_BN_ASM_MONT 20#libcrypto_la_CPPFLAGS += -DOPENSSL_BN_ASM_MONT
31#libcrypto_la_CPPFLAGS += -DOPENSSL_BN_ASM_MONT5 21#libcrypto_la_CPPFLAGS += -DOPENSSL_BN_ASM_MONT5
32libcrypto_la_CPPFLAGS += -DMD5_ASM
33libcrypto_la_CPPFLAGS += -DGHASH_ASM 22libcrypto_la_CPPFLAGS += -DGHASH_ASM
34libcrypto_la_CPPFLAGS += -DRSA_ASM 23libcrypto_la_CPPFLAGS += -DRSA_ASM
35libcrypto_la_CPPFLAGS += -DSHA1_ASM
36libcrypto_la_CPPFLAGS += -DSHA256_ASM
37libcrypto_la_CPPFLAGS += -DSHA512_ASM
38libcrypto_la_CPPFLAGS += -DWHIRLPOOL_ASM
39libcrypto_la_CPPFLAGS += -DOPENSSL_CPUID_OBJ
40libcrypto_la_SOURCES += $(ASM_X86_64_MINGW64) 24libcrypto_la_SOURCES += $(ASM_X86_64_MINGW64)
41endif 25endif
diff --git a/crypto/arch/loongarch64/crypto_arch.h b/crypto/arch/loongarch64/crypto_arch.h
new file mode 100644
index 0000000..a3dd98d
--- /dev/null
+++ b/crypto/arch/loongarch64/crypto_arch.h
@@ -0,0 +1,21 @@
1/* $OpenBSD: crypto_arch.h,v 1.1 2024/08/11 13:02:39 jsing Exp $ */
2/*
3 * Copyright (c) 2024 Joel Sing <jsing@openbsd.org>
4 *
5 * Permission to use, copy, modify, and distribute this software for any
6 * purpose with or without fee is hereby granted, provided that the above
7 * copyright notice and this permission notice appear in all copies.
8 *
9 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16 */
17
18#ifndef HEADER_CRYPTO_ARCH_H
19#define HEADER_CRYPTO_ARCH_H
20
21#endif
diff --git a/crypto/arch/mips/crypto_arch.h b/crypto/arch/mips/crypto_arch.h
new file mode 100644
index 0000000..274879c
--- /dev/null
+++ b/crypto/arch/mips/crypto_arch.h
@@ -0,0 +1,21 @@
1/* $OpenBSD$ */
2/*
3 * Copyright (c) 2024 Joel Sing <jsing@openbsd.org>
4 *
5 * Permission to use, copy, modify, and distribute this software for any
6 * purpose with or without fee is hereby granted, provided that the above
7 * copyright notice and this permission notice appear in all copies.
8 *
9 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16 */
17
18#ifndef HEADER_CRYPTO_ARCH_H
19#define HEADER_CRYPTO_ARCH_H
20
21#endif
diff --git a/crypto/bn/arch/loongarch64/bn_arch.h b/crypto/bn/arch/loongarch64/bn_arch.h
new file mode 100644
index 0000000..672ac12
--- /dev/null
+++ b/crypto/bn/arch/loongarch64/bn_arch.h
@@ -0,0 +1,23 @@
1/* $OpenBSD: bn_arch.h,v 1.7 2023/07/09 10:37:32 jsing Exp $ */
2/*
3 * Copyright (c) 2023 Joel Sing <jsing@openbsd.org>
4 *
5 * Permission to use, copy, modify, and distribute this software for any
6 * purpose with or without fee is hereby granted, provided that the above
7 * copyright notice and this permission notice appear in all copies.
8 *
9 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16 */
17
18#include <openssl/bn.h>
19
20#ifndef HEADER_BN_ARCH_H
21#define HEADER_BN_ARCH_H
22
23#endif
diff --git a/crypto/compat/getdelim.c b/crypto/compat/getdelim.c
new file mode 100644
index 0000000..caec3f2
--- /dev/null
+++ b/crypto/compat/getdelim.c
@@ -0,0 +1,78 @@
1/*-
2 * Copyright (c) 2011 The NetBSD Foundation, Inc.
3 * All rights reserved.
4 *
5 * This code is derived from software contributed to The NetBSD Foundation
6 * by Christos Zoulas.
7 *
8 * Redistribution and use in source and binary forms, with or without
9 * modification, are permitted provided that the following conditions
10 * are met:
11 * 1. Redistributions of source code must retain the above copyright
12 * notice, this list of conditions and the following disclaimer.
13 * 2. Redistributions in binary form must reproduce the above copyright
14 * notice, this list of conditions and the following disclaimer in the
15 * documentation and/or other materials provided with the distribution.
16 *
17 * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
18 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
19 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
20 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
21 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
24 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
25 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
26 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27 * POSSIBILITY OF SUCH DAMAGE.
28 */
29
30#include <stdio.h>
31#include <stdlib.h>
32
33#ifndef HAVE_GETDELIM
34
35ssize_t
36getdelim(char **buf, size_t *bufsiz, int delimiter, FILE *fp)
37{
38 char *ptr, *eptr;
39
40
41 if (*buf == NULL || *bufsiz == 0) {
42 *bufsiz = BUFSIZ;
43 if ((*buf = malloc(*bufsiz)) == NULL)
44 return -1;
45 }
46
47 for (ptr = *buf, eptr = *buf + *bufsiz;;) {
48 int c = fgetc(fp);
49 if (c == -1) {
50 if (feof(fp)) {
51 ssize_t diff = (ssize_t)(ptr - *buf);
52 if (diff != 0) {
53 *ptr = '\0';
54 return diff;
55 }
56 }
57 return -1;
58 }
59 *ptr++ = c;
60 if (c == delimiter) {
61 *ptr = '\0';
62 return ptr - *buf;
63 }
64 if (ptr + 2 >= eptr) {
65 char *nbuf;
66 size_t nbufsiz = *bufsiz * 2;
67 ssize_t d = ptr - *buf;
68 if ((nbuf = realloc(*buf, nbufsiz)) == NULL)
69 return -1;
70 *buf = nbuf;
71 *bufsiz = nbufsiz;
72 eptr = nbuf + nbufsiz;
73 ptr = nbuf + d;
74 }
75 }
76}
77
78#endif /* HAVE_GETDELIM */
diff --git a/crypto/compat/getline.c b/crypto/compat/getline.c
new file mode 100644
index 0000000..e6ecde0
--- /dev/null
+++ b/crypto/compat/getline.c
@@ -0,0 +1,40 @@
1/*-
2 * Copyright (c) 2011 The NetBSD Foundation, Inc.
3 * All rights reserved.
4 *
5 * This code is derived from software contributed to The NetBSD Foundation
6 * by Christos Zoulas.
7 *
8 * Redistribution and use in source and binary forms, with or without
9 * modification, are permitted provided that the following conditions
10 * are met:
11 * 1. Redistributions of source code must retain the above copyright
12 * notice, this list of conditions and the following disclaimer.
13 * 2. Redistributions in binary form must reproduce the above copyright
14 * notice, this list of conditions and the following disclaimer in the
15 * documentation and/or other materials provided with the distribution.
16 *
17 * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
18 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
19 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
20 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
21 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
24 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
25 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
26 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27 * POSSIBILITY OF SUCH DAMAGE.
28 */
29
30#include <stdio.h>
31
32#ifndef HAVE_GETLINE
33
34ssize_t
35getline(char **buf, size_t *bufsiz, FILE *fp)
36{
37 return getdelim(buf, bufsiz, '\n', fp);
38}
39
40#endif /* HAVE_GETLINE */
diff --git a/crypto/compat/posix_win.c b/crypto/compat/posix_win.c
index bb3e653..572e527 100644
--- a/crypto/compat/posix_win.c
+++ b/crypto/compat/posix_win.c
@@ -9,6 +9,8 @@
9 9
10#define NO_REDEF_POSIX_FUNCTIONS 10#define NO_REDEF_POSIX_FUNCTIONS
11 11
12#include <sys/time.h>
13
12#include <ws2tcpip.h> 14#include <ws2tcpip.h>
13#include <windows.h> 15#include <windows.h>
14 16
@@ -20,6 +22,25 @@
20#include <string.h> 22#include <string.h>
21#include <unistd.h> 23#include <unistd.h>
22 24
25#include <sys/stat.h>
26
27static int
28is_socket(int fd)
29{
30 // Border case: Don't break std* file descriptors
31 if (fd < 3)
32 return 0;
33
34 // All locally-allocated file descriptors will have the high bit set
35 return (fd & 0x80000000) == 0;
36}
37
38static int
39get_real_fd(int fd)
40{
41 return (fd & 0x7fffffff);
42}
43
23void 44void
24posix_perror(const char *s) 45posix_perror(const char *s)
25{ 46{
@@ -42,6 +63,12 @@ posix_fopen(const char *path, const char *mode)
42} 63}
43 64
44int 65int
66libressl_fstat(int fd, struct stat *statbuf)
67{
68 return fstat(get_real_fd(fd), statbuf);
69}
70
71int
45posix_open(const char *path, ...) 72posix_open(const char *path, ...)
46{ 73{
47 va_list ap; 74 va_list ap;
@@ -60,7 +87,11 @@ posix_open(const char *path, ...)
60 flags |= O_NOINHERIT; 87 flags |= O_NOINHERIT;
61 } 88 }
62 flags &= ~O_NONBLOCK; 89 flags &= ~O_NONBLOCK;
63 return open(path, flags, mode); 90
91 const int fh = open(path, flags, mode);
92
93 // Set high bit to mark file descriptor as a file handle
94 return fh + 0x80000000;
64} 95}
65 96
66char * 97char *
@@ -148,52 +179,6 @@ wsa_errno(int err)
148 return -1; 179 return -1;
149} 180}
150 181
151/*
152 * Employ a similar trick to cpython (pycore_fileutils.h) where the CRT report
153 * handler is disabled while checking if a descriptor is a socket or a file
154 */
155#if defined _MSC_VER && _MSC_VER >= 1900
156
157#include <crtdbg.h>
158#include <stdlib.h>
159
160static void noop_handler(const wchar_t *expression, const wchar_t *function,
161 const wchar_t *file, unsigned int line, uintptr_t pReserved)
162{
163 return;
164}
165
166#define BEGIN_SUPPRESS_IPH \
167 const int old_report_mode = _CrtSetReportMode(_CRT_ASSERT, 0); \
168 const _invalid_parameter_handler old_handler = _set_thread_local_invalid_parameter_handler(noop_handler)
169#define END_SUPPRESS_IPH \
170 (void)old_report_mode; /* Silence warning in release mode when _CrtSetReportMode compiles to void. */ \
171 _CrtSetReportMode(_CRT_ASSERT, old_report_mode); \
172 _set_thread_local_invalid_parameter_handler(old_handler)
173
174#else
175
176#define BEGIN_SUPPRESS_IPH
177#define END_SUPPRESS_IPH
178
179#endif
180
181static int
182is_socket(int fd)
183{
184 intptr_t hd;
185
186 BEGIN_SUPPRESS_IPH;
187 hd = _get_osfhandle(fd);
188 END_SUPPRESS_IPH;
189
190 if (hd == (intptr_t)INVALID_HANDLE_VALUE) {
191 return 1; /* fd is not file descriptor */
192 }
193
194 return 0;
195}
196
197int 182int
198posix_connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen) 183posix_connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen)
199{ 184{
@@ -207,14 +192,13 @@ int
207posix_close(int fd) 192posix_close(int fd)
208{ 193{
209 int rc; 194 int rc;
210
211 if (is_socket(fd)) { 195 if (is_socket(fd)) {
212 if ((rc = closesocket(fd)) == SOCKET_ERROR) { 196 if ((rc = closesocket(fd)) == SOCKET_ERROR) {
213 int err = WSAGetLastError(); 197 int err = WSAGetLastError();
214 rc = wsa_errno(err); 198 rc = wsa_errno(err);
215 } 199 }
216 } else { 200 } else {
217 rc = close(fd); 201 rc = close(get_real_fd(fd));
218 } 202 }
219 return rc; 203 return rc;
220} 204}
@@ -223,14 +207,13 @@ ssize_t
223posix_read(int fd, void *buf, size_t count) 207posix_read(int fd, void *buf, size_t count)
224{ 208{
225 ssize_t rc; 209 ssize_t rc;
226
227 if (is_socket(fd)) { 210 if (is_socket(fd)) {
228 if ((rc = recv(fd, buf, count, 0)) == SOCKET_ERROR) { 211 if ((rc = recv(fd, buf, count, 0)) == SOCKET_ERROR) {
229 int err = WSAGetLastError(); 212 int err = WSAGetLastError();
230 rc = wsa_errno(err); 213 rc = wsa_errno(err);
231 } 214 }
232 } else { 215 } else {
233 rc = read(fd, buf, count); 216 rc = read(get_real_fd(fd), buf, count);
234 } 217 }
235 return rc; 218 return rc;
236} 219}
@@ -244,7 +227,7 @@ posix_write(int fd, const void *buf, size_t count)
244 rc = wsa_errno(WSAGetLastError()); 227 rc = wsa_errno(WSAGetLastError());
245 } 228 }
246 } else { 229 } else {
247 rc = write(fd, buf, count); 230 rc = write(get_real_fd(fd), buf, count);
248 } 231 }
249 return rc; 232 return rc;
250} 233}
@@ -289,7 +272,7 @@ uid_t getuid(void)
289 272
290#ifdef _MSC_VER 273#ifdef _MSC_VER
291struct timezone; 274struct timezone;
292int gettimeofday(struct timeval * tp, struct timezone * tzp) 275int gettimeofday(struct timeval *tp, void *tzp)
293{ 276{
294 /* 277 /*
295 * Note: some broken versions only have 8 trailing zero's, the correct 278 * Note: some broken versions only have 8 trailing zero's, the correct
@@ -306,7 +289,7 @@ int gettimeofday(struct timeval * tp, struct timezone * tzp)
306 time = ((uint64_t)file_time.dwLowDateTime); 289 time = ((uint64_t)file_time.dwLowDateTime);
307 time += ((uint64_t)file_time.dwHighDateTime) << 32; 290 time += ((uint64_t)file_time.dwHighDateTime) << 32;
308 291
309 tp->tv_sec = (long)((time - EPOCH) / 10000000L); 292 tp->tv_sec = (long long)((time - EPOCH) / 10000000L);
310 tp->tv_usec = (long)(system_time.wMilliseconds * 1000); 293 tp->tv_usec = (long)(system_time.wMilliseconds * 1000);
311 return 0; 294 return 0;
312} 295}
diff --git a/crypto/compat/ui_openssl_win.c b/crypto/compat/ui_openssl_win.c
index 09705e4..4ae2c5d 100644
--- a/crypto/compat/ui_openssl_win.c
+++ b/crypto/compat/ui_openssl_win.c
@@ -146,7 +146,7 @@ static int echo_console(UI *ui);
146static int noecho_console(UI *ui); 146static int noecho_console(UI *ui);
147static int close_console(UI *ui); 147static int close_console(UI *ui);
148 148
149static UI_METHOD ui_openssl = { 149static const UI_METHOD ui_openssl = {
150 .name = "OpenSSL default user interface", 150 .name = "OpenSSL default user interface",
151 .ui_open_session = open_console, 151 .ui_open_session = open_console,
152 .ui_write_string = write_string, 152 .ui_write_string = write_string,
@@ -155,7 +155,7 @@ static UI_METHOD ui_openssl = {
155}; 155};
156 156
157/* The method with all the built-in thingies */ 157/* The method with all the built-in thingies */
158UI_METHOD * 158const UI_METHOD *
159UI_OpenSSL(void) 159UI_OpenSSL(void)
160{ 160{
161 return &ui_openssl; 161 return &ui_openssl;