aboutsummaryrefslogtreecommitdiffstats
path: root/src/libtls/tls_peer.c
diff options
context:
space:
mode:
authorMartin Willi <martin@revosec.ch>2010-09-02 19:19:17 +0200
committerMartin Willi <martin@revosec.ch>2010-09-02 19:33:08 +0200
commit06109c471785e7bf09487e31c0a71cb325cc7926 (patch)
tree5841c95dbe6491db1e0e19d552c0a125c331ca0e /src/libtls/tls_peer.c
parent731611c52547d3d0b0cde11d4891d75ede64a586 (diff)
downloadstrongswan-06109c471785e7bf09487e31c0a71cb325cc7926.tar.bz2
strongswan-06109c471785e7bf09487e31c0a71cb325cc7926.tar.xz
Implemented "signature algorithm" hello extension
Diffstat (limited to 'src/libtls/tls_peer.c')
-rw-r--r--src/libtls/tls_peer.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/libtls/tls_peer.c b/src/libtls/tls_peer.c
index 3ee77d501..eb32651a8 100644
--- a/src/libtls/tls_peer.c
+++ b/src/libtls/tls_peer.c
@@ -445,6 +445,7 @@ static status_t send_client_hello(private_tls_peer_t *this,
tls_handshake_type_t *type, tls_writer_t *writer)
{
tls_cipher_suite_t *suites;
+ tls_writer_t *extensions;
tls_version_t version;
int count, i;
rng_t *rng;
@@ -480,6 +481,13 @@ static status_t send_client_hello(private_tls_peer_t *this,
writer->write_uint8(writer, 1);
writer->write_uint8(writer, 0);
+ /* signature algorithms extension */
+ extensions = tls_writer_create(32);
+ extensions->write_uint16(extensions, TLS_EXT_SIGNATURE_ALGORITHMS);
+ this->crypto->get_signature_algorithms(this->crypto, extensions);
+ writer->write_data16(writer, extensions->get_buf(extensions));
+ extensions->destroy(extensions);
+
*type = TLS_CLIENT_HELLO;
this->state = STATE_HELLO_SENT;
this->crypto->append_handshake(this->crypto, *type, writer->get_buf(writer));