示例#1
0
        private static uint WinVerifyTrust(string fileName)
        {
            var  wintrust_action_generic_verify_v2 = new Guid("{00AAC56B-CD44-11d0-8CC2-00C04FC295EE}");
            uint result;

            using (var fileInfo = new WINTRUST_FILE_INFO(fileName, Guid.Empty))

                using (var guidPtr = new UnmanagedPointer(
                           Marshal.AllocHGlobal(Marshal.SizeOf(typeof(Guid))),
                           AllocMethod.HGlobal)
                       )

                    using (var wvtDataPtr = new UnmanagedPointer(
                               Marshal.AllocHGlobal(Marshal.SizeOf(typeof(WINTRUST_DATA))),
                               AllocMethod.HGlobal)
                           )
                    {
                        var    data  = new WINTRUST_DATA(fileInfo);
                        IntPtr pGuid = guidPtr;
                        IntPtr pData = wvtDataPtr;
                        Marshal.StructureToPtr(wintrust_action_generic_verify_v2, pGuid, true);
                        Marshal.StructureToPtr(data, pData, true);
                        result = WinVerifyTrust(IntPtr.Zero, pGuid, pData);
                    }
            return(result);
        }
示例#2
0
 public void Dispose()
 {
     if (dwUnionChoice == UnionChoice.File)
     {
         var info = new WINTRUST_FILE_INFO();
         Marshal.PtrToStructure(pInfoStruct, info);
         info.Dispose();
         Marshal.DestroyStructure(pInfoStruct, typeof(WINTRUST_FILE_INFO));
     }
     Marshal.FreeHGlobal(pInfoStruct);
 }
示例#3
0
        public WINTRUST_DATA(WINTRUST_FILE_INFO fileInfo)
        {
            cbStruct    = (uint)Marshal.SizeOf(typeof(WINTRUST_DATA));
            pInfoStruct = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(WINTRUST_FILE_INFO)));
            Marshal.StructureToPtr(fileInfo, pInfoStruct, false);

            dwUnionChoice       = UnionChoice.File;
            pPolicyCallbackData = IntPtr.Zero;
            pSIPCallbackData    = IntPtr.Zero;

            dwUIChoice          = UiChoice.NoUI;
            fdwRevocationChecks = RevocationCheckFlags.None;
            dwStateAction       = StateAction.Ignore;
            hWVTStateData       = IntPtr.Zero;
            pwszURLReference    = IntPtr.Zero;
            dwProvFlags         = TrustProviderFlags.Safer;

            dwUIContext = UIContext.Execute;
        }
示例#4
0
        public WINTRUST_DATA(WINTRUST_FILE_INFO fileInfo)
        {
            cbStruct = (uint) Marshal.SizeOf(typeof(WINTRUST_DATA));
            pInfoStruct = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(WINTRUST_FILE_INFO)));
            Marshal.StructureToPtr(fileInfo, pInfoStruct, false);

            dwUnionChoice = UnionChoice.File;
            pPolicyCallbackData = IntPtr.Zero;
            pSIPCallbackData = IntPtr.Zero;

            dwUIChoice = UiChoice.NoUI;
            fdwRevocationChecks = RevocationCheckFlags.None;
            dwStateAction = StateAction.Ignore;
            hWVTStateData = IntPtr.Zero;
            pwszURLReference = IntPtr.Zero;
            dwProvFlags = TrustProviderFlags.Safer;

            dwUIContext = UIContext.Execute;
        }
示例#5
0
        private static uint WinVerifyTrust(string fileName)
        {
            var wintrust_action_generic_verify_v2 = new Guid("{00AAC56B-CD44-11d0-8CC2-00C04FC295EE}");
            uint result;
            using (var fileInfo = new WINTRUST_FILE_INFO(fileName, Guid.Empty))

            using (var guidPtr = new UnmanagedPointer(
                Marshal.AllocHGlobal(Marshal.SizeOf(typeof(Guid))),
                AllocMethod.HGlobal)
                )

            using (var wvtDataPtr = new UnmanagedPointer(
                Marshal.AllocHGlobal(Marshal.SizeOf(typeof(WINTRUST_DATA))),
                AllocMethod.HGlobal)
                )
            {
                var data = new WINTRUST_DATA(fileInfo);
                IntPtr pGuid = guidPtr;
                IntPtr pData = wvtDataPtr;
                Marshal.StructureToPtr(wintrust_action_generic_verify_v2, pGuid, true);
                Marshal.StructureToPtr(data, pData, true);
                result = WinVerifyTrust(IntPtr.Zero, pGuid, pData);
            }
            return result;
        }
示例#6
0
 public void Dispose()
 {
     if (dwUnionChoice == UnionChoice.File)
     {
         var info = new WINTRUST_FILE_INFO();
         Marshal.PtrToStructure(pInfoStruct, info);
         info.Dispose();
         Marshal.DestroyStructure(pInfoStruct, typeof(WINTRUST_FILE_INFO));
     }
     Marshal.FreeHGlobal(pInfoStruct);
 }