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>