Я пытаюсь проанализировать файл .cat с помощью C#. Для этого я использую функции CRYPTOCAT из winapi. Но этот метод для меня очень сложен И я не могу отобразить из него некоторые структуры и методы. Можете ли вы мне помочь? Что мне нужно использовать, чтобы этот процесс был проще.
Я пытаюсь проанализировать файл .cat с помощью C#. Для этого я использую функции CRYPTOCAT из winapi. Но этот метод для меня очень сложен :( И я не могу отобразить из него некоторые структуры и методы. Можете ли вы мне помочь? Что мне нужно использовать, чтобы этот процесс был проще.
Это мой код:
[code]static IntPtr WrapperUse(string fileName) { var hCatalog = CryptCATOpen(fileName.ToCharArray(), 2, 0, 0x200, 0x00000001); unsafe { var storePtr = CryptCATStoreFromHandle(hCatalog); var store = Marshal.PtrToStructure(storePtr, typeof(CRYPTCATSTORE)); IntPtr pMemberPtr = IntPtr.Zero; var pMember = CryptCATEnumerateMember(hCatalog, pMemberPtr);
} [StructLayout(LayoutKind.Sequential)] public unsafe struct CRYPTCATSTORE { public UInt32 cbStruct; public UInt32 dwPublicVersion; [MarshalAs(UnmanagedType.LPWStr)] public string pwszP7File; public UIntPtr hProv; public uint dwEncodingType; public uint fdwStoreFlags; public IntPtr hReserved; public IntPtr hAttrs; public IntPtr hCryptMsg; public IntPtr hSorted;
}
[StructLayout(LayoutKind.Sequential)] public unsafe struct CRYPTCATMEMBER { public uint cbStruct; [MarshalAs(UnmanagedType.LPWStr)] public string pwszReferenceTag; [MarshalAs(UnmanagedType.LPWStr)] public string pwszFileName;
//fixed byte gSubjectType[16]; //GUID [MarshalAs(UnmanagedType.Struct)] public GUID gSubjectType; public uint fdwMemberFlags; public IntPtr pIndirectData; public uint dwCertVersion; public uint dwReserved; public IntPtr hReserved; [MarshalAs(UnmanagedType.Struct)] public CRYPT_ATTR_BLOB sEncodedIndirectData; [MarshalAs(UnmanagedType.Struct)] public CRYPT_ATTR_BLOB sEncodedMemberInfo; }
[StructLayout(LayoutKind.Sequential)] public unsafe struct GUID { public UInt32 Data1; public ushort Data2; public ushort Data3; public fixed byte Data4[8]; }
[StructLayout(LayoutKind.Sequential)] public unsafe struct CRYPT_ATTR_BLOB { public uint cbData; //[MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)] //[MarshalAs(UnmanagedType.AsAny)] public byte[] pbData;