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