public static int AuthenticodeDigestSign([In] IntPtr pSignerCert, [In] ref CRYPT_ATTR_BLOB pMetadataBlob, [In] AlgId digestAlgID, [In][MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 4)] byte[] pbToBeSignedDigest, [In] int cbToBeSignedDigest, [Out] out CRYPT_ATTR_BLOB pSignedDigest ) { pSignedDigest = default; try { // var signerCert = new X509Certificate2(pSignerCert); var accessToken = Environment.GetEnvironmentVariable("KEYVAULT_ACCESSTOKEN"); var keyIdentifier = Environment.GetEnvironmentVariable("KEYVAULT_KEY_IDENTIFIER"); HookAssemblyLoad(); var kvalg = AlgIdToJwsAlgId(digestAlgID); if (kvalg == null) { return(-1); } var signed = SignWithKeyVault(keyIdentifier, accessToken, pbToBeSignedDigest, kvalg).Result; var buffer = Marshal.AllocHGlobal(signed.Length); Marshal.Copy(signed, 0, buffer, signed.Length); pSignedDigest = new CRYPT_ATTR_BLOB { pbData = buffer, cbData = signed.Length }; } catch (Exception e) { Console.Error.WriteLine(e.Message); return(Marshal.GetHRForException(e)); } return(0); }
public static extern bool PFXIsPFXBlob(ref CRYPT_ATTR_BLOB pPFX);
public static extern bool PFXExportCertStore(IntPtr hStore, ref CRYPT_ATTR_BLOB pPFX, [In][MarshalAs(UnmanagedType.LPWStr)] string szPassword, uint dwFlags);
public static extern bool PFXVerifyPassword(ref CRYPT_ATTR_BLOB pPFX, [In][MarshalAs(UnmanagedType.LPWStr)] string szPassword, uint dwFlags);