Home | History | Annotate | Download | only in include
      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
     10 extern "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