• B
    Add support for the TLS 1.3 signature_algorithms_cert extension · c589c34e
    Benjamin Kaduk 提交于
    The new extension is like signature_algorithms, but only for the
    signature *on* the certificate we will present to the peer (the
    old signature_algorithms extension is still used for signatures that
    we *generate*, i.e., those over TLS data structures).
    
    We do not need to generate this extension, since we are the same
    implementation as our X.509 stack and can handle the same types
    of signatures, but we need to be prepared to receive it, and use the received
    information when selecting what certificate to present.
    
    There is a lot of interplay between signature_algorithms_cert and
    signature_algorithms, since both affect what certificate we can
    use, and thus the resulting signature algorithm used for TLS messages.
    So, apply signature_algorithms_cert (if present) as a filter on what
    certificates we can consider when choosing a certificate+sigalg
    pair.
    
    As part of this addition, we also remove the fallback code that let
    keys of type EVP_PKEY_RSA be used to generate RSA-PSS signatures -- the
    new rsa_pss_pss_* and rsa_pss_rsae_* signature schemes have pulled
    the key type into what is covered by the signature algorithm, so
    we should not apply this sort of compatibility workaround.
    Reviewed-by: NMatt Caswell <matt@openssl.org>
    (Merged from https://github.com/openssl/openssl/pull/5068)
    c589c34e
extensions.c 57.5 KB