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__
|