Added add_segment() method to TCG/SEG attributes

This commit is contained in:
Andreas Steffen
2014-10-05 19:14:38 +02:00
parent a5dfe7a29a
commit 01be87d086
3 changed files with 49 additions and 25 deletions
+15 -7
View File
@@ -148,6 +148,19 @@ METHOD(pa_tnc_attr_t, process, status_t,
return SUCCESS;
}
METHOD(pa_tnc_attr_t, add_segment, void,
private_tcg_seg_attr_max_size_t *this, chunk_t segment)
{
this->value = chunk_cat("mc", this->value, segment);
}
METHOD(pa_tnc_attr_t, get_ref, pa_tnc_attr_t*,
private_tcg_seg_attr_max_size_t *this)
{
ref_get(&this->ref);
return &this->public.pa_tnc_attribute;
}
METHOD(pa_tnc_attr_t, destroy, void,
private_tcg_seg_attr_max_size_t *this)
{
@@ -158,13 +171,6 @@ METHOD(pa_tnc_attr_t, destroy, void,
}
}
METHOD(pa_tnc_attr_t, get_ref, pa_tnc_attr_t*,
private_tcg_seg_attr_max_size_t *this)
{
ref_get(&this->ref);
return &this->public.pa_tnc_attribute;
}
METHOD(tcg_seg_attr_max_size_t, get_attr_size, void,
private_tcg_seg_attr_max_size_t *this, uint32_t *max_attr_size,
uint32_t *max_seg_size)
@@ -197,6 +203,7 @@ pa_tnc_attr_t* tcg_seg_attr_max_size_create(uint32_t max_attr_size,
.set_noskip_flag = _set_noskip_flag,
.build = _build,
.process = _process,
.add_segment = _add_segment,
.get_ref = _get_ref,
.destroy = _destroy,
},
@@ -230,6 +237,7 @@ pa_tnc_attr_t *tcg_seg_attr_max_size_create_from_data(size_t length,
.set_noskip_flag = _set_noskip_flag,
.build = _build,
.process = _process,
.add_segment = _add_segment,
.get_ref = _get_ref,
.destroy = _destroy,
},
+15 -7
View File
@@ -157,6 +157,19 @@ METHOD(pa_tnc_attr_t, process, status_t,
return SUCCESS;
}
METHOD(pa_tnc_attr_t, add_segment, void,
private_tcg_seg_attr_next_seg_t *this, chunk_t segment)
{
this->value = chunk_cat("mc", this->value, segment);
}
METHOD(pa_tnc_attr_t, get_ref, pa_tnc_attr_t*,
private_tcg_seg_attr_next_seg_t *this)
{
ref_get(&this->ref);
return &this->public.pa_tnc_attribute;
}
METHOD(pa_tnc_attr_t, destroy, void,
private_tcg_seg_attr_next_seg_t *this)
{
@@ -167,13 +180,6 @@ METHOD(pa_tnc_attr_t, destroy, void,
}
}
METHOD(pa_tnc_attr_t, get_ref, pa_tnc_attr_t*,
private_tcg_seg_attr_next_seg_t *this)
{
ref_get(&this->ref);
return &this->public.pa_tnc_attribute;
}
METHOD(tcg_seg_attr_next_seg_t, get_base_attr_id, uint32_t,
private_tcg_seg_attr_next_seg_t *this)
{
@@ -202,6 +208,7 @@ pa_tnc_attr_t* tcg_seg_attr_next_seg_create(uint32_t base_attr_id, bool cancel)
.set_noskip_flag = _set_noskip_flag,
.build = _build,
.process = _process,
.add_segment = _add_segment,
.get_ref = _get_ref,
.destroy = _destroy,
},
@@ -234,6 +241,7 @@ pa_tnc_attr_t *tcg_seg_attr_next_seg_create_from_data(size_t length,
.set_noskip_flag = _set_noskip_flag,
.build = _build,
.process = _process,
.add_segment = _add_segment,
.get_ref = _get_ref,
.destroy = _destroy,
},
+19 -11
View File
@@ -127,14 +127,14 @@ METHOD(pa_tnc_attr_t, process, status_t,
if (this->value.len < this->length)
{
DBG1(DBG_TNC, "segmentation not allowed for %N", tcg_attr_names,
this->type.type);
DBG1(DBG_TNC, "segmentation not allowed for %N/%N", pen_names, PEN_TCG,
tcg_attr_names, this->type.type);
return FAILED;
}
if (this->value.len < TCG_SEG_ATTR_SEG_ENV_HEADER)
{
DBG1(DBG_TNC, "insufficient data for %N", tcg_attr_names,
this->type.type);
DBG1(DBG_TNC, "insufficient data for %N/%N", pen_names, PEN_TCG,
tcg_attr_names, this->type.type);
return FAILED;
}
reader = bio_reader_create(this->value);
@@ -145,6 +145,19 @@ METHOD(pa_tnc_attr_t, process, status_t,
return SUCCESS;
}
METHOD(pa_tnc_attr_t, add_segment, void,
private_tcg_seg_attr_seg_env_t *this, chunk_t segment)
{
/* no segments are expected */
}
METHOD(pa_tnc_attr_t, get_ref, pa_tnc_attr_t*,
private_tcg_seg_attr_seg_env_t *this)
{
ref_get(&this->ref);
return &this->public.pa_tnc_attribute;
}
METHOD(pa_tnc_attr_t, destroy, void,
private_tcg_seg_attr_seg_env_t *this)
{
@@ -155,13 +168,6 @@ METHOD(pa_tnc_attr_t, destroy, void,
}
}
METHOD(pa_tnc_attr_t, get_ref, pa_tnc_attr_t*,
private_tcg_seg_attr_seg_env_t *this)
{
ref_get(&this->ref);
return &this->public.pa_tnc_attribute;
}
METHOD(tcg_seg_attr_seg_env_t, get_segment, chunk_t,
private_tcg_seg_attr_seg_env_t *this, uint8_t *flags)
{
@@ -195,6 +201,7 @@ pa_tnc_attr_t* tcg_seg_attr_seg_env_create(chunk_t segment, uint8_t flags,
.set_noskip_flag = _set_noskip_flag,
.build = _build,
.process = _process,
.add_segment = _add_segment,
.get_ref = _get_ref,
.destroy = _destroy,
},
@@ -233,6 +240,7 @@ pa_tnc_attr_t *tcg_seg_attr_seg_env_create_from_data(size_t length,
.set_noskip_flag = _set_noskip_flag,
.build = _build,
.process = _process,
.add_segment = _add_segment,
.get_ref = _get_ref,
.destroy = _destroy,
},