diff options
Diffstat (limited to 'src/libstrongswan/plugins')
-rw-r--r-- | src/libstrongswan/plugins/cmac/cmac.c | 11 | ||||
-rw-r--r-- | src/libstrongswan/plugins/hmac/hmac.c | 4 | ||||
-rw-r--r-- | src/libstrongswan/plugins/openssl/openssl_hmac.c | 4 | ||||
-rw-r--r-- | src/libstrongswan/plugins/xcbc/xcbc.c | 11 |
4 files changed, 21 insertions, 9 deletions
diff --git a/src/libstrongswan/plugins/cmac/cmac.c b/src/libstrongswan/plugins/cmac/cmac.c index b36d41387..619ab0d8b 100644 --- a/src/libstrongswan/plugins/cmac/cmac.c +++ b/src/libstrongswan/plugins/cmac/cmac.c @@ -226,7 +226,7 @@ static void derive_key(chunk_t chunk) } } -METHOD(mac_t, set_key, void, +METHOD(mac_t, set_key, bool, private_mac_t *this, chunk_t key) { chunk_t resized, iv, l; @@ -240,8 +240,11 @@ METHOD(mac_t, set_key, void, { /* use cmac recursively to resize longer or shorter keys */ resized = chunk_alloca(this->b); memset(resized.ptr, 0, resized.len); - set_key(this, resized); - get_mac(this, key, resized.ptr); + if (!set_key(this, resized) || + !get_mac(this, key, resized.ptr)) + { + return FALSE; + } } /* @@ -267,6 +270,8 @@ METHOD(mac_t, set_key, void, derive_key(l); memcpy(this->k2, l.ptr, l.len); memwipe(l.ptr, l.len); + + return TRUE; } METHOD(mac_t, destroy, void, diff --git a/src/libstrongswan/plugins/hmac/hmac.c b/src/libstrongswan/plugins/hmac/hmac.c index 85ad31776..4f1226505 100644 --- a/src/libstrongswan/plugins/hmac/hmac.c +++ b/src/libstrongswan/plugins/hmac/hmac.c @@ -99,7 +99,7 @@ METHOD(mac_t, get_mac_size, size_t, return this->h->get_hash_size(this->h); } -METHOD(mac_t, set_key, void, +METHOD(mac_t, set_key, bool, private_mac_t *this, chunk_t key) { int i; @@ -128,6 +128,8 @@ METHOD(mac_t, set_key, void, /* begin hashing of inner pad */ this->h->reset(this->h); this->h->get_hash(this->h, this->ipaded_key, NULL); + + return TRUE; } METHOD(mac_t, destroy, void, diff --git a/src/libstrongswan/plugins/openssl/openssl_hmac.c b/src/libstrongswan/plugins/openssl/openssl_hmac.c index 21b1cd88b..feeecf539 100644 --- a/src/libstrongswan/plugins/openssl/openssl_hmac.c +++ b/src/libstrongswan/plugins/openssl/openssl_hmac.c @@ -99,12 +99,12 @@ METHOD(mac_t, get_mac_size, size_t, return EVP_MD_size(this->hasher); } -METHOD(mac_t, set_key, void, +METHOD(mac_t, set_key, bool, private_mac_t *this, chunk_t key) { chunk_clear(&this->key); this->key = chunk_clone(key); - reset(this); + return reset(this); } METHOD(mac_t, destroy, void, diff --git a/src/libstrongswan/plugins/xcbc/xcbc.c b/src/libstrongswan/plugins/xcbc/xcbc.c index 776f15109..26979ace1 100644 --- a/src/libstrongswan/plugins/xcbc/xcbc.c +++ b/src/libstrongswan/plugins/xcbc/xcbc.c @@ -198,7 +198,7 @@ METHOD(mac_t, get_mac_size, size_t, return this->b; } -METHOD(mac_t, set_key, void, +METHOD(mac_t, set_key, bool, private_mac_t *this, chunk_t key) { chunk_t iv, k1, lengthened; @@ -218,8 +218,11 @@ METHOD(mac_t, set_key, void, { /* shorten key using xcbc */ lengthened = chunk_alloca(this->b); memset(lengthened.ptr, 0, lengthened.len); - set_key(this, lengthened); - get_mac(this, key, lengthened.ptr); + if (!set_key(this, lengthened) || + !get_mac(this, key, lengthened.ptr)) + { + return FALSE; + } } k1 = chunk_alloca(this->b); @@ -243,6 +246,8 @@ METHOD(mac_t, set_key, void, this->k1->set_key(this->k1, k1); memwipe(k1.ptr, k1.len); + + return TRUE; } METHOD(mac_t, destroy, void, |