Here are some porting notes for the Mac using Metrowerk's Codewarrior Pro 5.2 compiler. Only problem is that it doesn't pass the DES validation tests with optimizations turned all the way up. A normal compile performs just fine. Metrowerks CodeWarrior Pro 5.2 Processor: PPC File: config.h Comment out line 6 // #define IS_LITTLE_ENDIAN 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: Rabin.cpp Comment out line 14 // template class OAEP; File: RSA.cpp Comment out line 15 (to eliminate duplicate linker warnings) // template class OAEP; File: Test.cpp Add #include Add argc = ccommand(&argv); at line 69 (Beginning of try block). File: Algebra.h Change line 104 from (hidden by function declaration) MultiplicativeGroup m_mg; to CryptoPP::MultiplicativeGroup m_mg; File: Blumshub.h Change line 30-31 from friend BlumGoldwasserPublicKey; friend BlumGoldwasserPrivateKey; to friend class BlumGoldwasserPublicKey; friend class BlumGoldwasserPrivateKey; File: Gzip.h Change line 70-71 from friend BodyProcesser; friend TailProcesser; to friend class BodyProcesser; friend class TailProcesser; File: Lubyrack.h Change line 34 from LREncryption(const byte *userKey, int keyLen=KEYLENGTH) to LREncryption(const byte *userKey, int keyLen=LRBase::KEYLENGTH) Change line 47 from LRDecryption(const byte *userKey, int keyLen=KEYLENGTH) to LRDecryption(const byte *userKey, int keyLen=LRBase::KEYLENGTH) File: Nbtheory.cpp Change line 979 from else return (unsigned int)(2.4 * pow(n, 1.0/3.0) * pow(log(double(n)), 2.0/3.0) - 5); to else return (unsigned int)(2.4 * pow((double)n, 1.0/3.0) * pow(log(double(n)), 2.0/3.0) - 5); Change line 987 from else return (unsigned int)(2.4 * pow(n, 1.0/3.0) * pow(log(double(n)), 2.0/3.0) - 5); to else return (unsigned int)(2.4 * pow((double)n, 1.0/3.0) * pow(log(double(n)), 2.0/3.0) - 5); File: polynomi.h Change line 38 from friend PolynomialOver; to friend class PolynomialOver;