]> git.ipfire.org Git - thirdparty/strongswan.git/commitdiff
Add a return value to mac_t.set_key()
authorMartin Willi <martin@revosec.ch>
Fri, 6 Jul 2012 12:40:04 +0000 (14:40 +0200)
committerMartin Willi <martin@revosec.ch>
Mon, 16 Jul 2012 12:53:37 +0000 (14:53 +0200)
src/libstrongswan/crypto/mac.h
src/libstrongswan/crypto/prfs/mac_prf.c
src/libstrongswan/crypto/signers/mac_signer.c
src/libstrongswan/plugins/cmac/cmac.c
src/libstrongswan/plugins/hmac/hmac.c
src/libstrongswan/plugins/openssl/openssl_hmac.c
src/libstrongswan/plugins/xcbc/xcbc.c

index 10e789c2278517de2bd15fc7e1247dddf22ee66e..4f952a2ad3c54a3e2287b152923e854f15ea0697 100644 (file)
@@ -62,8 +62,10 @@ struct mac_t {
         * Any key length must be accepted.
         *
         * @param key           key to set
+        * @return                      TRUE if key set successfully
         */
-       void (*set_key) (mac_t *this, chunk_t key);
+       __attribute__((warn_unused_result))
+       bool (*set_key) (mac_t *this, chunk_t key);
 
        /**
         * Destroys a mac_t object.
index 600dbd155c4da334c9bfe1f3e66579fe61e5a6b0..b5f6be982b3ddcdab3bf11359e7e86bc5fad3f79 100644 (file)
@@ -68,8 +68,7 @@ METHOD(prf_t, get_key_size, size_t,
 METHOD(prf_t, set_key, bool,
        private_prf_t *this, chunk_t key)
 {
-       this->mac->set_key(this->mac, key);
-       return TRUE;
+       return this->mac->set_key(this->mac, key);
 }
 
 METHOD(prf_t, destroy, void,
index 8798bde5583c8b56dd63aa163d796d1e6e01cf8f..7c52aa3054fa359eb6107935d90f323c2fd3a565 100644 (file)
@@ -103,8 +103,7 @@ METHOD(signer_t, get_block_size, size_t,
 METHOD(signer_t, set_key, bool,
        private_signer_t *this, chunk_t key)
 {
-       this->mac->set_key(this->mac, key);
-       return TRUE;
+       return this->mac->set_key(this->mac, key);
 }
 
 METHOD(signer_t, destroy, void,
index b36d4138709b9d7471eb61b6a3d6c9c49d2f6358..619ab0d8bad08bf6a86cccfa3927ae0c7d2e2ff5 100644 (file)
@@ -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,
index 85ad31776e4a69a1ca2f74f2e626febe0ab2e3a7..4f1226505e115a4c96633c9fd477e4f5ee9596b2 100644 (file)
@@ -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,
index 21b1cd88b6ca89702c186f9f775e68e08c8712a5..feeecf539d74f0c8197c81de569d490331b06d42 100644 (file)
@@ -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,
index 776f15109f01d51d85e77eb06e2e9863a918bc69..26979ace17be207a9919a49b4de41f0410ccc29b 100644 (file)
@@ -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,