1/** 2 * This file has no copyright assigned and is placed in the Public Domain. 3 * This file is part of the mingw-w64 runtime package. 4 * No warranty is given; refer to the file DISCLAIMER.PD within this package. 5 */ 6#ifndef __WINEFS_H__ 7#define __WINEFS_H__ 8 9#ifdef __cplusplus 10extern "C" { 11#endif 12 13#ifndef ALGIDDEF 14#define ALGIDDEF 15 typedef unsigned int ALG_ID; 16#endif 17 18 typedef struct _CERTIFICATE_BLOB { 19 DWORD dwCertEncodingType; 20 DWORD cbData; 21 PBYTE pbData; 22 } EFS_CERTIFICATE_BLOB,*PEFS_CERTIFICATE_BLOB; 23 24 typedef struct _EFS_HASH_BLOB { 25 DWORD cbData; 26 PBYTE pbData; 27 } EFS_HASH_BLOB,*PEFS_HASH_BLOB; 28 29 typedef struct _EFS_RPC_BLOB { 30 DWORD cbData; 31 PBYTE pbData; 32 } EFS_RPC_BLOB,*PEFS_RPC_BLOB; 33 34 typedef struct _EFS_KEY_INFO { 35 DWORD dwVersion; 36 ULONG Entropy; 37 ALG_ID Algorithm; 38 ULONG KeyLength; 39 } EFS_KEY_INFO,*PEFS_KEY_INFO; 40 41 typedef struct _ENCRYPTION_CERTIFICATE { 42 DWORD cbTotalLength; 43 SID *pUserSid; 44 PEFS_CERTIFICATE_BLOB pCertBlob; 45 } ENCRYPTION_CERTIFICATE,*PENCRYPTION_CERTIFICATE; 46 47#define MAX_SID_SIZE 256 48 49 typedef struct _ENCRYPTION_CERTIFICATE_HASH { 50 DWORD cbTotalLength; 51 SID *pUserSid; 52 PEFS_HASH_BLOB pHash; 53 LPWSTR lpDisplayInformation; 54 } ENCRYPTION_CERTIFICATE_HASH,*PENCRYPTION_CERTIFICATE_HASH; 55 56 typedef struct _ENCRYPTION_CERTIFICATE_HASH_LIST { 57 DWORD nCert_Hash; 58 PENCRYPTION_CERTIFICATE_HASH *pUsers; 59 } ENCRYPTION_CERTIFICATE_HASH_LIST,*PENCRYPTION_CERTIFICATE_HASH_LIST; 60 61 typedef struct _ENCRYPTION_CERTIFICATE_LIST { 62 DWORD nUsers; 63 PENCRYPTION_CERTIFICATE *pUsers; 64 } ENCRYPTION_CERTIFICATE_LIST,*PENCRYPTION_CERTIFICATE_LIST; 65 66 WINADVAPI DWORD WINAPI QueryUsersOnEncryptedFile(LPCWSTR lpFileName,PENCRYPTION_CERTIFICATE_HASH_LIST *pUsers); 67 WINADVAPI DWORD WINAPI QueryRecoveryAgentsOnEncryptedFile(LPCWSTR lpFileName,PENCRYPTION_CERTIFICATE_HASH_LIST *pRecoveryAgents); 68 WINADVAPI DWORD WINAPI RemoveUsersFromEncryptedFile(LPCWSTR lpFileName,PENCRYPTION_CERTIFICATE_HASH_LIST pHashes); 69 WINADVAPI DWORD WINAPI AddUsersToEncryptedFile(LPCWSTR lpFileName,PENCRYPTION_CERTIFICATE_LIST pUsers); 70 WINADVAPI DWORD WINAPI SetUserFileEncryptionKey(PENCRYPTION_CERTIFICATE pEncryptionCertificate); 71 WINADVAPI VOID WINAPI FreeEncryptionCertificateHashList(PENCRYPTION_CERTIFICATE_HASH_LIST pHashes); 72 WINADVAPI WINBOOL WINAPI EncryptionDisable(LPCWSTR DirPath,WINBOOL Disable); 73 WINADVAPI DWORD WINAPI DuplicateEncryptionInfoFile(LPCWSTR SrcFileName,LPCWSTR DstFileName,DWORD dwCreationDistribution,DWORD dwAttributes,CONST LPSECURITY_ATTRIBUTES lpSecurityAttributes); 74 75#ifdef __cplusplus 76} 77#endif 78#endif 79