Add a return value to mac_t.set_key()
This commit is contained in:
@@ -62,8 +62,10 @@ struct mac_t {
|
|||||||
* Any key length must be accepted.
|
* Any key length must be accepted.
|
||||||
*
|
*
|
||||||
* @param key key to set
|
* @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.
|
* Destroys a mac_t object.
|
||||||
|
|||||||
@@ -68,8 +68,7 @@ METHOD(prf_t, get_key_size, size_t,
|
|||||||
METHOD(prf_t, set_key, bool,
|
METHOD(prf_t, set_key, bool,
|
||||||
private_prf_t *this, chunk_t key)
|
private_prf_t *this, chunk_t key)
|
||||||
{
|
{
|
||||||
this->mac->set_key(this->mac, key);
|
return this->mac->set_key(this->mac, key);
|
||||||
return TRUE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
METHOD(prf_t, destroy, void,
|
METHOD(prf_t, destroy, void,
|
||||||
|
|||||||
@@ -103,8 +103,7 @@ METHOD(signer_t, get_block_size, size_t,
|
|||||||
METHOD(signer_t, set_key, bool,
|
METHOD(signer_t, set_key, bool,
|
||||||
private_signer_t *this, chunk_t key)
|
private_signer_t *this, chunk_t key)
|
||||||
{
|
{
|
||||||
this->mac->set_key(this->mac, key);
|
return this->mac->set_key(this->mac, key);
|
||||||
return TRUE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
METHOD(signer_t, destroy, void,
|
METHOD(signer_t, destroy, void,
|
||||||
|
|||||||
@@ -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)
|
private_mac_t *this, chunk_t key)
|
||||||
{
|
{
|
||||||
chunk_t resized, iv, l;
|
chunk_t resized, iv, l;
|
||||||
@@ -240,8 +240,11 @@ METHOD(mac_t, set_key, void,
|
|||||||
{ /* use cmac recursively to resize longer or shorter keys */
|
{ /* use cmac recursively to resize longer or shorter keys */
|
||||||
resized = chunk_alloca(this->b);
|
resized = chunk_alloca(this->b);
|
||||||
memset(resized.ptr, 0, resized.len);
|
memset(resized.ptr, 0, resized.len);
|
||||||
set_key(this, resized);
|
if (!set_key(this, resized) ||
|
||||||
get_mac(this, key, resized.ptr);
|
!get_mac(this, key, resized.ptr))
|
||||||
|
{
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -267,6 +270,8 @@ METHOD(mac_t, set_key, void,
|
|||||||
derive_key(l);
|
derive_key(l);
|
||||||
memcpy(this->k2, l.ptr, l.len);
|
memcpy(this->k2, l.ptr, l.len);
|
||||||
memwipe(l.ptr, l.len);
|
memwipe(l.ptr, l.len);
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
METHOD(mac_t, destroy, void,
|
METHOD(mac_t, destroy, void,
|
||||||
|
|||||||
@@ -99,7 +99,7 @@ METHOD(mac_t, get_mac_size, size_t,
|
|||||||
return this->h->get_hash_size(this->h);
|
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)
|
private_mac_t *this, chunk_t key)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
@@ -128,6 +128,8 @@ METHOD(mac_t, set_key, void,
|
|||||||
/* begin hashing of inner pad */
|
/* begin hashing of inner pad */
|
||||||
this->h->reset(this->h);
|
this->h->reset(this->h);
|
||||||
this->h->get_hash(this->h, this->ipaded_key, NULL);
|
this->h->get_hash(this->h, this->ipaded_key, NULL);
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
METHOD(mac_t, destroy, void,
|
METHOD(mac_t, destroy, void,
|
||||||
|
|||||||
@@ -99,12 +99,12 @@ METHOD(mac_t, get_mac_size, size_t,
|
|||||||
return EVP_MD_size(this->hasher);
|
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)
|
private_mac_t *this, chunk_t key)
|
||||||
{
|
{
|
||||||
chunk_clear(&this->key);
|
chunk_clear(&this->key);
|
||||||
this->key = chunk_clone(key);
|
this->key = chunk_clone(key);
|
||||||
reset(this);
|
return reset(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
METHOD(mac_t, destroy, void,
|
METHOD(mac_t, destroy, void,
|
||||||
|
|||||||
@@ -198,7 +198,7 @@ METHOD(mac_t, get_mac_size, size_t,
|
|||||||
return this->b;
|
return this->b;
|
||||||
}
|
}
|
||||||
|
|
||||||
METHOD(mac_t, set_key, void,
|
METHOD(mac_t, set_key, bool,
|
||||||
private_mac_t *this, chunk_t key)
|
private_mac_t *this, chunk_t key)
|
||||||
{
|
{
|
||||||
chunk_t iv, k1, lengthened;
|
chunk_t iv, k1, lengthened;
|
||||||
@@ -218,8 +218,11 @@ METHOD(mac_t, set_key, void,
|
|||||||
{ /* shorten key using xcbc */
|
{ /* shorten key using xcbc */
|
||||||
lengthened = chunk_alloca(this->b);
|
lengthened = chunk_alloca(this->b);
|
||||||
memset(lengthened.ptr, 0, lengthened.len);
|
memset(lengthened.ptr, 0, lengthened.len);
|
||||||
set_key(this, lengthened);
|
if (!set_key(this, lengthened) ||
|
||||||
get_mac(this, key, lengthened.ptr);
|
!get_mac(this, key, lengthened.ptr))
|
||||||
|
{
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
k1 = chunk_alloca(this->b);
|
k1 = chunk_alloca(this->b);
|
||||||
@@ -243,6 +246,8 @@ METHOD(mac_t, set_key, void,
|
|||||||
this->k1->set_key(this->k1, k1);
|
this->k1->set_key(this->k1, k1);
|
||||||
|
|
||||||
memwipe(k1.ptr, k1.len);
|
memwipe(k1.ptr, k1.len);
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
METHOD(mac_t, destroy, void,
|
METHOD(mac_t, destroy, void,
|
||||||
|
|||||||
Reference in New Issue
Block a user