summaryrefslogtreecommitdiffstats
path: root/ssl/ssl_locl.h
diff options
context:
space:
mode:
authorDr. Stephen Henson <steve@openssl.org>2012-06-25 14:32:30 +0000
committerDr. Stephen Henson <steve@openssl.org>2012-06-25 14:32:30 +0000
commit4453cd8c734349f4515eaa1b047464de0f34a1b5 (patch)
tree724963358f13bfc1b6f8c7986982875af95bb71d /ssl/ssl_locl.h
parenta8f3b8b519ddf028f7b1f915813b4ba2ceb858aa (diff)
Reorganise supported signature algorithm extension processing.
Only store encoded versions of peer and configured signature algorithms. Determine shared signature algorithms and cache the result along with NID equivalents of each algorithm.
Diffstat (limited to 'ssl/ssl_locl.h')
-rw-r--r--ssl/ssl_locl.h10
1 files changed, 8 insertions, 2 deletions
diff --git a/ssl/ssl_locl.h b/ssl/ssl_locl.h
index 671b2dfe04..16fa943648 100644
--- a/ssl/ssl_locl.h
+++ b/ssl/ssl_locl.h
@@ -521,15 +521,20 @@ typedef struct cert_st
* algorithms extension for server or as part of a certificate
* request for client.
*/
- TLS_SIGALGS *peer_sigalgs;
+ unsigned char *peer_sigalgs;
/* Size of above array */
size_t peer_sigalgslen;
/* configured signature algorithms (can be NULL for default).
* sent in signature algorithms extension or certificate request.
*/
- TLS_SIGALGS *conf_sigalgs;
+ unsigned char *conf_sigalgs;
/* Size of above array */
size_t conf_sigalgslen;
+ /* Signature algorithms shared by client and server: cached
+ * because these are used most often
+ */
+ TLS_SIGALGS *shared_sigalgs;
+ size_t shared_sigalgslen;
int references; /* >1 only if SSL_copy_session_id is used */
} CERT;
@@ -839,6 +844,7 @@ void ssl_clear_cipher_ctx(SSL *s);
int ssl_clear_bad_session(SSL *s);
CERT *ssl_cert_new(void);
CERT *ssl_cert_dup(CERT *cert);
+void ssl_cert_set_default_md(CERT *cert);
int ssl_cert_inst(CERT **o);
void ssl_cert_clear_certs(CERT *c);
void ssl_cert_free(CERT *c);