250 lines
5.2 KiB
C
250 lines
5.2 KiB
C
//+---------------------------------------------------------------------------
|
||
//
|
||
// Microsoft Windows
|
||
// Copyright (C) Microsoft Corporation, 1992-1999.
|
||
//
|
||
// File: winefs.h
|
||
//
|
||
// Contents: EFS Data and prototypes.
|
||
//
|
||
//----------------------------------------------------------------------------
|
||
|
||
#ifndef __WINEFS_H__
|
||
#define __WINEFS_H__
|
||
|
||
#if _MSC_VER > 1000
|
||
#pragma once
|
||
#endif
|
||
|
||
|
||
#ifdef __cplusplus
|
||
extern "C" {
|
||
#endif
|
||
|
||
//+---------------------------------------------------------------------------------/
|
||
// /
|
||
// /
|
||
// Data Structures /
|
||
// /
|
||
// /
|
||
//----------------------------------------------------------------------------------/
|
||
|
||
|
||
#ifndef ALGIDDEF
|
||
#define ALGIDDEF
|
||
typedef unsigned int ALG_ID;
|
||
#endif
|
||
|
||
//
|
||
// Encoded Certificate
|
||
//
|
||
|
||
|
||
typedef struct _CERTIFICATE_BLOB {
|
||
|
||
DWORD dwCertEncodingType;
|
||
|
||
#ifdef MIDL_PASS
|
||
[range(0,32768)]
|
||
#endif // MIDL_PASS
|
||
|
||
DWORD cbData;
|
||
|
||
#ifdef MIDL_PASS
|
||
[size_is(cbData)]
|
||
#endif // MIDL_PASS
|
||
PBYTE pbData;
|
||
|
||
} EFS_CERTIFICATE_BLOB, *PEFS_CERTIFICATE_BLOB;
|
||
|
||
|
||
//
|
||
// Certificate Hash
|
||
//
|
||
|
||
typedef struct _EFS_HASH_BLOB {
|
||
|
||
#ifdef MIDL_PASS
|
||
[range(0,100)]
|
||
#endif // MIDL_PASS
|
||
DWORD cbData;
|
||
|
||
#ifdef MIDL_PASS
|
||
[size_is(cbData)]
|
||
#endif // MIDL_PASS
|
||
PBYTE pbData;
|
||
|
||
} EFS_HASH_BLOB, *PEFS_HASH_BLOB;
|
||
|
||
|
||
//
|
||
// RPC blob
|
||
//
|
||
|
||
typedef struct _EFS_RPC_BLOB {
|
||
|
||
#ifdef MIDL_PASS
|
||
[range(0,266240)]
|
||
#endif // MIDL_PASS
|
||
DWORD cbData;
|
||
|
||
#ifdef MIDL_PASS
|
||
[size_is(cbData)]
|
||
#endif // MIDL_PASS
|
||
PBYTE pbData;
|
||
|
||
} EFS_RPC_BLOB, *PEFS_RPC_BLOB;
|
||
|
||
typedef struct _EFS_KEY_INFO {
|
||
|
||
DWORD dwVersion;
|
||
ULONG Entropy;
|
||
ALG_ID Algorithm;
|
||
ULONG KeyLength;
|
||
|
||
} EFS_KEY_INFO, *PEFS_KEY_INFO;
|
||
|
||
|
||
//
|
||
// Input to add a user to an encrypted file
|
||
//
|
||
|
||
|
||
typedef struct _ENCRYPTION_CERTIFICATE {
|
||
DWORD cbTotalLength;
|
||
SID * pUserSid;
|
||
PEFS_CERTIFICATE_BLOB pCertBlob;
|
||
} ENCRYPTION_CERTIFICATE, *PENCRYPTION_CERTIFICATE;
|
||
|
||
#define MAX_SID_SIZE 256
|
||
|
||
|
||
typedef struct _ENCRYPTION_CERTIFICATE_HASH {
|
||
DWORD cbTotalLength;
|
||
SID * pUserSid;
|
||
PEFS_HASH_BLOB pHash;
|
||
|
||
#ifdef MIDL_PASS
|
||
[string]
|
||
#endif // MIDL_PASS
|
||
LPWSTR lpDisplayInformation;
|
||
|
||
} ENCRYPTION_CERTIFICATE_HASH, *PENCRYPTION_CERTIFICATE_HASH;
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
typedef struct _ENCRYPTION_CERTIFICATE_HASH_LIST {
|
||
#ifdef MIDL_PASS
|
||
[range(0,500)]
|
||
#endif // MIDL_PASS
|
||
DWORD nCert_Hash;
|
||
#ifdef MIDL_PASS
|
||
[size_is(nCert_Hash)]
|
||
#endif // MIDL_PASS
|
||
PENCRYPTION_CERTIFICATE_HASH * pUsers;
|
||
} ENCRYPTION_CERTIFICATE_HASH_LIST, *PENCRYPTION_CERTIFICATE_HASH_LIST;
|
||
|
||
|
||
|
||
typedef struct _ENCRYPTION_CERTIFICATE_LIST {
|
||
#ifdef MIDL_PASS
|
||
[range(0,500)]
|
||
#endif // MIDL_PASS
|
||
DWORD nUsers;
|
||
#ifdef MIDL_PASS
|
||
[size_is(nUsers)]
|
||
#endif // MIDL_PASS
|
||
PENCRYPTION_CERTIFICATE * pUsers;
|
||
} ENCRYPTION_CERTIFICATE_LIST, *PENCRYPTION_CERTIFICATE_LIST;
|
||
|
||
|
||
|
||
|
||
//+---------------------------------------------------------------------------------/
|
||
// /
|
||
// /
|
||
// Prototypes /
|
||
// /
|
||
// /
|
||
//----------------------------------------------------------------------------------/
|
||
|
||
|
||
WINADVAPI
|
||
DWORD
|
||
WINAPI
|
||
QueryUsersOnEncryptedFile(
|
||
IN LPCWSTR lpFileName,
|
||
OUT PENCRYPTION_CERTIFICATE_HASH_LIST * pUsers
|
||
);
|
||
|
||
|
||
WINADVAPI
|
||
DWORD
|
||
WINAPI
|
||
QueryRecoveryAgentsOnEncryptedFile(
|
||
IN LPCWSTR lpFileName,
|
||
OUT PENCRYPTION_CERTIFICATE_HASH_LIST * pRecoveryAgents
|
||
);
|
||
|
||
|
||
WINADVAPI
|
||
DWORD
|
||
WINAPI
|
||
RemoveUsersFromEncryptedFile(
|
||
IN LPCWSTR lpFileName,
|
||
IN PENCRYPTION_CERTIFICATE_HASH_LIST pHashes
|
||
);
|
||
|
||
WINADVAPI
|
||
DWORD
|
||
WINAPI
|
||
AddUsersToEncryptedFile(
|
||
IN LPCWSTR lpFileName,
|
||
IN PENCRYPTION_CERTIFICATE_LIST pUsers
|
||
);
|
||
|
||
WINADVAPI
|
||
DWORD
|
||
WINAPI
|
||
SetUserFileEncryptionKey(
|
||
IN PENCRYPTION_CERTIFICATE pEncryptionCertificate
|
||
);
|
||
|
||
|
||
WINADVAPI
|
||
VOID
|
||
WINAPI
|
||
FreeEncryptionCertificateHashList(
|
||
IN PENCRYPTION_CERTIFICATE_HASH_LIST pHashes
|
||
);
|
||
|
||
WINADVAPI
|
||
BOOL
|
||
WINAPI
|
||
EncryptionDisable(
|
||
IN LPCWSTR DirPath,
|
||
IN BOOL Disable
|
||
);
|
||
|
||
|
||
WINADVAPI
|
||
DWORD
|
||
WINAPI
|
||
DuplicateEncryptionInfoFile(
|
||
IN LPCWSTR SrcFileName,
|
||
IN LPCWSTR DstFileName,
|
||
IN DWORD dwCreationDistribution,
|
||
IN DWORD dwAttributes,
|
||
IN CONST LPSECURITY_ATTRIBUTES lpSecurityAttributes
|
||
);
|
||
|
||
#ifdef __cplusplus
|
||
} // Balance extern "C" above
|
||
#endif
|
||
|
||
#endif // __WINEFS_H__
|