aboutsummaryrefslogtreecommitdiffstats
path: root/src/libtls
diff options
context:
space:
mode:
authorMartin Willi <martin@revosec.ch>2012-07-06 09:49:25 +0200
committerMartin Willi <martin@revosec.ch>2012-07-16 14:53:33 +0200
commite7d98b8c9967d53d0244b2d2bd4edeb20df58dcc (patch)
treea17a178e5c981488f8f021dd437ddf345328b9cf /src/libtls
parent97b30b93b06e162fd196aebe9f7dc10814e7f3ea (diff)
downloadstrongswan-e7d98b8c9967d53d0244b2d2bd4edeb20df58dcc.tar.bz2
strongswan-e7d98b8c9967d53d0244b2d2bd4edeb20df58dcc.tar.xz
Add a return value to tls_prf_t.set_key()
Diffstat (limited to 'src/libtls')
-rw-r--r--src/libtls/tls_crypto.c13
-rw-r--r--src/libtls/tls_prf.c6
-rw-r--r--src/libtls/tls_prf.h3
3 files changed, 13 insertions, 9 deletions
diff --git a/src/libtls/tls_crypto.c b/src/libtls/tls_crypto.c
index 5f7002c3a..fde03b800 100644
--- a/src/libtls/tls_crypto.c
+++ b/src/libtls/tls_crypto.c
@@ -1483,13 +1483,14 @@ static bool derive_master(private_tls_crypto_t *this, chunk_t premaster,
/* derive master secret */
seed = chunk_cata("cc", client_random, server_random);
- this->prf->set_key(this->prf, premaster);
- if (!this->prf->get_bytes(this->prf, "master secret", seed,
- sizeof(master), master))
+
+ if (!this->prf->set_key(this->prf, premaster) ||
+ !this->prf->get_bytes(this->prf, "master secret", seed,
+ sizeof(master), master) ||
+ !this->prf->set_key(this->prf, chunk_from_thing(master)))
{
return FALSE;
}
- this->prf->set_key(this->prf, chunk_from_thing(master));
if (this->cache && session.len)
{
@@ -1624,8 +1625,8 @@ METHOD(tls_crypto_t, resume_session, tls_cipher_suite_t,
this->suite = select_cipher_suite(this, &this->suite, 1, KEY_ANY);
if (this->suite)
{
- this->prf->set_key(this->prf, master);
- if (!expand_keys(this, client_random, server_random))
+ if (!this->prf->set_key(this->prf, master) ||
+ !expand_keys(this, client_random, server_random))
{
this->suite = 0;
}
diff --git a/src/libtls/tls_prf.c b/src/libtls/tls_prf.c
index 0ef441814..09f693448 100644
--- a/src/libtls/tls_prf.c
+++ b/src/libtls/tls_prf.c
@@ -33,10 +33,11 @@ struct private_tls_prf12_t {
prf_t *prf;
};
-METHOD(tls_prf_t, set_key12, void,
+METHOD(tls_prf_t, set_key12, bool,
private_tls_prf12_t *this, chunk_t key)
{
this->prf->set_key(this->prf, key);
+ return TRUE;
}
/**
@@ -136,13 +137,14 @@ struct private_tls_prf10_t {
prf_t *sha1;
};
-METHOD(tls_prf_t, set_key10, void,
+METHOD(tls_prf_t, set_key10, bool,
private_tls_prf10_t *this, chunk_t key)
{
size_t len = key.len / 2 + key.len % 2;
this->md5->set_key(this->md5, chunk_create(key.ptr, len));
this->sha1->set_key(this->sha1, chunk_create(key.ptr + key.len - len, len));
+ return TRUE;
}
METHOD(tls_prf_t, get_bytes10, bool,
diff --git a/src/libtls/tls_prf.h b/src/libtls/tls_prf.h
index c78842e74..095eaea3a 100644
--- a/src/libtls/tls_prf.h
+++ b/src/libtls/tls_prf.h
@@ -34,8 +34,9 @@ struct tls_prf_t {
* Set the key of the PRF function.
*
* @param key key to set
+ * @return TRUE if key set successfully
*/
- void (*set_key)(tls_prf_t *this, chunk_t key);
+ bool (*set_key)(tls_prf_t *this, chunk_t key);
/**
* Generate a series of bytes using a label and a seed.