123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782 |
- //+-------------------------------------------------------------------------
- //
- // Microsoft Windows
- //
- // Copyright (C) Microsoft Corporation, 1996 - 1999
- //
- // File: mscat.h
- //
- // Contents: Microsoft Internet Security Catalog API
- //
- // History: 29-Apr-1997 pberkman created
- // 09-Sep-1997 pberkman add CATAdmin functions
- //
- //--------------------------------------------------------------------------
- #ifndef MSCAT_H
- #define MSCAT_H
- #if _MSC_VER > 1000
- #pragma once
- #endif
- #include "mssip.h"
- #ifdef __cplusplus
- extern "C"
- {
- #endif
- /////////////////////////////////////////////////////////////////////////////
- //
- // defines:
- //
- /////////////////////////////////////////////////////////////////////////////
- #define szOID_CATALOG_LIST "1.3.6.1.4.1.311.12.1.1"
- #define szOID_CATALOG_LIST_MEMBER "1.3.6.1.4.1.311.12.1.2"
- #define CRYPTCAT_FILEEXT L"CAT"
- #define CRYPTCAT_MAX_MEMBERTAG 64
- //
- // fdwOpenFlags
- //
- #define CRYPTCAT_OPEN_CREATENEW 0x00000001 // creates/overwrites
- #define CRYPTCAT_OPEN_ALWAYS 0x00000002 // opens/creates
- #define CRYPTCAT_OPEN_EXISTING 0x00000004 // opens only
- #define CRYPTCAT_OPEN_VERIFYSIGHASH 0x10000000 // verifies the signature (not the certs!)
- //
- // fdwMemberFlags (used internal -- do not fill)
- //
- //
- // dwAttrTypeAndAction
- //
- #define CRYPTCAT_ATTR_AUTHENTICATED 0x10000000
- #define CRYPTCAT_ATTR_UNAUTHENTICATED 0x20000000
- #define CRYPTCAT_ATTR_NAMEASCII 0x00000001 // ascii string
- #define CRYPTCAT_ATTR_NAMEOBJID 0x00000002 // crypt obj id
- #define CRYPTCAT_ATTR_DATAASCII 0x00010000 // do not decode simple ascii chars
- #define CRYPTCAT_ATTR_DATABASE64 0x00020000 // base 64
- #define CRYPTCAT_ATTR_DATAREPLACE 0x00040000 // this data is a replacment for an existing attr
- //
- // dwLocalError - CDF Parse
- //
- #define CRYPTCAT_E_AREA_HEADER 0x00000000
- #define CRYPTCAT_E_AREA_MEMBER 0x00010000
- #define CRYPTCAT_E_AREA_ATTRIBUTE 0x00020000
- #define CRYPTCAT_E_CDF_UNSUPPORTED 0x00000001
- #define CRYPTCAT_E_CDF_DUPLICATE 0x00000002
- #define CRYPTCAT_E_CDF_TAGNOTFOUND 0x00000004
- #define CRYPTCAT_E_CDF_MEMBER_FILE_PATH 0x00010001
- #define CRYPTCAT_E_CDF_MEMBER_INDIRECTDATA 0x00010002
- #define CRYPTCAT_E_CDF_MEMBER_FILENOTFOUND 0x00010004
- #define CRYPTCAT_E_CDF_BAD_GUID_CONV 0x00020001
- #define CRYPTCAT_E_CDF_ATTR_TOOFEWVALUES 0x00020002
- #define CRYPTCAT_E_CDF_ATTR_TYPECOMBO 0x00020004
- /////////////////////////////////////////////////////////////////////////////
- //
- // structures:
- //
- /////////////////////////////////////////////////////////////////////////////
- #include <pshpack8.h>
- typedef struct CRYPTCATSTORE_
- {
- DWORD cbStruct; // = sizeof(CRYPTCATSTORE)
- DWORD dwPublicVersion;
- LPWSTR pwszP7File;
- HCRYPTPROV hProv;
- DWORD dwEncodingType;
- DWORD fdwStoreFlags;
- HANDLE hReserved; // pStack(members) (null if init/pbData) INTERNAL!
- // 18-Sep-1997 pberkman: added
- HANDLE hAttrs; // pStack(Catalog attrs) INTERNAL!
- } CRYPTCATSTORE;
- typedef struct CRYPTCATMEMBER_
- {
- DWORD cbStruct; // = sizeof(CRYPTCATMEMBER)
- LPWSTR pwszReferenceTag;
- LPWSTR pwszFileName; // used only by the CDF APIs
- GUID gSubjectType; // may be zeros -- see sEncodedMemberInfo
- DWORD fdwMemberFlags;
- struct SIP_INDIRECT_DATA_ *pIndirectData; // may be null -- see sEncodedIndirectData
- DWORD dwCertVersion; // may be zero -- see sEncodedMemberInfo
- DWORD dwReserved; // used by enum -- DO NOT USE!
- HANDLE hReserved; // pStack(attrs) (null if init) INTERNAL!
- // 30-Sep-1997 pberkman: added
- CRYPT_ATTR_BLOB sEncodedIndirectData; // lazy decode
- CRYPT_ATTR_BLOB sEncodedMemberInfo; // lazy decode
- } CRYPTCATMEMBER;
- typedef struct CRYPTCATATTRIBUTE_
- {
- DWORD cbStruct; // = sizeof(CRYPTCATATTRIBUTE)
- LPWSTR pwszReferenceTag;
- DWORD dwAttrTypeAndAction;
- DWORD cbValue;
- BYTE *pbValue; // encoded CAT_NAMEVALUE struct
- DWORD dwReserved; // used by enum -- DO NOT USE!
- } CRYPTCATATTRIBUTE;
- typedef struct CRYPTCATCDF_
- {
- DWORD cbStruct; // = sizeof(CRYPTCATCDF)
- HANDLE hFile;
- DWORD dwCurFilePos;
- DWORD dwLastMemberOffset;
- BOOL fEOF;
- LPWSTR pwszResultDir;
- HANDLE hCATStore;
- } CRYPTCATCDF;
- typedef struct CATALOG_INFO_
- {
- DWORD cbStruct; // set to sizeof(CATALOG_INFO)
- WCHAR wszCatalogFile[MAX_PATH];
- } CATALOG_INFO;
- typedef HANDLE HCATADMIN;
- typedef HANDLE HCATINFO;
- #include <poppack.h>
- typedef void (WINAPI *PFN_CDF_PARSE_ERROR_CALLBACK)(IN DWORD dwErrorArea,
- IN DWORD dwLocalError,
- IN WCHAR *pwszLine);
- /////////////////////////////////////////////////////////////////////////////
- //
- // Prototypes:
- //
- /////////////////////////////////////////////////////////////////////////////
- /////////////////////////////////////////////////////////////////////////////
- //
- // Open:
- // --------------------------------------------------------------------------
- // Usage:
- // open the catalog for Get/Put operations.
- //
- // Return:
- // INVALID_HANDLE_VALUE: an error occured while opening Catalog
- //
- // Errors:
- // ERROR_INVALID_PARAMETER: an input parameter is incorrect
- //
- extern HANDLE WINAPI CryptCATOpen(IN LPWSTR pwszFileName,
- IN DWORD fdwOpenFlags,
- IN OPTIONAL HCRYPTPROV hProv,
- IN OPTIONAL DWORD dwPublicVersion,
- IN OPTIONAL DWORD dwEncodingType);
- /////////////////////////////////////////////////////////////////////////////
- //
- // Close:
- // --------------------------------------------------------------------------
- // Usage:
- // close the catalog handle.
- //
- // Errors:
- // ERROR_INVALID_PARAMETER: an input parameter is incorrect
- //
- extern BOOL WINAPI CryptCATClose(IN HANDLE hCatalog);
- /////////////////////////////////////////////////////////////////////////////
- //
- // StoreFromHandle:
- // --------------------------------------------------------------------------
- // Usage:
- // retrieve the CRYPTCATSTORE from the store handle.
- //
- // *** DO NOT FREE THE POINTER OR ANY OF ITS MEMBERS! ***
- //
- // Errors:
- // ERROR_INVALID_PARAMETER: an input parameter is incorrect
- //
- extern CRYPTCATSTORE * WINAPI CryptCATStoreFromHandle(IN HANDLE hCatalog);
- /////////////////////////////////////////////////////////////////////////////
- //
- // HandleFromStore:
- // --------------------------------------------------------------------------
- // Usage:
- // retrieve the handle from a CRYPTCATSTORE pointer.
- //
- // Errors:
- // ERROR_INVALID_PARAMETER: an input parameter is incorrect
- //
- extern HANDLE WINAPI CryptCATHandleFromStore(IN CRYPTCATSTORE *pCatStore);
- /////////////////////////////////////////////////////////////////////////////
- //
- // PersistStore
- // --------------------------------------------------------------------------
- // Usage:
- // Persist the information in the current Catalog Store to an unsigned
- // Catalog File. It is REQUIRED to fill in the pwszP7File member
- // of CRYPTCATSTORE prior to this call!
- //
- // Errors:
- // ERROR_INVALID_PARAMETER: an input parameter is incorrect
- //
- extern BOOL WINAPI CryptCATPersistStore(IN HANDLE hCatalog);
- /////////////////////////////////////////////////////////////////////////////
- //
- // CryptCATGetCatAttrInfo
- // --------------------------------------------------------------------------
- // Usage:
- //
- // *** DO NOT FREE THE POINTER OR ANY OF ITS MEMBERS! ***
- //
- // Errors:
- // ERROR_INVALID_PARAMETER: an input parameter is incorrect
- //
- extern CRYPTCATATTRIBUTE * WINAPI CryptCATGetCatAttrInfo(IN HANDLE hCatalog,
- IN LPWSTR pwszReferenceTag);
- /////////////////////////////////////////////////////////////////////////////
- //
- // CryptCATPutCatAttrInfo
- // --------------------------------------------------------------------------
- // Usage:
- // Allocates and adds the attribute to the catalog. Returns a pointer
- // to the allocated attribute.
- //
- // *** DO NOT FREE THE POINTER OR ANY OF ITS MEMBERS! ***
- //
- // Errors:
- // ERROR_INVALID_PARAMETER: an input parameter is incorrect
- //
- extern CRYPTCATATTRIBUTE * WINAPI CryptCATPutCatAttrInfo(IN HANDLE hCatalog,
- IN LPWSTR pwszReferenceTag,
- IN DWORD dwAttrTypeAndAction,
- IN DWORD cbData,
- IN BYTE *pbData);
- /////////////////////////////////////////////////////////////////////////////
- //
- // CryptCATEnumerateCatAttr
- // --------------------------------------------------------------------------
- // Usage:
- // Enumerates through the list of attributes associated with the catalog.
- // Returns a pointer to the attribute. This return should be passed in
- // as the 'PrevAttr' to continue the enumeration. On the first call,
- // the 'PrevAttr' should be set to NULL.
- //
- // *** DO NOT FREE THE POINTER OR ANY OF ITS MEMBERS! ***
- //
- // Errors:
- // ERROR_INVALID_PARAMETER: an input parameter is incorrect
- //
- extern CRYPTCATATTRIBUTE * WINAPI CryptCATEnumerateCatAttr(IN HANDLE hCatalog,
- IN CRYPTCATATTRIBUTE *pPrevAttr);
- /////////////////////////////////////////////////////////////////////////////
- //
- // CryptCATGetMemberInfo
- // --------------------------------------------------------------------------
- // Usage:
- // Retrieve the Tag info (member info) structure from the catalog
- // PKCS#7, fill the CRYPTCATMEMBER structure, and return. -- Opens a
- // member context.
- //
- // *** DO NOT FREE THE POINTER OR ANY OF ITS MEMBERS! ***
- //
- // Errors:
- // ERROR_INVALID_PARAMETER: an input parameter is incorrect
- //
- extern CRYPTCATMEMBER * WINAPI CryptCATGetMemberInfo(IN HANDLE hCatalog,
- IN LPWSTR pwszReferenceTag);
- /////////////////////////////////////////////////////////////////////////////
- //
- // CryptCATGetAttr:
- // --------------------------------------------------------------------------
- // Usage:
- // get pwszReferenceTag attribute information for a member.
- //
- // Errors:
- // ERROR_INVALID_PARAMETER: an input parameter is incorrect
- //
- extern CRYPTCATATTRIBUTE * WINAPI CryptCATGetAttrInfo(IN HANDLE hCatalog,
- IN CRYPTCATMEMBER *pCatMember,
- IN LPWSTR pwszReferenceTag);
- /////////////////////////////////////////////////////////////////////////////
- //
- // CryptCATPutMemberInfo
- // --------------------------------------------------------------------------
- // Usage:
- // Allocates and adds the member to the catalog. Returns a pointer
- // to the allocated member.
- //
- // *** DO NOT FREE THE POINTER OR ANY OF ITS MEMBERS! ***
- //
- // Errors:
- // ERROR_INVALID_PARAMETER: an input parameter is incorrect
- // CRYPT_E_EXISTS: the reference tag already exists
- // CRYPT_E_NOT_FOUND: the attr was not found
- //
- extern CRYPTCATMEMBER * WINAPI CryptCATPutMemberInfo(IN HANDLE hCatalog,
- IN OPTIONAL LPWSTR pwszFileName,
- IN LPWSTR pwszReferenceTag,
- IN GUID *pgSubjectType,
- IN DWORD dwCertVersion,
- IN DWORD cbSIPIndirectData,
- IN BYTE *pbSIPIndirectData);
- /////////////////////////////////////////////////////////////////////////////
- //
- // CryptCATPutAttrInfo
- // --------------------------------------------------------------------------
- // Usage:
- // Allocates and adds the attribute to the member. Returns a pointer
- // to the allocated attribute.
- //
- // *** DO NOT FREE THE POINTER OR ANY OF ITS MEMBERS! ***
- //
- // Errors:
- // ERROR_INVALID_PARAMETER: an input parameter is incorrect
- //
- extern CRYPTCATATTRIBUTE * WINAPI CryptCATPutAttrInfo(IN HANDLE hCatalog,
- IN CRYPTCATMEMBER *pCatMember,
- IN LPWSTR pwszReferenceTag,
- IN DWORD dwAttrTypeAndAction,
- IN DWORD cbData,
- IN BYTE *pbData);
- /////////////////////////////////////////////////////////////////////////////
- //
- // CryptCATEnumerateMember
- // --------------------------------------------------------------------------
- // Usage:
- // Enumerates through the list of members in the store. Returns a pointer
- // to the member. This return should be passed in as the 'PrevMember' to
- // continue the enumeration. On the first call, the 'PrevMember' should
- // be set to NULL.
- //
- // *** DO NOT FREE THE POINTER OR ANY OF ITS MEMBERS! ***
- //
- // Errors:
- // ERROR_INVALID_PARAMETER: an input parameter is incorrect
- //
- extern CRYPTCATMEMBER * WINAPI CryptCATEnumerateMember(IN HANDLE hCatalog,
- IN CRYPTCATMEMBER *pPrevMember);
- /////////////////////////////////////////////////////////////////////////////
- //
- // CryptCATEnumerateAttr
- // --------------------------------------------------------------------------
- // Usage:
- // Enumerates through the list of attributes associated with the member.
- // Returns a pointer to the attribute. This return should be passed in
- // as the 'PrevAttr' to continue the enumeration. On the first call,
- // the 'PrevAttr' should be set to NULL.
- //
- // *** DO NOT FREE THE POINTER OR ANY OF ITS MEMBERS! ***
- //
- // Errors:
- // ERROR_INVALID_PARAMETER: an input parameter is incorrect
- //
- extern CRYPTCATATTRIBUTE * WINAPI CryptCATEnumerateAttr(IN HANDLE hCatalog,
- IN CRYPTCATMEMBER *pCatMember,
- IN CRYPTCATATTRIBUTE *pPrevAttr);
- /////////////////////////////////////////////////////////////////////////////
- //
- // CryptCATCDFOpen
- // --------------------------------------------------------------------------
- // Usage:
- // Opens the specified CDF file and initialized the structure
- //
- // Errors:
- // ERROR_INVALID_PARAMETER: an input parameter is incorrect
- // ERROR_FILE_NOT_FOUND: the CDF file was not found
- //
- extern CRYPTCATCDF * WINAPI CryptCATCDFOpen(IN LPWSTR pwszFilePath,
- IN OPTIONAL PFN_CDF_PARSE_ERROR_CALLBACK pfnParseError);
- /////////////////////////////////////////////////////////////////////////////
- //
- // CryptCATCDFClose
- // --------------------------------------------------------------------------
- // Usage:
- // Closes the CDF file and deallocates the structure
- //
- // Errors:
- // ERROR_INVALID_PARAMETER: an input parameter is incorrect
- //
- extern BOOL WINAPI CryptCATCDFClose(IN CRYPTCATCDF *pCDF);
- /////////////////////////////////////////////////////////////////////////////
- //
- // CryptCATCDFEnumCatAttributes
- // --------------------------------------------------------------------------
- // Usage:
- // Enumerates Catalog level attributes within the "[CatalogFiles]"
- // section of the CDF.
- //
- // Errors:
- // ERROR_INVALID_PARAMETER: an input parameter is incorrect
- //
- extern CRYPTCATATTRIBUTE * WINAPI CryptCATCDFEnumCatAttributes(CRYPTCATCDF *pCDF,
- CRYPTCATATTRIBUTE *pPrevAttr,
- PFN_CDF_PARSE_ERROR_CALLBACK pfnParseError);
- /////////////////////////////////////////////////////////////////////////////
- //
- // CryptCATCDFEnumMembers
- // --------------------------------------------------------------------------
- // Usage:
- // Enumerates files within the "[CatalogFiles]" section of the CDF.
- //
- // Errors:
- // ERROR_INVALID_PARAMETER: an input parameter is incorrect
- //
- extern CRYPTCATMEMBER * WINAPI CryptCATCDFEnumMembers(IN CRYPTCATCDF *pCDF,
- IN CRYPTCATMEMBER *pPrevMember,
- IN OPTIONAL PFN_CDF_PARSE_ERROR_CALLBACK pfnParseError);
- /////////////////////////////////////////////////////////////////////////////
- //
- // CryptCATCDFEnumAttributes
- // --------------------------------------------------------------------------
- // Usage:
- // Enumerates the files attributes within the "[CatalogFiles]" section
- // of the CDF.
- //
- // Errors:
- // ERROR_INVALID_PARAMETER: an input parameter is incorrect
- //
- extern CRYPTCATATTRIBUTE *WINAPI CryptCATCDFEnumAttributes(IN CRYPTCATCDF *pCDF,
- IN CRYPTCATMEMBER *pMember,
- IN CRYPTCATATTRIBUTE *pPrevAttr,
- IN OPTIONAL PFN_CDF_PARSE_ERROR_CALLBACK pfnParseError);
- //////////////////////////////////////////////////////////////////////////
- //
- // IsCatalogFile
- // --------------------------------------------------------------------------
- // Usage:
- // Call this function to determine if the file is a Catalog File. Both
- // parameters are optional. HOWEVER, one of them MUST be passed!
- //
- // Return:
- // TRUE if it is.
- // FALSE if it isn't or an error occured.
- //
- //
- // Errors:
- // ERROR_INVALID_PARAMETER: an input parameter is incorrect
- // ERROR_NOT_ENOUGH_MEMORY: a memory allocation failed
- // {file errors} a file error occured
- //
- extern BOOL WINAPI IsCatalogFile(IN OPTIONAL HANDLE hFile,
- IN OPTIONAL WCHAR *pwszFileName);
- //////////////////////////////////////////////////////////////////////////
- //
- // CryptCATAdminAcquireContext
- // --------------------------------------------------------------------------
- // Usage:
- // Opens a new Admin Context based on the pgSubsystem Id.
- //
- // the Guid passed in will be converted to a string and used as the
- // sub-directory under %SystemRoot%\CatRoot to store all Catalog files
- // for this app/sub-system.
- //
- // if a NULL is passed in to the pgSubsystem parameter, all finds will be
- // "global" and any Adds will be under the "default" Subsystem.
- //
- // Return:
- // TRUE if phCatAdmin points to a valid context.
- // FALSE if an error occurs.
- //
- // Errors:
- // ERROR_INVALID_PARAMETER: an input parameter is incorrect
- // ERROR_NOT_ENOUGH_MEMORY: a memory allocation failed
- // ERROR_DATABASE_FAILURE: an error occured while processing
- // the database.
- //
- // Comments:
- // The dwFlags parameter is reserved for future use. Must
- // be set to NULL.
- //
- //
- extern BOOL WINAPI CryptCATAdminAcquireContext(OUT HCATADMIN *phCatAdmin,
- IN const GUID *pgSubsystem,
- IN DWORD dwFlags);
- //////////////////////////////////////////////////////////////////////////
- //
- // CryptCATAdminReleaseContext
- // --------------------------------------------------------------------------
- // Usage:
- // Releases (frees) all information related to the Admin Context
- //
- // Errors:
- // ERROR_INVALID_PARAMETER: an input parameter is incorrect
- //
- // Comments:
- // The dwFlags parameter is reserved for future use. Must
- // be set to NULL.
- //
- extern BOOL WINAPI CryptCATAdminReleaseContext(IN HCATADMIN hCatAdmin,
- IN DWORD dwFlags);
- //////////////////////////////////////////////////////////////////////////
- //
- // CryptCATAdminReleaseCatalogContext
- // -----------------------------------------------------------------------
- // Usage:
- // Call this function to release memory associated with the Catalog
- // Info Context.
- //
- // Errors:
- // ERROR_INVALID_PARAMETER: an input parameter is incorrect
- //
- // Comments:
- // the dwFlags parameter is reserved for future use and must be assigned
- // to NULL.
- //
- extern BOOL WINAPI CryptCATAdminReleaseCatalogContext(IN HCATADMIN hCatAdmin,
- IN HCATINFO hCatInfo,
- IN DWORD dwFlags);
- //////////////////////////////////////////////////////////////////////////
- //
- // CryptCATAdminEnumCatalogFromHash
- // --------------------------------------------------------------------------
- // Usage:
- // Call this function to retrieve the Catalog Info handle of the Catalog
- // file that currently "points" to the specified Member Hash.
- //
- // if hCatInfo is NULL, the first catalog found that contains the
- // hash will be returned.
- //
- // if hCatInfo is not NULL, the content must be initialized to NULL prior
- // to going into the enum loop -- this starts the first/next search.
- // This function uses this parameter to determine the last catalog returned.
- //
- // if hCatInfo is not NULL, and the loop is terminated prior to this
- // function returning NULL, the application must call
- // CryptCATAdminReleaseCatalogContext to free all memory associated with
- // ppPrevContext.
- //
- // Errors:
- // ERROR_INVALID_PARAMETER: an input parameter is incorrect
- // ERROR_NOT_ENOUGH_MEMORY: a memory allocation failed
- // ERROR_DATABASE_FAILURE: an error occurred while processing
- // the database.
- //
- extern HCATINFO WINAPI CryptCATAdminEnumCatalogFromHash(IN HCATADMIN hCatAdmin,
- IN BYTE *pbHash,
- IN DWORD cbHash,
- IN DWORD dwFlags,
- IN OUT HCATINFO *phPrevCatInfo);
- //////////////////////////////////////////////////////////////////////////
- //
- // CryptCATAdminCalcHashFromFileHandle
- // --------------------------------------------------------------------------
- // Usage:
- // Call this function to calculate the has based on an open file handle.
- //
- // Return:
- // TRUE if the pbHash was filled with the calculated hash.
- // FALSE if an error occured
- //
- // To obtain the size required for pbHash, set pbHash to NULL. The
- // correct size will be returned in pcbHash, the return value will
- // be TRUE and a call to GetLastError() will equal ERROR_INSUFFICIENT_BUFFER.
- //
- // Errors:
- // ERROR_INVALID_PARAMETER: an input parameter is incorrect
- // ERROR_INSUFFICIENT_BUFFER: the *pbHash was not big enough.
- // ERROR_NOT_ENOUGH_MEMORY: a memory allocation failed
- //
- // Comments:
- // the dwFlags parameter is reserved for future use and must be assigned
- // to NULL.
- //
- extern BOOL WINAPI CryptCATAdminCalcHashFromFileHandle(IN HANDLE hFile,
- IN OUT DWORD *pcbHash,
- OUT OPTIONAL BYTE *pbHash,
- IN DWORD dwFlags);
- //////////////////////////////////////////////////////////////////////////
- //
- // CryptCATAdminAddCatalog
- // --------------------------------------------------------------------------
- // Usage:
- // Call this function to add a catalog file to the CAT Maintenance
- // subsystem.
- //
- // if the pwszSelectedBaseName is NULL, the Catalog Admin system will
- // generate a file base name for you. Otherwise, this parameter is
- // used as the file name (base & extension only) of the copied Catalog
- // file.
- //
- // Call CryptCATAdminReleaseCatalogContext to free the memory associated
- // with the Catalog Context returned if not NULL.
- //
- // Return:
- // On success, the HCATINFO of the catalog that was successfully added
- // is returned. On failure, NULL is returned.
- //
- // Errors:
- // ERROR_INVALID_PARAMETER: an input parameter is incorrect
- // ERROR_NOT_ENOUGH_MEMORY: a memory allocation failed
- // ERROR_BAD_FORMAT: the file is not a catalog file.
- // ERROR_DATABASE_FAILURE: an error occurred while processing
- // the database.
- //
- // Comments:
- // the dwFlags parameter is reserved for future use and must be assigned
- // to NULL.
- //
- extern HCATINFO WINAPI CryptCATAdminAddCatalog(IN HCATADMIN hCatAdmin,
- IN WCHAR *pwszCatalogFile,
- IN OPTIONAL WCHAR *pwszSelectBaseName,
- IN DWORD dwFlags);
- //////////////////////////////////////////////////////////////////////////
- //
- // CryptCATAdminRemoveCatalog
- // --------------------------------------------------------------------------
- // Usage:
- // Call this function to remove a catalog file from the CAT Maintenance
- // subsystem.
- //
- // Return:
- // On success, TRUE is returned. FALSE if an error occurs.
- //
- // Errors:
- // ERROR_INVALID_PARAMETER: an input parameter is incorrect
- //
- // Comments:
- // pwszCatalogFile must point to a string that contains only the name
- // of the catalog file, ex. "foo.cat", and not a fully qualified path
- // name
- //
- extern BOOL WINAPI CryptCATAdminRemoveCatalog(IN HCATADMIN hCatAdmin,
- IN LPCWSTR pwszCatalogFile,
- IN DWORD dwFlags);
- //////////////////////////////////////////////////////////////////////////
- //
- // CryptCATCatalogInfoFromContext
- // --------------------------------------------------------------------------
- // Usage:
- // call this function to retrieve information relating to the
- // Catalog info handle passed from the Add Catalog function.
- //
- // Return:
- // On success, TRUE is returned and the CATALOG_INFO structure
- // is filled in.
- // FALSE if an error occurs.
- //
- // Errors:
- // ERROR_INVALID_PARAMETER: an input parameter is incorrect
- //
- // Comments:
- // the dwFlags parameter is reserved for future use and must be assigned
- // to NULL.
- //
- extern BOOL WINAPI CryptCATCatalogInfoFromContext(IN HCATINFO hCatInfo,
- IN OUT CATALOG_INFO *psCatInfo,
- IN DWORD dwFlags);
- //////////////////////////////////////////////////////////////////////////
- //
- // CryptCATAdminResolveCatalogPath
- // --------------------------------------------------------------------------
- // Usage:
- // call this function to retrieve the fully qualified path to the
- // catalog specified by pwszCatalogFile
- //
- // Return:
- // On success, TRUE is returned and the CATALOG_INFO structure
- // is filled in.
- // FALSE if an error occurs.
- //
- // Errors:
- // ERROR_INVALID_PARAMETER: an input parameter is incorrect
- // ERROR_NOT_ENOUGH_MEMORY: if the fully qualified path is longer
- // than MAX_PATH
- //
- // Comments:
- // the dwFlags parameter is reserved for future use and must be assigned
- // to NULL.
- //
- extern BOOL WINAPI CryptCATAdminResolveCatalogPath(IN HCATADMIN hCatAdmin,
- IN WCHAR *pwszCatalogFile,
- IN OUT CATALOG_INFO *psCatInfo,
- IN DWORD dwFlags);
- //////////////////////////////////////////////////////////////////////////
- //
- // CryptCATAdminPauseServiceForBackup
- // --------------------------------------------------------------------------
- // Usage:
- // call this function to pause the catalog sub-system in preparation
- // for backing up the catalog sub-systems files.
- //
- // Return:
- // On success, TRUE is returned. FALSE if an error occurs.
- //
- // Errors:
- // ERROR_INVALID_PARAMETER: an input parameter is incorrect
- // ERROR_TIMEOUT: if clients are accessing database files
- // and fail to relinquish them in a timely
- // manner.
- //
- // Comments:
- // the dwFlags parameter is reserved for future use and must be assigned
- // to NULL. Set fResume to FALSE when pausing the catalog service, and
- // set it to TRUE to resume service.
- //
- extern BOOL WINAPI CryptCATAdminPauseServiceForBackup(IN DWORD dwFlags,
- IN BOOL fResume);
- #ifdef __cplusplus
- }
- #endif
- #endif // MSCAT_H
|