Write/Read flags field directly to/from variable
This commit is contained in:
committed by
Andreas Steffen
parent
d2a905ea98
commit
157c9c173d
@@ -241,28 +241,10 @@ METHOD(pa_tnc_attr_t, build, void,
|
|||||||
private_tcg_pts_attr_simple_comp_evid_t *this)
|
private_tcg_pts_attr_simple_comp_evid_t *this)
|
||||||
{
|
{
|
||||||
bio_writer_t *writer;
|
bio_writer_t *writer;
|
||||||
u_int8_t flags = 0, qualifier = 0;
|
u_int8_t qualifier = 0;
|
||||||
|
|
||||||
writer = bio_writer_create(PTS_SIMPLE_COMP_EVID_SIZE);
|
writer = bio_writer_create(PTS_SIMPLE_COMP_EVID_SIZE);
|
||||||
/* Determine the flags to set*/
|
writer->write_uint8(writer, this->flags);
|
||||||
if (this->pcr_info_included)
|
|
||||||
{
|
|
||||||
flags += 128;
|
|
||||||
}
|
|
||||||
if (this->flags == PTS_SIMPLE_COMP_EVID_FLAG_NO_VER)
|
|
||||||
{
|
|
||||||
flags += 32;
|
|
||||||
}
|
|
||||||
else if (this->flags == PTS_SIMPLE_COMP_EVID_FLAG_VER_FAIL)
|
|
||||||
{
|
|
||||||
flags += 64;
|
|
||||||
}
|
|
||||||
else if (this->flags == PTS_SIMPLE_COMP_EVID_FLAG_VER_PASS)
|
|
||||||
{
|
|
||||||
flags += 96;
|
|
||||||
}
|
|
||||||
|
|
||||||
writer->write_uint8(writer, flags);
|
|
||||||
writer->write_uint24 (writer, this->depth);
|
writer->write_uint24 (writer, this->depth);
|
||||||
writer->write_uint24 (writer, this->comp_vendor_id);
|
writer->write_uint24 (writer, this->comp_vendor_id);
|
||||||
|
|
||||||
@@ -341,27 +323,7 @@ METHOD(pa_tnc_attr_t, process, status_t,
|
|||||||
reader = bio_reader_create(this->value);
|
reader = bio_reader_create(this->value);
|
||||||
|
|
||||||
reader->read_uint8(reader, &flags);
|
reader->read_uint8(reader, &flags);
|
||||||
/* Determine the flags to set*/
|
this->flags = flags;
|
||||||
if ((flags >> 7) & 1)
|
|
||||||
{
|
|
||||||
this->pcr_info_included = TRUE;
|
|
||||||
}
|
|
||||||
if (!((flags >> 6) & 1) && !((flags >> 5) & 1))
|
|
||||||
{
|
|
||||||
this->flags = PTS_SIMPLE_COMP_EVID_FLAG_NO_VALID;
|
|
||||||
}
|
|
||||||
else if (!((flags >> 6) & 1) && ((flags >> 5) & 1))
|
|
||||||
{
|
|
||||||
this->flags = PTS_SIMPLE_COMP_EVID_FLAG_NO_VER;
|
|
||||||
}
|
|
||||||
else if (((flags >> 6) & 1) && !((flags >> 5) & 1))
|
|
||||||
{
|
|
||||||
this->flags = PTS_SIMPLE_COMP_EVID_FLAG_VER_FAIL;
|
|
||||||
}
|
|
||||||
else if (((flags >> 6) & 1) && ((flags >> 5) & 1))
|
|
||||||
{
|
|
||||||
this->flags = PTS_SIMPLE_COMP_EVID_FLAG_VER_PASS;
|
|
||||||
}
|
|
||||||
|
|
||||||
reader->read_uint24(reader, &this->depth);
|
reader->read_uint24(reader, &this->depth);
|
||||||
reader->read_uint24(reader, &this->comp_vendor_id);
|
reader->read_uint24(reader, &this->comp_vendor_id);
|
||||||
|
|||||||
@@ -142,29 +142,9 @@ METHOD(pa_tnc_attr_t, build, void,
|
|||||||
private_tcg_pts_attr_simple_evid_final_t *this)
|
private_tcg_pts_attr_simple_evid_final_t *this)
|
||||||
{
|
{
|
||||||
bio_writer_t *writer;
|
bio_writer_t *writer;
|
||||||
u_int8_t flags = 0;
|
|
||||||
|
|
||||||
writer = bio_writer_create(PTS_SIMPLE_EVID_FINAL_SIZE);
|
writer = bio_writer_create(PTS_SIMPLE_EVID_FINAL_SIZE);
|
||||||
|
writer->write_uint8 (writer, this->flags);
|
||||||
/* Determine the flags to set*/
|
|
||||||
if (this->flags == PTS_SIMPLE_EVID_FINAL_FLAG_TPM_QUOTE_INFO)
|
|
||||||
{
|
|
||||||
flags += 64;
|
|
||||||
}
|
|
||||||
else if (this->flags == PTS_SIMPLE_EVID_FINAL_FLAG_TPM_QUOTE_INFO2)
|
|
||||||
{
|
|
||||||
flags += 128;
|
|
||||||
}
|
|
||||||
else if (this->flags == PTS_SIMPLE_EVID_FINAL_FLAG_TPM_QUOTE_INFO2_CAP_VER)
|
|
||||||
{
|
|
||||||
flags += 192;
|
|
||||||
}
|
|
||||||
if (this->evid_sign_included)
|
|
||||||
{
|
|
||||||
flags += 32;
|
|
||||||
}
|
|
||||||
|
|
||||||
writer->write_uint8 (writer, flags);
|
|
||||||
writer->write_uint8 (writer, PTS_SIMPLE_EVID_FINAL_RESERVED);
|
writer->write_uint8 (writer, PTS_SIMPLE_EVID_FINAL_RESERVED);
|
||||||
|
|
||||||
/* Optional fields */
|
/* Optional fields */
|
||||||
@@ -208,31 +188,9 @@ METHOD(pa_tnc_attr_t, process, status_t,
|
|||||||
reader = bio_reader_create(this->value);
|
reader = bio_reader_create(this->value);
|
||||||
|
|
||||||
reader->read_uint8(reader, &flags);
|
reader->read_uint8(reader, &flags);
|
||||||
|
this->flags = flags;
|
||||||
reader->read_uint8(reader, &reserved);
|
reader->read_uint8(reader, &reserved);
|
||||||
|
|
||||||
/* Determine the flags to set*/
|
|
||||||
if ((flags >> 5) & 1)
|
|
||||||
{
|
|
||||||
this->flags |= PTS_SIMPLE_EVID_FINAL_FLAG_EVID;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!((flags >> 6) & PTS_SIMPLE_EVID_FINAL_FLAG_NO))
|
|
||||||
{
|
|
||||||
this->flags = PTS_SIMPLE_EVID_FINAL_FLAG_NO;
|
|
||||||
}
|
|
||||||
else if (!((flags >> 7) & 1) && ((flags >> 6) & 1))
|
|
||||||
{
|
|
||||||
this->flags = PTS_SIMPLE_EVID_FINAL_FLAG_TPM_QUOTE_INFO;
|
|
||||||
}
|
|
||||||
else if (((flags >> 7) & 1) && !((flags >> 6) & 1))
|
|
||||||
{
|
|
||||||
this->flags = PTS_SIMPLE_EVID_FINAL_FLAG_TPM_QUOTE_INFO2;
|
|
||||||
}
|
|
||||||
else if (((flags >> 7) & 1) && ((flags >> 6) & 1))
|
|
||||||
{
|
|
||||||
this->flags = PTS_SIMPLE_EVID_FINAL_FLAG_TPM_QUOTE_INFO2_CAP_VER;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Optional Composite Hash Algorithm and TPM PCR Composite field is included */
|
/* Optional Composite Hash Algorithm and TPM PCR Composite field is included */
|
||||||
if ((flags >> 6) & PTS_SIMPLE_EVID_FINAL_FLAG_NO)
|
if ((flags >> 6) & PTS_SIMPLE_EVID_FINAL_FLAG_NO)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user