PTHICommand.h revision 617e2443dfc17fe44fd44c0675d6aad2ffc9df42
/*******************************************************************************
* Copyright (C) 2004-2008 Intel Corp. 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
*
* - Neither the name of Intel Corp. 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 Intel Corp. OR THE 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: PTHICommand.h
//
// Contents: header file of PTHICommand class
//
//----------------------------------------------------------------------------
#ifndef __PTHI_COMMAND_H__
#define __PTHI_COMMAND_H__
#include "HECIUnix.h"
#include "StatusCodeDefinitions.h"
#include <list>
#include <string>
#define CERT_HASH_MAX_LENGTH 64
#define CERT_HASH_MAX_NUMBER 23
#define NET_TLS_CERT_PKI_MAX_SERIAL_NUMS 3
#define NET_TLS_CERT_PKI_MAX_SERIAL_NUM_LENGTH 16
#define MPS_HOSTNAME_LENGTH 256
/*
* Constants
*/
typedef enum _CFG_PROVISIONING_MODE
{
typedef enum _AMT_PROVISIONING_STATE
{
typedef enum _AMT_FEATURE_STATE_REQUEST
{
REDIRECTION_SESSION = 0,
SYSTEM_DEFENSE = 1,
WEB_UI = 2
typedef enum _AMT_LAST_HOST_RESET_REASON
{
RemoteControl = 0,
Other = 1
typedef enum _AMT_INTERFACE_INDEX
{
WIRED = 0,
WIRELESS = 1
typedef enum _AMT_DHCP_IP_ADDRESS
{
ACTIVE = 1,
PASSIVE = 2
typedef UINT32 CFG_IPv4_ADDRESS;
typedef enum _AMT_PROVISIONING_TLS_MODE
{
NOT_READY = 0,
PSK = 1,
PKI = 2
typedef enum _AMT_RNG_STATUS
{
RNG_STATUS_EXIST = 0,
#pragma pack(1)
typedef struct _AMT_UNICODE_STRING
{
typedef struct _AMT_VERSION_TYPE
{
typedef struct _PTHI_VERSION
{
} PTHI_VERSION;
typedef struct _CODE_VERSIONS
{
typedef struct _COMMAND_FMT
{
union
{
struct
{
} fields;
} cmd;
} COMMAND_FMT;
typedef struct _AMT_ANSI_STRING
{
typedef struct _PTHI_MESSAGE_HEADER
{
typedef struct _PTHI_RESPONSE_MESSAGE_HEADER
{
typedef struct _CFG_GET_CODE_VERSIONS_RESPONSE
{
typedef struct _CFG_GET_PROVISIONING_MODE_RESPONSE
{
typedef struct _CFG_GET_PROVISIONING_STATE_RESPONSE
{
typedef struct _CFG_GET_FEATURES_STATE_REQUEST
{
typedef struct _GET_FEATURES_REDIRECTION_SESSION_STATUS
{
typedef struct _GET_FEATURES_SYSTEM_DEFENSE_STATE_RESPONSE
{
typedef struct _GET_FEATURES_WEB_UI_STATE_RESPONSE
{
typedef union _FEATURES_STATUS_DATA
{
typedef struct _CFG_GET_FEATURES_STATE_RESPONSE
{
typedef struct _CFG_GET_CURRENT_POWER_POLICY_REQUEST
{
typedef struct _CFG_GET_CURRENT_POWER_POLICY_RESPONSE
{
typedef struct _CFG_GET_LAST_HOST_RESET_REASON_REQUEST
{
typedef struct _CFG_GET_LAST_HOST_RESET_REASON_RESPONSE
{
typedef struct _LAN_SETTINGS
{
} LAN_SETTINGS;
typedef struct _CFG_GET_LAN_INTERFACE_SETTINGS_REQUEST
{
typedef struct _CFG_GET_LAN_INTERFACE_SETTINGS_RESPONSE
{
typedef struct _CFG_GET_SECURITY_PARAMETERS_REQUEST
{
typedef struct _CFG_GET_SECURITY_PARAMETERS_RESPONSE
{
typedef struct _CFG_GET_DNS_SUFFIX_LIST_REQUEST
{
typedef struct _CFG_GET_DNS_SUFFIX_LIST_RESPONSE
{
/**
* CFG_SET_ENTERPRISE_ACCESS_REQUEST
*
* Flags Bit 0 - If this bit is set then HostIPAddress is IPv6, otherwise HostIPAddress is IPv4 address.
* Bits 1..7 - Reserved, should be zero.
* HostIPAddress IPv4 / IPv6 address
* EnterpriseAccess 1 if LMS has access to enterprise network, otherwise 0.
*/
typedef struct _CFG_SET_ENTERPRISE_ACCESS_REQUEST
{
typedef struct _CFG_SET_ENTERPRISE_ACCESS_RESPONSE
{
typedef struct _CFG_OPEN_USER_INITIATED_CONNECTION_REQUEST
{
typedef struct _CFG_OPEN_USER_INITIATED_CONNECTION_RESPONSE
{
typedef struct _CFG_CLOSE_USER_INITIATED_CONNECTION_REQUEST
{
typedef struct _CFG_CLOSE_USER_INITIATED_CONNECTION_RESPONSE
{
typedef enum
{
typedef enum
{
typedef enum
{
typedef struct _CFG_GET_REMOTE_ACCESS_CONNECTION_STATUS_REQUEST
{
typedef struct _CFG_GET_REMOTE_ACCESS_CONNECTION_STATUS_RESPONSE
{
typedef struct _REMOTE_ACCESS_STATUS
{
const AMT_UUID AMT_UUID_LINK_STATE =
{0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x01};
typedef struct _STATE_DATA
{
} STATE_DATA;
typedef struct _STATE_GET_AMT_STATE_REQUEST
{
typedef struct _STATE_GET_AMT_STATE_RESPONSE
{
typedef struct _AMT_HASH_HANDLES
{
typedef struct _CERTHASH_ENTRY
{
typedef enum
{
CERT_HASH_ALGORITHM_MD5 = 0, // 16 bytes
CERT_HASH_ALGORITHM_SHA1, // 20 bytes
CERT_HASH_ALGORITHM_SHA256, // 32 bytes
CERT_HASH_ALGORITHM_SHA512 // 64 bytes
typedef struct
{
} TIME_DATE;
typedef struct _AMT_PROV_AUDIT_RECORD
{
UINT8 CaCertificateSerials[NET_TLS_CERT_PKI_MAX_SERIAL_NUMS*NET_TLS_CERT_PKI_MAX_SERIAL_NUM_LENGTH];
typedef struct _CFG_GENERATE_RNG_SEED_RESPONSE
{
typedef struct _CFG_GET_RNG_SEED_STATUS_RESPONSE
{
typedef struct _CFG_GET_ZERO_TOUCH_ENABLED_RESPONSE
{
typedef struct _CFG_GET_PROVISIONING_TLS_MODE_RESPONSE
{
typedef struct _CFG_START_CONFIGURATION_RESPONSE
{
typedef struct _CFG_SET_PROVISIONING_SERVER_OTP_RESPONSE
{
typedef struct _CFG_SET_DNS_SUFFIX_RESPONSE
{
typedef struct _CFG_GET_HASH_HANDLES_RESPONSE
{
typedef struct _CFG_GET_CERTHASH_ENTRY_REQUEST
{
typedef struct _CFG_GET_CERTHASH_ENTRY_RESPONSE
{
typedef struct _CFG_GET_PKI_FQDN_SUFFIX_RESPONSE
{
#pragma pack()
{
~PTHICommand();
AMT_STATUS _call(const unsigned char *command, UINT32 command_size, UINT8 **readBuffer, UINT32 rcmd, unsigned int expSize = 0);
AMT_STATUS _verifyResponseHeader(const UINT32 command, const PTHI_MESSAGE_HEADER &response_header, UINT32 response_size);
AMT_STATUS _verifyRemoteAccessConnectionStatus(const CFG_GET_REMOTE_ACCESS_CONNECTION_STATUS_RESPONSE &response);
unsigned long m_sendTimeout;
};
/*
* Constants
*/
const PTHI_MESSAGE_HEADER GET_CODE_VERSION_HEADER = {
};
};
};
const PTHI_MESSAGE_HEADER GET_FEATURES_STATE_HEADER = {
{AMT_MAJOR_VERSION, AMT_MINOR_VERSION}, 0, {{GET_FEATURES_STATE_REQUEST}}, (sizeof(CFG_GET_FEATURES_STATE_REQUEST) - sizeof(PTHI_MESSAGE_HEADER))
};
};
};
{AMT_MAJOR_VERSION, AMT_MINOR_VERSION}, 0, {{GET_LAN_INTERFACE_SETTINGS_REQUEST}}, (sizeof(CFG_GET_LAN_INTERFACE_SETTINGS_REQUEST) - sizeof(PTHI_MESSAGE_HEADER))
};
};
};
{AMT_MAJOR_VERSION, AMT_MINOR_VERSION}, 0, {{SET_ENTERPRISE_ACCESS_REQUEST}}, (sizeof(CFG_SET_ENTERPRISE_ACCESS_REQUEST) - sizeof(PTHI_MESSAGE_HEADER))
};
};
};
};
const PTHI_MESSAGE_HEADER GET_AMT_STATE_HEADER = {
};
const PTHI_MESSAGE_HEADER GENERATE_RNG_SEED_HEADER = {
};
};
};
};
};
};
const PTHI_MESSAGE_HEADER GET_CERTHASH_ENTRY_HEADER = {
};
};
#endif