Hi there!

I'm using Visual C++ 2008 and "CryptoPP 5.5.2" version!
I have added this library to visual studio environment with the below
instructions and

built some sample codes succesfully:

1.Rename the library file from cryptlib.lib to cryptlibd.lib (notice
the addition of the

"d" for Debug).
2.Move the Debug Library to the location of the Header and Source
Files. Also, move

(without renaming) the Release version to the same folder.

3-Add the location of the Header Files, Source Files, and Libraries to
the VC++

Environment. Select Tools | Options, Directories Tab.

4- Add the location of the Header Files, Source Files, and Libraries
to the VC++ Project.


I've compiled the code below and got 6 errors:


The Code:

// Crypto++
 #include "sha.h"        // SHA-1, SHA-256, SHA-384, SHA-512
 #include "hex.h"        // HexEncoder
 #include "files.h"

 // std
 #include <iostream>
 #include <string.h>
void DumpHash_SingleStep(
     CryptoPP::HashTransformation& hash,
     char const* szModuleName,
     std::string const& strData)
 {
     using namespace std;
     using namespace CryptoPP;

     // Cannot use std::string for buffer;
     // its internal storage might not be contiguous
      AlignedSecByteBlock sbbDigest(hash.DigestSize());

     hash.CalculateDigest(
         sbbDigest.Begin(),
         (byte const*) strData.data(),
         strData.size());

     cout << szModuleName << " SS: ";
     HexEncoder(new FileSink(cout)).Put(sbbDigest.Begin(),
sbbDigest.Size());
     cout << endl;
 }
void DumpHash_MultiStep(
     CryptoPP::HashTransformation& hash,
     char const* szModuleName,
     std::string const& strDataPart1,
     std::string const& strDataPart2,
     std::string const& strDataPart3)
 {
     using namespace std;
     using namespace CryptoPP;

     hash.Update((byte const*) strDataPart1.data(), strDataPart1.size
());
     hash.Update((byte const*) strDataPart2.data(), strDataPart2.size
());
     hash.Update((byte const*) strDataPart3.data(), strDataPart3.size
());

     // Cannot use std::string for buffer;
     // its internal storage might not be contiguous
      AlignedSecByteBlock sbbDigest(hash.DigestSize());

     hash.Final(sbbDigest.Begin());

     cout << szModuleName << " MS: ";
     HexEncoder(new FileSink(cout)).Put(sbbDigest.Begin(),
sbbDigest.Size());
     cout << endl;
 }
void DumpHash_HashFilter(
     CryptoPP::HashTransformation& hash,
     char const* szModuleName,
     std::string const& strDataPart1,
     std::string const& strDataPart2,
     std::string const& strDataPart3)
 {
     using namespace std;
     using namespace CryptoPP;

     // Here, we are free to use std::string as the destination,
     // because StringSink uses the correct std::string interface to
append data
     string strDigest;
     HashFilter hashFilter(hash, new StringSink(strDigest));
     hashFilter.Put((byte const*) strDataPart1.data(),
strDataPart1.size());
     hashFilter.Put((byte const*) strDataPart2.data(),
strDataPart2.size());
     hashFilter.Put((byte const*) strDataPart3.data(),
strDataPart3.size());
     hashFilter.MessageEnd();

     cout << szModuleName << " HF: ";
     StringSource(strDigest, true,
         new HexEncoder(
             new FileSink(cout)));
     cout << endl;
 }
void DumpHash(
     CryptoPP::HashTransformation& hash,
     char const* szModuleName,
     std::string const& strDataPart1,
     std::string const& strDataPart2,
     std::string const& strDataPart3)
 {
     DumpHash_SingleStep(hash, szModuleName, strDataPart1 +
strDataPart2 + strDataPart3);
     DumpHash_MultiStep(hash, szModuleName, strDataPart1,
strDataPart2, strDataPart3);
     DumpHash_HashFilter(hash, szModuleName, strDataPart1,
strDataPart2, strDataPart3);
 }
 int main()
 {
     using namespace std;
     using namespace CryptoPP;

     std::string strDataPart1 = "part 1; ";
     std::string strDataPart2 = "part two; ";
     std::string strDataPart3 = "PART THREE.";

     try
     {
         DumpHash(SHA(),       "SHA      ", strDataPart1,
strDataPart2, strDataPart3);
         DumpHash(SHA256(),    "SHA256   ", strDataPart1,
strDataPart2, strDataPart3);
     }
     catch (CryptoPP::Exception const& e)
     {
         cout << "CryptoPP::Exception caught: " << endl
              << e.what() << endl;
         return 1;
     }

     return 0;
 }




The 6 errors:


------ Build started: Project: cryptopp(hashmodule), Configuration:
Debug Win32 ------
Compiling...
1.cpp
d:\1.cpp(22) : error C2039: 'Begin' : is not a member of
'CryptoPP::SecBlock<T,A>'
        with
        [
            T=byte,
            A=CryptoPP::AllocatorWithCleanup<byte,true>
        ]
d:\1.cpp(27) : error C2039: 'Begin' : is not a member of
'CryptoPP::SecBlock<T,A>'
        with
        [
            T=byte,
            A=CryptoPP::AllocatorWithCleanup<byte,true>
        ]
d:\1.cpp(27) : error C2039: 'Size' : is not a member of
'CryptoPP::SecBlock<T,A>'
        with
        [
            T=byte,
            A=CryptoPP::AllocatorWithCleanup<byte,true>
        ]
d:\1.cpp(48) : error C2039: 'Begin' : is not a member of
'CryptoPP::SecBlock<T,A>'
        with
        [
            T=byte,
            A=CryptoPP::AllocatorWithCleanup<byte,true>
        ]
d:\1.cpp(51) : error C2039: 'Begin' : is not a member of
'CryptoPP::SecBlock<T,A>'
        with
        [
            T=byte,
            A=CryptoPP::AllocatorWithCleanup<byte,true>
        ]
d:\1.cpp(51) : error C2039: 'Size' : is not a member of
'CryptoPP::SecBlock<T,A>'
        with
        [
            T=byte,
            A=CryptoPP::AllocatorWithCleanup<byte,true>
        ]


cryptopp(hashmodule) - 6 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped
==========



In your opinion, why do I get these errors?
Whereas I think errors are not reasonable,because
"AlignedSecByteBlock" is a typedef for
"SecBlock<byte, AllocatorWithCleanup<byte, CRYPTOPP_BOOL_X86 |
CRYPTOPP_BOOL_X64>>"
where "Begin" and "Size" are it's member functions!

Any help will be greatly appreciated!
Gary




--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the "Crypto++ Users" 
Google Group.
To unsubscribe, send an email to [email protected].
More information about Crypto++ and this group is available at 
http://www.cryptopp.com.
-~----------~----~----~----~------~----~------~--~---

Reply via email to