12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- =pod
- =head1 NAME
- SSL_get_shared_sigalgs, SSL_get_sigalgs - get supported signature algorithms
- =head1 SYNOPSIS
- #include <openssl/ssl.h>
- int SSL_get_shared_sigalgs(SSL *s, int idx,
- int *psign, int *phash, int *psignhash,
- unsigned char *rsig, unsigned char *rhash);
- int SSL_get_sigalgs(SSL *s, int idx,
- int *psign, int *phash, int *psignhash,
- unsigned char *rsig, unsigned char *rhash);
- =head1 DESCRIPTION
- SSL_get_shared_sigalgs() returns information about the shared signature
- algorithms supported by peer B<s>. The parameter B<idx> indicates the index
- of the shared signature algorithm to return starting from zero. The signature
- algorithm NID is written to B<*psign>, the hash NID to B<*phash> and the
- sign and hash NID to B<*psignhash>. The raw signature and hash values
- are written to B<*rsig> and B<*rhash>.
- SSL_get_sigalgs() is similar to SSL_get_shared_sigalgs() except it returns
- information about all signature algorithms supported by B<s> in the order
- they were sent by the peer.
- =head1 RETURN VALUES
- SSL_get_shared_sigalgs() and SSL_get_sigalgs() return the number of
- signature algorithms or B<0> if the B<idx> parameter is out of range.
- =head1 NOTES
- These functions are typically called for debugging purposes (to report
- the peer's preferences) or where an application wants finer control over
- certificate selection. Most applications will rely on internal handling
- and will not need to call them.
- If an application is only interested in the highest preference shared
- signature algorithm it can just set B<idx> to zero.
- Any or all of the parameters B<psign>, B<phash>, B<psignhash>, B<rsig> or
- B<rhash> can be set to B<NULL> if the value is not required. By setting
- them all to B<NULL> and setting B<idx> to zero the total number of
- signature algorithms can be determined: which can be zero.
- These functions must be called after the peer has sent a list of supported
- signature algorithms: after a client hello (for servers) or a certificate
- request (for clients). They can (for example) be called in the certificate
- callback.
- Only TLS 1.2, TLS 1.3 and DTLS 1.2 currently support signature algorithms.
- If these
- functions are called on an earlier version of TLS or DTLS zero is returned.
- The shared signature algorithms returned by SSL_get_shared_sigalgs() are
- ordered according to configuration and peer preferences.
- The raw values correspond to the on the wire form as defined by RFC5246 et al.
- The NIDs are OpenSSL equivalents. For example if the peer sent sha256(4) and
- rsa(1) then B<*rhash> would be 4, B<*rsign> 1, B<*phash> NID_sha256, B<*psig>
- NID_rsaEncryption and B<*psighash> NID_sha256WithRSAEncryption.
- If a signature algorithm is not recognised the corresponding NIDs
- will be set to B<NID_undef>. This may be because the value is not supported,
- is not an appropriate combination (for example MD5 and DSA) or the
- signature algorithm does not use a hash (for example Ed25519).
- =head1 SEE ALSO
- L<SSL_CTX_set_cert_cb(3)>,
- L<ssl(7)>
- =head1 COPYRIGHT
- Copyright 2015-2018 The OpenSSL Project Authors. All Rights Reserved.
- Licensed under the Apache License 2.0 (the "License"). You may not use
- this file except in compliance with the License. You can obtain a copy
- in the file LICENSE in the source distribution or at
- L<https://www.openssl.org/source/license.html>.
- =cut
|