I think there should be a sligt difference in the order of arguments... g++ crypt_test.cpp -lcryptopp.a -static -L$<path> -o test_app where $<path> is the location for lcryptopp.a you could figure this out by typing locate libcryptopp.a
--- hope is the quintessential human illusion... simultaneously the source of your greatest strength and your greatest weakness Quoting [EMAIL PROTECTED]: > Hi tried that as well. Still get the same errors. I will later today > install > a linux machine and see if I can get it working there. Thanks for the > tips. > > // JPB > > -----Original Message----- > From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] > Sent: den 4 november 2005 01:03 > To: [email protected]; [EMAIL PROTECTED] > Cc: 'Jeffrey Walton' > Subject: RE: Newbie help tips please > > Hi, > > Should it not be (see Wei's gnumakefile): > g++ libcryptopp.a -L... -lcryptopp -o test_app crypt_test.cpp > > Jeff > > Quoting [EMAIL PROTECTED]: > > > Hello, > > Unfortunatly I have not made any progress, I did some more > > tests but decided to leave it for a while and learn some more basic > > > c++ thinking maybe I was missing some basic knowledge. What I did > do is: > > > > I have tried installing the freebsd port and using the library that > > > way, but that doesn't work either. I then tried to update the whole > > > system to FreeBSD 6RC2. That helped a bit regarding the compilation > > > errors encountered when compiling integer.cpp but still I get > linking > > erros. Just a quick recap to see if I am correct in my > methodology: > > 1. Download and extract the source for cryptopp > > /root/code/gsm_control/trunk/cryptopp > > 2. cp GNUMakefile to Makefile and run gmake 3. Compilation goes > fine > > but cryptotest fails all 16 "Panama validation suite running..." > tests > > 4. Use small test program from Faq to test > > (/root/code/gsm_control/trunk/crypto_test.cpp): > > ********************************** > > #include <iostream> > > #include <iomanip> > > > > #include "cryptopp/modes.h" > > #include "cryptopp/aes.h" > > #include "cryptopp/filters.h" > > > > int main(int argc, char* argv[]) { > > > > // > > // Key and IV setup > > // > > byte key[ CryptoPP::AES::DEFAULT_KEYLENGTH ], iv[ > > CryptoPP::AES::BLOCKSIZE ]; > > memset( key, 0x00, CryptoPP::AES::DEFAULT_KEYLENGTH ); > > memset( iv, 0x00, CryptoPP::AES::BLOCKSIZE ); > > > > // > > // String and Sink setup > > // > > std::string plaintext = "Now is the time for all good men to > come > > to the aide..."; > > std::string ciphertext; > > std::string decryptedtext; > > > > // > > // Dump Plain Text > > // > > std::cout << "Plain Text (" << plaintext.size() << " bytes)" << > > > std::endl; > > std::cout << plaintext; > > std::cout << std::endl << std::endl; > > > > // > > // Create Cipher Text > > // > > CryptoPP::AES::Encryption aesEncryption(key, > > CryptoPP::AES::DEFAULT_KEYLENGTH); > > CryptoPP::CBC_Mode_ExternalCipher::Encryption cbcEncryption( > > aesEncryption, iv ); > > > > CryptoPP::StreamTransformationFilter > stfEncryptor(cbcEncryption, > > new CryptoPP::StringSink( ciphertext ) ); > > stfEncryptor.Put( reinterpret_cast<const unsigned char*>( > > plaintext.c_str() ), plaintext.length() + 1 ); > > stfEncryptor.MessageEnd(); > > > > // > > // Dump Cipher Text > > // > > std::cout << "Cipher Text (" << ciphertext.size() << " bytes)" > << > > std::endl; > > > > for( int i = 0; i < ciphertext.size(); i++ ) { > > > > std::cout << "0x" << std::hex << (0xFF & > > static_cast<byte>(ciphertext[i])) << " "; > > } > > > > std::cout << std::endl << std::endl; > > > > // > > // Decrypt > > // > > CryptoPP::AES::Decryption aesDecryption(key, > > CryptoPP::AES::DEFAULT_KEYLENGTH); > > CryptoPP::CBC_Mode_ExternalCipher::Decryption cbcDecryption( > > aesDecryption, iv ); > > > > CryptoPP::StreamTransformationFilter > stfDecryptor(cbcDecryption, > > new CryptoPP::StringSink( decryptedtext ) ); > > stfDecryptor.Put( reinterpret_cast<const unsigned char*>( > > ciphertext.c_str() ), ciphertext.size() ); > > stfDecryptor.MessageEnd(); > > > > // > > // Dump Decrypted Text > > // > > std::cout << "Decrypted Text: " << std::endl; > > std::cout << decryptedtext; > > std::cout << std::endl << std::endl; > > > > return 0; > > } > > ********************************** > > 5. Compile using > > gandalf# pwd > > /root/code/gsm_control/trunk > > gandalf# g++ -L/root/code/gsm_control/trunk/cryptopp/ -lcryptopp -o > > > test_app crypt_test.cpp 6. Get lots and lots of errors (here are > > some): > > /var/tmp//ccAX78nC.o(.text+0x27b): In function `main': > > : undefined reference to > > > `CryptoPP::CipherModeFinalTemplate_ExternalCipher<CryptoPP::CBC_Encryption>: > > > :CipherModeFinalTemplate_ExternalCipher(CryptoPP::SimpleKeyedTransform > > ation< CryptoPP::BlockTransformation>&, unsigned char const*, > int)' > > /var/tmp//ccAX78nC.o(.text+0x2a5): In function `main': > > : undefined reference to > > > `CryptoPP::StringSinkTemplate<std::string>::StringSinkTemplate(std::st > > ring&) > > ' > > /var/tmp//ccAX78nC.o(.text+0x2ec): In function `main': > > : undefined reference to > > > `CryptoPP::StreamTransformationFilter::StreamTransformationFilter(CryptoPP:: > > StreamTransformation&, CryptoPP::BufferedTransformation*, > > CryptoPP::StreamTransformationFilter::BlockPaddingScheme)' > > /var/tmp//ccAX78nC.o(.text+0x465): In function `main': > > : undefined reference to > > > `CryptoPP::CipherModeFinalTemplate_ExternalCipher<CryptoPP::CBC_Decryption>: > > > :CipherModeFinalTemplate_ExternalCipher(CryptoPP::SimpleKeyedTransform > > ation< CryptoPP::BlockTransformation>&, unsigned char const*, > int)' > > /var/tmp//ccAX78nC.o(.text+0x48f): In function `main': > > : undefined reference to > > > `CryptoPP::StringSinkTemplate<std::string>::StringSinkTemplate(std::st > > ring&) > > ' > > /var/tmp//ccAX78nC.o(.text+0x4d6): In function `main': > > > > Am I doing anything obviously wrong here?! Do I have to pass any > > object files or the like with the compiler statement? Any help > greatly > appreciated. > > Thanks. > > > > // Jorgen > > > > -----Original Message----- > > From: Jeffrey Walton [mailto:[EMAIL PROTECTED] > > Sent: den 3 november 2005 22:28 > > To: [email protected]; [EMAIL PROTECTED] > > Subject: Re: Newbie help tips please > > > > Hi, > > > > Have you made any progress? > > > > Jeff > > > > >>> [EMAIL PROTECTED] 10/30/2005 8:39 PM >>> > > Hello, > > I am a complete C++ newbie but I think the best way to learn > is > > to get stuck into it. Anyhow what I want to do is simply try to use > > > the CryptoPP library in a small learning program. For example > starting > > out using SHA hashes or the like. So I downloaded the source, > > extracted it into cryptopp directory in my source root. I then > copied > > the GNUmakefile to Makefile, ran gmake. One thing I had to do > thoguh > > was compile integer.cpp by hand as it did not compile with -O2 (-O1 > > > worked fine). After this I ran tried compiling the program from the > > > FAQ entitled "How do I use a block cipher in > > Crypto++ > > 5.0?" by 2005-Oct-21 7:38am jeffrey. I only changed the include > paths > > as below. > > > > #include "cryptopp/modes.h" > > #include "cryptopp/aes.h" > > #include "cryptopp/filters.h" > > > > > > However I get lots of errors and the compilation fails. I am > running > > FreeBSD: > > > > FreeBSD xxx.xxx.xxx 5.4-RELEASE FreeBSD 5.4-RELEASE #0: Sun May 8 > > 10:21:06 > > UTC 2005 i386 > > > > Here are some of the erorrors, as far as I can understand these are > > > linker errors and not compilation erros right?: > > > > > /var/tmp//ccb6QI7E.o(.gnu.linkonce.t._ZN8CryptoPP8Rijndael3EncC2ERKS1_ > > +0x28) > > : In function > `CryptoPP::Rijndael::Enc::Enc(CryptoPP::Rijndael::Enc > > const&)': > > : undefined reference to `vtable for CryptoPP::Rijndael::Enc' > > > /var/tmp//ccb6QI7E.o(.gnu.linkonce.t._ZN8CryptoPP8SecBlockIjNS_20Alloc > > atorWi > > thCleanupIjEEEC1ERKS3_+0x25): In function > `CryptoPP::SecBlock<unsigned > > int, CryptoPP::AllocatorWithCleanup<unsigned int> > > >::SecBlock(CryptoPP::SecBlock<unsigned int, > > CryptoPP::AllocatorWithCleanup<unsigned int> > const&)': > > : undefined reference to `CryptoPP::AllocatorWithCleanup<unsigned > > int>::allocate(unsigned int, void const*)' > > > > > > This is the command I used to compile: > > > > # g++ crypt_test.cpp -o cptest.out > > > > I also tried using for SHA in my own really simple program but get > the > > same errors. > > > > Am I missing something. Like I said I am VERY new to C++ so maybe I > > > haven't yet grasped how the libraries are supposed to be used (I > have > > compiled other OOP programs I've written myself though without > > problems). I have searched for code examples on the net but almost > all > > are Windows code. I have tried the -lcryptopp and -L path switches > but > > still get the same error. Also the cryptotest v fails on many > tests. > > > > Tests complete. Total tests = 16. Failed tests = 16. > > SOME TESTS FAILED! > > > > Whirlpool Hash Function validation suite running... > > AlgorithmType: MessageDigest > > Comment: Message digests of strings of 0-bits and lengths 0-127 > bytes > > Digest: > > 470F0409ABAA446E49667D4EBE12A14387CEDBD10DD17B8243CAD550A089DC0F\ > > Message: r0 0x00 > > Name: Whirlpool > > Source: Tweaked NESSIE submission > > > > CryptoPP::Exception caught: Unexpected error during validation > test > > > > Thankful for any tips or nudges in the right direction. > > > > // bobey > > > > > > > > > > =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Manik Taneja University at Buffalo mtaneja [at] buffalo [dot] edu
