Update key control block verification
This is a merge of http://go/wvgerrit/13752 Replace the mock's macro with a memcmp because that is even cleaner. Change-Id: Ie402689ca9e14a67736db7eea928204f067427ac
This commit is contained in:
@@ -14,15 +14,11 @@
|
|||||||
|
|
||||||
namespace wvoec_mock {
|
namespace wvoec_mock {
|
||||||
|
|
||||||
#define FOURCC(c1, c2, c3, c4) \
|
|
||||||
(c1 << 24 | c2 << 16 | c3 << 8 | c4)
|
|
||||||
|
|
||||||
bool KeyControlBlock::Validate() {
|
bool KeyControlBlock::Validate() {
|
||||||
if ((FOURCC('k', 'c', 't', 'l') != verification_) && // original verification
|
if (memcmp(verification_, "kctl", 4) && // original verification
|
||||||
(FOURCC('k', 'c', '0', '9') != verification_) && // add in version 9 api
|
memcmp(verification_, "kc09", 4) && // add in version 9 api
|
||||||
(FOURCC('k', 'c', '1', '0') != verification_)) { // add in version 10 api
|
memcmp(verification_, "kc10", 4)) { // add in version 10 api
|
||||||
LOGE("KCB: BAD verification string: %08X (not %08X or %08X)", verification_,
|
LOGE("KCB: BAD verification string: %4.4s", verification_);
|
||||||
0x6b63746c, 0x6b633039);
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
valid_ = true;
|
valid_ = true;
|
||||||
@@ -49,7 +45,7 @@ KeyControlBlock::KeyControlBlock(
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
verification_ = ExtractField(key_control_string, 0);
|
memcpy(verification_, &key_control_string[0], 4);
|
||||||
duration_ = ExtractField(key_control_string, 1);
|
duration_ = ExtractField(key_control_string, 1);
|
||||||
nonce_ = ExtractField(key_control_string, 2);
|
nonce_ = ExtractField(key_control_string, 2);
|
||||||
control_bits_ = ExtractField(key_control_string, 3);
|
control_bits_ = ExtractField(key_control_string, 3);
|
||||||
|
|||||||
@@ -44,14 +44,14 @@ class KeyControlBlock {
|
|||||||
uint32_t duration() const { return duration_; }
|
uint32_t duration() const { return duration_; }
|
||||||
void set_duration(uint32_t duration) { duration_ = duration; }
|
void set_duration(uint32_t duration) { duration_ = duration; }
|
||||||
uint32_t nonce() const { return nonce_; }
|
uint32_t nonce() const { return nonce_; }
|
||||||
uint32_t verification() const { return verification_; }
|
const char* verification() const { return verification_; }
|
||||||
uint32_t control_bits() const { return control_bits_; }
|
uint32_t control_bits() const { return control_bits_; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
uint32_t ExtractField(const std::vector<uint8_t>& str, int idx);
|
uint32_t ExtractField(const std::vector<uint8_t>& str, int idx);
|
||||||
|
|
||||||
bool valid_;
|
bool valid_;
|
||||||
uint32_t verification_;
|
char verification_[4];
|
||||||
uint32_t duration_;
|
uint32_t duration_;
|
||||||
uint32_t nonce_;
|
uint32_t nonce_;
|
||||||
uint32_t control_bits_;
|
uint32_t control_bits_;
|
||||||
|
|||||||
Reference in New Issue
Block a user