www.pudn.com > CNGCryptFile.rar > MyCNGCryptFile.h
// MyCNGCryptFile.h: interface for the CMyCNGCryptFile class. // ////////////////////////////////////////////////////////////////////// #if !defined(AFX_MYCNGCRYPTFILE_H__E72946B6_46C1_44A5_B25A_02E983654883__INCLUDED_) #define AFX_MYCNGCRYPTFILE_H__E72946B6_46C1_44A5_B25A_02E983654883__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 #include//#include //Problem found cut and paste //Manaully include in the project settings "C:\Program Files\Microsoft CNG Development Kit\Include" // "C:\Program Files\Microsoft CNG Development Kit\Lib\X86" //TODO DA controllare cosa serve veramente #ifndef NTSTATUS typedef LONG NTSTATUS, *PNSTATUS; #endif #ifndef STATUS_SUCCESS #define STATUS_SUCCESS ((NTSTATUS)0x00000000L) #define STATUS_NOT_SUPPORTED ((NTSTATUS)0xC00000BBL) #define STATUS_UNSUCCESSFUL ((NTSTATUS)0xC0000001L) #define STATUS_INVALID_PARAMETER ((NTSTATUS)0xC000000DL) #define STATUS_HMAC_NOT_SUPPORTED ((NTSTATUS)0xC000A001L) #define STATUS_BUFFER_TOO_SMALL ((NTSTATUS)0xC0000023L) #define STATUS_NOT_IMPLEMENTED ((NTSTATUS)0xC0000002L) #define STATUS_ENTRYPOINT_NOT_FOUND ((NTSTATUS)0xC0000139l) #endif const DWORD CHUNK_SIZE = 16; #define SYMM_KEY_SIZE_SECRET 16 //Set IV static const BYTE rgbIV[] = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F }; //Set AES KEY static const BYTE rgbAES128Key[] = { 'D', 'r', '.', 'L', 'u', 'i', 'j', 'i', 'C', 'N', 'G', ' ', 'T', 'e', 's', 't' }; class CMyCNGCryptFile { //File void SetLenghtFileToOpen(ULONGLONG iLenghtFileToOpen ); bool LastCryptBuffRead(); void SetTotByteRead(UINT iByteRead); ULONGLONG m_iLenghtFileToOpen; ULONGLONG m_iTotalByteRead; //Handle BCRYPT_ALG_HANDLE m_hAesAlg ; BCRYPT_KEY_HANDLE m_hKey ; PBYTE m_pbKeyObject ; PBYTE m_pbIV ; //Handle for Hash BCRYPT_HASH_HANDLE m_hHash ; PBYTE m_pbHashObject ; BCRYPT_ALG_HANDLE m_hHashAlg ; // bool OpenMSPrimitiveProviderAES(); bool CreateSymmetricKey_AES_CBC(DWORD &cbKeyObject, DWORD &cbIV ); bool CreateSymmetricKey_SHA1_Hash(PCWSTR pwszText, DWORD cbKeyObj); bool Crypt(bool bEncrypt,PUCHAR pbufFileToOpen, ULONG iBytesRead, ULONG cbIV, PBYTE pbufFileToSave, DWORD& iBufToSave); bool CryptLastByte(bool bEncrypt,PUCHAR pbufFileToOpen, ULONG iBytesRead, ULONG cbIV, PBYTE pbufFileToSave, DWORD& iBufToSave); CString m_sError; public: bool EnumProviders(CStringList *lstRegisteredProviders); bool CryptFile(bool bEncrypt, CString sFileToOpen,CString sFileToCrypt,CString sKey); CMyCNGCryptFile(); virtual ~CMyCNGCryptFile(); CString GetLastError(); }; #endif // !defined(AFX_MYCNGCRYPTFILE_H__E72946B6_46C1_44A5_B25A_02E983654883__INCLUDED_)