public static extern SafeCryptMsgHandle CryptMsgOpenToDecode( CMSG_ENCODING dwMsgEncodingType, CMSG_OPENTODECODE_FLAGS dwFlags, uint dwMsgType, IntPtr hCryptProv, IntPtr pRecipientInfo, IntPtr pStreamInfo);
internal static extern bool CryptEncodeObjectEx( CMSG_ENCODING dwCertEncodingType, IntPtr lpszStructType, IntPtr pvStructInfo, uint dwFlags, IntPtr pEncodePara, IntPtr pvEncoded, ref uint pcbEncoded);
internal static extern bool CryptDecodeObject( CMSG_ENCODING dwCertEncodingType, IntPtr lpszStructType, IntPtr pbEncoded, uint cbEncoded, uint dwFlags, IntPtr pvStructInfo, IntPtr pcbStructInfo);
public static extern SafeCryptMsgHandle CryptMsgOpenToEncode( CMSG_ENCODING dwMsgEncodingType, uint dwFlags, uint dwMsgType, ref CMSG_SIGNED_ENCODE_INFO pvMsgEncodeInfo, string pszInnerContentObjID, IntPtr pStreamInfo );