200 lines
6.2 KiB
C
200 lines
6.2 KiB
C
/*
|
|
* winefs.h Win32 Encryption File System (EFS) functions
|
|
*
|
|
* =========================================================================
|
|
*
|
|
* Open Watcom Project
|
|
*
|
|
* Copyright (c) 2004-2010 The Open Watcom Contributors. All Rights Reserved.
|
|
*
|
|
* This file is automatically generated. Do not edit directly.
|
|
*
|
|
* =========================================================================
|
|
*/
|
|
|
|
#ifndef __WINEFS_H__
|
|
#define __WINEFS_H__
|
|
|
|
#ifndef _ENABLE_AUTODEPEND
|
|
#pragma read_only_file;
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/* Algorithm identifier data type */
|
|
#if (NTDDI_VERSION >= 0x05010000)
|
|
#ifndef ALGIDDEF
|
|
#define ALGIDDEF
|
|
typedef unsigned int ALG_ID;
|
|
#endif
|
|
#endif
|
|
|
|
/* Maximum SID size */
|
|
#if (NTDDI_VERSION >= 0x05000000)
|
|
#define MAX_SID_SIZE 256
|
|
#endif
|
|
|
|
/* EFS access types */
|
|
#if (NTDDI_VERSION >= 0x06000000)
|
|
#define EFS_METADATA_ADD_USER 0x00000001L
|
|
#define EFS_METADATA_REMOVE_USER 0x00000002L
|
|
#define EFS_METADATA_REPLACE_USER 0x00000004L
|
|
#define EFS_METADATA_GENERAL_OP 0x00000008L
|
|
#endif
|
|
|
|
/* Certificate blob */
|
|
#if (NTDDI_VERSION >= 0x05000000)
|
|
typedef struct _CERTIFICATE_BLOB {
|
|
DWORD dwCertEncodingType;
|
|
DWORD cbData;
|
|
PBYTE pbData;
|
|
} EFS_CERTIFICATE_BLOB;
|
|
typedef EFS_CERTIFICATE_BLOB *PEFS_CERTIFICATE_BLOB;
|
|
#endif
|
|
|
|
/* EFS hash blob */
|
|
#if (NTDDI_VERSION >= 0x05000000)
|
|
typedef struct _EFS_HASH_BLOB {
|
|
DWORD cbData;
|
|
PBYTE pbData;
|
|
} EFS_HASH_BLOB;
|
|
typedef EFS_HASH_BLOB *PEFS_HASH_BLOB;
|
|
#endif
|
|
|
|
/* EFS RPC blob */
|
|
#if (NTDDI_VERSION >= 0x05010000)
|
|
typedef struct _EFS_RPC_BLOB {
|
|
DWORD cbData;
|
|
PBYTE pbData;
|
|
} EFS_RPC_BLOB;
|
|
typedef EFS_RPC_BLOB *PEFS_RPC_BLOB;
|
|
#endif
|
|
|
|
/* EFS pin blob */
|
|
#if (NTDDI_VERSION >= 0x06000000)
|
|
typedef struct _EFS_PIN_BLOB {
|
|
DWORD cbPadding;
|
|
DWORD cbData;
|
|
PBYTE pbData;
|
|
} EFS_PIN_BLOB;
|
|
typedef EFS_PIN_BLOB *PEFS_PIN_BLOB;
|
|
#endif
|
|
|
|
/* EFS key information */
|
|
#if (NTDDI_VERSION >= 0x05010000)
|
|
typedef struct _EFS_KEY_INFO {
|
|
DWORD dwVersion;
|
|
ULONG Entropy;
|
|
ALG_ID Algorithm;
|
|
ULONG KeyLength;
|
|
} EFS_KEY_INFO;
|
|
typedef EFS_KEY_INFO *PEFS_KEY_INFO;
|
|
#endif
|
|
|
|
/* EFS compatibility information */
|
|
#if (NTDDI_VERSION >= 0x06010000)
|
|
typedef struct _EFS_COMPATIBILITY_INFO {
|
|
DWORD EfsVersion;
|
|
} EFS_COMPATIBILITY_INFO;
|
|
typedef EFS_COMPATIBILITY_INFO *PEFS_COMPATIBILITY_INFO;
|
|
#endif
|
|
|
|
/* EFS decryption status information */
|
|
#if (NTDDI_VERSION >= 0x06000000)
|
|
typedef struct _EFS_DECRYPTION_STATUS_INFO {
|
|
DWORD dwDecryptionError;
|
|
DWORD dwHashOffset;
|
|
DWORD cbHash;
|
|
} EFS_DECRYPTION_STATUS_INFO;
|
|
typedef EFS_DECRYPTION_STATUS_INFO *PEFS_DECRYPTION_STATUS_INFO;
|
|
#endif
|
|
|
|
/* EFS encryption status information */
|
|
#if (NTDDI_VERSION >= 0x06000000)
|
|
typedef struct _EFS_ENCRYPTION_STATUS_INFO {
|
|
BOOL fHasCurrentKey;
|
|
DWORD dwEncryptionError;
|
|
} EFS_ENCRYPTION_STATUS_INFO;
|
|
typedef EFS_ENCRYPTION_STATUS_INFO *PEFS_ENCRYPTION_STATUS_INFO;
|
|
#endif
|
|
|
|
/* Encryption certificate */
|
|
#if (NTDDI_VERSION >= 0x05000000)
|
|
typedef struct _ENCRYPTION_CERTIFICATE {
|
|
DWORD cbTotalLength;
|
|
SID *pUserSid;
|
|
PEFS_CERTIFICATE_BLOB pCertBlob;
|
|
} ENCRYPTION_CERTIFICATE;
|
|
typedef ENCRYPTION_CERTIFICATE *PENCRYPTION_CERTIFICATE;
|
|
#endif
|
|
|
|
/* Encryption certificate hash */
|
|
#if (NTDDI_VERSION >= 0x05000000)
|
|
typedef struct _ENCRYPTION_CERTIFICATE_HASH {
|
|
DWORD cbTotalLength;
|
|
SID *pUserSid;
|
|
PEFS_HASH_BLOB pHash;
|
|
LPWSTR lpDisplayInformation;
|
|
} ENCRYPTION_CERTIFICATE_HASH;
|
|
typedef ENCRYPTION_CERTIFICATE_HASH *PENCRYPTION_CERTIFICATE_HASH;
|
|
#endif
|
|
|
|
/* Encryption certificate hash list */
|
|
#if (NTDDI_VERSION >= 0x05000000)
|
|
typedef struct _ENCRYPTION_CERTIFICATE_HASH_LIST {
|
|
DWORD nCert_Hash;
|
|
PENCRYPTION_CERTIFICATE_HASH *pUsers;
|
|
} ENCRYPTION_CERTIFICATE_HASH_LIST;
|
|
typedef ENCRYPTION_CERTIFICATE_HASH_LIST *PENCRYPTION_CERTIFICATE_HASH_LIST;
|
|
#endif
|
|
|
|
/* Encryption certificate list */
|
|
#if (NTDDI_VERSION >= 0x05000000)
|
|
typedef struct _ENCRYPTION_CERTIFICATE_LIST {
|
|
DWORD nUsers;
|
|
PENCRYPTION_CERTIFICATE *pUsers;
|
|
} ENCRYPTION_CERTIFICATE_LIST;
|
|
typedef ENCRYPTION_CERTIFICATE_LIST *PENCRYPTION_CERTIFICATE_LIST;
|
|
#endif
|
|
|
|
/* Encrypted file metadata signature */
|
|
#if (NTDDI_VERSION >= 0x06000000)
|
|
typedef struct _ENCRYPTED_FILE_METADATA_SIGNATURE {
|
|
DWORD dwEfsAccessType;
|
|
PENCRYPTION_CERTIFICATE_HASH_LIST pCertificatesAdded;
|
|
PENCRYPTION_CERTIFICATE pEncryptionCertificate;
|
|
PEFS_RPC_BLOB pEfsStreamSignature;
|
|
} ENCRYPTED_FILE_METADATA_SIGNATURE;
|
|
typedef ENCRYPTED_FILE_METADATA_SIGNATURE *PENCRYPTED_FILE_METADATA_SIGNATURE;
|
|
#endif
|
|
|
|
/* Functions in ADVAPI32.DLL */
|
|
#if (NTDDI_VERSION >= 0x05000000)
|
|
WINADVAPI DWORD WINAPI AddUsersToEncryptedFile( LPCWSTR, PENCRYPTION_CERTIFICATE_LIST );
|
|
WINADVAPI BOOL WINAPI EncryptionDisable( LPCWSTR, BOOL );
|
|
WINADVAPI VOID WINAPI FreeEncryptionCertificateHashList( PENCRYPTION_CERTIFICATE_HASH_LIST );
|
|
WINADVAPI DWORD WINAPI QueryRecoveryAgentsOnEncryptedFile( LPCWSTR, PENCRYPTION_CERTIFICATE_HASH_LIST * );
|
|
WINADVAPI DWORD WINAPI QueryUsersOnEncryptedFile( LPCWSTR, PENCRYPTION_CERTIFICATE_HASH_LIST * );
|
|
WINADVAPI DWORD WINAPI RemoveUsersFromEncryptedFile( LPCWSTR, PENCRYPTION_CERTIFICATE_HASH_LIST );
|
|
WINADVAPI DWORD WINAPI SetUserFileEncryptionKey( PENCRYPTION_CERTIFICATE );
|
|
#endif
|
|
#if (NTDDI_VERSION >= 0x50200000)
|
|
WINADVAPI DWORD WINAPI DuplicateEncryptionInfoFile( LPCWSTR, LPCWSTR, DWORD, DWORD, CONST LPSECURITY_ATTRIBUTES );
|
|
#elif (NTDDI_VERSION >= 0x05010000)
|
|
WINADVAPI DWORD WINAPI DuplicateEncryptionInfoFile( LPCWSTR, LPCWSTR, DWORD, DWORD, LPSECURITY_ATTRIBUTES );
|
|
#endif
|
|
#if (NTDDI_VERSION >= 0x06000000)
|
|
WINADVAPI VOID WINAPI FreeEncryptedFileMetadata( PBYTE );
|
|
WINADVAPI DWORD WINAPI GetEncryptedFileMetadata( LPCWSTR, PDWORD, PBYTE * );
|
|
WINADVAPI DWORD WINAPI SetEncryptedFileMetadata( LPCWSTR, PBYTE, PBYTE, PENCRYPTION_CERTIFICATE_HASH, DWORD, PENCRYPTION_CERTIFICATE_HASH_LIST );
|
|
WINADVAPI DWORD WINAPI SetUserFileEncryptionKeyEx( PENCRYPTION_CERTIFICATE, DWORD, DWORD, LPVOID );
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
} /* extern "C" */
|
|
#endif
|
|
|
|
#endif /* __WINEFS_H__ */
|