xpmgr/BuildTools/Include/ehstorextensions.h

1103 lines
34 KiB
C

/*++
Copyright (c) 2008 Microsoft Corporation
Module Name:
EhStorExtensions.h
Abstract:
This module defines the Enhanced Storage WPD interfaces for silo drivers.
Environment:
User mode only.
--*/
#pragma once
#include <windows.h>
#include <propkey.h>
// ---------------------------------------------------------------------------
//
// This section defines the device interfaces for Enhanced Storage devices.
//
// ---------------------------------------------------------------------------
//
// {3897F6A4-FD35-4bc8-A0B7-5DBBA36ADAFA}
//
DEFINE_GUID(
GUID_DEVINTERFACE_ENHANCED_STORAGE_SILO,
0x3897f6a4, 0xfd35, 0x4bc8, 0xa0, 0xb7, 0x5d, 0xbb, 0xa3, 0x6a, 0xda, 0xfa);
// ---------------------------------------------------------------------------
//
// This section defines all Commands, Parameters and Options essociated with:
// WPD_CATEGORY_ENHANCED_STORAGE
//
// This category is for commands and parameters for storage functional objects.
//
// ---------------------------------------------------------------------------
DEFINE_GUID(
WPD_CATEGORY_ENHANCED_STORAGE,
0x91248166, 0xb832, 0x4ad4, 0xba, 0xa4, 0x7c, 0xa0, 0xb6, 0xb2, 0x79, 0x8c);
// ---------------------------------------------------------------------------
//
// Authentication specific commands
//
// ---------------------------------------------------------------------------
//
// ENHANCED_STORAGE_COMMAND_SILO_IS_AUTHENTICATION_SILO
// This command will return whether or not the silo is an authentication silo.
// Access:
// (FILE_READ_ACCESS | FILE_WRITE_ACCESS)
// Parameters:
// None.
// Results:
// WPD_PROPERTY_COMMON_HRESULT - The last status code for Authentication or UnAuthentication
// ENHANCED_STORAGE_PROPERTY_IS_AUTHENTICATION_SILO [VT_BOOLEAN] - TRUE if an Auth-C silo, FALSE otherwise
//
DEFINE_PROPERTYKEY(
ENHANCED_STORAGE_COMMAND_SILO_IS_AUTHENTICATION_SILO,
0x91248166, 0xb832, 0x4ad4, 0xba, 0xa4, 0x7c, 0xa0, 0xb6, 0xb2, 0x79, 0x8c,
6);
//
// ENHANCED_STORAGE_COMMAND_SILO_GET_AUTHENTICATION_STATE
// This command will return the authentication state for the silo.
// Access:
// (FILE_READ_ACCESS | FILE_WRITE_ACCESS)
// Parameters:
// None.
// Results:
// WPD_PROPERTY_COMMON_HRESULT - The last status code for Authentication or UnAuthentication
// ENHANCED_STORAGE_PROPERTY_AUTHENTICATION_STATE [VT_UI4]
//
DEFINE_PROPERTYKEY(
ENHANCED_STORAGE_COMMAND_SILO_GET_AUTHENTICATION_STATE,
0x91248166, 0xb832, 0x4ad4, 0xba, 0xa4, 0x7c, 0xa0, 0xb6, 0xb2, 0x79, 0x8c,
7);
//
// ENHANCED_STORAGE_COMMAND_SILO_START_AUTHENTICATION
// This command will begin authentication for the silo.
// An application needs to register for callbacks to get authorization
// state change notification
// Access:
// (FILE_READ_ACCESS | FILE_WRITE_ACCESS)
// Parameters:
// None.
// Results:
// WPD_PROPERTY_COMMON_HRESULT
//
DEFINE_PROPERTYKEY(
ENHANCED_STORAGE_COMMAND_SILO_START_AUTHENTICATION,
0x91248166, 0xb832, 0x4ad4, 0xba, 0xa4, 0x7c, 0xa0, 0xb6, 0xb2, 0x79, 0x8c,
9);
//
// ENHANCED_STORAGE_COMMAND_SILO_START_UNAUTHENTICATION
// This command will begin unauthentication for the silo.
// An application needs to register for callbacks to get authorization
// state change notification
// Access:
// (FILE_READ_ACCESS | FILE_WRITE_ACCESS)
// Parameters:
// None.
// Results:
// WPD_PROPERTY_COMMON_HRESULT
//
DEFINE_PROPERTYKEY(
ENHANCED_STORAGE_COMMAND_SILO_START_UNAUTHENTICATION,
0x91248166, 0xb832, 0x4ad4, 0xba, 0xa4, 0x7c, 0xa0, 0xb6, 0xb2, 0x79, 0x8c,
10);
//
// ENHANCED_STORAGE_COMMAND_SILO_ENUMERATE_SILOS
// This command will enumerate the silo information for the specified silo type
// Access:
// (FILE_READ_ACCESS | FILE_WRITE_ACCESS)
// Parameters:
// [ Required ] ENHANCED_STORAGE_PROPERTY_QUERY_SILO_TYPE
// Results:
// WPD_PROPERTY_COMMON_HRESULT
//
DEFINE_PROPERTYKEY(
ENHANCED_STORAGE_COMMAND_SILO_ENUMERATE_SILOS,
0x91248166, 0xb832, 0x4ad4, 0xba, 0xa4, 0x7c, 0xa0, 0xb6, 0xb2, 0x79, 0x8c,
11);
// ---------------------------------------------------------------------------
//
// Certificate specific commands
//
// ---------------------------------------------------------------------------
//
// ENHANCED_STORAGE_COMMAND_CERT_HOST_CERTIFICATE_AUTHENTICATION
// This command will attempt to do a host authentication based on an HCh
// (or XCh) from the device. If an index or certificate is specified, it
// will use that certificate.
// The default behavior is to authenticate any of the HCh certs present on
// the device if possible (or XCh.)
// Access:
// (FILE_READ_ACCESS)
// Parameters:
// [ Optional ] ENHANCED_STORAGE_PROPERTY_CERTIFICATE_INDEX [VT_UINT]
// [ Optional ] ENHANCED_STORAGE_PROPERTY_CERTIFICATE [VT_VECTOR | VT_UI1]
// Results:
// WPD_PROPERTY_COMMON_HRESULT
//
DEFINE_PROPERTYKEY(
ENHANCED_STORAGE_COMMAND_CERT_HOST_CERTIFICATE_AUTHENTICATION,
0x91248166, 0xb832, 0x4ad4, 0xba, 0xa4, 0x7c, 0xa0, 0xb6, 0xb2, 0x79, 0x8c,
101);
//
// DEVICE_AUTHENTICATION
// ENHANCED_STORAGE_COMMAND_CERT_DEVICE_CERTIFICATE_AUTHENTICATION
// This command will attempt to do a device authentication operation. If
// an index or certificate is specified, it will use that certificate. It
// must be ASCm or ASCh.
// The default behavior is to authenticate ASCm.
// Access:
// (FILE_READ_ACCESS)
// Parameters:
// [ Optional ] ENHANCED_STORAGE_PROPERTY_CERTIFICATE_INDEX [VT_UINT]
// [ Optional ] ENHANCED_STORAGE_PROPERTY_CERTIFICATE [VT_VECTOR | VT_UI1]
// Results:
// WPD_PROPERTY_COMMON_HRESULT
//
DEFINE_PROPERTYKEY(
ENHANCED_STORAGE_COMMAND_CERT_DEVICE_CERTIFICATE_AUTHENTICATION,
0x91248166, 0xb832, 0x4ad4, 0xba, 0xa4, 0x7c, 0xa0, 0xb6, 0xb2, 0x79, 0x8c,
102);
//
// ENHANCED_STORAGE_COMMAND_CERT_ADMIN_CERTIFICATE_AUTHENTICATION
// This command will attempt to do an admin authentication based on the PCp
// (or XCp) from the device.
// This is an admin command - it requires both read and write access.
// Access:
// (FILE_READ_ACCESS | FILE_WRITE_ACCESS)
// Parameters:
// None
// Results:
// WPD_PROPERTY_COMMON_HRESULT
//
DEFINE_PROPERTYKEY(
ENHANCED_STORAGE_COMMAND_CERT_ADMIN_CERTIFICATE_AUTHENTICATION,
0x91248166, 0xb832, 0x4ad4, 0xba, 0xa4, 0x7c, 0xa0, 0xb6, 0xb2, 0x79, 0x8c,
103);
//
// ENHANCED_STORAGE_COMMAND_CERT_INITIALIZE_TO_MANUFACTURER_STATE
// This command will attempt to initialized to the manufacturer state.
// Requires PCp authentication.
// Access:
// (FILE_READ_ACCESS | FILE_WRITE_ACCESS)
// Parameters:
// None.
// Results:
// WPD_PROPERTY_COMMON_HRESULT
//
DEFINE_PROPERTYKEY(
ENHANCED_STORAGE_COMMAND_CERT_INITIALIZE_TO_MANUFACTURER_STATE,
0x91248166, 0xb832, 0x4ad4, 0xba, 0xa4, 0x7c, 0xa0, 0xb6, 0xb2, 0x79, 0x8c,
104);
//
// ENHANCED_STORAGE_COMMAND_CERT_GET_CERTIFICATE_COUNT
// This command will get the number of certificate slots on the device.
// Access:
// (FILE_READ_ACCESS)
// Parameters:
// none.
// Results:
// WPD_PROPERTY_COMMON_HRESULT
// ENHANCED_STORAGE_PROPERTY_MAX_CERTIFICATE_COUNT [VT_UINT]
// ENHANCED_STORAGE_PROPERTY_STORED_CERTIFICATE_COUNT [VT_UINT]
//
DEFINE_PROPERTYKEY(
ENHANCED_STORAGE_COMMAND_CERT_GET_CERTIFICATE_COUNT,
0x91248166, 0xb832, 0x4ad4, 0xba, 0xa4, 0x7c, 0xa0, 0xb6, 0xb2, 0x79, 0x8c,
105);
//
// ENHANCED_STORAGE_COMMAND_CERT_GET_CERTIFICATE
// This command will return the certificate at the certificate index location.
// Index 0 is a special location that returns the ASCm chain in PKCS7 format.
// Access:
// (FILE_READ_ACCESS)
// Parameters:
// [ Required ] ENHANCED_STORAGE_PROPERTY_CERTIFICATE_INDEX [VT_UINT]
// Results:
// WPD_PROPERTY_COMMON_HRESULT
// ENHANCED_STORAGE_PROPERTY_CERTIFICATE_TYPE [VT_UINT]
// ENHANCED_STORAGE_PROPERTY_VALIDATION_POLICY [VT_UINT]
// ENHANCED_STORAGE_PROPERTY_SIGNER_CERTIFICATE_INDEX [VT_UINT]
// ENHANCED_STORAGE_PROPERTY_NEXT_CERTIFICATE_INDEX [VT_UINT]
// ENHANCED_STORAGE_PROPERTY_NEXT_CERTIFICATE_OF_TYPE_INDEX [VT_UINT]
// ENHANCED_STORAGE_PROPERTY_CERTIFICATE_LENGTH [VT_UINT]
// ENHANCED_STORAGE_PROPERTY_CERTIFICATE [VT_VECTOR | VT_UI1]
DEFINE_PROPERTYKEY(
ENHANCED_STORAGE_COMMAND_CERT_GET_CERTIFICATE,
0x91248166, 0xb832, 0x4ad4, 0xba, 0xa4, 0x7c, 0xa0, 0xb6, 0xb2, 0x79, 0x8c,
106);
//
// ENHANCED_STORAGE_COMMAND_CERT_SET_CERTIFICATE
// This command will set a certificate to the certificate index location.
// Requires admin authentication.
// Access:
// (FILE_READ_ACCESS | FILE_WRITE_ACCESS)
// Parameters:
// [ Required ] ENHANCED_STORAGE_PROPERTY_CERTIFICATE_INDEX [VT_UINT]
// [ Required ] ENHANCED_STORAGE_PROPERTY_CERTIFICATE_TYPE [VT_UINT]
// [ Required ] ENHANCED_STORAGE_PROPERTY_VALIDATION_POLICY [VT_UINT]
// [ Required ] ENHANCED_STORAGE_PROPERTY_SIGNER_CERTIFICATE_INDEX [VT_UINT]
// [ Required ] ENHANCED_STORAGE_PROPERTY_CERTIFICATE [VT_VECTOR | VT_UI1]
// Results:
// WPD_PROPERTY_COMMON_HRESULT
//
DEFINE_PROPERTYKEY(
ENHANCED_STORAGE_COMMAND_CERT_SET_CERTIFICATE,
0x91248166, 0xb832, 0x4ad4, 0xba, 0xa4, 0x7c, 0xa0, 0xb6, 0xb2, 0x79, 0x8c,
107);
//
// ENHANCED_STORAGE_COMMAND_CERT_CREATE_CERTIFICATE_REQUEST
// This command will esk the device to create a certificate request.
// This will then be signed by the application's chosen CA.
// Access:
// (FILE_READ_ACCESS | FILE_WRITE_ACCESS)
// Parameters:
// None.
// Results:
// WPD_PROPERTY_COMMON_HRESULT
// ENHANCED_STORAGE_PROPERTY_CERTIFICATE_REQUEST [VT_VECTOR | VT_UI1]
//
DEFINE_PROPERTYKEY(
ENHANCED_STORAGE_COMMAND_CERT_CREATE_CERTIFICATE_REQUEST,
0x91248166, 0xb832, 0x4ad4, 0xba, 0xa4, 0x7c, 0xa0, 0xb6, 0xb2, 0x79, 0x8c,
108);
//
// ENHANCED_STORAGE_COMMAND_CERT_UNAUTHENTICATION
// This command will issue a command to set the cert silo to the
// initialized state.
// Access:
// (FILE_READ_ACCESS | FILE_WRITE_ACCESS)
// Parameters:
// None
// Results:
// WPD_PROPERTY_COMMON_HRESULT
//
DEFINE_PROPERTYKEY(
ENHANCED_STORAGE_COMMAND_CERT_UNAUTHENTICATION,
0x91248166, 0xb832, 0x4ad4, 0xba, 0xa4, 0x7c, 0xa0, 0xb6, 0xb2, 0x79, 0x8c,
110);
//
// ENHANCED_STORAGE_COMMAND_CERT_GET_SILO_CAPABILITY
// This command will issue a command to get a silo capability from the
// silo. Data returned is in the format returned from the silo.
// Access:
// (FILE_READ_ACCESS)
// Parameters:
// [ Required ] ENHANCED_STORAGE_PROPERTY_CERTIFICATE_CAPABILITY_TYPE [VT_UINT]
// Results:
// WPD_PROPERTY_COMMON_HRESULT
// ENHANCED_STORAGE_PROPERTY_CERTIFICATE_SILO_CAPABILITY [VT_VECTOR | VT_UI1]
//
DEFINE_PROPERTYKEY(
ENHANCED_STORAGE_COMMAND_CERT_GET_SILO_CAPABILITY,
0x91248166, 0xb832, 0x4ad4, 0xba, 0xa4, 0x7c, 0xa0, 0xb6, 0xb2, 0x79, 0x8c,
111);
//
// ENHANCED_STORAGE_COMMAND_CERT_GET_SILO_CAPABILITIES
// This command will return the silo capabilities as a collection of
// capabilities.
// Access:
// (FILE_READ_ACCESS)
// Parameters:
// None.
// Results:
// WPD_PROPERTY_COMMON_HRESULT
// ENHANCED_STORAGE_PROPERTY_CERTIFICATE_SILO_CAPABILITIES [VT_UNKNOWN]
// - ENHANCED_STORAGE_CAPABILITY_HASH_ALGS [VT_LPWSTR - semi-colon delimited]
// - ENHANCED_STORAGE_CAPABILITY_ASYMMETRIC_KEY_CRYPTOGRAPHY [VT_LPWSTR - semi-colon delimited]
// - ENHANCED_STORAGE_CAPABILITY_SIGNING_ALGS [VT_LPWSTR - semi-colon delimited]
// - ENHANCED_STORAGE_CAPABILITY_RENDER_USER_DATA_UNUSABLE [ VT_BOOL ]
// - ENHANCED_STORAGE_CAPABILITY_CERTIFICATE_EXTENSION_PARSING [ VT_BOOL ]
//
DEFINE_PROPERTYKEY(
ENHANCED_STORAGE_COMMAND_CERT_GET_SILO_CAPABILITIES,
0x91248166, 0xb832, 0x4ad4, 0xba, 0xa4, 0x7c, 0xa0, 0xb6, 0xb2, 0x79, 0x8c,
112);
//
// ENHANCED_STORAGE_COMMAND_CERT_GET_ACT_FRIENDLY_NAME
// This command will return the friendly name of the ACT containing the silo.
// Access:
// (FILE_READ_ACCESS)
// Parameters:
// None.
// Results:
// WPD_PROPERTY_COMMON_HRESULT
// [optional] ENHANCED_STORAGE_PROPERTY_CERTIFICATE_ACT_FRIENDLY_NAME [VT_LPWSTR]
//
DEFINE_PROPERTYKEY(
ENHANCED_STORAGE_COMMAND_CERT_GET_ACT_FRIENDLY_NAME,
0x91248166, 0xb832, 0x4ad4, 0xba, 0xa4, 0x7c, 0xa0, 0xb6, 0xb2, 0x79, 0x8c,
113);
//
// ENHANCED_STORAGE_COMMAND_CERT_GET_SILO_GUID
// This command will return the silo's GUID.
// Access:
// (FILE_READ_ACCESS)
// Parameters:
// None.
// Results:
// WPD_PROPERTY_COMMON_HRESULT
// ENHANCED_STORAGE_PROPERTY_CERTIFICATE_SILO_GUID [VT_LPWSTR]
//
DEFINE_PROPERTYKEY(
ENHANCED_STORAGE_COMMAND_CERT_GET_SILO_GUID,
0x91248166, 0xb832, 0x4ad4, 0xba, 0xa4, 0x7c, 0xa0, 0xb6, 0xb2, 0x79, 0x8c,
114);
// ---------------------------------------------------------------------------
//
// Password specific commands
//
// ---------------------------------------------------------------------------
//
// ENHANCED_STORAGE_COMMAND_PASSWORD_AUTHORIZE_ACT_ACCESS
// This command attempts to authenticate to the silo for ACT's data access
// Access:
// (FILE_READ_ACCESS | FILE_WRITE_ACCESS)
// Parameters:
// [ Required ] ENHANCED_STORAGE_PROPERTY_PASSWORD
// [ Required ] ENHANCED_STORAGE_PROPERTY_PASSWORD_INDICATOR
// Results:
// WPD_PROPERTY_COMMON_HRESULT - status code for the operation
//
DEFINE_PROPERTYKEY(
ENHANCED_STORAGE_COMMAND_PASSWORD_AUTHORIZE_ACT_ACCESS,
0x91248166, 0xb832, 0x4ad4, 0xba, 0xa4, 0x7c, 0xa0, 0xb6, 0xb2, 0x79, 0x8c,
203);
//
// ENHANCED_STORAGE_COMMAND_PASSWORD_UNAUTHORIZE_ACT_ACCESS
// This command attempts to un-authenticate to the silo for ACT's data
// access.
// Access:
// (FILE_READ_ACCESS | FILE_WRITE_ACCESS)
// Parameters:
// [ Optional ] ENHANCED_STORAGE_PROPERTY_PASSWORD
// [ Optional ] ENHANCED_STORAGE_PROPERTY_PASSWORD_INDICATOR
// Results:
// WPD_PROPERTY_COMMON_HRESULT - status code for the operation
//
DEFINE_PROPERTYKEY(
ENHANCED_STORAGE_COMMAND_PASSWORD_UNAUTHORIZE_ACT_ACCESS,
0x91248166, 0xb832, 0x4ad4, 0xba, 0xa4, 0x7c, 0xa0, 0xb6, 0xb2, 0x79, 0x8c,
204);
//
// ENHANCED_STORAGE_COMMAND_PASSWORD_QUERY_INFORMATION
// This command queries the current password silo information
// Access:
// (FILE_READ_ACCESS)
// Parameters:
// none
// Results:
// ENHANCED_STORAGE_PROPERTY_AUTHENTICATION_STATE
// ENHANCED_STORAGE_PROPERTY_PASSWORD_SILO_INFO
// ENHANCED_STORAGE_PROPERTY_ADMIN_HINT
// ENHANCED_STORAGE_PROPERTY_USER_HINT
// ENHANCED_STORAGE_PROPERTY_USER_NAME
// WPD_PROPERTY_COMMON_HRESULT - status code for the operation
//
DEFINE_PROPERTYKEY(
ENHANCED_STORAGE_COMMAND_PASSWORD_QUERY_INFORMATION,
0x91248166, 0xb832, 0x4ad4, 0xba, 0xa4, 0x7c, 0xa0, 0xb6, 0xb2, 0x79, 0x8c,
205);
//
// ENHANCED_STORAGE_COMMAND_PASSWORD_CONFIG_ADMINISTRATOR
// This command configures the administrator account
// Access:
// (FILE_READ_ACCESS | FILE_WRITE_ACCESS)
// Parameters:
// [ Optional ] ENHANCED_STORAGE_PROPERTY_MAX_AUTH_FAILURES
// [ Optional ] ENHANCED_STORAGE_PROPERTY_AUTH_REQUIRED_FOR_INITIALIZE
// Results:
// WPD_PROPERTY_COMMON_HRESULT - status code for the operation
//
DEFINE_PROPERTYKEY(
ENHANCED_STORAGE_COMMAND_PASSWORD_CONFIG_ADMINISTRATOR,
0x91248166, 0xb832, 0x4ad4, 0xba, 0xa4, 0x7c, 0xa0, 0xb6, 0xb2, 0x79, 0x8c,
206);
//
// ENHANCED_STORAGE_COMMAND_PASSWORD_CREATE_USER
// This command creates a user account
// Access:
// (FILE_READ_ACCESS | FILE_WRITE_ACCESS)
// Parameters:
// [ Required ] ENHANCED_STORAGE_PROPERTY_PASSWORD
// [ Required ] ENHANCED_STORAGE_PROPERTY_NEW_PASSWORD
// [ Required ] ENHANCED_STORAGE_PROPERTY_USER_HINT
// [ Required ] ENHANCED_STORAGE_PROPERTY_USER_NAME
// [ Optional ] ENHANCED_STORAGE_PROPERTY_MAX_AUTH_FAILURES
// Results:
// WPD_PROPERTY_COMMON_HRESULT - status code for the operation
//
DEFINE_PROPERTYKEY(
ENHANCED_STORAGE_COMMAND_PASSWORD_CREATE_USER,
0x91248166, 0xb832, 0x4ad4, 0xba, 0xa4, 0x7c, 0xa0, 0xb6, 0xb2, 0x79, 0x8c,
207);
//
// ENHANCED_STORAGE_COMMAND_PASSWORD_DELETE_USER
// This command deletes the existing user account
// Access:
// (FILE_READ_ACCESS | FILE_WRITE_ACCESS)
// Parameters:
// none
// Results:
// WPD_PROPERTY_COMMON_HRESULT - status code for the operation
//
DEFINE_PROPERTYKEY(
ENHANCED_STORAGE_COMMAND_PASSWORD_DELETE_USER,
0x91248166, 0xb832, 0x4ad4, 0xba, 0xa4, 0x7c, 0xa0, 0xb6, 0xb2, 0x79, 0x8c,
208);
//
// ENHANCED_STORAGE_COMMAND_PASSWORD_CHANGE_PASSWORD
// This command changes the password for adminstritor or user account
// Access:
// (FILE_READ_ACCESS | FILE_WRITE_ACCESS)
// Parameters:
// [ Required ] ENHANCED_STORAGE_PROPERTY_PASSWORD_INDICATOR
// [ Required ] ENHANCED_STORAGE_PROPERTY_PASSWORD
// [ Required ] ENHANCED_STORAGE_PROPERTY_NEW_PASSWORD
// [ Required ] ENHANCED_STORAGE_PROPERTY_NEW_HINT
// [ Required ] ENHANCED_STORAGE_PROPERTY_NEW_PASSWORD_INDICATOR
// [ Optional ] ENHANCED_STORAGE_PROPERTY_SECURITY_IDENTIFIER
// Results:
// WPD_PROPERTY_COMMON_HRESULT - status code for the operation
//
DEFINE_PROPERTYKEY(
ENHANCED_STORAGE_COMMAND_PASSWORD_CHANGE_PASSWORD,
0x91248166, 0xb832, 0x4ad4, 0xba, 0xa4, 0x7c, 0xa0, 0xb6, 0xb2, 0x79, 0x8c,
209);
//
// ENHANCED_STORAGE_COMMAND_PASSWORD_INITIALIZE_USER_PASSWORD
// This command initializes the existing user password
// Access:
// (FILE_READ_ACCESS | FILE_WRITE_ACCESS)
// Parameters:
// [ Required ] ENHANCED_STORAGE_PROPERTY_PASSWORD
// [ Required ] ENHANCED_STORAGE_PROPERTY_NEW_PASSWORD
// [ Required ] ENHANCED_STORAGE_PROPERTY_NEW_HINT
// Results:
// WPD_PROPERTY_COMMON_HRESULT - status code for the operation
//
DEFINE_PROPERTYKEY(
ENHANCED_STORAGE_COMMAND_PASSWORD_INITIALIZE_USER_PASSWORD,
0x91248166, 0xb832, 0x4ad4, 0xba, 0xa4, 0x7c, 0xa0, 0xb6, 0xb2, 0x79, 0x8c,
210);
//
// ENHANCED_STORAGE_COMMAND_PASSWORD_START_INITIALIZE_TO_MANUFACTURER_STATE
// This command starts the initialization process
// Access:
// (FILE_READ_ACCESS | FILE_WRITE_ACCESS)
// Parameters:
// [ Optional ] ENHANCED_STORAGE_PROPERTY_SECURITY_IDENTIFIER
// Results:
// WPD_PROPERTY_COMMON_HRESULT - status code for the operation
//
DEFINE_PROPERTYKEY(
ENHANCED_STORAGE_COMMAND_PASSWORD_START_INITIALIZE_TO_MANUFACTURER_STATE,
0x91248166, 0xb832, 0x4ad4, 0xba, 0xa4, 0x7c, 0xa0, 0xb6, 0xb2, 0x79, 0x8c,
211);
// ---------------------------------------------------------------------------
//
// This section defines all WPD Enhanced Storage Properties
//
// ---------------------------------------------------------------------------
//
// ENHANCED_STORAGE_PROPERTY_AUTHORIZATION_STATE
// [ VT_UI4 ] Authorization status of the Enhanced Storage ACT.
//
DEFINE_PROPERTYKEY(
ENHANCED_STORAGE_PROPERTY_AUTHORIZATION_STATE,
0x91248166, 0xb832, 0x4ad4, 0xba, 0xa4, 0x7c, 0xa0, 0xb6, 0xb2, 0x79, 0x8c,
1005);
//
// ENHANCED_STORAGE_PROPERTY_AUTHENTICATION_STATE
// [ VT_UI4 ] Authentication status of the Enhanced Storage Silo
//
DEFINE_PROPERTYKEY(
ENHANCED_STORAGE_PROPERTY_AUTHENTICATION_STATE,
0x91248166, 0xb832, 0x4ad4, 0xba, 0xa4, 0x7c, 0xa0, 0xb6, 0xb2, 0x79, 0x8c,
1006);
//
// ENHANCED_STORAGE_PROPERTY_DRIVER_STATE
// [ VT_UI4 ] Current Operation for the ACT.
//
DEFINE_PROPERTYKEY(
ENHANCED_STORAGE_PROPERTY_ACT_DRIVER_STATE,
0x91248166, 0xb832, 0x4ad4, 0xba, 0xa4, 0x7c, 0xa0, 0xb6, 0xb2, 0x79, 0x8c,
1007);
//
// ENHANCED_STORAGE_PROPERTY_IS_AUTHENTICATION_SILO
// [ VT_BOOL ] Is this silo an authentication silo?
//
DEFINE_PROPERTYKEY(
ENHANCED_STORAGE_PROPERTY_IS_AUTHENTICATION_SILO,
0x91248166, 0xb832, 0x4ad4, 0xba, 0xa4, 0x7c, 0xa0, 0xb6, 0xb2, 0x79, 0x8c,
1009);
//
// ENHANCED_STORAGE_PROPERTY_AUTHENTICATION_NEEDS_UI
// [ VT_BOOL ] Is this silo an authentication silo?
//
DEFINE_PROPERTYKEY(
ENHANCED_STORAGE_PROPERTY_AUTHENTICATION_NEEDS_UI,
0x91248166, 0xb832, 0x4ad4, 0xba, 0xa4, 0x7c, 0xa0, 0xb6, 0xb2, 0x79, 0x8c,
1010);
// ---------------------------------------------------------------------------
//
// Password silo specific properties
//
// ---------------------------------------------------------------------------
//
// ENHANCED_STORAGE_PROPERTY_MAX_AUTH_FAILURES
// [ VT_UI4 ] Maximum number of password authentication failures
//
DEFINE_PROPERTYKEY(
ENHANCED_STORAGE_PROPERTY_MAX_AUTH_FAILURES,
0x91248166, 0xb832, 0x4ad4, 0xba, 0xa4, 0x7c, 0xa0, 0xb6, 0xb2, 0x79, 0x8c,
2001);
//
// ENHANCED_STORAGE_PROPERTY_PASSWORD
// [ VT_BLOB ] The password to send or set
//
DEFINE_PROPERTYKEY(
ENHANCED_STORAGE_PROPERTY_PASSWORD,
0x91248166, 0xb832, 0x4ad4, 0xba, 0xa4, 0x7c, 0xa0, 0xb6, 0xb2, 0x79, 0x8c,
2004);
//
// ENHANCED_STORAGE_PROPERTY_OLD_PASSWORD
// [ VT_BLOB ] The password used for changing password.
//
DEFINE_PROPERTYKEY(
ENHANCED_STORAGE_PROPERTY_OLD_PASSWORD,
0x91248166, 0xb832, 0x4ad4, 0xba, 0xa4, 0x7c, 0xa0, 0xb6, 0xb2, 0x79, 0x8c,
2005);
//
// ENHANCED_STORAGE_PROPERTY_PASSWORD_INDICATOR
// [ VT_BOOL ] TRUE: user, FALSE: admin
//
DEFINE_PROPERTYKEY(
ENHANCED_STORAGE_PROPERTY_PASSWORD_INDICATOR,
0x91248166, 0xb832, 0x4ad4, 0xba, 0xa4, 0x7c, 0xa0, 0xb6, 0xb2, 0x79, 0x8c,
2006);
//
// ENHANCED_STORAGE_PROPERTY_NEW_PASSWORD_INDICATOR
// [ VT_BOOL ] TRUE: user, FALSE: admin
//
DEFINE_PROPERTYKEY(
ENHANCED_STORAGE_PROPERTY_NEW_PASSWORD_INDICATOR,
0x91248166, 0xb832, 0x4ad4, 0xba, 0xa4, 0x7c, 0xa0, 0xb6, 0xb2, 0x79, 0x8c,
2007);
//
// ENHANCED_STORAGE_PROPERTY_NEW_PASSWORD
// [ VT_BLOB ] The new password. Used to re-set the password
//
DEFINE_PROPERTYKEY(
ENHANCED_STORAGE_PROPERTY_NEW_PASSWORD,
0x91248166, 0xb832, 0x4ad4, 0xba, 0xa4, 0x7c, 0xa0, 0xb6, 0xb2, 0x79, 0x8c,
2008);
//
// ENHANCED_STORAGE_PROPERTY_USER_HINT
// [ VT_LPCSTR ] The user hint
//
DEFINE_PROPERTYKEY(
ENHANCED_STORAGE_PROPERTY_USER_HINT,
0x91248166, 0xb832, 0x4ad4, 0xba, 0xa4, 0x7c, 0xa0, 0xb6, 0xb2, 0x79, 0x8c,
2009);
//
// ENHANCED_STORAGE_PROPERTY_USER_NAME
// [ VT_LPCSTR ] The friendly user name
//
DEFINE_PROPERTYKEY(
ENHANCED_STORAGE_PROPERTY_USER_NAME,
0x91248166, 0xb832, 0x4ad4, 0xba, 0xa4, 0x7c, 0xa0, 0xb6, 0xb2, 0x79, 0x8c,
2010);
//
// ENHANCED_STORAGE_PROPERTY_ADMIN_HINT
// [ VT_LPCSTR ] The admin hint
//
DEFINE_PROPERTYKEY(
ENHANCED_STORAGE_PROPERTY_ADMIN_HINT,
0x91248166, 0xb832, 0x4ad4, 0xba, 0xa4, 0x7c, 0xa0, 0xb6, 0xb2, 0x79, 0x8c,
2011);
//
// ENHANCED_STORAGE_PROPERTY_SILO_NAME
// [ VT_LPCSTR ] The friendly name for the silo
//
DEFINE_PROPERTYKEY(
ENHANCED_STORAGE_PROPERTY_SILO_NAME,
0x91248166, 0xb832, 0x4ad4, 0xba, 0xa4, 0x7c, 0xa0, 0xb6, 0xb2, 0x79, 0x8c,
2012);
//
// ENHANCED_STORAGE_PROPERTY_SILO_FRIENDLYNAME_SPECIFIED
// [ VT_BOOL ] Flag to indicate if silo friendly name is given
//
DEFINE_PROPERTYKEY(
ENHANCED_STORAGE_PROPERTY_SILO_FRIENDLYNAME_SPECIFIED,
0x91248166, 0xb832, 0x4ad4, 0xba, 0xa4, 0x7c, 0xa0, 0xb6, 0xb2, 0x79, 0x8c,
2013);
//
// ENHANCED_STORAGE_PROPERTY_PASSWORD_SILO_INFO
// [ VT_BLOB ] The password silo information
//
DEFINE_PROPERTYKEY(
ENHANCED_STORAGE_PROPERTY_PASSWORD_SILO_INFO,
0x91248166, 0xb832, 0x4ad4, 0xba, 0xa4, 0x7c, 0xa0, 0xb6, 0xb2, 0x79, 0x8c,
2014);
//
// ENHANCED_STORAGE_PROPERTY_SECURITY_IDENTIFIER
// [ VT_BLOB ] Security Identifier for the password silo device
//
DEFINE_PROPERTYKEY(
ENHANCED_STORAGE_PROPERTY_SECURITY_IDENTIFIER,
0x91248166, 0xb832, 0x4ad4, 0xba, 0xa4, 0x7c, 0xa0, 0xb6, 0xb2, 0x79, 0x8c,
2015);
//
// ENHANCED_STORAGE_PROPERTY_QUERY_SILO_TYPE
// [ VT_UINT ] Query Silo Type
//
DEFINE_PROPERTYKEY(
ENHANCED_STORAGE_PROPERTY_QUERY_SILO_TYPE,
0x91248166, 0xb832, 0x4ad4, 0xba, 0xa4, 0x7c, 0xa0, 0xb6, 0xb2, 0x79, 0x8c,
2016);
//
// ENHANCED_STORAGE_PROPERTY_QUERY_SILO_RESULTS
// [ VT_BLOB ] Query Silo Properties result
//
DEFINE_PROPERTYKEY(
ENHANCED_STORAGE_PROPERTY_QUERY_SILO_RESULTS,
0x91248166, 0xb832, 0x4ad4, 0xba, 0xa4, 0x7c, 0xa0, 0xb6, 0xb2, 0x79, 0x8c,
2017);
//
// Data format used for the password silo information property
//
typedef struct _ENHANCED_STORAGE_PASSWORD_SILO_INFORMATION {
BYTE CurrentAdminFailures;
BYTE CurrentUserFailures;
DWORD TotalUserAuthenticationCount;
DWORD TotalAdminAuthenticationCount;
BOOL FipsCompliant;
BOOL SecurityIDAvailable;
BOOL InitializeInProgress;
BOOL ITMSArmed;
BOOL ITMSArmable;
BOOL UserCreated;
BOOL ResetOnPORDefault;
BOOL ResetOnPORCurrent;
BYTE MaxAdminFailures;
BYTE MaxUserFailures;
DWORD TimeToCompleteInitialization;
DWORD TimeRemainingToCompleteInitialization;
DWORD MinTimeToAuthenticate;
//
// Capabilities (never changed)
//
BYTE MaxAdminPasswordSize;
BYTE MinAdminPasswordSize;
BYTE MaxAdminHintSize;
BYTE MaxUserPasswordSize;
BYTE MinUserPasswordSize;
BYTE MaxUserHintSize;
BYTE MaxUserNameSize;
BYTE MaxSiloNameSize;
WORD MaxChallengeSize;
} ENHANCED_STORAGE_PASSWORD_SILO_INFORMATION, *PENHANCED_STORAGE_PASSWORD_SILO_INFORMATION;
// ---------------------------------------------------------------------------
//
// Certificate silo specific properties.
//
// ---------------------------------------------------------------------------
//
// ENHANCED_STORAGE_PROPERTY_MAX_CERTIFICATE_COUNT
// [ VT_UINT ] The number of certificate slots available on the device
//
DEFINE_PROPERTYKEY(
ENHANCED_STORAGE_PROPERTY_MAX_CERTIFICATE_COUNT,
0x91248166, 0xb832, 0x4ad4, 0xba, 0xa4, 0x7c, 0xa0, 0xb6, 0xb2, 0x79, 0x8c,
3001);
//
// ENHANCED_STORAGE_PROPERTY_STORED_CERTIFICATE_COUNT
// [ VT_UINT ] The number of certificate slots in use on the device
//
DEFINE_PROPERTYKEY(
ENHANCED_STORAGE_PROPERTY_STORED_CERTIFICATE_COUNT,
0x91248166, 0xb832, 0x4ad4, 0xba, 0xa4, 0x7c, 0xa0, 0xb6, 0xb2, 0x79, 0x8c,
3002);
//
// ENHANCED_STORAGE_PROPERTY_CERTIFICATE_INDEX
// [ VT_UINT ] The index for the certificate slot on the device
//
DEFINE_PROPERTYKEY(
ENHANCED_STORAGE_PROPERTY_CERTIFICATE_INDEX,
0x91248166, 0xb832, 0x4ad4, 0xba, 0xa4, 0x7c, 0xa0, 0xb6, 0xb2, 0x79, 0x8c,
3003);
//
// ENHANCED_STORAGE_PROPERTY_CERTIFICATE_TYPE
// [ VT_UINT ] The type of certificate
//
DEFINE_PROPERTYKEY(
ENHANCED_STORAGE_PROPERTY_CERTIFICATE_TYPE,
0x91248166, 0xb832, 0x4ad4, 0xba, 0xa4, 0x7c, 0xa0, 0xb6, 0xb2, 0x79, 0x8c,
3004);
//
// Certificate Types defines
//
#define CERT_TYPE_EMPTY 0x00 // No certificate
#define CERT_TYPE_ASCm 0x01 // Manufacturer's certificate (ASCm)
#define CERT_TYPE_PCp 0x02 // Provisioning Certificate (PCp)
#define CERT_TYPE_ASCh 0x03 // Authentication Silo Certificate (ASCh)
#define CERT_TYPE_HCh 0x04 // Host certificate (HCh)
#define CERT_TYPE_SIGNER 0x06 // Signer certificate (SCh)
//
// ENHANCED_STORAGE_PROPERTY_VALIDATION_POLICY
// [ VT_UINT ] The validation policy for the certificate
//
DEFINE_PROPERTYKEY(
ENHANCED_STORAGE_PROPERTY_VALIDATION_POLICY,
0x91248166, 0xb832, 0x4ad4, 0xba, 0xa4, 0x7c, 0xa0, 0xb6, 0xb2, 0x79, 0x8c,
3005);
//
// Validation Policy values
// - None: the corresponding private key of the stored certificate shall be used
// for authentication.
// - Basic: the certificate and certificate chain conforms to the basic validation
// policy.
// - Extended: the certificate chain conforms to the extended validation policy.
// The use of this validation policy must result in an error condition
// of the Authentication Silo if it does not support parsing of certificate
// extensions.
//
#define CERT_VALIDATION_POLICY_RESERVED 0x00
#define CERT_VALIDATION_POLICY_NONE 0x01
#define CERT_VALIDATION_POLICY_BASIC 0x02
#define CERT_VALIDATION_POLICY_EXTENDED 0x03
//
// ENHANCED_STORAGE_PROPERTY_NEXT_CERTIFICATE_INDEX
// [ VT_UINT ] The index of the next valid cert
//
DEFINE_PROPERTYKEY(
ENHANCED_STORAGE_PROPERTY_NEXT_CERTIFICATE_INDEX,
0x91248166, 0xb832, 0x4ad4, 0xba, 0xa4, 0x7c, 0xa0, 0xb6, 0xb2, 0x79, 0x8c,
3006);
//
// ENHANCED_STORAGE_PROPERTY_NEXT_CERTIFICATE_OF_TYPE_INDEX
// [ VT_UINT ] The index of the next valid cert of same type
//
DEFINE_PROPERTYKEY(
ENHANCED_STORAGE_PROPERTY_NEXT_CERTIFICATE_OF_TYPE_INDEX,
0x91248166, 0xb832, 0x4ad4, 0xba, 0xa4, 0x7c, 0xa0, 0xb6, 0xb2, 0x79, 0x8c,
3007);
//
// ENHANCED_STORAGE_PROPERTY_CERTIFICATE_LENGTH
// [ VT_UINT ] Length of the certificate in bytes
//
DEFINE_PROPERTYKEY(
ENHANCED_STORAGE_PROPERTY_CERTIFICATE_LENGTH,
0x91248166, 0xb832, 0x4ad4, 0xba, 0xa4, 0x7c, 0xa0, 0xb6, 0xb2, 0x79, 0x8c,
3008);
//
// ENHANCED_STORAGE_PROPERTY_CERTIFICATE
// [ VT_VECTOR | VT_UI1 ] The certificate buffer in X.509 format
//
DEFINE_PROPERTYKEY(
ENHANCED_STORAGE_PROPERTY_CERTIFICATE,
0x91248166, 0xb832, 0x4ad4, 0xba, 0xa4, 0x7c, 0xa0, 0xb6, 0xb2, 0x79, 0x8c,
3009);
//
// ENHANCED_STORAGE_PROPERTY_CERTIFICATE_REQUEST
// [ VT_VECTOR | VT_UI1 ] The certificate request buffer
//
DEFINE_PROPERTYKEY(
ENHANCED_STORAGE_PROPERTY_CERTIFICATE_REQUEST,
0x91248166, 0xb832, 0x4ad4, 0xba, 0xa4, 0x7c, 0xa0, 0xb6, 0xb2, 0x79, 0x8c,
3010);
//
// ENHANCED_STORAGE_PROPERTY_CERTIFICATE_CAPABILITY_TYPE
// [ VT_UINT ] Silo capability type
//
DEFINE_PROPERTYKEY(
ENHANCED_STORAGE_PROPERTY_CERTIFICATE_CAPABILITY_TYPE,
0x91248166, 0xb832, 0x4ad4, 0xba, 0xa4, 0x7c, 0xa0, 0xb6, 0xb2, 0x79, 0x8c,
3011);
//
// ENHANCED_STORAGE_PROPERTY_CERTIFICATE_SILO_CAPABILITY
// [ VT_VECTOR | VT_UINT ] The "raw" capability data return from the silo
//
DEFINE_PROPERTYKEY(
ENHANCED_STORAGE_PROPERTY_CERTIFICATE_SILO_CAPABILITY,
0x91248166, 0xb832, 0x4ad4, 0xba, 0xa4, 0x7c, 0xa0, 0xb6, 0xb2, 0x79, 0x8c,
3012);
//
// ENHANCED_STORAGE_PROPERTY_CERTIFICATE_SILO_CAPABILITIES
// [ VT_UNKNOWN ] The certificate silo capabilities returned in a collection
//
DEFINE_PROPERTYKEY(
ENHANCED_STORAGE_PROPERTY_CERTIFICATE_SILO_CAPABILITIES,
0x91248166, 0xb832, 0x4ad4, 0xba, 0xa4, 0x7c, 0xa0, 0xb6, 0xb2, 0x79, 0x8c,
3013);
//
// Cert Silo Capability Types
//
#define CERT_CAPABILITY_HASH_ALG 0x1
#define CERT_CAPABILITY_ASYMMETRIC_KEY_CRYPTOGRAPHY 0x2
#define CERT_CAPABILITY_SIGNATURE_ALG 0x3
#define CERT_CAPABILITY_CERTIFICATE_SUPPORT 0x4
#define CERT_CAPABILITY_OPTIONAL_FEATURES 0x5
#define CERT_MAX_CAPABILITY 0xFF // Maximum capability value
//
// Supported identifiers defined in 1667 spec
//
#define CERT_RSA_1024_OID "1.2.840.113549.1.1.1,1024"
#define CERT_RSA_2048_OID "1.2.840.113549.1.1.1,2048"
#define CERT_RSA_3072_OID "1.2.840.113549.1.1.1,3072"
#define CERT_RSASSA_PSS_SHA1_OID "1.2.840.113549.1.1.10,1.3.14.3.2.26"
#define CERT_RSASSA_PSS_SHA256_OID "1.2.840.113549.1.1.10,2.16.840.1.101.3.4.2.1"
#define CERT_RSASSA_PSS_SHA384_OID "1.2.840.113549.1.1.10,2.16.840.1.101.3.4.2.2"
#define CERT_RSASSA_PSS_SHA512_OID "1.2.840.113549.1.1.10,2.16.840.1.101.3.4.2.3"
//
// ENHANCED_STORAGE_PROPERTY_CERTIFICATE_ACT_FRIENDLY_NAME
// [ VT_LPWSTR ] The certificate silo's ACT friendly name
//
DEFINE_PROPERTYKEY(
ENHANCED_STORAGE_PROPERTY_CERTIFICATE_ACT_FRIENDLY_NAME,
0x91248166, 0xb832, 0x4ad4, 0xba, 0xa4, 0x7c, 0xa0, 0xb6, 0xb2, 0x79, 0x8c,
3014);
//
// ENHANCED_STORAGE_PROPERTY_CERTIFICATE_SILO_GUID
// [ VT_LPWSTR ] The certificate silo GUID
//
DEFINE_PROPERTYKEY(
ENHANCED_STORAGE_PROPERTY_CERTIFICATE_SILO_GUID,
0x91248166, 0xb832, 0x4ad4, 0xba, 0xa4, 0x7c, 0xa0, 0xb6, 0xb2, 0x79, 0x8c,
3015);
//
// ENHANCED_STORAGE_PROPERTY_SIGNER CERTIFICATE_INDEX
// [ VT_UINT ] The index for the signer certificate slot on the device
//
DEFINE_PROPERTYKEY(
ENHANCED_STORAGE_PROPERTY_SIGNER_CERTIFICATE_INDEX,
0x91248166, 0xb832, 0x4ad4, 0xba, 0xa4, 0x7c, 0xa0, 0xb6, 0xb2, 0x79, 0x8c,
3016);
// ---------------------------------------------------------------------------
//
// Silo capability specific properties.
//
// ---------------------------------------------------------------------------
//
// ENHANCED_STORAGE_CAPABILITY_HASH_ALGS
// [VT_LPWSTR] Semi-colon delimited string of hash algorithm identifiers
//
DEFINE_PROPERTYKEY(
ENHANCED_STORAGE_CAPABILITY_HASH_ALGS,
0x91248166, 0xb832, 0x4ad4, 0xba, 0xa4, 0x7c, 0xa0, 0xb6, 0xb2, 0x79, 0x8c,
4001);
//
// ENHANCED_STORAGE_CAPABILITY_ASYMMETRIC_KEY_CRYPTOGRAPHY
// [VT_LPWSTR] Semi-colon delimited string of asymmetric key cryptography supported
//
DEFINE_PROPERTYKEY(
ENHANCED_STORAGE_CAPABILITY_ASYMMETRIC_KEY_CRYPTOGRAPHY,
0x91248166, 0xb832, 0x4ad4, 0xba, 0xa4, 0x7c, 0xa0, 0xb6, 0xb2, 0x79, 0x8c,
4002);
//
// ENHANCED_STORAGE_CAPABILITY_SIGNING_ALGS
// [VT_LPWSTR] Semi-colon delimited string of signing algorithm identifiers
//
DEFINE_PROPERTYKEY(
ENHANCED_STORAGE_CAPABILITY_SIGNING_ALGS,
0x91248166, 0xb832, 0x4ad4, 0xba, 0xa4, 0x7c, 0xa0, 0xb6, 0xb2, 0x79, 0x8c,
4003);
//
// ENHANCED_STORAGE_CAPABILITY_RENDER_USER_DATA_UNUSABLE
// [ VT_BOOL ] Boolean indicating whether silo can render user data unusable
//
DEFINE_PROPERTYKEY(
ENHANCED_STORAGE_CAPABILITY_RENDER_USER_DATA_UNUSABLE,
0x91248166, 0xb832, 0x4ad4, 0xba, 0xa4, 0x7c, 0xa0, 0xb6, 0xb2, 0x79, 0x8c,
4004);
//
// ENHANCED_STORAGE_CAPABILITY_CERTIFICATE_EXTENSION_PARSING
// [ VT_BOOL ] Boolean indicating whether certificate extension fields are supported
//
DEFINE_PROPERTYKEY(
ENHANCED_STORAGE_CAPABILITY_CERTIFICATE_EXTENSION_PARSING,
0x91248166, 0xb832, 0x4ad4, 0xba, 0xa4, 0x7c, 0xa0, 0xb6, 0xb2, 0x79, 0x8c,
4005);