utils: Use memeq_const() for all cryptographic purposes

This commit is contained in:
Martin Willi
2015-04-14 11:53:31 +02:00
parent b833963270
commit 71afe0a556
12 changed files with 14 additions and 22 deletions
@@ -87,7 +87,7 @@ METHOD(simaka_card_t, get_quintuplet, status_t,
{ {
return FAILED; return FAILED;
} }
if (!memeq(mac, xmac, AKA_MAC_LEN)) if (!memeq_const(mac, xmac, AKA_MAC_LEN))
{ {
DBG1(DBG_IKE, "received MAC does not match XMAC"); DBG1(DBG_IKE, "received MAC does not match XMAC");
DBG3(DBG_IKE, "MAC %b\nXMAC %b", mac, AKA_MAC_LEN, xmac, AKA_MAC_LEN); DBG3(DBG_IKE, "MAC %b\nXMAC %b", mac, AKA_MAC_LEN, xmac, AKA_MAC_LEN);
@@ -184,4 +184,3 @@ eap_aka_3gpp2_card_t *eap_aka_3gpp2_card_create(eap_aka_3gpp2_functions_t *f)
return &this->public; return &this->public;
} }
@@ -158,7 +158,7 @@ METHOD(simaka_provider_t, resync, bool,
{ {
return FALSE; return FALSE;
} }
if (!memeq(macs, xmacs, AKA_MAC_LEN)) if (!memeq_const(macs, xmacs, AKA_MAC_LEN))
{ {
DBG1(DBG_IKE, "received MACS does not match XMACS"); DBG1(DBG_IKE, "received MACS does not match XMACS");
DBG3(DBG_IKE, "MACS %b XMACS %b", DBG3(DBG_IKE, "MACS %b XMACS %b",
@@ -205,4 +205,3 @@ eap_aka_3gpp2_provider_t *eap_aka_3gpp2_provider_create(
return &this->public; return &this->public;
} }
+1 -2
View File
@@ -193,7 +193,7 @@ METHOD(eap_method_t, process_server, status_t,
} }
response = chunk_create(data.ptr + 6, data.ptr[5]); response = chunk_create(data.ptr + 6, data.ptr[5]);
if (response.len < expected.len || if (response.len < expected.len ||
!memeq(response.ptr, expected.ptr, expected.len)) !memeq_const(response.ptr, expected.ptr, expected.len))
{ {
chunk_free(&expected); chunk_free(&expected);
DBG1(DBG_IKE, "EAP-MD5 verification failed"); DBG1(DBG_IKE, "EAP-MD5 verification failed");
@@ -299,4 +299,3 @@ eap_md5_t *eap_md5_create_peer(identification_t *server, identification_t *peer)
return &this->public; return &this->public;
} }
@@ -1087,8 +1087,8 @@ static status_t process_server_response(private_eap_mschapv2_t *this,
userid->destroy(userid); userid->destroy(userid);
chunk_clear(&nt_hash); chunk_clear(&nt_hash);
if (memeq(res->response.nt_response, this->nt_response.ptr, if (memeq_const(res->response.nt_response, this->nt_response.ptr,
this->nt_response.len)) this->nt_response.len))
{ {
chunk_t hex; chunk_t hex;
char msg[AUTH_RESPONSE_LEN + sizeof(SUCCESS_MESSAGE)]; char msg[AUTH_RESPONSE_LEN + sizeof(SUCCESS_MESSAGE)];
@@ -1267,4 +1267,3 @@ eap_mschapv2_t *eap_mschapv2_create_peer(identification_t *server, identificatio
return &this->public; return &this->public;
} }
+1 -2
View File
@@ -310,7 +310,7 @@ static status_t process_challenge(private_eap_sim_peer_t *this,
/* excepting two or three RAND, each 16 bytes. We require two valid /* excepting two or three RAND, each 16 bytes. We require two valid
* and different RANDs */ * and different RANDs */
if ((rands.len != 2 * SIM_RAND_LEN && rands.len != 3 * SIM_RAND_LEN) || if ((rands.len != 2 * SIM_RAND_LEN && rands.len != 3 * SIM_RAND_LEN) ||
memeq(rands.ptr, rands.ptr + SIM_RAND_LEN, SIM_RAND_LEN)) memeq_const(rands.ptr, rands.ptr + SIM_RAND_LEN, SIM_RAND_LEN))
{ {
DBG1(DBG_IKE, "no valid AT_RAND received"); DBG1(DBG_IKE, "no valid AT_RAND received");
if (!create_client_error(this, SIM_INSUFFICIENT_CHALLENGES, out)) if (!create_client_error(this, SIM_INSUFFICIENT_CHALLENGES, out))
@@ -734,4 +734,3 @@ eap_sim_peer_t *eap_sim_peer_create(identification_t *server,
return &this->public; return &this->public;
} }
@@ -52,7 +52,7 @@ METHOD(simaka_card_t, get_triplet, bool,
c_rand, SIM_RAND_LEN, c_sres, SIM_SRES_LEN, c_kc, SIM_KC_LEN); c_rand, SIM_RAND_LEN, c_sres, SIM_SRES_LEN, c_kc, SIM_KC_LEN);
if (id->matches(id, cand)) if (id->matches(id, cand))
{ {
if (memeq(c_rand, rand, SIM_RAND_LEN)) if (memeq_const(c_rand, rand, SIM_RAND_LEN))
{ {
DBG2(DBG_CFG, " => triplet matches"); DBG2(DBG_CFG, " => triplet matches");
memcpy(sres, c_sres, SIM_SRES_LEN); memcpy(sres, c_sres, SIM_SRES_LEN);
@@ -105,4 +105,3 @@ eap_sim_file_card_t *eap_sim_file_card_create(eap_sim_file_triplets_t *triplets)
return &this->public; return &this->public;
} }
+1 -1
View File
@@ -536,7 +536,7 @@ METHOD(radius_message_t, verify, bool,
/* verify Response-Authenticator */ /* verify Response-Authenticator */
if (!hasher->get_hash(hasher, msg, NULL) || if (!hasher->get_hash(hasher, msg, NULL) ||
!hasher->get_hash(hasher, secret, buf) || !hasher->get_hash(hasher, secret, buf) ||
!memeq(buf, res_auth, HASH_SIZE_MD5)) !memeq_const(buf, res_auth, HASH_SIZE_MD5))
{ {
DBG1(DBG_CFG, "RADIUS Response-Authenticator verification failed"); DBG1(DBG_CFG, "RADIUS Response-Authenticator verification failed");
return FALSE; return FALSE;
@@ -85,7 +85,7 @@ METHOD(signer_t, verify_signature, bool,
return FALSE; return FALSE;
} }
return this->mac->get_mac(this->mac, data, mac) && return this->mac->get_mac(this->mac, data, mac) &&
memeq(signature.ptr, mac, this->truncation); memeq_const(signature.ptr, mac, this->truncation);
} }
METHOD(signer_t, get_key_size, size_t, METHOD(signer_t, get_key_size, size_t,
@@ -136,4 +136,3 @@ signer_t *mac_signer_create(mac_t *mac, size_t len)
return &this->public; return &this->public;
} }
@@ -138,7 +138,7 @@ METHOD(signer_t, verify_signature, bool,
{ {
return FALSE; return FALSE;
} }
return memeq(signature.ptr, sig, signature.len); return memeq_const(signature.ptr, sig, signature.len);
} }
METHOD(signer_t, get_key_size, size_t, METHOD(signer_t, get_key_size, size_t,
+1 -1
View File
@@ -256,7 +256,7 @@ static bool verify_icv(private_ccm_aead_t *this, chunk_t plain, chunk_t assoc,
char buf[this->icv_size]; char buf[this->icv_size];
return create_icv(this, plain, assoc, iv, buf) && return create_icv(this, plain, assoc, iv, buf) &&
memeq(buf, icv, this->icv_size); memeq_const(buf, icv, this->icv_size);
} }
METHOD(aead_t, encrypt, bool, METHOD(aead_t, encrypt, bool,
+1 -1
View File
@@ -276,7 +276,7 @@ static bool verify_icv(private_gcm_aead_t *this, chunk_t assoc, chunk_t crypt,
char tmp[this->icv_size]; char tmp[this->icv_size];
return create_icv(this, assoc, crypt, j, tmp) && return create_icv(this, assoc, crypt, j, tmp) &&
memeq(tmp, icv, this->icv_size); memeq_const(tmp, icv, this->icv_size);
} }
METHOD(aead_t, encrypt, bool, METHOD(aead_t, encrypt, bool,
@@ -187,7 +187,7 @@ static bool verify_emsa_pkcs1_signature(private_gmp_rsa_public_key_t *this,
" %u bytes", em.len, data.len); " %u bytes", em.len, data.len);
goto end; goto end;
} }
success = memeq(em.ptr, data.ptr, data.len); success = memeq_const(em.ptr, data.ptr, data.len);
} }
else else
{ /* IKEv2 and X.509 certificate signatures */ { /* IKEv2 and X.509 certificate signatures */
@@ -258,7 +258,7 @@ static bool verify_emsa_pkcs1_signature(private_gmp_rsa_public_key_t *this,
goto end_parser; goto end_parser;
} }
hasher->destroy(hasher); hasher->destroy(hasher);
success = memeq(object.ptr, hash.ptr, hash.len); success = memeq_const(object.ptr, hash.ptr, hash.len);
free(hash.ptr); free(hash.ptr);
break; break;
} }
@@ -500,4 +500,3 @@ gmp_rsa_public_key_t *gmp_rsa_public_key_load(key_type_t type, va_list args)
return &this->public; return &this->public;
} }