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
c_allc.c
c_alld.c SHA512/224 and SHA512/256 2018-01-24 07:09:46 +10:00
cmeth_lib.c
digest.c
e_aes_cbc_hmac_sha1.c
e_aes_cbc_hmac_sha256.c
e_aes.c crypto/evp/e_aes.c: add comments to s390x aes gcm implementation 2018-02-06 19:41:21 +01:00
e_aria.c
e_bf.c
e_camellia.c
e_cast.c
e_chacha20_poly1305.c
e_des3.c
e_des.c
e_idea.c
e_null.c
e_old.c
e_rc2.c
e_rc4_hmac_md5.c
e_rc4.c
e_rc5.c
e_seed.c
e_sm4.c
e_xcbc_d.c
encode.c
evp_cnf.c
evp_enc.c
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
evp_lib.c
evp_locl.h
evp_pbe.c
evp_pkey.c
m_md2.c
m_md4.c
m_md5_sha1.c
m_md5.c
m_mdc2.c
m_null.c
m_ripemd.c
m_sha1.c Avoid fragile aliasing of SHA224/384 update/final 2018-02-13 23:27:51 -05:00
m_sha3.c
m_sigver.c
m_wp.c
names.c
p5_crpt2.c
p5_crpt.c
p_dec.c
p_enc.c
p_lib.c
p_open.c
p_seal.c
p_sign.c
p_verify.c
pbe_scrypt.c
pmeth_fn.c
pmeth_gn.c
pmeth_lib.c