windows-nt/Source/XPSP1/NT/ds/security/inc/pstdef.h
2020-09-26 16:20:57 +08:00

300 lines
8.2 KiB
C

//+-------------------------------------------------------------------------
//
// Microsoft Windows
//
// Copyright (C) Microsoft Corporation, 1997 - 1999
//
// File: pstdef.h
//
//--------------------------------------------------------------------------
#ifndef _PSTDEF_H_
#define _PSTDEF_H_
/*
Typedefs, values
*/
// provider flags
// provider capabilities
typedef DWORD PST_PROVIDERCAPABILITIES;
#define PST_PC_PFX 0x00000001
#define PST_PC_HARDWARE 0x00000002
#define PST_PC_SMARTCARD 0x00000004
#define PST_PC_PCMCIA 0x00000008
#define PST_PC_MULTIPLE_REPOSITORIES 0x00000010
#define PST_PC_ROAMABLE 0x00000020
#define PST_PC_NOT_AVAILABLE 0x00000040
// NYI (not yet implemented)
typedef DWORD PST_REPOSITORYCAPABILITIES;
#define PST_RC_REMOVABLE 0x80000000
// provider storage area
typedef DWORD PST_KEY;
#define PST_KEY_CURRENT_USER 0x00000000
#define PST_KEY_LOCAL_MACHINE 0x00000001
/*
dwDefaultConfirmationStyle flags
*/
//
// allows user to choose confirmation style
//
#define PST_CF_DEFAULT 0x00000000
//
// forces silent item creation
//
#define PST_CF_NONE 0x00000001
/*
dwPromptFlags
*/
//
// app forces confirmation to be shown
//
#define PST_PF_ALWAYS_SHOW 0x00000001
//
// RSABase rqmt: determine if item has ui attached
//
#define PST_PF_NEVER_SHOW 0x00000002
/*
dwFlags values
*/
//
// Allows caller to specify creation not overwrite
// of item during WriteItem call
//
#define PST_NO_OVERWRITE 0x00000002
//
// specifies insecure data stream to be written/read
// there is no protection or guarantees for this data
// flag only valid during item read/write calls
// default: item calls are secure
//
#define PST_UNRESTRICTED_ITEMDATA 0x00000004
//
// on ReadItem call
// return value on success without UI on item is PST_E_OK
// return value on success with UI on item is PST_E_ITEM_EXISTS
// return value on failure is a different error code
//
#define PST_PROMPT_QUERY 0x00000008
//
// on ReadItem, DeleteItem, for data migration purposes:
// Avoid displaying UI on ReadItem unless a custom password is required (highsecurity).
// Avoid displaying UI on DeleteItem, period.
//
#define PST_NO_UI_MIGRATION 0x00000010
/*
Security masks, rule modifiers
*/
//
// models access after NT access mask
//
// read, write
typedef DWORD PST_ACCESSMODE;
#define PST_READ 0x0001
#define PST_WRITE 0x0002
#define PST_CREATE_TYPE 0x0004
#define PST_CREATE_SUBTYPE 0x0008
#define PST_DELETE_TYPE 0x0010
#define PST_DELETE_SUBTYPE 0x0020
#define PST_USE 0x0040
#define PST_GENERIC_READ PST_READ
#define PST_GENERIC_WRITE (PST_WRITE | PST_CREATE_TYPE | PST_CREATE_SUBTYPE)
#define PST_GENERIC_EXECUTE PST_USE
#define PST_ALL_ACCESS 0x01FF
// PST_ACCESSCLAUSETYPE
// memhash, diskhash, authenticode, etc
typedef DWORD PST_ACCESSCLAUSETYPE;
//
// pbClauseData points to PST_AUTHENTICODEDATA structure.
//
#define PST_AUTHENTICODE 1
//
// pbClauseData points to PST_BINARYCHECKDATA structure.
//
#define PST_BINARY_CHECK 2
//
// pbClauseData points to valid Windows NT security descriptor.
// note that performance is improved on Set operations if the security
// descriptor is in self-relative format, with valid owner and group Sids
// (non-NULL).
//
#define PST_SECURITY_DESCRIPTOR 4
//
// pbClauseData is in self-relative format
// (for internal use only)
//
#define PST_SELF_RELATIVE_CLAUSE 0x80000000L
//
// currently access clause modifiers - NOT to be or'd together
//
//
// specified image is the immediate caller, and is an application (.exe)
//
#define PST_AC_SINGLE_CALLER 0
//
// specified image is not necessary the immediate caller, and is an
// application (.exe)
//
#define PST_AC_TOP_LEVEL_CALLER 1
//
// specified image is the immediate caller. May be
// an application (.exe) or a .dll
//
#define PST_AC_IMMEDIATE_CALLER 2
/*
Provider Parameters
*/
//
// flush the internal cache of passwords -- temporary?
//
#define PST_PP_FLUSH_PW_CACHE 0x1
/*
Provider Defns
*/
//
// Microsoft Base Provider (MS_BASE_PSTPROVIDER...)
//
#define MS_BASE_PSTPROVIDER_NAME L"System Protected Storage"
// {8A078C30-3755-11d0-A0BD-00AA0061426A}
#define MS_BASE_PSTPROVIDER_ID { 0x8a078c30, 0x3755, 0x11d0, { 0xa0, 0xbd, 0x0, 0xaa, 0x0, 0x61, 0x42, 0x6a } }
#define MS_BASE_PSTPROVIDER_SZID L"8A078C30-3755-11d0-A0BD-00AA0061426A"
//
// Microsoft PFX Provider (MS_PFX_PSTPROVIDER...)
//
#define MS_PFX_PSTPROVIDER_NAME L"PFX Storage Provider"
// {3ca94f30-7ac1-11d0-8c42-00c04fc299eb}
#define MS_PFX_PSTPROVIDER_ID { 0x3ca94f30, 0x7ac1, 0x11d0, {0x8c, 0x42, 0x00, 0xc0, 0x4f, 0xc2, 0x99, 0xeb} }
#define MS_PFX_PSTPROVIDER_SZID L"3ca94f30-7ac1-11d0-8c42-00c04fc299eb"
/*
Globally registered Type/Subtype guid/name pairs
*/
#define PST_CONFIGDATA_TYPE_STRING L"Configuration Data"
// 8ec99652-8909-11d0-8c4d-00c04fc297eb
#define PST_CONFIGDATA_TYPE_GUID \
{ 0x8ec99652, \
0x8909, \
0x11d0, \
{0x8c, 0x4d, 0x00, 0xc0, 0x4f, 0xc2, 0x97, 0xeb} \
}
#define PST_PROTECTEDSTORAGE_SUBTYPE_STRING L"Protected Storage"
// d3121b8e-8a7d-11d0-8c4f-00c04fc297eb
#define PST_PROTECTEDSTORAGE_SUBTYPE_GUID \
{ 0xd3121b8e, \
0x8a7d, \
0x11d0, \
{0x8c, 0x4f, 0x00, 0xc0, 0x4f, 0xc2, 0x97, 0xeb} \
}
#define PST_PSTORE_PROVIDERS_SUBTYPE_STRING L"Protected Storage Provider List"
// 8ed17a64-91d0-11d0-8c43-00c04fc2c621
#define PST_PSTORE_PROVIDERS_SUBTYPE_GUID \
{ \
0x8ed17a64, \
0x91d0, \
0x11d0, \
{0x8c, 0x43, 0x00, 0xc0, 0x4f, 0xc2, 0xc6, 0x21} \
}
//
// error codes
//
#ifndef PST_E_OK
#define PST_E_OK _HRESULT_TYPEDEF_(0x00000000L)
#define PST_E_FAIL _HRESULT_TYPEDEF_(0x800C0001L)
#define PST_E_PROV_DLL_NOT_FOUND _HRESULT_TYPEDEF_(0x800C0002L)
#define PST_E_INVALID_HANDLE _HRESULT_TYPEDEF_(0x800C0003L)
#define PST_E_TYPE_EXISTS _HRESULT_TYPEDEF_(0x800C0004L)
#define PST_E_TYPE_NO_EXISTS _HRESULT_TYPEDEF_(0x800C0005L)
#define PST_E_INVALID_RULESET _HRESULT_TYPEDEF_(0x800C0006L)
#define PST_E_NO_PERMISSIONS _HRESULT_TYPEDEF_(0x800C0007L)
#define PST_E_STORAGE_ERROR _HRESULT_TYPEDEF_(0x800C0008L)
#define PST_E_CALLER_NOT_VERIFIED _HRESULT_TYPEDEF_(0x800C0009L)
#define PST_E_WRONG_PASSWORD _HRESULT_TYPEDEF_(0x800C000AL)
#define PST_E_DISK_IMAGE_MISMATCH _HRESULT_TYPEDEF_(0x800C000BL)
#define PST_E_MEMORY_IMAGE_MISMATCH _HRESULT_TYPEDEF_(0x800C000CL)
#define PST_E_UNKNOWN_EXCEPTION _HRESULT_TYPEDEF_(0x800C000DL)
#define PST_E_BAD_FLAGS _HRESULT_TYPEDEF_(0x800C000EL)
#define PST_E_ITEM_EXISTS _HRESULT_TYPEDEF_(0x800C000FL)
#define PST_E_ITEM_NO_EXISTS _HRESULT_TYPEDEF_(0x800C0010L)
#define PST_E_SERVICE_UNAVAILABLE _HRESULT_TYPEDEF_(0x800C0011L)
#define PST_E_NOTEMPTY _HRESULT_TYPEDEF_(0x800C0012L)
#define PST_E_INVALID_STRING _HRESULT_TYPEDEF_(0x800C0013L)
#define PST_E_STATE_INVALID _HRESULT_TYPEDEF_(0x800C0014L)
#define PST_E_NOT_OPEN _HRESULT_TYPEDEF_(0x800C0015L)
#define PST_E_ALREADY_OPEN _HRESULT_TYPEDEF_(0x800C0016L)
#define PST_E_NYI _HRESULT_TYPEDEF_(0x800C0F00L)
#define MIN_PST_ERROR 0x800C0001
#define MAX_PST_ERROR 0x800C0F00
#endif // !PST_OK
#endif // _PSTDEF_H_