123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195 |
- /*
- * 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.
- *
- */
- #ifndef _SGX_UAE_SERVICE_H_
- #define _SGX_UAE_SERVICE_H_
- #include <stdint.h>
- #include "sgx_quote.h"
- #include "sgx_error.h"
- #include "sgx_urts.h"
- #define PS_CAP_TRUSTED_TIME 0x1
- #define PS_CAP_MONOTONIC_COUNTER 0x2
- /**
- * Platform service capabilities
- * ps_cap0
- * Bit 0 : Trusted Time
- * Bit 1 : Monotonic Counter
- * Bit 2-31 : Reserved
- * ps_cap1
- * Bit 0-31 : Reserved
- */
- typedef struct _sgx_ps_cap_t
- {
- uint32_t ps_cap0;
- uint32_t ps_cap1;
- } sgx_ps_cap_t;
- #ifdef __cplusplus
- extern "C" {
- #endif
- /*
- * Function used to initialize the process of quoting.
- *
- * @param p_target_info[out] Target info of quoting enclave.
- * @param p_gid[out] ID of platform's current EPID group.
- * @return If outputs are generated, return SGX_SCCUESS, otherwise return general error code
- * or SGX_ERROR_AE_INVALID_EPIDBLOB to indicate special error condition.
- */
- sgx_status_t SGXAPI sgx_init_quote(
- sgx_target_info_t *p_target_info,
- sgx_epid_group_id_t *p_gid);
- /*
- * Function used to calculate quote size.
- *
- * @param p_sig_rl[in] OPTIONAL Signature Revocation List.
- * @param sig_rl_size[in] Signature Revocation List size, in bytes.
- * @param p_quote_size[out] Quote size, in bytes.
- * @return If quote size is calculated,return SGX_SUCCESS, otherwise return
- * SGX_ERROR_INVALID_PARAMETER to indicate special error condition.
- */
- sgx_status_t SGXAPI sgx_calc_quote_size(
- const uint8_t *p_sig_rl,
- uint32_t sig_rl_size,
- uint32_t* p_quote_size);
- /*
- * [DEPRECATED] Use sgx_calc_quote_size function instead of this one
- * Function used to get quote size.
- *
- * @param p_sig_rl[in] OPTIONAL Signature Revocation List.
- * @param p_quote_size[out] Quote size, in bytes.
- * @return If quote size is calculated,return SGX_SCCUESS, otherwise return
- * SGX_ERROR_INVALID_PARAMETER to indicate special error condition.
- */
- SGX_DEPRECATED
- sgx_status_t SGXAPI sgx_get_quote_size(
- const uint8_t *p_sig_rl,
- uint32_t* p_quote_size);
- /*
- * Function used to get quote.
- *
- * @param p_report[in] Report of enclave for which quote is being calculated.
- * @param quote_type[in] Linkable or unlinkable quote.
- * @param p_spid[in] Pointer of SPID.
- * @param p_nonce[in] OPTIONAL nonce.
- * @param p_sig_rl[in] OPTIONAL list of signature made fore EPID.
- * @param sig_rl_size[in] The size of p_sig_rl, in bytes.
- * @param p_qe_report[out] OPTIONAL The QE report.
- * @param p_quote[out] The quote buffer, can not be NULL.
- * @param quote_size[in] Quote buffer size, in bytes.
- * @return If quote is generated,return SGX_SCCUESS,
- * error code or SGX_ERROR_AE_INVALID_EPIDBLOB,
- * SGX_ERROR_INVALID_PARAMETER to indicate special error condition.
- * SGX_ERROR_EPID_MEMBER_REVOKED to indicate the EPID group membership has been revoked.
- */
- sgx_status_t SGXAPI sgx_get_quote(
- const sgx_report_t *p_report,
- sgx_quote_sign_type_t quote_type,
- const sgx_spid_t *p_spid,
- const sgx_quote_nonce_t *p_nonce,
- const uint8_t *p_sig_rl,
- uint32_t sig_rl_size,
- sgx_report_t *p_qe_report,
- sgx_quote_t *p_quote,
- uint32_t quote_size);
- /**
- * Get the platform service capabilities
- *
- * @param sgx_ps_cap Platform capabilities reported by AESM.
- * @return if OK, return SGX_SUCCESS
- */
- sgx_status_t SGXAPI sgx_get_ps_cap(sgx_ps_cap_t* p_sgx_ps_cap);
- /**
- * Get the white list's size
- *
- * @param p_whitelist_size Save the size of the white list.
- * @return if OK, return SGX_SUCCESS
- */
- sgx_status_t SGXAPI sgx_get_whitelist_size(uint32_t* p_whitelist_size);
- /**
- * Get the white list value
- *
- * @param p_whitelist Save the white list value
- * @param whitelist_size The size of the white list and the read data size is whitelist_size
- * @return if OK, return SGX_SUCCESS
- */
- sgx_status_t SGXAPI sgx_get_whitelist(uint8_t* p_whitelist, uint32_t whitelist_size);
- /**
- * Get the extended epid group id
- *
- * @param p_extended_epid_group_id Save the extended epid group id.
- * @return if OK, return SGX_SUCCESS
- */
- sgx_status_t SGXAPI sgx_get_extended_epid_group_id(uint32_t* p_extended_epid_group_id);
- #define SGX_IS_TRUSTED_TIME_AVAILABLE(cap) ((((uint32_t)PS_CAP_TRUSTED_TIME)&((cap).ps_cap0))!=0)
- #define SGX_IS_MONOTONIC_COUNTER_AVAILABLE(cap) ((((uint32_t)PS_CAP_MONOTONIC_COUNTER)&((cap).ps_cap0))!=0)
- /*
- * Function used to report the status of the attestation.
- *
- * @param p_platform_info[in] platform information received from Intel Attestation Server.
- * @param attestation_status[in] Value representing status during attestation. 0 if attestation succeeds.
- * @param p_update_info[out] update information of the SGX platform.
- * @return If OK, return SGX_SUCCESS. If update is needed, return SGX_ERROR_UPDATE_NEEDED and update_info contains update information.
- */
- sgx_status_t SGXAPI sgx_report_attestation_status(
- const sgx_platform_info_t* p_platform_info,
- int attestation_status,
- sgx_update_info_bit_t* p_update_info);
- /**
- * Register white list certificate chain
- *
- * @param p_wl_cert_chain The white list to be registered.
- * @param wl_cert_chain_size The size of the white list.
- * @return If OK, return SGX_SUCCESS
- */
- sgx_status_t SGXAPI sgx_register_wl_cert_chain(uint8_t* p_wl_cert_chain, uint32_t wl_cert_chain_size);
- #ifdef __cplusplus
- }
- #endif
- #endif
|