aboutsummaryrefslogtreecommitdiffstats
path: root/src/libstrongswan/crypto
diff options
context:
space:
mode:
authorMartin Willi <martin@revosec.ch>2012-07-06 14:34:11 +0200
committerMartin Willi <martin@revosec.ch>2012-07-16 14:53:37 +0200
commit27e1eabbb5c4beaedab832d6a7aceb49a86a3061 (patch)
tree25777ac4cb2ed40d08b71448eee497dec728052d /src/libstrongswan/crypto
parent76a98ee2a1578a7f1f95b63846cefffad9b1df63 (diff)
downloadstrongswan-27e1eabbb5c4beaedab832d6a7aceb49a86a3061.tar.bz2
strongswan-27e1eabbb5c4beaedab832d6a7aceb49a86a3061.tar.xz
Add a return value to mac_t.get_bytes()
Diffstat (limited to 'src/libstrongswan/crypto')
-rw-r--r--src/libstrongswan/crypto/mac.h4
-rw-r--r--src/libstrongswan/crypto/prfs/mac_prf.c13
-rw-r--r--src/libstrongswan/crypto/signers/mac_signer.c33
3 files changed, 23 insertions, 27 deletions
diff --git a/src/libstrongswan/crypto/mac.h b/src/libstrongswan/crypto/mac.h
index 10f09a831..10e789c22 100644
--- a/src/libstrongswan/crypto/mac.h
+++ b/src/libstrongswan/crypto/mac.h
@@ -44,8 +44,10 @@ struct mac_t {
*
* @param data chunk of data to authenticate
* @param out pointer where the generated bytes will be written
+ * @return TRUE if mac generated successfully
*/
- void (*get_mac)(mac_t *this, chunk_t data, u_int8_t *out);
+ __attribute__((warn_unused_result))
+ bool (*get_mac)(mac_t *this, chunk_t data, u_int8_t *out);
/**
* Get the size of the resulting MAC.
diff --git a/src/libstrongswan/crypto/prfs/mac_prf.c b/src/libstrongswan/crypto/prfs/mac_prf.c
index 7d3a97677..600dbd155 100644
--- a/src/libstrongswan/crypto/prfs/mac_prf.c
+++ b/src/libstrongswan/crypto/prfs/mac_prf.c
@@ -38,23 +38,18 @@ struct private_prf_t {
METHOD(prf_t, get_bytes, bool,
private_prf_t *this, chunk_t seed, u_int8_t *buffer)
{
- this->mac->get_mac(this->mac, seed, buffer);
- return TRUE;
+ return this->mac->get_mac(this->mac, seed, buffer);
}
METHOD(prf_t, allocate_bytes, bool,
private_prf_t *this, chunk_t seed, chunk_t *chunk)
{
- if (!chunk)
- {
- this->mac->get_mac(this->mac, seed, NULL);
- }
- else
+ if (chunk)
{
*chunk = chunk_alloc(this->mac->get_mac_size(this->mac));
- this->mac->get_mac(this->mac, seed, chunk->ptr);
+ return this->mac->get_mac(this->mac, seed, chunk->ptr);
}
- return TRUE;
+ return this->mac->get_mac(this->mac, seed, NULL);
}
METHOD(prf_t, get_block_size, size_t,
diff --git a/src/libstrongswan/crypto/signers/mac_signer.c b/src/libstrongswan/crypto/signers/mac_signer.c
index 36415e9d5..8798bde55 100644
--- a/src/libstrongswan/crypto/signers/mac_signer.c
+++ b/src/libstrongswan/crypto/signers/mac_signer.c
@@ -43,37 +43,36 @@ struct private_signer_t {
METHOD(signer_t, get_signature, bool,
private_signer_t *this, chunk_t data, u_int8_t *buffer)
{
- if (buffer == NULL)
- {
- this->mac->get_mac(this->mac, data, NULL);
- }
- else
+ if (buffer)
{
u_int8_t mac[this->mac->get_mac_size(this->mac)];
- this->mac->get_mac(this->mac, data, mac);
+ if (!this->mac->get_mac(this->mac, data, mac))
+ {
+ return FALSE;
+ }
memcpy(buffer, mac, this->truncation);
+ return TRUE;
}
- return TRUE;
+ return this->mac->get_mac(this->mac, data, NULL);
}
METHOD(signer_t, allocate_signature, bool,
private_signer_t *this, chunk_t data, chunk_t *chunk)
{
- if (chunk == NULL)
- {
- this->mac->get_mac(this->mac, data, NULL);
- }
- else
+ if (chunk)
{
u_int8_t mac[this->mac->get_mac_size(this->mac)];
- this->mac->get_mac(this->mac, data, mac);
-
+ if (!this->mac->get_mac(this->mac, data, mac))
+ {
+ return FALSE;
+ }
*chunk = chunk_alloc(this->truncation);
memcpy(chunk->ptr, mac, this->truncation);
+ return TRUE;
}
- return TRUE;
+ return this->mac->get_mac(this->mac, data, NULL);
}
METHOD(signer_t, verify_signature, bool,
@@ -85,8 +84,8 @@ METHOD(signer_t, verify_signature, bool,
{
return FALSE;
}
- this->mac->get_mac(this->mac, data, mac);
- return memeq(signature.ptr, mac, this->truncation);
+ return this->mac->get_mac(this->mac, data, mac) &&
+ memeq(signature.ptr, mac, this->truncation);
}
METHOD(signer_t, get_key_size, size_t,