Sean,

It's not (just) your version of 'as' - new release of Crypto++  
introduced an issue with rijndael.h file. Which can be worked around  
by adding -DCRYPTOPP_DISABLE_ASM flag to any code you compile with  
crypto++. I prefer modifying the .h file, removing this contingency,  
and Wei Dai agreed that it would be a a better solution (I think he's  
fixed it in SVN).


On Jul 10, 2009, at  13:48 , Sean McAllister wrote:

>
> It looks like make is passing -DCRYPTOPP_DISABLE_ASM to all the source
> files, most likely because my version of 'as' is to low (1.38).
>
>
> On Jul 10, 10:29 am, Sean McAllister <[email protected]> wrote:
>> So I found some sample code on codeproject (Sample 3) relating the  
>> GCM
>> functionality of crypto++
>>
>> http://www.codeproject.com/KB/security/EncryptThenAuthenticate.aspx? 
>> d...
>>
>> I've got the crypto++  library  compiled and I wrote a makefile for  
>> that
>> sample that links against the crypto++ library:
>>
>> CC     = g++
>> CCOPTS =  -I../../cryptopp
>> LDOPTS =  -L../../cryptopp -lcryptopp
>>
>> all: example_3
>>
>> stdafx.o: stdafx.cpp
>>     $(CC) $(CCOPTS) -c stdafx.cpp -o stdafx.o
>>
>> example_3: Sample.cpp stdafx.o stdafx.h
>>     $(CC) $(CCOPTS) $(LDOPTS) Sample.cpp -o example_3 stdafx.o
>>
>> clean:
>>     rm -rf example_3 *.o
>>
>> But when I go to do the final linking, I get this:
>>
>> Undefined symbols:
>>   "CryptoPP::Rijndael::Enc::AdvancedProcessBlocks(unsigned char  
>> const*,
>> unsigned char const*, unsigned char*, unsigned long, unsigned int)  
>> const",
>> referenced from:
>>       vtable for CryptoPP::BlockCipherFinal<(CryptoPP::CipherDir)0,
>> CryptoPP::Rijndael::Enc>in ccz7OlpQ.o
>>       vtable for
>> CryptoPP 
>> ::ClonableImpl<CryptoPP::BlockCipherFinal<(CryptoPP::CipherDir)0,
>> CryptoPP::Rijndael::Enc>, CryptoPP::Rijndael::Enc>in ccz7OlpQ.o
>>   "non-virtual thunk to
>> CryptoPP::Rijndael::Enc::AdvancedProcessBlocks(unsigned char const*,
>> unsigned char const*, unsigned char*, unsigned long, unsigned int)  
>> const",
>> referenced from:
>>       vtable for CryptoPP::BlockCipherFinal<(CryptoPP::CipherDir)0,
>> CryptoPP::Rijndael::Enc>in ccz7OlpQ.o
>>       vtable for
>> CryptoPP 
>> ::ClonableImpl<CryptoPP::BlockCipherFinal<(CryptoPP::CipherDir)0,
>> CryptoPP::Rijndael::Enc>, CryptoPP::Rijndael::Enc>in ccz7OlpQ.o
>> ld: symbol(s) not found
>>
>> Checking in rijndael.cpp I can see the function defintiion, but  
>> it's wrapper
>> in an ifdef :
>>
>> #if CRYPTOPP_BOOL_SSE2_ASM_AVAILABLE ||  
>> defined(CRYPTOPP_X64_MASM_AVAILABLE)
>>
>> Rijndae::Enc::AdvancedProcessBlocks
>> #endif
>>
>> Which would seem to indicate those flags are false and undefined
>> respectively.  But the GCM encryptor/decryptor is still trying to use
>> this function.
>>
>> Is this a bug or have I somehow mis-compiled (I just ran make -f
>> GNUmakefile)?
>>
>> Here's my uname and gcc -v info
>>
>> uname:
>> Darwin localhost 9.7.0 Darwin Kernel Version 9.7.0: Tue Mar 31  
>> 22:52:17 PDT
>> 2009; root:xnu-1228.12.14~1/RELEASE_I386 i386 i386
>>
>> gcc -v
>>
>> Target: i686-apple-darwin9
>> Configured with: /var/tmp/gcc/gcc-5465~16/src/configure --disable- 
>> checking
>> -enable-werror --prefix=/usr --mandir=/share/man
>> --enable-languages=c,objc,c++,obj-c++
>> --program-transform-name=/^[cg][^.-]*$/s/$/-4.0/
>> --with-gxx-include-dir=/include/c++/4.0.0 --with-slibdir=/usr/lib
>> --build=i686-apple-darwin9 --with-arch=apple --with-tune=generic
>> --host=i686-apple-darwin9 --target=i686-apple-darwin9
>> Thread model: posix
>> gcc version 4.0.1 (Apple Inc. build 5465)
> >


--~--~---------~--~----~------------~-------~--~----~
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