// Copyright (C) Intel Corporation, 2010 All Rights Reserved.
using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using System.Security;
using System.Text;
namespace Intel.Management.Mei
{
///
/// Represents a Local Intel Management Engine Device
///
[InterfaceType(ComInterfaceType.InterfaceIsDual)]
[Guid("2DCE50E0-7AC4-40a1-B6F9-06A31F818574")]
[ComVisible(true)]
public interface IMeDevice
{
///
/// Gets a Local (OS Admin) Wsman Connection to the device
///
Wsman.IWsmanConnection LocalConnection { get; }
///
/// Enables AMT State Independence (Manageablity mode becomes AMT)
///
bool Enable();
///
/// Gets basic discovery information
///
bool Discover();
///
/// Starts remote configuration
/// This will open the network interface for PKI provisioning
///
bool StartRemoteConfiguration(string otp, bool enableIPv6);
///
/// Gets the core version of the device
///
IMeVersionInfo CoreVersion { get; }
///
/// Gets a value that indicates the Setup status of the device
///
MeSetupStatus SetupStatus { get; }
///
/// Gets a specific code version of the device
///
/// Specific code version string
/// An IMeVersionInfo object containing version information
IMeVersionInfo GetCodeVersion(string name);
///
/// Gets the reported BIOS version of the device
///
string BiosVersion { get; }
///
/// Gets the Configuration Nonce for host setup signatures
///
string ConfigurationNonce { get; }
///
/// Returns the Digest Realm host master passwords
///
string DigestRealm { get; }
///
/// Unprovisions the ME using the local Driver
///
/// This method is only support when in Client Control Mode. Use Wsman for other modes
/// Returns true if sucessfull
bool Unprovision();
///
/// Gets a list of active supported root hashes
///
string[] ActiveHashes { get; }
///
/// Gets a value that indicates if Client Control Mode is supported
///
bool ClientControlSupported { get; }
///
/// Gets a value that indicates if Host Based Configuration is supported
///
bool HostConfigurationSupported { get; }
///
/// Gets a value that indicates if Remote setup of the device is enabled
///
bool RemoteConfigurationSupported { get; }
SecureString CreateRandomPassword(int length);
string GetPasswordHash(string user, string realm, SecureString password);
}
}