summaryrefslogtreecommitdiff
path: root/vendor/winapi/src/um/mssip.rs
diff options
context:
space:
mode:
authorValentin Popov <valentin@popov.link>2024-01-08 00:21:28 +0300
committerValentin Popov <valentin@popov.link>2024-01-08 00:21:28 +0300
commit1b6a04ca5504955c571d1c97504fb45ea0befee4 (patch)
tree7579f518b23313e8a9748a88ab6173d5e030b227 /vendor/winapi/src/um/mssip.rs
parent5ecd8cf2cba827454317368b68571df0d13d7842 (diff)
downloadfparkan-1b6a04ca5504955c571d1c97504fb45ea0befee4.tar.xz
fparkan-1b6a04ca5504955c571d1c97504fb45ea0befee4.zip
Initial vendor packages
Signed-off-by: Valentin Popov <valentin@popov.link>
Diffstat (limited to 'vendor/winapi/src/um/mssip.rs')
-rw-r--r--vendor/winapi/src/um/mssip.rs255
1 files changed, 255 insertions, 0 deletions
diff --git a/vendor/winapi/src/um/mssip.rs b/vendor/winapi/src/um/mssip.rs
new file mode 100644
index 0000000..f8cd6e4
--- /dev/null
+++ b/vendor/winapi/src/um/mssip.rs
@@ -0,0 +1,255 @@
+// Licensed under the Apache License, Version 2.0
+// <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
+// All files in the project carrying such notice may not be copied, modified, or distributed
+// except according to those terms.
+//! Microsoft SIP Provider Prototypes and Definitions
+use shared::guiddef::GUID;
+use shared::minwindef::{BOOL, BYTE, DWORD, LPVOID};
+use um::mscat::{CRYPTCATMEMBER, CRYPTCATSTORE};
+use um::wincrypt::{
+ CRYPT_ALGORITHM_IDENTIFIER, CRYPT_ATTRIBUTE_TYPE_VALUE, CRYPT_HASH_BLOB, HCRYPTPROV,
+};
+use um::winnt::{HANDLE, LPCWSTR, PWSTR, WCHAR};
+pub type CRYPT_DIGEST_DATA = CRYPT_HASH_BLOB;
+pub const MSSIP_FLAGS_PROHIBIT_RESIZE_ON_CREATE: DWORD = 0x00010000;
+pub const MSSIP_FLAGS_USE_CATALOG: DWORD = 0x00020000;
+pub const MSSIP_FLAGS_MULTI_HASH: DWORD = 0x00040000;
+pub const SPC_INC_PE_RESOURCES_FLAG: DWORD = 0x80;
+pub const SPC_INC_PE_DEBUG_INFO_FLAG: DWORD = 0x40;
+pub const SPC_INC_PE_IMPORT_ADDR_TABLE_FLAG: DWORD = 0x20;
+pub const SPC_EXC_PE_PAGE_HASHES_FLAG: DWORD = 0x10;
+pub const SPC_INC_PE_PAGE_HASHES_FLAG: DWORD = 0x100;
+pub const SPC_DIGEST_GENERATE_FLAG: DWORD = 0x200;
+pub const SPC_DIGEST_SIGN_FLAG: DWORD = 0x400;
+pub const SPC_RELAXED_PE_MARKER_CHECK: DWORD = 0x800;
+pub const SPC_MARKER_CHECK_SKIP_SIP_INDIRECT_DATA_FLAG: DWORD = 0x00000001;
+pub const SPC_MARKER_CHECK_CURRENTLY_SUPPORTED_FLAGS: DWORD
+ = SPC_MARKER_CHECK_SKIP_SIP_INDIRECT_DATA_FLAG;
+pub const MSSIP_ADDINFO_NONE: DWORD = 0;
+pub const MSSIP_ADDINFO_FLAT: DWORD = 1;
+pub const MSSIP_ADDINFO_CATMEMBER: DWORD = 2;
+pub const MSSIP_ADDINFO_BLOB: DWORD = 3;
+pub const MSSIP_ADDINFO_NONMSSIP: DWORD = 500;
+UNION!{union SIP_SUBJECTINFO_u {
+ [usize; 1],
+ psFlat psFlat_mut: *mut MS_ADDINFO_FLAT,
+ psCatMember psCatMember_mut: *mut MS_ADDINFO_CATALOGMEMBER,
+ psBlob psBlob_mut: *mut MS_ADDINFO_BLOB,
+}}
+STRUCT!{struct SIP_SUBJECTINFO {
+ cbSize: DWORD,
+ pgSubjectType: *mut GUID,
+ hFile: HANDLE,
+ pwsFileName: LPCWSTR,
+ pwsDisplayName: LPCWSTR,
+ dwReserved1: DWORD,
+ dwIntVersion: DWORD,
+ hProv: HCRYPTPROV,
+ DigestAlgorithm: CRYPT_ALGORITHM_IDENTIFIER,
+ dwFlags: DWORD,
+ dwEncodingType: DWORD,
+ dwReserved2: DWORD,
+ fdwCAPISettings: DWORD,
+ fdwSecuritySettings: DWORD,
+ dwIndex: DWORD,
+ dwUnionChoice: DWORD,
+ u: SIP_SUBJECTINFO_u,
+ pClientData: LPVOID,
+}}
+pub type LPSIP_SUBJECTINFO = *mut SIP_SUBJECTINFO;
+STRUCT!{struct MS_ADDINFO_FLAT {
+ cbStruct: DWORD,
+ pIndirectData: *mut SIP_INDIRECT_DATA,
+}}
+pub type PMS_ADDINFO_FLAT = *mut MS_ADDINFO_FLAT;
+STRUCT!{struct MS_ADDINFO_CATALOGMEMBER {
+ cbStruct: DWORD,
+ pStore: *mut CRYPTCATSTORE,
+ pMember: *mut CRYPTCATMEMBER,
+}}
+pub type PMS_ADDINFO_CATALOGMEMBER = *mut MS_ADDINFO_CATALOGMEMBER;
+STRUCT!{struct MS_ADDINFO_BLOB {
+ cbStruct: DWORD,
+ cbMemObject: DWORD,
+ pbMemObject: *mut BYTE,
+ cbMemSignedMsg: DWORD,
+ pbMemSignedMsg: *mut BYTE,
+}}
+pub type PMS_ADDINFO_BLOB = *mut MS_ADDINFO_BLOB;
+STRUCT!{struct SIP_CAP_SET_V2 {
+ cbSize: DWORD,
+ dwVersion: DWORD,
+ isMultiSign: BOOL,
+ dwReserved: DWORD,
+}}
+pub type PSIP_CAP_SET_V2 = *mut SIP_CAP_SET_V2;
+UNION!{union SIP_CAP_SET_V3_u {
+ [u32; 1],
+ dwFlags dwFlags_mut: DWORD,
+ dwReserved dwReserved_mut: DWORD,
+}}
+STRUCT!{struct SIP_CAP_SET_V3 {
+ cbSize: DWORD,
+ dwVersion: DWORD,
+ isMultiSign: BOOL,
+ u: SIP_CAP_SET_V3_u,
+}}
+pub type PSIP_CAP_SET_V3 = *mut SIP_CAP_SET_V3;
+pub type SIP_CAP_SET = SIP_CAP_SET_V3;
+pub type PSIP_CAP_SET = PSIP_CAP_SET_V3;
+pub const SIP_CAP_SET_VERSION_2: DWORD = 2;
+pub const SIP_CAP_SET_VERSION_3: DWORD = 3;
+pub const SIP_CAP_SET_CUR_VER: DWORD = 3;
+pub const SIP_CAP_FLAG_SEALING: DWORD = 0x00000001;
+STRUCT!{struct SIP_INDIRECT_DATA {
+ Data: CRYPT_ATTRIBUTE_TYPE_VALUE,
+ DigestAlgorithm: CRYPT_ALGORITHM_IDENTIFIER,
+ Digest: CRYPT_HASH_BLOB,
+}}
+pub type PSIP_INDIRECT_DATA = *mut SIP_INDIRECT_DATA;
+extern "system" {
+ pub fn CryptSIPGetSignedDataMsg(
+ pSubjectInfo: *mut SIP_SUBJECTINFO,
+ pdwEncodingType: *mut DWORD,
+ dwIndex: DWORD,
+ pcbSignedDataMsg: *mut DWORD,
+ pbSignedDataMsg: *mut BYTE,
+ ) -> BOOL;
+}
+FN!{stdcall pCryptSIPGetSignedDataMsg(
+ pSubjectInfo: *mut SIP_SUBJECTINFO,
+ pdwEncodingType: *mut DWORD,
+ dwIndex: DWORD,
+ pcbSignedDataMsg: *mut DWORD,
+ pbSignedDataMsg: *mut BYTE,
+) -> BOOL}
+extern "system" {
+ pub fn CryptSIPPutSignedDataMsg(
+ pSubjectInfo: *mut SIP_SUBJECTINFO,
+ dwEncodingType: DWORD,
+ pdwIndex: *mut DWORD,
+ cbSignedDataMsg: DWORD,
+ pbSignedDataMsg: *mut BYTE,
+ ) -> BOOL;
+}
+FN!{stdcall pCryptSIPPutSignedDataMsg(
+ pSubjectInfo: *mut SIP_SUBJECTINFO,
+ dwEncodingType: DWORD,
+ pdwIndex: *mut DWORD,
+ cbSignedDataMsg: DWORD,
+ pbSignedDataMsg: *mut BYTE,
+) -> BOOL}
+extern "system" {
+ pub fn CryptSIPCreateIndirectData(
+ pSubjectInfo: *mut SIP_SUBJECTINFO,
+ pcbIndirectData: *mut DWORD,
+ pIndirectData: *mut SIP_INDIRECT_DATA,
+ ) -> BOOL;
+}
+FN!{stdcall pCryptSIPCreateIndirectData(
+ pSubjectInfo: *mut SIP_SUBJECTINFO,
+ pcbIndirectData: *mut DWORD,
+ pIndirectData: *mut SIP_INDIRECT_DATA,
+) -> BOOL}
+extern "system" {
+ pub fn CryptSIPVerifyIndirectData(
+ pSubjectInfo: *mut SIP_SUBJECTINFO,
+ pIndirectData: *mut SIP_INDIRECT_DATA,
+ ) -> BOOL;
+}
+FN!{stdcall pCryptSIPVerifyIndirectData(
+ pSubjectInfo: *mut SIP_SUBJECTINFO,
+ pIndirectData: *mut SIP_INDIRECT_DATA,
+) -> BOOL}
+extern "system" {
+ pub fn CryptSIPRemoveSignedDataMsg(
+ pSubjectInfo: *mut SIP_SUBJECTINFO,
+ dwIndex: DWORD,
+ ) -> BOOL;
+}
+FN!{stdcall pCryptSIPRemoveSignedDataMsg(
+ pSubjectInfo: *mut SIP_SUBJECTINFO,
+ dwIndex: DWORD,
+) -> BOOL}
+STRUCT!{struct SIP_DISPATCH_INFO {
+ cbSize: DWORD,
+ hSIP: HANDLE,
+ pfGet: pCryptSIPGetSignedDataMsg,
+ pfPut: pCryptSIPPutSignedDataMsg,
+ pfCreate: pCryptSIPCreateIndirectData,
+ pfVerify: pCryptSIPVerifyIndirectData,
+ pfRemove: pCryptSIPRemoveSignedDataMsg,
+}}
+pub type LPSIP_DISPATCH_INFO = *mut SIP_DISPATCH_INFO;
+FN!{stdcall pfnIsFileSupported(
+ hFile: HANDLE,
+ pgSubject: *mut GUID,
+) -> BOOL}
+FN!{stdcall pfnIsFileSupportedName(
+ pwszFileName: *mut WCHAR,
+ pgSubject: *mut GUID,
+) -> BOOL}
+STRUCT!{struct SIP_ADD_NEWPROVIDER {
+ cbStruct: DWORD,
+ pgSubject: *mut GUID,
+ pwszDLLFileName: *mut WCHAR,
+ pwszMagicNumber: *mut WCHAR,
+ pwszIsFunctionName: *mut WCHAR,
+ pwszGetFuncName: *mut WCHAR,
+ pwszPutFuncName: *mut WCHAR,
+ pwszCreateFuncName: *mut WCHAR,
+ pwszVerifyFuncName: *mut WCHAR,
+ pwszRemoveFuncName: *mut WCHAR,
+ pwszIsFunctionNameFmt2: *mut WCHAR,
+ pwszGetCapFuncName: PWSTR,
+}}
+pub type PSIP_ADD_NEWPROVIDER = *mut SIP_ADD_NEWPROVIDER;
+pub const SIP_MAX_MAGIC_NUMBER: DWORD = 4;
+extern "system" {
+ pub fn CryptSIPLoad(
+ pgSubject: *const GUID,
+ dwFlags: DWORD,
+ pSipDispatch: *mut SIP_DISPATCH_INFO,
+ ) -> BOOL;
+ pub fn CryptSIPRetrieveSubjectGuid(
+ FileName: LPCWSTR,
+ hFileIn: HANDLE,
+ pgSubject: *mut GUID,
+ ) -> BOOL;
+ pub fn CryptSIPRetrieveSubjectGuidForCatalogFile(
+ FileName: LPCWSTR,
+ hFileIn: HANDLE,
+ pgSubject: *mut GUID,
+ ) -> BOOL;
+ pub fn CryptSIPAddProvider(
+ psNewProv: *mut SIP_ADD_NEWPROVIDER,
+ ) -> BOOL;
+ pub fn CryptSIPRemoveProvider(
+ pgProv: *mut GUID,
+ ) -> BOOL;
+ pub fn CryptSIPGetCaps(
+ pSubjInfo: *mut SIP_SUBJECTINFO,
+ pCaps: *mut SIP_CAP_SET,
+ ) -> BOOL;
+}
+FN!{stdcall pCryptSIPGetCaps(
+ pSubjInfo: *mut SIP_SUBJECTINFO,
+ pCaps: *mut SIP_CAP_SET,
+) -> BOOL}
+extern "system" {
+ pub fn CryptSIPGetSealedDigest(
+ pSubjectInfo: *mut SIP_SUBJECTINFO,
+ pSig: *const BYTE,
+ dwSig: DWORD,
+ pbDigest: *mut BYTE,
+ pcbDigest: *mut DWORD,
+ ) -> BOOL;
+}
+FN!{stdcall pCryptSIPGetSealedDigest(
+ pSubjectInfo: *mut SIP_SUBJECTINFO,
+ pSig: *const BYTE,
+ dwSig: DWORD,
+ pbDigest: *mut BYTE,
+ pcbDigest: *mut DWORD,
+) -> BOOL}