Annotation of embedaddon/strongswan/src/libimcv/tcg/tcg_attr.c, revision 1.1.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>