Merge OEMCrypto KDF and usage functions
Since KDF functions are only used right before specific functions, this merges them to simplify internal state within OEMCrypto. Fixes: 299527712 Change-Id: I426cfcdc102bd73cf65cd809b213da2474f44b34
This commit is contained in:
committed by
Robert Shih
parent
b04fda2908
commit
488a4647db
@@ -37,6 +37,23 @@ using namespace std;
|
||||
|
||||
namespace wvoec {
|
||||
|
||||
namespace {
|
||||
|
||||
std::vector<uint8_t> CreateContext(const char* prefix,
|
||||
const std::vector<uint8_t>& context,
|
||||
uint32_t suffix) {
|
||||
std::vector<uint8_t> ret;
|
||||
// +1 to include the null-terminator
|
||||
ret.insert(ret.end(), prefix, prefix + strlen(prefix) + 1);
|
||||
ret.insert(ret.end(), context.begin(), context.end());
|
||||
const uint32_t suffix_net = htonl(suffix);
|
||||
auto* ptr = reinterpret_cast<const uint8_t*>(&suffix_net);
|
||||
ret.insert(ret.end(), ptr, ptr + sizeof(suffix_net));
|
||||
return ret;
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
void Encryptor::set_enc_key(const std::vector<uint8_t>& enc_key) {
|
||||
enc_key_ = enc_key;
|
||||
}
|
||||
@@ -119,8 +136,21 @@ void KeyDeriver::DeriveKey(const uint8_t* key, size_t master_key_size,
|
||||
// this function, then there is something wrong with the test program and its
|
||||
// dependency on BoringSSL.
|
||||
void KeyDeriver::DeriveKeys(const uint8_t* master_key, size_t master_key_size,
|
||||
const vector<uint8_t>& mac_key_context,
|
||||
const vector<uint8_t>& enc_key_context) {
|
||||
const vector<uint8_t>& context) {
|
||||
// TODO: Use ODK constants instead
|
||||
DeriveKeys(master_key, master_key_size, context, "AUTHENTICATION",
|
||||
"ENCRYPTION");
|
||||
}
|
||||
|
||||
void KeyDeriver::DeriveKeys(const uint8_t* master_key, size_t master_key_size,
|
||||
const vector<uint8_t>& context,
|
||||
const char* mac_label, const char* enc_label) {
|
||||
// TODO: Use ODK constants instead
|
||||
const std::vector<uint8_t> mac_key_context =
|
||||
CreateContext(mac_label, context, 0x200);
|
||||
const std::vector<uint8_t> enc_key_context =
|
||||
CreateContext(enc_label, context, 0x80);
|
||||
|
||||
// Generate derived key for mac key
|
||||
std::vector<uint8_t> mac_key_part2;
|
||||
DeriveKey(master_key, master_key_size, mac_key_context, 1, &mac_key_server_);
|
||||
|
||||
Reference in New Issue
Block a user