2005-08-06 05:54:55 +04:00
/*
IDL definitions from original packet-dcerpc-efs.c
by Jean-Baptiste Marchand
*/
2006-11-07 01:54:49 +03:00
import "security.idl";
2005-08-06 05:54:55 +04:00
[
uuid("c681d488-d850-11d0-8c52-00c04fd90f7e"),
version(1.0),
2006-05-21 19:02:01 +04:00
pointer_default(unique)
2005-08-06 05:54:55 +04:00
] interface efs
2004-08-13 05:31:11 +04:00
{
2005-08-06 05:54:55 +04:00
WERROR EfsRpcOpenFileRaw(
[out,ref] policy_handle *pvContext,
2005-10-16 22:33:56 +04:00
[in] [charset(UTF16),string] uint16 FileName[],
2005-08-06 08:01:00 +04:00
[in] uint32 Flags
2005-08-06 05:54:55 +04:00
);
2008-04-08 05:15:55 +04:00
[todo] WERROR EfsRpcReadFileRaw(
2005-08-06 05:54:55 +04:00
[in,ref] policy_handle *pvContext
/* incomplete */
);
2008-04-08 05:15:55 +04:00
[todo] WERROR EfsRpcWriteFileRaw(
2005-08-06 05:54:55 +04:00
[in,ref] policy_handle *pvContext
/* incomplete */
);
void EfsRpcCloseRaw(
[in,out,ref] policy_handle *pvContext
);
WERROR EfsRpcEncryptFileSrv(
2005-10-16 22:33:56 +04:00
[in] [charset(UTF16),string] uint16 Filename[]
2005-08-06 05:54:55 +04:00
);
WERROR EfsRpcDecryptFileSrv(
2005-10-16 22:33:56 +04:00
[in] [charset(UTF16),string] uint16 FileName[],
2005-08-06 08:01:00 +04:00
[in] uint32 Reserved
2005-08-06 05:54:55 +04:00
);
typedef struct {
2005-08-06 08:01:00 +04:00
uint32 cbData;
2005-08-06 05:54:55 +04:00
[size_is(cbData), unique] uint8 *pbData;
} EFS_HASH_BLOB;
typedef struct {
2005-08-06 08:01:00 +04:00
uint32 cbTotalLength;
[unique] dom_sid *pUserSid;
2005-08-06 05:54:55 +04:00
[unique] EFS_HASH_BLOB *pHash;
2005-10-16 22:33:56 +04:00
[unique] [charset(UTF16),string] uint16 *lpDisplayInformation;
2005-08-06 05:54:55 +04:00
} ENCRYPTION_CERTIFICATE_HASH;
typedef struct {
2005-08-06 08:01:00 +04:00
uint32 nCert_Hash;
2005-08-06 05:54:55 +04:00
/* this is a pointer to an array of pointers */
[size_is(nCert_Hash)] ENCRYPTION_CERTIFICATE_HASH *pUsers[*];
} ENCRYPTION_CERTIFICATE_HASH_LIST;
WERROR EfsRpcQueryUsersOnFile(
2005-10-16 22:33:56 +04:00
[in] [charset(UTF16),string] uint16 FileName[],
2005-08-06 05:54:55 +04:00
[out,ref,unique] ENCRYPTION_CERTIFICATE_HASH_LIST **pUsers
);
WERROR EfsRpcQueryRecoveryAgents(
2005-10-16 22:33:56 +04:00
[in] [charset(UTF16),string] uint16 FileName[],
2005-08-06 05:54:55 +04:00
[out,ref,unique] ENCRYPTION_CERTIFICATE_HASH_LIST **pRecoveryAgents
);
2008-04-08 05:15:55 +04:00
[todo] WERROR EfsRpcRemoveUsersFromFile(
2005-10-16 22:33:56 +04:00
[in] [charset(UTF16),string] uint16 FileName[]
2005-08-06 05:54:55 +04:00
/* [in] ENCRYPTION_CERTIFICATE_LIST Hashes*/
);
2008-04-08 05:15:55 +04:00
[todo] WERROR EfsRpcAddUsersToFile(
2005-10-16 22:33:56 +04:00
[in] [charset(UTF16),string] uint16 FileName[]
2005-08-06 05:54:55 +04:00
/* [in] ENCRYPTION_CERTIFICATE_LIST Hashes*/
);
typedef struct {
2005-08-06 08:01:00 +04:00
uint32 dwCertEncodingType;
uint32 cbData;
2005-08-06 05:54:55 +04:00
[size_is(cbData)] [unique] uint8 *pbData;
} EFS_CERTIFICATE_BLOB;
typedef struct {
2005-08-06 08:01:00 +04:00
uint32 TotalLength;
[unique] dom_sid *pUserSid;
2005-08-06 05:54:55 +04:00
[unique] EFS_CERTIFICATE_BLOB *pCertBlob;
} ENCRYPTION_CERTIFICATE;
WERROR EfsRpcSetFileEncryptionKey(
[in] [unique] ENCRYPTION_CERTIFICATE *pEncryptionCertificate
);
2008-04-08 05:15:55 +04:00
[todo] WERROR EfsRpcNotSupported(
2005-08-06 05:54:55 +04:00
);
2008-04-08 05:15:55 +04:00
[todo] WERROR EfsRpcFileKeyInfo(
2005-08-06 05:54:55 +04:00
);
2008-04-08 05:15:55 +04:00
[todo] WERROR EfsRpcDuplicateEncryptionInfoFile(
2005-08-06 05:54:55 +04:00
);
2004-08-13 05:31:11 +04:00
}