�ɲɾ�����ӯ�����һ��ˣ��������С���˴��ͣ�������P���ҹ��ñ˽��ά�Բ��������˸߸ԣ�������ơ��ҹ��ñ�����ά�Բ���ˡ���˳^�ӣ������ӡ� ���ͯj�ӣ��ƺ���ӣ� ? PNG ?%k25u25%fgd5n!? PNG ?%k25u25%fgd5n!? PNG ?%k25u25%fgd5n!? PNG ?%k25u25%fgd5n!AUTHORS000064400000000156152525757150005634 0ustar00Author and maintainer of mcrypt is Nikos Mavroyanopoulos (nmav@hellug.gr) Arkadias 8, Halandri 15234, Greece THANKS000064400000003405152525757150005477 0ustar00mcrypt and libmcrypt was originaly created by Nikos Mavroyanopoulos , although many people contributed by sending bug reports, patches, and comments. - Sascha Schumann - Steve Underwood - Igor Schein - Alexander Demenshin - Koblinger Egmont - Larry Snyder - Robin Humble - Janusz A. Urbanowicz - Dan Stromberg - R Sriram - Robert Hanzlik - Lars Nordentoft - Don Sutherland - Salvatore Sanfilippo - Jerome Bertorelle - Andrew Libby - Jonathan Woolmington - Sami Farin - Barton C Massey - Derick Rethans - Phillip Oleson - Bernard Guillot - Stefan Hetzl - Gustavo Niemeyer - Germano Rizzo - Ilia A. - [and several others] The Designers of the algorithms: - DES: IBM & NSA - Lucifer (the algorithm that DES is based on): Roy Adler, Don Coppersmith, Horst Feistel, Edna Grossman, Alan Konheim, Carl Meyer, Bill Notz, Lynn Smith, Walt Tuchman and Bryant Tuckerman - CAST-128/CAST-256: Carlisle Adams - xTEA: David Wheeler & Roger M. Needham - 3-WAY: Joan Daemen - Blowfish: Bruce Schneier - Twofish: Bruce Schneier, Doug Whiting, John Kelsey, Chris Hall, David Wagner - GOST: A.Zabotin, G.P. Glazkov, and V.B. Isaeva - SAFER: J.L. Massey - RC2/RC4: Ron Rivest - LOKI97: Lawrie Brown, Josef Pieprzyk KNOWN-BUGS000064400000000103152525757150006131 0ustar00- cast-256 and rc6 do not work properly on Alpha (64 bit) machines README000064400000002166152525757150005447 0ustar00Libmcrypt is a thread-safe library providing a uniform interface to access several block and stream encryption algorithms. Check the manual page for more information on libmcrypt. Look at COPYING for license information and the individual files for more information. COPYING applies only for the mcrypt program and not the algorithms which most of them are public domain. A mailing list on mcrypt is mcrypt-dev@lists.hellug.gr Subscribe by visiting http://lists.hellug.gr/mailman/listinfo/mcrypt-dev ** ** Some hints: Since 2.5.4 libmcrypt does not use dynamic loading for the modules by default. All the algorithms and modes, are now included in the library. To enable the old dynamic loading behaviour use the --enable-dynamic-loading in the configure script. That way you can statically link the library and be 100% thread safe, since dlopen is not always thread safe. You can also enable dynamic loading and include some algorithms into the library. To include algorithms in the library use the --with-included-algos parameter in the configure script. Eg: ./configure --with-included-algos="rijndael-128 arcfour stream cbc cfb" TODO000064400000000151152525757150005247 0ustar00- Documentation- documentation-... - Find test vectors for PANAMA and WAKE and check the implementation. ChangeLog000064400000144400152525757150006337 0ustar002003-03-08 17:30 nmav * NEWS, configure.in, lib/Makefile.am: mcrypt_symb.c is only generated when needed. 2003-03-05 17:35 nmav * NEWS, configure.in: some fixes in configure script. Properly print the enable dynamic loading stuff. 2003-01-22 19:38 nmav * doc/mcrypt.3: fix typos in the documentation. Reported by Anil Madhavapeddy 2003-01-19 18:44 nmav * NEWS, lib/Makefile.am, src/cipher_test.c (utags: libmcrypt_2_5_6): corrected bug which made symbols entered twice in symbol table 2003-01-19 17:48 nmav * NEWS, configure.in, lib/win32_comp.c (tags: libmcrypt_2_5_6), modules/algorithms/3-way.c (tags: libmcrypt_2_5_6), modules/algorithms/arcfour.c (tags: libmcrypt_2_5_6), modules/algorithms/blowfish-compat.c (tags: libmcrypt_2_5_6), modules/algorithms/blowfish.c (tags: libmcrypt_2_5_6), modules/algorithms/cast-128.c (tags: libmcrypt_2_5_6), modules/algorithms/cast-256.c (tags: libmcrypt_2_5_6), modules/algorithms/des.c (tags: libmcrypt_2_5_6), modules/algorithms/enigma.c (tags: libmcrypt_2_5_6), modules/algorithms/gost.c (tags: libmcrypt_2_5_6), modules/algorithms/loki97.c (tags: libmcrypt_2_5_6), modules/algorithms/panama.c (tags: libmcrypt_2_5_6), modules/algorithms/rc2.c (tags: libmcrypt_2_5_6), modules/algorithms/rijndael-128.c (tags: libmcrypt_2_5_6), modules/algorithms/rijndael-192.c (tags: libmcrypt_2_5_6), modules/algorithms/rijndael-256.c (tags: libmcrypt_2_5_6), modules/algorithms/safer128.c (tags: libmcrypt_2_5_6), modules/algorithms/safer64.c (tags: libmcrypt_2_5_6), modules/algorithms/saferplus.c (tags: libmcrypt_2_5_6), modules/algorithms/serpent.c (tags: libmcrypt_2_5_6), modules/algorithms/tripledes.c (tags: libmcrypt_2_5_6), modules/algorithms/twofish.c (tags: libmcrypt_2_5_6), modules/algorithms/wake.c (tags: libmcrypt_2_5_6), modules/algorithms/xtea.c (tags: libmcrypt_2_5_6), modules/modes/cbc.c (tags: libmcrypt_2_5_6), modules/modes/cfb.c (tags: libmcrypt_2_5_6), modules/modes/ctr.c (tags: libmcrypt_2_5_6), modules/modes/ecb.c (tags: libmcrypt_2_5_6), modules/modes/ncfb.c (tags: libmcrypt_2_5_6), modules/modes/nofb.c (tags: libmcrypt_2_5_6), modules/modes/ofb.c (tags: libmcrypt_2_5_6), modules/modes/stream.c (tags: libmcrypt_2_5_6): Panama is not included by default. Several win32 fixes. 2003-01-07 07:25 nmav * lib/mcrypt_threads.c: The mcrypt_mutex_register symbol is always added in the library to prevent compilation problems. Reported by Igor Brezac (igor@ipass.net) 2002-12-22 17:56 nmav * lib/mcrypt_modules.c (tags: libmcrypt_2_5_6, libmcrypt_2_5_5, libmcrypt_2_5_5rc1): some fixes for ecb mode to work. 2002-12-17 14:31 nmav * ChangeLog (tags: libmcrypt_2_5_4), NEWS, lib/mcrypt.h.in (tags: libmcrypt_2_5_6, libmcrypt_2_5_5, libmcrypt_2_5_5rc1, libmcrypt_2_5_4), lib/mcrypt_modules.c (tags: libmcrypt_2_5_4), modules/algorithms/Makefile.am (tags: libmcrypt_2_5_6, libmcrypt_2_5_5, libmcrypt_2_5_5rc1, libmcrypt_2_5_4), modules/modes/Makefile.am (tags: libmcrypt_2_5_6, libmcrypt_2_5_5, libmcrypt_2_5_5rc1, libmcrypt_2_5_4): Added mcrypt_module_support_dynamic(), and some more fixes to disable dynamic loading. 2002-12-17 08:32 nmav * ChangeLog, NEWS, configure.in, lib/Makefile.am (tags: libmcrypt_2_5_5, libmcrypt_2_5_5rc1, libmcrypt_2_5_4), modules/algorithms/Makefile.am, modules/modes/Makefile.am: ade the default behaviour to include all algorithms into the main library, instead of using dynamic modules. Dynamic loading is disabled by default. 2002-12-16 09:52 nmav * lib/mcrypt_modules.c: More checks on input. Suggested by Ilia A. 2002-12-16 09:50 nmav * lib/: mcrypt_extra.c, mcrypt_modules.c: Some fixes to prevent buffer overruns. Based on patch by Ilia A. 2002-12-13 23:03 nmav * lib/mcrypt_modules.c: corrected check in algorithm loading. The check for the buffer size, was fixed. Reported and patch by Ilia A. 2002-11-11 17:19 nmav * modules/algorithms/gost.c (tags: libmcrypt_2_5_5, libmcrypt_2_5_5rc1, libmcrypt_2_5_4): changed the names of some variables in order to compile with k6 optimizations (gcc). Suggested by Jens Rehsack . 2002-10-10 11:40 nmav * libmcrypt.spec.in: New spec file, by Germano Rizzo 2002-10-04 09:25 nmav * configure.in: more win32 fixes 2002-10-02 07:25 nmav * configure.in: corrections in win32 detection. 2002-10-01 11:26 nmav * acconfig.h, configure.in, modules/algorithms/3-way.c (tags: libmcrypt_2_5_5, libmcrypt_2_5_5rc1, libmcrypt_2_5_4), modules/algorithms/arcfour.c (tags: libmcrypt_2_5_5, libmcrypt_2_5_5rc1, libmcrypt_2_5_4), modules/algorithms/blowfish-compat.c (tags: libmcrypt_2_5_5, libmcrypt_2_5_5rc1, libmcrypt_2_5_4), modules/algorithms/blowfish.c (tags: libmcrypt_2_5_5, libmcrypt_2_5_5rc1, libmcrypt_2_5_4), modules/algorithms/cast-128.c (tags: libmcrypt_2_5_5, libmcrypt_2_5_5rc1, libmcrypt_2_5_4), modules/algorithms/cast-256.c (tags: libmcrypt_2_5_5, libmcrypt_2_5_5rc1, libmcrypt_2_5_4), modules/algorithms/des.c (tags: libmcrypt_2_5_5, libmcrypt_2_5_5rc1, libmcrypt_2_5_4), modules/algorithms/enigma.c (tags: libmcrypt_2_5_5, libmcrypt_2_5_5rc1, libmcrypt_2_5_4), modules/algorithms/gost.c, modules/algorithms/loki97.c (tags: libmcrypt_2_5_5, libmcrypt_2_5_5rc1, libmcrypt_2_5_4), modules/algorithms/panama.c (tags: libmcrypt_2_5_5, libmcrypt_2_5_5rc1, libmcrypt_2_5_4), modules/algorithms/rc2.c (tags: libmcrypt_2_5_5, libmcrypt_2_5_5rc1, libmcrypt_2_5_4), modules/algorithms/rijndael-128.c (tags: libmcrypt_2_5_5, libmcrypt_2_5_5rc1, libmcrypt_2_5_4), modules/algorithms/rijndael-192.c (tags: libmcrypt_2_5_5, libmcrypt_2_5_5rc1, libmcrypt_2_5_4), modules/algorithms/rijndael-256.c (tags: libmcrypt_2_5_5, libmcrypt_2_5_5rc1, libmcrypt_2_5_4), modules/algorithms/safer128.c (tags: libmcrypt_2_5_5, libmcrypt_2_5_5rc1, libmcrypt_2_5_4), modules/algorithms/safer64.c (tags: libmcrypt_2_5_5, libmcrypt_2_5_5rc1, libmcrypt_2_5_4), modules/algorithms/saferplus.c (tags: libmcrypt_2_5_5, libmcrypt_2_5_5rc1, libmcrypt_2_5_4), modules/algorithms/serpent.c (tags: libmcrypt_2_5_5, libmcrypt_2_5_5rc1, libmcrypt_2_5_4), modules/algorithms/tripledes.c (tags: libmcrypt_2_5_5, libmcrypt_2_5_5rc1, libmcrypt_2_5_4), modules/algorithms/twofish.c (tags: libmcrypt_2_5_5, libmcrypt_2_5_5rc1, libmcrypt_2_5_4), modules/algorithms/wake.c (tags: libmcrypt_2_5_5, libmcrypt_2_5_5rc1, libmcrypt_2_5_4), modules/algorithms/xtea.c (tags: libmcrypt_2_5_5, libmcrypt_2_5_5rc1, libmcrypt_2_5_4), modules/modes/cbc.c (tags: libmcrypt_2_5_5, libmcrypt_2_5_5rc1, libmcrypt_2_5_4), modules/modes/cfb.c (tags: libmcrypt_2_5_5, libmcrypt_2_5_5rc1, libmcrypt_2_5_4), modules/modes/ctr.c (tags: libmcrypt_2_5_5, libmcrypt_2_5_5rc1, libmcrypt_2_5_4), modules/modes/ecb.c (tags: libmcrypt_2_5_5, libmcrypt_2_5_5rc1, libmcrypt_2_5_4), modules/modes/ncfb.c (tags: libmcrypt_2_5_5, libmcrypt_2_5_5rc1, libmcrypt_2_5_4), modules/modes/nofb.c (tags: libmcrypt_2_5_5, libmcrypt_2_5_5rc1, libmcrypt_2_5_4), modules/modes/ofb.c (tags: libmcrypt_2_5_5, libmcrypt_2_5_5rc1, libmcrypt_2_5_4), modules/modes/stream.c (tags: libmcrypt_2_5_5, libmcrypt_2_5_5rc1, libmcrypt_2_5_4): If WIN32 is defined then include an empty main function. This was added thanks to Stefan Hetzl 2002-09-11 07:00 nmav * doc/mcrypt.3: corrected typos 2002-09-10 16:13 nmav * lib/libmcrypt.m4 (tags: libmcrypt_2_5_6, libmcrypt_2_5_5, libmcrypt_2_5_5rc1, libmcrypt_2_5_4): updated for autoconf 2.50 2002-07-06 10:18 nmav * NEWS, configure.in, lib/mcrypt.c (tags: libmcrypt_2_5_6, libmcrypt_2_5_5, libmcrypt_2_5_5rc1, libmcrypt_2_5_4, libmcrypt_2_5_3), lib/mcrypt_extra.c (tags: libmcrypt_2_5_3), lib/mcrypt_internal.h (tags: libmcrypt_2_5_6, libmcrypt_2_5_5, libmcrypt_2_5_5rc1, libmcrypt_2_5_4, libmcrypt_2_5_3), lib/mcrypt_modules.c (tags: libmcrypt_2_5_3): introduced the use of the const keyword in the exported functions 2002-06-10 18:35 nmav * modules/algorithms/arcfour.c (tags: libmcrypt_2_5_3, libmcrypt_2_5_2): corrected arcfour which returned an IV size of 32 bytes. 2002-05-30 18:20 nmav * NEWS, buildconf (tags: libmcrypt_2_5_6, libmcrypt_2_5_5, libmcrypt_2_5_5rc1, libmcrypt_2_5_4, libmcrypt_2_5_3, libmcrypt_2_5_2), configure.in: added COPYING.LIB 2002-05-29 15:51 nmav * COPYING, COPYING.LIB (tags: libmcrypt_2_5_6, libmcrypt_2_5_5, libmcrypt_2_5_5rc1, libmcrypt_2_5_4, libmcrypt_2_5_3, libmcrypt_2_5_2), Makefile.am (tags: libmcrypt_2_5_4, libmcrypt_2_5_3, libmcrypt_2_5_2), THANKS (tags: libmcrypt_2_5_3, libmcrypt_2_5_2): Added the COPYING.LIB file. 2002-05-24 06:15 nmav * modules/algorithms/: panama.c, panama.h (tags: libmcrypt_2_5_6, libmcrypt_2_5_5, libmcrypt_2_5_5rc1, libmcrypt_2_5_4) (utags: libmcrypt_2_5_2, libmcrypt_2_5_3): Worked around alignment bug in some compilers. 2002-05-23 14:31 nmav * modules/algorithms/saferplus.c (tags: libmcrypt_2_5_3, libmcrypt_2_5_2): Worked around an alignment bug with Solaris Forte 6U2. Pointed out by Phillip Oleson. 2002-05-17 20:53 nmav * configure.in, lib/Makefile.am (tags: libmcrypt_2_5_3, libmcrypt_2_5_2), lib/mcrypt_extra.c: Corrected stuff for comma separated algorithms. Do not open directories when not in LTDL mode. 2002-05-16 20:32 nmav * configure.in: Updated included algorithms configure parameter to work in OS X. Now accepts and comma separated arguments. 2002-03-23 15:04 nmav * lib/libmcrypt.sym (tags: libmcrypt_2_5_5rc1, libmcrypt_2_5_4, libmcrypt_2_5_3, libmcrypt_2_5_2): added missing symbol 2002-03-11 09:55 nmav * configure.in, lib/Makefile.am, modules/algorithms/Makefile.am (tags: libmcrypt_2_5_3, libmcrypt_2_5_2), modules/modes/Makefile.am (tags: libmcrypt_2_5_3, libmcrypt_2_5_2) (utags: libmcrypt_2_5_0): last changes for 2.5.0 release 2002-03-10 14:46 nmav * NEWS, doc/mcrypt.3 (tags: libmcrypt_2_5_0), src/Makefile.am (tags: libmcrypt_2_5_6, libmcrypt_2_5_5, libmcrypt_2_5_5rc1, libmcrypt_2_5_4, libmcrypt_2_5_3, libmcrypt_2_5_2, libmcrypt_2_5_0), src/aes_test.c, src/cipher_test.c (tags: libmcrypt_2_5_5, libmcrypt_2_5_5rc1, libmcrypt_2_5_4, libmcrypt_2_5_3, libmcrypt_2_5_2, libmcrypt_2_5_0): added test for nCFB, CTR, CFB, nOFB with AES-128. 2002-03-10 14:45 nmav * modules/modes/: cfb.c, ctr.c, ofb.c (utags: libmcrypt_2_5_0, libmcrypt_2_5_2, libmcrypt_2_5_3): corrections in CTR mode and cleanups. 2002-03-10 13:01 nmav * modules/modes/ctr.c, src/cipher_test.c: better checks for stream modes 2002-03-10 10:47 nmav * Makefile.am, configure.in, libmcrypt.spec, libmcrypt.spec.in (tags: libmcrypt_2_5_0): added libmcrypt.spec.in 2002-03-09 21:48 nmav * NEWS, TODO (tags: libmcrypt_2_5_6, libmcrypt_2_5_5, libmcrypt_2_5_5rc1, libmcrypt_2_5_4, libmcrypt_2_5_3, libmcrypt_2_5_2, libmcrypt_2_5_0), doc/mcrypt.3, lib/mcrypt.h.in (tags: libmcrypt_2_5_3, libmcrypt_2_5_2, libmcrypt_2_5_0), lib/mcrypt_modules.c (tags: libmcrypt_2_5_2, libmcrypt_2_5_0), modules/algorithms/arcfour.c (tags: libmcrypt_2_5_0), modules/algorithms/wake.c (tags: libmcrypt_2_5_3, libmcrypt_2_5_2, libmcrypt_2_5_0), modules/modes/cbc.c (tags: libmcrypt_2_5_3, libmcrypt_2_5_2, libmcrypt_2_5_0), modules/modes/cfb.c, modules/modes/ctr.c, modules/modes/ecb.c (tags: libmcrypt_2_5_3, libmcrypt_2_5_2, libmcrypt_2_5_0), modules/modes/ncfb.c (tags: libmcrypt_2_5_3, libmcrypt_2_5_2, libmcrypt_2_5_0), modules/modes/nofb.c (tags: libmcrypt_2_5_3, libmcrypt_2_5_2, libmcrypt_2_5_0), modules/modes/ofb.c, modules/modes/stream.c (tags: libmcrypt_2_5_3, libmcrypt_2_5_2, libmcrypt_2_5_0): Added mcrypt_enc_get_state() 2002-03-09 21:27 nmav * modules/modes/: ncfb.c, nofb.c: nOFB and nCFB now behave like real stream modes 2002-03-09 20:29 nmav * NEWS, README, configure.in, libmcrypt.spec, lib/libdefs.h (tags: libmcrypt_2_5_6, libmcrypt_2_5_5, libmcrypt_2_5_5rc1, libmcrypt_2_5_4, libmcrypt_2_5_3, libmcrypt_2_5_2, libmcrypt_2_5_0), modules/algorithms/3-way.c (tags: libmcrypt_2_5_3, libmcrypt_2_5_2, libmcrypt_2_5_0), modules/algorithms/arcfour.c, modules/algorithms/blowfish-compat.c (tags: libmcrypt_2_5_3, libmcrypt_2_5_2, libmcrypt_2_5_0), modules/algorithms/blowfish.c (tags: libmcrypt_2_5_0), modules/algorithms/cast-128.c (tags: libmcrypt_2_5_3, libmcrypt_2_5_2, libmcrypt_2_5_0), modules/algorithms/cast-256.c (tags: libmcrypt_2_5_3, libmcrypt_2_5_2, libmcrypt_2_5_0), modules/algorithms/des.c (tags: libmcrypt_2_5_3, libmcrypt_2_5_2, libmcrypt_2_5_0), modules/algorithms/enigma.c (tags: libmcrypt_2_5_3, libmcrypt_2_5_2, libmcrypt_2_5_0), modules/algorithms/gost.c (tags: libmcrypt_2_5_3, libmcrypt_2_5_2, libmcrypt_2_5_0), modules/algorithms/loki97.c (tags: libmcrypt_2_5_3, libmcrypt_2_5_2, libmcrypt_2_5_0), modules/algorithms/panama.c (tags: libmcrypt_2_5_0), modules/algorithms/rc2.c (tags: libmcrypt_2_5_3, libmcrypt_2_5_2, libmcrypt_2_5_0), modules/algorithms/rijndael-128.c (tags: libmcrypt_2_5_3, libmcrypt_2_5_2, libmcrypt_2_5_0), modules/algorithms/rijndael-192.c (tags: libmcrypt_2_5_3, libmcrypt_2_5_2, libmcrypt_2_5_0), modules/algorithms/rijndael-256.c (tags: libmcrypt_2_5_3, libmcrypt_2_5_2, libmcrypt_2_5_0), modules/algorithms/safer128.c (tags: libmcrypt_2_5_3, libmcrypt_2_5_2, libmcrypt_2_5_0), modules/algorithms/safer64.c (tags: libmcrypt_2_5_3, libmcrypt_2_5_2, libmcrypt_2_5_0), modules/algorithms/saferplus.c (tags: libmcrypt_2_5_0), modules/algorithms/serpent.c (tags: libmcrypt_2_5_3, libmcrypt_2_5_2, libmcrypt_2_5_0), modules/algorithms/tripledes.c (tags: libmcrypt_2_5_3, libmcrypt_2_5_2, libmcrypt_2_5_0), modules/algorithms/twofish.c (tags: libmcrypt_2_5_0), modules/algorithms/wake.c, modules/algorithms/xtea.c (tags: libmcrypt_2_5_3, libmcrypt_2_5_2, libmcrypt_2_5_0), modules/modes/cbc.c, modules/modes/cfb.c, modules/modes/ctr.c, modules/modes/ecb.c, modules/modes/ncfb.c, modules/modes/nofb.c, modules/modes/ofb.c, modules/modes/stream.c: Added the --disable-dynamic-loading parameter to the configure script, and instructions for how to build the library for staticaly linking. 2002-03-09 19:36 nmav * libmcrypt.spec: added libmcrypt.spec by Germano Rizzo 2002-03-09 10:43 nmav * NEWS, configure.in, doc/mcrypt.3, lib/mcrypt_modules.h (tags: libmcrypt_2_5_6, libmcrypt_2_5_5, libmcrypt_2_5_5rc1, libmcrypt_2_5_4, libmcrypt_2_5_3, libmcrypt_2_5_2, libmcrypt_2_5_0), modules/modes/ctr.c, modules/modes/stream.c: A block cipher in CTR mode now behaves as a real stream cipher. (nCFB and nOFB have to be fixed too). 2002-03-07 12:23 nmav * modules/modes/: Makefile.am, ctr.c, ctr.h (tags: libmcrypt_2_5_6, libmcrypt_2_5_5, libmcrypt_2_5_5rc1, libmcrypt_2_5_4, libmcrypt_2_5_3, libmcrypt_2_5_2, libmcrypt_2_5_0), ncfb.c, nofb.c: Added CTR mode. Fixes in nCFB an nOFB modes. 2002-03-04 18:39 nmav * THANKS: added Stefan 2002-03-03 09:15 nmav * modules/algorithms/twofish.c: macro moved to inline function 2002-03-02 10:22 nmav * configure.in, lib/Makefile.am, modules/algorithms/Makefile.am, modules/modes/Makefile.am: -no-undefined is only added in win32 machines 2002-02-28 12:59 nmav * THANKS, acconfig.h (tags: libmcrypt_2_5_3, libmcrypt_2_5_2, libmcrypt_2_5_0), configure.in, doc/example.c (tags: libmcrypt_2_5_6, libmcrypt_2_5_5, libmcrypt_2_5_5rc1, libmcrypt_2_5_4, libmcrypt_2_5_3, libmcrypt_2_5_2, libmcrypt_2_5_0), lib/Makefile.am, lib/libdefs.h, modules/algorithms/Makefile.am, modules/algorithms/twofish.c, modules/modes/Makefile.am, modules/modes/cbc.c, modules/modes/cfb.c, modules/modes/ofb.c: Added link options for win32 compatibility. 2002-02-22 22:05 nmav * modules/modes/stream.c: now has_iv does not return 1. Pointed out by Gustavo Niemeyer 2002-02-13 18:33 nmav * modules/modes/: ncfb.c, nofb.c: ncfb and nofb can now encrypt and decrypt messages with length != blocksize. This is only needed for the last bytes. 2002-02-10 23:15 nmav * lib/mcrypt.h.in: Added mcrypt_check_version prototype. 2002-02-01 11:41 nmav * lib/mcrypt.c (tags: libmcrypt_2_5_2, libmcrypt_2_5_0): corrected nasty bug in internal_init() 2002-01-31 01:13 nmav * lib/: libdefs.h, mcrypt_extra.c (tags: libmcrypt_2_5_0) (utags: libmcrypt_2_4_21): corrected a bug with a POSIX_SOURCE_XXX define. 2002-01-31 01:06 nmav * lib/: mcrypt.c, mcrypt_modules.c (utags: libmcrypt_2_4_21): minor fixes 2002-01-31 00:48 nmav * lib/mcrypt_modules.c: now properly calls lt_dlexit() on dlopen() failure. 2002-01-24 10:47 nmav * lib/: mcrypt_extra.c, mcrypt_modules.c (utags: mcrypt_2_4_20): corrected bug in mcrypt_module_open() 2002-01-05 22:28 nmav * lib/libmcrypt.m4 (tags: libmcrypt_2_5_3, libmcrypt_2_5_2, libmcrypt_2_5_0, libmcrypt_2_4_21, mcrypt_2_4_20): now removes the temp file 2002-01-05 13:26 nmav * THANKS (tags: libmcrypt_2_4_21, mcrypt_2_4_20), configure.in: corrected behaviour in solaris 2002-01-02 10:03 nmav * NEWS: released 2.4.19 2001-12-31 13:06 nmav * THANKS: added Derick 2001-12-15 11:27 nmav * NEWS, THANKS, configure.in, lib/mcrypt.c (tags: mcrypt_2_4_20), lib/mcrypt_modules.c: cleanups in the code. Some fixes too. Patch by Barton C Massey 2001-11-07 12:04 nmav * lib/mcrypt.c: corrected memory leak 2001-09-24 14:09 nmav * lib/mcrypt_modules.c (tags: libmcrypt_2_4_17): bug fix 2001-09-18 10:20 nmav * configure.in (tags: libmcrypt_2_4_17): fixed some bashisms 2001-09-18 10:19 nmav * modules/modes/ofb.c (tags: libmcrypt_2_4_21, mcrypt_2_4_20, libmcrypt_2_4_17): corrected wrong define 2001-09-15 09:41 nmav * NEWS, THANKS (tags: libmcrypt_2_4_17), lib/mcrypt_extra.c (tags: libmcrypt_2_4_17) (utags: libmcrypt_2_4_16b): removed unneeded strdup declaration 2001-09-11 08:09 nmav * NEWS, doc/mcrypt.3 (tags: libmcrypt_2_4_21, mcrypt_2_4_20, libmcrypt_2_4_17, libmcrypt_2_4_16b), lib/mcrypt.h.in (tags: libmcrypt_2_4_21, mcrypt_2_4_20, libmcrypt_2_4_17, libmcrypt_2_4_16b), lib/mcrypt_internal.h (tags: libmcrypt_2_5_2, libmcrypt_2_5_0, libmcrypt_2_4_21, mcrypt_2_4_20, libmcrypt_2_4_17, libmcrypt_2_4_16b), lib/mcrypt_modules.c (tags: libmcrypt_2_4_16b) (utags: libmcrypt_2_4_16): rolled back some of the changed 2001-09-09 09:52 nmav * NEWS, doc/mcrypt.3, lib/mcrypt.c, lib/mcrypt.h.in, lib/mcrypt_internal.h, lib/mcrypt_modules.c, modules/algorithms/3-way.c (tags: libmcrypt_2_4_21, mcrypt_2_4_20, libmcrypt_2_4_17, libmcrypt_2_4_16b, libmcrypt_2_4_16), modules/algorithms/arcfour.c (tags: libmcrypt_2_4_21, mcrypt_2_4_20, libmcrypt_2_4_17, libmcrypt_2_4_16b, libmcrypt_2_4_16), modules/algorithms/blowfish-compat.c (tags: libmcrypt_2_4_21, mcrypt_2_4_20, libmcrypt_2_4_17, libmcrypt_2_4_16b, libmcrypt_2_4_16), modules/algorithms/blowfish.c (tags: libmcrypt_2_4_21, mcrypt_2_4_20, libmcrypt_2_4_17, libmcrypt_2_4_16b, libmcrypt_2_4_16), modules/algorithms/cast-128.c (tags: libmcrypt_2_4_21, mcrypt_2_4_20, libmcrypt_2_4_17, libmcrypt_2_4_16b, libmcrypt_2_4_16), modules/algorithms/cast-256.c (tags: libmcrypt_2_4_21, mcrypt_2_4_20, libmcrypt_2_4_17, libmcrypt_2_4_16b, libmcrypt_2_4_16), modules/algorithms/des.c (tags: libmcrypt_2_4_21, mcrypt_2_4_20, libmcrypt_2_4_17, libmcrypt_2_4_16b, libmcrypt_2_4_16), modules/algorithms/enigma.c (tags: libmcrypt_2_4_21, mcrypt_2_4_20, libmcrypt_2_4_17, libmcrypt_2_4_16b, libmcrypt_2_4_16), modules/algorithms/gost.c (tags: libmcrypt_2_4_21, mcrypt_2_4_20, libmcrypt_2_4_17, libmcrypt_2_4_16b, libmcrypt_2_4_16), modules/algorithms/loki97.c (tags: libmcrypt_2_4_21, mcrypt_2_4_20, libmcrypt_2_4_17, libmcrypt_2_4_16b, libmcrypt_2_4_16), modules/algorithms/panama.c (tags: libmcrypt_2_4_21, mcrypt_2_4_20, libmcrypt_2_4_17, libmcrypt_2_4_16b, libmcrypt_2_4_16), modules/algorithms/rc2.c (tags: libmcrypt_2_4_21, mcrypt_2_4_20, libmcrypt_2_4_17, libmcrypt_2_4_16b, libmcrypt_2_4_16), modules/algorithms/rijndael-128.c (tags: libmcrypt_2_4_21, mcrypt_2_4_20, libmcrypt_2_4_17, libmcrypt_2_4_16b, libmcrypt_2_4_16), modules/algorithms/rijndael-192.c (tags: libmcrypt_2_4_21, mcrypt_2_4_20, libmcrypt_2_4_17, libmcrypt_2_4_16b, libmcrypt_2_4_16), modules/algorithms/rijndael-256.c (tags: libmcrypt_2_4_21, mcrypt_2_4_20, libmcrypt_2_4_17, libmcrypt_2_4_16b, libmcrypt_2_4_16), modules/algorithms/safer128.c (tags: libmcrypt_2_4_21, mcrypt_2_4_20, libmcrypt_2_4_17, libmcrypt_2_4_16b, libmcrypt_2_4_16), modules/algorithms/safer64.c (tags: libmcrypt_2_4_21, mcrypt_2_4_20, libmcrypt_2_4_17, libmcrypt_2_4_16b, libmcrypt_2_4_16), modules/algorithms/saferplus.c (tags: libmcrypt_2_4_21, mcrypt_2_4_20, libmcrypt_2_4_17, libmcrypt_2_4_16b, libmcrypt_2_4_16), modules/algorithms/serpent.c (tags: libmcrypt_2_4_21, mcrypt_2_4_20, libmcrypt_2_4_17, libmcrypt_2_4_16b, libmcrypt_2_4_16), modules/algorithms/tripledes.c (tags: libmcrypt_2_4_21, mcrypt_2_4_20, libmcrypt_2_4_17, libmcrypt_2_4_16b, libmcrypt_2_4_16), modules/algorithms/twofish.c (tags: libmcrypt_2_4_21, mcrypt_2_4_20, libmcrypt_2_4_17, libmcrypt_2_4_16b, libmcrypt_2_4_16), modules/algorithms/wake.c (tags: libmcrypt_2_4_21, mcrypt_2_4_20, libmcrypt_2_4_17, libmcrypt_2_4_16b, libmcrypt_2_4_16), modules/algorithms/xtea.c (tags: libmcrypt_2_4_21, mcrypt_2_4_20, libmcrypt_2_4_17, libmcrypt_2_4_16b, libmcrypt_2_4_16), modules/modes/cbc.c (tags: libmcrypt_2_4_21, mcrypt_2_4_20, libmcrypt_2_4_17, libmcrypt_2_4_16b, libmcrypt_2_4_16): Changed mcrypt_enc_get_supported_key_sizes() behaviour. (does not return allocated value) 2001-09-08 18:08 nmav * NEWS, TODO (tags: libmcrypt_2_4_21, mcrypt_2_4_20, libmcrypt_2_4_17, libmcrypt_2_4_16b, libmcrypt_2_4_16), doc/mcrypt.3, lib/mcrypt.h.in, lib/mcrypt_extra.c, lib/mcrypt_internal.h, lib/mcrypt_modules.c, modules/algorithms/3-way.c, modules/algorithms/arcfour.c, modules/algorithms/blowfish-compat.c, modules/algorithms/blowfish.c, modules/algorithms/cast-128.c, modules/algorithms/cast-256.c, modules/algorithms/des.c, modules/algorithms/enigma.c, modules/algorithms/gost.c, modules/algorithms/loki97.c, modules/algorithms/panama.c, modules/algorithms/rc2.c, modules/algorithms/rijndael-128.c, modules/algorithms/rijndael-192.c, modules/algorithms/rijndael-256.c, modules/algorithms/safer128.c, modules/algorithms/safer64.c, modules/algorithms/saferplus.c, modules/algorithms/serpent.c, modules/algorithms/tripledes.c, modules/algorithms/twofish.c, modules/algorithms/wake.c, modules/algorithms/xtea.c, modules/modes/Makefile.am (tags: libmcrypt_2_4_21, mcrypt_2_4_20, libmcrypt_2_4_17, libmcrypt_2_4_16b, libmcrypt_2_4_16), modules/modes/cbc.c, modules/modes/cfb.c (tags: libmcrypt_2_4_21, mcrypt_2_4_20, libmcrypt_2_4_17, libmcrypt_2_4_16b, libmcrypt_2_4_16), modules/modes/ecb.c (tags: libmcrypt_2_4_21, mcrypt_2_4_20, libmcrypt_2_4_17, libmcrypt_2_4_16b, libmcrypt_2_4_16), modules/modes/ncfb.c (tags: libmcrypt_2_4_21, mcrypt_2_4_20, libmcrypt_2_4_17, libmcrypt_2_4_16b, libmcrypt_2_4_16), modules/modes/ncfb.h (tags: libmcrypt_2_5_6, libmcrypt_2_5_5, libmcrypt_2_5_5rc1, libmcrypt_2_5_4, libmcrypt_2_5_3, libmcrypt_2_5_2, libmcrypt_2_5_0, libmcrypt_2_4_21, mcrypt_2_4_20, libmcrypt_2_4_17, libmcrypt_2_4_16b, libmcrypt_2_4_16), modules/modes/nofb.c (tags: libmcrypt_2_4_21, mcrypt_2_4_20, libmcrypt_2_4_17, libmcrypt_2_4_16b, libmcrypt_2_4_16), modules/modes/ofb.c (tags: libmcrypt_2_4_16b, libmcrypt_2_4_16), modules/modes/stream.c (tags: libmcrypt_2_4_21, mcrypt_2_4_20, libmcrypt_2_4_17, libmcrypt_2_4_16b, libmcrypt_2_4_16): added ncfb mode. Changed get_*_name() functions semantics. Other cleanups. 2001-09-07 12:50 nmav * src/: Makefile.am (tags: libmcrypt_2_4_21, mcrypt_2_4_20), cipher_test.c (utags: libmcrypt_2_4_16, libmcrypt_2_4_17, libmcrypt_2_4_16b): removed dmalloc stuff 2001-09-07 12:34 nmav * configure.in (tags: libmcrypt_2_4_16b, libmcrypt_2_4_16), lib/Makefile.am (tags: libmcrypt_2_4_21, mcrypt_2_4_20, libmcrypt_2_4_17, libmcrypt_2_4_16b, libmcrypt_2_4_16), lib/libdefs.h (tags: mcrypt_2_4_20, libmcrypt_2_4_17, libmcrypt_2_4_16b, libmcrypt_2_4_16), lib/libmcrypt.m4 (tags: libmcrypt_2_4_17, libmcrypt_2_4_16b, libmcrypt_2_4_16), lib/mcrypt_extra.c, lib/mcrypt_modules.c, src/Makefile.am, src/cipher_test.c: Finished option which allows for static linking modules into the library 2001-09-02 20:11 nmav * NEWS, configure.in, lib/Makefile.am, lib/libdefs.h, lib/mcrypt_extra.c, lib/mcrypt_internal.h, lib/mcrypt_modules.c, modules/algorithms/3-way.c, modules/algorithms/Makefile.am (tags: libmcrypt_2_4_21, mcrypt_2_4_20, libmcrypt_2_4_17, libmcrypt_2_4_16b, libmcrypt_2_4_16), modules/algorithms/arcfour.c, modules/algorithms/blowfish-compat.c, modules/algorithms/blowfish.c, modules/algorithms/cast-128.c, modules/algorithms/cast-256.c, modules/algorithms/des.c, modules/algorithms/enigma.c, modules/algorithms/gost.c, modules/algorithms/loki97.c, modules/algorithms/panama.c, modules/algorithms/rc2.c, modules/algorithms/rijndael-128.c, modules/algorithms/rijndael-192.c, modules/algorithms/rijndael-256.c, modules/algorithms/safer128.c, modules/algorithms/safer64.c, modules/algorithms/saferplus.c, modules/algorithms/serpent.c, modules/algorithms/tripledes.c, modules/algorithms/twofish.c, modules/algorithms/wake.c, modules/algorithms/xtea.c, modules/modes/Makefile.am, modules/modes/cbc.c, modules/modes/cfb.c, modules/modes/ecb.c, modules/modes/nofb.c, modules/modes/ofb.c, modules/modes/stream.c: added option to include modules into the library 2001-09-02 14:49 nmav * configure.in, lib/Makefile.am, lib/libdefs.h, lib/libmcrypt.m4, lib/libmcrypt.sym (tags: libmcrypt_2_5_0, libmcrypt_2_4_21, mcrypt_2_4_20, libmcrypt_2_4_17, libmcrypt_2_4_16b, libmcrypt_2_4_16), lib/mcrypt_extra.c, lib/mcrypt_internal.h, lib/mcrypt_modules.c: changed to support dlpreopening 2001-07-11 07:34 nmav * NEWS, lib/libdefs.h, lib/mcrypt_extra.c: corrected bug for solaris 'readdir_r' 2001-06-09 10:12 nmav * acconfig.h (tags: libmcrypt_2_4_21, mcrypt_2_4_20, libmcrypt_2_4_17, libmcrypt_2_4_16b, libmcrypt_2_4_16), configure.in, lib/mcrypt_threads.c (tags: libmcrypt_2_4_16b, libmcrypt_2_4_16) (utags: libmcrypt_2_4_15): added check for lt_dlmutex_register in the installed version of libltdl. If it is not found then that capability is disabled. 2001-06-04 14:42 nmav * acconfig.h, configure.in, doc/README.config (tags: libmcrypt_2_5_6, libmcrypt_2_5_5, libmcrypt_2_5_5rc1, libmcrypt_2_5_4, libmcrypt_2_5_3, libmcrypt_2_5_2, libmcrypt_2_5_0, libmcrypt_2_4_21, mcrypt_2_4_20, libmcrypt_2_4_17, libmcrypt_2_4_16b, libmcrypt_2_4_16, libmcrypt_2_4_15), lib/libmcrypt.m4 (tags: libmcrypt_2_4_15), lib/mcrypt_threads.c: several fixes 2001-05-28 08:31 nmav * modules/algorithms/panama.c (tags: libmcrypt_2_4_15): fixed free() call 2001-05-21 15:10 nmav * lib/Makefile.am, modules/algorithms/Makefile.am, modules/modes/Makefile.am (utags: libmcrypt_2_4_15): removed -no-undefined parameters 2001-05-21 09:34 nmav * modules/algorithms/panama.c: removed mx* calls. 2001-05-18 17:11 nmav * src/Makefile.am (tags: libmcrypt_2_4_15): fixed wrong library linking 2001-05-18 16:59 nmav * src/cipher_test.c (tags: libmcrypt_2_4_15, mcrypt_2_4_13): removed dmalloc.h 2001-05-18 10:54 nmav * NEWS (tags: mcrypt_2_4_13), configure.in (tags: mcrypt_2_4_13), doc/Makefile.am (tags: libmcrypt_2_5_6, libmcrypt_2_5_5, libmcrypt_2_5_5rc1, libmcrypt_2_5_4, libmcrypt_2_5_3, libmcrypt_2_5_2, libmcrypt_2_5_0, libmcrypt_2_4_21, mcrypt_2_4_20, libmcrypt_2_4_17, libmcrypt_2_4_16b, libmcrypt_2_4_16, libmcrypt_2_4_15, mcrypt_2_4_13), doc/README.threads, doc/mcrypt.3 (tags: libmcrypt_2_4_15, mcrypt_2_4_13), lib/mcrypt_extra.c (tags: libmcrypt_2_4_15, mcrypt_2_4_13), lib/mcrypt_modules.c (tags: libmcrypt_2_4_15, mcrypt_2_4_13), lib/mcrypt_threads.c (tags: mcrypt_2_4_13), lib/xmemory.h (tags: libmcrypt_2_5_6, libmcrypt_2_5_5, libmcrypt_2_5_5rc1, libmcrypt_2_5_4, libmcrypt_2_5_3, libmcrypt_2_5_2, libmcrypt_2_5_0, libmcrypt_2_4_21, mcrypt_2_4_20, libmcrypt_2_4_17, libmcrypt_2_4_16b, libmcrypt_2_4_16, libmcrypt_2_4_15, mcrypt_2_4_13), modules/algorithms/Makefile.am (tags: mcrypt_2_4_13), modules/modes/Makefile.am (tags: mcrypt_2_4_13): updated api. 2001-05-18 07:08 nmav * NEWS, configure.in, lib/mcrypt_internal.h (tags: libmcrypt_2_4_15, mcrypt_2_4_13): updated behaviour when an older libltdl is found in the system 2001-05-17 20:54 nmav * NEWS, TODO (tags: libmcrypt_2_4_15, mcrypt_2_4_13, mcrypt_2_4_12), configure.in, doc/README.config (tags: mcrypt_2_4_13, mcrypt_2_4_12), doc/mcrypt.3, lib/Makefile.am, lib/libdefs.h (tags: libmcrypt_2_4_15, mcrypt_2_4_13, mcrypt_2_4_12), lib/libmcrypt.m4 (tags: mcrypt_2_4_13, mcrypt_2_4_12), lib/libmcrypt.sym (tags: libmcrypt_2_4_15, mcrypt_2_4_13, mcrypt_2_4_12), lib/mcrypt.h.in (tags: libmcrypt_2_4_15, mcrypt_2_4_13, mcrypt_2_4_12), modules/algorithms/panama.h (tags: libmcrypt_2_5_0, libmcrypt_2_4_21, mcrypt_2_4_20, libmcrypt_2_4_17, libmcrypt_2_4_16b, libmcrypt_2_4_16, libmcrypt_2_4_15, mcrypt_2_4_13, mcrypt_2_4_12), src/Makefile.am (tags: mcrypt_2_4_13, mcrypt_2_4_12): minor updates 2001-05-17 19:09 nmav * modules/algorithms/: des.c, rijndael-128.c, rijndael-192.c, rijndael-256.c, safer.h (tags: libmcrypt_2_5_6, libmcrypt_2_5_5, libmcrypt_2_5_5rc1, libmcrypt_2_5_4, libmcrypt_2_5_3, libmcrypt_2_5_2, libmcrypt_2_5_0, libmcrypt_2_4_21, mcrypt_2_4_20, libmcrypt_2_4_17, libmcrypt_2_4_16b, libmcrypt_2_4_16), safer128.c, safer64.c, tripledes.c (utags: mcrypt_2_4_13, libmcrypt_2_4_15, mcrypt_2_4_12): declared all non exported functions as static. 2001-05-17 18:59 nmav * modules/algorithms/panama.c (tags: mcrypt_2_4_13, mcrypt_2_4_12): all non exported functions were declared as static 2001-05-17 18:58 nmav * acinclude.m4 (tags: libmcrypt_2_5_6, libmcrypt_2_5_5, libmcrypt_2_5_5rc1, libmcrypt_2_5_4, libmcrypt_2_5_3, libmcrypt_2_5_2, libmcrypt_2_5_0, libmcrypt_2_4_21, mcrypt_2_4_20, libmcrypt_2_4_17, libmcrypt_2_4_16b, libmcrypt_2_4_16, libmcrypt_2_4_15, mcrypt_2_4_13, mcrypt_2_4_12), buildconf (tags: libmcrypt_2_5_0, libmcrypt_2_4_21, mcrypt_2_4_20, libmcrypt_2_4_17, libmcrypt_2_4_16b, libmcrypt_2_4_16, libmcrypt_2_4_15, mcrypt_2_4_13, mcrypt_2_4_12), configure.in, lib/Makefile.am, lib/libdefs.h, lib/mcrypt.c (tags: libmcrypt_2_4_15, mcrypt_2_4_13, mcrypt_2_4_12), lib/mcrypt_extra.c (tags: mcrypt_2_4_12), lib/mcrypt_modules.c (tags: mcrypt_2_4_12), lib/xmemory.c (tags: libmcrypt_2_5_6, libmcrypt_2_5_5, libmcrypt_2_5_5rc1, libmcrypt_2_5_4, libmcrypt_2_5_3, libmcrypt_2_5_2, libmcrypt_2_5_0, libmcrypt_2_4_21, mcrypt_2_4_20, libmcrypt_2_4_17, libmcrypt_2_4_16b, libmcrypt_2_4_16, libmcrypt_2_4_15, mcrypt_2_4_13, mcrypt_2_4_12), lib/xmemory.h (tags: mcrypt_2_4_12), src/Makefile.am, src/cipher_test.c (tags: mcrypt_2_4_12): fixes to work with the new libltdl 2001-05-16 17:54 nmav * modules/algorithms/: 3-way.c (tags: libmcrypt_2_4_15, mcrypt_2_4_13, mcrypt_2_4_12), arcfour.c, blowfish-compat.c (tags: libmcrypt_2_4_15, mcrypt_2_4_13, mcrypt_2_4_12), blowfish.c (tags: libmcrypt_2_4_15, mcrypt_2_4_13, mcrypt_2_4_12), cast-128.c (tags: libmcrypt_2_4_15, mcrypt_2_4_13, mcrypt_2_4_12), cast-256.c (tags: libmcrypt_2_4_15, mcrypt_2_4_13, mcrypt_2_4_12), des.c, enigma.c, gost.c (tags: libmcrypt_2_4_15, mcrypt_2_4_13, mcrypt_2_4_12), loki97.c, panama.c, rc2.c (tags: libmcrypt_2_4_15, mcrypt_2_4_13, mcrypt_2_4_12), rijndael-128.c, rijndael-192.c, rijndael-256.c, safer128.c, safer64.c, saferplus.c (tags: libmcrypt_2_4_15, mcrypt_2_4_13, mcrypt_2_4_12), serpent.c (tags: libmcrypt_2_4_15, mcrypt_2_4_13, mcrypt_2_4_12), tripledes.c, twofish.c (tags: libmcrypt_2_4_15, mcrypt_2_4_13, mcrypt_2_4_12), wake.c, xtea.c (tags: libmcrypt_2_4_15, mcrypt_2_4_13, mcrypt_2_4_12): fixed memory leaks 2001-05-16 12:27 nmav * doc/Makefile.am (tags: mcrypt_2_4_12), doc/README.threads (tags: mcrypt_2_4_12), lib/mcrypt_extra.c, lib/mcrypt_internal.h (tags: mcrypt_2_4_12), lib/mcrypt_modules.c: updated for new libltdl 2001-05-16 08:55 nmav * configure.in, doc/README.config, lib/Makefile.am, lib/libmcrypt-config.in (tags: libmcrypt_2_5_6, libmcrypt_2_5_5, libmcrypt_2_5_5rc1, libmcrypt_2_5_4, libmcrypt_2_5_3, libmcrypt_2_5_2, libmcrypt_2_5_0, libmcrypt_2_4_21, mcrypt_2_4_20, libmcrypt_2_4_17, libmcrypt_2_4_16b, libmcrypt_2_4_16, libmcrypt_2_4_15, mcrypt_2_4_13, mcrypt_2_4_12), lib/libmcrypt.m4, lib/libmcrypt.sym, lib/mcrypt.h, lib/mcrypt.h.in, lib/mcrypt_extra.c: added libmcrypt-config so programs that use libmcrypt can be configured easier 2001-05-14 15:35 nmav * README (tags: libmcrypt_2_4_21, mcrypt_2_4_20, libmcrypt_2_4_17, libmcrypt_2_4_16b, libmcrypt_2_4_16, libmcrypt_2_4_15, mcrypt_2_4_13, mcrypt_2_4_12), doc/mcrypt.3, src/cipher_test.c: updated list information 2001-04-25 09:49 nmav * modules/algorithms/enigma.c: replaced fprintf with printf 2001-03-29 18:31 nmav * lib/mcrypt_modules.c: corrected memory leak at mcrypt_module_close(). 2001-03-29 17:55 nmav * lib/mcrypt_modules.c: corrected return value of mcrypt_dlopen_ext(). 2001-03-18 09:01 nmav * NEWS, configure.in: moving to a new bugfix release 2001-03-11 20:30 nmav * modules/algorithms/: blowfish-compat.c, blowfish.c: fixed some problems with ltdl 2001-02-04 08:35 nmav * lib/win32_comp.h (tags: libmcrypt_2_5_6, libmcrypt_2_5_5, libmcrypt_2_5_5rc1, libmcrypt_2_5_4, libmcrypt_2_5_3, libmcrypt_2_5_2, libmcrypt_2_5_0, libmcrypt_2_4_21, mcrypt_2_4_20, libmcrypt_2_4_17, libmcrypt_2_4_16b, libmcrypt_2_4_16, libmcrypt_2_4_15, mcrypt_2_4_13, mcrypt_2_4_12): fixed different declarations 2001-02-01 10:36 nmav * lib/mcrypt.h (tags: mcrypt_2_4_9): various cleanups in mcrypt.h 2001-02-01 10:34 nmav * configure.in (tags: mcrypt_2_4_9), doc/mcrypt.3 (tags: mcrypt_2_4_9), lib/mcrypt.c (tags: mcrypt_2_4_9), lib/mcrypt.h, modules/algorithms/panama.c (tags: mcrypt_2_4_9), modules/modes/cbc.c (tags: libmcrypt_2_4_15, mcrypt_2_4_13, mcrypt_2_4_12, mcrypt_2_4_9), modules/modes/cfb.c (tags: libmcrypt_2_4_15, mcrypt_2_4_13, mcrypt_2_4_12, mcrypt_2_4_9), modules/modes/ecb.c (tags: libmcrypt_2_4_15, mcrypt_2_4_13, mcrypt_2_4_12, mcrypt_2_4_9), modules/modes/nofb.c (tags: libmcrypt_2_4_15, mcrypt_2_4_13, mcrypt_2_4_12, mcrypt_2_4_9), modules/modes/ofb.c (tags: libmcrypt_2_4_15, mcrypt_2_4_13, mcrypt_2_4_12, mcrypt_2_4_9), modules/modes/stream.c (tags: libmcrypt_2_4_15, mcrypt_2_4_13, mcrypt_2_4_12, mcrypt_2_4_9): null IV is now handled 2001-01-23 17:45 nmav * NEWS (tags: mcrypt_2_4_9), doc/mcrypt.3, lib/libmcrypt.sym (tags: mcrypt_2_4_9), lib/mcrypt.c: added mcrypt_generic_deinit() function 2001-01-23 17:27 nmav * modules/algorithms/arcfour.c (tags: mcrypt_2_4_9): corrected a so embarrasing bug in the IV of arcfour 2001-01-23 12:09 nmav * modules/algorithms/rijndael-192.c (tags: mcrypt_2_4_9, libmcrypt-2_4_9-beta): corrected return value 2001-01-23 12:01 nmav * modules/algorithms/wake.c: updated version number 2001-01-23 11:51 nmav * ChangeLog (tags: libmcrypt-2_4_9-beta), NEWS, README (tags: mcrypt_2_4_9, libmcrypt-2_4_9-beta), THANKS (tags: libmcrypt_2_4_15, mcrypt_2_4_13, mcrypt_2_4_12, mcrypt_2_4_9, libmcrypt-2_4_9-beta), TODO (tags: mcrypt_2_4_9, libmcrypt-2_4_9-beta), doc/README.key (tags: libmcrypt_2_5_6, libmcrypt_2_5_5, libmcrypt_2_5_5rc1, libmcrypt_2_5_4, libmcrypt_2_5_3, libmcrypt_2_5_2, libmcrypt_2_5_0, libmcrypt_2_4_21, mcrypt_2_4_20, libmcrypt_2_4_17, libmcrypt_2_4_16b, libmcrypt_2_4_16, libmcrypt_2_4_15, mcrypt_2_4_13, mcrypt_2_4_12, mcrypt_2_4_9, libmcrypt-2_4_9-beta), doc/mcrypt.3 (tags: libmcrypt-2_4_9-beta), lib/libdefs.h (tags: mcrypt_2_4_9, libmcrypt-2_4_9-beta), lib/mcrypt.c (tags: libmcrypt-2_4_9-beta), lib/mcrypt_extra.c (tags: mcrypt_2_4_9, libmcrypt-2_4_9-beta), lib/mcrypt_internal.h (tags: libmcrypt-2_4_9-beta), lib/mcrypt_modules.c (tags: libmcrypt-2_4_9-beta), lib/xmemory.c (tags: mcrypt_2_4_9, libmcrypt-2_4_9-beta), modules/algorithms/Makefile.am (tags: mcrypt_2_4_12, mcrypt_2_4_9, libmcrypt-2_4_9-beta), modules/algorithms/blowfish-compat.c (tags: mcrypt_2_4_9, libmcrypt-2_4_9-beta), modules/algorithms/blowfish.c (tags: mcrypt_2_4_9, libmcrypt-2_4_9-beta), modules/algorithms/cast-128.c (tags: mcrypt_2_4_9, libmcrypt-2_4_9-beta), modules/algorithms/cast-256.c (tags: mcrypt_2_4_9, libmcrypt-2_4_9-beta), modules/algorithms/loki97.c (tags: mcrypt_2_4_9, libmcrypt-2_4_9-beta), modules/algorithms/panama.c (tags: libmcrypt-2_4_9-beta), modules/algorithms/panama.h (tags: mcrypt_2_4_9, libmcrypt-2_4_9-beta), modules/algorithms/rc2.c (tags: mcrypt_2_4_9, libmcrypt-2_4_9-beta), modules/algorithms/rijndael-128.c (tags: mcrypt_2_4_9, libmcrypt-2_4_9-beta), modules/algorithms/rijndael-192.c, modules/algorithms/rijndael-256.c (tags: mcrypt_2_4_9, libmcrypt-2_4_9-beta), modules/algorithms/rijndael.h (tags: libmcrypt_2_5_6, libmcrypt_2_5_5, libmcrypt_2_5_5rc1, libmcrypt_2_5_4, libmcrypt_2_5_3, libmcrypt_2_5_2, libmcrypt_2_5_0, libmcrypt_2_4_21, mcrypt_2_4_20, libmcrypt_2_4_17, libmcrypt_2_4_16b, libmcrypt_2_4_16, libmcrypt_2_4_15, mcrypt_2_4_13, mcrypt_2_4_12, mcrypt_2_4_9, libmcrypt-2_4_9-beta), modules/algorithms/saferplus.c (tags: mcrypt_2_4_9, libmcrypt-2_4_9-beta), modules/algorithms/saferplus.h (tags: libmcrypt_2_5_6, libmcrypt_2_5_5, libmcrypt_2_5_5rc1, libmcrypt_2_5_4, libmcrypt_2_5_3, libmcrypt_2_5_2, libmcrypt_2_5_0, libmcrypt_2_4_21, mcrypt_2_4_20, libmcrypt_2_4_17, libmcrypt_2_4_16b, libmcrypt_2_4_16, libmcrypt_2_4_15, mcrypt_2_4_13, mcrypt_2_4_12, mcrypt_2_4_9, libmcrypt-2_4_9-beta), modules/algorithms/twofish.c (tags: mcrypt_2_4_9, libmcrypt-2_4_9-beta), modules/algorithms/twofish.h (tags: libmcrypt_2_5_6, libmcrypt_2_5_5, libmcrypt_2_5_5rc1, libmcrypt_2_5_4, libmcrypt_2_5_3, libmcrypt_2_5_2, libmcrypt_2_5_0, libmcrypt_2_4_21, mcrypt_2_4_20, libmcrypt_2_4_17, libmcrypt_2_4_16b, libmcrypt_2_4_16, libmcrypt_2_4_15, mcrypt_2_4_13, mcrypt_2_4_12, mcrypt_2_4_9, libmcrypt-2_4_9-beta), modules/algorithms/xtea.c (tags: mcrypt_2_4_9, libmcrypt-2_4_9-beta), modules/modes/cfb.c (tags: libmcrypt-2_4_9-beta), modules/modes/nofb.c (tags: libmcrypt-2_4_9-beta), modules/modes/ofb.c (tags: libmcrypt-2_4_9-beta), src/cipher_test.c (tags: mcrypt_2_4_9, libmcrypt-2_4_9-beta): cleanups and word8 was replaced by byte (hopefully) 2001-01-23 11:50 nmav * lib/libmcrypt.sym: added missing function 2001-01-23 11:49 nmav * modules/algorithms/: arcfour-iv.c, arcfour-iv.h: removed it! 2001-01-23 11:49 nmav * modules/modes/stream.c (tags: libmcrypt-2_4_9-beta): corrected bug that caused wake to fail 2001-01-23 11:47 nmav * modules/algorithms/: wake.c, wake.h (tags: libmcrypt_2_5_6, libmcrypt_2_5_5, libmcrypt_2_5_5rc1, libmcrypt_2_5_4, libmcrypt_2_5_3, libmcrypt_2_5_2, libmcrypt_2_5_0, libmcrypt_2_4_21, mcrypt_2_4_20, libmcrypt_2_4_17, libmcrypt_2_4_16b, libmcrypt_2_4_16, libmcrypt_2_4_15, mcrypt_2_4_13, mcrypt_2_4_12, mcrypt_2_4_9, libmcrypt-2_4_9-beta): cleanups and added iv support 2001-01-23 11:46 nmav * lib/: mcrypt_internal.h, mcrypt_modules.c (utags: mcrypt_2_4_9): removed unneeded functions 2001-01-23 11:44 nmav * modules/algorithms/: arcfour.c, arcfour.h (tags: libmcrypt_2_5_6, libmcrypt_2_5_5, libmcrypt_2_5_5rc1, libmcrypt_2_5_4, libmcrypt_2_5_3, libmcrypt_2_5_2, libmcrypt_2_5_0, libmcrypt_2_4_21, mcrypt_2_4_20, libmcrypt_2_4_17, libmcrypt_2_4_16b, libmcrypt_2_4_16, libmcrypt_2_4_15, mcrypt_2_4_13, mcrypt_2_4_12, mcrypt_2_4_9) (utags: libmcrypt-2_4_9-beta): arcfour now uses IV 2001-01-23 11:38 nmav * modules/algorithms/panama.c: added a check in malloc for bigendian machines 2001-01-22 22:21 nmav * src/cipher_test.c: updated test. Now fails if algorithm test fail 2001-01-22 22:19 nmav * modules/modes/: cbc.c (tags: libmcrypt-2_4_9-beta), ecb.c (tags: libmcrypt-2_4_9-beta), nofb.c: updated internal structure 2001-01-22 22:18 nmav * NEWS, configure.in (tags: libmcrypt-2_4_9-beta): updated for release 2001-01-22 22:16 nmav * doc/mcrypt.3: updated documentation 2001-01-22 22:15 nmav * lib/: mcrypt.c, mcrypt.h (tags: libmcrypt-2_4_9-beta), mcrypt_internal.h, mcrypt_modules.c: changed some internal functions to get return value of mcrypt_set_key 2001-01-22 22:13 nmav * modules/algorithms/: 3-way.c (tags: mcrypt_2_4_9, libmcrypt-2_4_9-beta), arcfour-iv.c, blowfish-compat.c, blowfish.c, cast-128.c, cast-256.c, des.c (tags: mcrypt_2_4_9, libmcrypt-2_4_9-beta), enigma.c (tags: mcrypt_2_4_9, libmcrypt-2_4_9-beta), gost.c (tags: mcrypt_2_4_9, libmcrypt-2_4_9-beta), loki97.c, panama.c, rc2.c, rijndael-128.c, rijndael-192.c, rijndael-256.c, safer128.c (tags: mcrypt_2_4_9, libmcrypt-2_4_9-beta), safer64.c (tags: mcrypt_2_4_9, libmcrypt-2_4_9-beta), saferplus.c, serpent.c (tags: mcrypt_2_4_9, libmcrypt-2_4_9-beta), tripledes.c (tags: mcrypt_2_4_9, libmcrypt-2_4_9-beta), twofish.c, xtea.c: return value of mcrypt_set_key is an int 2001-01-22 22:10 nmav * modules/algorithms/wake.c: there is something wrong with that algorithm 2001-01-22 22:09 nmav * modules/algorithms/Makefile.am: removed wake 2001-01-22 22:09 nmav * modules/algorithms/arcfour.c: speedups in the algorithm 2001-01-22 19:28 nmav * lib/mcrypt_modules.c: fixed warning 2001-01-18 00:26 nmav * modules/algorithms/Makefile.am: removed wake - it fails - i have no time to find why 2001-01-17 19:37 nmav * lib/mcrypt.c: added check for longer key sizes 2001-01-17 19:33 nmav * ChangeLog, NEWS, lib/mcrypt.c: mcrypt_generic_init() no longer fails if smaller key sizes are used. Pads with zeros. 2001-01-12 11:51 nmav * lib/mcrypt_extra.c: fixed mcrypt_readdir(). Bugs pointed out by Jonathan Woolmington 2001-01-09 00:10 nmav * README: removed unneeded options 2001-01-08 18:44 nmav * modules/algorithms/blowfish-compat.c: more fixes 2001-01-08 18:37 nmav * modules/algorithms/blowfish.c: fixes in blowfish 2001-01-07 13:30 nmav * NEWS, modules/algorithms/blowfish.c: some speedup in the algorithm 2001-01-07 13:27 nmav * modules/algorithms/blowfish.c: more fixes in the blowfish 2001-01-07 13:22 nmav * NEWS, configure.in, modules/algorithms/Makefile.am, modules/algorithms/blowfish.c: fixed blowfish in order to be compatible with other implementations 2001-01-03 23:33 nmav * NEWS, configure.in: more rijndael-256 fixes 2001-01-03 23:22 nmav * configure.in, modules/algorithms/rijndael-256.c: corrected bug in rijndael-256. Reported by Sami Farin safari@iki.fi 2000-12-15 12:11 nmav * lib/libdefs.h: a change for openbsd 2000-11-08 23:25 nmav * modules/algorithms/blowfish.c: corrected bug which made blowfish not to function properly. Thanks goes to Andrew Skalski 2000-11-03 22:59 nmav * lib/mcrypt_modules.c: some strange (very strange) fix 2000-10-25 18:43 nmav * NEWS, doc/mcrypt.3, lib/mcrypt.c: added mcrypt_strerror() 2000-10-20 14:44 nmav * configure.in, lib/libdefs.h, lib/win32_comp.h (tags: mcrypt_2_4_9, libmcrypt-2_4_9-beta): Changes for win32 2000-10-19 20:55 nmav * .cvsignore, doc/.cvsignore, lib/.cvsignore, modules/.cvsignore, modules/algorithms/.cvsignore, modules/modes/.cvsignore, src/.cvsignore (utags: mcrypt_2_4_20, mcrypt_2_4_9, libmcrypt_2_4_16, mcrypt_2_4_13, libmcrypt_2_4_16b, libmcrypt_2_5_0, libmcrypt_2_5_3, libmcrypt_2_5_5rc1, libmcrypt_2_5_5, libmcrypt_2_5_6, libmcrypt_2_4_17, libmcrypt_2_5_2, libmcrypt_2_4_15, mcrypt_2_4_12, libmcrypt_2_4_21, libmcrypt-2_4_9-beta, libmcrypt_2_5_4): added cvsignore files 2000-10-19 18:03 nmav * configure.in: some fixes(?) 2000-10-19 17:51 nmav * modules/modes/Makefile.in: what was that? 2000-10-19 17:50 nmav * configure.in, lib/Makefile.am (tags: mcrypt_2_4_9, libmcrypt-2_4_9-beta), lib/mcrypt_modules.c, lib/win32_comp.h, modules/algorithms/Makefile.am, modules/modes/Makefile.am (tags: mcrypt_2_4_12, mcrypt_2_4_9, libmcrypt-2_4_9-beta), modules/modes/Makefile.in: Added things needed for libmcrypt to be compiled as a DLL under windows 2000-10-12 21:06 nmav * acconfig.h (tags: mcrypt_2_4_13, mcrypt_2_4_12, mcrypt_2_4_9, libmcrypt-2_4_9-beta), configure.in, lib/Makefile.am, lib/libdefs.h, lib/mcrypt.c, lib/mcrypt_extra.c, lib/mcrypt_modules.c, lib/swap.c (tags: libmcrypt_2_5_6, libmcrypt_2_5_5, libmcrypt_2_5_5rc1, libmcrypt_2_5_4, libmcrypt_2_5_3, libmcrypt_2_5_2, libmcrypt_2_5_0, libmcrypt_2_4_21, mcrypt_2_4_20, libmcrypt_2_4_17, libmcrypt_2_4_16b, libmcrypt_2_4_16, libmcrypt_2_4_15, mcrypt_2_4_13, mcrypt_2_4_12, mcrypt_2_4_9, libmcrypt-2_4_9-beta), lib/win32_comp.c (tags: libmcrypt_2_5_5, libmcrypt_2_5_5rc1, libmcrypt_2_5_4, libmcrypt_2_5_3, libmcrypt_2_5_2, libmcrypt_2_5_0, libmcrypt_2_4_21, mcrypt_2_4_20, libmcrypt_2_4_17, libmcrypt_2_4_16b, libmcrypt_2_4_16, libmcrypt_2_4_15, mcrypt_2_4_13, mcrypt_2_4_12, mcrypt_2_4_9, libmcrypt-2_4_9-beta), lib/win32_comp.h, modules/algorithms/3-way.c, modules/algorithms/arcfour-iv.c, modules/algorithms/arcfour.c, modules/algorithms/blowfish.c, modules/algorithms/cast-128.c, modules/algorithms/cast-256.c, modules/algorithms/des.c, modules/algorithms/enigma.c, modules/algorithms/gost.c, modules/algorithms/loki97.c, modules/algorithms/panama.c, modules/algorithms/rc2.c, modules/algorithms/rijndael-128.c, modules/algorithms/rijndael-192.c, modules/algorithms/rijndael-256.c, modules/algorithms/safer128.c, modules/algorithms/safer64.c, modules/algorithms/saferplus.c, modules/algorithms/serpent.c, modules/algorithms/tripledes.c, modules/algorithms/twofish.c, modules/algorithms/wake.c, modules/algorithms/xtea.c: Added defines and some function emulation needed in WIN32. Thanks goes to Dimitris Souflis (dsouflis@altera.gr) 2000-10-10 11:54 nmav * doc/mcrypt.3: updated documentation 2000-10-07 18:34 nmav * doc/mcrypt.3: included algorithm description in the documentation 2000-10-07 18:26 nmav * configure.in, lib/libdefs.h, lib/mcrypt_modules.h (tags: libmcrypt_2_4_21, mcrypt_2_4_20, libmcrypt_2_4_17, libmcrypt_2_4_16b, libmcrypt_2_4_16, libmcrypt_2_4_15, mcrypt_2_4_13, mcrypt_2_4_12, mcrypt_2_4_9, libmcrypt-2_4_9-beta), modules/algorithms/3-way.c, modules/algorithms/blowfish.c, modules/algorithms/cast-256.c, modules/algorithms/des.c, modules/algorithms/gost.c, modules/algorithms/loki97.c, modules/algorithms/panama.c, modules/algorithms/rc2.c, modules/algorithms/rijndael-128.c, modules/algorithms/serpent.c, modules/algorithms/tripledes.c, modules/algorithms/twofish.c, modules/algorithms/wake.c, modules/algorithms/xtea.c: added support for local swap functions (if available) 2000-10-02 17:47 nmav * modules/algorithms/arcfour.c: arcfour algorithm bugfixes 2000-10-02 17:43 nmav * modules/algorithms/: arcfour.c, arcfour.h: arcfour implementation was changed 2000-09-18 09:42 nmav * NEWS, configure.in, doc/mcrypt.3, lib/libdefs.h, lib/mcrypt_extra.c, lib/mcrypt_modules.c: updates in the -ldl option. Bugfixes. 2000-09-17 22:10 nmav * ChangeLog, acconfig.h, configure.in, lib/libdefs.h, lib/libmcrypt.sym (tags: libmcrypt-2_4_9-beta), lib/mcrypt_extra.c, lib/mcrypt_modules.c, modules/modes/Makefile.in, src/cipher_test.c: bugfixes and some minor improvements disable-libltdl mode. 2000-09-16 02:01 nmav * lib/libdefs.h, lib/mcrypt.h, lib/mcrypt_extra.c, lib/mcrypt_internal.h, lib/mcrypt_modules.c, modules/algorithms/3-way.c, modules/algorithms/arcfour-iv.c, modules/algorithms/arcfour.c, modules/algorithms/blowfish.c, modules/algorithms/cast-128.c, modules/algorithms/cast-256.c, modules/algorithms/des.c, modules/algorithms/enigma.c, modules/algorithms/gost.c, modules/algorithms/loki97.c, modules/algorithms/panama.c, modules/algorithms/rc2.c, modules/algorithms/rijndael-128.c, modules/algorithms/rijndael-192.c, modules/algorithms/rijndael-256.c, modules/algorithms/safer128.c, modules/algorithms/safer64.c, modules/algorithms/saferplus.c, modules/algorithms/serpent.c, modules/algorithms/tripledes.c, modules/algorithms/twofish.c, modules/algorithms/wake.c, modules/algorithms/xtea.c, modules/modes/cbc.c, modules/modes/cfb.c, modules/modes/ecb.c, modules/modes/nofb.c, modules/modes/ofb.c, modules/modes/stream.c: Added support for -ldl (does not work)... and some other fixes 2000-09-04 13:02 nmav * lib/mcrypt.c, modules/modes/Makefile.in: minor changes 2000-09-04 12:56 nmav * doc/mcrypt.3: updated and corrected documentation. 2000-08-04 14:59 nmav * buildconf, modules/algorithms/blowfish.c: speedups in the blowfish algorithm. 2000-07-28 07:41 nmav * modules/algorithms/rc2.c: Removed all references to assert(). 2000-06-12 14:52 nmav * modules/algorithms/panama.c: removed some c++ style comments 2000-05-22 13:07 nmav * AUTHORS, ChangeLog, COPYING, KNOWN-BUGS, INSTALL, Makefile.am, NEWS, README, THANKS, TODO, acconfig.h, buildconf, changelog-update.sh, configure.in, doc/Makefile.am, doc/README.key, doc/README.xtea, doc/example.c, doc/mcrypt.3, lib/Makefile.am, lib/bzero.c, lib/bzero.h, lib/libdefs.h, lib/mcrypt.c, lib/mcrypt.h, lib/mcrypt_extra.c, lib/mcrypt_modules.h, lib/swap.c, lib/xmemory.c, lib/xmemory.h, lib/libmcrypt.sym, lib/mcrypt_internal.h, lib/mcrypt_modules.c, modules/Makefile.am, modules/algorithms/3-way.c, modules/algorithms/3-way.h, modules/algorithms/Makefile.am, modules/algorithms/blowfish.c, modules/algorithms/blowfish.h, modules/algorithms/cast-128.c, modules/algorithms/cast-128.h, modules/algorithms/cast-128_sboxes.h, modules/algorithms/cast-256.c, modules/algorithms/cast-256.h, modules/algorithms/des.c, modules/algorithms/des.h, modules/algorithms/enigma.c, modules/algorithms/enigma.h, modules/algorithms/gost.c, modules/algorithms/arcfour-iv.c, modules/algorithms/loki97.c, modules/algorithms/loki97.h, modules/algorithms/safer.h, modules/algorithms/arcfour-iv.h, modules/algorithms/rc2.c, modules/algorithms/rc2.h, modules/algorithms/rijndael-128.c, modules/algorithms/rijndael-192.c, modules/algorithms/rijndael-256.c, modules/algorithms/safer128.c, modules/algorithms/safer64.c, modules/algorithms/saferplus.c, modules/algorithms/saferplus.h, modules/algorithms/serpent.c, modules/algorithms/serpent.h, modules/algorithms/tripledes.c, modules/algorithms/tripledes.h, modules/algorithms/rijndael.h, modules/algorithms/twofish.c, modules/algorithms/twofish.h, modules/algorithms/wake.c, modules/algorithms/wake.h, modules/algorithms/xtea.c, modules/algorithms/arcfour.c, modules/algorithms/arcfour.h, modules/algorithms/panama.c, modules/algorithms/panama.h, modules/algorithms/xtea.h, modules/modes/Makefile.am, modules/modes/Makefile.in, modules/modes/cbc.c, modules/modes/cbc.h, modules/modes/cfb.c, modules/modes/cfb.h, modules/modes/ecb.c, modules/modes/ecb.h, modules/modes/nofb.c, modules/modes/nofb.h, modules/modes/ofb.c, modules/modes/ofb.h, modules/modes/stream.c, modules/modes/stream.h, src/Makefile.am, src/cipher_test.c, src/key_test.c, src/mode_test.c: Initial revision NEWS000064400000030015152525757150005260 0ustar00March 08 2003: (version 2.5.7) - The mcrypt_symb.c file is generated only when needed. This should fix some problems in systems with incompatible sed. January 19 2003: (version 2.5.6) - Fixes in win32 detection and DLL building. - Fixes for solaris (a symbol was not exported) - Corrected bug which made algorithm symbols to be inserted twice in symbol table. - panama algorithm was removed December 22 2002: (version 2.5.5) - Better win32 detection and DLL building. - Changed some variables names in gost.c to allow compiling with gcc and K6 optimizations. - Some buffer overrun checks on input. Patches and suggestions by Ilia A. - Made the default behaviour to include all algorithms into the main library, instead of using dynamic modules. Dynamic loading is disabled by default. The --enable-dynamic-loading flag can be used in the configure script, to get the old behaviour. - Some fixes in ECB mode. August 16 2002: (version 2.5.3) - The const keyword is now used in the exported functions - Corrected problem in libltdl's configure script June 22 2002: (version 2.5.2) - Fixed bug in the returned IV size of ARCFOUR - Fixed bug in mcrypt_readdir() which prevented the test programs to work. May 30 2002: (version 2.5.1) - Corrected the license. COPYING.LIB (LGPL) is now included instead of COPYING (GPL) Mar 09th 2002: (version 2.5.0) - Several corrections in stream and block cipher modes. - Added --disable-dynamic-loading configure option - The IV modifications in Arcfour and Wake have been disabled by default. - Added CTR mode for block ciphers. - Fixes in nCFB and nOFB modes. - Added mcrypt_enc_get_state() function. - Added test for nCFB, CFB, nOFB and CTR with AES Feb 14th 2002: - nOFB and nCFB modes can now encrypt and decrypt plaintext of size less than block size. Feb 1st 2002: (version 2.4.22) - Corrected nasty bug in init code Jan 31 2002: (version 2.4.21) - Corrected problems in Makefiles - Minor bug fixes Jan 24th 2002: (version 2.4.20) - Corrected bug in mcrypt_module_open() Dec 15th 2001: (version 2.4.19) - Cleanups in the code. Nov 9th 2001: (version 2.4.18) - Fixed memory leak Sep 24th 2001: (version 2.4.17) - Corrected bug in mcrypt_module_get_supported_key_size() - Removed unneeded strdup declaration. - Corrected bug in ofb mode (reported by Phillip Oleson) - Corrected some bugs in configure.in (patch by Phillip Oleson) Sep 8th 2001: (version 2.4.16) - Added option to include algorithms and modes into the library (making possible a static library) eg. './configure --with-included-algos="rijndael-128 twofish cbc ecb"' will add rijndael, twofish with cbc and ecb into the library - Added nCFB mode (experimental) - Changed mcrypt_strerror() return value to const. Jul 12th 2001: - Corrected readdir_r() behavior in Solaris (Patch by Andrew Libby ) June 9th 2001: (version 2.4.15) - Check if the installed libltdl includes lt_dlmutex_register() - Fixes in libmcrypt-config script May 18th 2001: (version 2.4.13) - Corrects behaviour when an older libltdl is found in the system. - Updated mcrypt_mutex_register() May 17th 2001: (version 2.4.12) - Updated the libltdl library included - Several fixes in modules - Added scripts to allow easier and faster library version detection April 30th 2001: (version 2.4.11) - Corrected memory leaks in mcrypt_module_close() March 18th 2001: (version 2.4.10) - Corrected bugs in blowfish and blowfish-compat January 23th 2001: (version 2.4.9-beta) - Due to an endianness handling problem Blowfish algorithm was not compatible with other implementations. Now it has been corrected. If you want to access the old algorithm used use the "blowfish-compat" module. - Fixes in mcrypt_list_algorithms() for some systems. Bugs pointed out by Jonathan Woolmington - Fixes in stream mode. - mcrypt_generic_init() no longer fails if smaller key is used. It uses the most appropriate key size of the algorithm and pads with zeros. - Fixes in wake algorithm (and support for IV). - IV is now used in arcfour (arcfour-iv is now longer used). Speedups in Arcfour. - mcrypt_generic_deinit() function added. January 1st 2001: (version 2.4.8) - Corrected bug in rijndael-256 (reported by: Sami Farin ) This makes the algorithm incompatible with previous versions. October 20th 2000: (version 2.4.6) - Compiles under win32 using cygwin (with -mno-cygwin) - Added mcrypt_strerror() September 18th 2000: (version 2.4.5) - Updates in the documentation - Libmcrypt can now be used without libltdl (in systems where libdl is present) - Added the mcrypt_enc_set_state() function. - Speedups in the blowfish algorithm May 12th, 2000: (version 2.4.4) - Added Panama algorithm April 3rd, 2000: (version 2.4.2) - Added missing symbols. April 2nd, 2000: (version 2.4.1) - Bugfixes - Internal changes in mode modules - Changes in the documentation March 19th, 2000: (version 2.4.0) - Corrected bugs in the extra algorithms. - Libmcrypt is now thread safe without need for posix thread locks. - Libmcrypt is no longer compatible with 2.2 or 2.3 version. - Speedups in the library. - The crypt algorithm has changed. In order for it's output to be compatible with the unix crypt output, the key must be generated using crypt(3). This was made in order to remove the key transformation, which was included in the algorithm. - The crypt algorithm was renamed to enigma. - Changed many function's names in order to minimize namespace polution. View the manpage for more information. March 4th, 2000: (version 2.3.4) - Improved POSIX Threads detection by Sascha Schumann - Arcfour was renamed to arcfour-iv. The arcfour algorithm now does not support iv (as the original algorithm does). - Modes for block algorithms are not limited any more to a 256 bit block size. - Mcrypt 2.2 compatibility functions were added. - mcrypt_get_algo_key_size(), mcrypt_get_algo_block_size() functions were added. February 28th, 2000: (version 2.3.3) - Some dlsyms were cached causing a 50% increase in speed. February 27th, 2000: - A slightly modified version of libmcrypt 2.2.4 was released in order for mcrypt 2.5.0 to be able to compile against that series of libmcrypt. February 22, 2000: - mcrypt_is_block_algorithm_mode(), mcrypt_is_block_mode(), mcrypt_is_block_algorithm(), functions were added. - Bugfixes in the mcrypt_module_self_test(). February 8th, 2000: - Keygen functionality was added to the cvs version of libmhash. Libmcrypt seems to compile fine. January 21st, 2000: - Locks were added to libltdl calls so libmcrypt is still thread safe. January 20th, 2000: (version 2.3.0) - Tried to include libltdl. Not succesful yet. It compiles but it does not work. - keygen functionality was removed. It will be added to libmhash http://schumann.cx/mhash January 13th, 2000: - Changed the sha-1 algorithm implementation - mcrypt_get_iv_size now calls the specified mode, not the algorithm - arcfour was added. December 12th, 1999: - Included patches by Steve Underwood, to allow an arbitary number of streams of encryption. - Thread locking was changed, in order to allow multiple encryption, and avoid dead locks. December 10th, 1999: - Wake algorithm now supports IV. December 4th, 1999: - Changes in modules/modes in order to be thread-safe. December 2nd, 1999: - Bug fixes in the panama and xtea algorithms. - The version of the module now can be checked at run-time (check mcrypt.h) November 30th, 1999: - Corrections in the panama algorithm, in order to work fine in big-endian machines. November 29th, 1999: - encrypt() function crypt.c was renamed to __encrypt() in order to compile in some systems. - version number is included in the modules. - mcrypt_list_algorithms(), mcrypt_list_modes() and mcrypt_list_keygen() now check if the file is an mcrypt module (has the _mcrypt_xxx_version function). November 28th, 1999: - MARS was added (as a separate module) November 26th, 1999: - mcrypt_perror(int) function was added. It prints the text of an mcrypt error code. - Versioning has been changed. The release is no longer included in the library name. - Documentation was updated. November 25th, 1999: - crypt() and setkey() functions for enigma, were renamed to __crypt() and __setkey() to keep some libcs happy. - Corrected typo mistakes in twofish.c. - Patched wake.c to work in bigendian machines. - IDEA, RC4, RC6 which were non-free now are in a separate distribution. November 24th, 1999: - sdes key generation module was corrected. Now it works fine with des(1). November 20th, 1999: - Mcrypt is now modular. Modes, algorithm, and key generation modules, can be loaded dynamically. November 17th, 1999: - PANAMA stream algorithm was added (experimental). - WAKE stream algorithm was added (experimental). November 13th, 1999: - Blowfish algorithm was changed, it is now compatible with other implementations. - Accessing algorithms is now different. You do not specify TWOFISH_256, to access TWOFISH algorithm with 256 bit key, but TWOFISH with keylength of 32 bytes (==256 bits). This is more flexible than the previous API since you can access more keys. October 16th, 1999: - The new API is completed. - STREAM mode was added. - RC4 was added. October 15th, 1999: - libmcrypt is maintained using CVS. - Major changes in the internal of the library. Much cleaner code. October 14th, 1999: - Serpent was added. October 10th, 1999: - Bugfix in sha1. October 4th, 1999: - Bugfixes in rc2 and rc6. - rijndael implementation by Mike Scott was added. September 29th, 1999: - Minor bugfixes and optimization in the library. Now it uses less memory. September 20th, 1999: - Fixes in RC2, RC6 and SAFER+ code, so they work the same way in big-endian and little-endian machines. - Porting of SERPENT, MARS and RIJNDAEL is not ready, they do not work right in bigendian machines. - Bugfixes in the tests. Tests failed if one or two algorithms failed. September 19th, 1999 - SERPENT was added in 128,192,256 key modes. September 15th, 1999 - MARS and RIJNDAEL were added in 128,192,256 key modes. - RC6 was splitted to RC6_128, RC6_192 and RC6_256 (the old RC6 is equal to RC6_256) - RC2 was splitted to RC2_128, RC2_256 and RC2_1024 (the old RC2 is equal to RC2_1024) September 14th, 1999 - Twofish code was changed. Now it uses Dr Brian Gladman's code. - RC2 code was changed. June 26th, 1999 - buffer overflow fixed in lib/mcrypt.c. Pointed out by Don Sutherland June 23th, 1999 - RC2 code was cleared. - RC6 was changed according to the specification. It is RC6 32/20/32. RC6, SAFER+, LOKI97 and CAST-256 codes are actually Dr Brian Gladman's code a bit modified for mcrypt. - shared library version has changed (at last!) June 22th, 1999 - SAFER+, LOKI97 and CAST-256 Added. June 15th, 1999 - Version 2.2 - Changes in the xTEA algorithm. Some extra parenthesis made the algorithm differ from the specification. Pointed out by Lars Nordentoft . Read the README.xtea for more information. June 12th, 1999 - Version 2.1.1 - Changes in the documentation which was inaccurate. June 11th, 1999 - Version 2.1 - _mcrypt_ was placed as a prefix to all internal functions so they do not pollute namespace. May 29th, 1999 - test suites added - Blowfish was divided to blowfish-448, -256, -192, -128. - CBC can now accept IV - mlock and munlock is used before mallocing and freeing any memory, thus if such capabilities exist the library guarrantees that no password is written in the disk (as swap etc.) - gen_key_md5() was added and gen_key() was renamed to gen_key_sha1() gen_key() is still defined to be gen_keysha1(). May 26th, 1999 - Version 2.0 - Documentation was incorrect and innacurate. Corrected. - A #define WORDS_BIGENDIAN 0 was removed from acconfig.h, this was confusing all the library headers, and thus the library was useless. - nbit-ofb mode added. n is the blocksize of the algorithm. Still experimental. May 24th, 1999 - Version 1.93 - defined get_block_size to be mcrypt_get_block_size so php3.0.8 compiles ok May 17th, 1999 - Version 1.9 - gen_key() changed - libtool support (based on Sascha Schumann's patches) COPYING.LIB000064400000063650152525757150006234 0ustar00 GNU LESSER GENERAL PUBLIC LICENSE Version 2.1, February 1999 Copyright (C) 1991, 1999 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. [This is the first released version of the Lesser GPL. It also counts as the successor of the GNU Library Public License, version 2, hence the version number 2.1.] Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This license, the Lesser General Public License, applies to some specially designated software packages--typically libraries--of the Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better strategy to use in any particular case, based on the explanations below. When we speak of free software, we are referring to freedom of use, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish); that you receive source code or can get it if you want it; that you can change the software and use pieces of it in new free programs; and that you are informed that you can do these things. To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library or if you modify it. For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling it. And you must show them these terms so they know their rights. We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library. To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others. ^L Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license. Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs. When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library. We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances. For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License. In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system. Although the Lesser General Public License is Less protective of the users' freedom, it does ensure that the user of a program that is linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library. The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be combined with the library in order to run. ^L GNU LESSER GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License"). Each licensee is addressed as "you". A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library. Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does. 1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) The modified work must itself be a software library. b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful. (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices. ^L Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. This option is useful when you wish to copy part of the code of the Library into a program that is not a library. 4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange. If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. 5. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. ^L 6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if the user installs one, as long as the modified version is interface-compatible with the version that the work was made with. c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. ^L 7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things: a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above. b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. 8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it. 10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties with this License. ^L 11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 13. The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation. ^L 14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS ^L How to Apply These Terms to Your New Libraries If you develop a new library, and you want it to be of the greatest possible use to the public, we recommend making it free software that everyone can redistribute and change. You can do so by permitting redistribution under these terms (or, alternatively, under the terms of the ordinary General Public License). To apply these terms, attach the following notices to the library. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Also add information on how to contact you by electronic and paper mail. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the library, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the library `Frob' (a library for tweaking knobs) written by James Random Hacker. , 1 April 1990 Ty Coon, President of Vice That's all there is to it! include/mutils/mcrypt.h000064400000012214152531566440011206 0ustar00/* * Copyright (C) 1998,1999,2002 Nikos Mavroyanopoulos * * Encryption/decryption library. This library is free software; * you can redistribute it and/or modify it under the terms of the * GNU Library General Public License as published by the Free Software * Foundation; either version 2 of the License, or (at your option) any * later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #define MCRYPT_API_VERSION 20021217 #define LIBMCRYPT_VERSION "2.5.8" #ifdef __cplusplus extern "C" { #endif /* Definitions */ #define MCRYPT_FAILED 0x0 struct CRYPT_STREAM; typedef struct CRYPT_STREAM *MCRYPT; /* generic - high level functions. */ MCRYPT mcrypt_module_open(char *algorithm, char *a_directory, char *mode, char *m_directory); int mcrypt_module_close(MCRYPT td); /* returns 0 if the library has not been compiled with * dynamic module support. */ int mcrypt_module_support_dynamic(void); /* returns thread descriptor */ int mcrypt_generic_init(const MCRYPT td, void *key, int lenofkey, void *IV); int mcrypt_generic_deinit(const MCRYPT td); int mcrypt_generic_end(const MCRYPT td); int mdecrypt_generic(MCRYPT td, void *plaintext, int len); int mcrypt_generic(MCRYPT td, void *plaintext, int len); /* extra functions */ int mcrypt_enc_set_state(MCRYPT td, void *st, int size); int mcrypt_enc_get_state(MCRYPT td, void *st, int *size); /* only * for block algorithms and certain modes like cbc * ncfb etc. */ int (mcrypt_enc_self_test) (MCRYPT); int (mcrypt_enc_get_block_size) (MCRYPT); int (mcrypt_enc_get_iv_size) (MCRYPT); int (mcrypt_enc_get_key_size) (MCRYPT); /* If this is a block algorithm returns 1 */ int (mcrypt_enc_is_block_algorithm) (MCRYPT); /* If the mode operates in blocks returns 1 */ int (mcrypt_enc_is_block_mode) (MCRYPT); /* If the mode is for block algorithms it returns 1 */ int (mcrypt_enc_is_block_algorithm_mode) (MCRYPT td); int mcrypt_enc_mode_has_iv(MCRYPT td); /* Return a const string containing the name of the algorithm/mode */ char *(mcrypt_enc_get_algorithms_name) (MCRYPT td); char *(mcrypt_enc_get_modes_name) (MCRYPT td); int *mcrypt_enc_get_supported_key_sizes(MCRYPT td, int *len); char **mcrypt_list_algorithms(char *libdir, int *size); char **mcrypt_list_modes(char *libdir, int *size); /* Frees the memory allocated by the mcrypt_list_xxx() functions. */ void mcrypt_free_p(char **p, int size); void mcrypt_free(void *ptr); /* If mcrypt_xxx functions return an error code, and you supply this * to this function, it will print a human readable message */ void mcrypt_perror(int err); const char* mcrypt_strerror(int err); /* Self test for the specified algorithm */ int mcrypt_module_self_test(char *algorithm, char *a_directory); int mcrypt_module_is_block_algorithm(char *algorithm, char *a_directory); int mcrypt_module_is_block_algorithm_mode(char *mode, char *m_directory); int mcrypt_module_is_block_mode(char *mode, char *m_directory); int mcrypt_module_get_algo_key_size(char *algorithm, char *a_directory); int mcrypt_module_get_algo_block_size(char *algorithm, char *a_directory); int *mcrypt_module_get_algo_supported_key_sizes(char *algorithm, char *a_directory, int *len); /* Checks the version of the specified module */ int mcrypt_module_algorithm_version(char *algorithm, char *a_directory); int mcrypt_module_mode_version(char *mode, char *a_directory); /* for multithreaded applications: */ int mcrypt_mutex_register ( void (*mutex_lock)(void) , void (*mutex_unlock)(void), void (*set_error)(const char*), const char* (*get_error)(void)); const char * mcrypt_check_version( const char *); /* These definitions exist in order to ease the access to * mcrypt_module_init(). */ /* Algorithms */ #define MCRYPT_BLOWFISH "blowfish" #define MCRYPT_DES "des" #define MCRYPT_3DES "tripledes" #define MCRYPT_3WAY "threeway" #define MCRYPT_GOST "gost" #define MCRYPT_SAFER_SK64 "safer-sk64" #define MCRYPT_SAFER_SK128 "safer-sk128" #define MCRYPT_CAST_128 "cast-128" #define MCRYPT_XTEA "xtea" #define MCRYPT_RC2 "rc2" #define MCRYPT_TWOFISH "twofish" #define MCRYPT_CAST_256 "cast-256" #define MCRYPT_SAFERPLUS "saferplus" #define MCRYPT_LOKI97 "loki97" #define MCRYPT_SERPENT "serpent" #define MCRYPT_RIJNDAEL_128 "rijndael-128" #define MCRYPT_RIJNDAEL_192 "rijndael-192" #define MCRYPT_RIJNDAEL_256 "rijndael-256" #define MCRYPT_ENIGMA "enigma" #define MCRYPT_ARCFOUR "arcfour" #define MCRYPT_WAKE "wake" /* Modes */ #define MCRYPT_CBC "cbc" #define MCRYPT_ECB "ecb" #define MCRYPT_CFB "cfb" #define MCRYPT_OFB "ofb" #define MCRYPT_nOFB "nofb" #define MCRYPT_STREAM "stream" #ifdef __cplusplus } #endif include/mcrypt.h000064400000000122152531566440007664 0ustar00#if !defined(__MCRYPT_H) #define __MCRYPT_H #include #endif lib64/libmcrypt.so.4.4.8000075500000630130152531566440010527 0ustar00ELF> Q@)@8@44 ИИ"И", ""$$PtdJJJ QtdRtdИИ"И"00GNUw! ڝ@`bԀ#%0D`0\Gv q E@ ` E"#%&'(+,-/23457:;<=>?@A1祊wtMZ$BPM}qY>Ve1TJ)6]? AOkH]'00RswMI(蛑u񶉃NF6D<{W$%>;0Uu/Ayh#F3m c V, mF"U T' 0rO] Z* n] dC `q @\{ eO' bd& 0k& \L Z p U [&p `l `kCR s P[ n X Pbd hJ hJp sG l 0hJ V< 0c c gW o i  cCt R== Z/ kg Pm__gmon_start___ITM_deregisterTMCloneTable_ITM_registerTMCloneTable__cxa_finalize__ctype_b_locreaddir_rstrdupmcrypt_free_pmcrypt_list_algorithmsreallocmcrypt_list_modesmcrypt_check_versionstrcmpmcrypt_enc_get_key_sizemcrypt_generic_initmcrypt_enc_get_supported_key_sizesmemmovemcrypt_enc_get_iv_sizemcrypt_genericmdecrypt_genericmcrypt_generic_endmcrypt_module_closemcrypt_generic_deinitmcrypt_perrorstderrfwritemcrypt_strerrormcrypt_freememsetmlockmalloccallocmunlockstrlenstrncatstpcpystrcpymcrypt_enc_set_statemcrypt_enc_get_statemcrypt_enc_get_block_sizememcpymcrypt_enc_is_block_algorithmmcrypt_enc_get_algorithms_namemcrypt_enc_get_modes_namemcrypt_enc_is_block_modemcrypt_enc_mode_has_ivmcrypt_enc_is_block_algorithm_modemcrypt_module_openmcrypt_enc_self_testmcrypt_module_self_testmcrypt_module_algorithm_versionmcrypt_module_mode_versionmcrypt_module_is_block_algorithmmcrypt_module_is_block_algorithm_modemcrypt_module_is_block_modemcrypt_module_get_algo_block_sizemcrypt_module_get_algo_key_sizemcrypt_module_get_algo_supported_key_sizesmcrypt_module_support_dynamicmcrypt_mutex_registersprintfputsmemcmplibc.so.6libmcrypt.so.4GLIBC_2.3GLIBC_2.14GLIBC_2.2.5ii ui И"Qؘ"Q"""""s "("0t0"/8"`t@"IH"tP"]X"t`"mh"up"x"v""v""v"@"v""v"ș"vЙ"""v""pw""w""w "0("w0"A8"x@"TH"yP"eX"y`"`h"yp"x"y""y"}"y"""y"Ț"zК"2ؚ"z"L"{"`" {"p""" "("Ѐ0"8"@"H"P"X"`"h"p"""0""@"" "1"P"Eț"`Л"U؛"Ё"g"@"w"P""`""p "("0"8"@"P"X"`"h"@p"x""""/""@""S"P"dȜ"`М"8؜"p"`""""|"" "("0"8"P@"H"P"X"Ѝ`"h"p"x""$""5""" ""0"ȝ"@Н"M؝"P"""`"" "" "("P0"8"p@"H"@P"%X" `"6h"p"x"0"0"@"k"P"N"`""Ȟ"pО"؞"""""""" "Е "!("0"48"@"PH"P"xX" `"h"0p"x"@"N"W""t"P"""ȟ"П"؟""" "8"0"`"@""P "("`0"8"@"P"X"P`"h"p"x""""""6" "S"0"(Ƞ"@Р"Xؠ"P"q"`""@""" "("0"8"@" H"P"HX"`"ph"p"x""""""(""P""С"ء"""P""P"""" "(" 0"8"0@"H"@P" X"P`"h"`p"Hx""0"8""T"`"p""Ȣ"Т"pآ"""0""@"" ""P "8("`0"8"p@"`H"`P"`"h"pp"x"@" ""'""""""ȣ"У"أ""0""`""""E "L("0"g8"@"H"0 P"X"%`"h"%p"x"%""%""&"@"&"" &"hȤ")Ф"""*""1""`3""P5 "0("`50"X8"p5@"H"5P"X"5`"h"5p"x"5"8"8"""8" "`B")ȥ"@DХ"hإ"F""F""F""F""F "0("F0"`8"F@"H"IP"G`"Lh"Ip"ex"J"~"K""L""L""M"Ȧ" MЦ"ئ"M""0M" "@M""PM"H"O "0"p8"PS@"H"pRP"X"R`"h"pSp"x"S"@"S"h"S""S""S"ȧ"SЧ"(ا"V"""pY""]""_ "("p`0"X8"`@"0H"`P"LX"``"xh"`p"x"`"i"`""c"""0e"Ȩ"kШ"@ب"m"h"o""o""o""o "("p0"@8"p@"pH" pP"X"s`"p"x"s"""""""""ȩ"Щ"ة"Х"8""h"" """ "'0",8"@"EH"P"^X"p`"wh"p"x""""" ""0""@"Ȫ"PЪ"0ت""""" ""*" "G("@0"X8"P@"H"`P"X"p`"h"p"x""0""P"`"e"l"p"ȫ"Ы"ث""""x""""" "("ж0"8"@"8H"P"X" `"`h"p""" """*""B""Ȭ"Ь"[ج""w" ""0""@""P "("00"@"H"P"X"`"h"p" x""@""h" ""0""@"ȭ"PЭ"ح"`"8"pد"@"Я"""""" "("0"8"@"H"P" X" `" h" p" x""""8"+"" """9Ȱ"а"ذ"%""3"""=HH`"HtH5`"%`"@%`"h%`"h%`"h%`"h%`"h%`"h%`"h%`"hp%`"h`%`"h P%`"h @%z`"h 0%r`"h %j`"h %b`"h%Z`"h%R`"h%J`"h%B`"h%:`"h%2`"h%*`"h%"`"h%`"hp%`"h`% `"hP%`"h@%_"h0%_"h %_"hH=yt"Hrt"H9tH^"Ht H=It"H5Bt"H)HHH?HHtHm^"HtfD=t"u+UH=J^"Ht H=.G"9ds"]wATIUHSH00t6H1HTSHDNuA$x[]A\fHEDFt[1]A\ff.fUHSHHHt28.u-HxHiHt8.uHHHx[]MDH1[]ff.@HXJHT$Ht$HD$HD$Ht HxHXJfDATIUS~&FHHlf.H;H4H9u[L]A\#SHHPH H1H2 HHH=>t$Ht$Ht$Ht$Ht$Ht$Ht$Ht$Ht$He HPHt=Ht$Ht$Ht$Ht$Ht$Ht$Ht$Ht$Ht$H HPHP[Ht$Ht$Ht$Ht$Ht$Ht$Ht$Ht$Ht$H HPfD뺐AVAUIATE1USHD" Ht+HH+HCHuHu[L]A\A]A^f.1H~AELpHcHIHt-IcEHM44IcUII<HtAE|AE1ۅ~DIEHcA)E~*Au1H HA0HPH9uI>IvHH|$I6HD$IcVI>Mcͅ~'DR1K@H 0 HHI9uIcVI~LLJI;\$JCMHHHl$ L$,oH81[]A\A]A^A_fDIvHI6H|$HD$I>t$(1E DHA0HPH9uI~HLfAEI}A9GL$,DHc)9O8H u1HT$ fDH<@0<HxH9uHcHt$ Ic}HI}DIc܅A)HcE~*H At$1HT$ H<@0<HxH9uI}IuHMc IuHD$H|$AEIu~,HL$ x1J!DH 0 HHH9uAEI}Ht$ HcLIuHIuHD$H|$IuAL$1HT$ f.H<@0<HxH9uI}Ht$ HK'I}HcHt$ HH/AmfDAWAVIAUATUSH8Ht$ LD$LL$T$,D$AE1HcID$(IEAEI}AHcA)E~*At$1H fDHA0HPH9uI}IuHMcyIuH|$HD$I}IcULLVAEI}~%DXK&1 fDH 0 HHI9uIAD;|$CAGMHHH\$ L$,H81[]A\A]A^A_fIuHIuH|$HD$I}LHI}t$(1 DHA0HPH9uIAD;|$bDAFI>9YL$,AHcA)A9DOE=H At$1HT$ f.H<@0<HxH9uIcHt$ Ic~HI~EfD9d$,I>IvHcI6H|$HD$ЋD$,L|$ I~D)LHcII~At$1I H 0 HHH9uEfIvHchI6H|$HD$HcT$,L|$ I~HL@I6K1LH<@0<HxH9uD$,AFHc݅)HcЅ~+H u1HT$ @H<@0<HxH9uI>IvHHcI6H|$HD$I~H\$ IcVHHAFI6xH+1 fH 0 HHH9ueIvHLI6H|$HD$HH\$ I~H)I6M1H@H<@0<HxH9u IVIcHt$ HHEfff.@f.1ff.ff.Hpf.S|1f.AVIAUATUHSIcHGGDGHIHEHtKHIHEHt21MtHLLHLL[]A\A]A^@LH}ATIUHnSZHHcۉGH?HI|$HH[1]A\@GH;}&H WHH~HcPHpg1HÉ SHHsH;[jf.AWAVIAUATUHcSH8Ht$(LD$LL$T$$D$EE1HcID$ IEfAEI}AHcA)E~*At$1H fDHA0HPH9uI}IuHIuH|$HD$I}IuHlAEI}Mcԅ~ DXK1H 0 HHI9uIAD;|$KAGMHHH\$(\$$H81[]A\A]A^A_f.IuHIuH|$HD$I}IuHI}t$ 1 tHA0HPH9uIAD;|$ZDI>AFH9.L$$Hc)9OمH s1HT$( fDH<@0<HxH9uA^9\$$ I>IvHI6H|$HD$I6I~HT$$HD$(1MN)HcDBH4HA 0HAI9uAVIvH蟿I6H|$HD$I6I~H聿D$$I6HT$(H1 fDH<@0<HxH9uD$$AF<Hc݅)HcЅ~+H u1HT$(@H<@0<HxH9uIIvHHHcI6H|$HD$I6I~HѾAFI6HL$(x1H)fH 0 HHH9uIvH茾I6H|$HD$I6I~HnI6M1HT$( H<@0<HxH9u4AF!@ff.f.1ff.ff.H:kf.S|1f.AUIATUHSIcHHGDGHtIHEHt8H谽HEHt'1MtHLLbH[]A\A]DLxH}jG9|!HHHH1Hc1HATIUHSHcHHI<$HHؼ[1]A\ÐSHH?H{[f.AWHcAVLxIAUIATMUSHÍkH(HD$BHDLD$HD$DI}IuHT$VIuH|$AIEA01 HIUHxt@4H9uIEIIEB8L9t$uH(1[]A\A]A^A_1fAWHcAVLxIAUIATMUSHÍkH(HD$BHDLD$HD$DI}IuHT$膻IuH|$A1HIUHxt@4H9uIEIEB8IEA0IL9t$uH(1[]A\A]A^A_1ff.@1ff.ff.f.H+hf.FU1f.1ff.ff.f.1ff.fHLA1Hff.@HLT$1Hff.f.1ff.f1ff.fHOg1ff.f1W1f.ATD^LL UL{.SD'AˋO@EADDDEAԋGA 1A+HOwODB11ȋD1IˉA C AE+GA1ۋOHD)AAA3+G 1OLA A3 ȉA+@ GA1ˋOPD13AAŋGA+,1݋OT)ÉAAA3+D1D_OXADÉAAA C3 AIDC+ DBD_ˋO\1A1ADEB3IۉACAE+O`D1D_ A)ADAEACAD_$AD1+Od1AADAEGE3E+DA1ËG(OhD13AAA+Ol1ËG,)ʼnA@AA3+D1؃ D_0OpAADDA A3 ADEDA+ B D_41ˋOtA1ADEB3IEGE+OxA1ËG8D)ʼnA@AA3+1ËGEDAG4EFAE EIAH "EFAE F4AE A E1D|$EEDAG4EF AE EIAH "EF AE F48D$AE A A1B<EADAF<9G AE AAH6 "EF<:AE D 8AE A E1G|DDE 8A<9AA DIH "@<:D F 8AD D1AA<AVDv AUATUSGDH|!AȉAEB3+ 3VVOA3W‰D,D 3^D+A1DnWOD)AщAEB,3+ A1D>WO D‰DD3D+D E1D^ W0O D‰D D3D+D DD1‰VDG4O$T$A1ADAIBAAD3 BEB+D1^DG8O(A)ADAAAEFFD3D+ E1DDGW\EOLD‰D$D3D+D EE1Dv WpO`D‰AɋAEB3+ D1ʉVOdA3Wt‰IًBD3 +D1^WxOh)AщAEB,3+ AE1D>W|OlD‰DD3D+D E1D^ E܋D‰D D3D+D DD1‰VDA1ADAF,AA3 DEF+A1DnDE)ADAAAEFFD3D+ E1DDDՋEADAFAAEF3D+D E1D^ DEADAF AAEF3D+D A1DND1‰DDD3 D+E1DnD)AЉAEFDD3D+ A1DD‰3+ D1ۉ^ AދD‰AȋAEB1+ A1Dv D)AЉAEFD<D3D+ E1DD1‰DDD+D3 E1DFD‰D,D3D+D E1DND‰D$D3D+D DD1^ D)AӉAEFD<D3D+ E1DD1‰IӉD4FD3 D+E1DF‰D,D3D+D E1DN D‰D$D3D+D A1Df D)‰AAEFDD3D+ EE1D>D1‰D4DD+E1D E1DvD‰,3+ D1͉n<,D‰3+ A1Df 8(D)AЉAEFDD3D+ E1D4EӋ$1‰AɋAEB+3 A1DvD0 EADAF AAEF3D+D A1DND\D͋LEADAAFAEF3D+D DD1^ DXHE)ADAAAEFFD3D+ E1DDTDA1ADAFADA EF+D1A1D^P@‰D D3D+D A1DN|lD‰DD3D+D A1DF xhD)‰щɋ 3+ A1DtdD1‰DDD3 []A\D+A]E1A^D^p`D‰׉@ 3+ A1DNA_ff.fAWD>AVDv AUATUSp`DHլ!AȉAEB3+ 3VVdA3t‰D,D 3^D+A1DnxhD)AщAEB,3+ A1D>|lD‰DD3D+D E1D^ P@D‰D D3D+D DD1‰VDTDT$A1ADAIBAAD3 BEB+D1^DXHA)ADAAAEFFD3D+ E1DD\LEADAF4AAEF3D+D E1Dv D0E EADAAFAEF3DL$D+D E1DN4$D1IȉD,F3 D+A1Dn8(D)AЉAEFD<D3D+ E1D><E,D‰D$D3D+D EE1Dv D‰AɋAEB3+ D1ʉVA3‰IًBD3 +D1^)AщAEB,3+ AE1D> D‰DD3D+D E1D^ E܋D‰D D3D+D DD1‰VDA1ADAF,AA3 DEF+A1DnDE)ADAAAEFFD3D+ E1DDDՋEADAFAAEF3D+D E1D^ DEADAF AAEF3D+D A1DND1‰DDD3 D+E1DnD)AЉAEFDD3D+ A1DD‰3+ D1ۉ^ AދD‰AȋAEB1+ A1Dv D)AЉAEFD<D3D+ E1DD1‰DDD+D3 E1DFD‰D,D3D+D E1DND‰D$D3D+D DD1^ D)AӉAEFD<D3D+ E1DD1‰IӉD4FD3 D+E1DF‰D,D3D+D E1DNW|OlD‰D$D3D+D A1Df WxOhD)‰AAEFDD3D+ EE1D>WtOdD1‰D4DD+E1D E1DvWpO`D‰,3+ D1͉nW\OLD‰3+ A1Df WXOHD)AЉAEFDD3D+ E1DWTEӋOD1‰AɋAEB+3 A1DvDGPO@EADAF AAEF3D+D A1DNDG1DL$DDD\$<@ȉT$HHT$H|$(\$ D$LEHD$8T$D$1HL+PD$ +TL$)1҉D$ $+HD$+L $)H@D$$1LH+8D$+< $)1҉D$D$+0D$ +4L$)H(D$ D$1HL+ D$ +$L$)1҉D$ $+D$+ $)HD$0$1LH+D$+  $)1҉D$D$+D$ +L$)HD$ D$1HL+D$ +L$)1҉D$ $+D$+ $)HD$|$1LH+D$+ $)1҉D$D$+D$ +L$)HD$ "D$1HL+D$ +L$)1҉D$ $+D$+ $)HD$$1LH+D$+ $)1҉D$D$+D$ +L$)HD$ nD$1HL+D$ +L$)1҉D$ $+D$+ $)HD$$1LH+KxD$+C| $)1҉D$D$+KpD$ +CtL$)HShD$ D$1HL+K`D$ +CdL$)1҉D$ $+KXD$+C\ $)HSPD$~$1LH+KHD$+CL $)1҉D$D$+K@D$ +CDL$)HS8D$ 3D$1HL+K0D$ +C4L$)1҉D$ $+K(D$+C, $)HS D$$1LH+KD$+C $)1҉D$D$+KD$ +CL$)HSD$ D$1ɉ+D$ +CAU )AE$AED$AEH[]A\A]Df.f.f. f.HfHAW1AVAUATUSH1Hc)HHE1CD$ )B#I1qD9܅Du1L|$ HAHPL9u1 Hc)IHLd$ LL91@@1MH-|HLdHH\$2'(LLN4sHD$0HD$H fHAH1I:)HI9uHkHt$!HLLL'Ht$L_(H[]A\A]A^A_D"@4f4H f@1ƒI I 9rI L@1yHc(IH1Ld$ HL H&LLYHD$0HD$H=&HT$H1H='L&H=&Hh&@1W1f.AAAASAAAA@@H!@@;43HHH')H5!)HEtFEtAH5!EEɿBB4HHH')H5m!)Hc2t=Et8H5U!B HHH')H ,!)Hc2[f1fE]H5!EۿB4HHH')H5ֵ!)Hc2fAWDJIAVAUATUSHXҋ !DIHt$(T$A?|$AGECTIAA L$$L$AGIw 1ADDYDQHDDAR)@~yAR)@~yAR)DA@~@~RA)‰ADVR)NDAv1|$D\$ HT$0Ht$(f HA91 AL讐HT$H1H=>ؐL`H=>zH8@1W1f.HcAH H7yA1y?D1NjAЃ?A yD1AЃ?A yD1AЃ?A yD1AЃ?A yD1AЃ?A y D1ǃ?  1ʃ? @AW1L%AVAUATUSD1ҸHH tA9uT HH uHcL%1۾H LAALALcӍ<IME11AAEt 8EHcD*| DMIE uE|H@t%Љ ȉH HE,뙃H@It Dmf[]A\A]A^A_ÐUHH1SHE1LȆHGHɆHLJHH)HE1Ic1LLfDуD9uEtЃ HA HH@uAAuAHAu[]ff.HE1E1E1AWE1AVLwAUE1ATE1U1S1DHHƀH HD9D 8E D*DyD xE DbDyD xD @jDyD xD ZDyD xE DZDyD xE DRDyD xE DJI HA DBL9V[]A\A]A^A_ff.AWAVAUATUHSH1HHHHH5:!H!H5!H}H1HHHEHH)HExLT$HL)HHLHDžHHDž)HH׉HDžHDžxH)HT$IHH$9H=%HH HHI9uL\$L$E1AHt$PAL҃H= AMc1M)f.7~JHcL  7t(HHwكA  f.1ɸNtfH|Pt"ARLc)HcAC>HH0uIItHN4(AL\$H=~H$9LfDHHA HDHL9uL\$L$E1AALH=΄fDAMc1M)f.7~JHcL  7t(HHwكA  f.1ɸNtfH|Pt&ARLc)HcAC7HH0uIItH?N4(=L\$9H DAIPHDAIM9uL,$E1AAL aLHÃAIc1M!f7~JHcL  7t(HHwكA  f.1ɸH|fAH|Pt&ARLc)HcAA<HH0uIIt N$KHĘ1[]A\A]A^A_ATUHHSHHHƀHT$H%D\$ DT$1HHADAU1HKHD1ЉA?1HKHD1؉A)1HKHA1D1HK HA1D1HK(HA1D1HK0HA1D1HK8HA1D1HK@HA1D1HKHHA1D1HKPHA1DHKXHA11Du1HK`HA1Da1HKhHA1DM1HKpHA1D91HKxHEA1D"HHDAHHA1E1DHHA1DEHHA1DEHHA1DHHA1D}HHA1DcHHA1DIHHA1D/HHA1DHHA1DHHA1DHHA1DHHA1DHHA1DHHA1DyHHDA_HHA1E1DBHHA1D(HHA1DH HA1DH(HA1DH0HA1DH8HA1DH@HA1DHHHA1DrHPHA1DXHXHA1D>H`HA1D$HhHA1D HpHA1DHxHA1DHA1ADT$ ADL$Hƀ!t'H|$HZH[]A\ÐHEHD$fHD$HEH[]A\ff.ATUHHSHHHƀHT$HD\$ DT$HHxADAHpHD1ЉAHhHD1؉AH`HA1DHXHA1DHPHA1DHHHA1D~H@HA1DdH8HA1DJH0HA1D0H(HA1DH HA1DHHA1DHHA1DHHA1DHHEA1DHHDAwHHA1E1DZHHA1DE=HHA1DE HHA1DHHA1DHHA1DHHA1DHHA1DHHA1DHHA1DjHHA1DPHHA1D6HHA1DHHA1DHHA1DHKx1HDA1HKpHA1E1D1HKhHA1D1HK`HA1D1HKXHA1D1HKPHA1Dm1HKHHA1DY1HK@HA1DE1HK8HA1D11HK0HA1D1HK(HA1D HK HA11DHK1HA1DHK1HA1DHK1HA1D1HHA1DHA1ADT$ ADL$Hƀ!t'H|$H*H[]A\ÐHEHD$fHD$HEH[]A\ff.)f.f.f.f.HufHiuAW1AVAUATUSHA1Hcq}HH1D- )Ј+H1s9E~#AL$1Ll$ @HADHPH9u1 @,+H1191Hc>}HD$H(HD$0Ll$ IcHD$HLHf1C" 1L|$HމLhH{H\$LHE?L|$@AD$IL|$LLdDALH5)1II|M9uHt$H=sL|$Ht$L5{)LL5{DHL1HHh|L9uH|$L{H[]A\A]A^A_@@<f<Hِ@H1HILH|$H HH9rH4Ln@Ht$@H=rHt$uH\$Ht$HH=z%H=}(\zHT$H=(1H5rzH|$zHt$H=xr1[zY 1HH_mcrypt_algorithm_version2.5.8Unknown error. Key length is not legal. Memory allocation failed. Unknown mode. Unknown algorithm. Algorithm incompatible with this mode. ` @(8H_mcrypt_get_algo_iv_size_mcrypt_get_algorithms_name_mcrypt_get_modes_name_is_block_algorithm_mode_mcrypt_get_block_sizecbccbc_LTX__init_mcryptcbc_LTX__mcrypt_set_statecbc_LTX__mcrypt_get_statecbc_LTX__end_mcryptcbc_LTX__mcryptcbc_LTX__mdecryptcbc_LTX__has_ivcbc_LTX__is_block_modecbc_LTX__mcrypt_mode_get_sizecbc_LTX__mcrypt_mode_versioncfb_LTX__mcrypt_mode_get_sizectrctr_LTX__init_mcryptctr_LTX__mcrypt_set_statectr_LTX__mcrypt_get_statectr_LTX__end_mcryptctr_LTX__mcryptctr_LTX__mdecryptctr_LTX__has_ivctr_LTX__is_block_modectr_LTX__mcrypt_mode_get_sizectr_LTX__mcrypt_mode_versionecbecb_LTX__mcrypt_set_stateecb_LTX__mcrypt_get_stateecb_LTX__init_mcryptecb_LTX__end_mcryptecb_LTX__mcryptecb_LTX__mdecryptecb_LTX__has_ivecb_LTX__is_block_modeecb_LTX__mcrypt_mode_get_sizeecb_LTX__mcrypt_mode_versionncfbncfb_LTX__init_mcryptncfb_LTX__mcrypt_set_statencfb_LTX__mcrypt_get_statencfb_LTX__end_mcryptncfb_LTX__mcryptncfb_LTX__mdecryptncfb_LTX__has_ivncfb_LTX__is_block_modencfb_LTX__mcrypt_mode_versionnofbnofb_LTX__init_mcryptnofb_LTX__mcrypt_set_statenofb_LTX__mcrypt_get_statenofb_LTX__end_mcryptnofb_LTX__mcryptnofb_LTX__mdecryptnofb_LTX__has_ivnofb_LTX__is_block_modenofb_LTX__mcrypt_mode_versionofb_LTX__mcrypt_mode_get_sizestreamstream_LTX__init_mcryptstream_LTX__mcrypt_set_statestream_LTX__mcrypt_get_statestream_LTX__end_mcryptstream_LTX__mcryptstream_LTX__mdecryptstream_LTX__has_ivstream_LTX__is_block_modecast-128cast_128_LTX__mcrypt_set_keycast_128_LTX__mcrypt_encryptcast_128_LTX__mcrypt_decryptcast_128_LTX__mcrypt_get_sizegostgost_LTX__mcrypt_set_keygost_LTX__mcrypt_encryptgost_LTX__mcrypt_decryptgost_LTX__mcrypt_get_sizegost_LTX__is_block_algorithmgost_LTX__mcrypt_get_key_sizegost_LTX__mcrypt_self_testrijndael-128twofishtwofish_LTX__mcrypt_set_keytwofish_LTX__mcrypt_encrypttwofish_LTX__mcrypt_decrypttwofish_LTX__mcrypt_get_sizetwofish_LTX__mcrypt_self_testarcfourarcfour_LTX__mcrypt_set_keyarcfour_LTX__mcrypt_encryptarcfour_LTX__mcrypt_decryptarcfour_LTX__mcrypt_get_sizearcfour_LTX__mcrypt_self_testcast-256cast_256_LTX__mcrypt_set_keycast_256_LTX__mcrypt_encryptcast_256_LTX__mcrypt_decryptcast_256_LTX__mcrypt_get_sizeloki97loki97_LTX__mcrypt_set_keyloki97_LTX__mcrypt_encryptloki97_LTX__mcrypt_decryptloki97_LTX__mcrypt_get_sizeloki97_LTX__mcrypt_self_testrijndael-192saferplussaferplus_LTX__mcrypt_set_keysaferplus_LTX__mcrypt_encryptsaferplus_LTX__mcrypt_decryptwakewake_LTX__mcrypt_set_keywake_LTX__mcrypt_encryptwake_LTX__mcrypt_decryptwake_LTX__mcrypt_get_sizewake_LTX__is_block_algorithmwake_LTX__mcrypt_get_key_sizewake_LTX__mcrypt_self_testblowfish-compatdes_LTX__mcrypt_get_sizedes_LTX__is_block_algorithmdes_LTX__mcrypt_get_key_sizedes_LTX__mcrypt_self_testrijndael-256serpentserpent_LTX__mcrypt_set_keyserpent_LTX__mcrypt_encryptserpent_LTX__mcrypt_decryptserpent_LTX__mcrypt_get_sizeserpent_LTX__mcrypt_self_testxteaxtea_LTX__mcrypt_set_keyxtea_LTX__mcrypt_encryptxtea_LTX__mcrypt_decryptxtea_LTX__mcrypt_get_sizextea_LTX__is_block_algorithmxtea_LTX__mcrypt_get_key_sizextea_LTX__mcrypt_self_testblowfishblowfish_LTX__mcrypt_set_keyblowfish_LTX__mcrypt_encryptblowfish_LTX__mcrypt_decryptblowfish_LTX__mcrypt_get_sizeenigmaenigma_LTX__mcrypt_set_keyenigma_LTX__mcrypt_encryptenigma_LTX__mcrypt_decryptenigma_LTX__mcrypt_get_sizeenigma_LTX__mcrypt_self_testrc2rc2_LTX__mcrypt_set_keyrc2_LTX__mcrypt_encryptrc2_LTX__mcrypt_decryptrc2_LTX__mcrypt_get_sizerc2_LTX__is_block_algorithmrc2_LTX__mcrypt_get_key_sizerc2_LTX__mcrypt_self_testtripledestripledes_LTX__mcrypt_set_keytripledes_LTX__mcrypt_encrypttripledes_LTX__mcrypt_decryptcbc_LTX__is_block_algorithm_modecbc_LTX__mcrypt_get_modes_namecfb_LTX__is_block_algorithm_modecfb_LTX__mcrypt_get_modes_namectr_LTX__is_block_algorithm_modectr_LTX__mcrypt_get_modes_nameecb_LTX__is_block_algorithm_modeecb_LTX__mcrypt_get_modes_namencfb_LTX__is_block_algorithm_modencfb_LTX__mcrypt_get_modes_namencfb_LTX__mcrypt_mode_get_sizenofb_LTX__is_block_algorithm_modenofb_LTX__mcrypt_get_modes_namenofb_LTX__mcrypt_mode_get_sizeofb_LTX__is_block_algorithm_modeofb_LTX__mcrypt_get_modes_namestream_LTX__is_block_algorithm_modestream_LTX__mcrypt_get_modes_namestream_LTX__mcrypt_mode_get_sizestream_LTX__mcrypt_mode_versioncast_128_LTX__mcrypt_get_block_sizecast_128_LTX__is_block_algorithmcast_128_LTX__mcrypt_get_key_sizecast_128_LTX__mcrypt_get_supported_key_sizescast_128_LTX__mcrypt_get_algorithms_namecast_128_LTX__mcrypt_self_testcast_128_LTX__mcrypt_algorithm_versiongost_LTX__mcrypt_get_block_sizegost_LTX__mcrypt_get_supported_key_sizesgost_LTX__mcrypt_get_algorithms_namegost_LTX__mcrypt_algorithm_versionrijndael_128_LTX__mcrypt_set_keyrijndael_128_LTX__mcrypt_encryptrijndael_128_LTX__mcrypt_decryptrijndael_128_LTX__mcrypt_get_sizerijndael_128_LTX__mcrypt_get_block_sizerijndael_128_LTX__is_block_algorithmrijndael_128_LTX__mcrypt_get_key_sizerijndael_128_LTX__mcrypt_get_supported_key_sizesrijndael_128_LTX__mcrypt_get_algorithms_namerijndael_128_LTX__mcrypt_self_testrijndael_128_LTX__mcrypt_algorithm_versiontwofish_LTX__mcrypt_get_block_sizetwofish_LTX__is_block_algorithmtwofish_LTX__mcrypt_get_key_sizetwofish_LTX__mcrypt_get_supported_key_sizestwofish_LTX__mcrypt_get_algorithms_nametwofish_LTX__mcrypt_algorithm_versionarcfour_LTX__mcrypt_get_block_sizearcfour_LTX__is_block_algorithmarcfour_LTX__mcrypt_get_key_sizearcfour_LTX__mcrypt_get_algo_iv_sizearcfour_LTX__mcrypt_get_supported_key_sizesarcfour_LTX__mcrypt_get_algorithms_namearcfour_LTX__mcrypt_algorithm_versioncast_256_LTX__mcrypt_get_block_sizecast_256_LTX__is_block_algorithmcast_256_LTX__mcrypt_get_key_sizecast_256_LTX__mcrypt_get_supported_key_sizescast_256_LTX__mcrypt_get_algorithms_namecast_256_LTX__mcrypt_self_testcast_256_LTX__mcrypt_algorithm_versionloki97_LTX__mcrypt_get_block_sizeloki97_LTX__is_block_algorithmloki97_LTX__mcrypt_get_key_sizeloki97_LTX__mcrypt_get_supported_key_sizesloki97_LTX__mcrypt_get_algorithms_nameloki97_LTX__mcrypt_algorithm_versionrijndael_192_LTX__mcrypt_set_keyrijndael_192_LTX__mcrypt_encryptrijndael_192_LTX__mcrypt_decryptrijndael_192_LTX__mcrypt_get_sizerijndael_192_LTX__mcrypt_get_block_sizerijndael_192_LTX__is_block_algorithmrijndael_192_LTX__mcrypt_get_key_sizerijndael_192_LTX__mcrypt_get_supported_key_sizesrijndael_192_LTX__mcrypt_get_algorithms_namerijndael_192_LTX__mcrypt_self_testrijndael_192_LTX__mcrypt_algorithm_versionsaferplus_LTX__mcrypt_get_sizesaferplus_LTX__mcrypt_get_block_sizesaferplus_LTX__is_block_algorithmsaferplus_LTX__mcrypt_get_key_sizesaferplus_LTX__mcrypt_get_supported_key_sizessaferplus_LTX__mcrypt_get_algorithms_namesaferplus_LTX__mcrypt_self_testsaferplus_LTX__mcrypt_algorithm_versionwake_LTX__mcrypt_get_block_sizewake_LTX__mcrypt_get_algo_iv_sizewake_LTX__mcrypt_get_supported_key_sizeswake_LTX__mcrypt_get_algorithms_namewake_LTX__mcrypt_algorithm_versionblowfish_compat_LTX__mcrypt_set_keyblowfish_compat_LTX__mcrypt_encryptblowfish_compat_LTX__mcrypt_decryptblowfish_compat_LTX__mcrypt_get_sizeblowfish_compat_LTX__mcrypt_get_block_sizeblowfish_compat_LTX__is_block_algorithmblowfish_compat_LTX__mcrypt_get_key_sizeblowfish_compat_LTX__mcrypt_get_supported_key_sizesblowfish_compat_LTX__mcrypt_get_algorithms_nameblowfish_compat_LTX__mcrypt_self_testblowfish_compat_LTX__mcrypt_algorithm_versiondes_LTX__mcrypt_get_block_sizedes_LTX__mcrypt_get_supported_key_sizesdes_LTX__mcrypt_get_algorithms_namedes_LTX__mcrypt_algorithm_versionrijndael_256_LTX__mcrypt_set_keyrijndael_256_LTX__mcrypt_encryptrijndael_256_LTX__mcrypt_decryptrijndael_256_LTX__mcrypt_get_sizerijndael_256_LTX__mcrypt_get_block_sizerijndael_256_LTX__is_block_algorithmrijndael_256_LTX__mcrypt_get_key_sizerijndael_256_LTX__mcrypt_get_supported_key_sizesrijndael_256_LTX__mcrypt_get_algorithms_namerijndael_256_LTX__mcrypt_self_testrijndael_256_LTX__mcrypt_algorithm_versionserpent_LTX__mcrypt_get_block_sizeserpent_LTX__is_block_algorithmserpent_LTX__mcrypt_get_key_sizeserpent_LTX__mcrypt_get_supported_key_sizesserpent_LTX__mcrypt_get_algorithms_nameserpent_LTX__mcrypt_algorithm_versionxtea_LTX__mcrypt_get_block_sizextea_LTX__mcrypt_get_supported_key_sizesxtea_LTX__mcrypt_get_algorithms_namextea_LTX__mcrypt_algorithm_versionblowfish_LTX__mcrypt_get_block_sizeblowfish_LTX__is_block_algorithmblowfish_LTX__mcrypt_get_key_sizeblowfish_LTX__mcrypt_get_supported_key_sizesblowfish_LTX__mcrypt_get_algorithms_nameblowfish_LTX__mcrypt_self_testblowfish_LTX__mcrypt_algorithm_versionenigma_LTX__mcrypt_get_block_sizeenigma_LTX__is_block_algorithmenigma_LTX__mcrypt_get_key_sizeenigma_LTX__mcrypt_get_algo_iv_sizeenigma_LTX__mcrypt_get_supported_key_sizesenigma_LTX__mcrypt_get_algorithms_nameenigma_LTX__mcrypt_algorithm_versionrc2_LTX__mcrypt_get_block_sizerc2_LTX__mcrypt_get_supported_key_sizesrc2_LTX__mcrypt_get_algorithms_namerc2_LTX__mcrypt_algorithm_versiontripledes_LTX__mcrypt_get_sizetripledes_LTX__mcrypt_get_block_sizetripledes_LTX__is_block_algorithmtripledes_LTX__mcrypt_get_key_sizetripledes_LTX__mcrypt_get_supported_key_sizestripledes_LTX__mcrypt_get_algorithms_nametripledes_LTX__mcrypt_self_testtripledes_LTX__mcrypt_algorithm_versionCBCCTRECBnCFBnOFBSTREAMCAST-128%.2x434e25460c8c9525failed compatibilityExpected: %s Got: %s failed internally 0ݻ맕d5w$,ϩ/ tцB*v:-7ޚ, )p@ :$7ѴyN] h1 HZ޻Bf1畏?r 3uQB}\cmd!@ WS1zݨ]3CoFq"8ԚέiGb[UgfN G[oLĎnrWxzdD]Ջ` l_9 ]c2֋~ pIPӻߘ)* mS~H~X.t;/RG'~[!<8zvOB9`55'{ɸ6g {pqT3^-ZId, =4pBwbO&Ҹ$d%FN`7>͕xE_{ ۫v"{.1ן%$r_m L=mPO%os#(ĴyI%4aĘnzn|l6AT޾'VAJJ{` ,8I%vK$%Gv XY f 0NndQ& #Phꃢ@g+3-fVo*ɛ`( ')dMP˲,\26K_A !PNhذy\CPIMAC8wn\e0Rԋ@+>`xT7}02m-yyS"wuXȃoxkcZ\3]ùzv٣Byqj3ƚ`'PC=+mvN%ύHf6AN( aϩI=߹_d: }+p?PO+Zbbyj.H@,Z@"ғ-ES4n)olIIBr~V>olbfLTq*+9)XLVRf.S9v.i硦>iFt+LVvuOx39]O#2]2=&K/~~<O^?vf)o=E4ӷ+4grN=U"g`k8=ü0}8QcÐӝXyTGָaYwSW-XVcNx.F~eyUڑ0@5㶼P?!@=LXI6QpӱڍyKoqKl,gHL|3ەCh\SU2` ߝWc9^28aI37~^b<#NygCHKJf-ۄoH Ja)Yfc(` 0qt&@3/C~A^ l( ؒ0~of˜os*`ژ46K-%#= %IH6Jo8C@TzWOpA:Z„TU|5YŗZ:G:%Sj~=eI&TwQ[P]vlDȨ!帊iX`[ŗY)L;]J5ULkD$5鰽bעT/I18T(q)9H[/u ~tn,fy3jXDD1Zs"*ˁc8:$zi HIĀ@8HުL H_%A@N$A UeQr% 9jyMc@hV 틕Z Vqק)N-fcqw*7 5Wa"ɠBր[t!h!hl iwW~@PճMװx QV$AV ʔUWnྵa$ XK'aU{whkldMDfd~i/IO70j5,s@IvM;B(HDLns) _ɋ}oaOw.+rץ<}+FYYEEهTNoHm| ǥcs_DVj͈prͳ]ny` E`1©\1BN"r\,rN@%/N2g@#x\n܃"ukMxnXO DH?{vw#Vu*F_( +8=6 JRft;QZylu eX&hJpFS(l\v0k)h76*g$ k%ֿh,DUueI40" WIbuU~bڨv^FESGm {s{OJWdCQz(~c5_ yCdcdJ$_(͸O@C " 0 O7-{$MgQLq_-_d !S^>'_aB%rqK=;&o~~TLmDl߫I&Ǡ36~?Pa w8Pr.PwWFgOT3ɏ1 i5M\=fȦ[]oڑo/"F}F9mOCCN!и  ?X(>nH&p׋wt|% - y#;(8itb߷@!{7Ȋ@ YVvO@/{U MVi35'#WȯVeka^u˅nwU2?-ɿ[%;з$;mc fÀ(82 Tɪס2Zb,gTzuw11&o6F HjyZVLj~CRv/ t,t* M|k .TA5B=!&|,aRe1i%& !\1cr ^Iy p1 d>>̶Ոî 0rlqn/kءDVÈ9/ű1(x⤣2}o~X$Ū{s0a!-!)۳*)e\,0?Б\,ԩT _w:^VxV޾\!uQųåҶw#)Ei/z毲p[v F98/gsD)k)/Ifingӛ/~p%Q^$Slj>!DYܷ)eyCy9A+MWN )zkS< ~U3rŅ?~ @]%=`GK6DήPQH<p}}d^(O= &g.yr?U+HԼ?^!@WNFRWs3NɷdŸW1O g_?@k{C=K۵cUȗn-J(JqoCCl< _P/~׿PZG.Q>pX.0_|r *,]I鎸P'WIoyR}}Yr@EEt]>uOiVA#. '`vteyvvwHNma}/ 4H<0(Ow Vܒ M"7)}V'|@|硴f^aÝ <є`AFv\;x,WGl"}NC~8<=Q8d{h'فI]j~vh]9K9 ;#Im<Eub'z\aBΒ~Brrp }ȡ[(Ob<51)BSjO[}m(Ki\j#MŌ?,-ҖXRg[HJI \EkӉ7`:SRqDIK @sg4|~q6UO/Т`?mPьGnU?墼38Wg} =3{r3O̫]ňv{{uWBdBc+ri/n+_mazgaq%9̸L!gуb>ܷν8\ =Dmn`I:T`H'W+8$ ږ%Eh;}E `P/(b4 ٠m+1+dZ0RXBA\1>26F3S75 [ ~iC?9zaz UQry吝5rNcZպ60ę _}֡{/6Y DYD̃Aѱ* ;{ B[A%zzӤ0XޘN?wiy{$[Ĭ%5P_aT1bcKU !h]Yfsc=4·~!+g\ab906;Wd/`:5F- 'zy㠌l0^7%oo;j tE'4:NiOM>dY58EfCr3c%N? (Υ'R¦սTUdpfM w&ۄgC!`X0TroSUGڿ]bVhkʃ;n-Ӧ\= wL3{9+^S_aodC x^c"&gI{ڷ"%-U^7rRyL H[k0 cq/޹ S E!5(T<)c)A|-nRPf4,0P1`sY&D\dwR3A+ٺ|o!PaH?ek«dv&4{^% ;MM1$~I,;jx`]sVz\/1Co0TyXR^/2zj0>՚1B°I #ڸ(0q_`ɣaM/Ǚ."płNؼ40y;'ƸaiH?;(ZC/v7ܱӧßn>ƼB7Q(heRwj-K'5.n\ )^XOX{iT̨g&H`K`8# ~8lI `s5GƱVL>#8d^BFzk Od^AE#\;]>rC|m~ll9`qpsv#E@0 /kz%?/?!M@`Iɟ'Կ@uИcnafŽ"o;h(Yy#P_w@CV/|-ҢɡHl4ma/T"2*kT:V"AӢ@f/9/Mҹ-?JDvR7,YQoz Zh{.T"5Y/mKdPIf-徐"3;䎴]4K@E?1.eUʱծ-mԢP @"8On ׿r[O/LVSTIiFXEŅc]ՊSW9j7=T*_}x:vbj Bz)^'rgP8ƌDŽZ*'JkѢ*V`C u\B&Ʉq-ls5&5 M{n0f&%HVV^c ϲc|E pPr(pH# yM;-AB G&LjMG\^ |Y#јr8S#/nqFnEV 9q +A|iCHy}B{BIZݿe\GOSTe498cf78cdf1d4a5                              Rijndael-1285352e43763eec1a8502433d6d520b1f0 Twofish019f9809de1711858faac3a3ba20fbc3 X\,2/*ZԑÞkxTRC43abaa03a286e24c4196d292ab72934d6854c3eeeCAST-2565db4dd765f1d3835615a14afcb5dc2f5 LOKI978cb28c958024bae27a94c698f96f12a9 Rijndael-192380ee49a5de1dbd4b9cc11af60b8c8ff669e367af8948a8a Safer+97fa76704bf6b578549f65c6f75b228b WAKE434d575db053acfe6e4076f05298bedbd5f4f000be555d029b1367cffc7cd51bba61c76aa17da3530fb7d9 ;jr\;s<:M֖z/L=| 1Ѭߘr/Ḗ~&jE|,G$l iciNWqX~=t XrX͋qJT{YZ90`*#`(yA8۸y:`l>w'K1/x`\`U%U攫UbHW@cj9U*4\̴ATr|*oc]ũ+1t>\3֯\$lS2zw(H;Kkē!(f a!`|H2]]]u#&܈e>#Ŭom9BD . Ji^Bh!la gӫҠQjh/T(3Ql n;zP;*~ev9>YfCoEå}^;uos D@jVbNw?6r=B$7H ۛIrS{y%P;LylO`@ž\^c$johSl>9oR;Qm,0DE ^J3(fK.WtE9_ ӹyU 2`yr,@%g̣饎"2u<kaP/R=2`#H{1S>W\o.ViB~(2gsUO'[iXʻ]=!lJ[-ySeEIҐK3~ˤAb Lw6~д+MەqՓkю%ǯ/[{AI~-%^q h"W6d$ cUYCxSZ٢[} Źv&ϕbhAJsN-GJ{RQ)S?Wƛv`+t恵oWk *!ec.4dV]-SGjnpzKD). u#&İn}ߧI`fqilRdVឱ¥6)L u@Y>:䚘T?eB[k?ҡ08-M]% L&pc^?kh >\D}W7: P tAu8/;21>8TNmO Bo ,y|$ryVw.?rU$qk.P̈́GXzt}K:zfC cdG27;C$CMQe*P:qUN1w_V5kǣ;< $Y,n<pEㆱo ^*>Zw=Ne)։>%fRxL.jxS<- N=+6&9`y#RnfE{7(2åZl!Xeh;/ۭ}*/n[(!pa)uGa0a4c\s9pL ު˼,b`\ndi#PZe2Zh@*<1! T_~}=b7w-_h)5ǡޖXxWcr"ÃF T0.SHُ(1mX4a(s<|J]d]B> EꫪOlOBBǵj;Oe!AyMjGKPb=bF&[$ti GV[ Htb#*BXU >ap?#r3A~_;"lY7|`t˧@n2w΄PU5ai Z .zD4Egɞs͈Uy_g@Cge48>q(= m!>J=+hZ=@&L4)i Av.khq$j 3ԷCaP.9FE$tO!@MpE/f m1'A9UG%ښ ʫ%xP()Sچ, mbhiHפh'?Oz|Ϊ_7әxB*k@5 ٫9N;VmK1f&tn:2C[Ah xN جV@E'H::SU kKмgUXc)3VJ*%1?~^|1)p/'\,(H"m?H܆AyG@n]Q_2Տd5A4x{%`*`lc´2Of#k>3b $;" r(-Exb}doITH}'>AcG t.no:7`L knU{7,gm;e' )̒9 i{f} ϑ^و/$[Qy{;v.97yY̗&-1.Bh;+jLu.x7BjQ满PcKkؽ%=YBD n *Ngd_ڈ鿾dW{x`M``FѰ8Ew63kBqA_^;Z4ٷ,Q+:Ֆ}}>(-}|%rZLZq)GW;()f(.y_xU`uD^mm%adâW<'*:m?!cf&(3uU4V<wQ( gQ̫_QM08bX7 z{>d!Q2Ow~㶨F=)iSHd$m-if! FEdlX [@X̻k~jEY:D 5>ʹrdfGof,ҏ"W##v215VbuZ6ns҈bIPLVq z2E{Sb%ҽ5iq"|˶+v>S@`8G% 8vFšw``u N˅؍芰z~L\HjiԐ\-% ?2aN[wߏWr:Blowfishde8e9a3a9cd44280a1502d70ba1320c8@                                                                                                                                      )4%/7(3-!0,1'8"5.*2$  91)! :2*" ;3+# <4,$?7/'>6.&=5-%  (08@ '/7?&.6>%- 5=$, 4<#+ 3;"* 2:!) 19:2*" <4,$ >6.&@80( 91)! ;3+# =5-% ?7/'Rijndael-25645af6c269326fd935edd24733cff74fc1aa358841a6cd80b79f242d983f8ff2e Serpent9a99455df5080bfccadf049b5aaf7d61 xTEAf61e7ff6da7cdb27c8c033bc57874d74j?$.Dsp"8 1).lN!(Ew8fTl 4)P|ɵՄ? Gy79:7w«-Zg\B7O@'Ӿs~-{kE!nn6j/HWynvIeS}ލF sMLۻ9)PF&^Q-jc"‰.$CaMjP[d&(::KbU/Rio?Y w >;Z4ٷ,Q+:Ֆ}}>(-}|%rZLZq)GW;()f(.y_xU`uD^mm%adâW<'*:m?!cf&(3uU4V<wQ( gQ̫_QM08bX7 z{>d!Q2Ow~㶨F=)iSHd$m-if! FEdlX [@X̻k~jEY:D 5>ʹrdfGof,ҏ"W##v215VbuZ6ns҈bIPLVq z2E{Sb%ҽ5iq"|˶+v>S@`8G% 8vFšw``u N˅؍芰z~L\HjiԐ\-% ?2aN[wߏWr:hZ=@&L4)i Av.khq$j 3ԷCaP.9FE$tO!@MpE/f m1'A9UG%ښ ʫ%xP()Sچ, mbhiHפh'?Oz|Ϊ_7әxB*k@5 ٫9N;VmK1f&tn:2C[Ah xN جV@E'H::SU kKмgUXc)3VJ*%1?~^|1)p/'\,(H"m?H܆AyG@n]Q_2Տd5A4x{%`*`lc´2Of#k>3b $;" r(-Exb}doITH}'>AcG t.no:7`L knU{7,gm;e' )̒9 i{f} ϑ^و/$[Qy{;v.97yY̗&-1.Bh;+jLu.x7BjQ满PcKkؽ%=YBD n *Ngd_ڈ鿾dW{x`M``FѰ8Ew63kBqA_^:䚘T?eB[k?ҡ08-M]% L&pc^?kh >\D}W7: P tAu8/;21>8TNmO Bo ,y|$ryVw.?rU$qk.P̈́GXzt}K:zfC cdG27;C$CMQe*P:qUN1w_V5kǣ;< $Y,n<pEㆱo ^*>Zw=Ne)։>%fRxL.jxS<- N=+6&9`y#RnfE{7(2åZl!Xeh;/ۭ}*/n[(!pa)uGa0a4c\s9pL ު˼,b`\ndi#PZe2Zh@*<1! T_~}=b7w-_h)5ǡޖXxWcr"ÃF T0.SHُ(1mX4a(s<|J]d]B> EꫪOlOBBǵj;Oe!AyMjGKPb=bF&[$ti GV[ Htb#*BXU >ap?#r3A~_;"lY7|`t˧@n2w΄PU5ai Z .zD4Egɞs͈Uy_g@Cge48>q(= m!>J=+ۦ 1Ѭߘr/Ḗ~&jE|,G$l iciNWqX~=t XrX͋qJT{YZ90`*#`(yA8۸y:`l>w'K1/x`\`U%U攫UbHW@cj9U*4\̴ATr|*oc]ũ+1t>\3֯\$lS2zw(H;Kkē!(f a!`|H2]]]u#&܈e>#Ŭom9BD . Ji^Bh!la gӫҠQjh/T(3Ql n;zP;*~ev9>YfCoEå}^;uos D@jVbNw?6r=B$7H ۛIrS{y%P;LylO`@ž\^c$johSl>9oR;Qm,0DE ^J3(fK.WtE9_ ӹyU 2`yr,@%g̣饎"2u<kaP/R=2`#H{1S>W\o.ViB~(2gsUO'[iXʻ]=!lJ[-ySeEIҐK3~ˤAb Lw6~д+MەqՓkю%ǯ/[{AI~-%^q h"W6d$ cUYCxSZ٢[} Źv&ϕbhAJsN-GJ{RQ)S?Wƛv`+t恵oWk *!ec.4dV]-SGjnf3edda7da20f8975884600f014d32c7a08e59d7bRC2becbe4c8e6237a14xݵ(yJ؝~7+vSbLdDYOaEm }2@놷{ !"\kNTe`sVu;B=0<&oFiW'C>/fހRr5Mj*qZItK^AnQ$Pp9|:#z6[%U1-]㊒)glឨ,c?X≩ 843H _.G奜w h3DES58ed248f77f6b19efailed internally %s @                                                                                                                                      )4%/7(3-!0,1'8"5.*2$  91)! :2*" ;3+# <4,$?7/'>6.&=5-%  ; X  x < X X 8 ( l  T 8   H<xThh|(X 4`hXDX8l@(|xXhh|LH(DX \HX   @!x"xH#$$L%&X' ((( X)L )x ) ) * +D!+X!+l!+!+!+!,!,!,(",@"-\"-".".#.$#.8#.L#.`#/x#/#/#(0#H0$5d$5x$5$6$6$(6$86$H6$X6%h6%x6,%6@%6%h7%x7%7&7&7(&7<&7P&h8&8&8&9&(=<'xA'A'A'A'A'A'A(xB@(Bl(B(C(G((G)8G)HG()XG<)hGP)xGd)Gx)H)HH)xH)H*hId*8J*HJ*XJ*hJ*xJ+J+J0+JD+JX+Jl+J+J+K+(K+8K+HK+XK,hK,xK(,OT,S,(Y,8Y,HY,XY -hY -xY4-YH-8\-H\-x]-](.il.(t.8t.Ht.Xt.ht/xt/t(/hwx/xw/x/0@0؃00000(080H1`1t11111(1x@2xd2(282H2X2h2x23L3`3t33(383H3X3h4x4(4<444h405t5555555<6P6d6H66$7X`77777(788H8(d88x888(9xh9|9999990:H:H::,;h`;;;;;;; <\<p<<<<<(<8 =H =X4=hH=x\===(=>4>xP>h>|>>>>>> 0? H? \? ??0@8l@@@@@@ A ApAAXA!A"8B$xB$B%B%B(%B8%BH%B((@C8(XC5|CHCZCZCZDZD[,D[@D([TD]D]D^D^D_D(_ E8_ EH_4EX_HEh_\Ex_pE8bEHbEbE8cFc,FhepFxeFeFeFeFeFeFh8GhPGHj|GkGkGkGkGkGlGlH(l$H8l8HHlLH8nHHnHnHpHqI(q$I8q8IHqLIXq`IhqtIxqIXtIhtI8uJXvHJwlJxJ|J(C ABB1xoGd1oGd1 DN1(1$2 2,2 @2LT2BDB B(A0A8G 8A0A(B BBBF 22x@24REE E(D0C80A(B BBB@3REE E(D0C80A(B BBBHX31BIB L(A0H8GX8C0A(B BBB83UBBG A(J88(A ABB83UBBG A(J88(A ABB404D4X4l44L4BDB B(A0A8G 8A0A(B BBBF 4`4XgQ C L5BIB B(A0A8D 8C0A(B BBBA <l5FBB A(A0 (A BBBA <5FBB A(A0 (A BBBA 5h6d6`(6\<6XP6TLd6PBDB B(A0A8G 8A0A(B BBBF 6 6 Z ` P06T:IIK V( CBH($7`LLO ADP7d7x7777L7BDB B(A0A8G 8A0A(B BBBG 8,,8("D]D8@wX8{l8888 88L8BDB B(A0A8G 8A0A(B BBBF 49pL9hoGdh9|Gq9 |Gq@9BMT O(I0K@W0C(A BBB99 : :4: H:L\:BDB B(A0A8G 8A0A(B BBBF :H!(:@!ACN CA:"M ;h# ;$4;$H; $\;$p;$;$;# ;#L;#BDB B(A0A8Gk 8A0A(B BBBA <%$$<%AAI CA L<&IDEp<'<(<'<'<'<' <'L<'BDB B(A0A8G 8A0A(B BBBF L=x*d=p*@x=,+BKB B(A0A80A(B BBB =,AJA@=,REF E(D0C80A(B BBBH$>P-BBB B(A0D8L8C0A(B BBB<p>1"BAG G0  AABB ] AAB<>6"BAG G0  AABB ] AAB>;?;?;,?;@?;T?;Lh?;BDB B(A0A8G 8A0A(B BBBE ?L>QQ"s0t/`tIt]tmuvvv@vvvvpwww0wAxTyey`yyy}yyz2zL{` {pЀ0@ 1PE`UЁg@wP`p@/@SPd`8p`|PЍ$5 0@MP` Pp@% 600@kPN`p Е!4Px 0@NWtP 80`@P`P6 S0(@XPq`@ Hp(PPP 0@ P`H08T`pp0@ P8`p``p@ '0`ELg0 %%%%&@& &h)*1`3P50`5Xp55555888 `B)@DhFFFFF0F`FIGLIeJ~KLLM MM0M @MPMHOpPSpRRpSS@ShSSSS(VpY]_p`X`0`L`x``i`c0ek@mhoooop@pp pssХ8h ',E^pw 0@P0 *G@XP`p0P`elpxж8 ` *B[w 0@P0 @h 0@P`8p O xИ"ؘ"o P  "8L = oooTo@""FOVOfOvOOOOOOOOOPP&P6PFPVPfPvPPPPPPPPPQQ                                   ZZ@0 /kz%?/?!M@`Iɟ'Կ@uИcnafŽ"o;h(Yy#P_w@CV/|-ҢɡHl4ma/T"2*kT:V"AӢ@f/9/Mҹ-?JDvR7,YQoz Zh{.T"5Y/mKdPIf-徐"3;䎴]4K@E?1.eUʱծ-mԢP @"8On ׿r[O/LVSTIiFXEŅc]ՊSW9j7=T*_}x:vbj Bz)^'rgP8ƌDŽZ*'JkѢ*V`C u\B&Ʉq-ls5&5 M{n0f&%HVV^c ϲc|E pPr(pH# yM;-AB G&LjMG\^ |Y#јr8S#/nqFnEV 9q +A|iCHy}B{BIZݿe\ [ ~iC?9zaz UQry吝5rNcZպ60ę _}֡{/6Y DYD̃Aѱ* ;{ B[A%zzӤ0XޘN?wiy{$[Ĭ%5P_aT1bcKU !h]Yfsc=4·~!+g\ab906;Wd/`:5F- 'zy㠌l0^7%oo;j tE'4:NiOM>dY58EfCr3c%N? (Υ'R¦սTUdpfM w&ۄgC!`X0TroSUGڿ]bVhkʃ;n-Ӧ\= wL3{9+^S_aodC x^c"&gI{ڷ"%-U^7rRyL H[k0 cq/޹ S E!5(T<)c)A|-nRPf4,0P1`sY&D\dwR3A+ٺ|o!PaH?ek«dv&4{^% ;MM1$~I,;jx`]sVz\/1Co0TyXR^/2zj0>՚1B°I #ڸ(0q_`ɣaM/Ǚ."płNؼ40y;'ƸaiH?;(ZC/v7ܱӧßn>ƼB7Q(heRwj-K'5.n\ )^XOX{iT̨g&H`K`8# ~8lI `s5GƱVL>#8d^BFzk Od^AE#\;]>rC|m~ll9`qpsv#E@]%=`GK6DήPQH<p}}d^(O= &g.yr?U+HԼ?^!@WNFRWs3NɷdŸW1O g_?@k{C=K۵cUȗn-J(JqoCCl< _P/~׿PZG.Q>pX.0_|r *,]I鎸P'WIoyR}}Yr@EEt]>uOiVA#. '`vteyvvwHNma}/ 4H<0(Ow Vܒ M"7)}V'|@|硴f^aÝ <є`AFv\;x,WGl"}NC~8<=Q8d{h'فI]j~vh]9K9 ;#Im<Eub'z\aBΒ~Brrp }ȡ[(Ob<51)BSjO[}m(Ki\j#MŌ?,-ҖXRg[HJI \EkӉ7`:SRqDIK @sg4|~q6UO/Т`?mPьGnU?墼38Wg} =3{r3O̫]ňv{{uWBdBc+ri/n+_mazgaq%9̸L!gуb>ܷν8\ =Dmn`I:T`H'W+8$ ږ%Eh;}E `P/(b4 ٠m+1+dZ0RXBA\1>26F3S75 {s{OJWdCQz(~c5_ yCdcdJ$_(͸O@C " 0 O7-{$MgQLq_-_d !S^>'_aB%rqK=;&o~~TLmDl߫I&Ǡ36~?Pa w8Pr.PwWFgOT3ɏ1 i5M\=fȦ[]oڑo/"F}F9mOCCN!и  ?X(>nH&p׋wt|% - y#;(8itb߷@!{7Ȋ@ YVvO@/{U MVi35'#WȯVeka^u˅nwU2?-ɿ[%;з$;mc fÀ(82 Tɪס2Zb,gTzuw11&o6F HjyZVLj~CRv/ t,t* M|k .TA5B=!&|,aRe1i%& !\1cr ^Iy p1 d>>̶Ոî 0rlqn/kءDVÈ9/ű1(x⤣2}o~X$Ū{s0a!-!)۳*)e\,0?Б\,ԩT _w:^VxV޾\!uQųåҶw#)Ei/z毲p[v F98/gsD)k)/Ifingӛ/~p%Q^$Slj>!DYܷ)eyCy9A+MWN )zkS< ~U3rŅ?~ |Jy7 `i8eOj]NprGD%A! n&X2 "csƯ$[f'W\Tyߪ>{R5ȊͿPY?Mb4 HVL.k=<QuJq#v*_U 71twۤ/FaEg ;)Zئ~SKzI,6+C3lhm(ݛ^|B@x-:d}9o0 `i8eOj]NprGD%A! n&X2 "csƯ$[f'W\Tyߪ>{R5ȊͿPY?Mb4 HVL.k=<QuJq#v*_U 71twۤ/FaEg ;)Zئ~SKzI,6+C3lhm(ݛ^|B@x-:d}9o0-⓾Ex8?g &k4r@5HQ/;U>܆wצd3,+љˌq_W%- 5=$, 4<#+ 3;"* 2:!) 19:2*" <4,$ >6.&@80( 91)! ;3+# =5-% ?7/'GCC: (GNU) 8.5.0 20210514 (Red Hat 8.5.0-20)GA$3a1O Q PQ Q,";ؘ"b QnИ" Qc PRQ W ]w @^     % 0 ; ( *("F"O"X ``"i"r 0z @ p   P (  Pg"""""x"""(  ( ( (  (    )g@"@"""x@"@"@"@"( `  (   @!(( ! Oo Ppd V pW pX 2 # 2& 10 1  4@ 4@8 `48< 40@ P4( 1 cg""@"`"x""""( x5 ( 5 ( 5 oG `:K `6O `BS `>W 6HZ"d  Fd @  @H # `H 0& H0 H  `"@ "@8 J8< `J0@ J( H0   F% LE 8 cp P ` v  5I& f& L 0 t S  0SY 0  `5 P' PB _"f C  R:o @    p `t0 D ^ d ` "  & P p5 *"0 MR %n 0 o   P ! pw/4 0 O h"o p P   P " @)  t=  @a  y  U "   bJ  \    z<  0  5  W  x]  F    0 "       1(  @H  e    P ` `  v    @    @D6:  %\      `Y ]U  0  M  _  " y!  PM%<  P`   `  P  O    Х  { 0_* @x aCS "q    P   PS< ^ ss m p   y O `3 `3 5` O  0t/ F"" w= 0   pRo* *% w0y `S h[  vd Ag  yw z8 X `[ fc  u "  # RoG@" K @j  " Se x" 0 p Ѝ. @ `B^ M{ "    +    dX 8s 0 ` @M t   s< ЕQ )v  w %  5 v( `D pGM %l  * S  p @ p- vD @L Pi 0M" [ 5 @  _  ? (#f @ $ ` 0 ]+  e 0 P5 Y v F Ёo I  p= "! oN pY1F kg"q    F ]*  " fK  y VK  x  &#  ж P<+ H f P5 "   0]+#  `]+ :; 0] ^Zx  p{ `  pS `6 pU ps @ F `( p  0 :H6 PR `ob 0V" y  L | o v  p5  f    *       ! & y(!   _UE! d! |! @<! I5% `! ! \ ! @! 0e " v," SU" u" F" `" "J" P" #"#"5# `]# u# # s  w#ı"$ `# S# p /# @$ `&$ pS$ Ѐj$ @$ {$  `gc$ " $ o$ P% & @cC% J)% 8D% )( O p`G%`" K% Sq% PE% P% % K% % "& 8@&  @U& pr& y& 9P T8L O 0O Q x JhWИ"ؘ"""Я"" ""c& n& eO&&& l'.' hJE' a'u' T' i ''''' 0rO( X/( nV+P( gWj(~(( s( Z*((() V) @\%) pG) V) Zg)z) 0c) `l) `kC)) U) dC* Pm* P[** Z9* oU* sk** bd* [&* Pbd** \* `q+ 0hJ+ c=+ kU+j+~+ 0k&+ ++ hJ+", R=,),=, cCderegister_tm_clones__do_global_dtors_auxcompleted.7303__do_global_dtors_aux_fini_array_entryframe_dummy__frame_dummy_init_array_entryparse_version_numberparse_version_stringinternal_end_mcryptmcrypt_strcmpmcrypt_dlopen.part.0cast_sbox2cast_sbox1cast_sbox3cast_sbox4cast_sbox6cast_sbox7cast_sbox5cast_sbox8gost_k65gost_k43gost_k5gost_k21gost_k87gost_k8gost_k7gost_k4gost_k3gost_k2gost_k6gost_k1productltabptabtables_okfbsubrcorbsubftablertablettenblf_noswapinitialize_blowfishpermute_ippermute_fpp32isinibblebitbytebitpc1pc2totrotks2ks3ks0ks1piseed.3937enigma_LTX__mcrypt_encrypt.localalias.0permute.3897spinitperminitpermute.part.0__FRAME_END__xtea_LTX__mcrypt_get_sizeenigma_LTX__mcrypt_decryptsaferplus_LTX__mcrypt_get_algorithms_namewake_LTX__mcrypt_get_block_sizerijndael_192_LTX__mcrypt_algorithm_versiontwofish_LTX__mcrypt_get_algorithms_namearcfour_LTX__mcrypt_algorithm_versioncbc_LTX__mcrypt_get_modes_namextea_LTX__mcrypt_algorithm_versionrijndael_192_LTX__mcrypt_get_key_sizetwofish_LTX__mcrypt_algorithm_versionrc2_LTX__mcrypt_get_supported_key_sizesblowfish_compat_LTX__mcrypt_get_algorithms_nameenigma_LTX__mcrypt_get_block_sizemcrypt_algorithm_module_okcast_128_LTX__mcrypt_get_sizerijndael_192_LTX__mcrypt_get_block_sizextea_LTX__mcrypt_self_teststream_LTX__mcrypt_set_statetab_efgost_LTX__mcrypt_encryptmcrypt_readdirrijndael_128_LTX__mcrypt_get_sizenofb_LTX__has_ivenigma_LTX__mcrypt_encryptncfb_LTX__is_block_algorithm_modecbc_LTX__mcrypt_get_stateserpent_LTX__mcrypt_get_supported_key_sizesstream_LTX__is_block_modeh_fungost_LTX__mcrypt_self_testshuffleashxstream_LTX__has_ivloki97_LTX__mcrypt_get_algorithms_namerc2_LTX__mcrypt_self_testrijndael_192_LTX__is_block_algorithmenigma_LTX__mcrypt_algorithm_versiondeltawake_LTX__mcrypt_get_algo_iv_sizeloki97_LTX__mcrypt_get_sizenofb_LTX__mcrypt_get_modes_namerijndael_256_LTX__mcrypt_get_block_sizegost_LTX__is_block_algorithmenigma_LTX__mcrypt_get_sizecast_128_LTX__mcrypt_get_algorithms_namearcfour_LTX__mcrypt_decryptloki97_LTX__mcrypt_decryptrc2_LTX__mcrypt_get_size_edatablowfish_LTX__mcrypt_get_key_sizencfb_LTX__has_ivstream_LTX__is_block_algorithm_modearcfour_LTX__mcrypt_get_supported_key_sizessafer_expftwofish_LTX__mcrypt_get_supported_key_sizescbc_LTX__end_mcryptrc2_LTX__mcrypt_get_algorithms_namerc2_LTX__mcrypt_set_keymcrypt_mode_module_oksafer_logfarcfour_LTX__mcrypt_get_sizeLOCKMEMxtea_LTX__is_block_algorithmctr_LTX__mcrypt_set_stateecb_LTX__mcrypt_set_staterijndael_128_LTX__is_block_algorithmstream_LTX__mcrypt_get_modes_name_finisaferplus_LTX__is_block_algorithmrc2_LTX__mcrypt_get_key_sizearcfour_LTX__is_block_algorithmsb1rc2_LTX__is_block_algorithmenigma_LTX__mcrypt_get_supported_key_sizesrijndael_192_LTX__mcrypt_encryptstream_LTX__mcrypt_mode_versionblowfish_LTX__mcrypt_set_keycast_256_LTX__mcrypt_self_testgost_LTX__mcrypt_get_algorithms_namecbc_LTX__mcrypt_mode_versionstream_LTX__end_mcryptecb_LTX__mcrypt_get_statearcfour_LTX__mcrypt_get_algo_iv_sizesaferplus_LTX__mcrypt_decryptloki97_LTX__mcrypt_get_block_sizecast_256_LTX__mcrypt_get_block_sizeecb_LTX__mcrypt_mode_versionncfb_LTX__is_block_modestream_LTX__mcrypt_mode_get_sizewake_LTX__mcrypt_get_key_sizemcrypt_dlclosetripledes_LTX__mcrypt_decryptwake_LTX__mcrypt_self_testblowfish_LTX__mcrypt_get_block_sizerijndael_128_LTX__mcrypt_set_keycast_128_LTX__mcrypt_encryptloki97_LTX__mcrypt_encryptcast_256_LTX__is_block_algorithmserpent_LTX__mcrypt_get_key_sizectr_LTX__end_mcrypt_mcrypt_search_symlist_symgost_LTX__mcrypt_get_supported_key_sizestripledes_LTX__mcrypt_encryptserpent_LTX__is_block_algorithmcast_256_LTX__mcrypt_decrypttripledes_LTX__mcrypt_get_algorithms_namegost_LTX__mcrypt_get_sizerijndael_128_LTX__mcrypt_get_key_sizeblowfish_compat_LTX__mcrypt_set_keynofb_LTX__is_block_algorithm_modecbc_LTX__init_mcryptrijndael_256_LTX__mcrypt_decryptstream_LTX__init_mcryptblowfish_LTX__mcrypt_get_algorithms_nametwofish_LTX__mcrypt_set_keyrijndael_192_LTX__mcrypt_decryptblowfish_LTX__is_block_algorithmrijndael_192_LTX__mcrypt_get_algorithms_namewake_LTX__mcrypt_algorithm_versionctr_LTX__has_ivcbc_LTX__mcrypt_set_statesaferplus_LTX__mcrypt_get_supported_key_sizesmpsncfb_LTX__mcryptnofb_LTX__init_mcryptblowfish_compat_LTX__mcrypt_encryptcast_256_LTX__mcrypt_get_algorithms_namemds_remgen_mtabncfb_LTX__mdecryptctr_LTX__mcrypt_get_stateloki97_LTX__mcrypt_set_keyblowfish_LTX__mcrypt_algorithm_versioncast_256_LTX__mcrypt_algorithm_versioncbc_LTX__mdecryptqt0stream_LTX__mcryptblowfish_compat_LTX__mcrypt_decryptqt2nofb_LTX__mcrypt_mode_get_sizerc2_LTX__mcrypt_encryptxtea_LTX__mcrypt_set_keyblowfish_compat_LTX__mcrypt_get_block_size__dso_handlegost_LTX__mcrypt_get_key_sizetripledes_LTX__mcrypt_algorithm_versionnofb_LTX__end_mcryptctr_LTX__mdecryptsaferplus_LTX__mcrypt_encryptwake_LTX__is_block_algorithmrijndael_128_LTX__mcrypt_get_algorithms_namecast256_sboxxtea_LTX__mcrypt_get_key_sizenofb_LTX__is_block_modectr_LTX__mcrypt_mode_versionrijndael_128_LTX__mcrypt_self_testcast_256_LTX__mcrypt_get_supported_key_sizesnofb_LTX__mcrypt_get_statetripledes_LTX__mcrypt_get_key_sizewake_LTX__mcrypt_get_algorithms_namecbc_LTX__mcryptserpent_LTX__mcrypt_get_algorithms_nameserpent_LTX__mcrypt_self_testrijndael_256_LTX__mcrypt_algorithm_versionstream_LTX__mdecryptloki97_LTX__mcrypt_algorithm_versiontwofish_LTX__mcrypt_get_block_sizextea_LTX__mcrypt_encryptloki97_LTX__mcrypt_get_key_sizearcfour_LTX__mcrypt_get_block_sizerijndael_192_LTX__mcrypt_self_testcbc_LTX__has_ivarcfour_LTX__mcrypt_encryptgen_qtabloki97_LTX__is_block_algorithmcast_128_LTX__mcrypt_set_key_mcrypt_kboxinitblowfish_compat_LTX__mcrypt_get_supported_key_sizestripledes_LTX__mcrypt_get_supported_key_sizesrijndael_256_LTX__mcrypt_get_supported_key_sizescbc_LTX__is_block_modextea_LTX__mcrypt_get_algorithms_namewake_LTX__mcrypt_get_supported_key_sizesror4f_funrijndael_192_LTX__mcrypt_get_supported_key_sizescast_256_LTX__mcrypt_encryptmcrypt_dlsymserpent_LTX__mcrypt_decryptrijndael_128_LTX__mcrypt_algorithm_versioncast_128_LTX__mcrypt_algorithm_versiongost_LTX__mcrypt_algorithm_versionxtea_LTX__mcrypt_get_supported_key_sizesmxmallocctr_LTX__is_block_algorithm_modearcfour_LTX__mcrypt_set_keytwofish_LTX__mcrypt_get_key_sizetwofish_LTX__mcrypt_encryptcast_128_LTX__mcrypt_get_block_sizeenigma_LTX__mcrypt_self_testsaferplus_LTX__mcrypt_get_block_sizeecb_LTX__mdecryptsaferplus_LTX__mcrypt_algorithm_versionenigma_LTX__mcrypt_get_algorithms_namedo_irnofb_LTX__mdecrypt__bss_startrijndael_256_LTX__is_block_algorithmrijndael_256_LTX__mcrypt_encryptinit_doneserpent_LTX__mcrypt_get_sizenofb_LTX__mcryptenigma_LTX__mcrypt_get_key_sizesaferplus_LTX__mcrypt_get_sizemxfreecast_256_LTX__mcrypt_get_key_sizencfb_LTX__init_mcryptblowfish_compat_LTX__mcrypt_algorithm_versionblowfish_LTX__mcrypt_get_supported_key_sizesgost_LTX__mcrypt_get_block_sizeloki97_LTX__mcrypt_get_supported_key_sizessb2tripledes_LTX__mcrypt_get_block_sizeenigma_LTX__mcrypt_get_algo_iv_sizenofb_LTX__mcrypt_set_statecast_128_LTX__mcrypt_decrypttripledes_LTX__mcrypt_set_keyrijndael_192_LTX__mcrypt_get_sizecast_256_LTX__mcrypt_get_size_DYNAMICrijndael_128_LTX__mcrypt_encryptblowfish_LTX__mcrypt_self_testmxcallocprmgost_LTX__mcrypt_decryptmxreallocserpent_LTX__mcrypt_encryptcast_128_LTX__mcrypt_get_key_size_mcrypt_search_symlist_libserpent_LTX__mcrypt_get_block_sizextea_LTX__mcrypt_decrypttwofish_LTX__mcrypt_self_testecb_LTX__mcrypt_mode_get_sizeblowfish_compat_LTX__mcrypt_get_sizeecb_LTX__is_block_algorithm_modeecb_LTX__mcrypt_get_modes_namearcfour_LTX__mcrypt_self_testcast_128_LTX__mcrypt_get_supported_key_sizessaferplus_LTX__mcrypt_self_testmcrypt_dlopenrijndael_256_LTX__mcrypt_self_testrc2_LTX__mcrypt_get_block_sizextea_LTX__mcrypt_get_block_sizedo_frtwofish_LTX__mcrypt_decryptecb_LTX__mcryptrc2_LTX__mcrypt_algorithm_versiontripledes_LTX__mcrypt_get_sizewake_LTX__mcrypt_get_sizeblowfish_LTX__mcrypt_encryptrijndael_256_LTX__mcrypt_get_sizecbc_LTX__mcrypt_mode_get_sizeenigma_LTX__mcrypt_set_keyrijndael_128_LTX__mcrypt_get_supported_key_sizesncfb_LTX__mcrypt_mode_versionrijndael_192_LTX__mcrypt_set_keyrijndael_128_LTX__mcrypt_decryptncfb_LTX__mcrypt_mode_get_sizeserpent_LTX__mcrypt_algorithm_versionloki97_LTX__mcrypt_self_testtwofish_LTX__mcrypt_get_sizectr_LTX__mcrypt_get_modes_nameblowfish_LTX__mcrypt_decryptncfb_LTX__mcrypt_set_statewake_LTX__mcrypt_set_keyenigma_LTX__is_block_algorithmBzeroecb_LTX__has_ivrijndael_256_LTX__mcrypt_set_keycbc_LTX__is_block_algorithm_modeblowfish_compat_LTX__mcrypt_get_key_sizencfb_LTX__mcrypt_get_modes_namesaferplus_LTX__mcrypt_get_key_sizecast_128_LTX__mcrypt_self_testncfb_LTX__end_mcrypt__GNU_EH_FRAME_HDRecb_LTX__end_mcrypttwofish_LTX__is_block_algorithm__TMC_END___GLOBAL_OFFSET_TABLE_arcfour_LTX__mcrypt_get_algorithms_namerc2_LTX__mcrypt_decryptstream_LTX__mcrypt_get_stateserpent_LTX__mcrypt_set_keytab_5bblowfish_compat_LTX__is_block_algorithmgen_mk_tabblowfish_LTX__mcrypt_get_sizetripledes_LTX__mcrypt_self_testrijndael_256_LTX__mcrypt_get_algorithms_namectr_LTX__is_block_modearcfour_LTX__mcrypt_get_key_sizectr_LTX__mcryptcast_128_LTX__is_block_algorithmqt3rijndael_256_LTX__mcrypt_get_key_sizenofb_LTX__mcrypt_mode_versioninit_tableswake_LTX__mcrypt_encryptncfb_LTX__mcrypt_get_stateqpqt1blowfish_compat_LTX__mcrypt_self_testgost_LTX__mcrypt_set_keyecb_LTX__is_block_modetripledes_LTX__is_block_algorithmwake_LTX__mcrypt_decryptctr_LTX__mcrypt_mode_get_sizerijndael_128_LTX__mcrypt_get_block_sizesaferplus_LTX__mcrypt_set_keyecb_LTX__init_mcryptcast_256_LTX__mcrypt_set_keyctr_LTX__init_mcryptff_multmcrypt_module_is_block_algorithm_modemcrypt_enc_get_algorithms_namemunlock@@GLIBC_2.2.5free@@GLIBC_2.2.5mcrypt_module_algorithm_versionmlock@@GLIBC_2.2.5mcrypt_enc_mode_has_iv_ITM_deregisterTMCloneTablestrcpy@@GLIBC_2.2.5mcrypt_list_algorithmsmcrypt_module_openputs@@GLIBC_2.2.5readdir_r@@GLIBC_2.2.5stpcpy@@GLIBC_2.2.5strlen@@GLIBC_2.2.5mcrypt_module_get_algo_supported_key_sizesmcrypt_generic_initmcrypt_module_is_block_algorithmmcrypt_enc_get_modes_namememset@@GLIBC_2.2.5strncat@@GLIBC_2.2.5mcrypt_module_support_dynamicmcrypt_generic_endmemcmp@@GLIBC_2.2.5calloc@@GLIBC_2.2.5strcmp@@GLIBC_2.2.5mcrypt_check_versionmcrypt_strerrormcrypt_module_get_algo_block_size__gmon_start__mdecrypt_genericmemcpy@@GLIBC_2.14mcrypt_enc_get_block_sizemcrypt_module_closemcrypt_enc_self_testmalloc@@GLIBC_2.2.5mcrypt_list_modesmcrypt_enc_is_block_algorithmmcrypt_module_mode_versionmcrypt_perrormcrypt_genericmcrypt_module_is_block_modemcrypt_mutex_registerrealloc@@GLIBC_2.2.5mcrypt_enc_get_statemcrypt_generic_deinitmcrypt_enc_set_statememmove@@GLIBC_2.2.5mcrypt_freemcrypt_module_get_algo_key_sizemcrypt_enc_is_block_modemcrypt_enc_get_supported_key_sizesmcrypt_module_self_testsprintf@@GLIBC_2.2.5fwrite@@GLIBC_2.2.5mcrypt_enc_get_iv_size_ITM_registerTMCloneTablestrdup@@GLIBC_2.2.5mcrypt_enc_is_block_algorithm_mode__cxa_finalize@@GLIBC_2.2.5mcrypt_free_p__ctype_b_loc@@GLIBC_2.3stderr@@GLIBC_2.2.5mcrypt_enc_get_key_size.symtab.strtab.shstrtab.note.gnu.build-id.gnu.hash.dynsym.dynstr.gnu.version.gnu.version_r.rela.dyn.rela.plt.init.text.fini.rodata.eh_frame_hdr.eh_frame.init_array.fini_array.data.rel.ro.dynamic.got.got.plt.data.bss.comment.gnu.build.attributes$.o\8 PP0@ HoTTUo@d =nB8L8LxOOs0O0O~ Q QVxx 8u JJ hWhW?И"Иؘ"ؘ"  "Я"Я0" "  "@Z 0-c$5 U,(lib64/libmcrypt.la000064400000001450152531566440010022 0ustar00# libmcrypt.la - a libtool library file # Generated by ltmain.sh - GNU libtool 1.5.22 (1.1220.2.365 2005/12/18 22:14:06) # # Please DO NOT delete this file! # It is necessary for linking the library. # The name that we can dlopen(3). dlname='libmcrypt.so.4' # Names of this library. library_names='libmcrypt.so.4.4.8 libmcrypt.so.4 libmcrypt.so' # The name of the static archive. old_library='' # Libraries that this one depends upon. dependency_libs='' # Version information for libmcrypt. current=8 age=4 revision=8 # Is this an already installed library? installed=yes # Should we warn about portability when linking against -modules? shouldnotlink=no # Files to dlopen/dlpreopen dlopen='' dlpreopen='' # Directory that this library needs to be installed in: libdir='/opt/cpanel/libmcrypt/lib64' bin/libmcrypt-config000075500000002711152531566440010526 0ustar00#!/bin/sh prefix=/opt/cpanel/libmcrypt exec_prefix=${prefix} exec_prefix_set=no mcrypt_libs=" -L/opt/cpanel/libmcrypt/lib64 -lmcrypt " mcrypt_cflags="-I${prefix}/include" usage() { cat <&2 fi while test $# -gt 0; do case "$1" in -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;; *) optarg= ;; esac case $1 in --prefix=*) prefix=$optarg if test $exec_prefix_set = no ; then exec_prefix=$optarg fi ;; --prefix) echo_prefix=yes ;; --exec-prefix=*) exec_prefix=$optarg exec_prefix_set=yes ;; --exec-prefix) echo_exec_prefix=yes ;; --version) echo "2.5.8" exit 0 ;; --cflags) echo_cflags=yes ;; --libs) echo_libs=yes ;; *) usage 1 1>&2 ;; esac shift done if test "$echo_prefix" = "yes"; then echo $prefix fi if test "$echo_exec_prefix" = "yes"; then echo $exec_prefix fi if test "$echo_cflags" = "yes"; then if test "${prefix}/include" != "/usr/include" ; then includes="-I${prefix}/include" for i in $mcrypt_cflags ; do if test "$i" = "-I${prefix}/include" ; then includes="" fi done fi echo $includes $mcrypt_cflags fi if test "$echo_libs" = "yes"; then echo ${mcrypt_libs} fi share/aclocal/libmcrypt.m4000064400000020662152531566440011534 0ustar00dnl Autoconf macros for libmcrypt dnl $id$ # This script detects libmcrypt version and defines # LIBMCRYPT_CFLAGS, LIBMCRYPT_LIBS # and LIBMCRYPT24 or LIBMCRYPT22 depending on libmcrypt version # found. # Modified for LIBMCRYPT -- nmav # Configure paths for LIBGCRYPT # Shamelessly stolen from the one of XDELTA by Owen Taylor # Werner Koch 99-12-09 dnl AM_PATH_LIBMCRYPT([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND ]]]) dnl Test for libmcrypt, and define LIBMCRYPT_CFLAGS and LIBMCRYPT_LIBS dnl AC_DEFUN([AM_PATH_LIBMCRYPT], [dnl dnl Get the cflags and libraries from the libmcrypt-config script dnl AC_ARG_WITH(libmcrypt-prefix, [ --with-libmcrypt-prefix=PFX Prefix where libmcrypt is installed (optional)], libmcrypt_config_prefix="$withval", libmcrypt_config_prefix="") if test x$libmcrypt_config_prefix != x ; then libmcrypt_config_args="$libmcrypt_config_args --prefix=$libmcrypt_config_prefix" if test x${LIBMCRYPT_CONFIG+set} != xset ; then LIBMCRYPT_CONFIG=$libmcrypt_config_prefix/bin/libmcrypt-config fi fi AC_PATH_PROG(LIBMCRYPT_CONFIG, libmcrypt-config, no) min_libmcrypt_version=ifelse([$1], ,2.4.0,$1) AC_MSG_CHECKING(for libmcrypt - version >= $min_libmcrypt_version) no_libmcrypt="" if test "$LIBMCRYPT_CONFIG" = "no" ; then dnl libmcrypt-config was not found (pre 2.4.11 versions) dnl Try to detect libmcrypt version AC_TRY_RUN([ #include #include #include #include int main () { #if MCRYPT_API_VERSION <= 19991015 /* version 2.2 */ return 0; #else /* version 2.4 */ return 1; #endif /* 19991015 */ } ], libmcrypt_config_version="2.2.0" if test x$libmcrypt_config_prefix != x ; then TTLIBS="-L${libmcrypt_config_prefix}/libs" TTINCLUDE="-I${libmcrypt_config_prefix}/include" fi LIBMCRYPT_CFLAGS="${TTINCLUDE}" LIBMCRYPT_LIBS="${TTLIBS} -lmcrypt" AC_DEFINE(LIBMCRYPT22, 1, [have libmcrypt 2.2]) , libmcrypt_config_version="2.4.0" if test x$libmcrypt_config_prefix != x ; then TTLIBS="-L${libmcrypt_config_prefix}/libs" TTINCLUDE="-I${libmcrypt_config_prefix}/include" fi LIBMCRYPT_CFLAGS="${TTINCLUDE}" LIBMCRYPT_LIBS="${TTLIBS} -lmcrypt -lltdl ${LIBADD_DL}" AC_DEFINE(LIBMCRYPT24, 1, [have libmcrypt 2.4])) else dnl libmcrypt-config was found LIBMCRYPT_CFLAGS=`$LIBMCRYPT_CONFIG $libmcrypt_config_args --cflags` LIBMCRYPT_LIBS=`$LIBMCRYPT_CONFIG $libmcrypt_config_args --libs` libmcrypt_config_version=`$LIBMCRYPT_CONFIG $libmcrypt_config_args --version` AC_DEFINE(LIBMCRYPT24, 1, [have libmcrypt 2.4]) fi ac_save_CFLAGS="$CFLAGS" ac_save_LIBS="$LIBS" CFLAGS="$CFLAGS $LIBMCRYPT_CFLAGS" LIBS="$LIBS $LIBMCRYPT_LIBS" dnl dnl Now check if the installed libmcrypt is sufficiently new. Also sanity dnl checks the results of libmcrypt-config to some extent dnl rm -f conf.libmcrypttest AC_TRY_RUN([ #include #include #include #include #define TWO "2.2" int main () { #if MCRYPT_API_VERSION <= 20010201 #if MCRYPT_API_VERSION <= 19991015 /* version 2.2 */ int x = mcrypt_get_key_size(MCRYPT_TWOFISH_128); system ("touch conf.libmcrypttest"); if( strncmp( TWO, "$min_libmcrypt_version", strlen(TWO))) { printf("\n*** Requested libmcrypt %s, but LIBMCRYPT (%s)\n", "$min_libmcrypt_version", TWO ); printf("*** was found!\n"); return 1; } return 0; #else /* version 2.4 before 11 */ MCRYPT td = mcrypt_module_open("twofish", NULL, "cbc", NULL); system ("touch conf.libmcrypttest"); mcrypt_module_close(td); return 0; #endif /* 19991015 */ #else system ("touch conf.libmcrypttest"); if( strcmp( mcrypt_check_version(NULL), "$libmcrypt_config_version" ) ) { printf("\n*** 'libmcrypt-config --version' returned %s, but LIBMCRYPT (%s)\n", "$libmcrypt_config_version", mcrypt_check_version(NULL) ); printf("*** was found! If libmcrypt-config was correct, then it is best\n"); printf("*** to remove the old version of LIBMCRYPT. You may also be able to fix the error\n"); printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n"); printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n"); printf("*** required on your system.\n"); printf("*** If libmcrypt-config was wrong, set the environment variable LIBMCRYPT_CONFIG\n"); printf("*** to point to the correct copy of libmcrypt-config, and remove the file config.cache\n"); printf("*** before re-running configure\n"); } else if ( strcmp(mcrypt_check_version(NULL), LIBMCRYPT_VERSION ) ) { printf("\n*** LIBMCRYPT header file (version %s) does not match\n", LIBMCRYPT_VERSION); printf("*** library (version %s)\n", mcrypt_check_version(NULL) ); } else { if ( mcrypt_check_version( "$min_libmcrypt_version" ) ) { return 0; } else { printf("no\n*** An old version of LIBMCRYPT (%s) was found.\n", mcrypt_check_version(NULL) ); printf("*** You need a version of LIBMCRYPT newer than %s. The latest version of\n", "$min_libmcrypt_version" ); printf("*** LIBMCRYPT is always available from ftp://mcrypt.hellug.gr/pub/mcrypt.\n"); printf("*** \n"); printf("*** If you have already installed a sufficiently new version, this error\n"); printf("*** probably means that the wrong copy of the libmcrypt-config shell script is\n"); printf("*** being found. The easiest way to fix this is to remove the old version\n"); printf("*** of LIBMCRYPT, but you can also set the LIBMCRYPT_CONFIG environment to point to the\n"); printf("*** correct copy of libmcrypt-config. (In this case, you will have to\n"); printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n"); printf("*** so that the correct libraries are found at run-time)\n"); } } return 1; #endif /* 20010201 */ } ],, no_libmcrypt=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"]) CFLAGS="$ac_save_CFLAGS" LIBS="$ac_save_LIBS" if test "x$no_libmcrypt" = x ; then AC_MSG_RESULT(yes) ifelse([$2], , :, [$2]) else if test -f conf.libmcrypttest ; then : else AC_MSG_RESULT(no) fi if test -f conf.libmcrypttest ; then : else echo "*** Could not run libmcrypt test program, checking why..." CFLAGS="$CFLAGS $LIBMCRYPT_CFLAGS" LIBS="$LIBS $LIBMCRYPT_LIBS" AC_TRY_LINK([ #include #include #include #include ], [ #if MCRYPT_API_VERSION <= 20010201 #if MCRYPT_API_VERSION <= 19991015 /* version 2.2 */ int x = mcrypt_get_key_size(MCRYPT_TWOFISH_128); return 0; #else /* version 2.4 before 11 */ MCRYPT td = mcrypt_module_open("twofish", NULL, "cbc", NULL); mcrypt_module_close(td); return 0; #endif /* 19991015 */ #else return !!mcrypt_check_version(NULL); #endif /* 20010201 */ ], [ echo "*** The test program compiled, but did not run. This usually means" echo "*** that the run-time linker is not finding LIBMCRYPT or finding the wrong" echo "*** version of LIBMCRYPT. If it is not finding LIBMCRYPT, you'll need to set your" echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" echo "*** to the installed location Also, make sure you have run ldconfig if that" echo "*** is required on your system" echo "***" echo "*** If you have an old version installed, it is best to remove it, although" echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" echo "***" ], [ echo "*** The test program failed to compile or link. See the file config.log for the" echo "*** exact error that occured. This usually means LIBMCRYPT was incorrectly installed" echo "*** or that you have moved LIBMCRYPT since it was installed. In the latter case, you" echo "*** may want to edit the libmcrypt-config script: $LIBMCRYPT_CONFIG" ]) CFLAGS="$ac_save_CFLAGS" LIBS="$ac_save_LIBS" fi LIBMCRYPT_CFLAGS="" LIBMCRYPT_LIBS="" ifelse([$3], , :, [$3]) fi rm -f conf.libmcrypttest AC_SUBST(LIBMCRYPT_CFLAGS) AC_SUBST(LIBMCRYPT_LIBS) ]) dnl *-*wedit:notab*-* Please keep this as the last line. man/man3/mcrypt.3000064400000060470152531566440007601 0ustar00.TH MCRYPT 3 "10 March 2002" .SH NAME libmcrypt \- encryption/decryption library .SH SYNOPSIS [see also .I mcrypt.h for more information] .SH DESCRIPTION The .I libmcrypt is a data encryption library. The library is thread safe and provides encryption and decryption functions. This version of the library supports many encryption algorithms and encryption modes. Some algorithms which are supported: SERPENT, RIJNDAEL, 3DES, GOST, SAFER+, CAST-256, RC2, XTEA, 3WAY, TWOFISH, BLOWFISH, ARCFOUR, WAKE and more. .LP OFB, CBC, ECB, nOFB, nCFB and CFB are the modes that all algorithms may function. ECB, CBC, encrypt in blocks but CTR, nCFB, nOFB, CFB and OFB in bytes (streams). Note that CFB and OFB in the rest of the document represent the "8bit CFB or OFB" mode. nOFB and nCFB modes represents a n-bit OFB/CFB mode, n is used to represent the algorithm's block size. The library supports an extra STREAM mode to include some stream algorithms like WAKE or ARCFOUR. In this version of the library all modes and algorithms are modular, which means that the algorithm and the mode is loaded at run-time. This way you can add algorithms and modes faster, and much easier. .I LibMcrypt includes the following symmetric (block) algorithms: .B DES: The traditional DES algorithm designed by IBM and US NSA. Uses 56 bit key and 64 bit block. It is now considered a weak algorithm, due to its small key size (it was never intended for use with classified data). .B 3DES or Triple DES: DES but with multiple (triple) encryption. It encrypts the plaintext once, then decrypts it with the second key, and encrypts it again with the third key (outer cbc mode used for cbc). Much better than traditional DES since the key is now 168 bits (actually the effective key length is 112 bits due to the meet-in-the-middle attack). .B CAST-128: CAST was designed in Canada by Carlisle Adams and Stafford Tavares. The original algorithm used a 64bit key and block. The algorithm here is CAST-128 (also called CAST5) which has a 128bit key and 64bit block size. .B CAST-256: CAST-256 was designed by Carlisle Adams. It is a symmetric cipher designed in accordance with the CAST design procedure. It is an extention of the CAST-128, having a 128 bit block size, and up to 256 bit key size. .B xTEA: TEA stands for the Tiny Encryption Algorithm. It is a feistel cipher designed by David Wheeler & Roger M. Needham. The original TEA was intended for use in applications where code size is at a premium, or where it is necessary for someone to remember the algorithm and code it on an arbitrary machine at a later time. The algorithm used here is extended TEA and has a 128bit key size and 64bit block size. .B 3-WAY: The 3way algorithm designed by Joan Daemen. It uses key and block size of 96 bits. .B SKIPJACK: SKIPJACK was designed by the US NSA. It was part of the ill-fated "Clipper" Escrowed Encryption Standard (EES) (FIPS 185) proposal. It operates on 64bit blocks and uses a key of 80 bits. SKIPJACK is provided only as an extra module to libmcrypt. .B BLOWFISH: The Blowfish algorithm designed by Bruce Schneier. It is better and faster than DES. It can use a key up to 448 bits. .B TWOFISH: Twofish was designed by Bruce Schneier, Doug Whiting, John Kelsey, Chris Hall, David Wagner for Counterpane systems. Intended to be highly secure and highly flexible. It uses a 128bit block size and 128,192,256 bit key size. (Twofish is the default algorithm) .B LOKI97: LOKI97 was designed by Lawrie Brown and Josef Pieprzyk. It has a 128-bit block length and a 256bit key schedule, which can be initialized using 128, 192 or 256 bit keys. It has evolved from the earlier LOKI89 and LOKI91 64-bit block ciphers, with a strengthened key schedule and a larger keyspace. .B RC2: RC2 (RC stands for Rivest Cipher) was designed by Ron Rivest. It uses block size of 64 bit and a key size from 8 to 1024 bits. It is optimized for 16bit microprocessors (reflecting its age). It is described in the RFC2268. .B ARCFOUR: RC4 was designed by Ron Rivest. For several years this algorithm was considered a trade secret and details were not available. In September 1994 someone posted the source code in the cypherpunks mailing list. Although the source code is now available RC4 is trademarked by RSADSI so a compatible cipher named ARCFOUR is included in the mcrypt distribution. It is a stream cipher and has a maximum key of 2048 bits. .B RC6: RC6 was designed by Ron Rivest for RSA labs. In mcrypt it uses block size of 128 bit and a key size of 128/192/256 bits. Refer to RSA Labs and Ron Rivest for any copyright, patent or license issues for the RC6 algorithm. RC6 is provided only as an extra module to libmcrypt. .B RIJNDAEL: Rijndael is a block cipher, designed by Joan Daemen and Vincent Rijmen, and was approved for the USA's NIST Advanced Encryption Standard, FIPS-197. The cipher has a variable block length and key length. Rijndael can be implemented very efficiently on a wide range of processors and in hardware. The design of Rijndael was strongly influenced by the design of the block cipher Square. There exist three versions of this algorithm, namely: .B RIJNDAEL-128 (the AES winner) , .B RIJNDAEL-192 , .B RIJNDAEL-256 The numerals 128, 192 and 256 stand for the length of the block size. .B MARS: MARS is a 128-bit block cipher designed by IBM as a candidate for the Advanced Encryption Standard. Refer to IBM for any copyright, patent or license issues for the MARS algorithm. MARS is provided only as an extra module to libmcrypt. .B PANAMA: PANAMA is a cryptographic module that can be used both as a cryptographic hash function and as a stream cipher. It designed by Joan Daemen and Craig Clapp. PANAMA (the stream cipher) is included in libmcrypt. .B WAKE: WAKE stands for Word Auto Key Encryption, and is an encryption system for medium speed encryption of blocks and of high security. WAKE was designed by David J. Wheeler. It is intended to be fast on most computers and relies on repeated table use and having a large state space. .B SERPENT: Serpent is a 128-bit block cipher designed by Ross Anderson, Eli Biham and Lars Knudsen as a candidate for the Advanced Encryption Standard. Serpent's design was limited to well understood mechanisms, so that could rely on the wide experience of block cipher cryptanalysis, and achieve the highest practical level of assurance that no shortcut attack will be found. Serpent has twice as many rounds as are necessary, to block all currently known shortcut attacks. Despite these exacting design constraints, Serpent is faster than DES. .B IDEA: IDEA stands for International Data Encryption Algorithm and was designed by Xuejia Lai and James Massey. It operates on 64bit blocks and uses a key of 128 bits. Refer to Ascom-Tech AG for any copyright, patent or license issues for the IDEA algorithm. IDEA is provided only as an extra module to libmcrypt. .B ENIGMA (UNIX crypt): A one-rotor machine designed along the lines of Enigma but considerable trivialized. Very easy to break for a skilled cryptanalyst. I suggest against using it. Added just for completeness. .B GOST: A former soviet union's algorithm. An acronym for "Gosudarstvennyi Standard" or Government Standard. It uses a 256 bit key and a 64 bit block. The S-boxes used here are described in the Applied Cryptography book by Bruce Schneier. They were used in an application for the Central Bank of the Russian Federation. Some quotes from gost.c: The standard is written by A. Zabotin (project leader), G.P. Glazkov, and V.B. Isaeva. It was accepted and introduced into use by the action of the State Standards Committee of the USSR on 2 June 1989 as No. 1409. It was to be reviewed in 1993, but whether anyone wishes to take on this obligation from the USSR is questionable. This code is based on the 25 November 1993 draft translation by Aleksandr Malchik, with Whitfield Diffie, of the Government Standard of the U.S.S.R. GOST 28149-89, "Cryptographic Transformation Algorithm", effective 1 July 1990. (Whitfield.Diffie@eng.sun.com) Some details have been cleared up by the paper "Soviet Encryption Algorithm" by Josef Pieprzyk and Leonid Tombak of the University of Wollongong, New South Wales. (josef/leo@cs.adfa.oz.au) .B SAFER: SAFER (Secure And Fast Encryption Routine) is a block cipher developed by Prof. J.L. Massey at the Swiss Federal Institute of Technology. There exist four versions of this algorithm, namely: .B SAFER K-64 , .B SAFER K-128 , .B SAFER SK-64 and .B SAFER SK-128. The numerals 64 and 128 stand for the length of the user-selected key, 'K' stands for the original key schedule and 'SK' stands for the strengthened key schedule (in which some of the "weaknesses" of the original key schedule have been removed). In mcrypt only SAFER SK-64 and SAFER SK-128 are used. .B SAFER+: SAFER+ was designed by Prof. J.L. Massey, Prof. Gurgen H. Khachatrian and Dr. Melsik K. Kuregian for Cylink. SAFER+ is based on the existing SAFER family of ciphers and provides for a block size of 128bits and 128, 192 and 256 bits key length. .LP A short description of the modes supported by libmcrypt: .B STREAM: The mode used with stream ciphers. In this mode the keystream from the cipher is XORed with the plaintext. Thus you should NOT ever use the same key. .B ECB: The Electronic CodeBook mode. It is the simplest mode to use with a block cipher. Encrypts each block independently. It is a block mode so plaintext length should be a multiple of blocksize (n*blocksize). .B CBC: The Cipher Block Chaining mode. It is better than ECB since the plaintext is XOR'ed with the previous ciphertext. A random block should be placed as the first block (IV) so the same block or messages always encrypt to something different. It is a block mode so plaintext length should be a multiple of blocksize (n*blocksize). .B CFB: The Cipher-Feedback Mode (in 8bit). This is a self-synchronizing stream cipher implemented from a block cipher. This is the best mode to use for encrypting strings or streams. This mode requires an IV. .B OFB: The Output-Feedback Mode (in 8bit). This is a synchronous stream cipher implemented from a block cipher. It is intended for use in noisy lines, because corrupted ciphertext blocks do not corrupt the plaintext blocks that follow. Insecure (because used in 8bit mode) so it is recommended not to use it. Added just for completeness. .B nOFB: The Output-Feedback Mode (in nbit). n Is the size of the block of the algorithm. This is a synchronous stream cipher implemented from a block cipher. It is intended for use in noisy lines, because corrupted ciphertext blocks do not corrupt the plaintext blocks that follow. This mode operates in streams. .B nCFB: The Cipher-Feedback Mode (in nbit). n Is the size of the block of the algorithm. This is a self synchronizing stream cipher implemented from a block cipher. This mode operates in streams. .B CTR: The Counter Mode. This is a stream cipher implemented from a block cipher. This mode uses the cipher to encrypt a set of input blocks, called counters, to produce blocks that will be XORed with the plaintext. In libmcrypt the counter is the given IV which is incremented at each step. This mode operates in streams. .B Error Recovery in these modes: If bytes are removed or lost from the file or stream in ECB, CTR, CBC and OFB modes, are impossible to recover, although CFB and nCFB modes will recover. If some bytes are altered then a full block of plaintext is affected in ECB, nOFB and CTR modes, two blocks in CBC, nCFB and CFB modes, but only the corresponding byte in OFB mode. .LP Encryption can be done as follows: A call to function: .B MCRYPT mcrypt_module_open( char *algorithm, char* algorithm_directory, .B char* mode, char* mode_directory); This function associates the algorithm and the mode specified. The name of the algorithm is specified in algorithm, eg "twofish", and the algorithm_directory is the directory where the algorithm is (it may be null if it is the default). The same applies for the mode. The library is closed by calling mcrypt_module_close(), but you should not call that function if mcrypt_generic_end() is called before. Normally it returns an encryption descriptor, or MCRYPT_FAILED on error. A call to function: .B int mcrypt_generic_init( MCRYPT td, void *key, .B int lenofkey, .B void *IV); This function initializes all buffers for the specified thread The maximum value of lenofkey should be the one obtained by calling mcrypt_get_key_size() and every value smaller than this is legal. Note that Lenofkey should be specified in bytes not bits. The IV should normally have the size of the algorithms block size, but you must obtain the size by calling mcrypt_get_iv_size(). IV is ignored in ECB. IV MUST exist in CFB, CBC, STREAM, nOFB and OFB modes. It needs to be random and unique (but not secret). The same IV must be used for encryption/decryption. After calling this function you can use the descriptor for encryption or decryption (not both). Returns a negative value on error. To encrypt now call: .B int mcrypt_generic( MCRYPT td, void *plaintext, int len); This is the main encryption function. td is the encryption descriptor returned by mcrypt_generic_init(). Plaintext is the plaintext you wish to encrypt and len should be the length (in bytes) of the plaintext and it should be k*algorithms_block_size if used in a mode which operated in blocks (cbc, ecb, nofb), or whatever when used in cfb or ofb which operate in streams. The plaintext is replaced by the ciphertext. Returns 0 on success. To decrypt you can call: .B int mdecrypt_generic( MCRYPT td, void *ciphertext, int len); The decryption function. It is almost the same with mcrypt_generic. Returns 0 on success. When you're finished you should call: .B int mcrypt_generic_end( MCRYPT td); This function terminates encryption specified by the encryption descriptor (td). Actually it clears all buffers, and closes all the modules used. Returns a negative value on error. .B This function is deprecated. Use mcrypt_generic_deinit() and mcrypt_module_close() instead. .B int mcrypt_generic_deinit( MCRYPT td); This function terminates encryption specified by the encryption descriptor (td). Actually it clears all buffers. The difference with mcrypt_generic_end() is that this function does not close the modules used. Thus you should use mcrypt_module_close(). Using this function you gain in speed if you use the same modules for several encryptions. Returns a negative value on error. .B int mcrypt_module_close( MCRYPT td); This function closes the modules used by the descriptor td. .P These are some extra functions that operate on modules that have been opened: These functions have the prefix mcrypt_enc_*. .B int mcrypt_enc_set_state(MCRYPT td, void *state, int size); This function sets the state of the algorithm. Can be used only with block algorithms and certain modes like CBC, CFB etc. It is usefully if you want to restart or start a different encryption quickly. Returns zero on success. The state is the output of mcrypt_enc_get_state(). .B int mcrypt_enc_get_state(MCRYPT td, void *state, int *size); This function returns the state of the algorithm. Can be used only certain modes and algorithms. The size will hold the size of the state and the state must have enough bytes to hold it. Returns zero on success. .B int mcrypt_enc_self_test( MCRYPT td); This function runs the self test on the algorithm specified by the descriptor td. If the self test succeeds it returns zero. .B int mcrypt_enc_is_block_algorithm_mode( MCRYPT td); Returns 1 if the mode is for use with block algorithms, otherwise it returns 0. (eg. 0 for stream, and 1 for cbc, cfb, ofb) .B int mcrypt_enc_is_block_algorithm( MCRYPT td); Returns 1 if the algorithm is a block algorithm or 0 if it is a stream algorithm. .B int mcrypt_enc_is_block_mode( MCRYPT td); Returns 1 if the mode outputs blocks of bytes or 0 if it outputs bytes. (eg. 1 for cbc and ecb, and 0 for cfb and stream) .B int mcrypt_enc_get_block_size( MCRYPT td); Returns the block size of the algorithm specified by the encryption descriptor in bytes. The algorithm MUST be opened using mcrypt_module_open(). .B int mcrypt_enc_get_key_size( MCRYPT td); Returns the maximum supported key size of the algorithm specified by the encryption descriptor in bytes. The algorithm MUST be opened using mcrypt_module_open(). .B int* mcrypt_enc_get_supported_key_sizes( MCRYPT td, int* sizes) Returns the key sizes supported by the algorithm specified by the encryption descriptor. If sizes is zero and returns NULL then all key sizes between 1 and mcrypt_get_key_size() are supported by the algorithm. If it is 1 then only the mcrypt_get_key_size() size is supported and sizes[0] is equal to it. If it is greater than 1 then that number specifies the number of elements in sizes which are the key sizes that the algorithm supports. The returned value is allocated with malloc, so you should not forget to free it. .B int mcrypt_enc_get_iv_size( MCRYPT td); Returns size of the IV of the algorithm specified by the encryption descriptor in bytes. The algorithm MUST be opened using mcrypt_module_open(). If it is '0' then the IV is ignored in that algorithm. IV is used in CBC, CFB, OFB modes, and in some algorithms in STREAM mode. .B int mcrypt_enc_mode_has_iv( MCRYPT td); Returns 1 if the mode needs an IV, 0 otherwise. Some 'stream' algorithms may need an IV even if the mode itself does not need an IV. .B char* mcrypt_enc_get_algorithms_name( MCRYPT td); Returns a character array containing the name of the algorithm. The returned value is allocated with malloc, so you should not forget to free it. .B char* mcrypt_enc_get_modes_name( MCRYPT td); Returns a character array containing the name of the mode. The returned value is allocated with malloc, so you should not forget to free it. .P These are some extra functions that operate on modules: These functions have the prefix mcrypt_module_*. .B int mcrypt_module_self_test (char* algorithm, char* directory); This function runs the self test on the specified algorithm. If the self test succeeds it returns zero. .B int mcrypt_module_is_block_algorithm_mode( char* algorithm, char* directory); Returns 1 if the mode is for use with block algorithms, otherwise it returns 0. (eg. 0 for stream, and 1 for cbc, cfb, ofb) .B int mcrypt_module_is_block_algorithm( char* mode, char* directory); Returns 1 if the algorithm is a block algorithm or 0 if it is a stream algorithm. .B int mcrypt_module_is_block_mode( char* mode, char* directory); Returns 1 if the mode outputs blocks of bytes or 0 if it outputs bytes. (eg. 1 for cbc and ecb, and 0 for cfb and stream) .B int mcrypt_module_get_algo_block_size( char* algorithm, char* directory); Returns the block size of the algorithm. .B int mcrypt_module_get_algo_key_size( char* algorithm, char* directory); Returns the maximum supported key size of the algorithm. .B int* mcrypt_module_get_algo_supported_key_sizes( char* algorithm, char* directory, int* sizes); Returns the key sizes supported by the algorithm. If sizes is zero and returns NULL then all key sizes between 1 and mcrypt_get_key_size() are supported by the algorithm. If it is 1 then only the mcrypt_get_key_size() size is supported and sizes[0] is equal to it. If it is greater than 1 then that number specifies the number of elements in sizes which are the key sizes that the algorithm supports. This function differs to mcrypt_enc_get_supported_key_sizes(), because the return value here is allocated (not static), thus it should be freed. .LP .B char** mcrypt_list_algorithms ( char* libdir, int* size); Returns a pointer to a character array containing all the mcrypt algorithms located in the libdir, or if it is NULL, in the default directory. The size is the number of the character arrays. The arrays are allocated internally and should be freed by using mcrypt_free_p(). .B char** mcrypt_list_modes ( char* libdir, int *size); Returns a pointer to a character array containing all the mcrypt modes located in the libdir, or if it is NULL, in the default directory. The size is the number of the character arrays. The arrays should be freed by using mcrypt_free_p(). .B void mcrypt_free_p (char **p, int size); Frees the pointer to array returned by previous functions. .B void mcrypt_free (void *ptr); Frees the memory used by the pointer. .B void mcrypt_perror(int err); This function prints a human readable description of the error 'err' in the stderr. The err should be a value returned by mcrypt_generic_init(). .B const char* mcrypt_strerror(int err); This function returns a human readable description of the error 'err'. The err should be a value returned by mcrypt_generic_init(). .B int mcrypt_mutex_register ( void (*mutex_lock)(void) , void (*mutex_unlock)(void) ); This function is only used in multithreaded application and only if compiled with dynamic module loading support. This is actually used internally in libltdl. Except for the dynamic module loading libmcrypt is thread safe. .LP Some example programs follow here. Compile as "cc prog.c -lmcrypt", or "cc prog.c -lmcrypt -lltdl" depending on your installation. Libltdl is used for opening dynamic libraries (modules). .nf /* First example: Encrypts stdin to stdout using TWOFISH with 128 bit key and CFB */ #include #include #include /* #include */ main() { MCRYPT td; int i; char *key; char password[20]; char block_buffer; char *IV; int keysize=16; /* 128 bits */ key=calloc(1, keysize); strcpy(password, "A_large_key"); /* Generate the key using the password */ /* mhash_keygen( KEYGEN_MCRYPT, MHASH_MD5, key, keysize, NULL, 0, password, strlen(password)); */ memmove( key, password, strlen(password)); td = mcrypt_module_open("twofish", NULL, "cfb", NULL); if (td==MCRYPT_FAILED) { return 1; } IV = malloc(mcrypt_enc_get_iv_size(td)); /* Put random data in IV. Note these are not real random data, * consider using /dev/random or /dev/urandom. */ /* srand(time(0)); */ for (i=0; i< mcrypt_enc_get_iv_size( td); i++) { IV[i]=rand(); } i=mcrypt_generic_init( td, key, keysize, IV); if (i<0) { mcrypt_perror(i); return 1; } /* Encryption in CFB is performed in bytes */ while ( fread (&block_buffer, 1, 1, stdin) == 1 ) { mcrypt_generic (td, &block_buffer, 1); /* Comment above and uncomment this to decrypt */ /* mdecrypt_generic (td, &block_buffer, 1); */ fwrite ( &block_buffer, 1, 1, stdout); } /* Deinit the encryption thread, and unload the module */ mcrypt_generic_end(td); return 0; } /* Second Example: encrypts using CBC and SAFER+ with 192 bits key */ #include #include #include main() { MCRYPT td; int i; char *key; /* created using mcrypt_gen_key */ char *block_buffer; char *IV; int blocksize; int keysize = 24; /* 192 bits == 24 bytes */ key = calloc(1, keysize); strcpy(key, "A_large_and_random_key"); td = mcrypt_module_open("saferplus", NULL, "cbc", NULL); blocksize = mcrypt_enc_get_block_size(td); block_buffer = malloc(blocksize); /* but unfortunately this does not fill all the key so the rest bytes are * padded with zeros. Try to use large keys or convert them with mcrypt_gen_key(). */ IV=malloc(mcrypt_enc_get_iv_size(td)); /* Put random data in IV. Note these are not real random data, * consider using /dev/random or /dev/urandom. */ /* srand(time(0)); */ for (i=0; i < mcrypt_enc_get_iv_size(td); i++) { IV[i]=rand(); } mcrypt_generic_init( td, key, keysize, IV); /* Encryption in CBC is performed in blocks */ while ( fread (block_buffer, 1, blocksize, stdin) == blocksize ) { mcrypt_generic (td, block_buffer, blocksize); /* mdecrypt_generic (td, block_buffer, blocksize); */ fwrite ( block_buffer, 1, blocksize, stdout); } /* deinitialize the encryption thread */ mcrypt_generic_deinit (td); /* Unload the loaded module */ mcrypt_module_close(td); return 0; } .fi .LP The library does not install any signal handler. .LP Questions about libmcrypt should be sent to: .IP mcrypt-dev@lists.hellug.gr or, if this fails, to the author addresses given below. The mcrypt home page is: .IP http://mcrypt.hellug.gr .LP .SH AUTHORS Version 2.4 Copyright (C) 1998-1999 Nikos Mavroyanopoulos (nmav@hellug.gr). .LP Thanks to all the people who reported problems and suggested various improvements for mcrypt; who are too numerous to cite here. .LP .\" end of man page