internal static NativeMethods.CRYPTUI_WIZ_DIGITAL_SIGN_EXTENDED_INFO InitSignInfoExtendedStruct( string description, string moreInfoUrl, string hashAlgorithm) { NativeMethods.CRYPTUI_WIZ_DIGITAL_SIGN_EXTENDED_INFO signExtendedInfo = new NativeMethods.CRYPTUI_WIZ_DIGITAL_SIGN_EXTENDED_INFO(); signExtendedInfo.dwSize = (uint)Marshal.SizeOf((object)signExtendedInfo); signExtendedInfo.dwAttrFlagsNotUsed = 0U; signExtendedInfo.pwszDescription = description; signExtendedInfo.pwszMoreInfoLocation = moreInfoUrl; signExtendedInfo.pszHashAlg = (string)null; signExtendedInfo.pwszSigningCertDisplayStringNotUsed = IntPtr.Zero; signExtendedInfo.hAdditionalCertStoreNotUsed = IntPtr.Zero; signExtendedInfo.psAuthenticatedNotUsed = IntPtr.Zero; signExtendedInfo.psUnauthenticatedNotUsed = IntPtr.Zero; if (hashAlgorithm != null) { signExtendedInfo.pszHashAlg = hashAlgorithm; } return(signExtendedInfo); }
internal static NativeMethods.CRYPTUI_WIZ_DIGITAL_SIGN_INFO InitSignInfoStruct( string fileName, X509Certificate2 signingCert, string timeStampServerUrl, string hashAlgorithm, SigningOption option) { NativeMethods.CRYPTUI_WIZ_DIGITAL_SIGN_INFO wizDigitalSignInfo = new NativeMethods.CRYPTUI_WIZ_DIGITAL_SIGN_INFO(); wizDigitalSignInfo.dwSize = (uint)Marshal.SizeOf((object)wizDigitalSignInfo); wizDigitalSignInfo.dwSubjectChoice = 1U; wizDigitalSignInfo.pwszFileName = fileName; wizDigitalSignInfo.dwSigningCertChoice = 1U; wizDigitalSignInfo.pSigningCertContext = signingCert.Handle; wizDigitalSignInfo.pwszTimestampURL = timeStampServerUrl; wizDigitalSignInfo.dwAdditionalCertChoice = NativeMethods.GetCertChoiceFromSigningOption(option); NativeMethods.CRYPTUI_WIZ_DIGITAL_SIGN_EXTENDED_INFO signExtendedInfo = NativeMethods.InitSignInfoExtendedStruct("", "", hashAlgorithm); IntPtr ptr = Marshal.AllocCoTaskMem(Marshal.SizeOf((object)signExtendedInfo)); Marshal.StructureToPtr((object)signExtendedInfo, ptr, false); wizDigitalSignInfo.pSignExtInfo = ptr; return(wizDigitalSignInfo); }