aboutsummaryrefslogtreecommitdiffstats
path: root/src/libstrongswan/crypto/signers/mac_signer.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/libstrongswan/crypto/signers/mac_signer.c')
-rw-r--r--src/libstrongswan/crypto/signers/mac_signer.c33
1 files changed, 16 insertions, 17 deletions
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,