return SUCCESS;
}
-METHOD(pa_tnc_attr_t, destroy, void,
- private_tcg_seg_attr_max_size_t *this)
+METHOD(pa_tnc_attr_t, add_segment, void,
+ private_tcg_seg_attr_max_size_t *this, chunk_t segment)
{
- if (ref_put(&this->ref))
- {
- free(this->value.ptr);
- free(this);
- }
+ this->value = chunk_cat("mc", this->value, segment);
}
METHOD(pa_tnc_attr_t, get_ref, pa_tnc_attr_t*,
return &this->public.pa_tnc_attribute;
}
+METHOD(pa_tnc_attr_t, destroy, void,
+ private_tcg_seg_attr_max_size_t *this)
+{
+ if (ref_put(&this->ref))
+ {
+ free(this->value.ptr);
+ free(this);
+ }
+}
+
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)
.set_noskip_flag = _set_noskip_flag,
.build = _build,
.process = _process,
+ .add_segment = _add_segment,
.get_ref = _get_ref,
.destroy = _destroy,
},
.set_noskip_flag = _set_noskip_flag,
.build = _build,
.process = _process,
+ .add_segment = _add_segment,
.get_ref = _get_ref,
.destroy = _destroy,
},
return SUCCESS;
}
-METHOD(pa_tnc_attr_t, destroy, void,
- private_tcg_seg_attr_next_seg_t *this)
+METHOD(pa_tnc_attr_t, add_segment, void,
+ private_tcg_seg_attr_next_seg_t *this, chunk_t segment)
{
- if (ref_put(&this->ref))
- {
- free(this->value.ptr);
- free(this);
- }
+ this->value = chunk_cat("mc", this->value, segment);
}
METHOD(pa_tnc_attr_t, get_ref, pa_tnc_attr_t*,
return &this->public.pa_tnc_attribute;
}
+METHOD(pa_tnc_attr_t, destroy, void,
+ private_tcg_seg_attr_next_seg_t *this)
+{
+ if (ref_put(&this->ref))
+ {
+ free(this->value.ptr);
+ free(this);
+ }
+}
+
METHOD(tcg_seg_attr_next_seg_t, get_base_attr_id, uint32_t,
private_tcg_seg_attr_next_seg_t *this)
{
.set_noskip_flag = _set_noskip_flag,
.build = _build,
.process = _process,
+ .add_segment = _add_segment,
.get_ref = _get_ref,
.destroy = _destroy,
},
.set_noskip_flag = _set_noskip_flag,
.build = _build,
.process = _process,
+ .add_segment = _add_segment,
.get_ref = _get_ref,
.destroy = _destroy,
},
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);
return SUCCESS;
}
-METHOD(pa_tnc_attr_t, destroy, void,
- private_tcg_seg_attr_seg_env_t *this)
+METHOD(pa_tnc_attr_t, add_segment, void,
+ private_tcg_seg_attr_seg_env_t *this, chunk_t segment)
{
- if (ref_put(&this->ref))
- {
- free(this->value.ptr);
- free(this);
- }
+ /* no segments are expected */
}
METHOD(pa_tnc_attr_t, get_ref, pa_tnc_attr_t*,
return &this->public.pa_tnc_attribute;
}
+METHOD(pa_tnc_attr_t, destroy, void,
+ private_tcg_seg_attr_seg_env_t *this)
+{
+ if (ref_put(&this->ref))
+ {
+ free(this->value.ptr);
+ free(this);
+ }
+}
+
METHOD(tcg_seg_attr_seg_env_t, get_segment, chunk_t,
private_tcg_seg_attr_seg_env_t *this, uint8_t *flags)
{
.set_noskip_flag = _set_noskip_flag,
.build = _build,
.process = _process,
+ .add_segment = _add_segment,
.get_ref = _get_ref,
.destroy = _destroy,
},
.set_noskip_flag = _set_noskip_flag,
.build = _build,
.process = _process,
+ .add_segment = _add_segment,
.get_ref = _get_ref,
.destroy = _destroy,
},