openssl/crypto/evp
Viktor Dukhovni babab8e7c9 Avoid fragile aliasing of SHA224/384 update/final
This is purported to save a few cycles, but makes the code less
obvious and more brittle, and in fact breaks on platforms where for
ABI continuity reasons there is a SHA2 implementation in libc, and
so EVP needs to call those to avoid conflicts.

A sufficiently good optimizer could simply generate the same entry
points for:

        foo(...) { ... }
    and
        bar(...) { return foo(...); }

but, even without that, the different is negligible, with the
"winner" varying from run to run (openssl speed -evp sha384):

    Old:
    type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes 16384 bytes
    sha384           28864.28k   117362.62k   266469.21k   483258.03k   635144.87k 649123.16k

    New:
    type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes 16384 bytes
    sha384           30055.18k   120725.98k   272057.26k   482847.40k   634585.09k 650308.27k

Reviewed-by: Rich Salz <rsalz@openssl.org>
2018-02-13 23:27:51 -05:00
..
bio_b64.c Fix invalid function type casts. 2017-12-15 19:33:48 +01:00
bio_enc.c Fix invalid function type casts. 2017-12-15 19:33:48 +01:00
bio_md.c Fix invalid function type casts. 2017-12-15 19:33:48 +01:00
bio_ok.c Fix invalid function type casts. 2017-12-15 19:33:48 +01:00
build.info SM3: restructure to EVP internal and update doc to right location 2017-11-06 07:21:15 +08:00
c_allc.c SM4: Add SM4 block cipher to EVP 2017-10-31 15:19:14 +10:00
c_alld.c SHA512/224 and SHA512/256 2018-01-24 07:09:46 +10:00
cmeth_lib.c
digest.c Add EVP_DigestFinalXOF, interface to extendable-output functions, XOFs. 2017-08-12 12:20:06 +02:00
e_aes.c crypto/evp/e_aes.c: add comments to s390x aes gcm implementation 2018-02-06 19:41:21 +01:00
e_aes_cbc_hmac_sha1.c Remove some dead code 2017-07-19 11:49:08 +01:00
e_aes_cbc_hmac_sha256.c evp/e_aes_cbc_hmac_sha256.c: give SHAEXT right priority. 2017-07-24 23:29:13 +02:00
e_aria.c Implement Aria GCM/CCM Modes and TLS cipher suites 2017-08-30 12:33:53 +02:00
e_bf.c
e_camellia.c
e_cast.c
e_chacha20_poly1305.c Remove parentheses of return. 2017-10-18 16:05:06 +01:00
e_des.c
e_des3.c Fix the overlapping check for fragmented "Update" operations 2017-01-25 15:02:44 +00:00
e_idea.c
e_null.c Remove parentheses of return. 2017-10-18 16:05:06 +01:00
e_old.c
e_rc2.c Remove parentheses of return. 2017-10-18 16:05:06 +01:00
e_rc4.c Remove parentheses of return. 2017-10-18 16:05:06 +01:00
e_rc4_hmac_md5.c Remove parentheses of return. 2017-10-18 16:05:06 +01:00
e_rc5.c Use "" not <> for internal/ includes 2017-08-22 09:54:20 -04:00
e_seed.c
e_sm4.c SM4: Add SM4 block cipher to EVP 2017-10-31 15:19:14 +10:00
e_xcbc_d.c Remove parentheses of return. 2017-10-18 16:05:06 +01:00
encode.c Remove parentheses of return. 2017-10-18 16:05:06 +01:00
evp_cnf.c This has been added to avoid the situation where some host ctype.h functions 2017-08-22 09:45:25 +10:00
evp_enc.c Consistent formatting for sizeof(foo) 2017-12-07 19:11:49 -05:00
evp_err.c Have EVP_PKEY_asn1_find_str() work more like EVP_PKEY_asn1_find() 2018-01-23 20:27:32 +01:00
evp_key.c Remove parentheses of return. 2017-10-18 16:05:06 +01:00
evp_lib.c Remove parentheses of return. 2017-10-18 16:05:06 +01:00
evp_locl.h Fix the overlapping check for fragmented "Update" operations 2017-01-25 15:02:44 +00:00
evp_pbe.c Adding NID_hmac_sha1 and _md5 to builtin_pbe[] 2017-08-02 09:32:11 +10:00
evp_pkey.c Switch from ossl_rand to DRBG rand 2017-08-03 09:23:28 -04:00
m_md2.c
m_md4.c Remove parentheses of return. 2017-10-18 16:05:06 +01:00
m_md5.c Remove parentheses of return. 2017-10-18 16:05:06 +01:00
m_md5_sha1.c Fix ctrl operation for SHA1/MD5SHA1. 2016-11-25 20:50:58 +00:00
m_mdc2.c Remove parentheses of return. 2017-10-18 16:05:06 +01:00
m_null.c Remove parentheses of return. 2017-10-18 16:05:06 +01:00
m_ripemd.c Remove parentheses of return. 2017-10-18 16:05:06 +01:00
m_sha1.c Avoid fragile aliasing of SHA224/384 update/final 2018-02-13 23:27:51 -05:00
m_sha3.c evp/m_sha3.c: wire SHA3 to rsaEncryption. 2017-09-11 22:18:18 +02:00
m_sigver.c Fix memleak in EVP_DigestSignFinal/VerifyFinal. 2017-06-12 12:49:50 -04:00
m_wp.c Remove parentheses of return. 2017-10-18 16:05:06 +01:00
names.c Remove parentheses of return. 2017-10-18 16:05:06 +01:00
p5_crpt.c
p5_crpt2.c Consistent formatting for sizeof(foo) 2017-12-07 19:11:49 -05:00
p_dec.c Remove parentheses of return. 2017-10-18 16:05:06 +01:00
p_enc.c Remove parentheses of return. 2017-10-18 16:05:06 +01:00
p_lib.c Remove parentheses of return. 2017-10-18 16:05:06 +01:00
p_open.c Remove parentheses of return. 2017-10-18 16:05:06 +01:00
p_seal.c Remove parentheses of return. 2017-10-18 16:05:06 +01:00
p_sign.c
p_verify.c
pbe_scrypt.c evp/pbe_scrypt.c: add boundary condition for implicit cast. 2017-11-13 10:58:14 +01:00
pmeth_fn.c Remove email addresses from source code. 2017-10-13 10:06:59 -04:00
pmeth_gn.c Support public key and param check in EVP interface 2017-11-20 07:20:30 +01:00
pmeth_lib.c Support public key and param check in EVP interface 2017-11-20 07:20:30 +01:00