Annotation of embedaddon/strongswan/src/libimcv/tcg/tcg_attr.c, revision 1.1

1.1     ! misho       1: /*
        !             2:  * Copyright (C) 2011-2014 Andreas Steffen
        !             3:  * HSR Hochschule fuer Technik Rapperswil
        !             4:  *
        !             5:  * This program is free software; you can redistribute it and/or modify it
        !             6:  * under the terms of the GNU General Public License as published by the
        !             7:  * Free Software Foundation; either version 2 of the License, or (at your
        !             8:  * option) any later version.  See <http://www.fsf.org/copyleft/gpl.txt>.
        !             9:  *
        !            10:  * This program is distributed in the hope that it will be useful, but
        !            11:  * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
        !            12:  * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
        !            13:  * for more details.
        !            14:  */
        !            15: 
        !            16: #include "tcg_attr.h"
        !            17: #include "tcg/pts/tcg_pts_attr_proto_caps.h"
        !            18: #include "tcg/pts/tcg_pts_attr_dh_nonce_params_req.h"
        !            19: #include "tcg/pts/tcg_pts_attr_dh_nonce_params_resp.h"
        !            20: #include "tcg/pts/tcg_pts_attr_dh_nonce_finish.h"
        !            21: #include "tcg/pts/tcg_pts_attr_meas_algo.h"
        !            22: #include "tcg/pts/tcg_pts_attr_get_tpm_version_info.h"
        !            23: #include "tcg/pts/tcg_pts_attr_tpm_version_info.h"
        !            24: #include "tcg/pts/tcg_pts_attr_get_aik.h"
        !            25: #include "tcg/pts/tcg_pts_attr_aik.h"
        !            26: #include "tcg/pts/tcg_pts_attr_req_func_comp_evid.h"
        !            27: #include "tcg/pts/tcg_pts_attr_gen_attest_evid.h"
        !            28: #include "tcg/pts/tcg_pts_attr_simple_comp_evid.h"
        !            29: #include "tcg/pts/tcg_pts_attr_simple_evid_final.h"
        !            30: #include "tcg/pts/tcg_pts_attr_req_file_meas.h"
        !            31: #include "tcg/pts/tcg_pts_attr_file_meas.h"
        !            32: #include "tcg/pts/tcg_pts_attr_req_file_meta.h"
        !            33: #include "tcg/pts/tcg_pts_attr_unix_file_meta.h"
        !            34: #include "tcg/seg/tcg_seg_attr_max_size.h"
        !            35: #include "tcg/seg/tcg_seg_attr_seg_env.h"
        !            36: #include "tcg/seg/tcg_seg_attr_next_seg.h"
        !            37: 
        !            38: ENUM_BEGIN(tcg_attr_names,     TCG_SCAP_REFERENCES,
        !            39:                                                        TCG_SCAP_SUMMARY_RESULTS,
        !            40:        "SCAP References",
        !            41:        "SCAP Capabilities and Inventory",
        !            42:        "SCAP Content",
        !            43:        "SCAP Assessment",
        !            44:        "SCAP Results",
        !            45:        "SCAP Summary Results");
        !            46: ENUM_NEXT(tcg_attr_names,      TCG_SWID_REQUEST,
        !            47:                                                        TCG_SWID_SUBSCRIPTION_STATUS_RESP,
        !            48:                                                        TCG_SCAP_SUMMARY_RESULTS,
        !            49:        "SWID Request",
        !            50:        "SWID Tag Identifier Inventory",
        !            51:        "SWID Tag Identifier Events",
        !            52:        "SWID Tag Inventory",
        !            53:        "SWID Tag Events",
        !            54:        "SWID Subscription Status Request",
        !            55:        "SWID Subscription Status Response");
        !            56: ENUM_NEXT(tcg_attr_names,      TCG_SEG_MAX_ATTR_SIZE_REQ,
        !            57:                                                        TCG_SEG_CANCEL_SEG_EXCH,
        !            58:                                                        TCG_SWID_SUBSCRIPTION_STATUS_RESP,
        !            59:        "Max Attribute Size Request",
        !            60:        "Max Attribute Size Response",
        !            61:        "Attribute Segment Envelope",
        !            62:        "Next Segment Request",
        !            63:        "Cancel Segment Exchange");
        !            64: ENUM_NEXT(tcg_attr_names,      TCG_PTS_REQ_FUNC_COMP_EVID,
        !            65:                                                        TCG_PTS_REQ_FUNC_COMP_EVID,
        !            66:                                                        TCG_SEG_CANCEL_SEG_EXCH,
        !            67:        "Request Functional Component Evidence");
        !            68: ENUM_NEXT(tcg_attr_names,      TCG_PTS_GEN_ATTEST_EVID,
        !            69:                                                        TCG_PTS_GEN_ATTEST_EVID,
        !            70:                                                        TCG_PTS_REQ_FUNC_COMP_EVID,
        !            71:        "Generate Attestation Evidence");
        !            72: ENUM_NEXT(tcg_attr_names,      TCG_PTS_SIMPLE_COMP_EVID,
        !            73:                                                        TCG_PTS_SIMPLE_COMP_EVID,
        !            74:                                                        TCG_PTS_GEN_ATTEST_EVID,
        !            75:        "Simple Component Evidence");
        !            76: ENUM_NEXT(tcg_attr_names,      TCG_PTS_SIMPLE_EVID_FINAL,
        !            77:                                                        TCG_PTS_SIMPLE_EVID_FINAL,
        !            78:                                                        TCG_PTS_SIMPLE_COMP_EVID,
        !            79:        "Simple Evidence Final");
        !            80: ENUM_NEXT(tcg_attr_names,      TCG_PTS_VERIFICATION_RESULT,
        !            81:                                                        TCG_PTS_VERIFICATION_RESULT,
        !            82:                                                        TCG_PTS_SIMPLE_EVID_FINAL,
        !            83:        "Verification Result");
        !            84: ENUM_NEXT(tcg_attr_names,      TCG_PTS_INTEG_REPORT,
        !            85:                                                        TCG_PTS_INTEG_REPORT,
        !            86:                                                        TCG_PTS_VERIFICATION_RESULT,
        !            87:        "Integrity Report");
        !            88: ENUM_NEXT(tcg_attr_names,      TCG_PTS_REQ_FILE_META,
        !            89:                                                        TCG_PTS_REQ_FILE_META,
        !            90:                                                        TCG_PTS_INTEG_REPORT,
        !            91:        "Request File Metadata");
        !            92: ENUM_NEXT(tcg_attr_names,      TCG_PTS_WIN_FILE_META,
        !            93:                                                        TCG_PTS_WIN_FILE_META,
        !            94:                                                        TCG_PTS_REQ_FILE_META,
        !            95:        "Windows-Style File Metadata");
        !            96: ENUM_NEXT(tcg_attr_names,      TCG_PTS_UNIX_FILE_META,
        !            97:                                                        TCG_PTS_UNIX_FILE_META,
        !            98:                                                        TCG_PTS_WIN_FILE_META,
        !            99:        "Unix-Style File Metadata");
        !           100: ENUM_NEXT(tcg_attr_names,      TCG_PTS_REQ_REGISTRY_VALUE,
        !           101:                                                        TCG_PTS_REQ_REGISTRY_VALUE,
        !           102:                                                        TCG_PTS_UNIX_FILE_META,
        !           103:        "Request Registry Value");
        !           104: ENUM_NEXT(tcg_attr_names,      TCG_PTS_REGISTRY_VALUE,
        !           105:                                                        TCG_PTS_REGISTRY_VALUE,
        !           106:                                                        TCG_PTS_REQ_REGISTRY_VALUE,
        !           107:        "Registry Value");
        !           108: ENUM_NEXT(tcg_attr_names,      TCG_PTS_REQ_FILE_MEAS,
        !           109:                                                        TCG_PTS_REQ_FILE_MEAS,
        !           110:                                                        TCG_PTS_REGISTRY_VALUE,
        !           111:        "Request File Measurement");
        !           112: ENUM_NEXT(tcg_attr_names,      TCG_PTS_FILE_MEAS,
        !           113:                                                        TCG_PTS_FILE_MEAS,
        !           114:                                                        TCG_PTS_REQ_FILE_MEAS,
        !           115:        "File Measurement");
        !           116: ENUM_NEXT(tcg_attr_names,      TCG_PTS_REQ_INTEG_MEAS_LOG,
        !           117:                                                        TCG_PTS_REQ_INTEG_MEAS_LOG,
        !           118:                                                        TCG_PTS_FILE_MEAS,
        !           119:        "Request Integrity Measurement Log");
        !           120: ENUM_NEXT(tcg_attr_names,      TCG_PTS_INTEG_MEAS_LOG,
        !           121:                                                        TCG_PTS_INTEG_MEAS_LOG,
        !           122:                                                        TCG_PTS_REQ_INTEG_MEAS_LOG,
        !           123:        "Integrity Measurement Log");
        !           124: ENUM_NEXT(tcg_attr_names,      TCG_PTS_REQ_PROTO_CAPS,
        !           125:                                                        TCG_PTS_REQ_PROTO_CAPS,
        !           126:                                                        TCG_PTS_INTEG_MEAS_LOG,
        !           127:        "Request PTS Protocol Capabilities");
        !           128: ENUM_NEXT(tcg_attr_names,      TCG_PTS_PROTO_CAPS,
        !           129:                                                        TCG_PTS_PROTO_CAPS,
        !           130:                                                        TCG_PTS_REQ_PROTO_CAPS,
        !           131:        "PTS Protocol Capabilities");
        !           132: ENUM_NEXT(tcg_attr_names,      TCG_PTS_DH_NONCE_PARAMS_REQ,
        !           133:                                                        TCG_PTS_DH_NONCE_PARAMS_REQ,
        !           134:                                                        TCG_PTS_PROTO_CAPS,
        !           135:        "DH Nonce Parameters Request");
        !           136: ENUM_NEXT(tcg_attr_names,      TCG_PTS_DH_NONCE_PARAMS_RESP,
        !           137:                                                        TCG_PTS_DH_NONCE_PARAMS_RESP,
        !           138:                                                        TCG_PTS_DH_NONCE_PARAMS_REQ,
        !           139:        "DH Nonce Parameters Response");
        !           140: ENUM_NEXT(tcg_attr_names,      TCG_PTS_DH_NONCE_FINISH,
        !           141:                                                        TCG_PTS_DH_NONCE_FINISH,
        !           142:                                                        TCG_PTS_DH_NONCE_PARAMS_RESP,
        !           143:        "DH Nonce Finish");
        !           144: ENUM_NEXT(tcg_attr_names,      TCG_PTS_MEAS_ALGO,
        !           145:                                                        TCG_PTS_MEAS_ALGO,
        !           146:                                                        TCG_PTS_DH_NONCE_FINISH,
        !           147:        "PTS Measurement Algorithm Request");
        !           148: ENUM_NEXT(tcg_attr_names,      TCG_PTS_MEAS_ALGO_SELECTION,
        !           149:                                                        TCG_PTS_MEAS_ALGO_SELECTION,
        !           150:                                                        TCG_PTS_MEAS_ALGO,
        !           151:        "PTS Measurement Algorithm");
        !           152: ENUM_NEXT(tcg_attr_names,      TCG_PTS_GET_TPM_VERSION_INFO,
        !           153:                                                        TCG_PTS_GET_TPM_VERSION_INFO,
        !           154:                                                        TCG_PTS_MEAS_ALGO_SELECTION,
        !           155:        "Get TPM Version Information");
        !           156: ENUM_NEXT(tcg_attr_names,      TCG_PTS_TPM_VERSION_INFO,
        !           157:                                                        TCG_PTS_TPM_VERSION_INFO,
        !           158:                                                        TCG_PTS_GET_TPM_VERSION_INFO,
        !           159:        "TPM Version Information");
        !           160: ENUM_NEXT(tcg_attr_names,      TCG_PTS_REQ_TEMPL_REF_MANI_SET_META,
        !           161:                                                        TCG_PTS_REQ_TEMPL_REF_MANI_SET_META,
        !           162:                                                        TCG_PTS_TPM_VERSION_INFO,
        !           163:        "Request Template Reference Manifest Set Metadata");
        !           164: ENUM_NEXT(tcg_attr_names,      TCG_PTS_TEMPL_REF_MANI_SET_META,
        !           165:                                                        TCG_PTS_TEMPL_REF_MANI_SET_META,
        !           166:                                                        TCG_PTS_REQ_TEMPL_REF_MANI_SET_META,
        !           167:        "Template Reference Manifest Set Metadata");
        !           168: ENUM_NEXT(tcg_attr_names,      TCG_PTS_UPDATE_TEMPL_REF_MANI,
        !           169:                                                        TCG_PTS_UPDATE_TEMPL_REF_MANI,
        !           170:                                                        TCG_PTS_TEMPL_REF_MANI_SET_META,
        !           171:        "Update Template Reference Manifest");
        !           172: ENUM_NEXT(tcg_attr_names,      TCG_PTS_GET_AIK,
        !           173:                                                        TCG_PTS_GET_AIK,
        !           174:                                                        TCG_PTS_UPDATE_TEMPL_REF_MANI,
        !           175:        "Get Attestation Identity Key");
        !           176: ENUM_NEXT(tcg_attr_names,      TCG_PTS_AIK,
        !           177:                                                        TCG_PTS_AIK,
        !           178:                                                        TCG_PTS_GET_AIK,
        !           179:        "Attestation Identity Key");
        !           180: ENUM_END(tcg_attr_names,       TCG_PTS_AIK);
        !           181: 
        !           182: /**
        !           183:  * See header
        !           184:  */
        !           185: pa_tnc_attr_t* tcg_attr_create_from_data(uint32_t type, size_t length, chunk_t value)
        !           186: {
        !           187:        switch (type)
        !           188:        {
        !           189:                case TCG_SEG_MAX_ATTR_SIZE_REQ:
        !           190:                        return tcg_seg_attr_max_size_create_from_data(length, value, TRUE);
        !           191:                case TCG_SEG_MAX_ATTR_SIZE_RESP:
        !           192:                        return tcg_seg_attr_max_size_create_from_data(length, value, FALSE);
        !           193:                case TCG_SEG_ATTR_SEG_ENV:
        !           194:                        return tcg_seg_attr_seg_env_create_from_data(length, value);
        !           195:                case TCG_SEG_NEXT_SEG_REQ:
        !           196:                        return tcg_seg_attr_next_seg_create_from_data(length, value);
        !           197:                case TCG_PTS_REQ_PROTO_CAPS:
        !           198:                        return tcg_pts_attr_proto_caps_create_from_data(length, value,
        !           199:                                                                                                                        TRUE);
        !           200:                case TCG_PTS_PROTO_CAPS:
        !           201:                        return tcg_pts_attr_proto_caps_create_from_data(length, value,
        !           202:                                                                                                                        FALSE);
        !           203:                case TCG_PTS_DH_NONCE_PARAMS_REQ:
        !           204:                        return tcg_pts_attr_dh_nonce_params_req_create_from_data(length,
        !           205:                                                                                                                                         value);
        !           206:                case TCG_PTS_DH_NONCE_PARAMS_RESP:
        !           207:                        return tcg_pts_attr_dh_nonce_params_resp_create_from_data(length,
        !           208:                                                                                                                                          value);
        !           209:                case TCG_PTS_DH_NONCE_FINISH:
        !           210:                        return tcg_pts_attr_dh_nonce_finish_create_from_data(length, value);
        !           211:                case TCG_PTS_MEAS_ALGO:
        !           212:                        return tcg_pts_attr_meas_algo_create_from_data(length, value,
        !           213:                                                                                                                   FALSE);
        !           214:                case TCG_PTS_MEAS_ALGO_SELECTION:
        !           215:                        return tcg_pts_attr_meas_algo_create_from_data(length, value,
        !           216:                                                                                                                   TRUE);
        !           217:                case TCG_PTS_GET_TPM_VERSION_INFO:
        !           218:                        return tcg_pts_attr_get_tpm_version_info_create_from_data(length,
        !           219:                                                                                                                                          value);
        !           220:                case TCG_PTS_TPM_VERSION_INFO:
        !           221:                        return tcg_pts_attr_tpm_version_info_create_from_data(length,
        !           222:                                                                                                                                  value);
        !           223:                case TCG_PTS_GET_AIK:
        !           224:                        return tcg_pts_attr_get_aik_create_from_data(length, value);
        !           225:                case TCG_PTS_AIK:
        !           226:                        return tcg_pts_attr_aik_create_from_data(length, value);
        !           227:                case TCG_PTS_REQ_FUNC_COMP_EVID:
        !           228:                        return tcg_pts_attr_req_func_comp_evid_create_from_data(length,
        !           229:                                                                                                                                        value);
        !           230:                case TCG_PTS_GEN_ATTEST_EVID:
        !           231:                        return tcg_pts_attr_gen_attest_evid_create_from_data(length, value);
        !           232:                case TCG_PTS_SIMPLE_COMP_EVID:
        !           233:                        return tcg_pts_attr_simple_comp_evid_create_from_data(length,
        !           234:                                                                                                                                  value);
        !           235:                case TCG_PTS_SIMPLE_EVID_FINAL:
        !           236:                        return tcg_pts_attr_simple_evid_final_create_from_data(length,
        !           237:                                                                                                                                   value);
        !           238:                case TCG_PTS_REQ_FILE_MEAS:
        !           239:                        return tcg_pts_attr_req_file_meas_create_from_data(length, value);
        !           240:                case TCG_PTS_FILE_MEAS:
        !           241:                        return tcg_pts_attr_file_meas_create_from_data(length, value);
        !           242:                case TCG_PTS_REQ_FILE_META:
        !           243:                        return tcg_pts_attr_req_file_meta_create_from_data(length, value);
        !           244:                case TCG_PTS_UNIX_FILE_META:
        !           245:                        return tcg_pts_attr_unix_file_meta_create_from_data(length, value);
        !           246:                /* unsupported TCG/SWID attributes */
        !           247:                case TCG_SWID_REQUEST:
        !           248:                case TCG_SWID_TAG_ID_INVENTORY:
        !           249:                case TCG_SWID_TAG_INVENTORY:
        !           250:                case TCG_SWID_TAG_ID_EVENTS:
        !           251:                case TCG_SWID_TAG_EVENTS:
        !           252:                case TCG_SWID_SUBSCRIPTION_STATUS_REQ:
        !           253:                case TCG_SWID_SUBSCRIPTION_STATUS_RESP:
        !           254:                /* unsupported TCG/PTS attributes */
        !           255:                case TCG_PTS_REQ_TEMPL_REF_MANI_SET_META:
        !           256:                case TCG_PTS_TEMPL_REF_MANI_SET_META:
        !           257:                case TCG_PTS_UPDATE_TEMPL_REF_MANI:
        !           258:                case TCG_PTS_VERIFICATION_RESULT:
        !           259:                case TCG_PTS_INTEG_REPORT:
        !           260:                case TCG_PTS_WIN_FILE_META:
        !           261:                case TCG_PTS_REQ_REGISTRY_VALUE:
        !           262:                case TCG_PTS_REGISTRY_VALUE:
        !           263:                case TCG_PTS_REQ_INTEG_MEAS_LOG:
        !           264:                case TCG_PTS_INTEG_MEAS_LOG:
        !           265:                default:
        !           266:                        return NULL;
        !           267:        }
        !           268: }

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>