OpenCL OpenCL aims to be a portable, easy to use, and efficient C++ cryto library. It currently supports the following algorithms: * Block Ciphers: Blowfish, CAST256, CAST5, CS-Cipher, DES, GOST, IDEA, Luby-Rackoff, MISTY1, RC2, RC5, RC6, Rijndael, SAFER-SK128, Serpent, SHARK, Skipjack, Square, TEA, Threeway, Twofish, XTEA * Stream Ciphers: ARC4, ISAAC, SEAL * Hash Functions: HAVAL, MD2, MD4, MD5, RIPE-MD128, RIPE-MD160, SHA-1, SHA2-256, SHA2-512, Tiger * MACs: EMAC, HMAC, MD5MAC * Misc: Adler32, CRC24, CRC32, Randpool, X9.17 RNG * Cipher Modes: CBC w/ Padding, CFB, OFB, Counter It is distributed under the BSD license. Portability One of the main goals of OpenCL is high portability. It works on big and little endian machines without any changes to the code (ie, no compile time macros), and never assumes anything about pointer alignment. It uses ISO C++ (the only extension required is that 64-bit integers must be supported, which is the case on essentially every modern compiler, even those running on 32-bit systems), and avoids areas where recent changes may restrict portability (use of sstream and the specific semantics of auto_ptr, for example). The current release has been tested on the following systems: OS CPU TYPE Compiler(s) Linux x86 egcs 1.1.2 / gcc 3.0 (20010327) / KAI C++ 3.4 g Linux Alpha/PPC/SPARC gcc 2.95.2 Tru64 Alpha Compaq C++ 6.2 [1] Solaris SPARC gcc 2.95.2 IRIX MIPS MIPSpro C++ 7.2.1.1m [1] [1] Patch (see bad_lib.dif) It is known that Visual C++ 6.0 SP3 has several bugs which prevent compilation (presumably all earlier versions are also affected). However, Visual C++ is widely enough used that I'll be attempting to make a patch. Shared libraries are probably not going to work except on ELF based systems - fortunately, that includes most modern Unices (Tru64 5.0, while not being ELF-based, has decent shared library support so you're OK there). The OpenCL Homepage is located at: http://opencl.sourceforge.net/