Here are the changes that I have made to port Crypto++ 3.0 to the Mac: Compiler: Metrowerks CodeWarrior Pro 4.1 (4 + netborne patches) Processor: PPC (note that the Metrowerks 68K compiler cannot yet build crypto++) File: config.h Comment out line 6 // #define IS_LITTLE_ENDIAN File: dsa.h add #include after line 3 File: Integer.h Move lines 91-97 (definitions of Power2, One, and Zero) to before line 79 (before the last constructor, the one that has Zero as a default argument) File: luc.h add #include after line 3 File: nr.h add #include after line 3 File: Rabin.cpp Comment out line 14 (to eliminate duplicate linker warnings) // template class OAEP; File: RSA.cpp Comment out line 15 (to eliminate duplicate linker warnings) // template class OAEP; File: misc.h replace templated functions rotl and rotr with ones that work: (replace lines 29 thru 37 in original) template inline T rotl(T x, unsigned int y) { unsigned int z = y % ( sizeof(T) * 8 ); return ((x<>(sizeof(T)*8-z))); } template inline T rotr(T x, unsigned int y) { unsigned int z = y % ( sizeof(T) * 8 ); return ((x>>z) | (x<<(sizeof(T)*8-z))); } With these changes, Crypto++ 3.0 compiles, links, and passes all validation tests. Thanks to Daniel Steffen for his help, and to Wei Dai for writing Crypto++. -- Marshall ------------------ A few more changes may be necessary. Daniel A. Steffen: Add the line #include "pubkey.cpp" at the start of "validat2.cpp" and "bench.cpp" to get 'MaxPlainTextLength' etc instantiated. Eric C Wagner: That fixed the problem. Another addition to the porting notes should be to add #include to the test.cpp includes and put the line argc = ccommand(&argv); at the beginning of the try block in the main function.