doc: fix link in BN_new.pod master
authorMykola Baibuz <kolr@ukr.net>
Sun, 18 Aug 2019 08:17:03 +0000 (11:17 +0300)
committerRichard Levitte <levitte@openssl.org>
Mon, 19 Aug 2019 05:19:56 +0000 (07:19 +0200)
Fixes #9622

CLA: trivial

Reviewed-by: Matthias St. Pierre <Matthias.St.Pierre@ncp-e.com>
Reviewed-by: Richard Levitte <levitte@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/9627)

998 files changed:
.github/ISSUE_TEMPLATE/bug_report.md
.github/ISSUE_TEMPLATE/feature_request.md
.gitignore
.travis.yml
CHANGES
CONTRIBUTING
Configurations/00-base-templates.conf
Configurations/10-main.conf
Configurations/15-android.conf
Configurations/15-ios.conf
Configurations/50-djgpp.conf
Configurations/50-haiku.conf
Configurations/50-masm.conf
Configurations/50-win-onecore.conf
Configurations/90-team.norelease.conf
Configurations/README
Configurations/common0.tmpl
Configurations/platform/AIX.pm
Configurations/platform/Unix.pm
Configurations/shared-info.pl
Configurations/unix-Makefile.tmpl
Configurations/windows-makefile.tmpl
Configure
HACKING [new file with mode: 0644]
INSTALL
NEWS
NOTES.PERL
NOTES.VALGRIND [new file with mode: 0644]
NOTES.WIN
apps/apps.c
apps/build.info
apps/ca.c
apps/ciphers.c
apps/cms.c
apps/columns.c [new file with mode: 0644]
apps/dhparam.c
apps/dsaparam.c
apps/ecparam.c
apps/gendsa.c
apps/genrsa.c
apps/include/apps.h
apps/include/function.h [new file with mode: 0644]
apps/include/opt.h
apps/include/s_apps.h
apps/info.c
apps/list.c [new file with mode: 0644]
apps/mac.c
apps/ocsp.c
apps/openssl.c
apps/opt.c
apps/pkcs12.c
apps/progs.c [new file with mode: 0644]
apps/progs.h [new file with mode: 0644]
apps/progs.pl
apps/req.c
apps/rsa.c
apps/rsautl.c
apps/s_client.c
apps/s_server.c
apps/s_time.c
apps/speed.c
apps/storeutl.c
apps/ts.c
apps/verify.c
apps/version.c
apps/vms_term_sock.c
build.info
config
crypto/README.sparse_array
crypto/aes/asm/aes-s390x.pl
crypto/aes/build.info
crypto/aria/aria.c
crypto/asn1/a_sign.c
crypto/asn1/a_strnid.c
crypto/asn1/a_time.c
crypto/asn1/a_type.c
crypto/asn1/asn1_err.c
crypto/asn1/bio_ndef.c
crypto/asn1/build.info
crypto/asn1/d2i_param.c [new file with mode: 0644]
crypto/asn1/i2d_param.c [new file with mode: 0644]
crypto/asn1/p5_scrypt.c
crypto/asn1/tasn_new.c
crypto/asn1_dsa.c [new file with mode: 0644]
crypto/async/async.c
crypto/async/async_err.c
crypto/bf/build.info
crypto/bio/b_addr.c
crypto/bio/b_sock.c
crypto/bio/b_sock2.c
crypto/bio/bio_err.c
crypto/bio/bio_lcl.h
crypto/bio/bss_acpt.c
crypto/bio/bss_conn.c
crypto/bio/bss_dgram.c
crypto/bio/bss_fd.c
crypto/bio/bss_file.c
crypto/bio/bss_mem.c
crypto/blake2/blake2b_mac.c [deleted file]
crypto/blake2/blake2s_mac.c [deleted file]
crypto/blake2/build.info
crypto/blake2/m_blake2b.c
crypto/blake2/m_blake2s.c
crypto/bn/asm/mips.pl
crypto/bn/bn_blind.c
crypto/bn/bn_conv.c [new file with mode: 0644]
crypto/bn/bn_ctx.c
crypto/bn/bn_div.c
crypto/bn/bn_err.c
crypto/bn/bn_gf2m.c
crypto/bn/bn_lcl.h
crypto/bn/bn_lib.c
crypto/bn/bn_prime.c
crypto/bn/bn_print.c
crypto/bn/bn_rand.c
crypto/bn/bn_rsa_fips186_4.c
crypto/bn/bn_sqrt.c
crypto/bn/bn_x931p.c
crypto/bn/build.info
crypto/bsearch.c [new file with mode: 0644]
crypto/buffer/buf_err.c
crypto/buffer/build.info
crypto/build.info
crypto/camellia/build.info
crypto/cast/build.info
crypto/chacha/asm/chacha-s390x.pl
crypto/chacha/build.info
crypto/cmac/build.info
crypto/cmac/cm_ameth.c
crypto/cmac/cm_meth.c [deleted file]
crypto/cmp/build.info [new file with mode: 0644]
crypto/cmp/cmp_asn.c [new file with mode: 0644]
crypto/cmp/cmp_err.c [new file with mode: 0644]
crypto/cmp/cmp_int.h [new file with mode: 0644]
crypto/cms/cms_att.c
crypto/cms/cms_err.c
crypto/cms/cms_ess.c
crypto/cms/cms_lcl.h
crypto/cms/cms_sd.c
crypto/comp/comp_err.c
crypto/conf/conf_def.c
crypto/conf/conf_err.c
crypto/conf/conf_sap.c
crypto/context.c
crypto/core_algorithm.c [new file with mode: 0644]
crypto/core_fetch.c
crypto/core_namemap.c [new file with mode: 0644]
crypto/cpt_err.c
crypto/crmf/crmf_asn.c
crypto/crmf/crmf_err.c
crypto/crmf/crmf_int.h
crypto/crmf/crmf_lib.c
crypto/crmf/crmf_pbm.c
crypto/cryptlib.c
crypto/ct/ct_err.c
crypto/ctype.c
crypto/des/build.info
crypto/des/set_key.c
crypto/dh/dh_ameth.c
crypto/dh/dh_asn1.c
crypto/dh/dh_check.c
crypto/dh/dh_err.c
crypto/dh/dh_gen.c
crypto/dh/dh_kdf.c
crypto/dh/dh_key.c
crypto/dh/dh_lib.c
crypto/dh/dh_locl.h
crypto/dh/dh_pmeth.c
crypto/dh/dh_rfc7919.c
crypto/dsa/dsa_ameth.c
crypto/dsa/dsa_asn1.c
crypto/dsa/dsa_err.c
crypto/dsa/dsa_ossl.c
crypto/dsa/dsa_pmeth.c
crypto/dso/dso_dlfcn.c
crypto/dso/dso_err.c
crypto/ec/asm/ecp_nistz256-sparcv9.pl
crypto/ec/asm/ecp_nistz256-x86_64.pl
crypto/ec/asm/x25519-ppc64.pl
crypto/ec/build.info
crypto/ec/curve448/curve448.c
crypto/ec/curve448/curve448_lcl.h
crypto/ec/curve448/ed448.h
crypto/ec/curve448/eddsa.c
crypto/ec/ec2_oct.c
crypto/ec/ec2_smpl.c
crypto/ec/ec_asn1.c
crypto/ec/ec_check.c
crypto/ec/ec_curve.c
crypto/ec/ec_cvt.c
crypto/ec/ec_err.c
crypto/ec/ec_key.c
crypto/ec/ec_kmeth.c
crypto/ec/ec_lcl.h
crypto/ec/ec_lib.c
crypto/ec/ec_mult.c
crypto/ec/ec_pmeth.c
crypto/ec/ecdh_kdf.c
crypto/ec/ecdh_ossl.c
crypto/ec/ecdsa_ossl.c
crypto/ec/ecp_mont.c
crypto/ec/ecp_nist.c
crypto/ec/ecp_nistp224.c
crypto/ec/ecp_nistp256.c
crypto/ec/ecp_nistp521.c
crypto/ec/ecp_nistputil.c
crypto/ec/ecp_nistz256.c
crypto/ec/ecp_oct.c
crypto/ec/ecp_s390x_nistp.c [new file with mode: 0644]
crypto/ec/ecp_smpl.c
crypto/ec/ecx_meth.c
crypto/engine/eng_all.c
crypto/engine/eng_err.c
crypto/engine/eng_openssl.c
crypto/engine/eng_table.c
crypto/err/build.info
crypto/err/err.c
crypto/err/err_all.c
crypto/err/err_blocks.c [new file with mode: 0644]
crypto/err/err_locl.h [new file with mode: 0644]
crypto/err/err_prn.c
crypto/err/openssl.ec
crypto/err/openssl.txt
crypto/ess/ess_err.c
crypto/evp/bio_ok.c
crypto/evp/build.info
crypto/evp/c_allkdf.c [new file with mode: 0644]
crypto/evp/c_allm.c [deleted file]
crypto/evp/cmeth_lib.c
crypto/evp/digest.c
crypto/evp/e_aes.c
crypto/evp/e_aes_cbc_hmac_sha1.c
crypto/evp/e_aes_cbc_hmac_sha256.c
crypto/evp/e_aria.c
crypto/evp/e_camellia.c
crypto/evp/e_chacha20_poly1305.c
crypto/evp/e_des.c
crypto/evp/e_des3.c
crypto/evp/e_rc4_hmac_md5.c
crypto/evp/e_rc5.c
crypto/evp/evp_enc.c
crypto/evp/evp_err.c
crypto/evp/evp_fetch.c
crypto/evp/evp_key.c
crypto/evp/evp_lib.c
crypto/evp/evp_locl.h
crypto/evp/evp_utils.c [new file with mode: 0644]
crypto/evp/exchange.c [new file with mode: 0644]
crypto/evp/kdf_lib.c
crypto/evp/keymgmt_lib.c [new file with mode: 0644]
crypto/evp/keymgmt_meth.c [new file with mode: 0644]
crypto/evp/m_md5_sha1.c
crypto/evp/m_sha1.c
crypto/evp/m_sha3.c
crypto/evp/mac_lib.c
crypto/evp/mac_meth.c [new file with mode: 0644]
crypto/evp/names.c
crypto/evp/p5_crpt.c
crypto/evp/p5_crpt2.c
crypto/evp/p_lib.c
crypto/evp/pkey_mac.c
crypto/evp/pmeth_fn.c
crypto/evp/pmeth_lib.c
crypto/ex_data.c
crypto/gmac/build.info [deleted file]
crypto/gmac/gmac.c [deleted file]
crypto/hmac/build.info
crypto/hmac/hm_meth.c [deleted file]
crypto/hmac/hmac.c
crypto/include/internal/aes_platform.h [new file with mode: 0644]
crypto/include/internal/asn1_dsa.h [new file with mode: 0644]
crypto/include/internal/asn1_int.h
crypto/include/internal/async.h
crypto/include/internal/bn_int.h
crypto/include/internal/chacha.h
crypto/include/internal/cms_int.h [new file with mode: 0644]
crypto/include/internal/cryptlib_int.h
crypto/include/internal/ctype.h
crypto/include/internal/err_int.h
crypto/include/internal/ess_int.h
crypto/include/internal/evp_int.h
crypto/include/internal/modes_int.h [moved from crypto/modes/modes_lcl.h with 97% similarity]
crypto/include/internal/rand_int.h
crypto/include/internal/sha.h
crypto/include/internal/siv_int.h [new file with mode: 0644]
crypto/include/internal/sm2err.h
crypto/include/internal/sparse_array.h
crypto/include/internal/x509_int.h
crypto/init.c
crypto/initthread.c [new file with mode: 0644]
crypto/kdf/build.info
crypto/kdf/hkdf.c
crypto/kdf/kdf_err.c
crypto/kdf/pbkdf2.c
crypto/kdf/scrypt.c
crypto/kdf/sshkdf.c
crypto/kdf/sskdf.c
crypto/kdf/tls1_prf.c
crypto/kdf/x942kdf.c [new file with mode: 0644]
crypto/kmac/build.info [deleted file]
crypto/kmac/kmac.c [deleted file]
crypto/lhash/build.info
crypto/lhash/lhash.c
crypto/md5/build.info
crypto/md5/md5_sha1.c [new file with mode: 0644]
crypto/mem_dbg.c
crypto/mem_sec.c
crypto/modes/build.info
crypto/modes/cbc128.c
crypto/modes/ccm128.c
crypto/modes/cfb128.c
crypto/modes/ctr128.c
crypto/modes/cts128.c
crypto/modes/gcm128.c
crypto/modes/ocb128.c
crypto/modes/ofb128.c
crypto/modes/siv128.c
crypto/modes/xts128.c
crypto/o_str.c
crypto/objects/obj_dat.c
crypto/objects/obj_dat.h
crypto/objects/obj_err.c
crypto/objects/obj_mac.num
crypto/objects/objects.txt
crypto/ocsp/ocsp_err.c
crypto/ocsp/ocsp_ext.c
crypto/ocsp/v3_ocsp.c
crypto/packet.c [moved from ssl/packet.c with 89% similarity]
crypto/param_build.c [new file with mode: 0644]
crypto/params.c
crypto/params_from_text.c [new file with mode: 0644]
crypto/pem/pem_err.c
crypto/perlasm/s390x.pm
crypto/pkcs12/pk12err.c
crypto/pkcs7/pkcs7err.c
crypto/poly1305/asm/poly1305-ppc.pl
crypto/poly1305/asm/poly1305-s390x.pl
crypto/poly1305/build.info
crypto/poly1305/poly1305_meth.c [deleted file]
crypto/ppccap.c
crypto/property/build.info
crypto/property/defn_cache.c
crypto/property/properties.ebnf
crypto/property/properties.xhtml [deleted file]
crypto/property/property.c
crypto/property/property_err.c
crypto/property/property_lcl.h
crypto/property/property_parse.c
crypto/property/property_string.c
crypto/provider.c
crypto/provider_conf.c
crypto/provider_core.c
crypto/provider_predefined.c
crypto/rand/build.info
crypto/rand/drbg_ctr.c
crypto/rand/drbg_hash.c
crypto/rand/drbg_hmac.c
crypto/rand/drbg_lib.c
crypto/rand/rand_crng_test.c
crypto/rand/rand_egd.c
crypto/rand/rand_err.c
crypto/rand/rand_lcl.h
crypto/rand/rand_lib.c
crypto/rand/rand_unix.c
crypto/rand/rand_vxworks.c [new file with mode: 0644]
crypto/rand/rand_win.c
crypto/rc4/build.info
crypto/rc5/build.info
crypto/rc5/rc5_skey.c
crypto/ripemd/build.info
crypto/rsa/rsa_ameth.c
crypto/rsa/rsa_chk.c
crypto/rsa/rsa_err.c
crypto/rsa/rsa_gen.c
crypto/rsa/rsa_ossl.c
crypto/rsa/rsa_pmeth.c
crypto/s390x_arch.h
crypto/s390xcap.c
crypto/s390xcpuid.pl
crypto/sha/asm/keccak1600-armv4.pl
crypto/sha/asm/keccak1600-armv8.pl
crypto/sha/asm/sha512-sparcv9.pl
crypto/sha/build.info
crypto/sha/keccak1600.c
crypto/sha/sha1dgst.c
crypto/sha/sha3.c [new file with mode: 0644]
crypto/siphash/build.info
crypto/siphash/siphash_meth.c [deleted file]
crypto/sm2/sm2_err.c
crypto/sm2/sm2_sign.c
crypto/sm3/m_sm3.c
crypto/sm3/sm3_locl.h
crypto/sparcv9cap.c
crypto/sparse_array.c
crypto/stack/build.info
crypto/stack/stack.c
crypto/store/loader_file.c
crypto/store/store_err.c
crypto/store/store_lib.c
crypto/threads_pthread.c
crypto/trace.c
crypto/ts/ts_err.c
crypto/ui/ui_err.c
crypto/ui/ui_lib.c
crypto/ui/ui_openssl.c
crypto/uid.c
crypto/whrlpool/build.info
crypto/whrlpool/wp_block.c
crypto/x509/build.info
crypto/x509/by_dir.c
crypto/x509/ext_dat.h [moved from crypto/x509v3/ext_dat.h with 100% similarity]
crypto/x509/pcy_cache.c [moved from crypto/x509v3/pcy_cache.c with 100% similarity]
crypto/x509/pcy_data.c [moved from crypto/x509v3/pcy_data.c with 100% similarity]
crypto/x509/pcy_int.h [moved from crypto/x509v3/pcy_int.h with 100% similarity]
crypto/x509/pcy_lib.c [moved from crypto/x509v3/pcy_lib.c with 100% similarity]
crypto/x509/pcy_map.c [moved from crypto/x509v3/pcy_map.c with 100% similarity]
crypto/x509/pcy_node.c [moved from crypto/x509v3/pcy_node.c with 100% similarity]
crypto/x509/pcy_tree.c [moved from crypto/x509v3/pcy_tree.c with 99% similarity]
crypto/x509/standard_exts.h [moved from crypto/x509v3/standard_exts.h with 100% similarity]
crypto/x509/t_req.c
crypto/x509/v3_addr.c [moved from crypto/x509v3/v3_addr.c with 100% similarity]
crypto/x509/v3_admis.c [moved from crypto/x509v3/v3_admis.c with 100% similarity]
crypto/x509/v3_admis.h [moved from crypto/x509v3/v3_admis.h with 100% similarity]
crypto/x509/v3_akey.c [moved from crypto/x509v3/v3_akey.c with 100% similarity]
crypto/x509/v3_akeya.c [moved from crypto/x509v3/v3_akeya.c with 100% similarity]
crypto/x509/v3_alt.c [moved from crypto/x509v3/v3_alt.c with 98% similarity]
crypto/x509/v3_asid.c [moved from crypto/x509v3/v3_asid.c with 100% similarity]
crypto/x509/v3_bcons.c [moved from crypto/x509v3/v3_bcons.c with 100% similarity]
crypto/x509/v3_bitst.c [moved from crypto/x509v3/v3_bitst.c with 100% similarity]
crypto/x509/v3_conf.c [moved from crypto/x509v3/v3_conf.c with 100% similarity]
crypto/x509/v3_cpols.c [moved from crypto/x509v3/v3_cpols.c with 100% similarity]
crypto/x509/v3_crld.c [moved from crypto/x509v3/v3_crld.c with 100% similarity]
crypto/x509/v3_enum.c [moved from crypto/x509v3/v3_enum.c with 100% similarity]
crypto/x509/v3_extku.c [moved from crypto/x509v3/v3_extku.c with 100% similarity]
crypto/x509/v3_genn.c [moved from crypto/x509v3/v3_genn.c with 97% similarity]
crypto/x509/v3_ia5.c [moved from crypto/x509v3/v3_ia5.c with 100% similarity]
crypto/x509/v3_info.c [moved from crypto/x509v3/v3_info.c with 100% similarity]
crypto/x509/v3_int.c [moved from crypto/x509v3/v3_int.c with 100% similarity]
crypto/x509/v3_lib.c [moved from crypto/x509v3/v3_lib.c with 100% similarity]
crypto/x509/v3_ncons.c [moved from crypto/x509v3/v3_ncons.c with 100% similarity]
crypto/x509/v3_pci.c [moved from crypto/x509v3/v3_pci.c with 100% similarity]
crypto/x509/v3_pcia.c [moved from crypto/x509v3/v3_pcia.c with 100% similarity]
crypto/x509/v3_pcons.c [moved from crypto/x509v3/v3_pcons.c with 100% similarity]
crypto/x509/v3_pku.c [moved from crypto/x509v3/v3_pku.c with 100% similarity]
crypto/x509/v3_pmaps.c [moved from crypto/x509v3/v3_pmaps.c with 100% similarity]
crypto/x509/v3_prn.c [moved from crypto/x509v3/v3_prn.c with 100% similarity]
crypto/x509/v3_purp.c [moved from crypto/x509v3/v3_purp.c with 98% similarity]
crypto/x509/v3_skey.c [moved from crypto/x509v3/v3_skey.c with 100% similarity]
crypto/x509/v3_sxnet.c [moved from crypto/x509v3/v3_sxnet.c with 100% similarity]
crypto/x509/v3_tlsf.c [moved from crypto/x509v3/v3_tlsf.c with 99% similarity]
crypto/x509/v3_utl.c [moved from crypto/x509v3/v3_utl.c with 100% similarity]
crypto/x509/v3err.c [moved from crypto/x509v3/v3err.c with 52% similarity]
crypto/x509/x509_att.c
crypto/x509/x509_cmp.c
crypto/x509/x509_err.c
crypto/x509/x509_lu.c
crypto/x509/x509_vfy.c
crypto/x509/x_all.c
crypto/x509/x_pubkey.c
crypto/x509/x_req.c
crypto/x509/x_x509.c
crypto/x509v3/build.info [deleted file]
demos/bio/descrip.mms
demos/evp/aesgcm.c
doc/HOWTO/proxy_certificates.txt
doc/internal/man3/DEFINE_SPARSE_ARRAY_OF.pod
doc/internal/man3/OSSL_METHOD_STORE.pod
doc/internal/man3/cms_add1_signing_cert.pod [moved from doc/man3/CMS_add1_signing_cert.pod with 69% similarity]
doc/internal/man3/evp_generic_fetch.pod
doc/internal/man3/evp_keymgmt_export_to_provider.pod [new file with mode: 0644]
doc/internal/man3/evp_keymgmt_freekey.pod [new file with mode: 0644]
doc/internal/man3/openssl_ctx_get_data.pod
doc/internal/man3/ossl_algorithm_do_all.pod [new file with mode: 0644]
doc/internal/man3/ossl_init_thread_deregister.pod [new file with mode: 0644]
doc/internal/man3/ossl_method_construct.pod
doc/internal/man3/ossl_namemap_new.pod [new file with mode: 0644]
doc/internal/man3/ossl_param_bld_init.pod [new file with mode: 0644]
doc/internal/man3/ossl_prov_util_nid_to_name.pod [new file with mode: 0644]
doc/internal/man3/ossl_provider_add_conf_module.pod [new file with mode: 0644]
doc/internal/man3/ossl_provider_new.pod
doc/internal/man3/rand_bytes_ex.pod [new file with mode: 0644]
doc/man1/ca.pod
doc/man1/dhparam.pod
doc/man1/dsaparam.pod
doc/man1/engine.pod
doc/man1/errstr.pod
doc/man1/gendsa.pod
doc/man1/genpkey.pod
doc/man1/genrsa.pod
doc/man1/kdf.pod
doc/man1/list.pod
doc/man1/mac.pod
doc/man1/pkcs12.pod
doc/man1/pkeyparam.pod
doc/man1/pkeyutl.pod
doc/man1/req.pod
doc/man1/s_client.pod
doc/man1/s_server.pod
doc/man1/ts.pod
doc/man1/verify.pod
doc/man3/ADMISSIONS.pod
doc/man3/ASYNC_WAIT_CTX_new.pod
doc/man3/ASYNC_start_job.pod
doc/man3/BIO_connect.pod
doc/man3/BIO_ctrl.pod
doc/man3/BIO_f_ssl.pod
doc/man3/BIO_find_type.pod
doc/man3/BIO_new.pod
doc/man3/BIO_s_accept.pod
doc/man3/BIO_s_bio.pod
doc/man3/BIO_s_connect.pod
doc/man3/BIO_s_fd.pod
doc/man3/BIO_s_mem.pod
doc/man3/BIO_set_callback.pod
doc/man3/BN_CTX_new.pod
doc/man3/BN_generate_prime.pod
doc/man3/BN_mod_mul_montgomery.pod
doc/man3/BN_new.pod
doc/man3/BN_rand.pod
doc/man3/CMS_final.pod
doc/man3/CMS_verify.pod
doc/man3/CRYPTO_THREAD_run_once.pod
doc/man3/CRYPTO_get_ex_new_index.pod
doc/man3/CRYPTO_memcmp.pod [new file with mode: 0644]
doc/man3/DES_random_key.pod
doc/man3/DSA_generate_key.pod
doc/man3/DSA_sign.pod
doc/man3/ECDSA_SIG_new.pod
doc/man3/EC_GROUP_copy.pod
doc/man3/EC_GROUP_new.pod
doc/man3/EC_KEY_new.pod
doc/man3/ERR_GET_LIB.pod
doc/man3/ERR_new.pod [new file with mode: 0644]
doc/man3/ERR_put_error.pod
doc/man3/EVP_CIPHER_meth_new.pod
doc/man3/EVP_DigestInit.pod
doc/man3/EVP_DigestSignInit.pod
doc/man3/EVP_DigestVerifyInit.pod
doc/man3/EVP_EncryptInit.pod
doc/man3/EVP_KDF_CTX.pod
doc/man3/EVP_KEYEXCH_free.pod [new file with mode: 0644]
doc/man3/EVP_KEYMGMT.pod [new file with mode: 0644]
doc/man3/EVP_MAC.pod
doc/man3/EVP_MD_fetch.pod [deleted file]
doc/man3/EVP_MD_meth_new.pod
doc/man3/EVP_PKEY_ASN1_METHOD.pod
doc/man3/EVP_PKEY_CTX_ctrl.pod
doc/man3/EVP_PKEY_CTX_set_hkdf_md.pod
doc/man3/EVP_PKEY_CTX_set_scrypt_N.pod
doc/man3/EVP_PKEY_CTX_set_tls1_prf_md.pod
doc/man3/EVP_PKEY_decrypt.pod
doc/man3/EVP_PKEY_derive.pod
doc/man3/EVP_PKEY_encrypt.pod
doc/man3/EVP_PKEY_meth_new.pod
doc/man3/EVP_PKEY_sign.pod
doc/man3/EVP_PKEY_supports_digest_nid.pod
doc/man3/EVP_PKEY_verify.pod
doc/man3/EVP_PKEY_verify_recover.pod
doc/man3/EVP_SealInit.pod
doc/man3/EVP_SignInit.pod
doc/man3/EVP_VerifyInit.pod
doc/man3/EVP_aria.pod
doc/man3/EVP_md5.pod
doc/man3/EVP_rc5_32_12_16_cbc.pod
doc/man3/OCSP_REQUEST_new.pod
doc/man3/OPENSSL_CTX.pod
doc/man3/OPENSSL_fork_prepare.pod
doc/man3/OPENSSL_hexchar2int.pod [new file with mode: 0644]
doc/man3/OPENSSL_init_crypto.pod
doc/man3/OPENSSL_malloc.pod
doc/man3/OPENSSL_s390xcap.pod
doc/man3/OSSL_CMP_ITAV_set0.pod [new file with mode: 0644]
doc/man3/OSSL_CRMF_MSG_get0_tmpl.pod
doc/man3/OSSL_CRMF_MSG_set1_regCtrl_regToken.pod
doc/man3/OSSL_CRMF_MSG_set1_regInfo_certReq.pod
doc/man3/OSSL_CRMF_MSG_set_validity.pod
doc/man3/OSSL_CRMF_pbmp_new.pod
doc/man3/OSSL_PARAM.pod
doc/man3/OSSL_PARAM_construct_from_text.pod [new file with mode: 0644]
doc/man3/OSSL_PARAM_int.pod [moved from doc/man3/OSSL_PARAM_TYPE.pod with 69% similarity]
doc/man3/OSSL_PROVIDER.pod
doc/man3/OSSL_STORE_LOADER.pod
doc/man3/OSSL_STORE_expect.pod
doc/man3/OSSL_trace_enabled.pod
doc/man3/OSSL_trace_get_category_num.pod
doc/man3/OSSL_trace_set_channel.pod
doc/man3/OpenSSL_version.pod
doc/man3/PKCS12_newpass.pod
doc/man3/RAND_DRBG_generate.pod
doc/man3/RAND_DRBG_get0_master.pod
doc/man3/RAND_DRBG_new.pod
doc/man3/RAND_DRBG_reseed.pod
doc/man3/RAND_DRBG_set_callbacks.pod
doc/man3/RAND_add.pod
doc/man3/RAND_set_rand_method.pod
doc/man3/RSA_blinding_on.pod
doc/man3/RSA_generate_key.pod
doc/man3/RSA_padding_add_PKCS1_type_1.pod
doc/man3/RSA_public_encrypt.pod
doc/man3/RSA_sign_ASN1_OCTET_STRING.pod
doc/man3/SRP_VBASE_new.pod
doc/man3/SRP_user_pwd_new.pod
doc/man3/SSL_CONF_cmd.pod
doc/man3/SSL_CTX_config.pod
doc/man3/SSL_CTX_dane_enable.pod
doc/man3/SSL_CTX_get0_param.pod
doc/man3/SSL_CTX_new.pod
doc/man3/SSL_CTX_set1_curves.pod
doc/man3/SSL_CTX_set_cipher_list.pod
doc/man3/SSL_CTX_set_generate_session_id.pod
doc/man3/SSL_CTX_set_mode.pod
doc/man3/SSL_CTX_set_options.pod
doc/man3/SSL_CTX_set_session_id_context.pod
doc/man3/SSL_CTX_set_srp_password.pod
doc/man3/SSL_CTX_set_verify.pod
doc/man3/SSL_SESSION_get0_hostname.pod
doc/man3/SSL_get_error.pod
doc/man3/SSL_library_init.pod
doc/man3/SSL_session_reused.pod
doc/man3/SSL_set1_host.pod
doc/man3/SSL_set_async_callback.pod
doc/man3/SSL_write.pod
doc/man3/X509_LOOKUP_meth_new.pod
doc/man3/X509_PUBKEY_new.pod
doc/man3/X509_STORE_CTX_get_error.pod
doc/man3/X509_STORE_CTX_set_verify_cb.pod
doc/man3/X509_STORE_add_cert.pod
doc/man3/X509_STORE_new.pod
doc/man3/X509_VERIFY_PARAM_set_flags.pod
doc/man3/X509_cmp.pod [new file with mode: 0644]
doc/man3/X509_dup.pod
doc/man3/X509_get0_sm2_id.pod
doc/man3/X509_get_extension_flags.pod
doc/man3/d2i_PrivateKey.pod
doc/man3/d2i_X509.pod
doc/man5/config.pod
doc/man5/fips_config.pod [new file with mode: 0644]
doc/man5/x509v3_config.pod
doc/man7/EVP_KDF_HKDF.pod
doc/man7/EVP_KDF_PBKDF2.pod
doc/man7/EVP_KDF_SCRYPT.pod
doc/man7/EVP_KDF_SS.pod
doc/man7/EVP_KDF_SSHKDF.pod
doc/man7/EVP_KDF_TLS1_PRF.pod
doc/man7/EVP_KDF_X942.pod [new file with mode: 0644]
doc/man7/EVP_KDF_X963.pod [new file with mode: 0644]
doc/man7/EVP_MAC_BLAKE2.pod
doc/man7/Ed25519.pod
doc/man7/RAND.pod
doc/man7/RAND_DRBG.pod
doc/man7/SM2.pod
doc/man7/X25519.pod
doc/man7/bio.pod
doc/man7/openssl-core.h.pod
doc/man7/openssl_user_macros.pod.in
doc/man7/property.pod [new file with mode: 0644]
doc/man7/provider-base.pod [new file with mode: 0644]
doc/man7/provider-cipher.pod [new file with mode: 0644]
doc/man7/provider-digest.pod [new file with mode: 0644]
doc/man7/provider-keyexch.pod [new file with mode: 0644]
doc/man7/provider-keymgmt.pod [new file with mode: 0644]
doc/man7/provider-mac.pod [new file with mode: 0644]
doc/man7/provider.pod [new file with mode: 0644]
doc/man7/x509.pod
e_os.h
engines/build.info
engines/e_afalg.c
engines/e_afalg.txt
engines/e_afalg_err.c
engines/e_afalg_err.h
engines/e_capi.txt
engines/e_capi_err.c
engines/e_capi_err.h
engines/e_dasync.txt
engines/e_dasync_err.c
engines/e_dasync_err.h
engines/e_devcrypto.c
engines/e_ossltest.txt
engines/e_ossltest_err.c
engines/e_ossltest_err.h
fuzz/asn1.c
fuzz/oids.txt
include/internal/constant_time_locl.h
include/internal/core.h
include/internal/cryptlib.h
include/internal/dsoerr.h
include/internal/ktls.h
include/internal/md5_sha1.h [new file with mode: 0644]
include/internal/namemap.h [new file with mode: 0644]
include/internal/numbers.h
include/internal/packet.h [moved from ssl/packet_locl.h with 98% similarity]
include/internal/param_build.h [new file with mode: 0644]
include/internal/property.h
include/internal/propertyerr.h
include/internal/provider.h
include/internal/sha3.h [new file with mode: 0644]
include/internal/sm3.h [moved from crypto/include/internal/sm3.h with 83% similarity]
include/internal/symhacks.h
include/internal/thread_once.h
include/internal/tsan_assist.h
include/openssl/asn1.h
include/openssl/asn1err.h
include/openssl/asn1t.h
include/openssl/asyncerr.h
include/openssl/bio.h
include/openssl/bioerr.h
include/openssl/bn.h
include/openssl/bnerr.h
include/openssl/buffererr.h
include/openssl/cmp.h [new file with mode: 0644]
include/openssl/cmperr.h [new file with mode: 0644]
include/openssl/cms.h
include/openssl/cmserr.h
include/openssl/comperr.h
include/openssl/conferr.h
include/openssl/core.h
include/openssl/core_names.h
include/openssl/core_numbers.h
include/openssl/crmf.h
include/openssl/crmferr.h
include/openssl/crypto.h
include/openssl/cryptoerr.h
include/openssl/cterr.h
include/openssl/des.h
include/openssl/dh.h
include/openssl/dherr.h
include/openssl/dsaerr.h
include/openssl/e_os2.h
include/openssl/ec.h
include/openssl/ecerr.h
include/openssl/engineerr.h
include/openssl/err.h
include/openssl/ess.h
include/openssl/esserr.h
include/openssl/evp.h
include/openssl/evperr.h
include/openssl/fips_names.h [new file with mode: 0644]
include/openssl/kdf.h
include/openssl/kdferr.h
include/openssl/macros.h [new file with mode: 0644]
include/openssl/modes.h
include/openssl/obj_mac.h
include/openssl/objects.h
include/openssl/objectserr.h
include/openssl/ocsp.h
include/openssl/ocsperr.h
include/openssl/opensslconf.h.in
include/openssl/opensslv.h
include/openssl/ossl_typ.h
include/openssl/params.h
include/openssl/pemerr.h
include/openssl/pkcs12err.h
include/openssl/pkcs7err.h
include/openssl/provider.h
include/openssl/rand.h
include/openssl/rand_drbg.h
include/openssl/randerr.h
include/openssl/rc5.h
include/openssl/rsaerr.h
include/openssl/ssl.h
include/openssl/sslerr.h
include/openssl/store.h
include/openssl/storeerr.h
include/openssl/tls1.h
include/openssl/tserr.h
include/openssl/uierr.h
include/openssl/x509.h
include/openssl/x509err.h
include/openssl/x509v3.h
include/openssl/x509v3err.h
providers/build.info
providers/common/build.info
providers/common/ciphers/aes.c
providers/common/ciphers/aes_basic.c
providers/common/ciphers/block.c
providers/common/ciphers/build.info
providers/common/ciphers/ciphers_common.c [new file with mode: 0644]
providers/common/ciphers/ciphers_gcm.h [new file with mode: 0644]
providers/common/ciphers/ciphers_locl.h
providers/common/ciphers/gcm.c [new file with mode: 0644]
providers/common/ciphers/gcm_hw.c [new file with mode: 0644]
providers/common/ciphers/gcm_s390x.c [new file with mode: 0644]
providers/common/digests/build.info
providers/common/digests/sha2.c [deleted file]
providers/common/digests/sha2_prov.c [new file with mode: 0644]
providers/common/digests/sha3_prov.c [new file with mode: 0644]
providers/common/exchange/build.info [new file with mode: 0644]
providers/common/exchange/dh_exch.c [new file with mode: 0644]
providers/common/include/internal/core_mkdigest.h [new file with mode: 0644]
providers/common/include/internal/provider_algs.h
providers/common/include/internal/provider_ctx.h [moved from include/internal/o_str.h with 51% similarity]
providers/common/include/internal/providercommon.h
providers/common/include/internal/providercommonerr.h
providers/common/keymgmt/build.info [new file with mode: 0644]
providers/common/keymgmt/dh_kmgmt.c [new file with mode: 0644]
providers/common/macs/build.info [new file with mode: 0644]
providers/common/macs/cmac_prov.c [new file with mode: 0644]
providers/common/macs/gmac_prov.c [new file with mode: 0644]
providers/common/macs/hmac_prov.c [new file with mode: 0644]
providers/common/macs/kmac_prov.c [new file with mode: 0644]
providers/common/provider_err.c
providers/common/provlib.c [new file with mode: 0644]
providers/default/build.info
providers/default/defltprov.c
providers/default/digests/blake2_impl.h [moved from crypto/blake2/blake2_impl.h with 100% similarity]
providers/default/digests/blake2_prov.c [new file with mode: 0644]
providers/default/digests/blake2b_prov.c [moved from crypto/blake2/blake2b.c with 96% similarity]
providers/default/digests/blake2s_prov.c [moved from crypto/blake2/blake2s.c with 95% similarity]
providers/default/digests/build.info [new file with mode: 0644]
providers/default/digests/md5_prov.c [new file with mode: 0644]
providers/default/digests/md5_sha1_prov.c [new file with mode: 0644]
providers/default/digests/null_prov.c [new file with mode: 0644]
providers/default/digests/sm3_prov.c [new file with mode: 0644]
providers/default/include/internal/blake2.h [moved from crypto/blake2/blake2_locl.h with 68% similarity]
providers/default/macs/blake2_mac_impl.c [new file with mode: 0644]
providers/default/macs/blake2b_mac.c [new file with mode: 0644]
providers/default/macs/blake2s_mac.c [new file with mode: 0644]
providers/default/macs/build.info [new file with mode: 0644]
providers/default/macs/poly1305_prov.c [new file with mode: 0644]
providers/default/macs/siphash_prov.c [new file with mode: 0644]
providers/fips/fipsprov.c
providers/fips/selftest.h [new file with mode: 0644]
providers/legacy/digests/build.info
providers/legacy/digests/md2.c [deleted file]
providers/legacy/digests/md2_prov.c [new file with mode: 0644]
providers/legacy/digests/md4_prov.c [new file with mode: 0644]
providers/legacy/digests/mdc2_prov.c [new file with mode: 0644]
providers/legacy/digests/ripemd_prov.c [new file with mode: 0644]
providers/legacy/digests/wp_prov.c [new file with mode: 0644]
providers/legacy/legacyprov.c
ssl/build.info
ssl/d1_lib.c
ssl/d1_msg.c
ssl/record/rec_layer_d1.c
ssl/record/rec_layer_s3.c
ssl/record/ssl3_record.c
ssl/record/ssl3_record_tls13.c
ssl/s3_cbc.c
ssl/s3_enc.c
ssl/s3_lib.c
ssl/s3_msg.c
ssl/ssl_cert.c
ssl/ssl_ciph.c
ssl/ssl_err.c
ssl/ssl_init.c
ssl/ssl_lib.c
ssl/ssl_locl.h
ssl/ssl_rsa.c
ssl/ssl_sess.c
ssl/statem/extensions.c
ssl/statem/extensions_clnt.c
ssl/statem/extensions_srvr.c
ssl/statem/statem.c
ssl/statem/statem.h
ssl/statem/statem_clnt.c
ssl/statem/statem_dtls.c
ssl/statem/statem_lib.c
ssl/statem/statem_locl.h
ssl/statem/statem_srvr.c
ssl/t1_enc.c
ssl/t1_lib.c
ssl/t1_trce.c
ssl/tls13_enc.c
test/README
test/aesgcmtest.c
test/asn1_dsa_internal_test.c [new file with mode: 0644]
test/asn1_time_test.c
test/asynciotest.c
test/bad_dtls_test.c
test/bio_memleak_test.c
test/bn_rand_range.h [new file with mode: 0644]
test/bntest.c
test/build.info
test/certs/mkcert.sh
test/certs/server-pss-restrict-cert.pem [new file with mode: 0644]
test/certs/server-pss-restrict-key.pem [new file with mode: 0644]
test/certs/setup.sh
test/certs/sm2-csr.pem [new file with mode: 0644]
test/certs/sm2-root.crt [new file with mode: 0644]
test/certs/sm2-root.key [new file with mode: 0644]
test/clienthellotest.c
test/conf_include_test.c
test/context_internal_test.c
test/ct_test.c
test/curve448_internal_test.c
test/default-and-legacy.cnf [new file with mode: 0644]
test/default.cnf [new file with mode: 0644]
test/dhtest.c
test/drbg_cavs_test.c
test/drbgtest.c
test/dtlstest.c
test/ecdsatest.c
test/ecstresstest.c
test/ectest.c
test/enginetest.c
test/errtest.c
test/evp_extra_test.c
test/evp_kdf_test.c
test/evp_pkey_dparams_test.c [new file with mode: 0644]
test/evp_test.c
test/fips.cnf [new file with mode: 0644]
test/legacy.cnf [new file with mode: 0644]
test/mdc2test.c
test/modes_internal_test.c
test/namemap_internal_test.c [new file with mode: 0644]
test/ocspapitest.c
test/p_test.c
test/packettest.c
test/param_build_test.c [new file with mode: 0644]
test/params_api_test.c
test/params_conversion_test.c [new file with mode: 0644]
test/params_test.c
test/property_test.c
test/provider_internal_test.c
test/provider_test.c
test/rc5test.c
test/recipes/02-test_errstr.t
test/recipes/03-test_internal_asn1_dsa.t [new file with mode: 0644]
test/recipes/03-test_internal_namemap.t [new file with mode: 0644]
test/recipes/04-test_param_build.t [new file with mode: 0644]
test/recipes/04-test_params_conversion.t [new file with mode: 0644]
test/recipes/04-test_params_conversion_data/native_types.txt [new file with mode: 0644]
test/recipes/05-test_mdc2.t
test/recipes/15-test_rsapss.t
test/recipes/20-test_kdf.t [changed mode: 0644->0755]
test/recipes/20-test_pkeyutl.t
test/recipes/25-test_req.t
test/recipes/25-test_verify.t
test/recipes/30-test_evp.t
test/recipes/30-test_evp_data/evpccmcavs.txt [new file with mode: 0644]
test/recipes/30-test_evp_data/evpciph.txt
test/recipes/30-test_evp_data/evpdigest.txt
test/recipes/30-test_evp_data/evpkdf.txt
test/recipes/30-test_evp_data/evpmac.txt
test/recipes/30-test_evp_data/evppkey.txt
test/recipes/30-test_evp_data/evppkey_ecc.txt
test/recipes/30-test_evp_pkey_dparam.t [new file with mode: 0644]
test/recipes/70-test_clienthello.t
test/recipes/70-test_key_share.t
test/recipes/70-test_sslextension.t
test/recipes/70-test_tls13cookie.t
test/recipes/70-test_tls13hrr.t
test/recipes/70-test_tls13kexmodes.t
test/recipes/70-test_tls13messages.t
test/recipes/70-test_tls13psk.t
test/recipes/70-test_verify_extra.t
test/recipes/80-test_ca.t
test/recipes/80-test_cms.t
test/recipes/80-test_cms_data/bad_signtime_attr.cms [new file with mode: 0644]
test/recipes/80-test_cms_data/ct_multiple_attr.cms [new file with mode: 0644]
test/recipes/80-test_cms_data/no_ct_attr.cms [new file with mode: 0644]
test/recipes/80-test_cms_data/no_md_attr.cms [new file with mode: 0644]
test/recipes/80-test_ssl_new.t
test/recipes/90-test_gost.t
test/recipes/90-test_sslapi.t
test/recipes/95-test_external_krb5.t
test/servername_test.c
test/sparse_array_test.c
test/ssl-tests/20-cert-select.conf
test/ssl-tests/20-cert-select.conf.in
test/ssl-tests/protocol_version.pm
test/sslapitest.c
test/sslbuffertest.c
test/ssltest_old.c
test/ssltestlib.c
test/ssltestlib.h
test/test_test.c
test/testutil.h
test/testutil/driver.c
test/testutil/init.c
test/testutil/random.c [new file with mode: 0644]
test/testutil/tests.c
test/testutil/tu_local.h
test/tls13ccstest.c
test/tls13encryptiontest.c
test/tls13secretstest.c
test/verify_extra_test.c
test/wpackettest.c
test/x509_check_cert_pkey_test.c
test/x509_internal_test.c
util/cavs-to-evptest.pl [new file with mode: 0644]
util/find-doc-nits
util/indent.pro
util/libcrypto.num
util/libssl.num
util/missingcrypto.txt [new file with mode: 0644]
util/missingcrypto111.txt [new file with mode: 0644]
util/missingmacro.txt [new file with mode: 0644]
util/missingmacro111.txt [new file with mode: 0644]
util/missingssl.txt [new file with mode: 0644]
util/missingssl111.txt [new file with mode: 0644]
util/mkdef.pl
util/mkerr.pl
util/opensslwrap.sh
util/perl/OpenSSL/Ordinals.pm
util/perl/OpenSSL/ParseC.pm
util/perl/OpenSSL/Test.pm
util/private.num

index 0d6d219..80d60c5 100644 (file)
@@ -1,5 +1,6 @@
 ---
 name: Bug report
+labels: bug
 about: Report a defect in the software
 
 ---
index 9e5565e..27d66e6 100644 (file)
@@ -1,5 +1,6 @@
 ---
 name: Feature request
+labels: feature
 about: Propose a feature you would like to see added in the software
 
 ---
index b32122c..fb08a3c 100644 (file)
@@ -26,7 +26,6 @@ Makefile
 
 # Auto generated headers
 /crypto/buildinf.h
-/apps/progs.h
 /crypto/include/internal/*_conf.h
 /openssl/include/opensslconf.h
 /util/domd
index ff4c593..3cc293e 100644 (file)
@@ -43,6 +43,10 @@ matrix:
           dist: trusty
           compiler: clang
           env: CONFIG_OPTS="--strict-warnings -D__NO_STRING_INLINES no-deprecated" BUILDONLY="yes"
+        - os: linux
+          dist: bionic
+          compiler: clang
+          env: CONFIG_OPTS="--strict-warnings -D__NO_STRING_INLINES no-deprecated" BUILDONLY="yes"
         - os: linux
           addons:
               apt:
@@ -164,27 +168,31 @@ script:
     - if $make update; then
           echo -e '+\057 MAKE UPDATE OK';
       else
-          echo -e '+\057 MAKE UPDATE FAILED'; false;
+          echo -e '+\057 MAKE UPDATE FAILED';
+          travis_terminate 1;
       fi
     - git diff --exit-code
     - if [ -n "$CHECKDOCS" ]; then
           if $make doc-nits; then
               echo -e '+\057\057 MAKE DOC-NITS OK';
           else
-              echo -e '+\057\057 MAKE DOC-NITS FAILED'; false;
+              echo -e '+\057\057 MAKE DOC-NITS FAILED';
+              travis_terminate 1;
           fi;
       fi
     - if [ -n "$GENERATE" ]; then
           if $make build_all_generated; then
               echo -e '+\057\057\057 MAKE BUILD_ALL_GENERATED OK';
           else
-              echo -e '+\057\057\057 MAKE BUILD_ALL_GENERATED FAILED'; false;
+              echo -e '+\057\057\057 MAKE BUILD_ALL_GENERATED FAILED';
+              travis_terminate 1;
           fi;
       fi
     - if $make2; then
           echo -e '+\057\057\057\057 MAKE OK';
       else
-          echo -e '+\057\057\057\057 MAKE FAILED'; false;
+          echo -e '+\057\057\057\057 MAKE FAILED';
+          travis_terminate 1;
       fi;
     - if [ -z "$BUILDONLY" ]; then
           if [ -n "$CROSS_COMPILE" ]; then
@@ -199,7 +207,8 @@ script:
           if HARNESS_VERBOSE=yes BORING_RUNNER_DIR=$top/boringssl/ssl/test/runner make test; then
               echo -e '+\057\057\057\057\057 MAKE TEST OK';
           else
-              echo -e '+\057\057\057\057\057 MAKE TEST FAILED'; false;
+              echo -e '+\057\057\057\057\057 MAKE TEST FAILED';
+              travis_terminate 1;
           fi;
       else
           if $make build_tests >~/build.log 2>&1; then
@@ -207,7 +216,7 @@ script:
           else
               echo -e '+\057\057\057\057\057\057 MAKE BUILD_TESTS FAILED';
               cat ~/build.log
-              false;
+              travis_terminate 1;
           fi;
       fi
     - if [ -n "$DESTDIR" ]; then
@@ -217,7 +226,7 @@ script:
           else
               echo -e '+\057\057\057\057\057\057\057 MAKE INSTALL FAILED';
               cat ~/install.log;
-              false;
+              travis_terminate 1;
           fi;
       fi
     - cd $top
diff --git a/CHANGES b/CHANGES
index a5d6950..e3131f0 100644 (file)
--- a/CHANGES
+++ b/CHANGES
 
  Changes between 1.1.1 and 3.0.0 [xx XXX xxxx]
 
+  *) Revised BN_generate_prime_ex to not avoid factors 2..17863 in p-1
+     when primes for RSA keys are computed.
+     Since we previously always generated primes == 2 (mod 3) for RSA keys,
+     the 2-prime and 3-prime RSA modules were easy to distinguish, since
+     N = p*q = 1 (mod 3), but N = p*q*r = 2 (mod 3). Therefore fingerprinting
+     2-prime vs. 3-prime RSA keys was possible by computing N mod 3.
+     This avoids possible fingerprinting of newly generated RSA modules.
+     [Bernd Edlinger]
+
+  *) Correct the extended master secret constant on EBCDIC systems. Without this
+     fix TLS connections between an EBCDIC system and a non-EBCDIC system that
+     negotiate EMS will fail. Unfortunately this also means that TLS connections
+     between EBCDIC systems with this fix, and EBCDIC systems without this
+     fix will fail if they negotiate EMS.
+     [Matt Caswell]
+
+  *) Changed the library initialisation so that the config file is now loaded
+     by default. This was already the case for libssl. It now occurs for both
+     libcrypto and libssl. Use the OPENSSL_INIT_NO_LOAD_CONFIG option to
+     OPENSSL_init_crypto() to suppress automatic loading of a config file.
+     [Matt Caswell]
+
+  *) Introduced new error raising macros, ERR_raise() and ERR_raise_data(),
+     where the former acts as a replacement for ERR_put_error(), and the
+     latter replaces the combination ERR_put_error()+ERR_add_error_data().
+     ERR_raise_data() adds more flexibility by taking a format string and
+     an arbitrary number of arguments following it, to be processed with
+     BIO_snprintf().
+     [Richard Levitte]
+
+  *) Introduced a new function, OSSL_PROVIDER_available(), which can be used
+     to check if a named provider is loaded and available.  When called, it
+     will also activate all fallback providers if such are still present.
+     [Richard Levitte]
+
+  *) Enforce a minimum DH modulus size of 512 bits.
+     [Bernd Edlinger]
+
+  *) Changed DH parameters to generate the order q subgroup instead of 2q.
+     Previously generated DH parameters are still accepted by DH_check
+     but DH_generate_key works around that by clearing bit 0 of the
+     private key for those. This avoids leaking bit 0 of the private key.
+     [Bernd Edlinger]
+
+  *) Significantly reduce secure memory usage by the randomness pools.
+     [Paul Dale]
+
+  *) {CRYPTO,OPENSSL}_mem_debug_{push,pop} are now no-ops and have been
+     deprecated.
+     [Rich Salz]
+
+  *) A new type, EVP_KEYEXCH, has been introduced to represent key exchange
+     algorithms. An implementation of a key exchange algorithm can be obtained
+     by using the function EVP_KEYEXCH_fetch(). An EVP_KEYEXCH algorithm can be
+     used in a call to EVP_PKEY_derive_init_ex() which works in a similar way to
+     the older EVP_PKEY_derive_init() function. See the man pages for the new
+     functions for further details.
+     [Matt Caswell]
+
+  *) The EVP_PKEY_CTX_set_dh_pad() macro has now been converted to a function.
+     [Matt Caswell]
+
+  *) Removed the function names from error messages and deprecated the
+     xxx_F_xxx define's.
+
+  *) Removed NextStep support and the macro OPENSSL_UNISTD
+     [Rich Salz]
+
+  *) Removed DES_check_key.  Also removed OPENSSL_IMPLEMENT_GLOBAL,
+     OPENSSL_GLOBAL_REF, OPENSSL_DECLARE_GLOBAL.
+     Also removed "export var as function" capability; we do not export
+     variables, only functions.
+     [Rich Salz]
+
+  *) RC5_32_set_key has been changed to return an int type, with 0 indicating
+     an error and 1 indicating success. In previous versions of OpenSSL this
+     was a void type. If a key was set longer than the maximum possible this
+     would crash.
+     [Matt Caswell]
+
+  *) Support SM2 signing and verification schemes with X509 certificate.
+     [Paul Yang]
+
+  *) Use SHA256 as the default digest for TS query in the ts app.
+     [Tomas Mraz]
+
+  *) Change PBKDF2 to conform to SP800-132 instead of the older PKCS5 RFC2898.
+     This checks that the salt length is at least 128 bits, the derived key
+     length is at least 112 bits, and that the iteration count is at least 1000.
+     For backwards compatibility these checks are disabled by default in the
+     default provider, but are enabled by default in the fips provider.
+     To enable or disable these checks use the control
+     EVP_KDF_CTRL_SET_PBKDF2_PKCS5_MODE.
+     [Shane Lontis]
+
+  *) Default cipher lists/suites are now available via a function, the
+     #defines are deprecated.
+     [Todd Short]
+
+  *) Add target VC-WIN32-UWP, VC-WIN64A-UWP, VC-WIN32-ARM-UWP and
+     VC-WIN64-ARM-UWP in Windows OneCore target for making building libraries
+     for Windows Store apps easier. Also, the "no-uplink" option has been added.
+     [Kenji Mouri]
+
+  *) Join the directories crypto/x509 and crypto/x509v3
+     [Richard Levitte]
+
+  *) Change the default RSA, DSA and DH size to 2048 bit instead of 1024.
+     This changes the size when using the genpkey app when no size is given. It
+     fixes an omission in earlier changes that changed all RSA, DSA and DH
+     generation apps to use 2048 bits by default.
+     [Kurt Roeckx]
+
   *) Added command 'openssl kdf' that uses the EVP_KDF API.
      [Shane Lontis]
 
-   *) Added command 'openssl mac' that uses the EVP_MAC API.
+  *) Added command 'openssl mac' that uses the EVP_MAC API.
      [Shane Lontis]
 
   *) Added OPENSSL_info() to get diverse built-in OpenSSL data, such
         SSL_set_ciphersuites()
      [Matt Caswell]
 
-  *) Memory allocation failures consistenly add an error to the error
+  *) Memory allocation failures consistently add an error to the error
      stack.
      [Rich Salz]
 
      reason texts, thereby removing some of the footprint that may not
      be interesting if those errors aren't displayed anyway.
 
-     NOTE: it's still possible for any application or module to have it's
+     NOTE: it's still possible for any application or module to have its
      own set of error texts inserted.  The routines are there, just not
      used by default when no-err is given.
      [Richard Levitte]
@@ -8918,7 +9031,7 @@ des-cbc           3624.96k     5258.21k     5530.91k     5624.30k     5628.26k
  Changes between 0.9.6g and 0.9.6h  [5 Dec 2002]
 
   *) New function OPENSSL_cleanse(), which is used to cleanse a section of
-     memory from it's contents.  This is done with a counter that will
+     memory from its contents.  This is done with a counter that will
      place alternating values in each byte.  This can be used to solve
      two issues: 1) the removal of calls to memset() by highly optimizing
      compilers, and 2) cleansing with other values than 0, since those can
index 250bbdb..b65463c 100644 (file)
@@ -19,8 +19,16 @@ guidelines:
     1. Anything other than a trivial contribution requires a Contributor
     License Agreement (CLA), giving us permission to use your code. See
     https://www.openssl.org/policies/cla.html for details.  If your
-    contribution is too small to require a CLA, put "CLA: trivial" on a
-    line by itself in your commit message body.
+    contribution is too small to require a CLA (e.g. fixing a spelling
+    mistake), place the text "CLA: trivial" on a line by itself separated by
+    an empty line from the rest of the commit message. It is not sufficient to
+    only place the text in the GitHub pull request description.
+
+    To amend a missing "CLA: trivial" line after submission, do the following:
+
+        git commit --amend
+        [add the line, save and quit the editor]
+        git push -f
 
     2.  All source files should start with the following text (with
     appropriate comment characters at the start of each line and the
index 20298c2..98200af 100644 (file)
@@ -14,28 +14,6 @@ my %targets=(
        thread_scheme   => "(unknown)", # Assume we don't know
        thread_defines  => [],
 
-       apps_aux_src    => "",
-       apps_init_src   => "",
-       cpuid_asm_src   => "mem_clr.c",
-       uplink_aux_src  => "",
-       bn_asm_src      => "bn_asm.c",
-       ec_asm_src      => "",
-       des_asm_src     => "des_enc.c fcrypt_b.c",
-       aes_asm_src     => "aes_core.c aes_cbc.c",
-       bf_asm_src      => "bf_enc.c",
-       md5_asm_src     => "",
-       cast_asm_src    => "c_enc.c",
-       rc4_asm_src     => "rc4_enc.c rc4_skey.c",
-       rmd160_asm_src  => "",
-       rc5_asm_src     => "rc5_enc.c",
-       wp_asm_src      => "wp_block.c",
-       cmll_asm_src    => "camellia.c cmll_misc.c cmll_cbc.c",
-       modes_asm_src   => "",
-       padlock_asm_src => "",
-       chacha_asm_src  => "chacha_enc.c",
-       poly1305_asm_src        => "",
-       keccak1600_asm_src      => "keccak1600.c",
-
        unistd          => "<unistd.h>",
        shared_target   => "",
        shared_cflag    => "",
@@ -168,190 +146,4 @@ my %targets=(
 
         perl_platform    => 'VMS',
     },
-
-    uplink_common => {
-       template        => 1,
-       apps_init_src   => add("../ms/applink.c"),
-       uplink_aux_src  => add("../ms/uplink.c"),
-       defines         => add("OPENSSL_USE_APPLINK"),
-    },
-    x86_uplink => {
-       inherit_from    => [ "uplink_common" ],
-       template        => 1,
-       uplink_aux_src  => add("uplink-x86.s"),
-    },
-    x86_64_uplink => {
-       inherit_from    => [ "uplink_common" ],
-       template        => 1,
-       uplink_aux_src  => add("uplink-x86_64.s"),
-    },
-    ia64_uplink => {
-       inherit_from    => [ "uplink_common" ],
-       template        => 1,
-       uplink_aux_src  => add("uplink-ia64.s"),
-    },
-
-    x86_asm => {
-       template        => 1,
-       cpuid_asm_src   => "x86cpuid.s",
-       bn_asm_src      => "bn-586.s co-586.s x86-mont.s x86-gf2m.s",
-       ec_asm_src      => "ecp_nistz256.c ecp_nistz256-x86.s",
-       des_asm_src     => "des-586.s crypt586.s",
-       aes_asm_src     => "aes-586.s vpaes-x86.s aesni-x86.s",
-       bf_asm_src      => "bf-586.s",
-       md5_asm_src     => "md5-586.s",
-       cast_asm_src    => "cast-586.s",
-       sha1_asm_src    => "sha1-586.s sha256-586.s sha512-586.s",
-       rc4_asm_src     => "rc4-586.s",
-       rmd160_asm_src  => "rmd-586.s",
-       rc5_asm_src     => "rc5-586.s",
-       wp_asm_src      => "wp_block.c wp-mmx.s",
-       cmll_asm_src    => "cmll-x86.s",
-       modes_asm_src   => "ghash-x86.s",
-       padlock_asm_src => "e_padlock-x86.s",
-       chacha_asm_src  => "chacha-x86.s",
-       poly1305_asm_src=> "poly1305-x86.s",
-    },
-    x86_elf_asm => {
-       template        => 1,
-       inherit_from    => [ "x86_asm" ],
-       perlasm_scheme  => "elf"
-    },
-    x86_64_asm => {
-       template        => 1,
-       cpuid_asm_src   => "x86_64cpuid.s",
-       bn_asm_src      => "asm/x86_64-gcc.c x86_64-mont.s x86_64-mont5.s x86_64-gf2m.s rsaz_exp.c rsaz-x86_64.s rsaz-avx2.s",
-       ec_asm_src      => "ecp_nistz256.c ecp_nistz256-x86_64.s x25519-x86_64.s",
-       aes_asm_src     => "aes-x86_64.s vpaes-x86_64.s bsaes-x86_64.s aesni-x86_64.s aesni-sha1-x86_64.s aesni-sha256-x86_64.s aesni-mb-x86_64.s",
-       md5_asm_src     => "md5-x86_64.s",
-       sha1_asm_src    => "sha1-x86_64.s sha256-x86_64.s sha512-x86_64.s sha1-mb-x86_64.s sha256-mb-x86_64.s",
-       rc4_asm_src     => "rc4-x86_64.s rc4-md5-x86_64.s",
-       wp_asm_src      => "wp-x86_64.s",
-       cmll_asm_src    => "cmll-x86_64.s cmll_misc.c",
-       modes_asm_src   => "ghash-x86_64.s aesni-gcm-x86_64.s",
-       padlock_asm_src => "e_padlock-x86_64.s",
-       chacha_asm_src  => "chacha-x86_64.s",
-       poly1305_asm_src=> "poly1305-x86_64.s",
-       keccak1600_asm_src      => "keccak1600-x86_64.s",
-    },
-    ia64_asm => {
-       template        => 1,
-       cpuid_asm_src   => "ia64cpuid.s",
-       bn_asm_src      => "bn-ia64.s ia64-mont.s",
-       aes_asm_src     => "aes_core.c aes_cbc.c aes-ia64.s",
-       sha1_asm_src    => "sha1-ia64.s sha256-ia64.s sha512-ia64.s",
-       modes_asm_src   => "ghash-ia64.s",
-       chacha_asm_src  => "chacha-ia64.S",
-       poly1305_asm_src=> "asm/poly1305-ia64.S",
-       perlasm_scheme  => "void"
-    },
-    sparcv9_asm => {
-       template        => 1,
-       cpuid_asm_src   => "sparcv9cap.c sparccpuid.S",
-       bn_asm_src      => "asm/sparcv8plus.S sparcv9-mont.S sparcv9a-mont.S vis3-mont.S sparct4-mont.S sparcv9-gf2m.S",
-       ec_asm_src      => "ecp_nistz256.c ecp_nistz256-sparcv9.S",
-       des_asm_src     => "des_enc-sparc.S fcrypt_b.c dest4-sparcv9.S",
-       aes_asm_src     => "aes_core.c aes_cbc.c aes-sparcv9.S aest4-sparcv9.S aesfx-sparcv9.S",
-       md5_asm_src     => "md5-sparcv9.S",
-       sha1_asm_src    => "sha1-sparcv9.S sha256-sparcv9.S sha512-sparcv9.S",
-       cmll_asm_src    => "camellia.c cmll_misc.c cmll_cbc.c cmllt4-sparcv9.S",
-       modes_asm_src   => "ghash-sparcv9.S",
-       poly1305_asm_src=> "poly1305-sparcv9.S",
-       perlasm_scheme  => "void"
-    },
-    sparcv8_asm => {
-       template        => 1,
-       cpuid_asm_src   => "",
-       bn_asm_src      => "asm/sparcv8.S",
-       des_asm_src     => "des_enc-sparc.S fcrypt_b.c",
-       perlasm_scheme  => "void"
-    },
-    alpha_asm => {
-       template        => 1,
-       cpuid_asm_src   => "alphacpuid.s",
-       bn_asm_src      => "bn_asm.c alpha-mont.S",
-       sha1_asm_src    => "sha1-alpha.S",
-       modes_asm_src   => "ghash-alpha.S",
-       perlasm_scheme  => "void"
-    },
-    mips32_asm => {
-       template        => 1,
-       bn_asm_src      => "bn-mips.S mips-mont.S",
-       aes_asm_src     => "aes_cbc.c aes-mips.S",
-       sha1_asm_src    => "sha1-mips.S sha256-mips.S",
-    },
-    mips64_asm => {
-       inherit_from    => [ "mips32_asm" ],
-       template        => 1,
-       sha1_asm_src    => add("sha512-mips.S"),
-       poly1305_asm_src=> "poly1305-mips.S",
-    },
-    s390x_asm => {
-       template        => 1,
-       cpuid_asm_src   => "s390xcap.c s390xcpuid.S",
-       bn_asm_src      => "asm/s390x.S s390x-mont.S s390x-gf2m.s",
-       aes_asm_src     => "aes-s390x.S aes-ctr.fake aes-xts.fake",
-       sha1_asm_src    => "sha1-s390x.S sha256-s390x.S sha512-s390x.S",
-       rc4_asm_src     => "rc4-s390x.s",
-       modes_asm_src   => "ghash-s390x.S",
-       chacha_asm_src  => "chacha-s390x.S",
-       poly1305_asm_src=> "poly1305-s390x.S",
-       keccak1600_asm_src      => "keccak1600-s390x.S",
-    },
-    armv4_asm => {
-       template        => 1,
-       cpuid_asm_src   => "armcap.c armv4cpuid.S",
-       bn_asm_src      => "bn_asm.c armv4-mont.S armv4-gf2m.S",
-       ec_asm_src      => "ecp_nistz256.c ecp_nistz256-armv4.S",
-       aes_asm_src     => "aes_cbc.c aes-armv4.S bsaes-armv7.S aesv8-armx.S",
-       sha1_asm_src    => "sha1-armv4-large.S sha256-armv4.S sha512-armv4.S",
-       modes_asm_src   => "ghash-armv4.S ghashv8-armx.S",
-       chacha_asm_src  => "chacha-armv4.S",
-       poly1305_asm_src=> "poly1305-armv4.S",
-       keccak1600_asm_src      => "keccak1600-armv4.S",
-       perlasm_scheme  => "void"
-    },
-    aarch64_asm => {
-       template        => 1,
-       cpuid_asm_src   => "armcap.c arm64cpuid.S",
-       ec_asm_src      => "ecp_nistz256.c ecp_nistz256-armv8.S",
-       bn_asm_src      => "bn_asm.c armv8-mont.S",
-       aes_asm_src     => "aes_core.c aes_cbc.c aesv8-armx.S vpaes-armv8.S",
-       sha1_asm_src    => "sha1-armv8.S sha256-armv8.S sha512-armv8.S",
-       modes_asm_src   => "ghashv8-armx.S",
-       chacha_asm_src  => "chacha-armv8.S",
-       poly1305_asm_src=> "poly1305-armv8.S",
-       keccak1600_asm_src      => "keccak1600-armv8.S",
-    },
-    parisc11_asm => {
-       template        => 1,
-       cpuid_asm_src   => "pariscid.s",
-       bn_asm_src      => "bn_asm.c parisc-mont.s",
-       aes_asm_src     => "aes_core.c aes_cbc.c aes-parisc.s",
-       sha1_asm_src    => "sha1-parisc.s sha256-parisc.s sha512-parisc.s",
-       rc4_asm_src     => "rc4-parisc.s",
-       modes_asm_src   => "ghash-parisc.s",
-       perlasm_scheme  => "32"
-    },
-    parisc20_64_asm => {
-       template        => 1,
-       inherit_from    => [ "parisc11_asm" ],
-       perlasm_scheme  => "64",
-    },
-    ppc32_asm => {
-       template        => 1,
-       cpuid_asm_src   => "ppccpuid.s ppccap.c",
-       bn_asm_src      => "bn-ppc.s ppc-mont.s",
-       aes_asm_src     => "aes_core.c aes_cbc.c aes-ppc.s vpaes-ppc.s aesp8-ppc.s",
-       sha1_asm_src    => "sha1-ppc.s sha256-ppc.s sha512-ppc.s sha256p8-ppc.s sha512p8-ppc.s",
-       modes_asm_src   => "ghashp8-ppc.s",
-       chacha_asm_src  => "chacha-ppc.s",
-       poly1305_asm_src=> "poly1305-ppc.s poly1305-ppcfp.s",
-    },
-    ppc64_asm => {
-       inherit_from    => [ "ppc32_asm" ],
-       template        => 1,
-       ec_asm_src      => "ecp_nistz256.c ecp_nistz256-ppc64.s x25519-ppc64.s",
-       keccak1600_asm_src      => "keccak1600-ppc64.s",
-    },
 );
index 27e587f..9b08cf4 100644 (file)
@@ -221,7 +221,7 @@ my %targets = (
         # NB. GNU C has to be configured to use GNU assembler, and not
         # /usr/ccs/bin/as. Failure to comply will result in compile
         # failures [at least] in 32-bit build.
-        inherit_from     => [ "solaris-common", asm("x86_elf_asm") ],
+        inherit_from     => [ "solaris-common" ],
         CC               => "gcc",
         CFLAGS           => add_before(picker(default => "-Wall",
                                               debug   => "-O0 -g",
@@ -232,6 +232,8 @@ my %targets = (
         bn_ops           => "BN_LLONG",
         shared_cflag     => "-fPIC",
         shared_ldflag    => add_before("-shared -static-libgcc"),
+        asm_arch         => 'x86',
+        perlasm_scheme   => 'elf',
     },
     "solaris64-x86_64-gcc" => {
         # -shared -static-libgcc might appear controversial, but modules
@@ -242,7 +244,7 @@ my %targets = (
         # code [thanks to inline assembler], I would actually recommend
         # to consider using gcc shared build even with vendor compiler:-)
         #                        -- <appro@openssl.org>
-        inherit_from     => [ "solaris-common", asm("x86_64_asm") ],
+        inherit_from     => [ "solaris-common" ],
         CC               => "gcc",
         CFLAGS           => add_before(picker(default => "-Wall",
                                               debug   => "-O0 -g",
@@ -251,6 +253,7 @@ my %targets = (
         lib_cppflags     => add("-DL_ENDIAN"),
         ex_libs          => add(threads("-pthread")),
         bn_ops           => "SIXTY_FOUR_BIT_LONG",
+        asm_arch         => 'x86_64',
         perlasm_scheme   => "elf",
         shared_cflag     => "-fPIC",
         shared_ldflag    => add_before("-shared -static-libgcc"),
@@ -271,7 +274,7 @@ my %targets = (
     # Consider switching to solaris64-x86_64-gcc even here...
     #
     "solaris64-x86_64-cc" => {
-        inherit_from     => [ "solaris-common", asm("x86_64_asm") ],
+        inherit_from     => [ "solaris-common" ],
         CC               => "cc",
         CFLAGS           => add_before(picker(debug   => "-g",
                                               release => "-xO5 -xdepend -xbuiltin")),
@@ -282,6 +285,7 @@ my %targets = (
         lflags           => add(threads("-mt")),
         ex_libs          => add(threads("-lpthread")),
         bn_ops           => "SIXTY_FOUR_BIT_LONG",
+        asm_arch         => 'x86_64',
         perlasm_scheme   => "elf",
         shared_cflag     => "-KPIC",
         shared_ldflag    => add_before("-G -dy -z text"),
@@ -303,14 +307,18 @@ my %targets = (
         shared_ldflag    => add_before("-shared"),
     },
     "solaris-sparcv8-gcc" => {
-        inherit_from     => [ "solaris-sparcv7-gcc", asm("sparcv8_asm") ],
+        inherit_from     => [ "solaris-sparcv7-gcc" ],
         cflags           => add_before("-mcpu=v8"),
+        asm_arch         => 'sparcv8',
+        perlasm_scheme   => 'void',
     },
     "solaris-sparcv9-gcc" => {
         # -m32 should be safe to add as long as driver recognizes
         # -mcpu=ultrasparc
-        inherit_from     => [ "solaris-sparcv7-gcc", asm("sparcv9_asm") ],
+        inherit_from     => [ "solaris-sparcv7-gcc" ],
         cflags           => add_before("-m32 -mcpu=ultrasparc"),
+        asm_arch         => 'sparcv9',
+        perlasm_scheme   => 'void',
     },
     "solaris64-sparcv9-gcc" => {
         inherit_from     => [ "solaris-sparcv9-gcc" ],
@@ -339,17 +347,23 @@ my %targets = (
     },
 ####
     "solaris-sparcv8-cc" => {
-        inherit_from     => [ "solaris-sparcv7-cc", asm("sparcv8_asm") ],
+        inherit_from     => [ "solaris-sparcv7-cc" ],
         cflags           => add_before("-xarch=v8"),
+        asm_arch         => 'sparcv8',
+        perlasm_scheme   => 'void',
     },
     "solaris-sparcv9-cc" => {
-        inherit_from     => [ "solaris-sparcv7-cc", asm("sparcv9_asm") ],
+        inherit_from     => [ "solaris-sparcv7-cc" ],
         cflags           => add_before("-xarch=v8plus"),
+        asm_arch         => 'sparcv9',
+        perlasm_scheme   => 'void',
     },
     "solaris64-sparcv9-cc" => {
-        inherit_from     => [ "solaris-sparcv7-cc", asm("sparcv9_asm") ],
+        inherit_from     => [ "solaris-sparcv7-cc" ],
         cflags           => add_before("-xarch=v9"),
         bn_ops           => "BN_LLONG RC4_CHAR",
+        asm_arch         => 'sparcv9',
+        perlasm_scheme   => 'void',
         multilib         => "/64",
     },
 
@@ -368,45 +382,49 @@ my %targets = (
         shared_sonameflag=> "-Wl,-soname,",
     },
     "irix-mips3-gcc" => {
-        inherit_from     => [ "irix-common", asm("mips64_asm") ],
+        inherit_from     => [ "irix-common" ],
         CC               => "gcc",
         CFLAGS           => picker(debug   => "-g -O0",
                                    release => "-O3"),
         LDFLAGS          => "-static-libgcc",
         cflags           => "-mabi=n32",
         bn_ops           => "RC4_CHAR SIXTY_FOUR_BIT",
+        asm_arch         => 'mips64',
         perlasm_scheme   => "n32",
         multilib         => "32",
     },
     "irix-mips3-cc" => {
-        inherit_from     => [ "irix-common", asm("mips64_asm") ],
+        inherit_from     => [ "irix-common" ],
         CC               => "cc",
         CFLAGS           => picker(debug   => "-g -O0",
                                    release => "-O2"),
         cflags           => "-n32 -mips3 -use_readonly_const -G0 -rdata_shared",
         bn_ops           => "RC4_CHAR SIXTY_FOUR_BIT",
+        asm_arch         => 'mips64',
         perlasm_scheme   => "n32",
         multilib         => "32",
     },
     # N64 ABI builds.
     "irix64-mips4-gcc" => {
-        inherit_from     => [ "irix-common", asm("mips64_asm") ],
+        inherit_from     => [ "irix-common" ],
         CC               => "gcc",
         CFLAGS           => picker(debug   => "-g -O0",
                                    release => "-O3"),
         LDFLAGS          => "-static-libgcc",
         cflags           => "-mabi=64 -mips4",
         bn_ops           => "RC4_CHAR SIXTY_FOUR_BIT_LONG",
+        asm_arch         => 'mips64',
         perlasm_scheme   => "64",
         multilib         => "64",
     },
     "irix64-mips4-cc" => {
-        inherit_from     => [ "irix-common", asm("mips64_asm") ],
+        inherit_from     => [ "irix-common" ],
         CC               => "cc",
         CFLAGS           => picker(debug   => "-g -O0",
                                    release => "-O2"),
         cflags           => "-64 -mips4 -use_readonly_const -G0 -rdata_shared",
         bn_ops           => "RC4_CHAR SIXTY_FOUR_BIT_LONG",
+        asm_arch         => 'mips64',
         perlasm_scheme   => "64",
         multilib         => "64",
     },
@@ -466,17 +484,21 @@ my %targets = (
         shared_extension => ".sl.\$(SHLIB_VERSION_NUMBER)",
     },
     "hpux-parisc1_1-gcc" => {
-        inherit_from     => [ "hpux-parisc-gcc", asm("parisc11_asm") ],
+        inherit_from     => [ "hpux-parisc-gcc" ],
+        asm_arch         => 'parisc11',
+        perlasm_scheme   => "32",
         multilib         => "/pa1.1",
     },
     "hpux64-parisc2-gcc" => {
-        inherit_from     => [ "hpux-common", asm("parisc20_64_asm") ],
+        inherit_from     => [ "hpux-common" ],
         CC               => "gcc",
         CFLAGS           => combine(picker(debug   => "-O0 -g",
                                            release => "-O3")),
         cflags           => add(threads("-pthread")),
         ex_libs          => add("-ldl", threads("-pthread")),
         bn_ops           => "SIXTY_FOUR_BIT_LONG RC4_CHAR",
+        asm_arch         => 'parisc20_64',
+        perlasm_scheme   => "64",
         shared_cflag     => "-fpic",
         shared_ldflag    => add_before("-shared"),
         shared_extension => ".sl.\$(SHLIB_VERSION_NUMBER)",
@@ -500,12 +522,14 @@ my %targets = (
         shared_extension => ".sl.\$(SHLIB_VERSION_NUMBER)",
     },
     "hpux-parisc1_1-cc" => {
-        inherit_from     => [ "hpux-parisc-cc", asm("parisc11_asm") ],
+        inherit_from     => [ "hpux-parisc-cc" ],
         cflags           => add_before("+DA1.1"),
+        asm_arch         => 'parisc11',
+        perlasm_scheme   => "32",
         multilib         => "/pa1.1",
     },
     "hpux64-parisc2-cc" => {
-        inherit_from     => [ "hpux-common", asm("parisc20_64_asm") ],
+        inherit_from     => [ "hpux-common" ],
         CC               => "cc",
         CFLAGS           => picker(debug   => "+O0 +d -g",
                                    release => "+O3") ,
@@ -514,6 +538,8 @@ my %targets = (
         lib_cppflags     => add("-DMD32_XARRAY"),
         ex_libs          => add("-ldl", threads("-lpthread")),
         bn_ops           => "SIXTY_FOUR_BIT_LONG RC4_CHAR",
+        asm_arch         => 'parisc20_64',
+        perlasm_scheme   => "64",
         shared_cflag     => "+Z",
         shared_ldflag    => add_before("-b"),
         shared_extension => ".sl.\$(SHLIB_VERSION_NUMBER)",
@@ -522,7 +548,7 @@ my %targets = (
 
     # HP/UX IA-64 targets
     "hpux-ia64-cc" => {
-        inherit_from     => [ "hpux-common", asm("ia64_asm") ],
+        inherit_from     => [ "hpux-common" ],
         CC               => "cc",
         CFLAGS           => picker(debug   => "+O0 +d -g",
                                    release => "+O2"),
@@ -530,12 +556,14 @@ my %targets = (
         cppflags         => add(threads("-D_REENTRANT")),
         ex_libs          => add("-ldl", threads("-lpthread")),
         bn_ops           => "SIXTY_FOUR_BIT",
+        asm_arch         => 'ia64',
+        perlasm_scheme   => 'void',
         shared_cflag     => "+Z",
         shared_ldflag    => add_before("-b"),
         multilib         => "/hpux32",
     },
     "hpux64-ia64-cc" => {
-        inherit_from     => [ "hpux-common", asm("ia64_asm") ],
+        inherit_from     => [ "hpux-common" ],
         CC               => "cc",
         CFLAGS           => picker(debug   => "+O0 +d -g",
                                    release => "+O3"),
@@ -543,31 +571,37 @@ my %targets = (
         cppflags         => threads("-D_REENTRANT"),
         ex_libs          => add("-ldl", threads("-lpthread")),
         bn_ops           => "SIXTY_FOUR_BIT_LONG",
+        asm_arch         => 'ia64',
+        perlasm_scheme   => 'void',
         shared_cflag     => "+Z",
         shared_ldflag    => add_before("-b"),
         multilib         => "/hpux64",
     },
     # GCC builds...
     "hpux-ia64-gcc" => {
-        inherit_from     => [ "hpux-common", asm("ia64_asm") ],
+        inherit_from     => [ "hpux-common" ],
         CC               => "gcc",
         CFLAGS           => picker(debug   => "-O0 -g",
                                    release => "-O3"),
         cflags           => add(threads("-pthread")),
         ex_libs          => add("-ldl", threads("-pthread")),
         bn_ops           => "SIXTY_FOUR_BIT",
+        asm_arch         => 'ia64',
+        perlasm_scheme   => 'void',
         shared_cflag     => "-fpic",
         shared_ldflag    => add_before("-shared"),
         multilib         => "/hpux32",
     },
     "hpux64-ia64-gcc" => {
-        inherit_from     => [ "hpux-common", asm("ia64_asm") ],
+        inherit_from     => [ "hpux-common" ],
         CC               => "gcc",
         CFLAGS           => picker(debug   => "-O0 -g",
                                    release => "-O3"),
         cflags           => combine("-mlp64", threads("-pthread")),
         ex_libs          => add("-ldl", threads("-pthread")),
         bn_ops           => "SIXTY_FOUR_BIT_LONG",
+        asm_arch         => 'ia64',
+        perlasm_scheme   => 'void',
         shared_cflag     => "-fpic",
         shared_ldflag    => add_before("-shared"),
         multilib         => "/hpux64",
@@ -593,20 +627,22 @@ my %targets = (
 #### there were even osf1-* configs targeting prior versions provided,
 #### but not anymore...
     "tru64-alpha-gcc" => {
-        inherit_from     => [ "BASE_unix", asm("alpha_asm") ],
+        inherit_from     => [ "BASE_unix" ],
         CC               => "gcc",
         CFLAGS           => "-O3",
         cflags           => add("-std=c9x", threads("-pthread")),
         cppflags         => "-D_XOPEN_SOURCE=500 -D_OSF_SOURCE",
         ex_libs          => add("-lrt", threads("-pthread")), # for mlock(2)
         bn_ops           => "SIXTY_FOUR_BIT_LONG",
+        asm_arch         => 'alpha',
+        perlasm_scheme   => "void",
         thread_scheme    => "pthreads",
         dso_scheme       => "dlfcn",
         shared_target    => "alpha-osf1-shared",
         shared_extension => ".so",
     },
     "tru64-alpha-cc" => {
-        inherit_from     => [ "BASE_unix", asm("alpha_asm") ],
+        inherit_from     => [ "BASE_unix" ],
         CC               => "cc",
         CFLAGS           => "-tune host -fast",
         cflags           => add("-std1 -readonly_strings",
@@ -614,6 +650,8 @@ my %targets = (
         cppflags         => "-D_XOPEN_SOURCE=500 -D_OSF_SOURCE",
         ex_libs          => add("-lrt", threads("-pthread")), # for mlock(2)
         bn_ops           => "SIXTY_FOUR_BIT_LONG",
+        asm_arch         => 'alpha',
+        perlasm_scheme   => "void",
         thread_scheme    => "pthreads",
         dso_scheme       => "dlfcn",
         shared_target    => "alpha-osf1-shared",
@@ -654,22 +692,25 @@ my %targets = (
     },
 
     "linux-ppc" => {
-        inherit_from     => [ "linux-generic32", asm("ppc32_asm") ],
+        inherit_from     => [ "linux-generic32" ],
+        asm_arch         => 'ppc32',
         perlasm_scheme   => "linux32",
     },
     "linux-ppc64" => {
-        inherit_from     => [ "linux-generic64", asm("ppc64_asm") ],
+        inherit_from     => [ "linux-generic64" ],
         cflags           => add("-m64"),
         cxxflags         => add("-m64"),
         lib_cppflags     => add("-DB_ENDIAN"),
+        asm_arch         => 'ppc64',
         perlasm_scheme   => "linux64",
         multilib         => "64",
     },
     "linux-ppc64le" => {
-        inherit_from     => [ "linux-generic64", asm("ppc64_asm") ],
+        inherit_from     => [ "linux-generic64" ],
         cflags           => add("-m64"),
         cxxflags         => add("-m64"),
         lib_cppflags     => add("-DL_ENDIAN"),
+        asm_arch         => 'ppc64',
         perlasm_scheme   => "linux64le",
     },
 
@@ -705,43 +746,49 @@ my %targets = (
         #
         # ./Configure linux-armv4 -march=armv6 -D__ARM_MAX_ARCH__=8
         #
-        inherit_from     => [ "linux-generic32", asm("armv4_asm") ],
+        inherit_from     => [ "linux-generic32" ],
+        asm_arch         => 'armv4',
         perlasm_scheme   => "linux32",
     },
     "linux-aarch64" => {
-        inherit_from     => [ "linux-generic64", asm("aarch64_asm") ],
+        inherit_from     => [ "linux-generic64" ],
+        asm_arch         => 'aarch64',
         perlasm_scheme   => "linux64",
     },
     "linux-arm64ilp32" => {  # https://wiki.linaro.org/Platform/arm64-ilp32
-        inherit_from     => [ "linux-generic32", asm("aarch64_asm") ],
+        inherit_from     => [ "linux-generic32" ],
         cflags           => add("-mabi=ilp32"),
         cxxflags         => add("-mabi=ilp32"),
         bn_ops           => "SIXTY_FOUR_BIT RC4_CHAR",
+        asm_arch         => 'aarch64',
         perlasm_scheme   => "linux64",
     },
 
     "linux-mips32" => {
         # Configure script adds minimally required -march for assembly
         # support, if no -march was specified at command line.
-        inherit_from     => [ "linux-generic32", asm("mips32_asm") ],
+        inherit_from     => [ "linux-generic32" ],
         cflags           => add("-mabi=32"),
         cxxflags         => add("-mabi=32"),
+        asm_arch         => 'mips32',
         perlasm_scheme   => "o32",
     },
     # mips32 and mips64 below refer to contemporary MIPS Architecture
     # specifications, MIPS32 and MIPS64, rather than to kernel bitness.
     "linux-mips64" => {
-        inherit_from     => [ "linux-generic32", asm("mips64_asm") ],
+        inherit_from     => [ "linux-generic32" ],
         cflags           => add("-mabi=n32"),
         cxxflags         => add("-mabi=n32"),
         bn_ops           => "SIXTY_FOUR_BIT RC4_CHAR",
+        asm_arch         => 'mips64',
         perlasm_scheme   => "n32",
         multilib         => "32",
     },
     "linux64-mips64" => {
-        inherit_from     => [ "linux-generic64", asm("mips64_asm") ],
+        inherit_from     => [ "linux-generic64" ],
         cflags           => add("-mabi=64"),
         cxxflags         => add("-mabi=64"),
+        asm_arch         => 'mips64',
         perlasm_scheme   => "64",
         multilib         => "64",
     },
@@ -750,13 +797,15 @@ my %targets = (
     #### These two targets are a bit aged and are to be used on older Linux
     #### machines where gcc doesn't understand -m32 and -m64
     "linux-elf" => {
-        inherit_from     => [ "linux-generic32", asm("x86_elf_asm") ],
+        inherit_from     => [ "linux-generic32" ],
         CFLAGS           => add(picker(release => "-fomit-frame-pointer")),
         lib_cppflags     => add("-DL_ENDIAN"),
         bn_ops           => "BN_LLONG",
+        asm_arch         => 'x86',
+        perlasm_scheme   => "elf",
     },
     "linux-aout" => {
-        inherit_from     => [ "BASE_unix", asm("x86_asm") ],
+        inherit_from     => [ "BASE_unix" ],
         CC               => "gcc",
         CFLAGS           => add(picker(default => "-Wall",
                                        debug   => "-O0 -g",
@@ -764,17 +813,19 @@ my %targets = (
         lib_cppflags     => add("-DL_ENDIAN"),
         bn_ops           => "BN_LLONG",
         thread_scheme    => "(unknown)",
+        asm_arch         => 'x86',
         perlasm_scheme   => "a.out",
     },
 
     #### X86 / X86_64 targets
     "linux-x86" => {
-        inherit_from     => [ "linux-generic32", asm("x86_asm") ],
+        inherit_from     => [ "linux-generic32" ],
         CFLAGS           => add(picker(release => "-fomit-frame-pointer")),
         cflags           => add("-m32"),
         cxxflags         => add("-m32"),
         lib_cppflags     => add("-DL_ENDIAN"),
         bn_ops           => "BN_LLONG",
+        asm_arch         => 'x86',
         perlasm_scheme   => "elf",
     },
     "linux-x86-clang" => {
@@ -783,11 +834,12 @@ my %targets = (
         CXX              => "clang++",
     },
     "linux-x86_64" => {
-        inherit_from     => [ "linux-generic64", asm("x86_64_asm") ],
+        inherit_from     => [ "linux-generic64" ],
         cflags           => add("-m64"),
         cxxflags         => add("-m64"),
         lib_cppflags     => add("-DL_ENDIAN"),
         bn_ops           => "SIXTY_FOUR_BIT_LONG",
+        asm_arch         => 'x86_64',
         perlasm_scheme   => "elf",
         multilib         => "64",
     },
@@ -797,25 +849,29 @@ my %targets = (
         CXX              => "clang++",
     },
     "linux-x32" => {
-        inherit_from     => [ "linux-generic32", asm("x86_64_asm") ],
+        inherit_from     => [ "linux-generic32" ],
         cflags           => add("-mx32"),
         cxxflags         => add("-mx32"),
         lib_cppflags     => add("-DL_ENDIAN"),
         bn_ops           => "SIXTY_FOUR_BIT",
+        asm_arch         => 'x86_64',
         perlasm_scheme   => "elf32",
         multilib         => "x32",
     },
 
     "linux-ia64" => {
-        inherit_from     => [ "linux-generic64", asm("ia64_asm") ],
+        inherit_from     => [ "linux-generic64" ],
         bn_ops           => "SIXTY_FOUR_BIT_LONG",
+        asm_arch         => 'ia64',
+        perlasm_scheme   => 'void',
     },
 
     "linux64-s390x" => {
-        inherit_from     => [ "linux-generic64", asm("s390x_asm") ],
+        inherit_from     => [ "linux-generic64" ],
         cflags           => add("-m64"),
         cxxflags         => add("-m64"),
         lib_cppflags     => add("-DB_ENDIAN"),
+        asm_arch         => 's390x',
         perlasm_scheme   => "64",
         multilib         => "64",
     },
@@ -836,44 +892,52 @@ my %targets = (
         # yet, because of couple of bugs in glibc
         # sysdeps/s390/dl-procinfo.c affecting ldconfig and ld.so.1...
         #
-        inherit_from     => [ "linux-generic32", asm("s390x_asm") ],
+        inherit_from     => [ "linux-generic32" ],
         cflags           => add("-m31 -Wa,-mzarch"),
         cxxflags         => add("-m31 -Wa,-mzarch"),
         lib_cppflags     => add("-DB_ENDIAN"),
-        bn_asm_src       => sub { my $r=join(" ",@_); $r=~s|asm/s390x\.S|bn_asm.c|; $r; },
+        asm_arch         => 's390x',
         perlasm_scheme   => "31",
         multilib         => "/highgprs",
     },
 
     #### SPARC Linux setups
     "linux-sparcv8" => {
-        inherit_from     => [ "linux-generic32", asm("sparcv8_asm") ],
+        inherit_from     => [ "linux-generic32" ],
         cflags           => add("-mcpu=v8"),
         cxxflags         => add("-mcpu=v8"),
         lib_cppflags     => add("-DB_ENDIAN -DBN_DIV2W"),
+        asm_arch         => 'sparcv8',
+        perlasm_scheme   => 'void',
     },
     "linux-sparcv9" => {
         # it's a real mess with -mcpu=ultrasparc option under Linux,
         # but -Wa,-Av8plus should do the trick no matter what.
-        inherit_from     => [ "linux-generic32", asm("sparcv9_asm") ],
+        inherit_from     => [ "linux-generic32" ],
         cflags           => add("-m32 -mcpu=ultrasparc -Wa,-Av8plus"),
         cxxflags         => add("-m32 -mcpu=ultrasparc -Wa,-Av8plus"),
         lib_cppflags     => add("-DB_ENDIAN -DBN_DIV2W"),
+        asm_arch         => 'sparcv9',
+        perlasm_scheme   => 'void',
     },
     "linux64-sparcv9" => {
         # GCC 3.1 is a requirement
-        inherit_from     => [ "linux-generic64", asm("sparcv9_asm") ],
+        inherit_from     => [ "linux-generic64" ],
         cflags           => add("-m64 -mcpu=ultrasparc"),
         cxxflags         => add("-m64 -mcpu=ultrasparc"),
         lib_cppflags     => add("-DB_ENDIAN"),
         bn_ops           => "BN_LLONG RC4_CHAR",
+        asm_arch         => 'sparcv9',
+        perlasm_scheme   => 'void',
         multilib         => "64",
     },
 
     "linux-alpha-gcc" => {
-        inherit_from     => [ "linux-generic64", asm("alpha_asm") ],
+        inherit_from     => [ "linux-generic64" ],
         lib_cppflags     => add("-DL_ENDIAN"),
         bn_ops           => "SIXTY_FOUR_BIT_LONG",
+        asm_arch         => 'alpha',
+        perlasm_scheme   => "void",
     },
     "linux-c64xplus" => {
         inherit_from     => [ "BASE_unix" ],
@@ -885,15 +949,8 @@ my %targets = (
         cppflags         => combine("-DOPENSSL_SMALL_FOOTPRINT",
                                     threads("-D_REENTRANT")),
         bn_ops           => "BN_LLONG",
-        cpuid_asm_src    => "c64xpluscpuid.s",
-        bn_asm_src       => "asm/bn-c64xplus.asm c64xplus-gf2m.s",
-        aes_asm_src      => "aes-c64xplus.s aes_cbc.c aes-ctr.fake",
-        sha1_asm_src     => "sha1-c64xplus.s sha256-c64xplus.s sha512-c64xplus.s",
-        rc4_asm_src      => "rc4-c64xplus.s",
-        modes_asm_src    => "ghash-c64xplus.s",
-        chacha_asm_src   => "chacha-c64xplus.s",
-        poly1305_asm_src => "poly1305-c64xplus.s",
         thread_scheme    => "pthreads",
+        asm_arch         => 'c64xplus',
         perlasm_scheme   => "void",
         dso_scheme       => "dlfcn",
         shared_target    => "linux-shared",
@@ -932,11 +989,12 @@ my %targets = (
     },
 
     "BSD-x86" => {
-        inherit_from     => [ "BSD-generic32", asm("x86_asm") ],
+        inherit_from     => [ "BSD-generic32" ],
         CFLAGS           => add(picker(release => "-fomit-frame-pointer")),
         lib_cppflags     => add("-DL_ENDIAN"),
         bn_ops           => "BN_LLONG",
         shared_target    => "bsd-shared",
+        asm_arch         => 'x86',
         perlasm_scheme   => "a.out",
     },
     "BSD-x86-elf" => {
@@ -945,62 +1003,54 @@ my %targets = (
     },
 
     "BSD-sparcv8" => {
-        inherit_from     => [ "BSD-generic32", asm("sparcv8_asm") ],
+        inherit_from     => [ "BSD-generic32" ],
         cflags           => add("-mcpu=v8"),
         lib_cppflags     => add("-DB_ENDIAN"),
+        asm_arch         => 'sparcv8',
+        perlasm_scheme   => 'void',
     },
     "BSD-sparc64" => {
         # -DMD32_REG_T=int doesn't actually belong in sparc64 target, it
         # simply *happens* to work around a compiler bug in gcc 3.3.3,
         # triggered by RIPEMD160 code.
-        inherit_from     => [ "BSD-generic64", asm("sparcv9_asm") ],
+        inherit_from     => [ "BSD-generic64" ],
         lib_cppflags     => add("-DB_ENDIAN -DMD32_REG_T=int"),
         bn_ops           => "BN_LLONG",
+        asm_arch         => 'sparcv9',
+        perlasm_scheme   => 'void',
     },
 
     "BSD-ia64" => {
-        inherit_from     => [ "BSD-generic64", asm("ia64_asm") ],
+        inherit_from     => [ "BSD-generic64" ],
         lib_cppflags     => add("-DL_ENDIAN"),
         bn_ops           => "SIXTY_FOUR_BIT_LONG",
+        asm_arch         => 'ia64',
+        perlasm_scheme   => 'void',
     },
 
     "BSD-x86_64" => {
-        inherit_from     => [ "BSD-generic64", asm("x86_64_asm") ],
+        inherit_from     => [ "BSD-generic64" ],
         lib_cppflags     => add("-DL_ENDIAN"),
         bn_ops           => "SIXTY_FOUR_BIT_LONG",
+        asm_arch         => 'x86_64',
         perlasm_scheme   => "elf",
     },
 
     "bsdi-elf-gcc" => {
-        inherit_from     => [ "BASE_unix", asm("x86_elf_asm") ],
+        inherit_from     => [ "BASE_unix" ],
         CC               => "gcc",
         CFLAGS           => "-fomit-frame-pointer -O3 -Wall",
         lib_cppflags     => "-DPERL5 -DL_ENDIAN",
         ex_libs          => add("-ldl"),
         bn_ops           => "BN_LLONG",
+        asm_arch         => 'x86',
+        perlasm_scheme   => "elf",
         thread_scheme    => "(unknown)",
         dso_scheme       => "dlfcn",
         shared_target    => "bsd-gcc-shared",
         shared_cflag     => "-fPIC",
     },
 
-    "nextstep" => {
-        inherit_from     => [ "BASE_unix" ],
-        CC               => "cc",
-        CFLAGS           => "-O -Wall",
-        unistd           => "<libc.h>",
-        bn_ops           => "BN_LLONG",
-        thread_scheme    => "(unknown)",
-    },
-    "nextstep3.3" => {
-        inherit_from     => [ "BASE_unix" ],
-        CC               => "cc",
-        CFLAGS           => "-O3 -Wall",
-        unistd           => "<libc.h>",
-        bn_ops           => "BN_LLONG",
-        thread_scheme    => "(unknown)",
-    },
-
 #### SCO/Caldera targets.
 #
 # Originally we had like unixware-*, unixware-*-pentium, unixware-*-p6, etc.
@@ -1030,7 +1080,7 @@ my %targets = (
         thread_scheme    => "uithreads",
     },
     "unixware-7" => {
-        inherit_from     => [ "BASE_unix", asm("x86_elf_asm") ],
+        inherit_from     => [ "BASE_unix" ],
         CC               => "cc",
         CFLAGS           => "-O",
         cflags           => combine("-Kalloca", threads("-Kthread")),
@@ -1038,13 +1088,14 @@ my %targets = (
         ex_libs          => add("-lsocket -lnsl"),
         thread_scheme    => "uithreads",
         bn_ops           => "BN_LLONG",
+        asm_arch         => 'x86',
         perlasm_scheme   => "elf-1",
         dso_scheme       => "dlfcn",
         shared_target    => "svr5-shared",
         shared_cflag     => "-Kpic",
     },
     "unixware-7-gcc" => {
-        inherit_from     => [ "BASE_unix", asm("x86_elf_asm") ],
+        inherit_from     => [ "BASE_unix" ],
         CC               => "gcc",
         CFLAGS           => "-O3 -fomit-frame-pointer -Wall",
         cppflags         => add(threads("-D_REENTRANT")),
@@ -1052,6 +1103,7 @@ my %targets = (
         ex_libs          => add("-lsocket -lnsl"),
         bn_ops           => "BN_LLONG",
         thread_scheme    => "pthreads",
+        asm_arch         => 'x86',
         perlasm_scheme   => "elf-1",
         dso_scheme       => "dlfcn",
         shared_target    => "gnu-shared",
@@ -1059,23 +1111,25 @@ my %targets = (
     },
 # SCO 5 - Ben Laurie says the -O breaks the SCO cc.
     "sco5-cc" => {
-        inherit_from     => [ "BASE_unix", asm("x86_elf_asm") ],
+        inherit_from     => [ "BASE_unix" ],
         cc               => "cc",
         cflags           => "-belf",
         ex_libs          => add("-lsocket -lnsl"),
         thread_scheme    => "(unknown)",
+        asm_arch         => 'x86',
         perlasm_scheme   => "elf-1",
         dso_scheme       => "dlfcn",
         shared_target    => "svr3-shared",
         shared_cflag     => "-Kpic",
     },
     "sco5-gcc" => {
-        inherit_from     => [ "BASE_unix", asm("x86_elf_asm") ],
+        inherit_from     => [ "BASE_unix" ],
         cc               => "gcc",
         cflags           => "-O3 -fomit-frame-pointer",
         ex_libs          => add("-lsocket -lnsl"),
         bn_ops           => "BN_LLONG",
         thread_scheme    => "(unknown)",
+        asm_arch         => 'x86',
         perlasm_scheme   => "elf-1",
         dso_scheme       => "dlfcn",
         shared_target    => "svr3-shared",
@@ -1097,32 +1151,34 @@ my %targets = (
         thread_scheme    => "pthreads",
         dso_scheme       => "dlfcn",
         shared_target    => "aix",
-        module_ldflags   => "-Wl,-G,-bsymbolic,-bexpall",
+        module_ldflags   => "-Wl,-G,-bsymbolic,-bnoentry",
         shared_ldflag    => "-Wl,-G,-bsymbolic,-bnoentry",
         shared_defflag   => "-Wl,-bE:",
         perl_platform    => 'AIX',
     },
     "aix-gcc" => {
-        inherit_from     => [ "aix-common", asm("ppc32_asm") ],
+        inherit_from     => [ "aix-common" ],
         CC               => "gcc",
         CFLAGS           => picker(debug   => "-O0 -g",
                                    release => "-O"),
         cflags           => add(threads("-pthread")),
         ex_libs          => threads("-pthread"),
         bn_ops           => "BN_LLONG RC4_CHAR",
+        asm_arch         => 'ppc32',
         perlasm_scheme   => "aix32",
         shared_ldflag    => add_before("-shared -static-libgcc"),
         AR               => add("-X32"),
         RANLIB           => add("-X32"),
     },
     "aix64-gcc" => {
-        inherit_from     => [ "aix-common", asm("ppc64_asm") ],
+        inherit_from     => [ "aix-common" ],
         CC               => "gcc",
         CFLAGS           => picker(debug   => "-O0 -g",
                                    release => "-O"),
         cflags           => combine("-maix64", threads("-pthread")),
         ex_libs          => threads("-pthread"),
         bn_ops           => "SIXTY_FOUR_BIT_LONG RC4_CHAR",
+        asm_arch         => 'ppc64',
         perlasm_scheme   => "aix64",
         shared_ldflag    => add_before("-shared -static-libgcc"),
         shared_extension => "64.so.\$(SHLIB_VERSION_NUMBER)",
@@ -1130,7 +1186,7 @@ my %targets = (
         RANLIB           => add("-X64"),
     },
     "aix-cc" => {
-        inherit_from     => [ "aix-common", asm("ppc32_asm") ],
+        inherit_from     => [ "aix-common" ],
         CC               => "cc",
         CFLAGS           => picker(debug   => "-O0 -g",
                                    release => "-O"),
@@ -1139,13 +1195,14 @@ my %targets = (
         cppflags         => threads("-D_THREAD_SAFE"),
         ex_libs          => threads("-lpthreads"),
         bn_ops           => "BN_LLONG RC4_CHAR",
+        asm_arch         => 'ppc32',
         perlasm_scheme   => "aix32",
         shared_cflag     => "-qpic",
         AR               => add("-X32"),
         RANLIB           => add("-X32"),
     },
     "aix64-cc" => {
-        inherit_from     => [ "aix-common", asm("ppc64_asm") ],
+        inherit_from     => [ "aix-common" ],
         CC               => "cc",
         CFLAGS           => picker(debug   => "-O0 -g",
                                    release => "-O"),
@@ -1154,6 +1211,7 @@ my %targets = (
         cppflags         => threads("-D_THREAD_SAFE"),
         ex_libs          => threads("-lpthreads"),
         bn_ops           => "SIXTY_FOUR_BIT_LONG RC4_CHAR",
+        asm_arch         => 'ppc64',
         perlasm_scheme   => "aix64",
         dso_scheme       => "dlfcn",
         shared_cflag     => "-qpic",
@@ -1216,8 +1274,6 @@ my %targets = (
         shared_target    => "win-shared", # meaningless except it gives Configure a hint
         thread_scheme    => "winthreads",
         dso_scheme       => "win32",
-        apps_aux_src     => add("win32_init.c"),
-        bn_ops           => "EXPORT_VAR_AS_FN",
         perl_platform    => 'Windows::MSVC',
         # additional parameter to build_scheme denotes install-path "flavour"
         build_scheme     => add("VC-common", { separator => undef }),
@@ -1272,33 +1328,30 @@ my %targets = (
         bn_ops           => add("SIXTY_FOUR_BIT"),
     },
     "VC-WIN64I" => {
-        inherit_from     => [ "VC-WIN64-common", asm("ia64_asm"),
-                              sub { $disabled{shared} ? () : "ia64_uplink" } ],
+        inherit_from     => [ "VC-WIN64-common" ],
         AS               => "ias",
         ASFLAGS          => "-d debug",
         asoutflag        => "-o ",
         sys_id           => "WIN64I",
-        bn_asm_src       => sub { return undef unless @_;
-                                  my $r=join(" ",@_); $r=~s|bn-ia64.s|bn_asm.c|; $r; },
+        uplink_arch      => 'ia64',
+        asm_arch         => 'ia64',
         perlasm_scheme   => "ias",
         multilib         => "-ia64",
     },
     "VC-WIN64A" => {
-        inherit_from     => [ "VC-WIN64-common", asm("x86_64_asm"),
-                              sub { $disabled{shared} ? () : "x86_64_uplink" } ],
+        inherit_from     => [ "VC-WIN64-common" ],
         AS               => sub { vc_win64a_info()->{AS} },
         ASFLAGS          => sub { vc_win64a_info()->{ASFLAGS} },
         asoutflag        => sub { vc_win64a_info()->{asoutflag} },
         asflags          => sub { vc_win64a_info()->{asflags} },
         sys_id           => "WIN64A",
-        bn_asm_src       => sub { return undef unless @_;
-                                  my $r=join(" ",@_); $r=~s|asm/x86_64-gcc|bn_asm|; $r; },
+        uplink_arch      => 'x86_64',
+        asm_arch         => 'x86_64',
         perlasm_scheme   => "auto",
         multilib         => "-x64",
     },
     "VC-WIN32" => {
-        inherit_from     => [ "VC-noCE-common", asm("x86_asm"),
-                              sub { $disabled{shared} ? () : "uplink_common" } ],
+        inherit_from     => [ "VC-noCE-common" ],
         CFLAGS           => add("/WX"),
         AS               => sub { vc_win32_info()->{AS} },
         ASFLAGS          => sub { vc_win32_info()->{ASFLAGS} },
@@ -1306,6 +1359,8 @@ my %targets = (
         asflags          => sub { vc_win32_info()->{asflags} },
         sys_id           => "WIN32",
         bn_ops           => add("BN_LLONG"),
+        uplink_arch      => 'common',
+        asm_arch         => 'x86',
         perlasm_scheme   => sub { vc_win32_info()->{perlasm_scheme} },
         # "WOW" stands for "Windows on Windows", and "VC-WOW" engages
         # some installation path heuristics in windows-makefile.tmpl...
@@ -1370,40 +1425,41 @@ my %targets = (
                                     threads("-D_MT")),
         lib_cppflags     => "-DL_ENDIAN",
         ex_libs          => add("-lws2_32 -lgdi32 -lcrypt32"),
-        bn_ops           => "EXPORT_VAR_AS_FN",
         thread_scheme    => "winthreads",
         dso_scheme       => "win32",
         shared_target    => "mingw-shared",
         shared_cppflags  => add("_WINDLL"),
         shared_ldflag    => "-static-libgcc",
-        apps_aux_src     => add("win32_init.c"),
 
         perl_platform    => 'mingw',
     },
     "mingw" => {
-        inherit_from     => [ "mingw-common", asm("x86_asm"),
-                              sub { $disabled{shared} ? () : "x86_uplink" } ],
+        inherit_from     => [ "mingw-common" ],
         CFLAGS           => add(picker(release => "-fomit-frame-pointer")),
         cflags           => "-m32",
         sys_id           => "MINGW32",
         bn_ops           => add("BN_LLONG"),
+        asm_arch         => 'x86',
+        uplink_arch      => 'x86',
         perlasm_scheme   => "coff",
         shared_rcflag    => "--target=pe-i386",
         multilib         => "",
     },
     "mingw64" => {
-        # As for OPENSSL_USE_APPLINK. Applink makes it possible to use
+        # As for uplink_arch. Applink makes it possible to use
         # .dll compiled with one compiler with application compiled with
         # another compiler. It's possible to engage Applink support in
-        # mingw64 build, but it's not done, because till mingw64
+        # mingw64 build, but it's not done, because until mingw64
         # supports structured exception handling, one can't seriously
         # consider its binaries for using with non-mingw64 run-time
         # environment. And as mingw64 is always consistent with itself,
         # Applink is never engaged and can as well be omitted.
-        inherit_from     => [ "mingw-common", asm("x86_64_asm") ],
+        inherit_from     => [ "mingw-common" ],
         cflags           => "-m64",
         sys_id           => "MINGW64",
         bn_ops           => add("SIXTY_FOUR_BIT"),
+        asm_arch         => 'x86_64',
+        uplink_arch      => undef,
         perlasm_scheme   => "mingw64",
         shared_rcflag    => "--target=pe-x86-64",
         multilib         => "64",
@@ -1448,15 +1504,17 @@ my %targets = (
         perl_platform    => 'Cygwin',
     },
     "Cygwin-x86" => {
-        inherit_from     => [ "Cygwin-common", asm("x86_asm") ],
+        inherit_from     => [ "Cygwin-common" ],
         CFLAGS           => add(picker(release => "-O3 -fomit-frame-pointer")),
         bn_ops           => "BN_LLONG",
+        asm_arch         => 'x86',
         perlasm_scheme   => "coff",
     },
     "Cygwin-x86_64" => {
-        inherit_from     => [ "Cygwin-common", asm("x86_64_asm") ],
+        inherit_from     => [ "Cygwin-common" ],
         CC               => "gcc",
         bn_ops           => "SIXTY_FOUR_BIT_LONG",
+        asm_arch         => 'x86_64',
         perlasm_scheme   => "mingw64",
     },
     # Backward compatibility for those using this target
@@ -1500,46 +1558,51 @@ my %targets = (
     # with future defaults for below two targets, because MacOS X
     # for PPC has no future, it was discontinued by vendor in 2009.
     "darwin-ppc-cc" => {
-        inherit_from     => [ "darwin-common", asm("ppc32_asm") ],
+        inherit_from     => [ "darwin-common" ],
         cflags           => add("-arch ppc -std=gnu9x -Wa,-force_cpusubtype_ALL"),
         lib_cppflags     => add("-DB_ENDIAN"),
         shared_cflag     => add("-fno-common"),
+        asm_arch         => 'ppc32',
         perlasm_scheme   => "osx32",
     },
     "darwin64-ppc-cc" => {
-        inherit_from     => [ "darwin-common", asm("ppc64_asm") ],
+        inherit_from     => [ "darwin-common" ],
         cflags           => add("-arch ppc64 -std=gnu9x"),
         lib_cppflags     => add("-DB_ENDIAN"),
         bn_ops           => "SIXTY_FOUR_BIT_LONG RC4_CHAR",
+        asm_arch         => 'ppc64',
         perlasm_scheme   => "osx64",
     },
     "darwin-i386-cc" => {
-        inherit_from     => [ "darwin-common", asm("x86_asm") ],
+        inherit_from     => [ "darwin-common" ],
         CFLAGS           => add(picker(release => "-fomit-frame-pointer")),
         cflags           => add("-arch i386"),
         lib_cppflags     => add("-DL_ENDIAN"),
         bn_ops           => "BN_LLONG RC4_INT",
+        asm_arch         => 'x86',
         perlasm_scheme   => "macosx",
     },
     "darwin64-x86_64-cc" => {
-        inherit_from     => [ "darwin-common", asm("x86_64_asm") ],
+        inherit_from     => [ "darwin-common" ],
         CFLAGS           => add("-Wall"),
         cflags           => add("-arch x86_64"),
         lib_cppflags     => add("-DL_ENDIAN"),
         bn_ops           => "SIXTY_FOUR_BIT_LONG",
+        asm_arch         => 'x86_64',
         perlasm_scheme   => "macosx",
     },
 
 ##### GNU Hurd
     "hurd-x86" => {
         inherit_from     => [ "BASE_unix" ],
-        inherit_from     => [ asm("x86_elf_asm") ],
         CC               => "gcc",
         CFLAGS           => "-O3 -fomit-frame-pointer -Wall",
         cflags           => threads("-pthread"),
         lib_cppflags     => "-DL_ENDIAN",
         ex_libs          => add("-ldl", threads("-pthread")),
         bn_ops           => "BN_LLONG",
+        asm_arch         => 'x86',
+        perlasm_scheme   => 'elf',
         thread_scheme    => "pthreads",
         dso_scheme       => "dlfcn",
         shared_target    => "linux-shared",
@@ -1629,7 +1692,7 @@ my %targets = (
         ranlib           => "ranlibpentium",
     },
     "vxworks-mips" => {
-        inherit_from     => [ "BASE_unix", asm("mips32_asm") ],
+        inherit_from     => [ "BASE_unix" ],
         CC               => "ccmips",
         CFLAGS           => "-O -G 0",
         cflags           => "-mrtp -mips2 -B\$(WIND_BASE)/host/\$(WIND_HOST_TYPE)/lib/gcc-lib/ -msoft-float -mno-branch-likely -fno-builtin -fno-defer-pop",
@@ -1644,6 +1707,7 @@ my %targets = (
         lflags           => add("-L \$(WIND_BASE)/target/usr/lib/mips/MIPSI32/sfcommon"),
         ex_libs          => add("-Wl,--defsym,__wrs_rtp_base=0xe0000000"),
         thread_scheme    => "pthreads",
+        asm_arch         => 'mips32',
         perlasm_scheme   => "o32",
         ranlib           => "ranlibmips",
     },
@@ -1725,8 +1789,6 @@ my %targets = (
 
         disable          => add('pinshared'),
 
-        apps_aux_src     => "vms_term_sock.c vms_decc_argv.c",
-        apps_init_src    => "vms_decc_init.c",
     },
 
     # From HELP CC/POINTER_SIZE:
@@ -1759,13 +1821,12 @@ my %targets = (
         pointer_size     => "64",
     },
     "vms-ia64" => {
-        inherit_from     => [ "vms-generic",
-                              sub { vms_info()->{AS}
-                                        ? asm("ia64_asm")->() : () } ],
+        inherit_from     => [ "vms-generic" ],
         bn_ops           => "SIXTY_FOUR_BIT RC4_INT",
+        asm_arch         => sub { vms_info()->{AS} ? 'ia64' : undef },
+        perlasm_scheme   => 'ias',
         pointer_size     => "",
 
-        modes_asm_src    => "", # Because ghash-ia64.s doesn't work on VMS
     },
     "vms-ia64-p32" => {
         inherit_from     => [ "vms-ia64" ],
index 7b496a4..69c3693 100644 (file)
@@ -199,18 +199,22 @@ my %targets = (
         # -march and/or -mfloat-abi flags. NDK defaults to armv5te.
         # Newer NDK versions reportedly require additional -latomic.
         #
-        inherit_from     => [ "android", asm("armv4_asm") ],
+        inherit_from     => [ "android" ],
         bn_ops           => add("RC4_CHAR"),
+        asm_arch         => 'armv4',
+        perlasm_scheme   => "void",
     },
     "android-arm64" => {
-        inherit_from     => [ "android", asm("aarch64_asm") ],
+        inherit_from     => [ "android" ],
         bn_ops           => add("RC4_CHAR"),
+        asm_arch         => 'aarch64',
         perlasm_scheme   => "linux64",
     },
 
     "android-mips" => {
-        inherit_from     => [ "android", asm("mips32_asm") ],
+        inherit_from     => [ "android" ],
         bn_ops           => add("RC4_CHAR"),
+        asm_arch         => 'mips32',
         perlasm_scheme   => "o32",
     },
     "android-mips64" => {
@@ -223,20 +227,23 @@ my %targets = (
         # with previous MIPS ISA versions, in sense that unlike
         # prior versions original MIPS binary code will fail.
         #
-        inherit_from     => [ "android", asm("mips64_asm") ],
+        inherit_from     => [ "android" ],
         bn_ops           => add("RC4_CHAR"),
+        asm_arch         => 'mips64',
         perlasm_scheme   => "64",
     },
 
     "android-x86" => {
-        inherit_from     => [ "android", asm("x86_asm") ],
+        inherit_from     => [ "android" ],
         CFLAGS           => add(picker(release => "-fomit-frame-pointer")),
         bn_ops           => add("RC4_INT"),
+        asm_arch         => 'x86',
         perlasm_scheme   => "android",
     },
     "android-x86_64" => {
-        inherit_from     => [ "android", asm("x86_64_asm") ],
+        inherit_from     => [ "android" ],
         bn_ops           => add("RC4_INT"),
+        asm_arch         => 'x86_64',
         perlasm_scheme   => "elf",
     },
 
index 1bb9f48..4b5aeec 100644 (file)
@@ -1,6 +1,6 @@
 #### iPhoneOS/iOS
 #
-# It takes recent enough XCode to use following two targets. It shouldn't
+# It takes recent enough Xcode to use following two targets. It shouldn't
 # be a problem by now, but if they don't work, original targets below
 # that depend on manual definition of environment variables should still
 # work...
@@ -13,19 +13,21 @@ my %targets = (
         disable          => [ "engine", "async" ],
     },
     "ios-xcrun" => {
-        inherit_from     => [ "ios-common", asm("armv4_asm") ],
+        inherit_from     => [ "ios-common" ],
         # It should be possible to go below iOS 6 and even add -arch armv6,
         # thus targeting iPhone pre-3GS, but it's assumed to be irrelevant
         # at this point.
         CC               => "xcrun -sdk iphoneos cc",
         cflags           => add("-arch armv7 -mios-version-min=6.0.0 -fno-common"),
+        asm_arch         => 'armv4',
         perlasm_scheme   => "ios32",
     },
     "ios64-xcrun" => {
-        inherit_from     => [ "ios-common", asm("aarch64_asm") ],
+        inherit_from     => [ "ios-common" ],
         CC               => "xcrun -sdk iphoneos cc",
         cflags           => add("-arch arm64 -mios-version-min=7.0.0 -fno-common"),
         bn_ops           => "SIXTY_FOUR_BIT_LONG RC4_CHAR",
+        asm_arch         => 'aarch64',
         perlasm_scheme   => "ios64",
     },
     "iossimulator-xcrun" => {
index a8853a8..1688892 100644 (file)
@@ -4,7 +4,6 @@
 
 my %targets = (
     "DJGPP" => {
-        inherit_from     => [ asm("x86_asm") ],
         CC               => "gcc",
         CFLAGS           => "-fomit-frame-pointer -O2 -Wall",
         cflags           => "-I/dev/env/WATT_ROOT/inc -DTERMIOS -DL_ENDIAN",
@@ -12,6 +11,7 @@ my %targets = (
         lflags           => add("-L/dev/env/WATT_ROOT/lib"),
         ex_libs          => add("-lwatt"),
         bn_ops           => "BN_LLONG",
+        asm_arch         => 'x86',
         perlasm_scheme   => "a.out",
     },
 );
index 5bc4db5..d37ab83 100644 (file)
@@ -18,9 +18,11 @@ my %targets = (
         perl_platform    => 'Unix',
     },
     "haiku-x86" => {
-        inherit_from     => [ "haiku-common", asm("x86_elf_asm") ],
+        inherit_from     => [ "haiku-common" ],
         CFLAGS           => add(picker(release => "-fomit-frame-pointer")),
         bn_ops           => "BN_LLONG",
+        asm_arch         => 'x86',
+        perlasm_scheme   => 'elf',
     },
     "haiku-x86_64" => {
         inherit_from     => [ "haiku-common" ],
index 2c55ddd..587a1e7 100644 (file)
@@ -9,15 +9,14 @@
 
 my %targets = (
     "VC-WIN64A-masm" => {
-        inherit_from    => [ "VC-WIN64-common", asm("x86_64_asm"),
-                             sub { $disabled{shared} ? () : "x86_64_uplink" } ],
+        inherit_from    => [ "VC-WIN64-common" ],
         AS              => "ml64",
         ASFLAGS         => "/nologo /Zi",
         asoutflag       => "/Fo",
         asflags         => "/c /Cp /Cx",
         sys_id          => "WIN64A",
-        bn_asm_src      => sub { return undef unless @_;
-                                 my $r=join(" ",@_); $r=~s|asm/x86_64-gcc|bn_asm|; $r; },
+        uplink_arch      => 'x86_64',
+        asm_arch         => 'x86_64',
         perlasm_scheme   => "masm",
     },
 );
index 51cb381..1e5d970 100644 (file)
@@ -1,6 +1,7 @@
+## -*- mode: perl; -*-
 # Windows OneCore targets.
 #
-# OneCore is new API stability "contract" that transends Desktop, IoT and
+# OneCore is new API stability "contract" that transcends Desktop, IoT and
 # Mobile[?] Windows editions. It's a set up "umbrella" libraries that
 # export subset of Win32 API that are common to all Windows 10 devices.
 #
 # TODO: extend error handling to use ETW based eventing
 # (Or rework whole error messaging)
 
+my $UWP_info = {};
+sub UWP_info {
+    unless (%$UWP_info) {
+        my $SDKver = `powershell -Command  \"& {\$(Get-Item \\\"hklm:\\SOFTWARE\\WOW6432Node\\Microsoft\\Microsoft SDKs\\Windows\\\").GetValue(\\\"CurrentVersion\\\")}\"`;
+        $SDKver =~ s|\R$||;
+        my @SDKver_split = split(/\./, $SDKver);
+        # SDK version older than 10.0.17763 don't support our ASM builds
+        if ($SDKver_split[0] < 10
+            || ($SDKver_split[0] == 10
+                && $SDKver_split[1] == 0
+                && $SDKver_split[2] < 17763)) {
+            $UWP_info->{disable} = [ 'asm' ];
+        } else {
+            $UWP_info->{disable} = [ ];
+        }
+    }
+    return $UWP_info;
+}
+
 my %targets = (
     "VC-WIN32-ONECORE" => {
         inherit_from    => [ "VC-WIN32" ],
@@ -47,7 +67,7 @@ my %targets = (
         inherit_from    => [ "VC-noCE-common" ],
         defines         => add("_ARM_WINAPI_PARTITION_DESKTOP_SDK_AVAILABLE",
                                "OPENSSL_SYS_WIN_CORE"),
-        bn_ops          => "BN_LLONG RC4_CHAR EXPORT_VAR_AS_FN",
+        bn_ops          => "BN_LLONG RC4_CHAR",
         lflags          => add("/NODEFAULTLIB:kernel32.lib"),
         ex_libs         => "onecore.lib",
         multilib        => "-arm",
@@ -56,9 +76,62 @@ my %targets = (
         inherit_from    => [ "VC-noCE-common" ],
         defines         => add("_ARM_WINAPI_PARTITION_DESKTOP_SDK_AVAILABLE",
                                "OPENSSL_SYS_WIN_CORE"),
-        bn_ops          => "SIXTY_FOUR_BIT RC4_CHAR EXPORT_VAR_AS_FN",
+        bn_ops          => "SIXTY_FOUR_BIT RC4_CHAR",
         lflags          => add("/NODEFAULTLIB:kernel32.lib"),
         ex_libs         => "onecore.lib",
         multilib        => "-arm64",
     },
+
+    # Universal Windows Platform (UWP) App Support
+
+    # TODO
+    #
+    # The 'disable' attribute should have 'uplink'.
+    # however, these are checked in some 'inherit_from', which is processed
+    # very early, before the 'disable' attributes are seen.
+    # This is a problem that needs to be resolved in Configure first.
+    #
+    # But if you want to build library with Windows 10 Version 1809 SDK or
+    # earlier, the 'disable' attribute should also have 'asm'.
+
+    "VC-WIN32-UWP" => {
+        inherit_from    => [ "VC-WIN32-ONECORE" ],
+        lflags          => add("/APPCONTAINER"),
+        defines         => add("WINAPI_FAMILY=WINAPI_FAMILY_APP",
+                               "_WIN32_WINNT=0x0A00"),
+        dso_scheme      => "",
+        disable         => sub { [ 'ui-console', 'stdio', 'async', 'uplink',
+                                   @{ UWP_info()->{disable} } ] },
+        ex_libs         => "WindowsApp.lib",
+    },
+     "VC-WIN64A-UWP" => {
+        inherit_from    => [ "VC-WIN64A-ONECORE" ],
+        lflags          => add("/APPCONTAINER"),
+        defines         => add("WINAPI_FAMILY=WINAPI_FAMILY_APP",
+                               "_WIN32_WINNT=0x0A00"),
+        dso_scheme      => "",
+        disable         => sub { [ 'ui-console', 'stdio', 'async', 'uplink',
+                                   @{ UWP_info()->{disable} } ] },
+        ex_libs         => "WindowsApp.lib",
+    },
+    "VC-WIN32-ARM-UWP" => {
+        inherit_from    => [ "VC-WIN32-ARM" ],
+        lflags          => add("/APPCONTAINER"),
+        defines         => add("WINAPI_FAMILY=WINAPI_FAMILY_APP",
+                               "_WIN32_WINNT=0x0A00"),
+        dso_scheme      => "",
+        disable         => sub { [ 'ui-console', 'stdio', 'async', 'uplink',
+                                   @{ UWP_info()->{disable} } ] },
+        ex_libs         => "WindowsApp.lib",
+    },
+     "VC-WIN64-ARM-UWP" => {
+        inherit_from    => [ "VC-WIN64-ARM" ],
+        lflags          => add("/APPCONTAINER"),
+        defines         => add("WINAPI_FAMILY=WINAPI_FAMILY_APP",
+                               "_WIN32_WINNT=0x0A00"),
+        dso_scheme      => "",
+        disable         => sub { [ 'ui-console', 'stdio', 'async', 'uplink',
+                                   @{ UWP_info()->{disable} } ] },
+        ex_libs         => "WindowsApp.lib",
+    },
 );
index 77dad97..8ad05a6 100644 (file)
@@ -18,12 +18,13 @@ my %targets = (
     "debug-erbridge" => {
         inherit_from     => [ 'BASE_unix', "x86_64_asm" ],
         cc               => "gcc",
-        cflags           => combine(join(' ', @{$gcc_devteam_warn{CFLAGS}}),
+        cflags           => combine(join(' ', @gcc_devteam_warn),
                                     "-DBN_DEBUG -DCONF_DEBUG -m64 -DL_ENDIAN -DTERMIO -g",
                                     threads("-D_REENTRANT")),
         ex_libs          => add(" ","-ldl"),
         bn_ops           => "SIXTY_FOUR_BIT_LONG",
         thread_scheme    => "pthreads",
+        asm_arch         => 'x86_64',
         perlasm_scheme   => "elf",
         dso_scheme       => "dlfcn",
         shared_target    => "linux-shared",
@@ -38,6 +39,8 @@ my %targets = (
                                     threads("-D_REENTRANT")),
         ex_libs          => add(" ","-ldl"),
         bn_ops           => "BN_LLONG",
+        asm_arch         => 'x86',
+        perlasm_scheme   => 'elf',
         thread_scheme    => "pthreads",
         dso_scheme       => "dlfcn",
     },
@@ -48,44 +51,20 @@ my %targets = (
                                     threads("-D_REENTRANT")),
         ex_libs          => add(" ","-ldl"),
         bn_ops           => "BN_LLONG",
+        asm_arch         => 'x86',
+        perlasm_scheme   => 'elf',
         thread_scheme    => "pthreads",
         dso_scheme       => "dlfcn",
     },
-    "debug-linux-ia32-aes" => {
-        inherit_from     => [ 'BASE_unix' ],
-        cc               => "gcc",
-        cflags           => combine("-DL_ENDIAN -O3 -fomit-frame-pointer -Wall",
-                                    threads("-D_REENTRANT")),
-        ex_libs          => add(" ","-ldl"),
-        bn_ops           => "BN_LLONG",
-        cpuid_asm_src    => "x86cpuid.s",
-        bn_asm_src       => "bn-586.s co-586.s x86-mont.s",
-        des_asm_src      => "des-586.s crypt586.s",
-        aes_asm_src      => "aes_x86core.s aes_cbc.s aesni-x86.s",
-        bf_asm_src       => "bf-586.s",
-        md5_asm_src      => "md5-586.s",
-        sha1_asm_src     => "sha1-586.s sha256-586.s sha512-586.s",
-        cast_asm_src     => "cast-586.s",
-        rc4_asm_src      => "rc4-586.s",
-        rmd160_asm_src   => "rmd-586.s",
-        rc5_asm_src      => "rc5-586.s",
-        wp_asm_src       => "wp_block.s wp-mmx.s",
-        modes_asm_src    => "ghash-x86.s",
-        padlock_asm_src  => "e_padlock-x86.s",
-        thread_scheme    => "pthreads",
-        perlasm_scheme   => "elf",
-        dso_scheme       => "dlfcn",
-        shared_target    => "linux-shared",
-        shared_cflag     => "-fPIC",
-    },
     "debug-test-64-clang" => {
         inherit_from     => [ 'BASE_unix', "x86_64_asm" ],
         cc               => "clang",
-        cflags           => combine(join(' ', @{$gcc_devteam_warn{CFLAGS}}),
-                                    "-Wno-error=overlength-strings -Wno-error=extended-offsetof -Wno-error=language-extension-token -Wno-error=unused-const-variable -Wstrict-overflow -Qunused-arguments -DBN_DEBUG -DCONF_DEBUG -DDEBUG_SAFESTACK -DDEBUG_UNUSED -g3 -O3 -pipe",
+        cflags           => combine(join(' ', @gcc_devteam_warn),
+                                    "-Wno-error=overlength-strings -Wno-error=extended-offsetof -Wno-error=language-extension-token -Wno-error=unused-const-variable -Wstrict-overflow -Qunused-arguments -DBN_DEBUG -DCONF_DEBUG -DDEBUG_UNUSED -g3 -O3 -pipe",
                                     threads("${BSDthreads}")),
         bn_ops           => "SIXTY_FOUR_BIT_LONG",
         thread_scheme    => "pthreads",
+        asm_arch         => 'x86_64',
         perlasm_scheme   => "elf",
         dso_scheme       => "dlfcn",
         shared_target    => "bsd-gcc-shared",
@@ -95,12 +74,13 @@ my %targets = (
         inherit_from     => [ 'BASE_unix', "x86_64_asm" ],
         cc               => "clang",
         cflags           => combine("-arch x86_64 -DL_ENDIAN",
-                                    join(' ', @{$gcc_devteam_warn{CFLAGS}}),
-                                    "-Wno-error=overlength-strings -Wno-error=extended-offsetof -Wno-error=language-extension-token -Wno-error=unused-const-variable -Wstrict-overflow -Qunused-arguments -DBN_DEBUG -DCONF_DEBUG -DDEBUG_SAFESTACK -DDEBUG_UNUSED -g3 -O3 -pipe",
+                                    join(' ', @gcc_devteam_warn),
+                                    "-Wno-error=overlength-strings -Wno-error=extended-offsetof -Wno-error=language-extension-token -Wno-error=unused-const-variable -Wstrict-overflow -Qunused-arguments -DBN_DEBUG -DCONF_DEBUG -DDEBUG_UNUSED -g3 -O3 -pipe",
                                     threads("${BSDthreads}")),
         sys_id           => "MACOSX",
         bn_ops           => "SIXTY_FOUR_BIT_LONG",
         thread_scheme    => "pthreads",
+        asm_arch         => 'x86_64',
         perlasm_scheme   => "macosx",
         dso_scheme       => "dlfcn",
         shared_target    => "darwin-shared",
index 8efabb3..a0618ca 100644 (file)
@@ -165,6 +165,13 @@ In each table entry, the following keys are significant:
                            that use dlopen() et al but do not have
                            fcntl.h), "DL" (shl_load() et al), "WIN32"
                            and "VMS".
+        asm_arch        => The architecture to be used for compiling assembly
+                           source.  This acts as a selector in build.info files.
+        uplink_arch     => The architecture to be used for compiling uplink
+                           source.  This acts as a selector in build.info files.
+                           This is separate from asm_arch because it's compiled
+                           even when 'no-asm' is given, even though it contains
+                           assembler source.
         perlasm_scheme  => The perlasm method used to create the
                            assembler files used when compiling with
                            assembler implementations.
@@ -229,63 +236,6 @@ In each table entry, the following keys are significant:
                                                 up of 'unsigned char's;
                            RC4_INT              RC4 key schedule is made
                                                 up of 'unsigned int's;
-                           EXPORT_VAR_AS_FN     for shared libraries,
-                                                export vars as
-                                                accessor functions.
-
-        apps_aux_src    => Extra source to build apps/openssl and other
-                           apps, as needed by the target and that can be
-                           collected in a library.
-        apps_init_src   => Init source to build apps/openssl and other
-                           apps, as needed by the target.  This code
-                           cannot be placed in a library, as the rest
-                           of the code isn't expected to link to it
-                           explicitly.
-        cpuid_asm_src   => assembler implementation of cpuid code as
-                           well as OPENSSL_cleanse().
-                           Default to mem_clr.c
-        bn_asm_src      => Assembler implementation of core bignum
-                           functions.
-                           Defaults to bn_asm.c
-        ec_asm_src      => Assembler implementation of core EC
-                           functions.
-        des_asm_src     => Assembler implementation of core DES
-                           encryption functions.
-                           Defaults to 'des_enc.c fcrypt_b.c'
-        aes_asm_src     => Assembler implementation of core AES
-                           functions.
-                           Defaults to 'aes_core.c aes_cbc.c'
-        bf_asm_src      => Assembler implementation of core BlowFish
-                           functions.
-                           Defaults to 'bf_enc.c'
-        md5_asm_src     => Assembler implementation of core MD5
-                           functions.
-        sha1_asm_src    => Assembler implementation of core SHA1,
-                           functions, and also possibly SHA256 and
-                           SHA512 ones.
-        cast_asm_src    => Assembler implementation of core CAST
-                           functions.
-                           Defaults to 'c_enc.c'
-        rc4_asm_src     => Assembler implementation of core RC4
-                           functions.
-                           Defaults to 'rc4_enc.c rc4_skey.c'
-        rmd160_asm_src  => Assembler implementation of core RMD160
-                           functions.
-        rc5_asm_src     => Assembler implementation of core RC5
-                           functions.
-                           Defaults to 'rc5_enc.c'
-        wp_asm_src      => Assembler implementation of core WHIRLPOOL
-                           functions.
-        cmll_asm_src    => Assembler implementation of core CAMELLIA
-                           functions.
-                           Defaults to 'camellia.c cmll_misc.c cmll_cbc.c'
-        modes_asm_src   => Assembler implementation of cipher modes,
-                           currently the functions gcm_gmult_4bit and
-                           gcm_ghash_4bit.
-        padlock_asm_src => Assembler implementation of core parts of
-                           the padlock engine.  This is mandatory on
-                           any platform where the padlock engine might
-                           actually be built.
 
 
 [1] as part of the target configuration, one can have a key called
index 03acb3e..852b1fb 100644 (file)
@@ -22,7 +22,7 @@
  our @generated =
      sort ( ( grep { defined $unified_info{generate}->{$_} }
               sort keys %generatables ),
-            # Scripts are assumed to be generated, so add thhem too
+            # Scripts are assumed to be generated, so add them too
             ( grep { defined $unified_info{sources}->{$_} }
               @{$unified_info{scripts}} ) );
 
index f441c15..c6f0e8d 100644 (file)
@@ -12,6 +12,7 @@ require platform::Unix;
 # Assume someone set @INC right before loading this module
 use configdata;
 
+sub dsoext              { '.so' }
 sub shlibextsimple      { '.a' }
 
 # In shared mode, the default static library names clashes with the final
index ca8d6bb..bb93d38 100644 (file)
@@ -13,7 +13,8 @@ require platform::BASE;
 use configdata;
 
 sub binext              { $target{exe_extension} || '' }
-sub dsoext              { $target{dso_extension} || '.so' }
+sub dsoext              { $target{dso_extension} || platform->shlibextsimple()
+                              || '.so' }
 # Because these are also used in scripts and not just Makefile, we must
 # convert $(SHLIB_VERSION_NUMBER) to the actual number.
 sub shlibext            { (my $x = $target{shared_extension}
index 83f28bd..f942078 100644 (file)
@@ -33,9 +33,10 @@ my %shared_info;
             %{$shared_info{'gnu-shared'}},
             shared_defflag    => '-Wl,--version-script=',
             dso_ldflags       =>
-                $disabled{asan} && $disabled{msan} && $disabled{ubsan}
-                ? '-z defs'
-                : '',
+                (grep /(?:^|\s)-fsanitize/,
+                 @{$config{CFLAGS}}, @{$config{cflags}})
+                ? ''
+                : '-z defs',
         };
     },
     'bsd-gcc-shared' => sub { return $shared_info{'linux-shared'}; },
index 2561c47..45f53cc 100644 (file)
@@ -391,13 +391,13 @@ libclean:
 clean: libclean
        $(RM) $(PROGRAMS) $(TESTPROGS) $(MODULES) $(SCRIPTS)
        $(RM) $(GENERATED_MANDATORY) $(GENERATED)
-       -$(RM) `find . -name .git -prune -o -name '*{- platform->depext() -}' -print`
-       -$(RM) `find . -name .git -prune -o -name '*{- platform->objext() -}' -print`
+       -$(RM) `find . -name '*{- platform->depext() -}' \! -name '.*' -print`
+       -$(RM) `find . -name '*{- platform->objext() -}' \! -name '.*' -print`
        $(RM) core
        $(RM) tags TAGS doc-nits
        $(RM) -r test/test-runs
        $(RM) openssl.pc libcrypto.pc libssl.pc
-       -$(RM) `find . -name .git -prune -o -type l -print`
+       -$(RM) `find . -type l \! -name '.*' -print`
        $(RM) $(TARFILE)
 
 distclean: clean
@@ -422,7 +422,7 @@ uninstall_sw: uninstall_runtime uninstall_engines uninstall_dev
 install_docs: install_man_docs install_html_docs
 
 uninstall_docs: uninstall_man_docs uninstall_html_docs
-       $(RM) -r -v $(DESTDIR)$(DOCDIR)
+       $(RM) -r $(DESTDIR)$(DOCDIR)
 
 install_ssldirs:
        @$(PERL) $(SRCDIR)/util/mkdir-p.pl $(DESTDIR)$(OPENSSLDIR)/certs
@@ -728,7 +728,7 @@ generate: generate_apps generate_crypto_bn generate_crypto_objects \
 
 .PHONY: doc-nits
 doc-nits: build_generated
-       (cd $(SRCDIR); $(PERL) util/find-doc-nits -n -p ) >doc-nits
+       (cd $(SRCDIR); $(PERL) util/find-doc-nits -n -p -s ) >doc-nits
        @if [ -s doc-nits ] ; then cat doc-nits ; exit 1; \
        else echo 'doc-nits: no errors.'; rm doc-nits ; fi
 
@@ -742,6 +742,12 @@ lint:
 generate_apps:
        ( cd $(SRCDIR); $(PERL) VMS/VMSify-conf.pl \
                                < apps/openssl.cnf > apps/openssl-vms.cnf )
+       @ : {- output_off() if $disabled{apps}; "" -}
+       ( b=`pwd`; cd $(SRCDIR); \
+         $(PERL) -I$$b apps/progs.pl -H $(APPS_OPENSSL) > apps/progs.h )
+       ( b=`pwd`; cd $(SRCDIR); \
+         $(PERL) -I$$b apps/progs.pl -C $(APPS_OPENSSL) > apps/progs.c )
+       @ : {- output_on() if $disabled{apps}; "" -}
 
 generate_crypto_bn:
        ( cd $(SRCDIR); $(PERL) crypto/bn/bn_prime.pl > crypto/bn/bn_prime.h )
@@ -804,7 +810,6 @@ errors:
    our @cryptoheaders =
        qw( include/internal/dso.h
            include/internal/o_dir.h
-           include/internal/o_str.h
            include/internal/err.h
            include/internal/sslconf.h );
    our @cryptoskipheaders = ( @sslheaders,
index a1daf7d..3c8d51b 100644 (file)
@@ -206,6 +206,7 @@ AS={- $config{AS} -}
 ASFLAGS={- join(' ', @{$config{ASFLAGS}}) -}
 
 RC={- $config{RC} -}
+RCFLAGS={- join(' ', @{$config{RCFLAGS}}) -}
 
 ECHO="$(PERL)" "$(SRCDIR)\util\echo.pl"
 
@@ -286,7 +287,17 @@ DSO_ASFLAGS={- join(' ', $target{dso_asflags} || (),
                          @{$config{module_asflags}},
                          '$(CNF_ASFLAGS)', '$(ASFLAGS)') -}
 DSO_CPPFLAGS={- join(' ', $target{dso_cppflags} || (),
-                          $target{module_cppflags} || (),
+                          $target{module_cppflag} || (),
+                          (map { '-D'.quotify1($_) }
+                               @{$target{dso_defines}},
+                               @{$target{module_defines}},
+                               @{$config{dso_defines}},
+                               @{$config{module_defines}}),
+                          (map { '-I'.quotify1($_) }
+                               @{$target{dso_includes}},
+                               @{$target{module_includes}},
+                               @{$config{dso_includes}},
+                               @{$config{module_includes}}),
                           @{$config{dso_cppflags}},
                           @{$config{module_cppflags}},
                           '$(CNF_CPPFLAGS)', '$(CPPFLAGS)') -}
@@ -538,7 +549,7 @@ reconfigure reconf:
               $args{generator}->[1] || platform->dsoname($args{product});
           return <<"EOF";
 $target: $args{generator}->[0] $deps $mkdef
-       \$(PERL) $mkdef$ord_ver --ordinals $args{generator}->[0] --name $ord_name --OS windows > $target
+       "\$(PERL)" $mkdef$ord_ver --ordinals $args{generator}->[0] --name $ord_name --OS windows > $target
 EOF
       } elsif (!platform->isasm($args{src})) {
           my $target = $args{src};
@@ -630,7 +641,7 @@ EOF
          my $res = platform->res($args{obj});
          return <<"EOF";
 $res: $deps
-       \$(RC) \$(RCOUTFLAG)\$\@ $srcs
+       \$(RC) \$(RCFLAGS) \$(RCOUTFLAG)\$\@ $srcs
 EOF
      }
      my $obj = platform->obj($args{obj});
index 8b6d237..30f9e61 100755 (executable)
--- a/Configure
+++ b/Configure
@@ -64,6 +64,7 @@ my $usage="Usage: Configure [no-<cipher> ...] [enable-<cipher> ...] [-Dxxx] [-lx
 # zlib-dynamic  Like "zlib", but the zlib library is expected to be a shared
 #               library and will be loaded in run-time by the OpenSSL library.
 # sctp          include SCTP support
+# no-uplink     Don't build support for UPLINK interface.
 # enable-weak-ssl-ciphers
 #               Enable weak ciphers that are disabled by default.
 # 386           generate 80386 code in assembly modules
@@ -88,9 +89,6 @@ my $usage="Usage: Configure [no-<cipher> ...] [enable-<cipher> ...] [-Dxxx] [-lx
 #               linked openssl executable has rather debugging value than
 #               production quality.
 #
-# DEBUG_SAFESTACK use type-safe stacks to enforce type-safety on stack items
-#               provided to stack calls. Generates unique stack functions for
-#               each possible stack type.
 # BN_LLONG      use the type 'long long' in crypto/bn/bn.h
 # RC4_CHAR      use 'char' instead of 'int' for RC4_INT in crypto/rc4/rc4.h
 # Following are set automatically by this script
@@ -102,8 +100,9 @@ my $usage="Usage: Configure [no-<cipher> ...] [enable-<cipher> ...] [-Dxxx] [-lx
 # SHA512_ASM    sha512_block is implemented in assembler
 # AES_ASM       AES_[en|de]crypt is implemented in assembler
 
-# Minimum warning options... any contributions to OpenSSL should at least get
-# past these.
+# Minimum warning options... any contributions to OpenSSL should at least
+# get past these.  Note that we only use these with C compilers, not with
+# C++ compilers.
 
 # DEBUG_UNUSED enables __owur (warn unused result) checks.
 # -DPEDANTIC complements -pedantic and is meant to mask code that
@@ -118,27 +117,23 @@ my $usage="Usage: Configure [no-<cipher> ...] [enable-<cipher> ...] [-Dxxx] [-lx
 # code, so we just tell compiler to be pedantic about everything
 # but 'long long' type.
 
-my %gcc_devteam_warn = ();
-{
-    my @common = qw( -DDEBUG_UNUSED
-                     -DPEDANTIC -pedantic -Wno-long-long
-                     -Wall
-                     -Wextra
-                     -Wno-unused-parameter
-                     -Wno-missing-field-initializers
-                     -Wswitch
-                     -Wsign-compare
-                     -Wshadow
-                     -Wformat
-                     -Wtype-limits
-                     -Wundef
-                     -Werror );
-    %gcc_devteam_warn = (
-        CFLAGS          => [ @common, qw( -Wmissing-prototypes
-                                          -Wstrict-prototypes ) ],
-        CXXFLAGS        => [ @common ]
-    );
-}
+my @gcc_devteam_warn = qw(
+    -DDEBUG_UNUSED
+    -DPEDANTIC -pedantic -Wno-long-long
+    -Wall
+    -Wextra
+    -Wno-unused-parameter
+    -Wno-missing-field-initializers
+    -Wswitch
+    -Wsign-compare
+    -Wshadow
+    -Wformat
+    -Wtype-limits
+    -Wundef
+    -Werror
+    -Wmissing-prototypes
+    -Wstrict-prototypes
+);
 
 # These are used in addition to $gcc_devteam_warn when the compiler is clang.
 # TODO(openssl-team): fix problems and investigate if (at least) the
@@ -148,20 +143,16 @@ my %gcc_devteam_warn = ();
 #       -Wlanguage-extension-token -- no, we use asm()
 #       -Wunused-macros -- no, too tricky for BN and _XOPEN_SOURCE etc
 #       -Wextended-offsetof -- no, needed in CMS ASN1 code
-my %clang_devteam_warn = ();
-{
-    my @common = qw( -Wswitch-default
-                     -Wno-parentheses-equality
-                     -Wno-language-extension-token
-                     -Wno-extended-offsetof
-                     -Wconditional-uninitialized
-                     -Wincompatible-pointer-types-discards-qualifiers
-                     -Wno-unknown-warning-option );
-    %clang_devteam_warn = (
-        CFLAGS          => [ @common, qw( -Wmissing-variable-declarations ) ],
-        CXXFLAGS        => [ @common ]
-    );
-}
+my @clang_devteam_warn = qw(
+    -Wswitch-default
+    -Wno-parentheses-equality
+    -Wno-language-extension-token
+    -Wno-extended-offsetof
+    -Wconditional-uninitialized
+    -Wincompatible-pointer-types-discards-qualifiers
+    -Wno-unknown-warning-option
+    -Wmissing-variable-declarations
+);
 
 # This adds backtrace information to the memory leak info.  Is only used
 # when crypto-mdebug-backtrace is enabled.
@@ -345,9 +336,9 @@ my @disablables = (
     "cast",
     "chacha",
     "cmac",
+    "cmp",
     "cms",
     "comp",
-    "crmf",
     "crypto-mdebug",
     "crypto-mdebug-backtrace",
     "ct",
@@ -422,6 +413,7 @@ my @disablables = (
     "ubsan",
     "ui-console",
     "unit-test",
+    "uplink",
     "whirlpool",
     "weak-ssl-ciphers",
     "zlib",
@@ -433,6 +425,14 @@ foreach my $proto ((@tls, @dtls))
         push(@disablables, "$proto-method") unless $proto eq "tls1_3";
         }
 
+# Internal disablables, for aliasing purposes.  They serve no special
+# purpose here, but allow scripts to get to know them through configdata.pm,
+# where these are merged with @disablables.
+# The actual aliasing mechanism is done via %disable_cascades
+my @disablables_int = qw(
+    crmf
+    );
+
 my %deprecated_disablables = (
     "ssl2" => undef,
     "buf-freelists" => undef,
@@ -482,8 +482,9 @@ my @disable_cascades = (
     "ssl3-method"       => [ "ssl3" ],
     "zlib"              => [ "zlib-dynamic" ],
     "des"               => [ "mdc2" ],
-    "ec"                => [ "ecdsa", "ecdh" ],
-
+    "ec"                => [ "ecdsa", "ecdh", "sm2" ],
+    sub { $disabled{"ec"} && $disabled{"dh"} }
+                        => [ "tls1_3" ],
     "dgram"             => [ "dtls", "sctp" ],
     "sock"              => [ "dgram" ],
     "dtls"              => [ @dtls ],
@@ -506,7 +507,7 @@ my @disable_cascades = (
     # which cannot be guaranteed if shared libraries aren't present.
     # (note that even with shared libraries, both the app and dynamic engines
     # must be linked with the same library)
-    "shared"            => [ "dynamic-engine" ],
+    "shared"            => [ "dynamic-engine", "uplink" ],
     # Other modules don't necessarily have to link with libcrypto, so shared
     # libraries do not have to be a condition to produce those.
 
@@ -526,7 +527,6 @@ my @disable_cascades = (
     "apps"              => [ "tests" ],
     "tests"             => [ "external-tests" ],
     "comp"              => [ "zlib" ],
-    "ec"                => [ "tls1_3", "sm2" ],
     "sm3"               => [ "sm2" ],
     sub { !$disabled{"unit-test"} } => [ "heartbeats" ],
 
@@ -534,6 +534,8 @@ my @disable_cascades = (
 
     sub { $disabled{cmac}; } => [ "siv" ],
     "legacy"                 => [ "md2" ],
+
+    "cmp"               => [ "crmf" ],
     );
 
 # Avoid protocol support holes.  Also disable all versions below N, if version
@@ -594,7 +596,7 @@ my %user = (
     PERL        => env('PERL') || ($^O ne "VMS" ? $^X : "perl"),
     RANLIB      => env('RANLIB'),
     RC          => env('RC') || env('WINDRES'),
-    RCFLAGS     => [],
+    RCFLAGS     => [ env('RCFLAGS') || () ],
     RM          => undef,
    );
 # Info about what "make variables" may be prefixed with the cross compiler
@@ -611,6 +613,7 @@ my %useradd = (
     CXXFLAGS    => [],
     LDFLAGS     => [],
     LDLIBS      => [],
+    RCFLAGS     => [],
    );
 
 my %user_synonyms = (
@@ -789,7 +792,6 @@ while (@argvcopy)
                 # Pretend that our strict flags is a C flag, and replace it
                 # with the proper flags later on
                 push @{$useradd{CFLAGS}}, '--ossl-strict-warnings';
-                push @{$useradd{CXXFLAGS}}, '--ossl-strict-warnings';
                 $strict_warnings=1;
                 }
         elsif (/^--debug$/)
@@ -1110,44 +1112,6 @@ foreach (keys %target_attr_translate) {
 
 %target = ( %{$table{DEFAULTS}}, %target );
 
-# Make the flags to build DSOs the same as for shared libraries unless they
-# are already defined
-$target{module_cflags} = $target{shared_cflag} unless defined $target{module_cflags};
-$target{module_cxxflags} = $target{shared_cxxflag} unless defined $target{module_cxxflags};
-$target{module_ldflags} = $target{shared_ldflag} unless defined $target{module_ldflags};
-{
-    my $shared_info_pl =
-        catfile(dirname($0), "Configurations", "shared-info.pl");
-    my %shared_info = read_eval_file($shared_info_pl);
-    push @{$target{_conf_fname_int}}, $shared_info_pl;
-    my $si = $target{shared_target};
-    while (ref $si ne "HASH") {
-        last if ! defined $si;
-        if (ref $si eq "CODE") {
-            $si = $si->();
-        } else {
-            $si = $shared_info{$si};
-        }
-    }
-
-    # Some of the 'shared_target' values don't have any entried in
-    # %shared_info.  That's perfectly fine, AS LONG AS the build file
-    # template knows how to handle this.  That is currently the case for
-    # Windows and VMS.
-    if (defined $si) {
-        # Just as above, copy certain shared_* attributes to the corresponding
-        # module_ attribute unless the latter is already defined
-        $si->{module_cflags} = $si->{shared_cflag} unless defined $si->{module_cflags};
-        $si->{module_cxxflags} = $si->{shared_cxxflag} unless defined $si->{module_cxxflags};
-        $si->{module_ldflags} = $si->{shared_ldflag} unless defined $si->{module_ldflags};
-        foreach (sort keys %$si) {
-            $target{$_} = defined $target{$_}
-                ? add($si->{$_})->($target{$_})
-                : $si->{$_};
-        }
-    }
-}
-
 my %conf_files = map { $_ => 1 } (@{$target{_conf_fname_int}});
 $config{conf_files} = [ sort keys %conf_files ];
 
@@ -1171,6 +1135,12 @@ foreach my $feature (@{$target{enable}}) {
         delete $disabled{$feature};
     }
 }
+
+# If uplink_arch isn't defined, disable uplink
+$disabled{uplink} = 'no uplink_arch' unless (defined $target{uplink_arch});
+# If asm_arch isn't defined, disable asm
+$disabled{asm} = 'no asm_arch' unless (defined $target{asm_arch});
+
 disable();                      # Run a cascade now
 
 $target{CXXFLAGS}//=$target{CFLAGS} if $target{CXX};
@@ -1390,20 +1360,16 @@ if ($disabled{"dynamic-engine"}) {
 
 unless ($disabled{asan} || defined $detected_sanitizers{asan}) {
     push @{$config{cflags}}, "-fsanitize=address";
-    push @{$config{cxxflags}}, "-fsanitize=address" if $config{CXX};
 }
 
 unless ($disabled{ubsan} || defined $detected_sanitizers{ubsan}) {
     # -DPEDANTIC or -fnosanitize=alignment may also be required on some
     # platforms.
     push @{$config{cflags}}, "-fsanitize=undefined", "-fno-sanitize-recover=all";
-    push @{$config{cxxflags}}, "-fsanitize=undefined", "-fno-sanitize-recover=all"
-        if $config{CXX};
 }
 
 unless ($disabled{msan} || defined $detected_sanitizers{msan}) {
   push @{$config{cflags}}, "-fsanitize=memory";
-  push @{$config{cxxflags}}, "-fsanitize=memory" if $config{CXX};
 }
 
 unless ($disabled{"fuzz-libfuzzer"} && $disabled{"fuzz-afl"}
@@ -1438,71 +1404,6 @@ if ($target{sys_id} ne "")
         }
 
 unless ($disabled{asm}) {
-    $target{cpuid_asm_src}=$table{DEFAULTS}->{cpuid_asm_src} if ($config{processor} eq "386");
-    push @{$config{lib_defines}}, "OPENSSL_CPUID_OBJ" if ($target{cpuid_asm_src} ne "mem_clr.c");
-
-    $target{bn_asm_src} =~ s/\w+-gf2m.c// if (defined($disabled{ec2m}));
-
-    # bn-586 is the only one implementing bn_*_part_words
-    push @{$config{lib_defines}}, "OPENSSL_BN_ASM_PART_WORDS" if ($target{bn_asm_src} =~ /bn-586/);
-    push @{$config{lib_defines}}, "OPENSSL_IA32_SSE2" if (!$disabled{sse2} && $target{bn_asm_src} =~ /86/);
-
-    push @{$config{lib_defines}}, "OPENSSL_BN_ASM_MONT" if ($target{bn_asm_src} =~ /-mont/);
-    push @{$config{lib_defines}}, "OPENSSL_BN_ASM_MONT5" if ($target{bn_asm_src} =~ /-mont5/);
-    push @{$config{lib_defines}}, "OPENSSL_BN_ASM_GF2m" if ($target{bn_asm_src} =~ /-gf2m/);
-    push @{$config{lib_defines}}, "BN_DIV3W" if ($target{bn_asm_src} =~ /-div3w/);
-
-    if ($target{sha1_asm_src}) {
-        push @{$config{lib_defines}}, "SHA1_ASM"   if ($target{sha1_asm_src} =~ /sx86/ || $target{sha1_asm_src} =~ /sha1/);
-        push @{$config{lib_defines}}, "SHA256_ASM" if ($target{sha1_asm_src} =~ /sha256/);
-        push @{$config{lib_defines}}, "SHA512_ASM" if ($target{sha1_asm_src} =~ /sha512/);
-    }
-    if ($target{keccak1600_asm_src} ne $table{DEFAULTS}->{keccak1600_asm_src}) {
-        push @{$config{lib_defines}}, "KECCAK1600_ASM";
-    }
-    if ($target{rc4_asm_src} ne $table{DEFAULTS}->{rc4_asm_src}) {
-        push @{$config{lib_defines}}, "RC4_ASM";
-    }
-    if ($target{md5_asm_src}) {
-        push @{$config{lib_defines}}, "MD5_ASM";
-    }
-    $target{cast_asm_src}=$table{DEFAULTS}->{cast_asm_src} unless $disabled{pic}; # CAST assembler is not PIC
-    if ($target{rmd160_asm_src}) {
-        push @{$config{lib_defines}}, "RMD160_ASM";
-    }
-    if ($target{aes_asm_src}) {
-        push @{$config{lib_defines}}, "AES_ASM" if ($target{aes_asm_src} =~ m/\baes-/);;
-        # aes-ctr.fake is not a real file, only indication that assembler
-        # module implements AES_ctr32_encrypt...
-        push @{$config{lib_defines}}, "AES_CTR_ASM" if ($target{aes_asm_src} =~ s/\s*aes-ctr\.fake//);
-        # aes-xts.fake indicates presence of AES_xts_[en|de]crypt...
-        push @{$config{lib_defines}}, "AES_XTS_ASM" if ($target{aes_asm_src} =~ s/\s*aes-xts\.fake//);
-        $target{aes_asm_src} =~ s/\s*(vpaes|aesni)-x86\.s//g if ($disabled{sse2});
-        push @{$config{lib_defines}}, "VPAES_ASM" if ($target{aes_asm_src} =~ m/vpaes/);
-        push @{$config{lib_defines}}, "BSAES_ASM" if ($target{aes_asm_src} =~ m/bsaes/);
-    }
-    if ($target{wp_asm_src} =~ /mmx/) {
-        if ($config{processor} eq "386") {
-            $target{wp_asm_src}=$table{DEFAULTS}->{wp_asm_src};
-        } elsif (!$disabled{"whirlpool"}) {
-            push @{$config{lib_defines}}, "WHIRLPOOL_ASM";
-        }
-    }
-    if ($target{modes_asm_src} =~ /ghash-/) {
-        push @{$config{lib_defines}}, "GHASH_ASM";
-    }
-    if ($target{ec_asm_src} =~ /ecp_nistz256/) {
-        push @{$config{lib_defines}}, "ECP_NISTZ256_ASM";
-    }
-    if ($target{ec_asm_src} =~ /x25519/) {
-        push @{$config{lib_defines}}, "X25519_ASM";
-    }
-    if ($target{padlock_asm_src} ne $table{DEFAULTS}->{padlock_asm_src}) {
-        push @{$config{dso_defines}}, "PADLOCK_ASM";
-    }
-    if ($target{poly1305_asm_src} ne "") {
-        push @{$config{lib_defines}}, "POLY1305_ASM";
-    }
 }
 
 my %predefined_C = compiler_predefined($config{CROSS_COMPILE}.$config{CC});
@@ -1555,7 +1456,6 @@ if (!$disabled{asm} && !$predefined_C{__MACH__} && $^O ne 'VMS') {
 # Deal with bn_ops ###################################################
 
 $config{bn_ll}                  =0;
-$config{export_var_as_fn}       =0;
 my $def_int="unsigned int";
 $config{rc4_int}                =$def_int;
 ($config{b64l},$config{b64},$config{b32})=(0,0,1);
@@ -1563,7 +1463,6 @@ $config{rc4_int}                =$def_int;
 my $count = 0;
 foreach (sort split(/\s+/,$target{bn_ops})) {
     $count++ if /SIXTY_FOUR_BIT|SIXTY_FOUR_BIT_LONG|THIRTY_TWO_BIT/;
-    $config{export_var_as_fn}=1                 if $_ eq 'EXPORT_VAR_AS_FN';
     $config{bn_ll}=1                            if $_ eq 'BN_LLONG';
     $config{rc4_int}="unsigned char"            if $_ eq 'RC4_CHAR';
     ($config{b64l},$config{b64},$config{b32})
@@ -1590,41 +1489,27 @@ $config{openssl_api_defines} = [
     "OPENSSL_MIN_API=".($apitable->{$config{api} // ""} // -1)
 ];
 
-my %strict_warnings_collection=( CFLAGS => [], CXXFLAGS => []);
+my @strict_warnings_collection=();
 if ($strict_warnings)
         {
         my $wopt;
         my $gccver = $predefined_C{__GNUC__} // -1;
-        my $gxxver = $predefined_CXX{__GNUC__} // -1;
 
         warn "WARNING --strict-warnings requires gcc[>=4] or gcc-alike"
             unless $gccver >= 4;
-        warn "WARNING --strict-warnings requires g++[>=4] or g++-alike"
-            unless $gxxver >= 4;
-        foreach (qw(CFLAGS CXXFLAGS))
-                {
-                push @{$strict_warnings_collection{$_}},
-                        @{$gcc_devteam_warn{$_}};
-                }
-        push @{$strict_warnings_collection{CFLAGS}},
-                @{$clang_devteam_warn{CFLAGS}}
-                        if (defined($predefined_C{__clang__}));
-        push @{$strict_warnings_collection{CXXFLAGS}},
-                @{$clang_devteam_warn{CXXFLAGS}}
-                        if (defined($predefined_CXX{__clang__}));
+        push @strict_warnings_collection, @gcc_devteam_warn;
+        push @strict_warnings_collection, @clang_devteam_warn
+            if (defined($predefined_C{__clang__}));
         }
 
 if (grep { $_ eq '-static' } @{$config{LDFLAGS}}) {
     disable('static', 'pic', 'threads');
 }
 
-foreach my $idx (qw(CFLAGS CXXFLAGS))
-        {
-        $config{$idx} = [ map { $_ eq '--ossl-strict-warnings'
-                                    ? @{$strict_warnings_collection{$idx}}
-                                : ( $_ ) }
-                          @{$config{$idx}} ];
-        }
+$config{CFLAGS} = [ map { $_ eq '--ossl-strict-warnings'
+                              ? @strict_warnings_collection
+                              : ( $_ ) }
+                    @{$config{CFLAGS}} ];
 
 unless ($disabled{"crypto-mdebug-backtrace"})
         {
@@ -1632,9 +1517,6 @@ unless ($disabled{"crypto-mdebug-backtrace"})
                 {
                 push @{$config{cflags}}, $wopt
                         unless grep { $_ eq $wopt } @{$config{cflags}};
-                push @{$config{cxxflags}}, $wopt
-                        if ($config{CXX}
-                            && !grep { $_ eq $wopt } @{$config{cxxflags}});
                 }
         if ($target =~ /^BSD-/)
                 {
@@ -1687,7 +1569,48 @@ unless ($disabled{ktls}) {
 
 push @{$config{openssl_other_defines}}, "OPENSSL_NO_KTLS" if ($disabled{ktls});
 
-# ALL MODIFICATIONS TO %config and %target MUST BE DONE FROM HERE ON
+# Get the extra flags used when building shared libraries and modules.  We
+# do this late because some of them depend on %disabled.
+
+# Make the flags to build DSOs the same as for shared libraries unless they
+# are already defined
+$target{module_cflags} = $target{shared_cflag} unless defined $target{module_cflags};
+$target{module_cxxflags} = $target{shared_cxxflag} unless defined $target{module_cxxflags};
+$target{module_ldflags} = $target{shared_ldflag} unless defined $target{module_ldflags};
+{
+    my $shared_info_pl =
+        catfile(dirname($0), "Configurations", "shared-info.pl");
+    my %shared_info = read_eval_file($shared_info_pl);
+    push @{$target{_conf_fname_int}}, $shared_info_pl;
+    my $si = $target{shared_target};
+    while (ref $si ne "HASH") {
+        last if ! defined $si;
+        if (ref $si eq "CODE") {
+            $si = $si->();
+        } else {
+            $si = $shared_info{$si};
+        }
+    }
+
+    # Some of the 'shared_target' values don't have any entries in
+    # %shared_info.  That's perfectly fine, AS LONG AS the build file
+    # template knows how to handle this.  That is currently the case for
+    # Windows and VMS.
+    if (defined $si) {
+        # Just as above, copy certain shared_* attributes to the corresponding
+        # module_ attribute unless the latter is already defined
+        $si->{module_cflags} = $si->{shared_cflag} unless defined $si->{module_cflags};
+        $si->{module_cxxflags} = $si->{shared_cxxflag} unless defined $si->{module_cxxflags};
+        $si->{module_ldflags} = $si->{shared_ldflag} unless defined $si->{module_ldflags};
+        foreach (sort keys %$si) {
+            $target{$_} = defined $target{$_}
+                ? add($si->{$_})->($target{$_})
+                : $si->{$_};
+        }
+    }
+}
+
+# ALL MODIFICATIONS TO %disabled, %config and %target MUST BE DONE FROM HERE ON
 
 # If we use the unified build, collect information from build.info files
 my %unified_info = ();
@@ -1806,6 +1729,24 @@ if ($builder eq "unified") {
         my %depends = ();
         my %generate = ();
 
+        # Support for $variablename in build.info files.
+        # Embedded perl code is the ultimate master, still.  If its output
+        # contains a dollar sign, it had better be escaped, or it will be
+        # taken for a variable name prefix.
+        my %variables = ();
+        my $variable_re = qr/\$([[:alpha:]][[:alnum:]_]*)/;
+        my $expand_variables = sub {
+            my $value = '';
+            my $value_rest = shift;
+
+            while ($value_rest =~ /(?<!\\)${variable_re}/) {
+                $value .= $`;
+                $value .= $variables{$1};
+                $value_rest = $';
+            }
+            return $value . $value_rest;
+        };
+
         # We want to detect configdata.pm in the source tree, so we
         # don't use it if the build tree is different.
         my $src_configdata = cleanfile($srcdir, "configdata.pm", $blddir);
@@ -1843,7 +1784,7 @@ if ($builder eq "unified") {
             qr/^\s*IF\[((?:\\.|[^\\\]])*)\]\s*$/
             => sub {
                 if (! @skip || $skip[$#skip] > 0) {
-                    push @skip, !! $1;
+                    push @skip, !! $expand_variables->($1);
                 } else {
                     push @skip, -1;
                 }
@@ -1852,7 +1793,7 @@ if ($builder eq "unified") {
             => sub { die "ELSIF out of scope" if ! @skip;
                      die "ELSIF following ELSE" if abs($skip[$#skip]) == 2;
                      $skip[$#skip] = -1 if $skip[$#skip] != 0;
-                     $skip[$#skip] = !! $1
+                     $skip[$#skip] = !! $expand_variables->($1)
                          if $skip[$#skip] == 0; },
             qr/^\s*ELSE\s*$/
             => sub { die "ELSE out of scope" if ! @skip;
@@ -1861,10 +1802,18 @@ if ($builder eq "unified") {
             qr/^\s*ENDIF\s*$/
             => sub { die "ENDIF out of scope" if ! @skip;
                      pop @skip; },
+            qr/^\s*${variable_re}\s*=\s*(.*?)\s*$/
+            => sub {
+                if (!@skip || $skip[$#skip] > 0) {
+                    my $n = $1;
+                    my $v = $2;
+                    $variables{$n} = $expand_variables->($v);
+                }
+            },
             qr/^\s*SUBDIRS\s*=\s*(.*)\s*$/
             => sub {
                 if (!@skip || $skip[$#skip] > 0) {
-                    foreach (tokenize($1)) {
+                    foreach (tokenize($expand_variables->($1))) {
                         push @build_dirs, [ @curd, splitdir($_, 1) ];
                     }
                 }
@@ -1873,7 +1822,7 @@ if ($builder eq "unified") {
             => sub {
                 if (!@skip || $skip[$#skip] > 0) {
                     my @a = tokenize($1, qr|\s*,\s*|);
-                    my @p = tokenize($2);
+                    my @p = tokenize($expand_variables->($2));
                     push @programs, @p;
                     foreach my $a (@a) {
                         my $ak = $a;
@@ -1892,7 +1841,7 @@ if ($builder eq "unified") {
             => sub {
                 if (!@skip || $skip[$#skip] > 0) {
                     my @a = tokenize($1, qr|\s*,\s*|);
-                    my @l = tokenize($2);
+                    my @l = tokenize($expand_variables->($2));
                     push @libraries, @l;
                     foreach my $a (@a) {
                         my $ak = $a;
@@ -1911,7 +1860,7 @@ if ($builder eq "unified") {
             => sub {
                 if (!@skip || $skip[$#skip] > 0) {
                     my @a = tokenize($1, qr|\s*,\s*|);
-                    my @m = tokenize($2);
+                    my @m = tokenize($expand_variables->($2));
                     push @modules, @m;
                     foreach my $a (@a) {
                         my $ak = $a;
@@ -1930,7 +1879,7 @@ if ($builder eq "unified") {
             => sub {
                 if (!@skip || $skip[$#skip] > 0) {
                     my @a = tokenize($1, qr|\s*,\s*|);
-                    my @s = tokenize($2);
+                    my @s = tokenize($expand_variables->($2));
                     push @scripts, @s;
                     foreach my $a (@a) {
                         my $ak = $a;
@@ -1947,22 +1896,23 @@ if ($builder eq "unified") {
             },
 
             qr/^\s*ORDINALS\[((?:\\.|[^\\\]])+)\]\s*=\s*(.*)\s*$/,
-            => sub { push @{$ordinals{$1}}, tokenize($2)
+            => sub { push @{$ordinals{$1}}, tokenize($expand_variables->($2))
                          if !@skip || $skip[$#skip] > 0 },
             qr/^\s*SOURCE\[((?:\\.|[^\\\]])+)\]\s*=\s*(.*)\s*$/
-            => sub { push @{$sources{$1}}, tokenize($2)
+            => sub { push @{$sources{$1}}, tokenize($expand_variables->($2))
                          if !@skip || $skip[$#skip] > 0 },
             qr/^\s*SHARED_SOURCE\[((?:\\.|[^\\\]])+)\]\s*=\s*(.*)\s*$/
-            => sub { push @{$shared_sources{$1}}, tokenize($2)
+            => sub { push @{$shared_sources{$1}},
+                         tokenize($expand_variables->($2))
                          if !@skip || $skip[$#skip] > 0 },
             qr/^\s*INCLUDE\[((?:\\.|[^\\\]])+)\]\s*=\s*(.*)\s*$/
-            => sub { push @{$includes{$1}}, tokenize($2)
+            => sub { push @{$includes{$1}}, tokenize($expand_variables->($2))
                          if !@skip || $skip[$#skip] > 0 },
             qr/^\s*DEFINE\[((?:\\.|[^\\\]])+)\]\s*=\s*(.*)\s*$/
-            => sub { push @{$defines{$1}}, tokenize($2)
+            => sub { push @{$defines{$1}}, tokenize($expand_variables->($2))
                          if !@skip || $skip[$#skip] > 0 },
             qr/^\s*DEPEND\[((?:\\.|[^\\\]])*)\]\s*=\s*(.*)\s*$/
-            => sub { push @{$depends{$1}}, tokenize($2)
+            => sub { push @{$depends{$1}}, tokenize($expand_variables->($2))
                          if !@skip || $skip[$#skip] > 0 },
             qr/^\s*GENERATE\[((?:\\.|[^\\\]])+)\]\s*=\s*(.*)\s*$/
             => sub { push @{$generate{$1}}, $2
@@ -2189,6 +2139,34 @@ They are ignored and should be replaced with a combination of GENERATE,
 DEPEND and SHARED_SOURCE.
 EOF
 
+
+    # Go through the sources of all libraries and check that the same basename
+    # doesn't appear more than once.  Some static library archivers depend on
+    # them being unique.
+    {
+        my $err = 0;
+        foreach my $prod (keys %{$unified_info{libraries}}) {
+            my @prod_sources =
+                map { keys %{$unified_info{sources}->{$_}} }
+                keys %{$unified_info{sources}->{$prod}};
+            my %srccnt = ();
+
+            # Count how many times a given each source basename
+            # appears for each product.
+            foreach my $src (@prod_sources) {
+                $srccnt{basename $src}++;
+            }
+
+            foreach my $src (keys %srccnt) {
+                if ((my $cnt = $srccnt{$src}) > 1) {
+                    print STDERR "$src appears $cnt times for the product $prod\n";
+                    $err++
+                }
+            }
+        }
+        die if $err > 0;
+    }
+
     # Massage the result
 
     # If we depend on a header file or a perl module, add an inclusion of
@@ -2299,6 +2277,7 @@ EOF
             }
         }
     }
+
     # At this point, we have a number of sources with the value -1.  They
     # aren't part of the local build and are probably meant for a different
     # platform, and can therefore be cleaned away.  That happens when making
@@ -2411,7 +2390,7 @@ use warnings;
 use Exporter;
 #use vars qw(\@ISA \@EXPORT);
 our \@ISA = qw(Exporter);
-our \@EXPORT = qw(\%config \%target \%disabled \%withargs \%unified_info \@disablables);
+our \@EXPORT = qw(\%config \%target \%disabled \%withargs \%unified_info \@disablables \@disablables_int);
 
 EOF
 print OUT "our %config = (\n";
@@ -2472,6 +2451,15 @@ foreach (@disablables) {
 print OUT <<"EOF";
 );
 
+EOF
+print OUT "# The following come from Configure's @disablables_int\n";
+print OUT "our \@disablables_int = (\n";
+foreach (@disablables_int) {
+    print OUT "  ", quotify("perl", $_), ",\n";
+}
+print OUT <<"EOF";
+);
+
 EOF
 print OUT "our \%disabled = (\n";
 foreach (sort keys %disabled) {
@@ -2904,18 +2892,6 @@ _____
 # Thus, whenever there's mention of a returned value, it's about that
 # intended value.
 
-# Helper function to implement conditional inheritance depending on the
-# value of $disabled{asm}.  Used in inherit_from values as follows:
-#
-#      inherit_from => [ "template", asm("asm_tmpl") ]
-#
-sub asm {
-    my @x = @_;
-    sub {
-        $disabled{asm} ? () : @x;
-    }
-}
-
 # Helper function to implement conditional value variants, with a default
 # plus additional values based on the value of $config{build_type}.
 # Arguments are given in hash table form:
@@ -3336,31 +3312,11 @@ sub print_table_entry
         "includes",
         "cc",
         "cflags",
-        "unistd",
         "ld",
         "lflags",
         "loutflag",
         "ex_libs",
         "bn_ops",
-        "apps_aux_src",
-        "cpuid_asm_src",
-        "uplink_aux_src",
-        "bn_asm_src",
-        "ec_asm_src",
-        "des_asm_src",
-        "aes_asm_src",
-        "bf_asm_src",
-        "md5_asm_src",
-        "cast_asm_src",
-        "sha1_asm_src",
-        "rc4_asm_src",
-        "rmd160_asm_src",
-        "rc5_asm_src",
-        "wp_asm_src",
-        "cmll_asm_src",
-        "modes_asm_src",
-        "padlock_asm_src",
-        "chacha_asm_src",
         "poly1035_asm_src",
         "thread_scheme",
         "perlasm_scheme",
diff --git a/HACKING b/HACKING
new file mode 100644 (file)
index 0000000..a9e39d0
--- /dev/null
+++ b/HACKING
@@ -0,0 +1,26 @@
+ MODIFYING OPENSSL SOURCE
+ ------------------------
+ This document describes the way to add custom modifications to OpenSSL sources.
+
+ If you are adding new public functions to the custom library build, you need to
+ either add a prototype in one of the existing OpenSSL header files;
+ or provide a new header file and edit Configurations/unix-Makefile.tmpl to pick up that file.
+
+ After that perform the following steps:
+
+    ./config -Werror --strict-warnings [your-options]
+    make update
+    make
+    make test
+
+ "make update" ensures that your functions declarations are added to util/libcrypto.num or util/libssl.num
+ If you plan to submit the changes you made to OpenSSL (see CONTRIBUTING), it's worth running:
+
+    make doc-nits
+
+ after running "make update" to ensure that documentation has correct format.
+
+ "make update" also generates files related to OIDs (in the crypto/objects/ folder) and errors.
+ If a merge error occurs in one of these generated files then the generated files need to be removed
+ and regenerated using "make update".
+ To aid in this process the generated files can be committed separately so they can be removed easily.
diff --git a/INSTALL b/INSTALL
index 50722a1..9ea1f11 100644 (file)
--- a/INSTALL
+++ b/INSTALL
@@ -23,6 +23,7 @@
   * NOTES.WIN (any supported Windows)
   * NOTES.DJGPP (DOS platform with DJGPP)
   * NOTES.ANDROID (obviously Android [NDK])
+  * NOTES.VALGRIND (testing with Valgrind)
 
  Notational conventions in this document
  ---------------------------------------
@@ -98,6 +99,9 @@
     $ nmake test
     $ nmake install
 
+ Note that in order to perform the install step above you need to have
+ appropriate permissions to write to the installation directory.
+
  If any of these steps fails, see section Installation in Detail below.
 
  This will build and install OpenSSL in the default location, which is:
            OpenSSL version number with underscores instead of periods.
   Windows: C:\Program Files\OpenSSL or C:\Program Files (x86)\OpenSSL
 
+ The installation directory should be appropriately protected to ensure
+ unprivileged users cannot make changes to OpenSSL binaries or files, or install
+ engines. If you already have a pre-installed version of OpenSSL as part of
+ your Operating System it is recommended that you do not overwrite the system
+ version and instead install to somewhere else.
+
  If you want to install it anywhere else, run config like this:
 
   On Unix:
                    Don't build with support for deprecated APIs below the
                    specified version number. For example "--api=1.1.0" will
                    remove support for all APIS that were deprecated in OpenSSL
-                   version 1.1.0 or below.
+                   version 1.1.0 or below. This is a rather specialized option
+                   for developers. If you just intend to remove all deprecated
+                &nbs