123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196 |
- /*
- * Copyright (C) 2011-2018 Intel Corporation. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- * * Neither the name of Intel Corporation nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- */
- /**
- * File: tlv_common.h
- * Description: Header file to define TLV (the Type Length Value) related data or structure which may be commonly used by multiple components
- */
- #ifndef _PVE_TLV_COMMON_H
- #define _PVE_TLV_COMMON_H
- #include "se_cdefs.h"
- #include "se_types.h"
- #include "sgx_key.h"
- #include "byte_order.h"
- /*enumerate all tlv types, the value of it is not defined in spec yet*/
- typedef enum _tlv_enum_type_t{
- TLV_CIPHER_TEXT=0,
- TLV_BLOCK_CIPHER_TEXT,
- TLV_BLOCK_CIPHER_INFO,
- TLV_MESSAGE_AUTHENTICATION_CODE,
- TLV_NONCE,
- TLV_EPID_GID,
- TLV_EPID_SIG_RL,
- TLV_EPID_GROUP_CERT,
- /*SE Provisioning Protocol TLVs*/
- TLV_DEVICE_ID,
- TLV_PS_ID,
- TLV_EPID_JOIN_PROOF,
- TLV_EPID_SIG,
- TLV_EPID_MEMBERSHIP_CREDENTIAL,
- TLV_EPID_PSVN,
- /*PSE Provisioning Protocol TLVs*/
- TLV_QUOTE,
- TLV_X509_CERT_TLV,
- TLV_X509_CSR_TLV,
- /*End-point Selection Protocol TLVs*/
- TLV_ES_SELECTOR,
- TLV_ES_INFORMATION,
- /* EPID Provisioning Protocol TLVs Part 2*/
- TLV_FLAGS,
- /* PSE Quote Signature*/
- TLV_QUOTE_SIG,
- TLV_PLATFORM_INFO_BLOB,
- /* Generic TLVs*/
- TLV_SIGNATURE,
- /* End-point Selection Protocol TLVs*/
- TLV_PEK,
- TLV_PLATFORM_INFO,
- TLV_PWK2,
- TLV_SE_REPORT
- }tlv_enum_type_t;
- /*here comes general type and macro definition for AESM related Server URL which will be shared by code in other components*/
- typedef enum _aesm_network_server_enum_type_t{
- SE_EPID_PROVISIONING,
- PSE_PROVISIONING,
- ENDPOINT_SELECTION,
- REVOCATION_LIST_RETRIEVAL,
- PSE_OCSP,
- SGX_WHITE_LIST_FILE
- }aesm_network_server_enum_type_t;
- typedef enum _pve_msg_type_t
- {
- TYPE_PROV_MSG1,
- TYPE_PROV_MSG2,
- TYPE_PROV_MSG3,
- TYPE_PROV_MSG4
- }pve_msg_type_t;
- typedef enum _pse_msg_type_t
- {
- TYPE_PSE_MSG1,
- TYPE_PSE_MSG2,
- TYPE_PSE_MSG3,
- TYPE_PSE_MSG4
- }pse_msg_type_t;
- typedef enum _es_msg_type_t
- {
- TYPE_ES_MSG1,
- TYPE_ES_MSG2
- }es_msg_type_t;
- typedef enum _rlr_msg_type_t
- {
- TYPE_RLR_MSG1,
- TYPE_RLR_MSG2
- }rlr_msg_type_t;
- #include "epid_pve_type.h"
- typedef uint16_t general_response_status_t;
- enum _general_response_status_t
- {
- GRS_OK,
- GRS_SERVER_BUSY,
- GRS_INTEGRITY_CHECK_FAIL,
- GRS_INCORRECT_SYNTAX,
- GRS_INCOMPATIBLE_VERSION,
- GRS_TRANSACTION_STATE_LOST,
- GRS_PROTOCOL_ERROR,
- GRS_INTERNAL_ERROR
- };
- typedef uint16_t se_protocol_response_status_t;
- enum _se_protocol_response_status_t
- {
- SE_PRS_OK,
- SE_PRS_PLATFORM_REVOKED,
- SE_PRS_STATUS_INTEGRITY_FAILED,
- SE_PRS_PERFORMANCE_REKEY_NOT_SUPPORTED,
- SE_PRS_PROVISIONING_ERROR,
- SE_PRS_INVALID_REQUEST,
- SE_PRS_PROV_ATTEST_KEY_NOT_FOUND,
- SE_PRS_INVALID_REPORT
- };
- typedef uint16_t pse_protocol_response_status_t;
- enum _pse_protocol_response_status_t
- {
- PSE_PRS_OK,
- PSE_PRS_INVALID_GID,
- PSE_PRS_GID_REVOKED,
- PSE_PRS_INVALID_QUOTE,
- PSE_PRS_INVALID_REQUEST
- };
- #pragma pack(1)
- #define NET_S_OK 0
- typedef struct _provision_request_header_t{
- uint8_t protocol;
- uint8_t version;
- uint8_t xid[XID_SIZE]; /*transaction id, the unique id from ProvMsg1 to ProvMsg4*/
- uint8_t type;
- uint8_t size[4]; /*size of request body*/
- }provision_request_header_t;
- typedef struct _provision_response_header_t{
- uint8_t protocol;
- uint8_t version;
- uint8_t xid[XID_SIZE];
- uint8_t type;
- uint8_t gstatus[2];
- uint8_t pstatus[2];
- uint8_t size[4];
- }provision_response_header_t;
- #pragma pack()
- #define PROVISION_REQUEST_HEADER_SIZE sizeof(provision_request_header_t)
- #define PROVISION_RESPONSE_HEADER_SIZE sizeof(provision_response_header_t)
- #define GET_BODY_SIZE_FROM_PROVISION_REQUEST(req) lv_ntohl(((const provision_request_header_t *)(req))->size)
- #define GET_BODY_SIZE_FROM_PROVISION_RESPONSE(resp) lv_ntohl(((const provision_response_header_t *)(resp))->size)
- #define GET_SIZE_FROM_PROVISION_REQUEST(req) (GET_BODY_SIZE_FROM_PROVISION_REQUEST(req)+PROVISION_REQUEST_HEADER_SIZE)
- #define GET_SIZE_FROM_PROVISION_RESPONSE(resp) (GET_BODY_SIZE_FROM_PROVISION_RESPONSE(resp)+PROVISION_RESPONSE_HEADER_SIZE)
- #define GET_TYPE_FROM_PROVISION_REQUEST(req) (((const provision_request_header_t *)(req))->type)
- #define GET_TYPE_FROM_PROVISION_RESPONSE(resp) (((const provision_response_header_t *)(resp))->type)
- #define TLV_VERSION_1 1
- #define TLV_VERSION_2 2
- #endif
|