Coverity cleanups.
This commit is contained in:
parent
fcf4bcd7b7
commit
d629e01eb0
|
@ -154,7 +154,7 @@ private:
|
||||||
uint8_t k[HMAC_KEY_LENGTH];
|
uint8_t k[HMAC_KEY_LENGTH];
|
||||||
uint8_t buf[SHA256_HASH_SIZE];
|
uint8_t buf[SHA256_HASH_SIZE];
|
||||||
|
|
||||||
EMSHAResult reset();
|
EMSHAResult reset();
|
||||||
inline EMSHAResult finalResult(uint8_t *d);
|
inline EMSHAResult finalResult(uint8_t *d);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
40
hmac.cc
40
hmac.cc
|
@ -39,50 +39,58 @@ namespace emsha {
|
||||||
// These constants are used to keep track of the state of the HMAC.
|
// These constants are used to keep track of the state of the HMAC.
|
||||||
|
|
||||||
// HMAC is in a clean-slate state following a call to Reset().
|
// HMAC is in a clean-slate state following a call to Reset().
|
||||||
constexpr uint8_t HMAC_INIT = 0;
|
constexpr uint8_t HMAC_INIT = 0U;
|
||||||
|
|
||||||
// The ipad constants have been XOR'd into the key and written to the
|
// The ipad constants have been XOR'd into the key and written to the
|
||||||
// SHA-256 context.
|
// SHA-256 context.
|
||||||
constexpr uint8_t HMAC_IPAD = 1;
|
constexpr uint8_t HMAC_IPAD = 1U;
|
||||||
|
|
||||||
// The opad constants have been XOR'd into the key and written to the
|
// The opad constants have been XOR'd into the key and written to the
|
||||||
// SHA-256 context.
|
// SHA-256 context.
|
||||||
constexpr uint8_t HMAC_OPAD = 2;
|
constexpr uint8_t HMAC_OPAD = 2U;
|
||||||
|
|
||||||
// HMAC has been finalised
|
// HMAC has been finalised
|
||||||
constexpr uint8_t HMAC_FIN = 3;
|
constexpr uint8_t HMAC_FIN = 3U;
|
||||||
|
|
||||||
// HMAC is in an invalid state.
|
// HMAC is in an invalid state.
|
||||||
constexpr uint8_t HMAC_INVALID = 4;
|
constexpr uint8_t HMAC_INVALID = 4U;
|
||||||
|
|
||||||
|
|
||||||
static constexpr uint8_t ipad = 0x36;
|
static constexpr uint8_t ipad = 0x36U;
|
||||||
static constexpr uint8_t opad = 0x5c;
|
static constexpr uint8_t opad = 0x5cU;
|
||||||
|
|
||||||
|
|
||||||
HMAC::HMAC(const uint8_t *ik, uint32_t ikl)
|
HMAC::HMAC(const uint8_t *ik, uint32_t ikl)
|
||||||
: hstate(HMAC_INIT), k{0}, buf{0}
|
: hstate(HMAC_INIT), k{0U}, buf{0U}
|
||||||
{
|
{
|
||||||
std::fill(this->k, this->k+HMAC_KEY_LENGTH, 0);
|
std::fill(this->k, this->k+HMAC_KEY_LENGTH, 0);
|
||||||
|
|
||||||
if (ikl < HMAC_KEY_LENGTH) {
|
if (ikl < HMAC_KEY_LENGTH) {
|
||||||
for (uint32_t i = 0; i < ikl; i++) {
|
for (uint32_t i = 0U; i < ikl; i++) {
|
||||||
this->k[i] = ik[i];
|
this->k[i] = ik[i];
|
||||||
}
|
}
|
||||||
while (ikl < HMAC_KEY_LENGTH) {
|
while (ikl < HMAC_KEY_LENGTH) {
|
||||||
this->k[ikl++] = 0;
|
this->k[ikl++] = 0U;
|
||||||
}
|
}
|
||||||
} else if (ikl > HMAC_KEY_LENGTH) {
|
} else if (ikl > HMAC_KEY_LENGTH) {
|
||||||
this->ctx.Update(ik, ikl);
|
if (this->ctx.Update(ik, ikl) != EMSHAResult::OK) {
|
||||||
this->ctx.Result(this->k);
|
this->hstate = HMAC_INVALID;
|
||||||
this->ctx.Reset();
|
} else if (this->ctx.Result(this->k) != EMSHAResult::OK) {
|
||||||
|
this->hstate = HMAC_INVALID;
|
||||||
|
} else if (this->ctx.Reset() != EMSHAResult::OK) {
|
||||||
|
this->hstate = HMAC_INVALID;
|
||||||
|
} else {
|
||||||
|
this->hstate = HMAC_INIT;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
for (uint32_t i = 0; i < ikl; i++) {
|
for (uint32_t i = 0U; i < ikl; i++) {
|
||||||
this->k[i] = ik[i];
|
this->k[i] = ik[i];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
this->reset();
|
if (this->reset() != EMSHAResult::OK) {
|
||||||
|
this->hstate = HMAC_INVALID;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -91,7 +99,7 @@ HMAC::HMAC(const uint8_t *ik, uint32_t ikl)
|
||||||
*/
|
*/
|
||||||
HMAC::~HMAC()
|
HMAC::~HMAC()
|
||||||
{
|
{
|
||||||
this->reset();
|
(void)this->reset();
|
||||||
std::fill(this->k, this->k + HMAC_KEY_LENGTH, 0);
|
std::fill(this->k, this->k + HMAC_KEY_LENGTH, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -405,7 +405,7 @@ SHA256::Result(std::uint8_t *digest)
|
||||||
if (nullptr == digest) { res = EMSHAResult::NullPointer; }
|
if (nullptr == digest) { res = EMSHAResult::NullPointer; }
|
||||||
|
|
||||||
// If the SHA256 object is in a bad state, don't proceed.
|
// If the SHA256 object is in a bad state, don't proceed.
|
||||||
else if (EMSHAResult::OK != this->hStatus) { res = this->hStatus; }
|
else if (this->hStatus != EMSHAResult::OK) { res = this->hStatus; }
|
||||||
|
|
||||||
// Invariants satisfied by here.
|
// Invariants satisfied by here.
|
||||||
else if (this->hComplete == 0U) {
|
else if (this->hComplete == 0U) {
|
||||||
|
|
Loading…
Reference in New Issue