]> git.ipfire.org Git - thirdparty/strongswan.git/commitdiff
Added add_segment() method to TCG/PTS attributes
authorAndreas Steffen <andreas.steffen@strongswan.org>
Sun, 5 Oct 2014 17:43:27 +0000 (19:43 +0200)
committerAndreas Steffen <andreas.steffen@strongswan.org>
Sun, 5 Oct 2014 17:43:27 +0000 (19:43 +0200)
18 files changed:
src/libimcv/seg/seg_env.c
src/libimcv/tcg/pts/tcg_pts_attr_aik.c
src/libimcv/tcg/pts/tcg_pts_attr_dh_nonce_finish.c
src/libimcv/tcg/pts/tcg_pts_attr_dh_nonce_params_req.c
src/libimcv/tcg/pts/tcg_pts_attr_dh_nonce_params_resp.c
src/libimcv/tcg/pts/tcg_pts_attr_file_meas.c
src/libimcv/tcg/pts/tcg_pts_attr_gen_attest_evid.c
src/libimcv/tcg/pts/tcg_pts_attr_get_aik.c
src/libimcv/tcg/pts/tcg_pts_attr_get_tpm_version_info.c
src/libimcv/tcg/pts/tcg_pts_attr_meas_algo.c
src/libimcv/tcg/pts/tcg_pts_attr_proto_caps.c
src/libimcv/tcg/pts/tcg_pts_attr_req_file_meas.c
src/libimcv/tcg/pts/tcg_pts_attr_req_file_meta.c
src/libimcv/tcg/pts/tcg_pts_attr_req_func_comp_evid.c
src/libimcv/tcg/pts/tcg_pts_attr_simple_comp_evid.c
src/libimcv/tcg/pts/tcg_pts_attr_simple_evid_final.c
src/libimcv/tcg/pts/tcg_pts_attr_tpm_version_info.c
src/libimcv/tcg/pts/tcg_pts_attr_unix_file_meta.c

index b961589bfe83d061de30466fd4c7032b920338ea..c47ce2934164917be3886c236a7b255ee06f3a84 100644 (file)
@@ -171,11 +171,6 @@ METHOD(seg_env_t, add_segment, bool,
        chunk_t msg_info;
        status_t status;
 
-       /* not all attributes might have implemented the add_segment method */
-       if (!this->base_attr->add_segment)
-       {
-               return FALSE;
-       }
        this->base_attr->add_segment(this->base_attr, segment);
        status = this->base_attr->process(this->base_attr, &attr_offset);
 
index ad1ad7e8ad80a94e0ee7da19691d79e8e5000b9f..194cf1b68fa360b9895a05327a73706563c15fca 100644 (file)
@@ -173,6 +173,12 @@ METHOD(pa_tnc_attr_t, process, status_t,
        return SUCCESS;
 }
 
+METHOD(pa_tnc_attr_t, add_segment, void,
+       private_tcg_pts_attr_aik_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_pts_attr_aik_t *this)
 {
@@ -213,6 +219,7 @@ pa_tnc_attr_t *tcg_pts_attr_aik_create(certificate_t *aik)
                                .set_noskip_flag = _set_noskip_flag,
                                .build = _build,
                                .process = _process,
+                               .add_segment = _add_segment,
                                .get_ref = _get_ref,
                                .destroy = _destroy,
                        },
@@ -243,6 +250,7 @@ pa_tnc_attr_t *tcg_pts_attr_aik_create_from_data(size_t length, chunk_t data)
                                .set_noskip_flag = _set_noskip_flag,
                                .build = _build,
                                .process = _process,
+                               .add_segment = _add_segment,
                                .get_ref = _get_ref,
                                .destroy = _destroy,
                        },
index 8a09720b709c5d4148455f839ac8d1caecb3e939..2a1506898490763efe4a059299233462bb84c8d4 100644 (file)
@@ -172,6 +172,12 @@ METHOD(pa_tnc_attr_t, process, status_t,
        return SUCCESS;
 }
 
+METHOD(pa_tnc_attr_t, add_segment, void,
+       private_tcg_pts_attr_dh_nonce_finish_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_pts_attr_dh_nonce_finish_t *this)
 {
@@ -228,6 +234,7 @@ pa_tnc_attr_t *tcg_pts_attr_dh_nonce_finish_create(
                                .set_noskip_flag = _set_noskip_flag,
                                .build = _build,
                                .process = _process,
+                               .add_segment = _add_segment,
                                .get_ref = _get_ref,
                                .destroy = _destroy,
                        },
@@ -262,6 +269,7 @@ pa_tnc_attr_t *tcg_pts_attr_dh_nonce_finish_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,
                        },
index 6ad3157f1155022751b821e702c300ee3582fee8..0349ce53e85b8074b8162b757fccde7d0bb83646 100644 (file)
@@ -156,6 +156,12 @@ METHOD(pa_tnc_attr_t, process, status_t,
        return SUCCESS;
 }
 
+METHOD(pa_tnc_attr_t, add_segment, void,
+       private_tcg_pts_attr_dh_nonce_params_req_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_pts_attr_dh_nonce_params_req_t *this)
 {
@@ -202,6 +208,7 @@ pa_tnc_attr_t *tcg_pts_attr_dh_nonce_params_req_create(u_int8_t min_nonce_len,
                                .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_pts_attr_dh_nonce_params_req_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,
                        },
index 9dfc81fb48b5bbc9b5f082a528c8561e5ec6cfc4..fa1dbdd3ae003497ab6efce5a6f675cef9c871c5 100644 (file)
@@ -182,6 +182,12 @@ METHOD(pa_tnc_attr_t, process, status_t,
        return SUCCESS;
 }
 
+METHOD(pa_tnc_attr_t, add_segment, void,
+       private_tcg_pts_attr_dh_nonce_params_resp_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_pts_attr_dh_nonce_params_resp_t *this)
 {
@@ -244,6 +250,7 @@ pa_tnc_attr_t *tcg_pts_attr_dh_nonce_params_resp_create(pts_dh_group_t dh_group,
                                .set_noskip_flag = _set_noskip_flag,
                                .build = _build,
                                .process = _process,
+                               .add_segment = _add_segment,
                                .get_ref = _get_ref,
                                .destroy = _destroy,
                        },
@@ -280,6 +287,7 @@ pa_tnc_attr_t *tcg_pts_attr_dh_nonce_params_resp_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,
                        },
index 723f8f53eb97000cec2bf1698073ba14b4d62dd2..7ab444ebde153f0946a79b02a9dc3c1151a0417a 100644 (file)
@@ -224,6 +224,12 @@ end:
        return status;
 }
 
+METHOD(pa_tnc_attr_t, add_segment, void,
+       private_tcg_pts_attr_file_meas_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_pts_attr_file_meas_t *this)
 {
@@ -263,6 +269,7 @@ pa_tnc_attr_t *tcg_pts_attr_file_meas_create(pts_file_meas_t *measurements)
                                .set_noskip_flag = _set_noskip_flag,
                                .build = _build,
                                .process = _process,
+                               .add_segment = _add_segment,
                                .get_ref = _get_ref,
                                .destroy = _destroy,
                        },
@@ -294,6 +301,7 @@ pa_tnc_attr_t *tcg_pts_attr_file_meas_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,
                        },
index d724819fa2a409a1c61b7a3d09c9b147a8625bcf..b7b4d7e3f7ba94104404098ca0c73b452399ca54 100644 (file)
@@ -141,6 +141,12 @@ METHOD(pa_tnc_attr_t, process, status_t,
        return SUCCESS;
 }
 
+METHOD(pa_tnc_attr_t, add_segment, void,
+       private_tcg_pts_attr_gen_attest_evid_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_pts_attr_gen_attest_evid_t *this)
 {
@@ -174,6 +180,7 @@ pa_tnc_attr_t *tcg_pts_attr_gen_attest_evid_create()
                                .set_noskip_flag = _set_noskip_flag,
                                .build = _build,
                                .process = _process,
+                               .add_segment = _add_segment,
                                .get_ref = _get_ref,
                                .destroy = _destroy,
                        },
@@ -203,6 +210,7 @@ pa_tnc_attr_t *tcg_pts_attr_gen_attest_evid_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,
                        },
index ed98197acf3682bd2dc299c987ae1b184c6b89b8..8fda2b1f59959dc73f06ff8d5d9689ab8f762003 100644 (file)
@@ -114,6 +114,12 @@ METHOD(pa_tnc_attr_t, build, void,
        writer->destroy(writer);
 }
 
+METHOD(pa_tnc_attr_t, add_segment, void,
+       private_tcg_pts_attr_get_aik_t *this, chunk_t segment)
+{
+       this->value = chunk_cat("mc", this->value, segment);
+}
+
 METHOD(pa_tnc_attr_t, process, status_t,
        private_tcg_pts_attr_get_aik_t *this, u_int32_t *offset)
 {
@@ -171,6 +177,7 @@ pa_tnc_attr_t *tcg_pts_attr_get_aik_create()
                                .set_noskip_flag = _set_noskip_flag,
                                .build = _build,
                                .process = _process,
+                               .add_segment = _add_segment,
                                .get_ref = _get_ref,
                                .destroy = _destroy,
                        },
@@ -200,6 +207,7 @@ pa_tnc_attr_t *tcg_pts_attr_get_aik_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,
                        },
index c922f2f2357b328ab161dfddc7a46135665d5fc3..a4c9dba87e649cfe35f1b27be526bca269663d20 100644 (file)
@@ -141,6 +141,12 @@ METHOD(pa_tnc_attr_t, process, status_t,
        return SUCCESS;
 }
 
+METHOD(pa_tnc_attr_t, add_segment, void,
+       private_tcg_pts_attr_get_tpm_version_info_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_pts_attr_get_tpm_version_info_t *this)
 {
@@ -174,6 +180,7 @@ pa_tnc_attr_t *tcg_pts_attr_get_tpm_version_info_create()
                                .set_noskip_flag = _set_noskip_flag,
                                .build = _build,
                                .process = _process,
+                               .add_segment = _add_segment,
                                .get_ref = _get_ref,
                                .destroy = _destroy,
                        },
@@ -203,6 +210,7 @@ pa_tnc_attr_t *tcg_pts_attr_get_tpm_version_info_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,
                        },
index 4445079b47b6e734f3e74ab06d6d4e04a06323ee..8b0502a919b9e3953bcb9080148aae0f22b9af0c 100644 (file)
@@ -146,14 +146,10 @@ METHOD(pa_tnc_attr_t, process, status_t,
        return SUCCESS;
 }
 
-METHOD(pa_tnc_attr_t, destroy, void,
-       private_tcg_pts_attr_meas_algo_t *this)
+METHOD(pa_tnc_attr_t, add_segment, void,
+       private_tcg_pts_attr_meas_algo_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*,
@@ -163,6 +159,16 @@ 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_pts_attr_meas_algo_t *this)
+{
+       if (ref_put(&this->ref))
+       {
+               free(this->value.ptr);
+               free(this);
+       }
+}
+
 METHOD(tcg_pts_attr_meas_algo_t, get_algorithms, pts_meas_algorithms_t,
        private_tcg_pts_attr_meas_algo_t *this)
 {
@@ -186,6 +192,7 @@ pa_tnc_attr_t *tcg_pts_attr_meas_algo_create(pts_meas_algorithms_t algorithms,
                                .set_noskip_flag = _set_noskip_flag,
                                .build = _build,
                                .process = _process,
+                               .add_segment = _add_segment,
                                .get_ref = _get_ref,
                                .destroy = _destroy,
                        },
@@ -219,6 +226,7 @@ pa_tnc_attr_t *tcg_pts_attr_meas_algo_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,
                        },
index 501e24dadc447cfdc43141da7b2478ea76c50fc3..0a562c0bca1d3bff9304fad61f9c1081b9c5943c 100644 (file)
@@ -148,14 +148,10 @@ METHOD(pa_tnc_attr_t, process, status_t,
        return SUCCESS;
 }
 
-METHOD(pa_tnc_attr_t, destroy, void,
-       private_tcg_pts_attr_proto_caps_t *this)
+METHOD(pa_tnc_attr_t, add_segment, void,
+       private_tcg_pts_attr_proto_caps_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*,
@@ -165,6 +161,16 @@ 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_pts_attr_proto_caps_t *this)
+{
+       if (ref_put(&this->ref))
+       {
+               free(this->value.ptr);
+               free(this);
+       }
+}
+
 METHOD(tcg_pts_attr_proto_caps_t, get_flags, pts_proto_caps_flag_t,
        private_tcg_pts_attr_proto_caps_t *this)
 {
@@ -188,6 +194,7 @@ pa_tnc_attr_t *tcg_pts_attr_proto_caps_create(pts_proto_caps_flag_t flags,
                                .set_noskip_flag = _set_noskip_flag,
                                .build = _build,
                                .process = _process,
+                               .add_segment = _add_segment,
                                .get_ref = _get_ref,
                                .destroy = _destroy,
                        },
@@ -220,6 +227,7 @@ pa_tnc_attr_t *tcg_pts_attr_proto_caps_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,
                        },
index c4d192c352e2baa025d9da27ec5964715e0a02a4..a3c3ce56e519a291b3bc2d5ce00b7fafa5a6eb39 100644 (file)
@@ -190,6 +190,12 @@ METHOD(pa_tnc_attr_t, process, status_t,
        return SUCCESS;
 }
 
+METHOD(pa_tnc_attr_t, add_segment, void,
+       private_tcg_pts_attr_req_file_meas_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_pts_attr_req_file_meas_t *this)
 {
@@ -251,6 +257,7 @@ pa_tnc_attr_t *tcg_pts_attr_req_file_meas_create(bool directory_flag,
                                .set_noskip_flag = _set_noskip_flag,
                                .build = _build,
                                .process = _process,
+                               .add_segment = _add_segment,
                                .get_ref = _get_ref,
                                .destroy = _destroy,
                        },
@@ -288,6 +295,7 @@ pa_tnc_attr_t *tcg_pts_attr_req_file_meas_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,
                        },
index dffce9abc78db24203a85c2639fe8d9b4b6915f3..f6befa8b9f06ce279344d8d11a63d60fa73979fc 100644 (file)
@@ -182,6 +182,19 @@ METHOD(pa_tnc_attr_t, process, status_t,
        return SUCCESS;
 }
 
+METHOD(pa_tnc_attr_t, add_segment, void,
+       private_tcg_pts_attr_req_file_meta_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_pts_attr_req_file_meta_t *this)
+{
+       ref_get(&this->ref);
+       return &this->public.pa_tnc_attribute;
+}
+
 METHOD(pa_tnc_attr_t, destroy, void,
        private_tcg_pts_attr_req_file_meta_t *this)
 {
@@ -193,13 +206,6 @@ METHOD(pa_tnc_attr_t, destroy, void,
        }
 }
 
-METHOD(pa_tnc_attr_t, get_ref, pa_tnc_attr_t*,
-       private_tcg_pts_attr_req_file_meta_t *this)
-{
-       ref_get(&this->ref);
-       return &this->public.pa_tnc_attribute;
-}
-
 METHOD(tcg_pts_attr_req_file_meta_t, get_directory_flag, bool,
        private_tcg_pts_attr_req_file_meta_t *this)
 {
@@ -236,6 +242,7 @@ pa_tnc_attr_t *tcg_pts_attr_req_file_meta_create(bool directory_flag,
                                .set_noskip_flag = _set_noskip_flag,
                                .build = _build,
                                .process = _process,
+                               .add_segment = _add_segment,
                                .get_ref = _get_ref,
                                .destroy = _destroy,
                        },
@@ -271,6 +278,7 @@ pa_tnc_attr_t *tcg_pts_attr_req_file_meta_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,
                        },
index 6069488a3a8a5c0b2b2128bc5c73f1119a90812a..03891104c891dcfe5cac80c81394ae720447c023 100644 (file)
@@ -271,6 +271,12 @@ end:
        return status;
 }
 
+METHOD(pa_tnc_attr_t, add_segment, void,
+       private_tcg_pts_attr_req_func_comp_evid_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_pts_attr_req_func_comp_evid_t *this)
 {
@@ -331,6 +337,7 @@ pa_tnc_attr_t *tcg_pts_attr_req_func_comp_evid_create(void)
                                .set_noskip_flag = _set_noskip_flag,
                                .build = _build,
                                .process = _process,
+                               .add_segment = _add_segment,
                                .get_ref = _get_ref,
                                .destroy = _destroy,
                        },
@@ -363,6 +370,7 @@ pa_tnc_attr_t *tcg_pts_attr_req_func_comp_evid_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,
                        },
index 189fb0f3a3d6e525ed65f9e50e036b86e5e4e293..d94ee89a57d0de5dff9c1fa046c89d265b2e902d 100644 (file)
@@ -438,6 +438,12 @@ end:
        return status;
 }
 
+METHOD(pa_tnc_attr_t, add_segment, void,
+       private_tcg_pts_attr_simple_comp_evid_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_pts_attr_simple_comp_evid_t *this)
 {
@@ -478,6 +484,7 @@ pa_tnc_attr_t *tcg_pts_attr_simple_comp_evid_create(pts_comp_evidence_t *evid)
                                .set_noskip_flag = _set_noskip_flag,
                                .build = _build,
                                .process = _process,
+                               .add_segment = _add_segment,
                                .get_ref = _get_ref,
                                .destroy = _destroy,
                        },
@@ -509,6 +516,7 @@ pa_tnc_attr_t *tcg_pts_attr_simple_comp_evid_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,
                        },
index 119d342e195cab5bfa264d1b80399135a4b364af..cfeaec6e98386e62c88a8fdcd39644972ae0ad8f 100644 (file)
@@ -132,6 +132,12 @@ METHOD(pa_tnc_attr_t, get_noskip_flag, bool,
        return this->noskip_flag;
 }
 
+METHOD(pa_tnc_attr_t, add_segment, void,
+       private_tcg_pts_attr_simple_evid_final_t *this, chunk_t segment)
+{
+       this->value = chunk_cat("mc", this->value, segment);
+}
+
 METHOD(pa_tnc_attr_t, set_noskip_flag,void,
        private_tcg_pts_attr_simple_evid_final_t *this, bool noskip)
 {
@@ -344,6 +350,7 @@ pa_tnc_attr_t *tcg_pts_attr_simple_evid_final_create(u_int8_t flags,
                                .set_noskip_flag = _set_noskip_flag,
                                .build = _build,
                                .process = _process,
+                               .add_segment = _add_segment,
                                .get_ref = _get_ref,
                                .destroy = _destroy,
                        },
@@ -380,6 +387,7 @@ pa_tnc_attr_t *tcg_pts_attr_simple_evid_final_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,
                        },
index 5fa4db04bb6d0eba38ba7e5d8b97398f49a306ff..db877e9c5bf0fd841760f9048b46eff828947cf3 100644 (file)
@@ -145,6 +145,12 @@ METHOD(pa_tnc_attr_t, process, status_t,
        return SUCCESS;
 }
 
+METHOD(pa_tnc_attr_t, add_segment, void,
+       private_tcg_pts_attr_tpm_version_info_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_pts_attr_tpm_version_info_t *this)
 {
@@ -192,6 +198,7 @@ pa_tnc_attr_t *tcg_pts_attr_tpm_version_info_create(chunk_t tpm_version_info)
                                .set_noskip_flag = _set_noskip_flag,
                                .build = _build,
                                .process = _process,
+                               .add_segment = _add_segment,
                                .get_ref = _get_ref,
                                .destroy = _destroy,
                        },
@@ -224,6 +231,7 @@ pa_tnc_attr_t *tcg_pts_attr_tpm_version_info_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,
                        },
index c8c2708453ea9bfec6f1373bf7d06eb932402eab..7c176fdf694ea2cebd2f7bb2db868693749eff3e 100644 (file)
@@ -278,6 +278,12 @@ end:
        return status;
 }
 
+METHOD(pa_tnc_attr_t, add_segment, void,
+       private_tcg_pts_attr_file_meta_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_pts_attr_file_meta_t *this)
 {
@@ -318,6 +324,7 @@ pa_tnc_attr_t *tcg_pts_attr_unix_file_meta_create(pts_file_meta_t *metadata)
                                .set_noskip_flag = _set_noskip_flag,
                                .build = _build,
                                .process = _process,
+                               .add_segment = _add_segment,
                                .get_ref = _get_ref,
                                .destroy = _destroy,
                        },
@@ -349,6 +356,7 @@ pa_tnc_attr_t *tcg_pts_attr_unix_file_meta_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,
                        },