You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
249 lines
5.2 KiB
249 lines
5.2 KiB
//+---------------------------------------------------------------------------
|
|
//
|
|
// 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__
|