diff -urN linux/Documentation/Configure.help int.2.4.0.t2/Documentation/Configure.help --- linux/Documentation/Configure.help Thu Jul 6 16:07:59 2000 +++ int.2.4.0.t2/Documentation/Configure.help Thu Jul 6 14:20:20 2000 @@ -326,6 +326,18 @@ Most users will answer N here. +General encryption support (EXPERIMENTAL)' +CONFIG_BLK_DEV_LOOP_GEN + [2000-07-06] + If you answer yes to this option, the loop-driver will support all + crypto algorithms selected in the crypto library (see the 'Crypto' + menu entry in the main menu). + + This loop module will use the ciphers in CBC-mode which is more + secure than ECB-mode. This module will also initialize the CBC-mode + of the cipher with the block-number of the block being encrypted. + + Network Block Device support CONFIG_BLK_DEV_NBD Saying Y here will allow your computer to be a client for network diff -urN linux/Documentation/crypto/ChangeLog int.2.4.0.t2/Documentation/crypto/ChangeLog --- linux/Documentation/crypto/ChangeLog Thu Jan 1 01:00:00 1970 +++ int.2.4.0.t2/Documentation/crypto/ChangeLog Thu Jul 6 16:13:43 2000 @@ -0,0 +1,498 @@ +2000-07-06 Alexander Kjeldaas + + * International kernel patch 2.4.0-test2.1 released. + + * Ported the crypto API and loop_gen.c from international kernel + patch 2.2.16.5 to 2.4.0-test2. Ciphers will follow.. + +2000-07-03 Alexander Kjeldaas + + * International kernel patch 2.2.16.5 released. + + * Removed {un,}lock_cipher, {un,}lock_digest functions. Use + {digest,cipher}_implementation->{un,}lock() directly instead. + + * Stopped using linux/lists.h which is depreciated. + + * Merged crypto/cipherapi.c and crypto/digestapi.c into single + interface cryptoapi.c, saving 4k. Cipher- and digest algorithms + are now subclasses of a "transform". The old interface is still + supported for the most part. + + * Changed encrypt/decrypt interfaces to use byte-pointers instead + of int32-pointers. This means that the ciphers should start being + endian-aware. + +2000-06-27 Alexander Kjeldaas + + * International kernel patch 2.2.16.4 released. + * Fixed build bug that prevented digestapi.c from being built for + kernels with modules disabled. Fix by + Andreas Steinmetz + +2000-06-19 Alexander Kjeldaas + + * International kernel patch 2.2.16.3 released. + * Changed generic_rotl and generic_rotr to be macros instead of + inline functions. Gcc uses an extra register with the inline + functions (noted by Gisle Sælensminde). + * Fixed bug in Makefile for SHA1 digest (noted by Walter Hofmann + ). + +2000-06-19 Gisle Sælensminde + + * Further serpent implementation optimization. + +2000-06-14 Alexander Kjeldaas + + * International kernel patch 2.2.16.2 released. + * Fixed bug in md5c.c:Decode for big-endian machines. Noted by + David Kuestler . + +2000-06-14 Gisle Sælensminde + + * Faster serpent implementation based on optimized pentium-sboxes + made by Dag Arne Osvik. + +2000-06-14 Hauke Johannknecht + + * Documentation updates (replay.com -> zedz.com) + * Added util-linux-2.10m.int.patch + +2000-06-14 Alexander Kjeldaas + + * International kernel patch 2.2.16.1 released. + * International kernel patch 2.2.15.1 released. + +2000-02-18 Alexander Kjeldaas + + * International kernel patch 2.2.14.1 released. + +1999-11-23 Alexander Kjeldaas + + * International kernel patch 2.2.13.3 released. + + * Minor tweak to make sure the FreeSWAN 1.1 release patches cleanly. + +1999-11-23 Andrew McDonald + + * SHA1 implementation for the digest API added (based on the + public domain code by Steve Reid and the md5glue code). + + * Added a digest algorithm test program in linux/crypto/testing/ + + * FIX: The blowfish module claimed to have a 128-bit (16 byte) + blocksize and IV. The correct number is of course 64-bit. + + * FIX: The working size for MD5 was wrong (too little memory was + allocated). + +1999-10-25 Alexander Kjeldaas + + * International kernel patch 2.2.13.2 released. + + * Compile fix for MD5 by Hermann Schichl + +1999-10-20 Alexander Kjeldaas + + * International kernel patch 2.2.13.1 released. + + * New upstream kernel release. + +1999-09-15 Alexander Kjeldaas + + * International kernel patch 2.2.12.2 released. + + * Digest API mirroring the cipher API added. Contributed by Alan + Smithee. + + * MD5 digest algorithm added. + +1999-09-08 Alexander Kjeldaas + + * International kernel patch 2.2.12.1 released. + +1999-09-06 Alexander Kjeldaas + + * Updated util-linux patch in Documentation/crypto and removed + some patches that nobody uses. + +1999-08-12 Alexander Kjeldaas + + * International kernel patch 2.2.11.2 released. + + * CIPE can only be built as a module, the make config indicated + otherwise. + + * Upgraded to CIPE 1.3.0 + + * International kernel patch 2.2.11.1 released. + + * New upstream kernel release. + +1999-06-24 Alexander Kjeldaas + + * International kernel patch 2.2.10.4 released. + + * Added new config option for using relative block numbers instead + of absolute ones when calling the loop block device's transfer + function. This should fix the #1 issue with using loopback crypto + filesystems. + + * Updated Documentation/Configure.help which had erroneous + CONFIG_XX variables listed for various ciphers [Thanks to Andrew + Pam for spotting this]. + + * Added LO_CRYPT_RIJNDAEL and LO_CRYPT_RC5 variables to + include/linux/loop.h. + + * Updated the faq to mention rijndael and rc5, as well as how to + convert from the old absolute block number stuff to the new + relative one. + +1999-06-24 Alexander Kjeldaas + + * International kernel patch 2.2.10.3 released. + +1999-06-24 Andrew Pam + + * Updated util-linux patch to cover 2.9s + +1999-06-23 Alexander Kjeldaas + + * International kernel patch 2.2.10.2 released. + * Stuff in linux/crypto/testing didn't compile. + +1999-06-19 Pekka Riikonen + + * Added RC5 cipher. + +1999-06-18 Alexander Kjeldaas + + * International kernel patch 2.2.10.1 released. + * ENskip support didn't compile. + +1999-05-21 Alexander Kjeldaas + + * International kernel patch 2.2.9.1 released. + +1998-12-18 Patrice Lacroix + + * Updates to the faq (Documentation/crypto/faq.txt) + +1999-04-15 Alexander Kjeldaas + + * International kernel patch 2.2.5.1 released. + * Merged with kernel 2.2.5 + * New documentation for loopback crypto in + Documentation/crypto/faq.txt + +1999-03-25 Alexander Kjeldaas + + * International kernel patch 2.2.4.1 released. + * Merged with kernel 2.2.4 + +1999-01-29 Alexander Kjeldaas + + * International kernel patch 2.2.1.1 released. + +1998-01-29 Patrice Lacroix + + * /proc/crypto support. + +1999-01-27 Alexander Kjeldaas + + * International kernel patch 2.2.0.2 released. + + * missing #endif in net/ipv4/ip_output.c in latest patch + fixed. Missing #include fixed in crypto.h + +1999-01-26 Alexander Kjeldaas + + * International kernel patch 2.2.0.1 released. + + * Merged Frank Bernard's latest ENskip patches. + +1999-01-18 Alexander Kjeldaas + + * International kernel patch 2.2.0-pre7.4 released. + + * Added cbc-mode to cast256 cipher. + + * Removed spam on unload from crypto modules. + + * Added updated ENskip patches from Frank Bernard's web site: + http://www.linux-firewall.de/enskip/ + + * International kernel patch 2.2.0-pre7.3 released. + + * Added missing cleanup_module to DES, Blowfish and IDEA ciphers. + + * International kernel patch 2.2.0-pre7.2 released. + + * Cleanup in drivers/block/Config.in. It was possible to create + an invalid .config file. + + * Minor crypto/api.c cleanup. + +1999-01-17 Alexander Kjeldaas + + * International kernel patch 2.2.0-pre7.1 released. + + * Added testcip.c - a general purpose cipher test program. Added + test-vector scripts for Blowfish, DES, Mars, and Serpent. + + * Naming error left users unable to compile loop_gen unless it was + compiled as a module. + + * Updated Serpent implementation. Sam Simpson has been running a + background task on a cluster of high performance servers. After a + search involving around 1000 machine hours improved sboxes were + found. + + * Updated RC6 implementation. Supposedly faster. + + * Updated MARS implementation. Fixes a bug in mars_set_key. + +1999-01-07 Alexander Kjeldaas + + * International kernel patch 2.2.0-pre5.1 released. + * Merged with vanilla 2.2.0-pre5 + +1999-01-05 Herbert Valerio Riedel + + * APX fixes. + +1999-01-04 Alexander Kjeldaas + + * International kernel patch 2.2.0-pre4.1 released. + + * Removed obsolete loop_idea.c and loop_blow.c since IDEA and + blowfish algorithms have been added to the crypto library. + + * drivers/block/ll_rw_blk.c: Added loop_gen_init. loop_gen only + worked as a module. + +1998-12-30 Alexander Kjeldaas + + * crypto/testing/speed.c: i386-specific timer-code removed. + + * crypto configuration added for all architectures (previously + only i386 was supported). However, 64-bit and endian issues needs + to be ironed out for a lot of platforms (maybe even i386). + +1998-12-29 Alexander Kjeldaas + + * International kernel patch 2.2.0-pre1.1 released. + * International kernel patch 2.1.131.8 released. + * DES/IDEA compile fixes. + +1998-12-29 Raimar Falke + + * DES cipher added. crypto/testing/speed.c fixes. + +1998-12-18 Alexander Kjeldaas + + * International kernel patch 2.1.131.7 released. + +1998-12-18 Raimar Falke + + * include-fixes for IDEA cipher. + +1998-12-18 Alexander Kjeldaas + + * International kernel patch 2.1.131.6 released. + +1998-12-18 Raimar Falke + + * IDEA cipher added. + +1998-12-18 Patrice Lacroix + + * My latest patch for modular loop encryption. I think everything + is in there. Ciphers are only requested on LOOP_SET_STATUS. Module + count is always right (for what I have tested) and unloading now + works. + +1998-12-17 Alexander Kjeldaas + + * International kernel patch 2.1.131.5 released. + +1998-12-17 Raimar Falke + + * Extracted the blowfish code from loop_blow and made a + cipher-module of it. + +1998-12-17 Alexander Kjeldaas + + * Removed loop_serpent, loop_mars, loop_dfc and loop_rc6 since + their funcionality is available through loop_gen. + +1998-12-16 Alexander Kjeldaas + + * Removed loop_idea from the configuration menus. It hasn't been + converted to the new API. + +1998-12-14 Alexander Kjeldaas + + * Fixes to the rijndael cipher. It builds, but isn't working + properly so it it disabled for the moment. The cipher is from + Dr. Brian Gladman AES + reimplementation project. More information on rijndael: + http://www.esat.kuleuven.ac.be/~rijmen/rijndael/ Rijndael is free. + +1998-12-14 Patrice Lacroix + + * More modular ciphers/loop patches. Cipher locking fixes. + Autoloading of ciphers. More loop and loop_gen integration. + +1998-12-14 Alexander Kjeldaas + + * International kernel patch 2.1.131.4 released. + + * Added util-linux-2.9e patch to Documentation/crypto that makes + all the loopback ciphers available to the losetup utility. + +1998-12-12 Alexander Kjeldaas + + * International kernel patch 2.1.131.3 released. + + * Added the popular CIPE (crypto IP encapsulation) made by + Olaf Titz + + * Previous patch wouldn't build. International kernel patch + 2.1.131.2 released. + +1998-12-11 Alexander Kjeldaas + + * International kernel patch 2.1.131.1 released. + + * Clear sensitive memory before kfree in generel loop module. New + upstream kernel. + +1998-12-11 Patrice Lacroix + + * Modular ciphers + +1998-11-30 Alexander Kjeldaas + + * International kernel patch 2.1.130.1 released. + + * loop-devices other than loop_gen updated to use new interface. + However, the block-number isn't used for anything yet. + + * loop_gen.c: Now we use the ciphers in cbc-mode only. Also, the + IV of the cipher is initialized based on block-number. + + * Added general cbc-mode that is simply #included into the + ciphers. cbc-mode thus added to serpent, mars, rc6 and dfc. + + * Added ivsize to struct cipher_implementation. + + * Added for_each_cipher function + + * Added X11-like license for the crypto-directory. The code might + be useable for other projects as well in the future. [And GPL is + arguable the wrong license for crypto]. + +1998-11-25 Alexander Kjeldaas + + * The crypto api is useable from modules. + + * Fixed a bunch of bugs in loop_gen. I think the oopses are gone. + +1998-11-23 Alexander Kjeldaas + + * International kernel patch 2.1.129.4 released. + + * Added crypto/testing/speed.c to test the speed of the different + crypto algorithms. + + * cast256, crypton, rijndael, safer, and twofish added, but they + are not yet completely ported to the crypto-library. + + * Updated implementations of MARS, DFC, RC6 and SERPENT. + +1998-11-22 Alexander Kjeldaas + + * International kernel patch 2.1.129.3 released. + + * "loop_gen" - skeleton of general loop crypto driver added + + * Made loop-modules for DFC, MARS, and RC6 + + * Added DFC, MARS, and RC6 to crypto library + + * International kernel patch 2.1.129.2 released. + + * Updated documentation to show which loopback modules are ECB + and which are CBC. + + * Kernel crypto library on its way. Serpent is the first member. + + * Changed memcpy to memset in loop_blow.c to close a possible + plaintext leak. + +1998-11-20 Alexander Kjeldaas + + * New upstream kernel release 2.1.129 + +1998-11-13 Alexander Kjeldaas + + * New upstream kernel release 2.1.128 + +1998-11-09 Alexander Kjeldaas + + * New upstream kernel release 2.1.127 + +1998-10-12 Alexander Kjeldaas + + * drivers/block/loop_serpent.c: Made wrapper-module for the + serpent cipher. + + * crypto/serpent.c crypto/serpent_f_box.h}: Added serpent + implementation from Dr. B R Gladman + AES reimplementation project. + + * drivers/block/Config.in: Loopback crypto flagged experimental + +1998-10-09 Alexander Kjeldaas + + * International kernel patch 2.1.125.1 released. + + * New upstream kernel release 2.1.125 + +1998-10-08 Alexander Kjeldaas + + * International kernel patch 2.1.124.2 released. + + * Added Andi Kleene's loop fixes. Updated twofish, blowfish and + cast128 modules to use the new lock/unlock interface. + +1998-10-07 Alexander Kjeldaas + + * Ported loop_cast.c to the new loopback API interface. + + * Blowfish and Twofish can be compiled in instead of being + modules. + + * Added cast and idea to the config-system. + + * Wrote Configure.help entries for the loop crypto patches. + +1998-10-05 Alexander Kjeldaas + + * International kernel patch 2.1.124.1 released. + + * Added cast128 and idea loopback modules from Andrew E. Mileski's + loop-13.tar.gz package. + + * Added latest ENskip patches from Bob Tracy + +1998-10-05 Ingo Rohloff + + * Fixed bug in loop.c regarding handling of calls to + loop_release_xfer() + + * Added modules for blowfish and twofish to the loopback + filesystem diff -urN linux/Documentation/crypto/faq.txt int.2.4.0.t2/Documentation/crypto/faq.txt --- linux/Documentation/crypto/faq.txt Thu Jan 1 01:00:00 1970 +++ int.2.4.0.t2/Documentation/crypto/faq.txt Thu Jul 6 14:29:15 2000 @@ -0,0 +1,159 @@ +Questions and answers concerning crypto and looppack device +By Patrice Lacroix +Last update: 1999-05-21 + +1) What is the crypto API? + +It allow other parts of the kernel to use crypto in a generic way, +most notably the loopback device driver (loop_gen.c). + + +2) What is loop_gen? + +First, you should already be familiar with basic loopback device. See +losetup(1) for more info. + +Loop_gen is the generic encryption layer for the loopback driver. +It uses the crypto API to do encryption. It works with every ciphers +supported by the crypto API. Not all ciphers in the crypto library +support the API yet. + +Loop_gen (and the crypto api) will eventually replace all other loopback +encryption modules. + +Loop_gen use all supported ciphers in CBC mode. + + +3) What can I do with loop_gen? + +The basic loopback device driver allow you to use a file as a block +device. With loop_gen, data in the file associated with the loopback +block device can be encrypted with strong crypto. + +You can use the result as any other block device. If you create a file +system and mount it, then every file in the file system will be +automaticly encrypted. + + +4) Can I use all this as modules? + +Sure! In make menuconfig (or whatever), under Crypto options, say M to +Crypto ciphers and to the ciphers you want. Under Block Device, say M to +loopback device and to General Encryption Support. Don't select any other +encryption modules unless you can't live without them and they are +no longer suported by the crypto API. + +Build your kernel and modules, make modules_install, reboot, depmod -a + +In /etc/conf.modules, add: + +alias loop-xfer-gen-0 loop_gen +alias loop-xfer-gen-10 loop_gen +alias cipher-2 des +alias cipher-4 blowfish +alias cipher-6 idea +alias cipher-7 serp6f +alias cipher-8 mars6 +alias cipher-11 rc62 +alias cipher-15 dfc2 +alias cipher-16 rijndael +alias cipher-17 rc5 + + +5) Why all those funny numbers? + +In short, the kernel know ciphers only by number. If you really want to know +how it works, you can grep request_module in linux/crypto/api.c and +linux/drivers/block/loop.c. + + +6) I get "Unsupported encryption type" when I use losetup or mount. What's + wrong? + +You need a version of losetup and mount that understand new encryption +types. To get it, you probably have to apply the util-linux patch you can +find in linux/Documentation/crypto and rebuild mount and losetup. + + +7) Can I stack loop devices and encryption? + +Yes! + + +6) I can't access the content of my encrypted file system since I + moved the backing file to a new partition. Why? + +This is because when a block of data is encrypted with loop_gen, +its IV for CBC encryption is set to the real block where the +file is located on the block device underneath it. So when the +encrypted file system is physically moved on a block device, the +IV used for encryption and decryption change, and data can't be +decrypted correctly. + +As of patch-int-2.2.10.4, you should answer 'Y' to the question 'Use +relative block numbers as basis for transfer functions (RECOMMENDED)' +to avoid this problem. + +Another solution is to losetup your file once without using crypto and +then losetup again the first loopback block device to add +encryption. Since the encryption will always be from block 0 (inside +the first loopback device), the IV for CBC encryption will be the same +no matter where the original file is located. + +Ex: + +# losetup /dev/loop0 encfs.loop +# losetup -e blowfish /dev/loop1 /dev/loop0 +Password: (not shown) +# mount /dev/loop1 /mnt + +(here you can access the fs under /mnt...) + +(and to destroy loopback devices...) + +# umount /mnt +# losetup -d /dev/loop1 +# losetup -d /dev/loop0 + +With this solution, you can do backup of your encrypted data +(which is a good thing) but it's more complexe and it's probably +less secure (which is a bad thing). + + +7) Since patch-int-2.2.10.4 I can't access my encrypted device. + +As of patch-int-2.2.10.4, the encrypted files will be incompatible +with older files if you answer 'Y' to the question 'Use relative block +numbers as basis for transfer functions (RECOMMENDED)'. To be able to +back up your encrypted files in the future, you should convert to the +new layout [which uses relative block numbers as IV to the cipher +instead of absolute ones]. This can be accomplished by doing +something like the following: + + +# losetup -e mypreferredcipher /dev/loop0 /myfile + +# dd if=/dev/loop0 of=tmpfile +# losetup -d /dev/loop0 + + +# losetup -e mypreferredcipher /dev/loop0 /myfile + +# dd if=tmpfile of=/dev/loop0 +# dd if=/dev/zero of=tmpfile bs=1k count= +or you could download some of the special software used for wiping +magnetic media such as wipe from +http://gsu.linux.org.tr/wipe/ + +8) I made an encrypted filesystem on my hard-disk and tried to burn it + on a CD. Now I can't get the CD to work properly. + +This is a current limitation in the loop device code. The block size +(the smalles number of bytes that can be read) of a hard-disk is +smaller than the block size of a CD-ROM. This causes problems since +the block size dictates how many bytes are encrypted as a block. + +There is no solution to this problem at this time, but it isn't hard +to fix. Contact me (Alexander Kjeldaas ) if you're +willing to work on this problem. + diff -urN linux/Documentation/crypto/util-linux-2.10m.int.patch int.2.4.0.t2/Documentation/crypto/util-linux-2.10m.int.patch --- linux/Documentation/crypto/util-linux-2.10m.int.patch Thu Jan 1 01:00:00 1970 +++ int.2.4.0.t2/Documentation/crypto/util-linux-2.10m.int.patch Thu Jul 6 14:29:15 2000 @@ -0,0 +1,633 @@ +diff -uNr util-linux-2.10m/MCONFIG util-linux-2.10m.int/MCONFIG +--- util-linux-2.10m/MCONFIG Mon May 15 00:23:49 2000 ++++ util-linux-2.10m.int/MCONFIG Mon May 22 20:06:41 2000 +@@ -16,7 +16,7 @@ + # If HAVE_PAM is set to "yes", then login, chfn, chsh, and newgrp + # will use PAM for authentication. Additionally, passwd will not be + # installed as it is not PAM aware. +-HAVE_PAM=no ++HAVE_PAM=yes + + # If HAVE_SHADOW is set to "yes", then login, chfn, chsh, newgrp, passwd, + # and vipw will not be built or installed from the login-utils +diff -uNr util-linux-2.10m/mount/Makefile util-linux-2.10m.int/mount/Makefile +--- util-linux-2.10m/mount/Makefile Wed Apr 19 00:51:27 2000 ++++ util-linux-2.10m.int/mount/Makefile Mon May 22 20:07:45 2000 +@@ -30,7 +30,7 @@ + GEN_FILES = nfsmount.h nfsmount_xdr.c nfsmount_clnt.c + + # comment these out if you are not compiling in loop support +-LO_OBJS=lomount.o ++LO_OBJS=lomount.o rmd160.o + + all: $(PROGS) + +@@ -62,7 +62,7 @@ + $(COMPILE) -DMAIN lomount.c + mv lomount.o losetup.o + +-losetup: losetup.o ++losetup: losetup.o rmd160.o + $(LINK) $^ -o $@ + + mount.o umount.o nfsmount.o losetup.o fstab.o realpath.o sundries.o: sundries.h +diff -uNr util-linux-2.10m/mount/lomount.c util-linux-2.10m.int/mount/lomount.c +--- util-linux-2.10m/mount/lomount.c Tue Apr 18 23:48:34 2000 ++++ util-linux-2.10m.int/mount/lomount.c Mon May 22 20:35:29 2000 +@@ -27,6 +27,7 @@ + + #include "loop.h" + #include "lomount.h" ++#include "rmd160.h" + #include "nls.h" + + extern int verbose; +@@ -42,6 +43,14 @@ + { LO_CRYPT_NONE, "none" }, + { LO_CRYPT_XOR, "xor" }, + { LO_CRYPT_DES, "DES" }, ++ { LO_CRYPT_FISH2, "twofish" }, ++ { LO_CRYPT_BLOW, "blowfish"}, ++ { LO_CRYPT_CAST128, "cast128"}, ++ { LO_CRYPT_SERPENT, "serpent"}, ++ { LO_CRYPT_MARS, "mars" }, ++ { LO_CRYPT_RC6, "rc6" }, ++ { LO_CRYPT_DFC, "dfc" }, ++ { LO_CRYPT_IDEA, "idea"}, + { -1, NULL } + }; + +@@ -218,6 +227,7 @@ + loopinfo.lo_encrypt_key_size = strlen(loopinfo.lo_encrypt_key); + break; + case LO_CRYPT_DES: ++ printf(_("WARNING: Use of DES is depreciated.\n")); + pass = getpass (_("Password: ")); + strncpy (loopinfo.lo_encrypt_key, pass, 8); + loopinfo.lo_encrypt_key[8] = 0; +@@ -234,6 +244,22 @@ + return 1; + } + break; ++ case LO_CRYPT_FISH2: ++ case LO_CRYPT_BLOW: ++ pass = getpass("Password :"); ++ MDcalc((byte *)loopinfo.lo_encrypt_key,pass,strlen(pass)); ++ loopinfo.lo_encrypt_key_size=20; /* 160 Bit key */ ++ break; ++ case LO_CRYPT_IDEA: ++ case LO_CRYPT_CAST128: ++ case LO_CRYPT_SERPENT: ++ case LO_CRYPT_MARS: ++ case LO_CRYPT_RC6: ++ case LO_CRYPT_DFC: ++ pass = getpass("Password :"); ++ MDcalc((byte *)loopinfo.lo_encrypt_key,pass,strlen(pass)); ++ loopinfo.lo_encrypt_key_size=16; /* 128 Bit key */ ++ break; + default: + fprintf (stderr, + _("Don't know how to get key for encryption system %d\n"), +@@ -318,11 +344,18 @@ + + static void + usage(void) { ++ struct crypt_type_struct *c; + fprintf(stderr, _("usage:\n\ + %s loop_device # give info\n\ + %s -d loop_device # delete\n\ + %s [ -e encryption ] [ -o offset ] loop_device file # setup\n"), + progname, progname, progname); ++ fprintf(stderr, " where encryption is one of:\n"); ++ c = &crypt_type_tbl[0]; ++ while(c->name) { ++ fprintf(stderr, " %s\n", c->name); ++ c++; ++ } + exit(1); + } + +diff -uNr util-linux-2.10m/mount/losetup.8 util-linux-2.10m.int/mount/losetup.8 +--- util-linux-2.10m/mount/losetup.8 Fri Jul 9 04:56:39 1999 ++++ util-linux-2.10m.int/mount/losetup.8 Mon May 22 20:14:18 2000 +@@ -36,11 +36,47 @@ + .PD 0 + .IP \fBXOR\fP + use a simple XOR encryption. ++.IP \fBBlowfish\fP ++use Blowfish encryption. Blowfish encryption is only available if you ++are using the international kernel and Blowfish encryption has been ++enabled in the Crypto API. ++.IP \fBTwofish\fP ++use Twofish encryption. Twofish encryption is only available if you ++are using the international kernel and Twofish encryption has been ++enabled in the Crypto API. ++.IP \fBCAST\fP ++use CAST encryption. CAST encryption is only available if you ++are using the international kernel and CAST encryption has been ++enabled in the Crypto API. + .IP \fBDES\fP + use DES encryption. DES encryption is only available if the optional + DES package has been added to the kernel. DES encryption uses an additional + start value that is used to protect passwords against dictionary +-attacks. ++attacks. Use of DES is deprecated. ++.IP \fBDFC\fP ++use DFC encryption. DFC encryption is only available if you ++are using the international kernel and DFC encryption has been ++enabled in the Crypto API. ++.IP \fBIDEA\fP ++use IDEA encryption. IDEA encryption is only available if you ++are using the international kernel and IDEA encryption has been ++enabled in the Crypto API. ++.IP \fBMARS\fP ++use MARS encryption. MARS encryption is only available if you ++are using the international kernel and MARS encryption has been ++enabled in the Crypto API. ++.IP \fBRC5\fP ++use RC5 encryption. RC5 encryption is only available if you ++are using the international kernel and RC5 encryption has been ++enabled in the Crypto API. ++.IP \fBRC6\fP ++use RC6 encryption. RC6 encryption is only available if you ++are using the international kernel and RC6 encryption has been ++enabled in the Crypto API. ++.IP \fBSerpent\fP ++use Serpent encryption. Serpent encryption is only available if you ++are using the international kernel and Serpent encryption has been ++enabled in the Crypto API. + .PD + .RE + .IP "\fB\-o \fIoffset\fP" +@@ -49,6 +85,7 @@ + .SH FILES + .nf + /dev/loop0,/dev/loop1,... loop devices (major=7) ++/proc/cipher/* available ciphers + .fi + .SH EXAMPLE + If you are using the loadable module you must have the module loaded +@@ -60,9 +97,8 @@ + .nf + .IP + dd if=/dev/zero of=/file bs=1k count=100 +-losetup -e des /dev/loop0 /file +-Password: +-Init (up to 16 hex digits): ++losetup -e blowfish /dev/loop0 /file ++Password : + mkfs -t ext2 /dev/loop0 100 + mount -t ext2 /dev/loop0 /mnt + ... +@@ -76,8 +112,12 @@ + # rmmod loop + .LP + .fi +-.SH RESTRICTION +-DES encryption is painfully slow. On the other hand, XOR is terribly weak. ++.SH RESTRICTIONS ++DES encryption is painfully slow. On the other hand, XOR is terribly ++weak. Both are insecure nowadays. Some ciphers require a licence for ++you to be allowed to use them. ++.SH BUGS ++CAST, DES, RC5 and Twofish are currently broken and cannot be used. + .SH AUTHORS + .nf + Original version: Theodore Ts'o +diff -uNr util-linux-2.10m/mount/rmd160.c util-linux-2.10m.int/mount/rmd160.c +--- util-linux-2.10m/mount/rmd160.c Thu Jan 1 01:00:00 1970 ++++ util-linux-2.10m.int/mount/rmd160.c Mon May 22 20:35:44 2000 +@@ -0,0 +1,371 @@ ++/********************************************************************\ ++ * ++ * FILE: rmd160.c ++ * ++ * CONTENTS: A sample C-implementation of the RIPEMD-160 ++ * hash-function. ++ * TARGET: any computer with an ANSI C compiler ++ * ++ * AUTHOR: Antoon Bosselaers, ESAT-COSIC ++ * DATE: 1 March 1996 ++ * VERSION: 1.0 ++ * ++ * Copyright (c) Katholieke Universiteit Leuven ++ * 1996, All Rights Reserved ++ * ++\********************************************************************/ ++ ++/* header files */ ++#include ++#include ++#include ++#include "rmd160.h" ++ ++/********************************************************************/ ++ ++/* macro definitions */ ++ ++/* collect four bytes into one word: */ ++#define BYTES_TO_DWORD(strptr) \ ++ (((dword) *((strptr)+3) << 24) | \ ++ ((dword) *((strptr)+2) << 16) | \ ++ ((dword) *((strptr)+1) << 8) | \ ++ ((dword) *(strptr))) ++ ++/* ROL(x, n) cyclically rotates x over n bits to the left */ ++/* x must be of an unsigned 32 bits type and 0 <= n < 32. */ ++#define ROL(x, n) (((x) << (n)) | ((x) >> (32-(n)))) ++ ++/* the five basic functions F(), G() and H() */ ++#define F(x, y, z) ((x) ^ (y) ^ (z)) ++#define G(x, y, z) (((x) & (y)) | (~(x) & (z))) ++#define H(x, y, z) (((x) | ~(y)) ^ (z)) ++#define I(x, y, z) (((x) & (z)) | ((y) & ~(z))) ++#define J(x, y, z) ((x) ^ ((y) | ~(z))) ++ ++/* the ten basic operations FF() through III() */ ++#define FF(a, b, c, d, e, x, s) {\ ++ (a) += F((b), (c), (d)) + (x);\ ++ (a) = ROL((a), (s)) + (e);\ ++ (c) = ROL((c), 10);\ ++ } ++#define GG(a, b, c, d, e, x, s) {\ ++ (a) += G((b), (c), (d)) + (x) + 0x5a827999UL;\ ++ (a) = ROL((a), (s)) + (e);\ ++ (c) = ROL((c), 10);\ ++ } ++#define HH(a, b, c, d, e, x, s) {\ ++ (a) += H((b), (c), (d)) + (x) + 0x6ed9eba1UL;\ ++ (a) = ROL((a), (s)) + (e);\ ++ (c) = ROL((c), 10);\ ++ } ++#define II(a, b, c, d, e, x, s) {\ ++ (a) += I((b), (c), (d)) + (x) + 0x8f1bbcdcUL;\ ++ (a) = ROL((a), (s)) + (e);\ ++ (c) = ROL((c), 10);\ ++ } ++#define JJ(a, b, c, d, e, x, s) {\ ++ (a) += J((b), (c), (d)) + (x) + 0xa953fd4eUL;\ ++ (a) = ROL((a), (s)) + (e);\ ++ (c) = ROL((c), 10);\ ++ } ++#define FFF(a, b, c, d, e, x, s) {\ ++ (a) += F((b), (c), (d)) + (x);\ ++ (a) = ROL((a), (s)) + (e);\ ++ (c) = ROL((c), 10);\ ++ } ++#define GGG(a, b, c, d, e, x, s) {\ ++ (a) += G((b), (c), (d)) + (x) + 0x7a6d76e9UL;\ ++ (a) = ROL((a), (s)) + (e);\ ++ (c) = ROL((c), 10);\ ++ } ++#define HHH(a, b, c, d, e, x, s) {\ ++ (a) += H((b), (c), (d)) + (x) + 0x6d703ef3UL;\ ++ (a) = ROL((a), (s)) + (e);\ ++ (c) = ROL((c), 10);\ ++ } ++#define III(a, b, c, d, e, x, s) {\ ++ (a) += I((b), (c), (d)) + (x) + 0x5c4dd124UL;\ ++ (a) = ROL((a), (s)) + (e);\ ++ (c) = ROL((c), 10);\ ++ } ++#define JJJ(a, b, c, d, e, x, s) {\ ++ (a) += J((b), (c), (d)) + (x) + 0x50a28be6UL;\ ++ (a) = ROL((a), (s)) + (e);\ ++ (c) = ROL((c), 10);\ ++ } ++ ++ ++/********************************************************************/ ++ ++void MDinit(dword *MDbuf) ++{ ++ MDbuf[0] = 0x67452301UL; ++ MDbuf[1] = 0xefcdab89UL; ++ MDbuf[2] = 0x98badcfeUL; ++ MDbuf[3] = 0x10325476UL; ++ MDbuf[4] = 0xc3d2e1f0UL; ++ ++ return; ++} ++ ++/********************************************************************/ ++ ++void compress(dword *MDbuf, dword *X) ++{ ++ dword aa = MDbuf[0], bb = MDbuf[1], cc = MDbuf[2], ++ dd = MDbuf[3], ee = MDbuf[4]; ++ dword aaa = MDbuf[0], bbb = MDbuf[1], ccc = MDbuf[2], ++ ddd = MDbuf[3], eee = MDbuf[4]; ++ ++ /* round 1 */ ++ FF(aa, bb, cc, dd, ee, X[ 0], 11); ++ FF(ee, aa, bb, cc, dd, X[ 1], 14); ++ FF(dd, ee, aa, bb, cc, X[ 2], 15); ++ FF(cc, dd, ee, aa, bb, X[ 3], 12); ++ FF(bb, cc, dd, ee, aa, X[ 4], 5); ++ FF(aa, bb, cc, dd, ee, X[ 5], 8); ++ FF(ee, aa, bb, cc, dd, X[ 6], 7); ++ FF(dd, ee, aa, bb, cc, X[ 7], 9); ++ FF(cc, dd, ee, aa, bb, X[ 8], 11); ++ FF(bb, cc, dd, ee, aa, X[ 9], 13); ++ FF(aa, bb, cc, dd, ee, X[10], 14); ++ FF(ee, aa, bb, cc, dd, X[11], 15); ++ FF(dd, ee, aa, bb, cc, X[12], 6); ++ FF(cc, dd, ee, aa, bb, X[13], 7); ++ FF(bb, cc, dd, ee, aa, X[14], 9); ++ FF(aa, bb, cc, dd, ee, X[15], 8); ++ ++ /* round 2 */ ++ GG(ee, aa, bb, cc, dd, X[ 7], 7); ++ GG(dd, ee, aa, bb, cc, X[ 4], 6); ++ GG(cc, dd, ee, aa, bb, X[13], 8); ++ GG(bb, cc, dd, ee, aa, X[ 1], 13); ++ GG(aa, bb, cc, dd, ee, X[10], 11); ++ GG(ee, aa, bb, cc, dd, X[ 6], 9); ++ GG(dd, ee, aa, bb, cc, X[15], 7); ++ GG(cc, dd, ee, aa, bb, X[ 3], 15); ++ GG(bb, cc, dd, ee, aa, X[12], 7); ++ GG(aa, bb, cc, dd, ee, X[ 0], 12); ++ GG(ee, aa, bb, cc, dd, X[ 9], 15); ++ GG(dd, ee, aa, bb, cc, X[ 5], 9); ++ GG(cc, dd, ee, aa, bb, X[ 2], 11); ++ GG(bb, cc, dd, ee, aa, X[14], 7); ++ GG(aa, bb, cc, dd, ee, X[11], 13); ++ GG(ee, aa, bb, cc, dd, X[ 8], 12); ++ ++ /* round 3 */ ++ HH(dd, ee, aa, bb, cc, X[ 3], 11); ++ HH(cc, dd, ee, aa, bb, X[10], 13); ++ HH(bb, cc, dd, ee, aa, X[14], 6); ++ HH(aa, bb, cc, dd, ee, X[ 4], 7); ++ HH(ee, aa, bb, cc, dd, X[ 9], 14); ++ HH(dd, ee, aa, bb, cc, X[15], 9); ++ HH(cc, dd, ee, aa, bb, X[ 8], 13); ++ HH(bb, cc, dd, ee, aa, X[ 1], 15); ++ HH(aa, bb, cc, dd, ee, X[ 2], 14); ++ HH(ee, aa, bb, cc, dd, X[ 7], 8); ++ HH(dd, ee, aa, bb, cc, X[ 0], 13); ++ HH(cc, dd, ee, aa, bb, X[ 6], 6); ++ HH(bb, cc, dd, ee, aa, X[13], 5); ++ HH(aa, bb, cc, dd, ee, X[11], 12); ++ HH(ee, aa, bb, cc, dd, X[ 5], 7); ++ HH(dd, ee, aa, bb, cc, X[12], 5); ++ ++ /* round 4 */ ++ II(cc, dd, ee, aa, bb, X[ 1], 11); ++ II(bb, cc, dd, ee, aa, X[ 9], 12); ++ II(aa, bb, cc, dd, ee, X[11], 14); ++ II(ee, aa, bb, cc, dd, X[10], 15); ++ II(dd, ee, aa, bb, cc, X[ 0], 14); ++ II(cc, dd, ee, aa, bb, X[ 8], 15); ++ II(bb, cc, dd, ee, aa, X[12], 9); ++ II(aa, bb, cc, dd, ee, X[ 4], 8); ++ II(ee, aa, bb, cc, dd, X[13], 9); ++ II(dd, ee, aa, bb, cc, X[ 3], 14); ++ II(cc, dd, ee, aa, bb, X[ 7], 5); ++ II(bb, cc, dd, ee, aa, X[15], 6); ++ II(aa, bb, cc, dd, ee, X[14], 8); ++ II(ee, aa, bb, cc, dd, X[ 5], 6); ++ II(dd, ee, aa, bb, cc, X[ 6], 5); ++ II(cc, dd, ee, aa, bb, X[ 2], 12); ++ ++ /* round 5 */ ++ JJ(bb, cc, dd, ee, aa, X[ 4], 9); ++ JJ(aa, bb, cc, dd, ee, X[ 0], 15); ++ JJ(ee, aa, bb, cc, dd, X[ 5], 5); ++ JJ(dd, ee, aa, bb, cc, X[ 9], 11); ++ JJ(cc, dd, ee, aa, bb, X[ 7], 6); ++ JJ(bb, cc, dd, ee, aa, X[12], 8); ++ JJ(aa, bb, cc, dd, ee, X[ 2], 13); ++ JJ(ee, aa, bb, cc, dd, X[10], 12); ++ JJ(dd, ee, aa, bb, cc, X[14], 5); ++ JJ(cc, dd, ee, aa, bb, X[ 1], 12); ++ JJ(bb, cc, dd, ee, aa, X[ 3], 13); ++ JJ(aa, bb, cc, dd, ee, X[ 8], 14); ++ JJ(ee, aa, bb, cc, dd, X[11], 11); ++ JJ(dd, ee, aa, bb, cc, X[ 6], 8); ++ JJ(cc, dd, ee, aa, bb, X[15], 5); ++ JJ(bb, cc, dd, ee, aa, X[13], 6); ++ ++ /* parallel round 1 */ ++ JJJ(aaa, bbb, ccc, ddd, eee, X[ 5], 8); ++ JJJ(eee, aaa, bbb, ccc, ddd, X[14], 9); ++ JJJ(ddd, eee, aaa, bbb, ccc, X[ 7], 9); ++ JJJ(ccc, ddd, eee, aaa, bbb, X[ 0], 11); ++ JJJ(bbb, ccc, ddd, eee, aaa, X[ 9], 13); ++ JJJ(aaa, bbb, ccc, ddd, eee, X[ 2], 15); ++ JJJ(eee, aaa, bbb, ccc, ddd, X[11], 15); ++ JJJ(ddd, eee, aaa, bbb, ccc, X[ 4], 5); ++ JJJ(ccc, ddd, eee, aaa, bbb, X[13], 7); ++ JJJ(bbb, ccc, ddd, eee, aaa, X[ 6], 7); ++ JJJ(aaa, bbb, ccc, ddd, eee, X[15], 8); ++ JJJ(eee, aaa, bbb, ccc, ddd, X[ 8], 11); ++ JJJ(ddd, eee, aaa, bbb, ccc, X[ 1], 14); ++ JJJ(ccc, ddd, eee, aaa, bbb, X[10], 14); ++ JJJ(bbb, ccc, ddd, eee, aaa, X[ 3], 12); ++ JJJ(aaa, bbb, ccc, ddd, eee, X[12], 6); ++ ++ /* parallel round 2 */ ++ III(eee, aaa, bbb, ccc, ddd, X[ 6], 9); ++ III(ddd, eee, aaa, bbb, ccc, X[11], 13); ++ III(ccc, ddd, eee, aaa, bbb, X[ 3], 15); ++ III(bbb, ccc, ddd, eee, aaa, X[ 7], 7); ++ III(aaa, bbb, ccc, ddd, eee, X[ 0], 12); ++ III(eee, aaa, bbb, ccc, ddd, X[13], 8); ++ III(ddd, eee, aaa, bbb, ccc, X[ 5], 9); ++ III(ccc, ddd, eee, aaa, bbb, X[10], 11); ++ III(bbb, ccc, ddd, eee, aaa, X[14], 7); ++ III(aaa, bbb, ccc, ddd, eee, X[15], 7); ++ III(eee, aaa, bbb, ccc, ddd, X[ 8], 12); ++ III(ddd, eee, aaa, bbb, ccc, X[12], 7); ++ III(ccc, ddd, eee, aaa, bbb, X[ 4], 6); ++ III(bbb, ccc, ddd, eee, aaa, X[ 9], 15); ++ III(aaa, bbb, ccc, ddd, eee, X[ 1], 13); ++ III(eee, aaa, bbb, ccc, ddd, X[ 2], 11); ++ ++ /* parallel round 3 */ ++ HHH(ddd, eee, aaa, bbb, ccc, X[15], 9); ++ HHH(ccc, ddd, eee, aaa, bbb, X[ 5], 7); ++ HHH(bbb, ccc, ddd, eee, aaa, X[ 1], 15); ++ HHH(aaa, bbb, ccc, ddd, eee, X[ 3], 11); ++ HHH(eee, aaa, bbb, ccc, ddd, X[ 7], 8); ++ HHH(ddd, eee, aaa, bbb, ccc, X[14], 6); ++ HHH(ccc, ddd, eee, aaa, bbb, X[ 6], 6); ++ HHH(bbb, ccc, ddd, eee, aaa, X[ 9], 14); ++ HHH(aaa, bbb, ccc, ddd, eee, X[11], 12); ++ HHH(eee, aaa, bbb, ccc, ddd, X[ 8], 13); ++ HHH(ddd, eee, aaa, bbb, ccc, X[12], 5); ++ HHH(ccc, ddd, eee, aaa, bbb, X[ 2], 14); ++ HHH(bbb, ccc, ddd, eee, aaa, X[10], 13); ++ HHH(aaa, bbb, ccc, ddd, eee, X[ 0], 13); ++ HHH(eee, aaa, bbb, ccc, ddd, X[ 4], 7); ++ HHH(ddd, eee, aaa, bbb, ccc, X[13], 5); ++ ++ /* parallel round 4 */ ++ GGG(ccc, ddd, eee, aaa, bbb, X[ 8], 15); ++ GGG(bbb, ccc, ddd, eee, aaa, X[ 6], 5); ++ GGG(aaa, bbb, ccc, ddd, eee, X[ 4], 8); ++ GGG(eee, aaa, bbb, ccc, ddd, X[ 1], 11); ++ GGG(ddd, eee, aaa, bbb, ccc, X[ 3], 14); ++ GGG(ccc, ddd, eee, aaa, bbb, X[11], 14); ++ GGG(bbb, ccc, ddd, eee, aaa, X[15], 6); ++ GGG(aaa, bbb, ccc, ddd, eee, X[ 0], 14); ++ GGG(eee, aaa, bbb, ccc, ddd, X[ 5], 6); ++ GGG(ddd, eee, aaa, bbb, ccc, X[12], 9); ++ GGG(ccc, ddd, eee, aaa, bbb, X[ 2], 12); ++ GGG(bbb, ccc, ddd, eee, aaa, X[13], 9); ++ GGG(aaa, bbb, ccc, ddd, eee, X[ 9], 12); ++ GGG(eee, aaa, bbb, ccc, ddd, X[ 7], 5); ++ GGG(ddd, eee, aaa, bbb, ccc, X[10], 15); ++ GGG(ccc, ddd, eee, aaa, bbb, X[14], 8); ++ ++ /* parallel round 5 */ ++ FFF(bbb, ccc, ddd, eee, aaa, X[12] , 8); ++ FFF(aaa, bbb, ccc, ddd, eee, X[15] , 5); ++ FFF(eee, aaa, bbb, ccc, ddd, X[10] , 12); ++ FFF(ddd, eee, aaa, bbb, ccc, X[ 4] , 9); ++ FFF(ccc, ddd, eee, aaa, bbb, X[ 1] , 12); ++ FFF(bbb, ccc, ddd, eee, aaa, X[ 5] , 5); ++ FFF(aaa, bbb, ccc, ddd, eee, X[ 8] , 14); ++ FFF(eee, aaa, bbb, ccc, ddd, X[ 7] , 6); ++ FFF(ddd, eee, aaa, bbb, ccc, X[ 6] , 8); ++ FFF(ccc, ddd, eee, aaa, bbb, X[ 2] , 13); ++ FFF(bbb, ccc, ddd, eee, aaa, X[13] , 6); ++ FFF(aaa, bbb, ccc, ddd, eee, X[14] , 5); ++ FFF(eee, aaa, bbb, ccc, ddd, X[ 0] , 15); ++ FFF(ddd, eee, aaa, bbb, ccc, X[ 3] , 13); ++ FFF(ccc, ddd, eee, aaa, bbb, X[ 9] , 11); ++ FFF(bbb, ccc, ddd, eee, aaa, X[11] , 11); ++ ++ /* combine results */ ++ ddd += cc + MDbuf[1]; /* final result for MDbuf[0] */ ++ MDbuf[1] = MDbuf[2] + dd + eee; ++ MDbuf[2] = MDbuf[3] + ee + aaa; ++ MDbuf[3] = MDbuf[4] + aa + bbb; ++ MDbuf[4] = MDbuf[0] + bb + ccc; ++ MDbuf[0] = ddd; ++ ++ return; ++} ++ ++/********************************************************************/ ++ ++void MDfinish(dword *MDbuf, byte *strptr, dword lswlen, dword mswlen) ++{ ++ unsigned int i; /* counter */ ++ dword X[16]; /* message words */ ++ ++ memset(X, 0, 16*sizeof(dword)); ++ ++ /* put bytes from strptr into X */ ++ for (i=0; i<(lswlen&63); i++) { ++ /* byte i goes into word X[i div 4] at pos. 8*(i mod 4) */ ++ X[i>>2] ^= (dword) *strptr++ << (8 * (i&3)); ++ } ++ ++ /* append "1" bit to the message. Be careful : ++ message = "" -> "10000000" = 128 */ ++ X[(lswlen>>2)&15] ^= (dword)1 << (8*(lswlen&3)+7); ++ ++ if ((lswlen & 63) > 55) { ++ /* length goes to next block */ ++ compress(MDbuf, X); ++ memset(X, 0, 16*sizeof(dword)); ++ } ++ ++ /* append length in bits*/ ++ X[14] = lswlen << 3; ++ X[15] = (lswlen >> 29) | (mswlen << 3); ++ compress(MDbuf, X); ++ ++ return; ++} ++ ++void MDcalc(byte *MD,byte *sp,dword sl) ++{ dword X[16]; ++ dword MDbuf[5]; ++ int i,j; ++ ++ MDinit(MDbuf); ++ ++ while (sl >= 64) ++ { ++ memset(X,0,16*sizeof(dword)); ++ ++ for (i=0; i<64; i++) ++ X[i>>2] |= ((dword)(*sp++)) << (8 * (i&3)); ++ ++ sl-=64; ++ compress(MDbuf,X); ++ ++ }; ++ MDfinish(MDbuf,sp,sl,0); ++ ++ for (i=0;i<5;i++) ++ for (j=0;j<4;j++) ++ *MD++=(byte)((MDbuf[i]>>(j*8))&0xFF); ++} ++ ++/************************ end of file rmd160.c **********************/ ++ +diff -uNr util-linux-2.10m/mount/rmd160.h util-linux-2.10m.int/mount/rmd160.h +--- util-linux-2.10m/mount/rmd160.h Thu Jan 1 01:00:00 1970 ++++ util-linux-2.10m.int/mount/rmd160.h Mon May 22 20:35:44 2000 +@@ -0,0 +1,58 @@ ++/********************************************************************\ ++ * ++ * FILE: rmd160.h ++ * ++ * CONTENTS: Header file for a sample C-implementation of the ++ * RIPEMD-160 hash-function. ++ * TARGET: any computer with an ANSI C compiler ++ * ++ * AUTHOR: Antoon Bosselaers, ESAT-COSIC ++ * DATE: 1 March 1996 ++ * VERSION: 1.0 ++ * ++ * Copyright (c) Katholieke Universiteit Leuven ++ * 1996, All Rights Reserved ++ * ++\********************************************************************/ ++ ++#ifndef RMD160H /* make sure this file is read only once */ ++#define RMD160H ++ ++/********************************************************************/ ++ ++/* typedef 8 and 32 bit types, resp. */ ++/* adapt these, if necessary, ++ for your operating system and compiler */ ++ ++typedef unsigned char byte; ++typedef unsigned long dword; ++ ++/********************************************************************/ ++ ++/* function prototypes */ ++ ++void MDinit(dword *MDbuf); ++/* ++ * initializes MDbuffer to "magic constants" ++ */ ++ ++void compress(dword *MDbuf, dword *X); ++/* ++ * the compression function. ++ * transforms MDbuf using message bytes X[0] through X[15] ++ */ ++ ++void MDfinish(dword *MDbuf, byte *strptr, dword lswlen, dword mswlen); ++/* ++ * puts bytes from strptr into X and pad out; appends length ++ * and finally, compresses the last block(s) ++ * note: length in bits == 8 * (lswlen + 2^32 mswlen). ++ * note: there are (lswlen mod 64) bytes left in strptr. ++ */ ++ ++void MDcalc(byte *MDbuf,byte *sp,dword sl); ++ ++#endif /* RMD160H */ ++ ++/*********************** end of file rmd160.h ***********************/ ++ diff -urN linux/MAINTAINERS int.2.4.0.t2/MAINTAINERS --- linux/MAINTAINERS Thu Jul 6 16:07:59 2000 +++ int.2.4.0.t2/MAINTAINERS Thu Jul 6 14:23:20 2000 @@ -245,6 +245,12 @@ M: jam@acm.org S: Maintained +CRYPTO API +P: Alexander Kjeldaas +M: astor@fast.no +W: http://www.kerneli.org/ +S: Maintained + CYBERPRO FB DRIVER P: Russell King M: linux@arm.linux.org.uk diff -urN linux/Makefile int.2.4.0.t2/Makefile --- linux/Makefile Thu Jul 6 16:07:59 2000 +++ int.2.4.0.t2/Makefile Thu Jul 6 14:26:47 2000 @@ -119,13 +119,14 @@ CORE_FILES =kernel/kernel.o mm/mm.o fs/fs.o ipc/ipc.o NETWORKS =net/network.o -DRIVERS =drivers/block/block.o \ +DRIVERS =crypto/crypto.o \ + drivers/block/block.o \ drivers/char/char.o \ drivers/misc/misc.o \ drivers/net/net.o \ drivers/parport/parport.a LIBS =$(TOPDIR)/lib/lib.a -SUBDIRS =kernel drivers mm fs net ipc lib +SUBDIRS =kernel drivers mm fs net ipc lib crypto DRIVERS-n := DRIVERS-y := diff -urN linux/arch/alpha/config.in int.2.4.0.t2/arch/alpha/config.in --- linux/arch/alpha/config.in Thu Jul 6 16:07:59 2000 +++ int.2.4.0.t2/arch/alpha/config.in Thu Jul 6 14:09:18 2000 @@ -236,6 +236,8 @@ source net/Config.in fi +source crypto/Config.in + mainmenu_option next_comment comment 'ATA/IDE/MFM/RLL support' diff -urN linux/arch/arm/config.in int.2.4.0.t2/arch/arm/config.in --- linux/arch/arm/config.in Thu Jul 6 16:08:00 2000 +++ int.2.4.0.t2/arch/arm/config.in Thu Jul 6 14:10:02 2000 @@ -247,6 +247,8 @@ source net/irda/Config.in fi +source crypto/Config.in + mainmenu_option next_comment comment 'ATA/IDE/MFM/RLL support' diff -urN linux/arch/i386/config.in int.2.4.0.t2/arch/i386/config.in --- linux/arch/i386/config.in Thu Jul 6 16:08:00 2000 +++ int.2.4.0.t2/arch/i386/config.in Thu Jul 6 14:10:11 2000 @@ -240,6 +240,8 @@ source net/Config.in fi +source crypto/Config.in + source drivers/telephony/Config.in mainmenu_option next_comment diff -urN linux/arch/ia64/config.in int.2.4.0.t2/arch/ia64/config.in --- linux/arch/ia64/config.in Thu Jul 6 16:08:00 2000 +++ int.2.4.0.t2/arch/ia64/config.in Thu Jul 6 14:10:22 2000 @@ -93,6 +93,8 @@ source net/Config.in fi +source crypto/Config.in + mainmenu_option next_comment comment 'ATA/IDE/MFM/RLL support' diff -urN linux/arch/m68k/config.in int.2.4.0.t2/arch/m68k/config.in --- linux/arch/m68k/config.in Thu Jul 6 16:08:00 2000 +++ int.2.4.0.t2/arch/m68k/config.in Thu Jul 6 14:10:31 2000 @@ -151,6 +151,8 @@ source net/Config.in fi +source crypto/Config.in + mainmenu_option next_comment comment 'ATA/IDE/MFM/RLL support' diff -urN linux/arch/mips/config.in int.2.4.0.t2/arch/mips/config.in --- linux/arch/mips/config.in Thu Jul 6 16:08:00 2000 +++ int.2.4.0.t2/arch/mips/config.in Thu Jul 6 14:10:41 2000 @@ -168,6 +168,8 @@ source net/Config.in fi +source crypto/Config.in + if [ "$CONFIG_DECSTATION" != "n" -a \ "$CONFIG_SGI_IP22" != "n" ]; then source drivers/telephony/Config.in diff -urN linux/arch/mips64/config.in int.2.4.0.t2/arch/mips64/config.in --- linux/arch/mips64/config.in Thu Jul 6 16:08:00 2000 +++ int.2.4.0.t2/arch/mips64/config.in Thu Jul 6 14:10:51 2000 @@ -126,6 +126,8 @@ source net/Config.in fi +source crypto/Config.in + source drivers/telephony/Config.in mainmenu_option next_comment diff -urN linux/arch/ppc/config.in int.2.4.0.t2/arch/ppc/config.in --- linux/arch/ppc/config.in Thu Jul 6 16:08:00 2000 +++ int.2.4.0.t2/arch/ppc/config.in Thu Jul 6 14:11:02 2000 @@ -192,6 +192,8 @@ source net/Config.in fi +source crypto/Config.in + mainmenu_option next_comment comment 'ATA/IDE/MFM/RLL support' diff -urN linux/arch/s390/config.in int.2.4.0.t2/arch/s390/config.in --- linux/arch/s390/config.in Thu Jul 6 16:08:00 2000 +++ int.2.4.0.t2/arch/s390/config.in Thu Jul 6 14:11:14 2000 @@ -55,6 +55,8 @@ source net/Config.in fi +source crypto/Config.in + source fs/Config.in # source drivers/char/Config.in diff -urN linux/arch/sh/config.in int.2.4.0.t2/arch/sh/config.in --- linux/arch/sh/config.in Thu Jul 6 16:08:00 2000 +++ int.2.4.0.t2/arch/sh/config.in Thu Jul 6 14:11:22 2000 @@ -119,6 +119,8 @@ source net/Config.in fi +source crypto/Config.in + mainmenu_option next_comment comment 'ATA/IDE/MFM/RLL support' diff -urN linux/arch/sparc/config.in int.2.4.0.t2/arch/sparc/config.in --- linux/arch/sparc/config.in Thu Jul 6 16:08:00 2000 +++ int.2.4.0.t2/arch/sparc/config.in Thu Jul 6 14:11:30 2000 @@ -106,6 +106,8 @@ source net/Config.in fi +source crypto/Config.in + # Don't frighten a common SBus user if [ "$CONFIG_PCI" = "y" ]; then diff -urN linux/arch/sparc64/config.in int.2.4.0.t2/arch/sparc64/config.in --- linux/arch/sparc64/config.in Thu Jul 6 16:08:01 2000 +++ int.2.4.0.t2/arch/sparc64/config.in Thu Jul 6 14:11:37 2000 @@ -109,6 +109,8 @@ source net/Config.in fi +source crypto/Config.in + mainmenu_option next_comment comment 'ATA/IDE/MFM/RLL support' diff -urN linux/crypto/Config.in int.2.4.0.t2/crypto/Config.in --- linux/crypto/Config.in Thu Jan 1 01:00:00 1970 +++ int.2.4.0.t2/crypto/Config.in Thu Jul 6 14:11:51 2000 @@ -0,0 +1,25 @@ +# +# Network configuration +# +mainmenu_option next_comment +comment 'Crypto options' +bool 'Crypto support' CONFIG_CRYPTO +dep_tristate 'Crypto ciphers' CONFIG_CIPHERS $CONFIG_CRYPTO +if [ "$CONFIG_CIPHERS" != "n" ]; then + dep_tristate 'Blowfish cipher (EXPERIMENTAL)' CONFIG_CIPHER_BLOWFISH $CONFIG_CIPHERS + dep_tristate 'DES cipher (EXPERIMENTAL)' CONFIG_CIPHER_DES $CONFIG_CIPHERS + dep_tristate 'DFC cipher (EXPERIMENTAL)' CONFIG_CIPHER_DFC $CONFIG_CIPHERS + dep_tristate 'IDEA cipher (EXPERIMENTAL)' CONFIG_CIPHER_IDEA $CONFIG_CIPHERS + dep_tristate 'MARS cipher (EXPERIMENTAL)' CONFIG_CIPHER_MARS $CONFIG_CIPHERS + dep_tristate 'RC5 cipher (EXPERIMENTAL)' CONFIG_CIPHER_RC5 $CONFIG_CIPHERS + dep_tristate 'RC6 cipher (EXPERIMENTAL)' CONFIG_CIPHER_RC6 $CONFIG_CIPHERS +# Rijndael isn't working +# dep_tristate 'Rijndael cipher (EXPERIMENTAL)' CONFIG_CIPHER_RIJNDAEL $CONFIG_CIPHERS + dep_tristate 'Serpent cipher (EXPERIMENTAL)' CONFIG_CIPHER_SERPENT $CONFIG_CIPHERS +fi +dep_tristate 'Digest algorithms' CONFIG_DIGEST $CONFIG_CRYPTO +if [ "$CONFIG_DIGEST" != "n" ]; then + dep_tristate 'MD5 digest (EXPERIMENTAL)' CONFIG_DIGEST_MD5 $CONFIG_DIGEST + dep_tristate 'SHA1 digest (EXPERIMENTAL)' CONFIG_DIGEST_SHA1 $CONFIG_DIGEST +fi +endmenu diff -urN linux/crypto/Makefile int.2.4.0.t2/crypto/Makefile --- linux/crypto/Makefile Thu Jan 1 01:00:00 1970 +++ int.2.4.0.t2/crypto/Makefile Thu Jul 6 14:26:37 2000 @@ -0,0 +1,106 @@ +# +# Makefile for the Linux kernel crypto library. +# +# Note! Dependencies are done automagically by 'make dep', which also +# removes any old dependencies. DON'T put your own dependencies here +# unless it's something special (not a .c file). +# +# Note 2! The CFLAGS definitions are now in the main makefile. + +O_TARGET := crypto.o +O_OBJS := +OX_OBJS := + +ifeq ($(CONFIG_CRYPTO),y) + OX_OBJS += cryptoapi.o +endif + +ifeq ($(CONFIG_CIPHER_SERPENT),y) + O_OBJS += serp6f.o +else + ifeq ($(CONFIG_CIPHER_SERPENT),m) + M_OBJS += serp6f.o + endif +endif + +ifeq ($(CONFIG_CIPHER_MARS),y) + O_OBJS += mars6.o +else + ifeq ($(CONFIG_CIPHER_MARS),m) + M_OBJS += mars6.o + endif +endif + +ifeq ($(CONFIG_CIPHER_RC5),y) + O_OBJS += rc5.o +else + ifeq ($(CONFIG_CIPHER_RC5),m) + M_OBJS += rc5.o + endif +endif + +ifeq ($(CONFIG_CIPHER_RC6),y) + O_OBJS += rc62.o +else + ifeq ($(CONFIG_CIPHER_RC6),m) + M_OBJS += rc62.o + endif +endif + +ifeq ($(CONFIG_CIPHER_DFC),y) + O_OBJS += dfc2.o +else + ifeq ($(CONFIG_CIPHER_DFC),m) + M_OBJS += dfc2.o + endif +endif + +ifeq ($(CONFIG_CIPHER_RIJNDAEL),y) + O_OBJS += rijndael3.o +else + ifeq ($(CONFIG_CIPHER_RIJNDAEL),m) + M_OBJS += rijndael3.o + endif +endif + +ifeq ($(CONFIG_CIPHER_BLOWFISH),y) + O_OBJS += blowfish.o +else + ifeq ($(CONFIG_CIPHER_BLOWFISH),m) + M_OBJS += blowfish.o + endif +endif + +ifeq ($(CONFIG_CIPHER_IDEA),y) + O_OBJS += idea.o +else + ifeq ($(CONFIG_CIPHER_IDEA),m) + M_OBJS += idea.o + endif +endif + +ifeq ($(CONFIG_CIPHER_DES),y) + O_OBJS += des.o +else + ifeq ($(CONFIG_CIPHER_DES),m) + M_OBJS += des.o + endif +endif + +ifeq ($(CONFIG_DIGEST_MD5),y) + O_OBJS += md5glue.o +else + ifeq ($(CONFIG_DIGEST_MD5),m) + M_OBJS += md5glue.o + endif +endif + +ifeq ($(CONFIG_DIGEST_SHA1),y) + O_OBJS += sha1glue.o +else + ifeq ($(CONFIG_DIGEST_SHA1),m) + M_OBJS += sha1glue.o + endif +endif + +include $(TOPDIR)/Rules.make diff -urN linux/crypto/cryptoapi.c int.2.4.0.t2/crypto/cryptoapi.c --- linux/crypto/cryptoapi.c Thu Jan 1 01:00:00 1970 +++ int.2.4.0.t2/crypto/cryptoapi.c Thu Jul 6 16:04:45 2000 @@ -0,0 +1,262 @@ +/* + * crypto/digestapi.c + * + * Written by Alexander Kjeldaas 1998-11-15 + * + * Copyright 1998 by Alexander Kjeldaas. Redistribution of this file + * is permitted under the GNU Public License. + */ + +#include + +#ifdef CONFIG_KMOD +#include +#endif /* CONFIG_KMOD */ + +#include +#include +#include +#include +#include +#include + +/* Since the digest and cipher APIs share some structure, we use a + struct transform_group to reduce the code needed to implement the + APIs. */ + +struct transform_group { + char *tg_name; /* "cipher" or "digest" */ + spinlock_t *tg_lock; + struct list_head *tg_head; +#ifdef CONFIG_PROC_FS + struct proc_dir_entry **tg_proc_parent_dir; + int (*tg_read)(char *page, char **start, off_t off, + int count, int *eof, void *data); +#endif +}; + + +static int cipher_read_proc(char *page, char **start, off_t off, + int count, int *eof, void *data); +static int digest_read_proc(char *page, char **start, off_t off, + int count, int *eof, void *data); + +static struct proc_dir_entry *proc_crypto, *proc_cipher, *proc_digest; +spinlock_t cipher_lock = SPIN_LOCK_UNLOCKED; +spinlock_t digest_lock = SPIN_LOCK_UNLOCKED; +LIST_HEAD(ciphers); +LIST_HEAD(digests); + +static struct transform_group _cipher_group = { + tg_name: "cipher", + tg_lock: &cipher_lock, + tg_head: &ciphers, +#ifdef CONFIG_PROC_FS + tg_proc_parent_dir: &proc_cipher, + tg_read: &cipher_read_proc +#endif +}; +struct transform_group *cipher_group = &_cipher_group; + +static struct transform_group _digest_group = { + tg_name: "digest", + tg_lock: &digest_lock, + tg_head: &digests, +#ifdef CONFIG_PROC_FS + tg_proc_parent_dir: &proc_digest, + tg_read: &digest_read_proc +#endif +}; +struct transform_group *digest_group = &_digest_group; + + +struct transform_implementation * +find_transform_by_id(struct transform_group *tg, int id) +{ + struct list_head *tmp; +#ifdef CONFIG_KMOD + int mod_try = 0; +retry: +#endif + spin_lock(tg->tg_lock); + for (tmp = tg->tg_head->next; tmp != tg->tg_head; tmp = tmp->next) { + struct transform_implementation *t; + t = list_entry(tmp, struct transform_implementation, t_list); + if (t->t_id == id) { + spin_unlock(tg->tg_lock); + return t; + } + } + spin_unlock(tg->tg_lock); +#ifdef CONFIG_KMOD + if (!mod_try) { + char module_name[50]; + mod_try = 1; + sprintf(module_name, "%s-%d", tg->tg_name, id & (~CIPHER_CBC)); + request_module(module_name); + goto retry; + } +#endif + return NULL; +} + + +struct transform_implementation * +find_transform_by_name(struct transform_group *tg, char *name) +{ + struct list_head *tmp; + + spin_lock(tg->tg_lock); + for (tmp = tg->tg_head->next; tmp != tg->tg_head; tmp = tmp->next) { + struct transform_implementation *t; + t = list_entry(tmp, struct transform_implementation, t_list); + if (strcmp(t->t_name, name) == 0) { + spin_unlock(tg->tg_lock); + return t; + } + } + spin_unlock(tg->tg_lock); + return NULL; +} + +int register_transform(struct transform_group *tg, + struct transform_implementation *ti) +{ + int err = 0; + + spin_lock(tg->tg_lock); + list_add(&ti->t_list, tg->tg_head); + spin_unlock(tg->tg_lock); + if (!err) { + char buf[200]; + sprintf(buf, "Registered %s (%d)\n", + ti->t_name, ti->t_id); + printk(buf); + +#ifdef CONFIG_PROC_FS + ti->t_proc = create_proc_read_entry(ti->t_name, + S_IFREG|S_IRUGO, + *tg->tg_proc_parent_dir, + tg->tg_read, (void *)ti); + if (!ti->t_proc) + return -ENOMEM; +#endif + } + return err; +} + +int unregister_transform(struct transform_group *tg, + struct transform_implementation *ti) +{ + int ret = 0; + if (!list_empty(&ti->t_list)) { + spin_lock(tg->tg_lock); + list_del(&ti->t_list); + spin_unlock(tg->tg_lock); + ret = 0; + } +#ifdef CONFIG_PROC_FS + if (ti->t_proc) { + ti->t_proc = NULL; + remove_proc_entry(ti->t_name, *tg->tg_proc_parent_dir); + } +#endif + return ret; +} + +static int cipher_read_proc(char *page, char **start, off_t off, + int count, int *eof, void *data) +{ + struct cipher_implementation *ci; + int len = 0; + + ci = (struct cipher_implementation *)data; + + len = sprintf(page, "cipher_id: %d\n" + "cipher_name: %s\n" + "blocksize: %d\n" + "ivsize: %d\n" + "key_schedule_size: %d\n", + ci->trans.t_id, ci->trans.t_name, + ci->blocksize, + ci->ivsize, ci->key_schedule_size); + *eof=1; + + return len; +} + +static int digest_read_proc(char *page, char **start, off_t off, + int count, int *eof, void *data) +{ + struct digest_implementation *ci; + int len = 0; + + ci = (struct digest_implementation *)data; + + len = sprintf(page, "digest_id: %d\n" + "digest_name: %s\n" + "blocksize: %d\n" + "working_size: %d\n", + ci->trans.t_id, ci->trans.t_name, + ci->blocksize, ci->working_size); + *eof=1; + + return len; +} + + +#ifdef MODULE +int __init init_module(void) +#else +int __init cryptoapi_init(void) +#endif +{ + int err; + + proc_crypto = proc_mkdir("crypto", NULL); + proc_cipher = proc_mkdir("crypto/cipher", proc_crypto); + proc_digest = proc_mkdir("crypto/digest", proc_crypto); + +#ifdef CONFIG_DIGEST_MD5 + init_md5(); +#endif +#ifdef CONFIG_DIGEST_SHA1 + init_sha1(); +#endif +#ifdef CONFIG_CIPHER_RIJNDAEL + init_rijndael(); +#endif +#ifdef CONFIG_CIPHER_SERPENT + init_serpent(); +#endif +#ifdef CONFIG_CIPHER_RC5 + init_rc5(); +#endif +#ifdef CONFIG_CIPHER_RC6 + init_rc6(); +#endif +#ifdef CONFIG_CIPHER_MARS + init_mars(); +#endif +#ifdef CONFIG_CIPHER_DFC + init_dfc(); +#endif +#ifdef CONFIG_CIPHER_BLOWFISH + init_blowfish(); +#endif +#ifdef CONFIG_CIPHER_IDEA + init_idea(); +#endif +#ifdef CONFIG_CIPHER_DES + init_des(); +#endif + return 0; +} + + +EXPORT_SYMBOL(find_transform_by_id); +EXPORT_SYMBOL(find_transform_by_name); +EXPORT_SYMBOL(register_transform); +EXPORT_SYMBOL(unregister_transform); +EXPORT_SYMBOL(cipher_group); +EXPORT_SYMBOL(digest_group); diff -urN linux/crypto/testing/Makefile int.2.4.0.t2/crypto/testing/Makefile --- linux/crypto/testing/Makefile Thu Jan 1 01:00:00 1970 +++ int.2.4.0.t2/crypto/testing/Makefile Thu Jul 6 13:45:58 2000 @@ -0,0 +1,27 @@ + +all: ../crypto.a testcip speed test_blowfish digesttest + +../crypto.a: + @if [ ! -f ../crypto.a ]; then \ + echo "You need to compile the kernel first"; fi + +%.o : %.c + gcc -O2 -Wall -g -c -I../../include $(CFLAGS) $(CPPFLAGS) $< -o $@ + +speed: ../crypto.a stubs.o speed.o + gcc -g -o speed speed.c -I../../include/ ../crypto.a stubs.o + +test_blowfish: ../crypto.a stubs.o test_blowfish.o + gcc -g -o test_blowfish test_blowfish.c -I../../include/ ../crypto.a stubs.o + +stubs.o: stubs.c + gcc -O2 -g -Wall -D__KERNEL__ -c -o stubs.o -I../../include/ stubs.c + +testcip: testcip.c stubs.o + gcc -O2 -g -Wall -o testcip testcip.c -I../../include/ ../crypto.a stubs.o + +digesttest: ../crypto.a stubs.o digesttest.o + gcc -g -o digesttest digesttest.c -I../../include/ ../crypto.a stubs.o + +clean: + rm -f speed test_blowfish testcip digesttest *.o diff -urN linux/crypto/testing/digesttest.c int.2.4.0.t2/crypto/testing/digesttest.c --- linux/crypto/testing/digesttest.c Thu Jan 1 01:00:00 1970 +++ int.2.4.0.t2/crypto/testing/digesttest.c Thu Jul 6 13:45:58 2000 @@ -0,0 +1,106 @@ +/* + * crypto/testing/digesttest.c + * + * Written by Andrew McDonald 1999-11-16 + * with bits from speed.c: + * written by Alexander Kjeldaas 1998-11-23 + * + * Copyright 1999 by Andrew McDonald. + * Some code, Copyright 1998 by Alexander Kjeldaas. + * Redistribution of this file is permitted under the GNU Public License. + */ + +#define __KERNEL__ + +typedef unsigned char u8; +typedef unsigned short u16; +typedef unsigned int u32; + +#define printk printk_dummy + +#include +#include +#include +#include +#include +#include +#include +#include + +#undef printk + + +#define PRINTF(x...) do { printf(x); fflush(stdout); } while(0) + +int digest_test(struct digest_implementation *di, FILE *file); + + +int main(int argc, char* argv[]) +{ + int digest; + struct digest_implementation *di; + FILE *file; + + if (argc < 2 || argc > 3) { + printf("Usage:\n"); + printf("digesttest digestnum [filename]\n"); + exit(1); + } + + digests_init(); + digest = atoi(argv[1]); + di = find_digest_by_id(digest); + if (!di) + exit(1); + PRINTF("Testing digest %s, number %d...\n", di->digest_name, + di->digest_id); + + if (argc < 3) + file = stdin; + else { + if (!(file = fopen(argv[2], "rb"))) { + fprintf(stderr, "Can't open file %s", argv[2]); + exit(1); + } + } + + digest_test(di, file); + exit(0); +} + +int digest_test(struct digest_implementation *di, FILE *file) +{ + struct digest_context* cx; + u8* output; + u8 buf[16384]; + int i, j; + + cx = (struct digest_context *) malloc(sizeof(struct digest_context)); + cx->di = di; + cx->digest_info = (u32 *) malloc(di->working_size); + output = (unsigned char *) malloc(di->blocksize); + di->open(cx); + + while (!feof(file)) { + i = fread(buf, 1, 16384, file); + di->update(cx, buf, i); + } + + di->close(cx, output); + + fclose(file); + + for (i = 0; i < (di->blocksize / sizeof(unsigned int)); i++) { + for (j = 0; j < sizeof(unsigned int); j++) { + printf("%02X", output[i*4+j]); + } + printf(" "); + } + printf("\n"); + return 0; +} + +asmlinkage int printk(const char * fmt, va_list args) +{ + return vprintf(fmt, args); +} diff -urN linux/crypto/testing/speed.c int.2.4.0.t2/crypto/testing/speed.c --- linux/crypto/testing/speed.c Thu Jan 1 01:00:00 1970 +++ int.2.4.0.t2/crypto/testing/speed.c Thu Jul 6 13:45:58 2000 @@ -0,0 +1,366 @@ +/* + * crypto/testing/speed.c + * + * Written by Alexander Kjeldaas 1998-11-23 + * + * Copyright 1998 by Alexander Kjeldaas. Redistribution of this file + * is permitted under the GNU Public License. + */ + +#define __KERNEL__ + +typedef unsigned char u8; +typedef unsigned short u16; +typedef unsigned int u32; + +#define printk printk_dummy + +#include +#include +#include +#include +#include +#include +#include + +#undef printk + +static long long t1, t2; + +#define PRINTF(x...) do { printf(x); fflush(stdout); } while(0) + +#define timediff(tv2, tv1) (((tv2)->tv_sec - (tv1)->tv_sec)*1000*1000 + \ + ((tv2)->tv_usec - (tv1)->tv_usec)) + +void dump_u8_buffer(u8 *buf, int number); +void dump_u16_buffer(u16 *buf, int number); +void dump_u32_buffer(u32 *buf, int number); +int my_memcmp(char *buf1, char *buf2, int size); +int cipher_correct(struct cipher_implementation *ci); +int test_cipher(struct cipher_implementation *ci, int encrypt); +int test_cbc_cipher(struct cipher_implementation *ci, int encrypt); + +int main() +{ + int cipher; + /* Register all ciphers */ + ciphers_init(); + + for (cipher = 1; cipher < MAX_CIPHER; cipher++) { + struct cipher_implementation *ci; + struct timeval tv1,tv2; + ci = find_cipher_by_id(cipher); + if (!ci) + continue; + PRINTF("Testing cipher %s, number %d..", ci->cipher_name, + ci->cipher_id); + if (!cipher_correct(ci)) { + PRINTF("seems to work\n"); + } else { + PRINTF("doesnt work!\n"); + } + + gettimeofday(&tv1, NULL); + if (test_cipher(ci,1)) + return 1; + gettimeofday(&tv2, NULL); + PRINTF("encrypt %-15s = %8d usec/MB; %6.3f MB/s; %6.3f Mb/s\n", + ci->cipher_name, timediff(&tv2,&tv1), + 1000000.0/timediff(&tv2,&tv1), + 1000000.0*8.0/timediff(&tv2,&tv1)); + gettimeofday(&tv1, NULL); + if (test_cipher(ci,0)) + return 1; + gettimeofday(&tv2, NULL); + PRINTF("decrypt %-15s = %8d usec/MB; %6.3f MB/s; %6.3f Mb/s\n", + ci->cipher_name, timediff(&tv2,&tv1), + 1000000.0/timediff(&tv2,&tv1), + 1000000.0*8.0/timediff(&tv2,&tv1)); + ci = find_cipher_by_id(cipher | CIPHER_CBC); + if (!ci) + continue; + gettimeofday(&tv1, NULL); + if (test_cbc_cipher(ci,1)) + return 1; + gettimeofday(&tv2, NULL); + PRINTF("encrypt %-15s = %8d usec/MB; %6.3f MB/s; %6.3f Mb/s\n", + ci->cipher_name, timediff(&tv2,&tv1), + 1000000.0/timediff(&tv2,&tv1), + 1000000.0*8.0/timediff(&tv2,&tv1)); + gettimeofday(&tv1, NULL); + if (test_cbc_cipher(ci,0)) + return 1; + gettimeofday(&tv2, NULL); + PRINTF("decrypt %-15s = %8d usec/MB; %6.3f MB/s; %6.3f Mb/s\n", + ci->cipher_name, timediff(&tv2,&tv1), + 1000000.0/timediff(&tv2,&tv1), + 1000000.0*8.0/timediff(&tv2,&tv1)); + } +} + +#if 0 +static inline void rdtsc(long long *x) +{ + asm volatile (".byte 0x0f, 0x31\n\t" + "movl %%eax, %0\n\t" + "movl %%edx, %1" + : "=m" (((long *)x)[0]), "=m"(((long *)x)[1]) + ::"ax","dx"); +} +#endif + +int test_cbc_cipher(struct cipher_implementation *ci, int encrypt) +{ + int fd,i,j,bs,size; + char buf[512], buf_in[512], buf_out[512]; + static u8 key[] = {0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x80, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; + + struct cipher_context *cx; + cx = (struct cipher_context *) malloc(sizeof(struct cipher_context)); + cx->ci = ci; + cx->keyinfo = (u32 *) malloc(ci->key_schedule_size); + errno=ci->set_key(cx, (char *)key, sizeof(key)); + if(errno) { + perror("Can't set key"); + return 1; + } + fd = open("speed.c", O_RDONLY); + if (!fd) { + perror("Couldn't open speed.c"); + return 1; + } + if ((size = read(fd, buf, sizeof(buf))) < sizeof(buf)) { + perror("Couldn't read 512 bytes from speed.c"); + return 1; + } + close(fd); + memcpy(buf_in, buf, sizeof(buf)); + bs = ci->blocksize; + for (i = 0; i < 1024; i++) { + char *in = &buf_in[0]; + char *out = &buf_out[0]; + int (*func)(struct cipher_context *, u32 *, u32 *, int size); + + if (encrypt) + func = ci->encrypt; + else + func = ci->decrypt; + errno=func(cx, (u32 *)in, (u32 *)out, 512); + if(errno) { + perror("Can't encrypt/decrypt in cbc-mode"); + return 1; + } + in = &buf_in[0]; + out = &buf_out[0]; + func(cx, (u32 *)out, (u32 *)in, 512); + } + return 0; +} + +int test_cipher(struct cipher_implementation *ci, int encrypt) +{ + int fd,i,j,bs,size; + char buf[512], buf_in[512], buf_out[512]; + static u8 key[] = {0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x80, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; + struct cipher_context *cx; + cx = (struct cipher_context *) malloc(sizeof(struct cipher_context)); + cx->ci = ci; + cx->keyinfo = (u32 *) malloc(ci->key_schedule_size); + errno=ci->set_key(cx, (char *)key, sizeof(key)); + if(errno) { + perror("Can't set key"); + return 1; + } + fd = open("speed.c", O_RDONLY); + if (!fd) { + perror("Couldn't open speed.c"); + return 1; + } + if ((size = read(fd, buf, sizeof(buf))) < sizeof(buf)) { + perror("Couldn't read 512 bytes from speed.c"); + return 1; + } + close(fd); + memcpy(buf_in, buf, sizeof(buf)); + bs = ci->blocksize; + if (bs == 0) { + return 0; + } + for (i = 0; i < 1024; i++) { + char *in = &buf_in[0]; + char *out = &buf_out[0]; + int (*func)(struct cipher_context *, u32 *, u32 *, int size); + if (encrypt) + func = ci->encrypt; + else + func = ci->decrypt; + + for (j = 512; j > 0; j-=bs) { + errno=func(cx, (u32 *)in, (u32 *)out, bs); + if(errno) { + perror("Can't encrypt/decrypt in test_cipher()"); + return 1; + } + in += bs; out += bs; + } + in = &buf_in[0]; + out = &buf_out[0]; + for (j = 512; j > 0; j-=bs) { + func(cx, (u32 *)out, (u32 *)in, bs); + in += bs; out += bs; + } + } + return 0; +} + +int cipher_correct(struct cipher_implementation *ci) +{ + int fd,i,j,bs,size,err; + char buf[512], a1,a2,a3,buf_enc[512],a4,a5,a6, buf_dec[512]; + static u8 key[] = {0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x80, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; + struct cipher_context *cx; + cx = (struct cipher_context *) malloc(sizeof(struct cipher_context)); + cx->ci = ci; + cx->keyinfo = (u32 *) malloc(ci->key_schedule_size); + errno=ci->set_key(cx, (char *)key, sizeof(key)); + if(errno) { + printf("errno=%d key=%d\n",errno,sizeof(key)); + perror("Can't set key"); + return 1; + } + fd = open("speed.c", O_RDONLY); + if (!fd) { + perror("Couldn't open speed.c"); + return 1; + } + if ((size = read(fd, buf, sizeof(buf))) < sizeof(buf)) { + perror("Couldn't read 512 bytes from speed.c"); + return 1; + } + close(fd); + bs = ci->blocksize; + if (bs == 0) { + return 0; + } + { + char *in = &buf[0]; + char *out = &buf_enc[0]; + for (j = 512; j > 0; j-=bs) { + errno=ci->encrypt(cx, (u32 *)in, (u32 *)out, bs); + if(errno) { + perror("Can't encryp in cipher_correct"); + return 1; + } + + in += bs; out += bs; + } + in = &buf_enc[0]; + out = &buf_dec[0]; + for (j = 512; j > 0; j-=bs) { + errno=ci->decrypt(cx, (u32 *)in, (u32 *)out, bs); + if(errno) { + perror("Can't encryp in cipher_correct"); + return 1; + } + + in += bs; out += bs; + } + if (err = my_memcmp(buf, buf_dec, sizeof(buf))) { + PRINTF("failed ecb check"); + return err; + } + } + { + struct cipher_implementation *ci_cbc; + ci_cbc = find_cipher_by_id(ci->cipher_id | CIPHER_CBC); + if (!ci_cbc) + return 0; /* not supporting cbc is ok */ + memset(cx->iv, 0, sizeof(cx->iv)); + ci_cbc->encrypt(cx, (u32 *)buf, (u32 *)buf_enc, 512); + ci_cbc->decrypt(cx, (u32 *)buf_enc, (u32 *)buf_dec, 512); + if (err = my_memcmp(buf, buf_dec, sizeof(buf))) { + PRINTF("failed cbc check"); + PRINTF("\nPlaintext buffer\n"); + dump_u8_buffer(buf, 512); + PRINTF("\nEncrypted plaintext\n"); + dump_u8_buffer(buf_enc, 512); + PRINTF("\nDecrypted buffer\n"); + dump_u8_buffer(buf_dec, 512); + exit(err); + return err; + } + } +} + +asmlinkage int printk(const char * fmt, va_list args) +{ + return vprintf(fmt, args); +} + +void dump_u8_buffer(u8 *buf, int number) +{ + int i; + + for(i=0;i +#include +#include + +extern void *malloc(size_t size); +extern void free(void *ptr); + + +void * kmalloc(size_t x, int kind) +{ + return malloc(x); +} + +void kfree(const void *x) +{ + free(((const void *)x)); +} + + +int proc_register(struct proc_dir_entry *parent, struct proc_dir_entry *child) +{ + return 0; +} + +int proc_unregister(struct proc_dir_entry *entry, int stuff) +{ + return 0; +} + +struct proc_dir_entry proc_root; +struct proc_dir_entry proc_root_fs; + +int request_module(const char * name) +{ + return (int) name; +} + diff -urN linux/crypto/testing/test.3des-ede int.2.4.0.t2/crypto/testing/test.3des-ede --- linux/crypto/testing/test.3des-ede Thu Jan 1 01:00:00 1970 +++ int.2.4.0.t2/crypto/testing/test.3des-ede Thu Jul 6 13:45:58 2000 @@ -0,0 +1,41 @@ +# Test-vectors for 3des-ede from cryptix: + +:-) For the record, here are the test vectors in Cryptix: + + private static final String[][] TEST_VALUES = { + // key ............................................ + // plain text ..... cipher text .... + // + { // same key ==> DES + "010101010101010101010101010101010101010101010101", + "95F8A5E5DD31D900", "8000000000000000" }, + { // same key ==> DES + "010101010101010101010101010101010101010101010101", + "9D64555A9A10B852", "0000001000000000" }, + { // same key ==> DES + "3849674C2602319E3849674C2602319E3849674C2602319E", + "51454B582DDF440A", "7178876E01F19B2A" }, + { // same key ==> DES + "04B915BA43FEB5B604B915BA43FEB5B604B915BA43FEB5B6", + "42FD443059577FA2", "AF37FB421F8C4095" }, + { // for checking first phase of below, defers to same + "0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF", + "736F6D6564617461", "3D124FE2198BA318" }, + { // note k1 == k3 + "0123456789ABCDEF55555555555555550123456789ABCDEF", + "736F6D6564617461", "FBABA1FF9D05E9B1" }, + { + "0123456789ABCDEF5555555555555555FEDCBA9876543210", + "736F6D6564617461", "18d748e563620572" }, + { + "0352020767208217860287665908219864056ABDFEA93457", + "7371756967676C65", "c07d2a0fa566fa30" }, + { // some of the weak(?) keys found in the test data + "010101010101010180010101010101010101010101010102", + "0000000000000000", "e6e6dd5b7e722974" }, + { // some of the weak(?) keys found in the test data + "10461034899880209107D0158919010119079210981A0101", + "0000000000000000", "e1ef62c332fe825b" }, + }; + + diff -urN linux/crypto/testing/test.blowfish int.2.4.0.t2/crypto/testing/test.blowfish --- linux/crypto/testing/test.blowfish Thu Jan 1 01:00:00 1970 +++ int.2.4.0.t2/crypto/testing/test.blowfish Thu Jul 6 13:45:58 2000 @@ -0,0 +1,54 @@ +#!/bin/bash + +NR=1 +test () { + echo "Test number $NR" + ./testcip -c blowfish "$@" | sed '/^Registered/d' + NR=$[NR+1] +} + +test -k 0000000000000000 -p 0000000000000000 -e 4EF997456198DD78 +test -k FFFFFFFFFFFFFFFF -p FFFFFFFFFFFFFFFF -e 51866FD5B85ECB8A +test -k 3000000000000000 -p 1000000000000001 -e 7D856F9A613063F2 +test -k 1111111111111111 -p 1111111111111111 -e 2466DD878B963C9D +test -k 0123456789ABCDEF -p 1111111111111111 -e 61F9C3802281B096 +test -k 1111111111111111 -p 0123456789ABCDEF -e 7D0CC630AFDA1EC7 +test -k 0000000000000000 -p 0000000000000000 -e 4EF997456198DD78 +test -k FEDCBA9876543210 -p 0123456789ABCDEF -e 0ACEAB0FC6A0A28D +test -k 7CA110454A1A6E57 -p 01A1D6D039776742 -e 59C68245EB05282B +test -k 0131D9619DC1376E -p 5CD54CA83DEF57DA -e B1B8CC0B250F09A0 +test -k 07A1133E4A0B2686 -p 0248D43806F67172 -e 1730E5778BEA1DA4 +test -k 3849674C2602319E -p 51454B582DDF440A -e A25E7856CF2651EB +test -k 04B915BA43FEB5B6 -p 42FD443059577FA2 -e 353882B109CE8F1A +test -k 0113B970FD34F2CE -p 059B5E0851CF143A -e 48F4D0884C379918 +test -k 0170F175468FB5E6 -p 0756D8E0774761D2 -e 432193B78951FC98 +test -k 43297FAD38E373FE -p 762514B829BF486A -e 13F04154D69D1AE5 +test -k 07A7137045DA2A16 -p 3BDD119049372802 -e 2EEDDA93FFD39C79 +test -k 04689104C2FD3B2F -p 26955F6835AF609A -e D887E0393C2DA6E3 +test -k 37D06BB516CB7546 -p 164D5E404F275232 -e 5F99D04F5B163969 +test -k 1F08260D1AC2465E -p 6B056E18759F5CCA -e 4A057A3B24D3977B +test -k 584023641ABA6176 -p 004BD6EF09176062 -e 452031C1E4FADA8E +test -k 025816164629B007 -p 480D39006EE762F2 -e 7555AE39F59B87BD +test -k 49793EBC79B3258F -p 437540C8698F3CFA -e 53C55F9CB49FC019 +test -k 4FB05E1515AB73A7 -p 072D43A077075292 -e 7A8E7BFA937E89A3 +test -k 49E95D6D4CA229BF -p 02FE55778117F12A -e CF9C5D7A4986ADB5 +test -k 018310DC409B26D6 -p 1D9D5C5018F728C2 -e D1ABB290658BC778 +test -k 1C587F1C13924FEF -p 305532286D6F295A -e 55CB3774D13EF201 +test -k 0101010101010101 -p 0123456789ABCDEF -e FA34EC4847B268B2 +test -k 1F1F1F1F0E0E0E0E -p 0123456789ABCDEF -e A790795108EA3CAE +test -k E0FEE0FEF1FEF1FE -p 0123456789ABCDEF -e C39E072D9FAC631D +test -k 0000000000000000 -p FFFFFFFFFFFFFFFF -e 014933E0CDAFF6E4 +test -k FFFFFFFFFFFFFFFF -p 0000000000000000 -e F21E9A77B71C49BC +test -k 0123456789ABCDEF -p 0000000000000000 -e 245946885754369A +test -k FEDCBA9876543210 -p FFFFFFFFFFFFFFFF -e 6B5C5A9C5D9E0A5A + + + + + + + + + + + diff -urN linux/crypto/testing/test.des int.2.4.0.t2/crypto/testing/test.des --- linux/crypto/testing/test.des Thu Jan 1 01:00:00 1970 +++ int.2.4.0.t2/crypto/testing/test.des Thu Jul 6 13:45:58 2000 @@ -0,0 +1,83 @@ +#!/bin/bash + +NR=1 +test () { + echo "Test number $NR" + ./testcip -c des "$@" | sed '/^Registered/d' + NR=$[NR+1] +} + +test -k 0000000000000000 -p 0000000000000000 -e 8CA64DE9C1B123A7 +test -k FFFFFFFFFFFFFFFF -p FFFFFFFFFFFFFFFF -e 7359B2163E4EDC58 +test -k 3000000000000000 -p 1000000000000001 -e 958E6E627A05557B +test -k 1111111111111111 -p 1111111111111111 -e F40379AB9E0EC533 +test -k 0123456789ABCDEF -p 1111111111111111 -e 17668DFC7292532D +test -k 1111111111111111 -p 0123456789ABCDEF -e 8A5AE1F81AB8F2DD +test -k 0000000000000000 -p 0000000000000000 -e 8CA64DE9C1B123A7 +test -k FEDCBA9876543210 -p 0123456789ABCDEF -e ED39D950FA74BCC4 +test -k 7CA110454A1A6E57 -p 01A1D6D039776742 -e 690F5B0D9A26939B +test -k 0131D9619DC1376E -p 5CD54CA83DEF57DA -e 7A389D10354BD271 + +test -k 07A1133E4A0B2686 -p 0248D43806F67172 -e 868EBB51CAB4599A +test -k 3849674C2602319E -p 51454B582DDF440A -e 7178876E01F19B2A +test -k 04B915BA43FEB5B6 -p 42FD443059577FA2 -e AF37FB421F8C4095 +test -k 0113B970FD34F2CE -p 059B5E0851CF143A -e 86A560F10EC6D85B +test -k 0170F175468FB5E6 -p 0756D8E0774761D2 -e 0CD3DA020021DC09 +test -k 43297FAD38E373FE -p 762514B829BF486A -e EA676B2CB7DB2B7A +test -k 07A7137045DA2A16 -p 3BDD119049372802 -e DFD64A815CAF1A0F +test -k 04689104C2FD3B2F -p 26955F6835AF609A -e 5C513C9C4886C088 +test -k 37D06BB516CB7546 -p 164D5E404F275232 -e 0A2AEEAE3FF4AB77 +test -k 1F08260D1AC2465E -p 6B056E18759F5CCA -e EF1BF03E5DFA575A + +test -k 584023641ABA6176 -p 004BD6EF09176062 -e 88BF0DB6D70DEE56 +test -k 025816164629B007 -p 480D39006EE762F2 -e A1F9915541020B56 +test -k 49793EBC79B3258F -p 437540C8698F3CFA -e 6FBF1CAFCFFD0556 +test -k 4FB05E1515AB73A7 -p 072D43A077075292 -e 2F22E49BAB7CA1AC +test -k 49E95D6D4CA229BF -p 02FE55778117F12A -e 5A6B612CC26CCE4A +test -k 018310DC409B26D6 -p 1D9D5C5018F728C2 -e 5F4C038ED12B2E41 +test -k 1C587F1C13924FEF -p 305532286D6F295A -e 63FAC0D034D9F793 +test -k 0101010101010101 -p 0123456789ABCDEF -e 617B3A0CE8F07100 +test -k 1F1F1F1F0E0E0E0E -p 0123456789ABCDEF -e DB958605F8C8C606 +test -k E0FEE0FEF1FEF1FE -p 0123456789ABCDEF -e EDBFD1C66C29CCC7 + +test -k 0000000000000000 -p FFFFFFFFFFFFFFFF -e 355550B2150E2451 +test -k FFFFFFFFFFFFFFFF -p 0000000000000000 -e CAAAAF4DEAF1DBAE +test -k 0123456789ABCDEF -p 0000000000000000 -e D5D44FF720683D0D +test -k FEDCBA9876543210 -p FFFFFFFFFFFFFFFF -e 2A2BB008DF97C2F2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -urN linux/crypto/testing/test.mars int.2.4.0.t2/crypto/testing/test.mars --- linux/crypto/testing/test.mars Thu Jan 1 01:00:00 1970 +++ int.2.4.0.t2/crypto/testing/test.mars Thu Jul 6 13:45:58 2000 @@ -0,0 +1,438 @@ +#!/bin/bash + +test () { + echo "Test number $I - keysize $KEYSIZE" + echo testcip -c mars -k $KEY -p $PT -e $CT + ./testcip -c mars -k $KEY -p $PT -e $CT | sed '/^Registered/d' +} + +# This data is from the MARS website at +# http://www.research.ibm.com/security/mars.html + +KEYSIZE=128 + +KEY=00000000000000000000000000000000 +PT=00000000000000000000000000000000 +CT=deb3513283c296de39069e6b994c2438 + +test +exit + + The MARS cipher: Test vectors for encryption and key expansion + --------------------------------------------------------------- + +For each key and plaintext, the following information is given: + +Key[n]: The original key, consisting of n 32-bit words +Expanded key: The 40-word expanded key array +Plain Text: The 4-word plaintext +IV1: Values after key addition +IV2: Values after Forward mixing +IV3: Values after Forward "core" +IV4: Values after Backwards "core" +IV5: Values after Backwards mixing +Encryption: The 4-word ciphertext (after key subtraction) + +All the values are given as arrays of 32-bit words. + +======================================================================== + +KEYSIZE=128 + +Key[4]= 00000000 00000000 00000000 00000000 +Expanded Key= [ + b1a4a724 a4ebfe6c 8c31f1ff 46f21b7f 3107f81e 72538073 d9d5bb7c 07cd149b + fd2c12fa e5135e4f 753ab740 bb33ab03 d576aff3 7c14f40b 729b9d51 06a17a6f + 9bf4836a 14d4a4e3 3cebfbf6 a2fe105b d602ac90 330ae033 7838d957 e477c263 + 1c3c1975 09a546d7 e1b7efda 54441e9f c98e224a 2e237bf3 964fa90b 56f7ae07 + 9f7da180 86bad2ef 9e2b2c11 056f518f 1dd62186 b1e4e06c e37c58bc a1f6a479 +] +Plain Text= 00000000 00000000 00000000 00000000 +IV1=b1a4a724 a4ebfe6c 8c31f1ff 46f21b7f +IV2=d4ae0c38 eb8ea742 641bdc9c bdb280da +IV3=ac1a7cb0 acc2f1f0 4758625c e6a02ebb +IV4=d0bd0bde 37a00fb8 42611579 2b2e7337 +IV5=fc8972b8 35a7774a 1c82f727 3b42c8b1 +Encryption= deb35132 83c296de 39069e6b 994c2438 + + + +Key[4]= deb35132 83c296de 39069e6b 994c2438 +Expanded Key= [ + 107f46e3 39ad6bbf aca8391d 44ed470a ad55b583 92110113 54b14fdb f205608b + a9a28c86 bf72c2c3 f61ee573 2ea0a3f7 0a9cf79f 59304a1f 512724f6 367da517 + ef526563 25b0ed67 fa465e58 240a3743 7853b1f3 4e240a9f c17dbecc addaf83b + bfa7fef7 0707ea83 617a9c9d d1679d07 c1145fe7 67c8d86b d682cdb0 b8d7c197 + d233542f 650b9107 32658199 d17af7bb 5402a899 800a2588 aa01ba64 6fff9d90 +] +Plain Text= deb35132 83c296de 39069e6b 994c2438 +IV1=ef329815 bd70029d e5aed788 de396b42 +IV2=4ca72af4 03c66f6d ccad0d6e 96630d80 +IV3=9329ec9a 3d26d758 7cefb387 efedf183 +IV4=39cc73ee 820582dd 1210940a 0a8c46e4 +IV5=fd14ee92 ce0d533c ae243428 0ba5a667 +Encryption= a91245f9 4e032db4 042279c4 9ba608d7 + + + +Key[4]= 77a114cb cdc1bb6a 3d24e7af 02ea2cef +Expanded Key= [ + 44cb6f54 153cc9b2 6ee728e4 a340f7b6 540c1cd3 c409ec9f cdd08801 5091a06b + bcf3fe6d dd2fe2b3 8fb06ca6 5c010d73 68dbb887 bca5cb7b d11bbc8d 151e15c7 + 4a82ec22 3102c2b3 302c92be 31d87c33 0c5f67d8 b0fd72af eeaf82dd f9750f33 + 0787e8e9 4a62dcfb c60b8ef6 f94c0607 7c9c2b56 b49dfca3 414b9c9b dbd4aa0b + b6b17ece 0732d49b 2d9417fe 63ac89ab 339d359b a20d713e a78ab93a 065f28ef +] +Plain Text= a91245f9 4e032db4 042279c4 9ba608d7 +IV1=edddb54d 633ff766 7309a2a8 3ee7008d +IV2=f5281910 68768f38 ebc1221e 79a7d9b8 +IV3=766b7d4a bf15a754 c0116d3a bdf880a2 +IV4=b9f2e174 6669507c 7284181a db627725 +IV5=e0f32ee8 089aaa99 b1ed467a b040501a +Encryption= ad55f94d 668d395b 0a628d40 a9e1272b + + + +Key[4]= daf4ed86 ab4c8231 37466aef ab0b0bc4 +Expanded Key= [ + 9ab7ae2b 0f73f81c afce20e3 9f2cfc8c 24588fd8 71821903 f4c0714f 13e5cf37 + 0c5504ef 87652183 94cf826a 44154193 ac28ea54 0a2bc753 19b79d6d 75a2cb9b + 4c29c8b8 3252e0af ec304911 802ece97 50e19471 03d7b0bb 0dc62c42 33228923 + 55fe4042 27ad014f 00d18904 5008eb3f b1fd2680 7e5d366b edfefe45 3705a077 + 038249f0 783d8b4f 48d8876f 879d2d47 1501127d 767cfa6a 4ae62be2 b078cdc5 +] +Plain Text= ad55f94d 668d395b 0a628d40 a9e1272b +IV1=480da778 76013177 ba30ae23 490e23b7 +IV2=e487eaaa a632cb30 ff8e0b66 0ecec341 +IV3=25a6b5d9 1c060b55 a9650144 0abf5bc8 +IV4=eba5e911 c1dcb107 4d9d6879 84d82641 +IV5=e71059d1 abc6aef5 7a08a7f5 ecd3737c +Encryption= d20f4754 3549b48b 2f227c13 3c5aa5b7 + + + +Key[4]= 08fbaad2 9e0536ba 186416fc 9751ae73 +Expanded Key= [ + 8facb7c3 1e4d7bd0 502e75b3 be262b34 42339164 bc93d863 77542989 57830ca3 + c6005fa6 f961896f 77dabef4 eef3f5ef 2f6d2790 7191e8d3 7a9a75a9 954ab137 + f0f3e6a4 897eea03 da6255a4 651f381f d955b3cc 4c6f688f 98dd5f55 c9af195b + 46cc7058 594426cb 6dcc6f5d 246e1603 4885ac99 a55f011f f0a974f4 1e7879bb + 496516db 53586ce7 052ee42b 16931b2f 2344322a 65538aa7 907ebef8 2edcb4b5 +] +Plain Text= d20f4754 3549b48b 2f227c13 3c5aa5b7 +IV1=61bbff17 5397305b 7f50f1c6 fa80d0eb +IV2=1f5b2a7f 98e26c7d 9c28a2db c388d646 +IV3=5391c7f7 ac9974d6 c61a1ba2 2a835d9a +IV4=439e5ccf 09e5f169 dd070fc1 e48c7f88 +IV5=66d17bdc 564113e9 cf75bd7d b837736d +Encryption= 438d49b2 f0ed8942 3ef6fe85 895abeb8 + + + +Key[4]= 4b76e360 6ee8bff8 2692e879 1e0b10cb +Expanded Key= [ + 52c6f009 815d8fe2 bca5d163 ed58e175 7fcea016 1b1d6a83 6aa9dc77 81738423 + e14a5dac fcf52adb 29555a50 7d69b6cf 86b2fda6 68379ba7 56be0e57 7ee6b92f + a61e4f38 be2b2907 9e38217e ba274493 5a07edf2 81e73e03 d32d7b57 3fa55113 + da0b9ce7 2db6fe77 716a0763 c325bc9b 11f60f27 a630f1d3 002dea39 211a58ef + b31e95b2 d25b023b 4bfa6acd 52fae8eb ae6284ad 93194cdd 138cb6c5 edacf29e +] +Plain Text= 438d49b2 f0ed8942 3ef6fe85 895abeb8 +IV1=965439bb 724b1924 fb9ccfe8 76b3a02d +IV2=7b6be06c 602314b7 63771017 37bea240 +IV3=1db44a41 a2b1ac42 b17bc0d1 a1def98a +IV4=0d57f939 2af36857 096d5f88 a4d22e98 +IV5=aeccfcfb 44341a9c d70f8297 c04ad313 +Encryption= 006a784e b11acdbf c382cbd2 d29de075 + + + +Key[4]= 3c574a4f 4d9ee67d 8502e334 cb30c961 +Expanded Key= [ + 799cd786 064c7fdb 40797b7d a7d6d58d d30dac61 83a0a657 95c4c8ad bfe9f16f + 0f1d67f8 2b655cfb a3ada6ea 971696bb c7f6f838 62bd9817 2a28d073 d00a5dc3 + 70e5b711 833a53cb c41ac997 0226db0f 2a0e962f 4ae61c07 57524b48 75296af3 + 4a3ec498 4899295b 246af131 6ab8bfd3 cab75997 5526fb83 3b006506 701724d7 + 259d2f30 a5495eb3 2c322c6e 6ca0bfbb 96499bb9 35d296e6 c5405907 c790427f +] +Plain Text= 774bd161 926c943a 6012c09f 07a639df +IV1=f0e8a8e7 98b91415 a08c3c1c af7d0f6c +IV2=e505456e 5e50b756 104c76bc 3b7a7f0f +IV3=cd65c3b7 df284a23 cf1d4788 7ac39e05 +IV4=c3335301 9434ec9d b866e1fe 7af2b0d9 +IV5=bc29fc5a acb54455 e56b5886 6e618555 +Encryption= 25e060a1 76e2ad6f 202aff7f a6d142d6 + + + +Key[4]= 19b72aee 3b7c4b12 a5281c4b 6de18bb7 +Expanded Key= [ + 0982d435 f7279ef7 1bda470b 45f061e5 ba116f23 c895f257 5381bcd7 98f66d13 + 97225c42 3f947a5f 651e009f 2606f323 32037254 84ef30f3 c969d992 5494cbcb + 32aff3a5 fbbc8d13 0566bf24 8b900dcb 202848e2 3d4326f3 a4283891 2d15c6e7 + ebf715af ad204e3b c244af1b ac3a3bcb 73be3c62 7c4f754b 00d579c8 de94f6f7 + e5f0cf5c af81d4a7 6bd0c00e dbae03f3 0cabad09 83ade475 b0f5b796 5aedfcd4 +] +Plain Text= 25e060a1 76e2ad6f 202aff7f a6d142d6 +IV1=2f6334d6 6e0a4c66 3c05468a ecc1a4bb +IV2=6f36adf6 ea07f787 ca688e0c f4c1e34e +IV3=e821d02c 5f02db89 55620874 a840651d +IV4=f66436e2 d40e8df4 0ff380b2 9675ffe3 +IV5=f172fa0b 602df703 9b0632f6 171dbbd0 +Encryption= e4c74d02 dc80128e ea107b60 bc2fbefc + + + +Key[4]= fd7067ec e7fc599c 4f38672b d1ce354b +Expanded Key= [ + 35c6054c ead872e0 173d6797 4c3fb6bc dce28b70 3d3fe397 bdd6a46a 212e68fb + eab4dcf5 f7940653 9e40d6a4 0d05f15b 9107bcb2 b1203cb3 bf2cdc40 0fc1c023 + 024817f6 c840506b 079bd465 328bcd5b 54167911 21a2fdcf 904e85f1 9d13314b + 8d73ebe6 474ea967 2bd38bfa 8171605f eeeb15ac aae9dfab 216fb826 d0344cbf + 36930990 6567d303 b69b3b7e ff916b63 38ed75e4 cc4ba8aa 4caae370 9ee7eeaa +] +Plain Text= e4c74d02 dc80128e ea107b60 bc2fbefc +IV1=1a8d524e c758856e 014de2f7 086f75b8 +IV2=a1dbf118 a63a2592 da97146d 633d7cd4 +IV3=7b6da857 9daaa4be ed94501a f2828a94 +IV4=0a9e10fd e5718e50 f9368c26 0a954028 +IV5=96078932 fc574ac3 c9486194 3a1e2cf2 +Encryption= 5d1a134e 300ba219 7c9d7e24 9b363e48 + + + +Key[4]= a06a74a2 d7f7fb85 33a5190f 4af80b03 +Expanded Key= [ + 6a27430b 05197ee0 12bf0ca4 bae671d5 8f5c134c 609be0d3 9588298c 0259f10b + 9b74a8b1 f1eec9db 00209110 4c3d5a47 453eac26 414c783b 199f646f 07926d87 + 3c6485ad be978c6b c11c4c1b efaa2b63 7d279602 ddc41c57 b2ed70bb e666b34b + 3e746d2e e5368f07 eff70385 7d604743 9dce2946 c944cf0b 778a497c 35cfe4ff + 1203474e 3232ff5f 012eabef f479e82b 3cdc7dab 5552410a 03cbbaa2 3ed1c8d3 +] +Plain Text= 5d1a134e 300ba219 7c9d7e24 9b363e48 +IV1=c7415659 352520f9 8f5c8ac8 561cb01d +IV2=ac00b5b3 5fa9e06b d5ab2e6c 91ed9b75 +IV3=e97f4904 cfe41398 18e89eb8 46dddb60 +IV4=d1a0927a 9bc5bc62 b615c73f e9713c36 +IV5=49b56ac7 445c4f4a 8dc56b77 e715291d +Encryption= 0cd8ed1c ef0a0e40 89f9b0d5 a843604a + + +========================= + +KEYSIZE=192 + +Key[6]= 00000000 00000000 00000000 00000000 00000000 00000000 +Expanded Key= [ + 27dee7e4 154762f7 e3c5a235 c48782ce 5913a42a 721c0d67 a48a56ae 80625c03 + 5e79bc19 fa87c763 74dc1baa 95862b4f cb5e6aca adcfa1f7 f95d5ace 783dc87b + fb5a66c8 468d8353 57e96c55 a1b9080f 660f1eda 2280402b 7c08c082 aca23c27 + ac64e883 b12eeaef b4a136c0 badaefdf b01ea677 6941a1bf 1b3fc7df f957f01f + df5a6502 59716c27 b0ca5a13 ddf1435b 55cee350 f6258fd3 9022223d 3c80200d +] +Plain Text= 00000000 00000000 00000000 00000000 +IV1=27dee7e4 154762f7 e3c5a235 c48782ce +IV2=e80fc980 0742e155 bd8d241b 37783b4e +IV3=16b14fca 32df6557 46f71002 276b20e6 +IV4=cf2dc74c 50268150 e051a9c6 0b70b3c9 +IV5=fe228ce3 13669fff 98a87b0e d1cda745 +Encryption= a853a993 1d41102c 088658d1 954d8738 + + + +Key[6]= 088658d1 954d8738 00000000 00000000 00000000 00000000 +Expanded Key= [ + e1bbe2d1 38f11822 8b7ff4cb 833ef90a 3f5553aa 8d070683 17f7fe15 0f7ab327 + f3df6127 902acb97 81dee7fd 583bd767 89313d2a a3771397 28484806 a0d22c3f + 26ceab0c 3fd3aa03 2033baf6 4945ddcb 310275bd d349301b 75aa0b65 c232bb13 + 21e164da 61d7122b d9cdc3a3 a10dcdeb 963d65ee f79190e3 ac5fec07 7bb534db + 0ada3ccc ac68d1bf 07dd3839 bdf75b57 13a61e19 f98ced2b 0bf573f7 e785c0b7 +] +Plain Text= a853a993 1d41102c 088658d1 954d8738 +IV1=8a0f8c64 5632284e 94064d9c 188c8042 +IV2=42715daf 5ec41b05 3844f3df 2865b968 +IV3=ade6083c 910718db d65aef96 642a93e2 +IV4=6d30ef88 7233660f f6e45d88 d7b453c5 +IV5=416a7f80 cbcf4e69 b9b4c39f 769b446a +Encryption= 2dc46167 d242613e adbf4fa8 8f1583b3 + + + +Key[6]= a5391779 1a58048b a853a993 1d41102c 088658d1 954d8738 +Expanded Key= [ + 4a6aebc3 768beddd 1e423871 f8025453 a7c4735e 27ed4143 756416db c8becd2b + 8cf25e26 d6b74c8f c9228fe4 8358a8b7 52d355e2 79da8313 34f9b718 aec232ff + 47b58b4a b4d4b333 c1edc83b 8262694b 34383327 57b83157 28a3944b 364b51cf + 765df4d0 d32bfa13 5c46ca3f 59d46817 8418566a 9a84017b 1c513de5 5b93f74f + b5b9ad02 9a1d6973 54b5bc74 efb92a6f 98bbd3f0 3eb92df5 36b8fdf3 7ebf1ddf +] +Plain Text= 2dc46167 d242613e adbf4fa8 8f1583b3 +IV1=782f4d2a 48ce4f1b cc018819 8717d806 +IV2=e971f2c4 6d32633c 98d1e2f4 d19bf151 +IV3=f645cf5e fdd1e86a 270776f7 8c476579 +IV4=c9762c8c 12eae970 102304a5 82d58468 +IV5=bebf08bb ac11ad3a 178bbb47 3bd83a36 +Encryption= 260334cb 6d587f45 e0d2bd54 bd191c57 + + + +Key[6]= 45ebaa2d a74118dc 8597c8f4 cf037112 a5391779 1a58048b +Expanded Key= [ + c3789384 6cba897c 408d3347 62e14f4f 7d32d3fe 43ea20f7 37fa62bf da083f43 + 11d6a36a 07b4af27 df307c63 e17af4b3 a2a0780a 789c6bdb 01a69dca 222748cf + da90b300 2ec1916f e1f0f2e7 790a2f0b feaf1e2d c91f2683 3245b509 dccc6bdf + 37de8109 e7c010e7 4f2c4c08 c2e5657b 035e22f7 b1ec4a4b 6235691e 3adceb5b + aa741a09 6c5c2aaf 7ba3d350 70a06e87 0561f28b b4286bcc 1e5190ea c1e27949 +] +Plain Text= 260334cb 6d587f45 e0d2bd54 bd191c57 +IV1=e97bc84f da1308c1 215ff09b 1ffa6ba6 +IV2=6968e88e 48a6f539 f646d8f5 ccf35a64 +IV3=351f5756 5bcdd6dd b78eb579 21d447c8 +IV4=47795ee4 580e29ec d58aa750 f2786c0f +IV5=68327186 f1852491 2a73796a a41c3b33 +Encryption= 62d07efb 3d5cb8c5 0c21e880 e239c1ea + + + +Key[6]= 49ca42ad 4578d936 a394fc3f a25b0e57 45ebaa2d a74118dc +Expanded Key= [ + 46cf477d 7806a8af 6c0747fb dc22326f 62e33d0e 3eb59f73 4c4bdc94 6e11939f + 39b73bac d436284f e4e3c788 7730c9ff 1ad527ef 2a208e43 bbb18767 cc89ac87 + f5dba503 402435cf 55aed575 783a9b8b deb4e077 889f48bf b79241f0 3e3229d3 + da59b650 331295af 508fa084 3662f35b 8dd036f0 9338daab 04db36d4 441e3847 + 1bfbd04f a37048a7 5a73c893 8df886bb e71ca0b7 c12b1e84 e43fdbde e0d55925 +] +Plain Text= 62d07efb 3d5cb8c5 0c21e880 e239c1ea +IV1=a99fc678 b5636174 7829307b be5bf459 +IV2=17f9dc09 92619cfa f9eb89ed 6d073d91 +IV3=f8e918b0 0fa0e9a3 db163491 998e7a05 +IV4=0ab43ad1 80927ba4 81b55ad0 adbfa2e7 +IV5=15acb673 39db6781 51aed997 162a269d +Encryption= 2e9015bc 78b048fd 6d6efdb9 3554cd78 + + + +========================= + +KEYSIZE=256 + + +Key[8]= 9867a1fb 22ef7a3e 8ce27c31 a3e1aa02 3ccce5e8 2aa8beed 9ac3db99 27725ed6 +Expanded Key= [ + a91e1d4c 37e56ec3 e58bebf2 6880f69f 4befbee1 99b5f3c3 28f97526 848139ff + 61059077 67cf6183 7fa48a1e 540e89cb 38d3e758 2e9cf23b 447f210c d9522fbf + 00257735 49bbfecf fad2232a cf5b30f7 774d76c3 81c8b1bb a0aafceb 246d7bfb + ed446268 f9c3d043 1eec3571 66b20b3b c263fc6b 8b548cd3 74763e02 55fe0f6f + 9ce3a41e f4c52fe7 556a2237 3a9377f7 d234d139 012c7b59 0299ba4a c9146c4c +] +Plain Text= a4ab4413 0847c4d3 1621a7a8 8493f4d4 +IV1=4dc9615f 402d3396 fbad939a ed14eb73 +IV2=e9a020c2 e0a4f75c a8e75caf 7bbceb86 +IV3=7295ee8e ef559e88 c55cd79f cf801586 +IV4=43b9e148 e3e8b667 00b39555 5a77ef0e +IV5=39d67e16 bf5ddf3c 6238d676 81b8fc2f +Encryption= 67a1acdd be3163e3 5f9f1c2c b8a48fe3 + +Key[8]= ffc60d26 9cde19dd d37d601d 1b4525e1 9867a1fb 22ef7a3e 8ce27c31 a3e1aa02 +Expanded Key= [ + 097eb64b c557cf89 6bbac604 8521dae9 9a595464 324ce39b 65190327 994e3b77 + 4c9bc470 7946faf7 71223e33 131a1dab aa782641 cf99146b fdb3ca12 083277f7 + a94740ba a29543db be118237 1629f7c3 0405db16 f00dee7f d68b0ebd b29d18f7 + afe89b13 8ff53a93 39ed1fc8 5f0f1c2b 771b06ba c250d197 ebf3e844 10d89fcf + 8ebf8837 fe2eba8b b15728c9 96264faf bfdd1e1e d7d14fa5 9815fa3f 2af4dc7a +] +Plain Text= 67a1acdd be3163e3 5f9f1c2c b8a48fe3 +IV1=71206328 8389336c cb59e230 3dc66acc +IV2=7d103a6b 84778a60 3fdba434 9490f8f7 +IV3=66eb22aa 6b422c3b 54c5627e 04e8931e +IV4=ca1318c9 ce16accf 889d9385 eec063fe +IV5=86128f07 b5ef876d 5ca522a4 11a48ba6 +Encryption= c63570e9 de1e37c8 c48f2865 e6afaf2c + + + +Key[8]= 39f37dcf 42c02e15 17f24878 fdea8acd ffc60d26 9cde19dd d37d601d 1b4525e1 +Expanded Key= [ + b5d1b8fc cb2f7b75 5f1c1dda 00a62687 466f4f54 ea90d5f7 af0b7a08 b52eff07 + f651c6ad fe6e7fdf 8cfa506d 61229bcb 83447de8 fbecc4bb baba340c 2336e74b + cd8da3fa 59d6a0b7 1a2733bf ba8f591f 36551504 211451ef c4f6df9b 6bc36377 + 4ee90fc2 8c2e7d97 060d69e7 006c54c3 640d25f5 a26f3277 ecd2c408 8213195b + 5a19494e 552413ab 663979af c4a3ebb3 f2f1c819 2958ee3d 0fe42311 d13d70fe +] +Plain Text= c63570e9 de1e37c8 c48f2865 e6afaf2c +IV1=7c0729e5 a94db33d 23ab463f e755d5b3 +IV2=205d700c edb01810 dd5d7ea0 63e57e89 +IV3=21fc603a 94f5c159 326f10a0 caee99ed +IV4=7a8e1a8d 19e3c5ff c75861d8 70ad45de +IV5=032a106f e7fd9725 a5221cac 2855b0e3 +Encryption= 10384856 bea4a8e8 953df99b 57183fe5 + + + +Key[8]= 29cb3599 fc6486fd 82cfb1e3 aaf2b528 39f37dcf 42c02e15 17f24878 fdea8acd +Expanded Key= [ + 4dcf4e2f 993b2ae8 299c9b55 ba6eee2e 33fc179a c86f1f83 62ad2038 85124d6f + 36862f67 72cc261f 9439514a c4d83ec3 084d31f7 c5763c1f ef5c7974 c17c9487 + 0d4b3adc 25e5df1b a9c5e13c f20eeee7 72a6014c 3145e1c7 271f2f02 6e3f566f + a8e1bed1 c8e60d2b 224c7330 985d62bf 17807fea 4c57f03f 5d4873bd b042a68b + e7e7038a 5458d3ef 6bd3ecfa a94ca647 490f7727 108fa88a 17083fe5 00bd62df +] +Plain Text= 10384856 bea4a8e8 953df99b 57183fe5 +IV1=5e079685 57dfd3d0 beda94f0 11872e13 +IV2=420b553e 6df086e4 7999e228 e50073e3 +IV3=5fc050ea c292d8ef ebf6e830 1bb84912 +IV4=f7fabec8 76867745 c83005b0 af07ab80 +IV5=20a3f1a0 76ade4b6 8eed877d cab8c5f5 +Encryption= d7947a79 661e3c2c 77e54798 c9fb6316 + + + +Key[8]= fe5f4fe0 9a7abad1 f52af67b 6309d63e 29cb3599 fc6486fd 82cfb1e3 aaf2b528 +Expanded Key= [ + c565d096 141e8678 9b1fd313 0ac36be1 d58bb999 80f197fb 5fea7d4e c922cfef + 24ef0266 7a20c223 04eff6ef bc1937cf a2cf1793 738e0507 e0917cf6 22c0348f + aa14ea8e c8119caf 0b4aa557 3b415933 e8f62c04 ee8de23b 989d55d5 c0ff2ebb + 76ae8a58 aa691277 58087c0b 58754acf bd4437e3 119b67cf 79ecad7c 20ef4ccb + 872a528a f4726f5b cb92238a 83e06e47 97b5b690 739f70d6 4643d98f 398a936b +] +Plain Text= d7947a79 661e3c2c 77e54798 c9fb6316 +IV1=9cfa4b0f 7a3cc2a4 13051aab d4becef7 +IV2=d906fff1 be0c3a1c 7f0685ef 059b0b7b +IV3=b67e9f99 0cec4744 b1259502 4a9ee8c4 +IV4=17727c21 5dd4dc1e daceacdb 9a8439f8 +IV5=e831be7a 8b46342a 97c46f04 756ca673 +Encryption= 507c07ea 17a6c354 51809575 3be21308 + + + +Key[8]= ae23480a 8ddc7985 a4aa630e 58ebc536 fe5f4fe0 9a7abad1 f52af67b 6309d63e +Expanded Key= [ + bbc05697 e91c98f2 dfc3b387 6cd475f7 58481400 7ca14ca7 1296cbaa a67919f3 + d8affabd 334358ff b91b1cbe db172497 f9f4d090 712c94ff 429feb5f 7e627087 + 09da20af 1140babb 3d5b3bb3 20c4df67 72702b6d 1c70527b dd0fe8ad 7931df1b + ea38af60 ec62bc1b a23b6d3a b0c21223 c51e7c79 012ff093 3230d7af ddedba1f + 23104c69 4d0614ab 287b7f3f 85b5953b 30897d20 5a87dc90 753693f5 7983c677 +] +Plain Text= 507c07ea 17a6c354 51809575 3be21308 +IV1=0c3c5e81 00c35c46 314448fc a8b688ff +IV2=aa2c442a 8d933397 09eb28e5 60ba4a67 +IV3=1ebfcfc0 4e5c1e33 2b25a340 6e4b6580 +IV4=36fc10a6 63763bf3 18cbaad4 aeaabd86 +IV5=e6ffe933 669e74d5 3193e177 1c949040 +Encryption= b6766c13 0c169845 bc5d4d82 a310c9c9 + +========== + + + + + + + + + + + + + + diff -urN linux/crypto/testing/test.rc5 int.2.4.0.t2/crypto/testing/test.rc5 --- linux/crypto/testing/test.rc5 Thu Jan 1 01:00:00 1970 +++ int.2.4.0.t2/crypto/testing/test.rc5 Thu Jul 6 13:45:58 2000 @@ -0,0 +1,1548 @@ +#!/bin/bash + +# NOTE! These are real test vectors but they _are not_ tested +# with ./testcip -program, since it didn't compile. -Pekka + +test () { + echo "Test number $I - keysize $KEYSIZE" + ./testcip -c rc5 -k $KEY -p $PLT -e $CIP | sed '/^Registered/d' +} + + +KEYSIZE=128 + +I=1 +KEY=00000000000000000000000000000000 +PLT=0000000000000000 +CIP=883883FF1E216EAE +test + +I=2 +KEY=4433112FEAB711778BEF67A792110E8F +PLT=883883FF1E216EAE +CIP=B778BA49909B416E +test + +I=3 +KEY=34674A5515253711848516413A3FA2D9 +PLT=B778BA49909B416E +CIP=FCD887CC6CFA3EC8 +test + +I=4 +KEY=2A34F9A881DE3F2C537E93949FEEE60C +PLT=FCD887CC6CFA3EC8 +CIP=8967D496B0790EDA +test + +I=5 +KEY=5C32634A4DDE89D67002430E38B084B6 +PLT=8967D496B0790EDA +CIP=EA2C67E337131273 +test + +I=6 +KEY=62C3A6BFDBDFC8ABB5358023A4C76153 +PLT=EA2C67E337131273 +CIP=A86C8CE7DF81CC2A +test + +I=7 +KEY=890157A721F7862748713E53716D30A7 +PLT=A86C8CE7DF81CC2A +CIP=C474526F0017C435 +test + +I=8 +KEY=FA1573DF3C738EA7ECA937038E89A3AF +PLT=C474526F0017C435 +CIP=E9428C0CBE68C918 +test + +I=9 +KEY=C486E9A07038E89C75B2B5F00786544C +PLT=E9428C0CBE68C918 +CIP=0BD943E39068D335 +test + +I=10 +KEY=0C2F94875343A2C3F48DD42FD847B593 +PLT=0BD943E39068D335 +CIP=D445FD7502F07D7E +test + +I=11 +KEY=8D3789B1F0A1301D05939C05B1CB8015 +PLT=D445FD7502F07D7E +CIP=71B62AEA0F789FB2 +test + +I=12 +KEY=3DACF2D62BC4948AA6F497AA6A16EA6A +PLT=71B62AEA0F789FB2 +CIP=D4DE56FFD5ACAC3B +test + +I=13 +KEY=0AD98B4F693728BFA58B41A3BBA185AF +PLT=D4DE56FFD5ACAC3B +CIP=27B9AAC70CE6DD54 +test + +I=14 +KEY=53438A230735B087BF71A8872CAB4517 +PLT=27B9AAC70CE6DD54 +CIP=96D4000A1FE521FE +test + +I=15 +KEY=751A9596D72A606A44F09D6E9F8A8E2A +PLT=96D4000A1FE521FE +CIP=027D596E70E67FDD +test + +I=16 +KEY=472A264AA54C4AAE90020BBA387EAACE +PLT=027D596E70E67FDD +CIP=084D7486097F5DEA +test + +I=17 +KEY=50E67E4A7D50F2A69C143C569B52A8E6 +PLT=084D7486097F5DEA +CIP=26DCE9FD91831497 +test + +I=18 +KEY=EA7DA3517A1D33BDC963906D128D19BD +PLT=26DCE9FD91831497 +CIP=DCAB4E64921547DA +test + +I=19 +KEY=3BA0DF5C89F44A3C9D62863089EAC8A4 +PLT=DCAB4E64921547DA +CIP=18ABE640B9E6B971 +test + +I=20 +KEY=EA829ED8CE226C5888A8687075304F90 +PLT=18ABE640B9E6B971 +CIP=2EDA40B0C834F765 +test + +I=21 +KEY=F9141E3C965EC0004AE427489F8C6890 +PLT=2EDA40B0C834F765 +CIP=059656D159706DAA +test + +I=22 +KEY=C305B5F9F5CDA5A1E59FEB05F00544E1 +PLT=059656D159706DAA +CIP=E59344102717A1A1 +test + +I=23 +KEY=CD2088A01AB458F09A76C3E4589E76A0 +PLT=E59344102717A1A1 +CIP=0B1A42A432EA975B +test + +I=24 +KEY=0CEA8624097AC3340F9C3928B4441A84 +PLT=0B1A42A432EA975B +CIP=935524627CF77EF6 +test + +I=25 +KEY=6FA285AEC47E9CF26DF0925E78229442 +PLT=935524627CF77EF6 +CIP=061166839FBF56C2 +test + +I=26 +KEY=01C5F6BB3B97019383F11A13103BBED3 +PLT=061166839FBF56C2 +CIP=40323BD418CE9235 +test + +I=27 +KEY=821A2534DBBE7FC449B8DC806A727864 +PLT=40323BD418CE9235 +CIP=D6FFB23A5BF8CE2C +test + +I=28 +KEY=C3623F96BC1E3392EA0CB906DE8C435A +PLT=D6FFB23A5BF8CE2C +CIP=F08B20BFCD2AF65B +test + +I=29 +KEY=5CBFAF0BC0E39B27D52FAC0F0B83852F +PLT=F08B20BFCD2AF65B +CIP=2DD627ECD3B20DF2 +test + +I=30 +KEY=1806CD906F9024545B72D6D4B4C25DCC +PLT=2DD627ECD3B20DF2 +CIP=0AD02B4DD18C2FFB +test + +I=31 +KEY=533B47B9D8E9380595414901A79F37AD +PLT=0AD02B4DD18C2FFB +CIP=2BDD595B901A0D51 +test + +I=32 +KEY=BDE3DBB78D77930BF6991DAB931566DB +PLT=2BDD595B901A0D51 +CIP=BF99EB003ABFFA8E +test + +I=33 +KEY=45469BF00AAECC60712AB87CCC383F90 +PLT=BF99EB003ABFFA8E +CIP=19FD0782C6B334D5 +test + +I=34 +KEY=A056430A4DB4EBA28446963AD94E4482 +PLT=19FD0782C6B334D5 +CIP=5962E34BFCF57F33 +test + +I=35 +KEY=EA6DF6B7E3BD8DA36027639342EB49DB +PLT=5962E34BFCF57F33 +CIP=BCB9F81F66089A02 +test + +I=36 +KEY=8EE7B38B1D2576F7AC9DEDDFC1030F7F +PLT=BCB9F81F66089A02 +CIP=74C4E87C119D6A43 +test + +I=37 +KEY=9E0E961466805F0C9326DF1802EE66BC +PLT=74C4E87C119D6A43 +CIP=7D3AC9E8CF4EE80D +test + +I=38 +KEY=6A58B288F01A2E7034CAAB4C2EDE2288 +PLT=7D3AC9E8CF4EE80D +CIP=C113094AD4F73BD9 +test + +I=39 +KEY=28BCAAA6790025EA77E891BEE594620A +PLT=C113094AD4F73BD9 +CIP=E83AC68878EC1F24 +test + +I=40 +KEY=7250B348C9181BD87F42728409920018 +PLT=E83AC68878EC1F24 +CIP=E77397A9393BA826 +test + +I=41 +KEY=9CEF33092C6FBD21A79333E13FCD66C9 +PLT=E77397A9393BA826 +CIP=21ED57E24E0FE088 +test + +I=42 +KEY=4958DEB2A99E700232E826BEBB18B6B2 +PLT=21ED57E24E0FE088 +CIP=46B7622DBF7DCA53 +test + +I=43 +KEY=8D095121375B5D155A1B3DB58DBF678D +PLT=46B7622DBF7DCA53 +CIP=852F7D08CC743ADD +test + +I=44 +KEY=3AF060C46EB201C085D662C8D6603B58 +PLT=852F7D08CC743ADD +CIP=0B707A89924B83D9 +test + +I=45 +KEY=7F9B2561991B2B1930BB1B896A0FBAD9 +PLT=0B707A89924B83D9 +CIP=4147445F321F8AE4 +test + +I=46 +KEY=2C13A3772C63C817F43B9AEB14CF2CEF +PLT=4147445F321F8AE4 +CIP=05C4479BF4590B10 +test + +I=47 +KEY=AC69F3730BD913CB3D7FC033E82D11BB +PLT=05C4479BF4590B10 +CIP=014EC1E0611BEA26 +test + +I=48 +KEY=F1A80E28019C0D50748283808292B910 +PLT=014EC1E0611BEA26 +CIP=6B345C61D43CD647 +test + +I=49 +KEY=5D4BBC51AC8596A994397B5DD8171D21 +PLT=6B345C61D43CD647 +CIP=A610C68608A514A7 +test + +I=50 +KEY=049029D6BA04E5BEE8DC275219347AD6 +PLT=A610C68608A514A7 +CIP=BBA9CAAB6AA0748C +test + +I=51 +KEY=DBCF0A1BA76D36DB60BD22ABB499CADB +PLT=BBA9CAAB6AA0748C +CIP=42E67363D4D613D5 +test + +I=52 +KEY=00FDF893744BC9B3C8D5AF3339AB8AC3 +PLT=42E67363D4D613D5 +CIP=A6D7BCAFEC02F2B2 +test + +I=53 +KEY=EAC7487B8495F0EF0087276F21EDCB9F +PLT=A6D7BCAFEC02F2B2 +CIP=437A809B72F19809 +test + +I=54 +KEY=D9A59D67AC25828B0BC198671687BEBB +PLT=437A809B72F19809 +CIP=438E97832A094DE0 +test + +I=55 +KEY=EC0D81EF0A79025B55B96A3F20EFBF83 +PLT=438E97832A094DE0 +CIP=A0722DDE3E45366B +test + +I=56 +KEY=1F108976CD9CF71625766F7E2E10C52E +PLT=A0722DDE3E45366B +CIP=FFA9FBC2AE73C071 +test + +I=57 +KEY=686EF53E967259EAEE44D1BE3E9240C2 +PLT=FFA9FBC2AE73C071 +CIP=F93605BF2E6F52BE +test + +I=58 +KEY=F47B4E7F3DC785E78C1F634BD02D854F +PLT=F93605BF2E6F52BE +CIP=1CF5FB81DF6FDFB9 +test + +I=59 +KEY=8F393029D80359A1A123DFB97AEB0271 +PLT=1CF5FB81DF6FDFB9 +CIP=5A4D3E3D82FD3E36 +test + +I=60 +KEY=23C551F5F3911DE55FE3001DC8A95A7D +PLT=5A4D3E3D82FD3E36 +CIP=A652BD50C400EEBA +test + +I=61 +KEY=075230ACE7166D480922209849E05270 +PLT=A652BD50C400EEBA +CIP=E805C1A1484EF1FC +test + +I=62 +KEY=5189DAED836F9F210D99291D03774B51 +PLT=E805C1A1484EF1FC +CIP=372E8983886B0A77 +test + +I=63 +KEY=720DA49338EF305BE75D31E31E573B63 +PLT=372E8983886B0A77 +CIP=8D7661153BA61A68 +test + +I=64 +KEY=7A2579E9F83941BD7329B10D230BD3C5 +PLT=8D7661153BA61A68 +CIP=963A87730EB2C805 +test + +I=65 +KEY=CB27205F9DA34A731D47129B32159D53 +PLT=963A87730EB2C805 +CIP=482EA344585DB33D +test + +I=66 +KEY=5E8A8410F004160CC6467254E858A204 +PLT=482EA344585DB33D +CIP=A473072F359BD765 +test + +I=67 +KEY=4E37DA3F7299E7A72FDB3FCF484BA33F +PLT=A473072F359BD765 +CIP=905C759B4C34BC6B +test + +I=68 +KEY=FD83A2DFCF175E6B10259977C4AD642B +PLT=905C759B4C34BC6B +CIP=E89E2443E6F522C0 +test + +I=69 +KEY=EE5712C74153EE2B1F0D494B9AE3EFA3 +PLT=E89E2443E6F522C0 +CIP=B5CCF6919E60CC1B +test + +I=70 +KEY=0B6B1065EB3DF2D1A247ABE1145D1DA1 +PLT=B5CCF6919E60CC1B +CIP=88FB0FF209027FFB +test + +I=71 +KEY=864E92AAF9F4200239747202E93ACAC2 +PLT=88FB0FF209027FFB +CIP=1216BABE92A51E11 +test + +I=72 +KEY=A120A7AA9BEC1D96DB6EBF5EBC70ECCE +PLT=1216BABE92A51E11 +CIP=8C06F25DEF2168D8 +test + +I=73 +KEY=E2C56325800134BD59BBBF4940A5983D +PLT=8C06F25DEF2168D8 +CIP=F71DDDE756056FDE +test + +I=74 +KEY=DAE1EAFB37CB17777BBF0D2B1ADFC417 +PLT=F71DDDE756056FDE +CIP=5BF56211FC3CE08B +test + +I=75 +KEY=C48FA649BA5161518B8BCEE56D014401 +PLT=5BF56211FC3CE08B +CIP=57D3FEEE0C478627 +test + +I=76 +KEY=1900BC76589673362EB2371ED90C24BE +PLT=57D3FEEE0C478627 +CIP=FB1193AF48F3459B +test + +I=77 +KEY=5005D1D75087E9076EE34B87B30BBE5F +PLT=FB1193AF48F3459B +CIP=CB9785BFA8406508 +test + +I=78 +KEY=A8915D038917D51F44BD26134289D63F +PLT=CB9785BFA8406508 +CIP=8549B183313FCA50 +test + +I=79 +KEY=043F67BB8B3113A3710D13373DEB4013 +PLT=8549B183313FCA50 +CIP=A6BBB9CDB600EF18 +test + +I=80 +KEY=E96F5EC5C8997ABDCD294EDD983D9AAD +PLT=A6BBB9CDB600EF18 +CIP=726CD70982409ADE +test + +I=81 +KEY=BF059641D53D5C31B91756A9538BAE29 +PLT=726CD70982409ADE +CIP=1C76C2F3A6B6ADDC +test + +I=82 +KEY=493971A385CB377B60A31773914558A3 +PLT=1C76C2F3A6B6ADDC +CIP=895007DA59B8E78B +test + +I=83 +KEY=BB7C68D633E88592B194F2A6857E90CA +PLT=895007DA59B8E78B +CIP=6ABFD6669330CAFF +test + +I=84 +KEY=676E0CD6799E076EACA0355610647976 +PLT=6ABFD6669330CAFF +CIP=23A3E7C2312F40E7 +test + +I=85 +KEY=71400AAA0A088C8AECB0C636E90A7A62 +PLT=23A3E7C2312F40E7 +CIP=67E8F5BB6EC317E8 +test + +I=86 +KEY=028FE18307072C2BBCB3DE2B71B50C6B +PLT=67E8F5BB6EC317E8 +CIP=C2C8E60D0C2FEAD7 +test + +I=87 +KEY=7F1F97A92AF71C95934F16496A13D89D +PLT=C2C8E60D0C2FEAD7 +CIP=A09C11A69AF50A19 +test + +I=88 +KEY=F4487A7637C23DC6A72EAEAAA3380DD6 +PLT=A09C11A69AF50A19 +CIP=44C2FD13F354918D +test + +I=89 +KEY=18433BAB4CD109AB979FA48F51D53763 +PLT=44C2FD13F354918D +CIP=347513216FAF48AB +test + +I=90 +KEY=DDC111110F5B5049A5D1425DA195B9A1 +PLT=347513216FAF48AB +CIP=D0CEB4AF93FCCA68 +test + +I=91 +KEY=04E559736163CD17B149812F2B6F1C4F +PLT=D0CEB4AF93FCCA68 +CIP=A536286FF2835BC7 +test + +I=92 +KEY=73CB7067C6B9794F94BB4BC7E5650CAF +PLT=A536286FF2835BC7 +CIP=E51FDC33A4922310 +test + +I=93 +KEY=15A159CFB4C9EA13419F7417EA9BC033 +PLT=E51FDC33A4922310 +CIP=74EF2C30E7019E9B +test + +I=94 +KEY=C0F29684A1DE3FC085A861E0849685C0 +PLT=74EF2C30E7019E9B +CIP=C2F199B2B8E465CD +test + +I=95 +KEY=01CEC9B25EB0A95ADF82885E7C7C10E2 +PLT=C2F199B2B8E465CD +CIP=461ECB1BBDD216C8 +test + +I=96 +KEY=4B610D0300C324E3E91B5083AED30B4B +PLT=461ECB1BBDD216C8 +CIP=F4E4948DC4D27A2E +test + +I=97 +KEY=FBFD7559B8BFB0E5D92360651A75A2DD +PLT=F4E4948DC4D27A2E +CIP=B9FF7CBF51189BE5 +test + +I=98 +KEY=F5910AE3BF4B447FE57D50835C2B545F +PLT=B9FF7CBF51189BE5 +CIP=7CDE71A25DD6450D +test + +I=99 +KEY=6FEC1C06BF745192888A066233067442 +PLT=7CDE71A25DD6450D +CIP=3994CF3989226B4C +test + +I=100 +KEY=D6F9076178BDACC1857F45698E5F80A9 +PLT=3994CF3989226B4C +CIP=817D63B20B63D6FB +test + +I=101 +KEY=158217F65E88C67A0DEAB0E642642142 +PLT=817D63B20B63D6FB +CIP=6F5E5E134B464B0E +test + +I=102 +KEY=3FC960B794C11E83E751B7430C3F2403 +PLT=6F5E5E134B464B0E +CIP=66E7F0E5CC27164F +test + +I=103 +KEY=25A3D8497D119DD57437E3699A75EB25 +PLT=66E7F0E5CC27164F +CIP=7ECBF284D12C2907 +test + +I=104 +KEY=C1960F404F6CD3D4C6162B8CD09E9E94 +PLT=7ECBF284D12C2907 +CIP=DD621E777CF11221 +test + +I=105 +KEY=D535E34BE03F09F7F1E1D0DF5475BAB7 +PLT=DD621E777CF11221 +CIP=04931D3D3F19C113 +test + +I=106 +KEY=F1E73D0D728D7C5D4E6DD8B931534C3D +PLT=04931D3D3F19C113 +CIP=7F0923D40494C7A5 +test + +I=107 +KEY=80402038ACB2897CE232CB4C3836EE44 +PLT=7F0923D40494C7A5 +CIP=AFA196C7F5991792 +test + +I=108 +KEY=AF03F5D3F3C3BE778CB5BE87042F3037 +PLT=AFA196C7F5991792 +CIP=DFAC3E8F35205169 +test + +I=109 +KEY=5AC7371BF97D57576581C367AB0BE70F +PLT=DFAC3E8F35205169 +CIP=97671E5CC3DFA2F5 +test + +I=110 +KEY=79F87EB86A6079A4E046E204CAAA094C +PLT=97671E5CC3DFA2F5 +CIP=9D7001B8F47474E0 +test + +I=111 +KEY=C77079B8188613C8DA8209BC28B00AB8 +PLT=9D7001B8F47474E0 +CIP=BD1B85428B44EFD1 +test + +I=112 +KEY=A0AEF516B6A0A6B2C2E8553AE5D48382 +PLT=BD1B85428B44EFD1 +CIP=CEF9411204DBB0DD +test + +I=113 +KEY=1CFCAD3ABE76A6B21652171A314A6BB2 +PLT=CEF9411204DBB0DD +CIP=AA5E86E576BAEAD1 +test + +I=114 +KEY=75C9F82D98895A755D9FE3E57569B675 +PLT=AA5E86E576BAEAD1 +CIP=5356FFC9DDA8858E +test + +I=115 +KEY=73C3BA61C4053A914485A0E1A9575219 +PLT=5356FFC9DDA8858E +CIP=DC5605588219BA0E +test + +I=116 +KEY=90AAEFC091EA75E00DCC3B6078CED418 +PLT=DC5605588219BA0E +CIP=9AF377A4DF1AF6C4 +test + +I=117 +KEY=AA422314E78CEF24334AA0885C868F14 +PLT=9AF377A4DF1AF6C4 +CIP=65EE9FF12244080B +test + +I=118 +KEY=E521153D214F6409E1BB59852B2B7C31 +PLT=65EE9FF12244080B +CIP=80A0D82D08AD2727 +test + +I=119 +KEY=276D174529F90FAD4B5145B1459B82BD +PLT=80A0D82D08AD2727 +CIP=DE4A09776C8431D8 +test + +I=120 +KEY=A9B1E4AF9227192F485B77C38B290FC7 +PLT=DE4A09776C8431D8 +CIP=70CBBC4EF0232C14 +test + +I=121 +KEY=4782B49E0DCECEF649BC7486298803CE +PLT=70CBBC4EF0232C14 +CIP=335545FF9FEC562C +test + +I=122 +KEY=CD7D4A7340F5EB77E9AF2DBFE829DEAF +PLT=335545FF9FEC562C +CIP=E8D2EEB266DF09D8 +test + +I=123 +KEY=5D30BFBAE31C4E8AF4D27B5E0F308A12 +PLT=E8D2EEB266DF09D8 +CIP=4BC37331863E2F4B +test + +I=124 +KEY=B3877E7141D11D11AB051D150E31AFD1 +PLT=4BC37331863E2F4B +CIP=0D8E2A158120676B +test + +I=125 +KEY=DA0F051187C11DE58859B20598E14F35 +PLT=0D8E2A158120676B +CIP=7E026D14C8591C67 +test + +I=126 +KEY=02EEE1EC32D41A3C918075E877AA3ED4 +PLT=7E026D14C8591C67 +CIP=91C6E084E4C3A25A +test + +I=127 +KEY=BDF6B078E7AE8434908A1D483000E454 +PLT=91C6E084E4C3A25A +CIP=EC67F6FE4CD74E43 +test + +I=128 +KEY=4AFCC362B0A44ABE4B3E0E4286A27A0E +PLT=EC67F6FE4CD74E43 +CIP=1CEA06CF62B737A0 +test + +I=129 +KEY=DC6D33DF31D79A376B07C3831033C4AF +PLT=1CEA06CF62B737A0 +CIP=ABF319BEFEAB17E6 +test + +I=130 +KEY=7728EE029B18D14E0FAADB6A26EEDE0E +PLT=ABF319BEFEAB17E6 +CIP=2FA845279E184D1B +test + +I=131 +KEY=44D1F4D7A899E0BF774D8A8798237817 +PLT=2FA845279E184D1B +CIP=B59D26A53B9F3C16 +test + +I=132 +KEY=1F1F0131308DEE15B8C7380955595BB5 +PLT=B59D26A53B9F3C16 +CIP=5402D7F2843361A5 +test + +I=133 +KEY=215289D246F81ED26000EE9A547E9112 +PLT=5402D7F2843361A5 +CIP=2FDFC82DC29DEB09 +test + +I=134 +KEY=05BD7E71C4AF6B354E059B75DD47067D +PLT=2FDFC82DC29DEB09 +CIP=1405F43C5B74A09F +test + +I=135 +KEY=4ADC70808C189EACC67A4FCC922E2D2C +PLT=1405F43C5B74A09F +CIP=E3C2261579F93ADA +test + +I=136 +KEY=E195A7A5350F06050F3FC80D5D4F7CA5 +PLT=E3C2261579F93ADA +CIP=7C8E6CD59CA7DAAE +test + +I=137 +KEY=4DD36711E107A1F5540B7A257D25A7C5 +PLT=7C8E6CD59CA7DAAE +CIP=D372EAB336A44A5A +test + +I=138 +KEY=E4FB0E3FCB0D604B5F4BCBC736199403 +PLT=D372EAB336A44A5A +CIP=FA96B094C7DCEEF3 +test + +I=139 +KEY=D634AE6487686D1C0EF4B8449AF09C04 +PLT=FA96B094C7DCEEF3 +CIP=FDEA162D6EB09608 +test + +I=140 +KEY=2C01C1A1E7F959956AA131197DAB111D +PLT=FDEA162D6EB09608 +CIP=8654F781884AAC3B +test + +I=141 +KEY=54FDB8C9864F90C98A691339A53FD681 +PLT=8654F781884AAC3B +CIP=E372EE8FC03C8C4D +test + +I=142 +KEY=D461A93BB3CF624F9659C02BE693BC2F +PLT=E372EE8FC03C8C4D +CIP=87EA0DFD7ABE61E9 +test + +I=143 +KEY=7D09E059CAA56285A77191CD080FD57D +PLT=87EA0DFD7ABE61E9 +CIP=6ADFBE420889CDE3 +test + +I=144 +KEY=4B9AC05A0C827EC22A84C3DED8C0B1D2 +PLT=6ADFBE420889CDE3 +CIP=6F31C3EF3A56D66F +test + +I=145 +KEY=54BDD657FA95F60FB909EA8F0F89519F +PLT=6F31C3EF3A56D66F +CIP=F27546BDE1A1DD2A +test + +I=146 +KEY=6CC18FBD505D1BCDE5E16219CF8F5B5D +PLT=F27546BDE1A1DD2A +CIP=5271A1BF41E1F8ED +test + +I=147 +KEY=25616E4F0FBB7967B091481B58639D7F +PLT=5271A1BF41E1F8ED +CIP=B77EF9B7412D74D5 +test + +I=148 +KEY=E76DAE275EF199173CF3515739359DE7 +PLT=B77EF9B7412D74D5 +CIP=FB519D537F03C0DE +test + +I=149 +KEY=3EBDD9B3849D6E7B69EFF26B6213BCE3 +PLT=FB519D537F03C0DE +CIP=6CFF1710ADE9AFAD +test + +I=150 +KEY=93A8EC0CB1A2A59045A8BB84157E04C0 +PLT=6CFF1710ADE9AFAD +CIP=0D783FF6079C2D11 +test + +I=151 +KEY=BBC25FE2A60246CE032EB1F25B3E0716 +PLT=0D783FF6079C2D11 +CIP=791A75C228B3D365 +test + +I=152 +KEY=CBE6FB02EFDAD712ACF23AC61D98D062 +PLT=791A75C228B3D365 +CIP=63F01470159B9E47 +test + +I=153 +KEY=D87EC6240D0699681342B0307E842D60 +PLT=63F01470159B9E47 +CIP=41722CCF0A7914A8 +test + +I=154 +KEY=AF0154436B730AD7A5313C9728B748AF +PLT=41722CCF0A7914A8 +CIP=B6A366ABC8F189AE +test + +I=155 +KEY=6CC51BDB93D554C305E780CB0347EF7B +PLT=B6A366ABC8F189AE +CIP=BB37DA35FFD80457 +test + +I=156 +KEY=03ADB3A528E9BD7D1B9312B1C9B3DCD5 +PLT=BB37DA35FFD80457 +CIP=9FE86E9822A94D70 +test + +I=157 +KEY=8F20207416085F48F2B6E4F062BAB108 +PLT=9FE86E9822A94D70 +CIP=42108BFA127FAB39 +test + +I=158 +KEY=D8683FF639A6F3DA1D72B0AE4B60D9BA +PLT=42108BFA127FAB39 +CIP=C84A5F8E164485F0 +test + +I=159 +KEY=01C4A88E6C4C4C9E9182E24E58BE652E +PLT=C84A5F8E164485F0 +CIP=0D7E9B5CC0AC33DF +test + +I=160 +KEY=83F8122078746BB4AFB62E68CBC2ADEC +PLT=0D7E9B5CC0AC33DF +CIP=340E0E67ADD2D77D +test + +I=161 +KEY=B75F9DB7F6AD30CFF50F719B0C2F8DB7 +PLT=340E0E67ADD2D77D +CIP=9B2DA0E5281016C2 +test + +I=162 +KEY=4FBFEFA9C227C4ADF3C763112B2988E5 +PLT=9B2DA0E5281016C2 +CIP=411F45BC6F280B37 +test + +I=163 +KEY=62D098509208532C466249C0AADA45BC +PLT=411F45BC6F280B37 +CIP=29CA18AFF6993FEE +test + +I=164 +KEY=BB59884FB3C5973FCE7348732B93EC7F +PLT=29CA18AFF6993FEE +CIP=11D5047D502C8D28 +test + +I=165 +KEY=6869EC6541EFECADA7593BC58905A81D +PLT=11D5047D502C8D28 +CIP=613E40D662A9058F +test + +I=166 +KEY=B660296E9920772ECAF2528A65A226B6 +PLT=613E40D662A9058F +CIP=3ADAE5366AB89201 +test + +I=167 +KEY=3146DD6A5E3670963AE240DA73A63BD6 +PLT=3ADAE5366AB89201 +CIP=2685B0A6C4F47780 +test + +I=168 +KEY=0354868A55DA211ED35AADE62770EAC6 +PLT=2685B0A6C4F47780 +CIP=DC06A2F4510B0D98 +test + +I=169 +KEY=7A4292C85ACABFEC2A506684DABE93D4 +PLT=DC06A2F4510B0D98 +CIP=B5ABE033A943715F +test + +I=170 +KEY=755B4193D293783BA19307EF8AF18593 +PLT=B5ABE033A943715F +CIP=55145BC9489DC79E +test + +I=171 +KEY=8E7FA619EB4D61618A2B891119177ED9 +PLT=55145BC9489DC79E +CIP=469589A83E15795C +test + +I=172 +KEY=0E4A0F1419E04410215CAE1880049668 +PLT=469589A83E15795C +CIP=60546FDB6E75B430 +test + +I=173 +KEY=001569574191C053C9C3DCC333D79A4B +PLT=60546FDB6E75B430 +CIP=C53251F7D7794ED9 +test + +I=174 +KEY=4199BB77AC557737C06B8C9F38E788D7 +PLT=C53251F7D7794ED9 +CIP=4597FC424A659374 +test + +I=175 +KEY=1CCAF95EACA81CCA985E036A948035B2 +PLT=4597FC424A659374 +CIP=139FA4C13FE579E8 +test + +I=176 +KEY=192763495405D351F14FDC3DE2798091 +PLT=139FA4C13FE579E8 +CIP=46284F4AAE8C6762 +test + +I=177 +KEY=08BE1FDAB36CCBAADD50DA8238F0CFDA +PLT=46284F4AAE8C6762 +CIP=9A6B08B20AB64D88 +test + +I=178 +KEY=C04C0ABA375C2182998A89DADE0ABAA2 +PLT=9A6B08B20AB64D88 +CIP=A3EF435A254AA1BC +test + +I=179 +KEY=31C60CFAA936CAB241D0E512D60C559A +PLT=A3EF435A254AA1BC +CIP=F04905782C96729A +test + +I=180 +KEY=B738BC245D7693F0EAF094786338E7A8 +PLT=F04905782C96729A +CIP=D890D9B6FA044BFC +test + +I=181 +KEY=F97E762AF14AB1CE5C240E1A601E9036 +PLT=D890D9B6FA044BFC +CIP=8DF90CD89185BD2B +test + +I=182 +KEY=6C4EE4A81ED06C981DBA62F07B08A8A8 +PLT=8DF90CD89185BD2B +CIP=E9962A11CADA1476 +test + +I=183 +KEY=BB19C26DDDF7B52974DFCFB937E3A761 +PLT=E9962A11CADA1476 +CIP=01E654B4F7D702B6 +test + +I=184 +KEY=F006FCE4C8B4B4D429AE82A83936ABB4 +PLT=01E654B4F7D702B6 +CIP=DE2A01F4C83D4FBD +test + +I=185 +KEY=FE9E2908B8D6142C0386CC08624A32A4 +PLT=DE2A01F4C83D4FBD +CIP=4FBD9F7388027424 +test + +I=186 +KEY=202B7D0BC7BBEC7363DD204BA47D25E3 +PLT=4FBD9F7388027424 +CIP=EF831C50ABF89607 +test + +I=187 +KEY=DF20CEC4EE581C70AB40A894BB0859D0 +PLT=EF831C50ABF89607 +CIP=A50964BD7BAED843 +test + +I=188 +KEY=D0DDDACDCC039DED553717812BB9170D +PLT=A50964BD7BAED843 +CIP=7D782764FFA0A8BE +test + +I=189 +KEY=818676605F9A4BAC1ADE7C6018345F54 +PLT=7D782764FFA0A8BE +CIP=E926424E163DCD43 +test + +I=190 +KEY=A0C24EEE70AA9746D594D216D3D2D3BE +PLT=E926424E163DCD43 +CIP=D22F59B40BA6EF61 +test + +I=191 +KEY=10C2D770BD10BB442D1CC410CA1C09C4 +PLT=D22F59B40BA6EF61 +CIP=7622C571BBF113D6 +test + +I=192 +KEY=CF3F94B1840739310DED25D97B5DE8B1 +PLT=7622C571BBF113D6 +CIP=F12288744E04E3C2 +test + +I=193 +KEY=11A600F891D4EF2CD67A9DF04D84A6D4 +PLT=F12288744E04E3C2 +CIP=2F4476E3F9AC3806 +test + +I=194 +KEY=CD5FB9076D23584B3A6723AF73B9E973 +PLT=2F4476E3F9AC3806 +CIP=2583FF8C16ED6666 +test + +I=195 +KEY=35C82F501C8077F40592B270CEEADBBC +PLT=2583FF8C16ED6666 +CIP=A8C25E5702002AB0 +test + +I=196 +KEY=216D49CF34AD93473AED123B36CD07B7 +PLT=A8C25E5702002AB0 +CIP=4064EB43FEAFD539 +test + +I=197 +KEY=D3B36F97C497B2C3809DDD17078580D3 +PLT=4064EB43FEAFD539 +CIP=973E2EDFB4F8360A +test + +I=198 +KEY=E3F7BDE32D61621F8EC5E323ADE9482F +PLT=973E2EDFB4F8360A +CIP=4D2CAF26D7A6839F +test + +I=199 +KEY=4FA402465C36C71E36280E0A46026CD6 +PLT=4D2CAF26D7A6839F +CIP=495E72861ED2FA07 +test + +I=200 +KEY=A03404D683DCC72EF122A5960704AC46 +PLT=495E72861ED2FA07 +CIP=0E5459C40522EAA7 +test + +I=201 +KEY=803C4F14E01C1A3CDF7453DC89B2C944 +PLT=0E5459C40522EAA7 +CIP=484A71FEA947E559 +test + +I=202 +KEY=0352A7C67B94EA66E260C62A7EDE724E +PLT=484A71FEA947E559 +CIP=B89282B381559C3D +test + +I=203 +KEY=81D114C378D18D736351455BC3CFDA63 +PLT=B89282B381559C3D +CIP=2C59A1CF370982F9 +test + +I=204 +KEY=F6DD9533CB8378CFBA6910DB2A27256F +PLT=2C59A1CF370982F9 +CIP=B63893339044E3BF +test + +I=205 +KEY=B5F75B4F570B102315C133637CB360D3 +PLT=B63893339044E3BF +CIP=4CAE18100BEA368F +test + +I=206 +KEY=2362A4C8B55AA7A04CB0EB2877204E50 +PLT=4CAE18100BEA368F +CIP=508646575A15ECB9 +test + +I=207 +KEY=74857947E96FDD57EDD7476B8F0B2547 +PLT=508646575A15ECB9 +CIP=16004ECF06D205EB +test + +I=208 +KEY=341F17A354B152BF976DD477E2C7C27F +PLT=16004ECF06D205EB +CIP=5CF08AC79EBFF2BA +test + +I=209 +KEY=9F8BC59342279F1F11ED54BFDB57D027 +PLT=5CF08AC79EBFF2BA +CIP=FBEEE6E3E3FA9AAB +test + +I=210 +KEY=B55BDE67308DF1EB26556043160D78D3 +PLT=FBEEE6E3E3FA9AAB +CIP=6E345F03FF6377E8 +test + +I=211 +KEY=050BB8BFD9CD6E932D29875FBFD9E023 +PLT=6E345F03FF6377E8 +CIP=9B9611D70867C0D1 +test + +I=212 +KEY=1B39EB0352C55D1F2599C0E778D59957 +PLT=9B9611D70867C0D1 +CIP=DAF0C46A385E783F +test + +I=213 +KEY=FA9A8A22C80A73BAA922148EC406930A +PLT=DAF0C46A385E783F +CIP=D82DD2D52686F120 +test + +I=214 +KEY=AE01F9E115F9272DC0B7EF7148A1D045 +PLT=D82DD2D52686F120 +CIP=B6E7FAFF95B5601D +test + +I=215 +KEY=99579BDBA185366F0DE7178F8A43093F +PLT=B6E7FAFF95B5601D +CIP=19D24D8DB2FF6999 +test + +I=216 +KEY=C6419A75743F7BD507AB8A55BD8F825D +PLT=19D24D8DB2FF6999 +CIP=EE74D01E49B02923 +test + +I=217 +KEY=52141C3A5670A01E2C34B14EAFB6568E +PLT=EE74D01E49B02923 +CIP=650003F0AC78DDCF +test + +I=218 +KEY=5926C1A44F4A2C902BA4C7644A5E91E0 +PLT=650003F0AC78DDCF +CIP=8A1A4201CB35698E +test + +I=219 +KEY=E7476FBD9F8D12B939397EDD489BE751 +PLT=8A1A4201CB35698E +CIP=30D4B2D556325343 +test + +I=220 +KEY=8D179C51681FAE65856351A5C6231515 +PLT=30D4B2D556325343 +CIP=B84D98C1C7496DFE +test + +I=221 +KEY=60F5EEC91979A5699C393DC10C49DC51 +PLT=B84D98C1C7496DFE +CIP=A5FE28B39207D1E2 +test + +I=222 +KEY=8037D15FF6CB1D337253581F4DA50D53 +PLT=A5FE28B39207D1E2 +CIP=6082ECB44CB335B0 +test + +I=223 +KEY=84A260182C0C2D14496611E4B1343184 +PLT=6082ECB44CB335B0 +CIP=8C29FA05479CB354 +test + +I=224 +KEY=B50B6125CADDF1ADBFEB10F1A31F6AB5 +PLT=8C29FA05479CB354 +CIP=A388DBDCE3DF7C51 +test + +I=225 +KEY=E4DCB160F18A548C88A86748DEE82E6C +PLT=A388DBDCE3DF7C51 +CIP=F17792A2F0B03856 +test + +I=226 +KEY=9E4052B66B80269A489E3FCA2626CF62 +PLT=F17792A2F0B03856 +CIP=37106FB40A5A62AE +test + +I=227 +KEY=6B907674E534BCF45650662411B8C6D4 +PLT=37106FB40A5A62AE +CIP=8246745732174575 +test + +I=228 +KEY=947315A35D85738736F15D0791C57267 +PLT=8246745732174575 +CIP=0ECD20FA52B7ED7D +test + +I=229 +KEY=F6E62712066084D2B38ABAB2D8A073BA +PLT=0ECD20FA52B7ED7D +CIP=6C3AE64082C4F2D3 +test + +I=230 +KEY=CD609004646EE2986634EBA055222BA0 +PLT=6C3AE64082C4F2D3 +CIP=8E7D9F47565CA786 +test + +I=231 +KEY=F2F7C2CB9BC5EFCF2BC5937F8CCD74A7 +PLT=8E7D9F47565CA786 +CIP=76ECA83CB23DB045 +test + +I=232 +KEY=48FC37D8D734ED2C06A8617036167F0C +PLT=76ECA83CB23DB045 +CIP=5513837DB5C0AE31 +test + +I=233 +KEY=697FC95D53CD031D5E1587213945B82D +PLT=5513837DB5C0AE31 +CIP=03FA443F67D97740 +test + +I=234 +KEY=81CF44F300777B278DCF135FD8A7DB9F +PLT=03FA443F67D97740 +CIP=B6BF41C92C4BA925 +test + +I=235 +KEY=810BC62DBE1DE7E9F1E7C7A199E7E609 +PLT=B6BF41C92C4BA925 +CIP=A437A2CC60A3899A +test + +I=236 +KEY=4B1C2F8430501BCCC56C37AC7B50E73C +PLT=A437A2CC60A3899A +CIP=0D073B2DACD1DE7F +test + +I=237 +KEY=7C2982D984D11FB5F643E045B5A36C6D +PLT=0D073B2DACD1DE7F +CIP=9F1DA216D1CCB42A +test + +I=238 +KEY=75D202DE61845D0EC0C6753272C8DB66 +PLT=9F1DA216D1CCB42A +CIP=DA949E68AA4312F9 +test + +I=239 +KEY=76D8CEACDADA46C01E2EE464BE4A5358 +PLT=DA949E68AA4312F9 +CIP=7535B6508100C572 +test + +I=240 +KEY=B144D6487B660968A1D84824B46897C0 +PLT=7535B6508100C572 +CIP=9C7B2962BD28588B +test + +I=241 +KEY=A38EE37625DAA082A03476C2883E6AB2 +PLT=9C7B2962BD28588B +CIP=F4F0C5E36F1BCB4A +test + +I=242 +KEY=8FE7CD3B3E03C5EBEA59D53F685F4453 +PLT=F4F0C5E36F1BCB4A +CIP=A65FB8441CD2F52E +test + +I=243 +KEY=03708A6011C6C96C112A4400061C1CE4 +PLT=A65FB8441CD2F52E +CIP=499A7317E352869A +test + +I=244 +KEY=6EB7B73B13192F3F3B1DDC97563350D7 +PLT=499A7317E352869A +CIP=DC74E83F914CE1F5 +test + +I=245 +KEY=79D3992BF897A3D70F252427612BDC1F +PLT=DC74E83F914CE1F5 +CIP=6204047C6D1D7851 +test + +I=246 +KEY=E6AA23B0C3D262F431A40F18832EDA8C +PLT=6204047C6D1D7851 +CIP=E2CBEB58BEFE5DEF +test + +I=247 +KEY=F282785CC97A38E07E20E83C65E66D98 +PLT=E2CBEB58BEFE5DEF +CIP=AD9720A18DF4ECD8 +test + +I=248 +KEY=07B5D7A9779D8EC9E6917F817C695561 +PLT=AD9720A18DF4ECD8 +CIP=DF34149BD0B8E3D1 +test + +I=249 +KEY=C39B7EDB3F4196138E15AA8F0C73574B +PLT=DF34149BD0B8E3D1 +CIP=E7B1A2C903E20CCC +test + +I=250 +KEY=0621A845AFBF6399855D6F2D18C91EC9 +PLT=E7B1A2C903E20CCC +CIP=5F303A708CA44CC1 +test + +I=251 +KEY=3AA4F788AED061D0AB7CD568D0D644D0 +PLT=5F303A708CA44CC1 +CIP=5E3651FE419CD9FC +test + +I=252 +KEY=E472E896CDEE669E1E600392C34ED94E +PLT=5E3651FE419CD9FC +CIP=33135B2B11B94C13 +test + +I=253 +KEY=CCC95DC34527B44B3CE1AE0B571BBFDB +PLT=33135B2B11B94C13 +CIP=E8FD390B5F252B1A +test + +I=254 +KEY=2BC779EBE6490423CA49E42B91D1B72B +PLT=E8FD390B5F252B1A +CIP=762D2725FBEF2DBE +test + +I=255 +KEY=EFDFCB952B81A19D93AD2C495FCB1495 +PLT=762D2725FBEF2DBE +CIP=A8077693C5E70D85 +test + +I=256 +KEY=B9E7288F4B91B00B07290A4BAA072D23 +PLT=A8077693C5E70D85 +CIP=E517B7748C7F6DE7 +test diff -urN linux/crypto/testing/test.serpent int.2.4.0.t2/crypto/testing/test.serpent --- linux/crypto/testing/test.serpent Thu Jan 1 01:00:00 1970 +++ int.2.4.0.t2/crypto/testing/test.serpent Thu Jul 6 13:45:58 2000 @@ -0,0 +1,6033 @@ +#!/bin/bash + +test () { + echo "Test number $I - keysize $KEYSIZE" + ./testcip -c serpent -k $KEY -p $PT -e $CT | sed '/^Registered/d' +} + +# This data is from the Serpent AES submission (filename ecb_e_m.txt) + +KEYSIZE=128 + +I=0 +KEY=00000000000000000000000000000000 +PT=00000000000000000000000000000000 +CT=90e7a5ba9497fa1bfc00f7d1a3a86a1e +test + +I=1 +KEY=90e7a5ba9497fa1bfc00f7d1a3a86a1e +PT=90e7a5ba9497fa1bfc00f7d1a3a86a1e +CT=5d0c5da998aaa940d493738892579447 +test + +I=2 +KEY=cdebf8130c3d535b2893845931fffe59 +PT=5d0c5da998aaa940d493738892579447 +CT=b5e6510fbbd63d828ade0b89ae48ef5f + +I=3 +KEY=780da91cb7eb6ed9a24d8fd09fb71106 +PT=b5e6510fbbd63d828ade0b89ae48ef5f +CT=8056b61dacb4d3f52976ef5b1d4165e8 + +I=4 +KEY=f85b1f011b5fbd2c8b3b608b82f674ee +PT=8056b61dacb4d3f52976ef5b1d4165e8 +CT=3997c4990223e5c70f3cb015f48ec57a + +I=5 +KEY=c1ccdb98197c58eb8407d09e7678b194 +PT=3997c4990223e5c70f3cb015f48ec57a +CT=b7754c34b5837b193364fc55cca342d3 + +I=6 +KEY=76b997acacff23f2b7632ccbbadbf347 +PT=b7754c34b5837b193364fc55cca342d3 +CT=e913e0510a87bdbc5307183b43e5bead + +I=7 +KEY=9faa77fda6789e4ee46434f0f93e4dea +PT=e913e0510a87bdbc5307183b43e5bead +CT=5deecef8bb9617241c3b72b0ca15d781 + +I=8 +KEY=c244b9051dee896af85f4640332b9a6b +PT=5deecef8bb9617241c3b72b0ca15d781 +CT=f93e76e8ea57a73ecf91768d887a3132 + +I=9 +KEY=3b7acfedf7b92e5437ce30cdbb51ab59 +PT=f93e76e8ea57a73ecf91768d887a3132 +CT=4155187326abdd90e66ee198b92852c5 + +I=10 +KEY=7a2fd79ed112f3c4d1a0d1550279f99c +PT=4155187326abdd90e66ee198b92852c5 +CT=5c4242407bd8348aa3c3b6a243b7c371 + +I=11 +KEY=266d95deaacac74e726367f741ce3aed +PT=5c4242407bd8348aa3c3b6a243b7c371 +CT=5b4cecf483508ff319caa2f00a0c17d5 + +I=12 +KEY=7d21792a299a48bd6ba9c5074bc22d38 +PT=5b4cecf483508ff319caa2f00a0c17d5 +CT=aeeb485281bb39e30c56a9e7aa636ca8 + +I=13 +KEY=d3ca3178a821715e67ff6ce0e1a14190 +PT=aeeb485281bb39e30c56a9e7aa636ca8 +CT=74aa340e5149fd50a92687169a5dad2c + +I=14 +KEY=a7600576f9688c0eced9ebf67bfcecbc +PT=74aa340e5149fd50a92687169a5dad2c +CT=8bcead0ed0a0932cf13fcb7ab5011a8d + +I=15 +KEY=2caea87829c81f223fe6208ccefdf631 +PT=8bcead0ed0a0932cf13fcb7ab5011a8d +CT=c4002db30e5fcde6f52f855600d1c2d5 + +I=16 +KEY=e8ae85cb2797d2c4cac9a5dace2c34e4 +PT=c4002db30e5fcde6f52f855600d1c2d5 +CT=e9dd90ae5a580fef7f81620f75390414 + +I=17 +KEY=017315657dcfdd2bb548c7d5bb1530f0 +PT=e9dd90ae5a580fef7f81620f75390414 +CT=f27e886c458ef023209736a2359d3895 + +I=18 +KEY=f30d9d0938412d0895dff1778e880865 +PT=f27e886c458ef023209736a2359d3895 +CT=8b740f950c175f95040ca834cc11e520 + +I=19 +KEY=7879929c3456729d91d359434299ed45 +PT=8b740f950c175f95040ca834cc11e520 +CT=27d47ca238d5938fa213d8638f5b0f32 + +I=20 +KEY=5fadee3e0c83e11233c08120cdc2e277 +PT=27d47ca238d5938fa213d8638f5b0f32 +CT=8b518675e0dd55858c6f8ca18baa526b + +I=21 +KEY=d4fc684bec5eb497bfaf0d814668b01c +PT=8b518675e0dd55858c6f8ca18baa526b +CT=720a221100bdf2b047c7ea8696e2b3fa + +I=22 +KEY=a6f64a5aece34627f868e707d08a03e6 +PT=720a221100bdf2b047c7ea8696e2b3fa +CT=a429e76808fa660c6d60eed37e34f1a9 + +I=23 +KEY=02dfad32e419202b950809d4aebef24f +PT=a429e76808fa660c6d60eed37e34f1a9 +CT=d3df614f50d17762938398a0831b0296 + +I=24 +KEY=d100cc7db4c85749068b91742da5f0d9 +PT=d3df614f50d17762938398a0831b0296 +CT=f29296629ff5f465fafb6bfc1f813515 + +I=25 +KEY=23925a1f2b3da32cfc70fa883224c5cc +PT=f29296629ff5f465fafb6bfc1f813515 +CT=80d6d15957374029996a623c99238958 + +I=26 +KEY=a3448b467c0ae305651a98b4ab074c94 +PT=80d6d15957374029996a623c99238958 +CT=9b47672e762432137d13f94ecd75d81b + +I=27 +KEY=3803ec680a2ed116180961fa6672948f +PT=9b47672e762432137d13f94ecd75d81b +CT=5ccd63f83b863ae198ba0698853eef2d + +I=28 +KEY=64ce8f9031a8ebf780b36762e34c7ba2 +PT=5ccd63f83b863ae198ba0698853eef2d +CT=602c04659a301521a347b8e13852af49 + +I=29 +KEY=04e28bf5ab98fed623f4df83db1ed4eb +PT=602c04659a301521a347b8e13852af49 +CT=dce9d616364728bd82007e360c7dc53e + +I=30 +KEY=d80b5de39ddfd66ba1f4a1b5d76311d5 +PT=dce9d616364728bd82007e360c7dc53e +CT=fbb8ea4fbbfddaea84b6610a620e2d51 + +I=31 +KEY=23b3b7ac26220c812542c0bfb56d3c84 +PT=fbb8ea4fbbfddaea84b6610a620e2d51 +CT=a3e2ada129623ed16a13440d0ae57bfa + +I=32 +KEY=80511a0d0f4032504f5184b2bf88477e +PT=a3e2ada129623ed16a13440d0ae57bfa +CT=b9d32b748df0e1afee4b4b1f9f659baa + +I=33 +KEY=3982317982b0d3ffa11acfad20eddcd4 +PT=b9d32b748df0e1afee4b4b1f9f659baa +CT=d3f16a2c390edd835da4cedc80fed18b + +I=34 +KEY=ea735b55bbbe0e7cfcbe0171a0130d5f +PT=d3f16a2c390edd835da4cedc80fed18b +CT=88cacedfcf3d796cd1c2c4e5da52352f + +I=35 +KEY=62b9958a748377102d7cc5947a413870 +PT=88cacedfcf3d796cd1c2c4e5da52352f +CT=93f380c72955353a6e574b1949e23ae8 + +I=36 +KEY=f14a154d5dd6422a432b8e8d33a30298 +PT=93f380c72955353a6e574b1949e23ae8 +CT=22b0471ed3f302be0be383c996452921 + +I=37 +KEY=d3fa52538e25409448c80d44a5e62bb9 +PT=22b0471ed3f302be0be383c996452921 +CT=23f177c639e0fe82ddf9c4c7044d4248 + +I=38 +KEY=f00b2595b7c5be169531c983a1ab69f1 +PT=23f177c639e0fe82ddf9c4c7044d4248 +CT=7d31de04dcd97189a0bae72bafcbbf91 + +I=39 +KEY=8d3afb916b1ccf9f358b2ea80e60d660 +PT=7d31de04dcd97189a0bae72bafcbbf91 +CT=7d2d38fb002c62ff6cc023286abb2882 + +I=40 +KEY=f017c36a6b30ad60594b0d8064dbfee2 +PT=7d2d38fb002c62ff6cc023286abb2882 +CT=a65d17620e49a844393686f87373114b + +I=41 +KEY=564ad40865790524607d8b7817a8efa9 +PT=a65d17620e49a844393686f87373114b +CT=2776e834b7c5278eccdb080c1af52e21 + +I=42 +KEY=713c3c3cd2bc22aaaca683740d5dc188 +PT=2776e834b7c5278eccdb080c1af52e21 +CT=f5219b02d9d8e287c0e1caf89ddbae70 + +I=43 +KEY=841da73e0b64c02d6c47498c90866ff8 +PT=f5219b02d9d8e287c0e1caf89ddbae70 +CT=04fa5d22c24d21bb5627f42082f5ec61 + +I=44 +KEY=80e7fa1cc929e1963a60bdac12738399 +PT=04fa5d22c24d21bb5627f42082f5ec61 +CT=c14c29d52bb22a4abd5707678a55a571 + +I=45 +KEY=41abd3c9e29bcbdc8737bacb982626e8 +PT=c14c29d52bb22a4abd5707678a55a571 +CT=6eaf10acdc685e63f8bdad80a6626a31 + +I=46 +KEY=2f04c3653ef395bf7f8a174b3e444cd9 +PT=6eaf10acdc685e63f8bdad80a6626a31 +CT=9e7363e279adcd0dfc2f1b8709addc1b + +I=47 +KEY=b177a087475e58b283a50ccc37e990c2 +PT=9e7363e279adcd0dfc2f1b8709addc1b +CT=fdf3c06baba03318401116c3d0c943a8 + +I=48 +KEY=4c8460ececfe6baac3b41a0fe720d36a +PT=fdf3c06baba03318401116c3d0c943a8 +CT=63f1040c9b3626aeba7db06f766ff53c + +I=49 +KEY=2f7564e077c84d0479c9aa60914f2656 +PT=63f1040c9b3626aeba7db06f766ff53c +CT=afd90f2e80c89fcc44a965e05287dc2d + +I=50 +KEY=80ac6bcef700d2c83d60cf80c3c8fa7b +PT=afd90f2e80c89fcc44a965e05287dc2d +CT=62f0ad9d5fe4cbbbc151c8cbf765d822 + +I=51 +KEY=e25cc653a8e41973fc31074b34ad2259 +PT=62f0ad9d5fe4cbbbc151c8cbf765d822 +CT=fd9135db0d9b098823a3057e02d63186 + +I=52 +KEY=1fcdf388a57f10fbdf920235367b13df +PT=fd9135db0d9b098823a3057e02d63186 +CT=b49d59b12cce545d136ede740ea1f203 + +I=53 +KEY=ab50aa3989b144a6ccfcdc4138dae1dc +PT=b49d59b12cce545d136ede740ea1f203 +CT=6493367a1c29e02edb93cc32f94d667d + +I=54 +KEY=cfc39c439598a488176f1073c19787a1 +PT=6493367a1c29e02edb93cc32f94d667d +CT=2c82f5079b5cf66371e0176bcb26ff4e + +I=55 +KEY=e34169440ec452eb668f07180ab178ef +PT=2c82f5079b5cf66371e0176bcb26ff4e +CT=5e221e543e290d14437334f8ac33441a + +I=56 +KEY=bd63771030ed5fff25fc33e0a6823cf5 +PT=5e221e543e290d14437334f8ac33441a +CT=3aa92404c6007679e5badb2f44efbd05 + +I=57 +KEY=87ca5314f6ed2986c046e8cfe26d81f0 +PT=3aa92404c6007679e5badb2f44efbd05 +CT=39e62714a3cbe5941be6604c5da3f66d + +I=58 +KEY=be2c74005526cc12dba08883bfce779d +PT=39e62714a3cbe5941be6604c5da3f66d +CT=eb643953304dd57166e6c3c21fe5d442 + +I=59 +KEY=55484d53656b1963bd464b41a02ba3df +PT=eb643953304dd57166e6c3c21fe5d442 +CT=b054df558404653b2fb7870779729308 + +I=60 +KEY=e51c9206e16f7c5892f1cc46d95930d7 +PT=b054df558404653b2fb7870779729308 +CT=cc8888bd62fe78d06b1dc157a5cf66ee + +I=61 +KEY=29941abb83910488f9ec0d117c965639 +PT=cc8888bd62fe78d06b1dc157a5cf66ee +CT=bdf868d4e14dcb8a011cf988c0eaa389 + +I=62 +KEY=946c726f62dccf02f8f0f499bc7cf5b0 +PT=bdf868d4e14dcb8a011cf988c0eaa389 +CT=68b22fd31307f25c4e7099f049df729c + +I=63 +KEY=fcde5dbc71db3d5eb6806d69f5a3872c +PT=68b22fd31307f25c4e7099f049df729c +CT=4f2b80a07601de4a31806b550f7bfda7 + +I=64 +KEY=b3f5dd1c07dae3148700063cfad87a8b +PT=4f2b80a07601de4a31806b550f7bfda7 +CT=3327a52e3469d73d25cdcdcfbe1041ce + +I=65 +KEY=80d2783233b33429a2cdcbf344c83b45 +PT=3327a52e3469d73d25cdcdcfbe1041ce +CT=5ef2874dae787aa9f2de3d23cb0db131 + +I=66 +KEY=de20ff7f9dcb4e805013f6d08fc58a74 +PT=5ef2874dae787aa9f2de3d23cb0db131 +CT=cd39f261126609e40d3de716bc04253c + +I=67 +KEY=13190d1e8fad47645d2e11c633c1af48 +PT=cd39f261126609e40d3de716bc04253c +CT=57db0e3d4fa62dd3f05b91d526dbe3f9 + +I=68 +KEY=44c20323c00b6ab7ad758013151a4cb1 +PT=57db0e3d4fa62dd3f05b91d526dbe3f9 +CT=d884f82533c01c21256b9b1d9029fe35 + +I=69 +KEY=9c46fb06f3cb7696881e1b0e8533b284 +PT=d884f82533c01c21256b9b1d9029fe35 +CT=9fa8a2639f7d3fce51098cf827d157a7 + +I=70 +KEY=03ee59656cb64958d91797f6a2e2e523 +PT=9fa8a2639f7d3fce51098cf827d157a7 +CT=431404ec97c1ef4318da9fe6c333047b + +I=71 +KEY=40fa5d89fb77a61bc1cd081061d1e158 +PT=431404ec97c1ef4318da9fe6c333047b +CT=45c193fbab6b9f3bdee77044226b4a3c + +I=72 +KEY=053bce72501c39201f2a785443baab64 +PT=45c193fbab6b9f3bdee77044226b4a3c +CT=dd6ff2781e3a74874a65dcc27bcb74e3 + +I=73 +KEY=d8543c0a4e264da7554fa4963871df87 +PT=dd6ff2781e3a74874a65dcc27bcb74e3 +CT=e1306b019f5d79cb294f8437c787f44a + +I=74 +KEY=3964570bd17b346c7c0020a1fff62bcd +PT=e1306b019f5d79cb294f8437c787f44a +CT=04154311deed614abcc5cba235a20a42 + +I=75 +KEY=3d71141a0f965526c0c5eb03ca54218f +PT=04154311deed614abcc5cba235a20a42 +CT=d4f15e24cdfb644cb8c2910e0ddb4ed6 + +I=76 +KEY=e9804a3ec26d316a78077a0dc78f6f59 +PT=d4f15e24cdfb644cb8c2910e0ddb4ed6 +CT=6cfa285e642508e26dedae055b0c49e7 + +I=77 +KEY=857a6260a648398815ead4089c8326be +PT=6cfa285e642508e26dedae055b0c49e7 +CT=78f15905354e7f80a743d183973c0a85 + +I=78 +KEY=fd8b3b6593064608b2a9058b0bbf2c3b +PT=78f15905354e7f80a743d183973c0a85 +CT=2e35f5740e44e28b26b51bf65a2676a7 + +I=79 +KEY=d3bece119d42a483941c1e7d51995a9c +PT=2e35f5740e44e28b26b51bf65a2676a7 +CT=ef6ee091fe08fbd5f1f106d89527c100 + +I=80 +KEY=3cd02e80634a5f5665ed18a5c4be9b9c +PT=ef6ee091fe08fbd5f1f106d89527c100 +CT=92c508be2ca03a53ffd785888a45c1f4 + +I=81 +KEY=ae15263e4fea65059a3a9d2d4efb5a68 +PT=92c508be2ca03a53ffd785888a45c1f4 +CT=500bb5146d89679c264472fd0da0d397 + +I=82 +KEY=fe1e932a22630299bc7eefd0435b89ff +PT=500bb5146d89679c264472fd0da0d397 +CT=16db8cfca082c845bf5249623be8860b + +I=83 +KEY=e8c51fd682e1cadc032ca6b278b30ff4 +PT=16db8cfca082c845bf5249623be8860b +CT=3336133e35f5d0bc58256431f7a9a4e3 + +I=84 +KEY=dbf30ce8b7141a605b09c2838f1aab17 +PT=3336133e35f5d0bc58256431f7a9a4e3 +CT=73452a0a75c401f90c4e15c4290e6b4e + +I=85 +KEY=a8b626e2c2d01b995747d747a614c059 +PT=73452a0a75c401f90c4e15c4290e6b4e +CT=028b57b7d8c1dc19496002a5dd746406 + +I=86 +KEY=aa3d71551a11c7801e27d5e27b60a45f +PT=028b57b7d8c1dc19496002a5dd746406 +CT=830c9912913db225f3183fc45d2c9ca7 + +I=87 +KEY=2931e8478b2c75a5ed3fea26264c38f8 +PT=830c9912913db225f3183fc45d2c9ca7 +CT=f4a68e31d506fe48c1e77768e8603c44 + +I=88 +KEY=dd9766765e2a8bed2cd89d4ece2c04bc +PT=f4a68e31d506fe48c1e77768e8603c44 +CT=2b96a7313fbf19a1e0d7c9c2888136ec + +I=89 +KEY=f601c1476195924ccc0f548c46ad3250 +PT=2b96a7313fbf19a1e0d7c9c2888136ec +CT=7c8d227b733cfecde920dc652a534667 + +I=90 +KEY=8a8ce33c12a96c81252f88e96cfe7437 +PT=7c8d227b733cfecde920dc652a534667 +CT=f6c1c2b2339b75008053ea99aab5abe8 + +I=91 +KEY=7c4d218e21321981a57c6270c64bdfdf +PT=f6c1c2b2339b75008053ea99aab5abe8 +CT=7c407381bb1fa4c670841d6df066bf84 + +I=92 +KEY=000d520f9a2dbd47d5f87f1d362d605b +PT=7c407381bb1fa4c670841d6df066bf84 +CT=73c8973c7630f092c1579e7804c68ecc + +I=93 +KEY=73c5c533ec1d4dd514afe16532ebee97 +PT=73c8973c7630f092c1579e7804c68ecc +CT=3a2d933d64926a359430dd5d0768b007 + +I=94 +KEY=49e8560e888f27e0809f3c3835835e90 +PT=3a2d933d64926a359430dd5d0768b007 +CT=55ebf1ab74a6649f872d3c04990312ba + +I=95 +KEY=1c03a7a5fc29437f07b2003cac804c2a +PT=55ebf1ab74a6649f872d3c04990312ba +CT=741f5430a26f82ee958410f7adb51947 + +I=96 +KEY=681cf3955e46c191923610cb0135556d +PT=741f5430a26f82ee958410f7adb51947 +CT=6bc8f4dd2494e4feecff7520f1177cd9 + +I=97 +KEY=03d407487ad2256f7ec965ebf02229b4 +PT=6bc8f4dd2494e4feecff7520f1177cd9 +CT=7bf8f1749fbb56612d77464adaa2d0a0 + +I=98 +KEY=782cf63ce569730e53be23a12a80f914 +PT=7bf8f1749fbb56612d77464adaa2d0a0 +CT=56fb7c4244c8d3a1b00b49e4c902638c + +I=99 +KEY=2ed78a7ea1a1a0afe3b56a45e3829a98 +PT=56fb7c4244c8d3a1b00b49e4c902638c +CT=295f3ab6363fc49b06605ca3ca489b0a + +I=100 +KEY=0788b0c8979e6434e5d536e629ca0192 +PT=295f3ab6363fc49b06605ca3ca489b0a +CT=d33ce65e4631a25bb6a87a4004fc786a + +I=101 +KEY=d4b45696d1afc66f537d4ca62d3679f8 +PT=d33ce65e4631a25bb6a87a4004fc786a +CT=d606cd8a768ec3c8c1fd055bcd91be65 + +I=102 +KEY=02b29b1ca72105a7928049fde0a7c79d +PT=d606cd8a768ec3c8c1fd055bcd91be65 +CT=3666ac8a6ad61a2db2d602f8cccdf2b0 + +I=103 +KEY=34d43796cdf71f8a20564b052c6a352d +PT=3666ac8a6ad61a2db2d602f8cccdf2b0 +CT=6aca9f27cbbcdfb9185173d6a753411e + +I=104 +KEY=5e1ea8b1064bc033380738d38b397433 +PT=6aca9f27cbbcdfb9185173d6a753411e +CT=919e890970d7d4ff78b333fbab1cd0fa + +I=105 +KEY=cf8021b8769c14cc40b40b282025a4c9 +PT=919e890970d7d4ff78b333fbab1cd0fa +CT=bd7b66d3a2356a342cc7ea74c065fc64 + +I=106 +KEY=72fb476bd4a97ef86c73e15ce04058ad +PT=bd7b66d3a2356a342cc7ea74c065fc64 +CT=01dd4844877c8b94b28872b123b40a8d + +I=107 +KEY=73260f2f53d5f56cdefb93edc3f45220 +PT=01dd4844877c8b94b28872b123b40a8d +CT=f9db3a0ae3d39190b6bcf705018bb536 + +I=108 +KEY=8afd3525b00664fc684764e8c27fe716 +PT=f9db3a0ae3d39190b6bcf705018bb536 +CT=9f33a2ebd76327202c471e41780f95ce + +I=109 +KEY=15ce97ce676543dc44007aa9ba7072d8 +PT=9f33a2ebd76327202c471e41780f95ce +CT=7dd2a411a726f31437cd86ff7bd2a511 + +I=110 +KEY=681c33dfc043b0c873cdfc56c1a2d7c9 +PT=7dd2a411a726f31437cd86ff7bd2a511 +CT=b2c03f0aa618a1546bcc654e18ce471b + +I=111 +KEY=dadc0cd5665b119c18019918d96c90d2 +PT=b2c03f0aa618a1546bcc654e18ce471b +CT=cf46dd238a30a1b59316046f47702754 + +I=112 +KEY=159ad1f6ec6bb0298b179d779e1cb786 +PT=cf46dd238a30a1b59316046f47702754 +CT=e94802f741c2f3372376036b5e99f02e + +I=113 +KEY=fcd2d301ada9431ea8619e1cc08547a8 +PT=e94802f741c2f3372376036b5e99f02e +CT=1cbe198b5c4f6be4403d4dde970cebc9 + +I=114 +KEY=e06cca8af1e628fae85cd3c25789ac61 +PT=1cbe198b5c4f6be4403d4dde970cebc9 +CT=032005439cb0ddee606a28fa3777550a + +I=115 +KEY=e34ccfc96d56f5148836fb3860fef96b +PT=032005439cb0ddee606a28fa3777550a +CT=0cdb425a21fa47d20641952bfb01525b + +I=116 +KEY=ef978d934cacb2c68e776e139bffab30 +PT=0cdb425a21fa47d20641952bfb01525b +CT=7b76ae2a947e38ea4176d28429ee5945 + +I=117 +KEY=94e123b9d8d28a2ccf01bc97b211f275 +PT=7b76ae2a947e38ea4176d28429ee5945 +CT=9a0353db5f0408c43790e971c780f7a3 + +I=118 +KEY=0ee2706287d682e8f89155e6759105d6 +PT=9a0353db5f0408c43790e971c780f7a3 +CT=6bb338abf621f1ad8be884ec0686969a + +I=119 +KEY=655148c971f773457379d10a7317934c +PT=6bb338abf621f1ad8be884ec0686969a +CT=93a269b17363e903864b8dfe32edf1af + +I=120 +KEY=f6f3217802949a46f5325cf441fa62e3 +PT=93a269b17363e903864b8dfe32edf1af +CT=c7a7909e9239de14e77a321bdbf37b05 + +I=121 +KEY=3154b1e690ad445212486eef9a0919e6 +PT=c7a7909e9239de14e77a321bdbf37b05 +CT=9975334936e13f592ab662d6211ae872 + +I=122 +KEY=a82182afa64c7b0b38fe0c39bb13f194 +PT=9975334936e13f592ab662d6211ae872 +CT=868c82b31a268ba7a213a7e777695603 + +I=123 +KEY=2ead001cbc6af0ac9aedabdecc7aa797 +PT=868c82b31a268ba7a213a7e777695603 +CT=75918ec0f51e72e2d39ae05c9624a60c + +I=124 +KEY=5b3c8edc4974824e49774b825a5e019b +PT=75918ec0f51e72e2d39ae05c9624a60c +CT=c8a440ea32c88c731dd5f1eacfb44ede + +I=125 +KEY=9398ce367bbc0e3d54a2ba6895ea4f45 +PT=c8a440ea32c88c731dd5f1eacfb44ede +CT=78429eabb321581d4621da18520149c4 + +I=126 +KEY=ebda509dc89d562012836070c7eb0681 +PT=78429eabb321581d4621da18520149c4 +CT=fce551f9ae5926bd70702466c34b37ed + +I=127 +KEY=173f016466c4709d62f3441604a0316c +PT=fce551f9ae5926bd70702466c34b37ed +CT=0845a7fbdd4b01598c773d673c296f92 + +I=128 +KEY=1f7aa69fbb8f71c4ee84797138895efe +PT=0845a7fbdd4b01598c773d673c296f92 +CT=cb3bbfeb055787bcfc79fff7c8005cad + +I=129 +KEY=d4411974bed8f67812fd8686f0890253 +PT=cb3bbfeb055787bcfc79fff7c8005cad +CT=6b26bf57ac07c34e8e5446740bdf6db9 + +I=130 +KEY=bf67a62312df35369ca9c0f2fb566fea +PT=6b26bf57ac07c34e8e5446740bdf6db9 +CT=145b99fe5bf9765cc6d72b1b5d391a94 + +I=131 +KEY=ab3c3fdd4926436a5a7eebe9a66f757e +PT=145b99fe5bf9765cc6d72b1b5d391a94 +CT=2afa06f2f81918a34923f9480c986fdc + +I=132 +KEY=81c6392fb13f5bc9135d12a1aaf71aa2 +PT=2afa06f2f81918a34923f9480c986fdc +CT=45ff720606fe80e148de85977adc91b2 + +I=133 +KEY=c4394b29b7c1db285b839736d02b8b10 +PT=45ff720606fe80e148de85977adc91b2 +CT=bd69984c9cb20b0bb2f71dcd1989c268 + +I=134 +KEY=7950d3652b73d023e9748afbc9a24978 +PT=bd69984c9cb20b0bb2f71dcd1989c268 +CT=237e5212d2ccbeba103965773e7147d6 + +I=135 +KEY=5a2e8177f9bf6e99f94def8cf7d30eae +PT=237e5212d2ccbeba103965773e7147d6 +CT=2140a2d4ac837948eedbbe86ca3f3567 + +I=136 +KEY=7b6e23a3553c17d11796510a3dec3bc9 +PT=2140a2d4ac837948eedbbe86ca3f3567 +CT=3234b91452f79136ebce41af83122034 + +I=137 +KEY=495a9ab707cb86e7fc5810a5befe1bfd +PT=3234b91452f79136ebce41af83122034 +CT=c1abcb54c1828c7fa53c9be71867411b + +I=138 +KEY=88f151e3c6490a9859648b42a6995ae6 +PT=c1abcb54c1828c7fa53c9be71867411b +CT=3683c529079a6de9c5ff57a64de6e59f + +I=139 +KEY=be7294cac1d367719c9bdce4eb7fbf79 +PT=3683c529079a6de9c5ff57a64de6e59f +CT=a79b49117f4a1458eb43c3133488ef5a + +I=140 +KEY=19e9dddbbe99732977d81ff7dff75023 +PT=a79b49117f4a1458eb43c3133488ef5a +CT=ed5ab6fd320bebf586c10326d22d2613 + +I=141 +KEY=f4b36b268c9298dcf1191cd10dda7630 +PT=ed5ab6fd320bebf586c10326d22d2613 +CT=99202ed533e6f269403f88d37bf329be + +I=142 +KEY=6d9345f3bf746ab5b126940276295f8e +PT=99202ed533e6f269403f88d37bf329be +CT=0014a7596afd96e960b9e0b245c7e8ef + +I=143 +KEY=6d87e2aad589fc5cd19f74b033eeb761 +PT=0014a7596afd96e960b9e0b245c7e8ef +CT=0cd28bc6e5d64a8fe047ab6b4c2e3a8d + +I=144 +KEY=6155696c305fb6d331d8dfdb7fc08dec +PT=0cd28bc6e5d64a8fe047ab6b4c2e3a8d +CT=47c58164f955a002e47bb8bfc9d8bbcd + +I=145 +KEY=2690e808c90a16d1d5a36764b6183621 +PT=47c58164f955a002e47bb8bfc9d8bbcd +CT=4f1547ca58f6706125e84f436572541b + +I=146 +KEY=6985afc291fc66b0f04b2827d36a623a +PT=4f1547ca58f6706125e84f436572541b +CT=41cf9de31ef2c3aefe49ebdd72622bdd + +I=147 +KEY=284a32218f0ea51e0e02c3faa10849e7 +PT=41cf9de31ef2c3aefe49ebdd72622bdd +CT=65e4aaace0862fe98a53593c5741a2f0 + +I=148 +KEY=4dae988d6f888af784519ac6f649eb17 +PT=65e4aaace0862fe98a53593c5741a2f0 +CT=53643d9fdd317d97cea7c789f2f4e9fd + +I=149 +KEY=1ecaa512b2b9f7604af65d4f04bd02ea +PT=53643d9fdd317d97cea7c789f2f4e9fd +CT=469554dcec8a80b53fe08a96d19ecb82 + +I=150 +KEY=585ff1ce5e3377d57516d7d9d523c968 +PT=469554dcec8a80b53fe08a96d19ecb82 +CT=a842ac3cfa6a423c65272a19cec783a9 + +I=151 +KEY=f01d5df2a45935e91031fdc01be44ac1 +PT=a842ac3cfa6a423c65272a19cec783a9 +CT=ac491c1e25d34c9f6b5ab7d442947a16 + +I=152 +KEY=5c5441ec818a79767b6b4a14597030d7 +PT=ac491c1e25d34c9f6b5ab7d442947a16 +CT=c007b3856ea6e7a8711fd4395c0cceda + +I=153 +KEY=9c53f269ef2c9ede0a749e2d057cfe0d +PT=c007b3856ea6e7a8711fd4395c0cceda +CT=f0f625340506bd1f49bdc287dd56428a + +I=154 +KEY=6ca5d75dea2a23c143c95caad82abc87 +PT=f0f625340506bd1f49bdc287dd56428a +CT=54158add44c8f5bcb69a2e6263eec4a2 + +I=155 +KEY=38b05d80aee2d67df55372c8bbc47825 +PT=54158add44c8f5bcb69a2e6263eec4a2 +CT=3d1405c1f03742d9397fe02dcf5236c1 + +I=156 +KEY=05a458415ed594a4cc2c92e574964ee4 +PT=3d1405c1f03742d9397fe02dcf5236c1 +CT=1c63f843d5fc54450039f93c7e7c2d2e + +I=157 +KEY=19c7a0028b29c0e1cc156bd90aea63ca +PT=1c63f843d5fc54450039f93c7e7c2d2e +CT=1b1099c9d6d69551b8e2df8ef089b3bb + +I=158 +KEY=02d739cb5dff55b074f7b457fa63d071 +PT=1b1099c9d6d69551b8e2df8ef089b3bb +CT=2143b3a318ab36ecbd3687c06305ebad + +I=159 +KEY=23948a684554635cc9c1339799663bdc +PT=2143b3a318ab36ecbd3687c06305ebad +CT=7c853ea35b987225e16c28423b3cbb74 + +I=160 +KEY=5f11b4cb1ecc117928ad1bd5a25a80a8 +PT=7c853ea35b987225e16c28423b3cbb74 +CT=4448f7c3bbcb730f55cbe7cc7c346b9d + +I=161 +KEY=1b594308a50762767d66fc19de6eeb35 +PT=4448f7c3bbcb730f55cbe7cc7c346b9d +CT=3f4da6041dcb06630609f23e2f92fd23 + +I=162 +KEY=2414e50cb8cc64157b6f0e27f1fc1616 +PT=3f4da6041dcb06630609f23e2f92fd23 +CT=1f972f1d54d05dc04c655b2165dbd731 + +I=163 +KEY=3b83ca11ec1c39d5370a55069427c127 +PT=1f972f1d54d05dc04c655b2165dbd731 +CT=023c2b208e34103438d0b28ae13c0d7b + +I=164 +KEY=39bfe131622829e10fdae78c751bcc5c +PT=023c2b208e34103438d0b28ae13c0d7b +CT=94b01f29e3c111f37b68f5d246cd7714 + +I=165 +KEY=ad0ffe1881e9381274b2125e33d6bb48 +PT=94b01f29e3c111f37b68f5d246cd7714 +CT=6a113c0a28f50ba720c250d732d3c80a + +I=166 +KEY=c71ec212a91c33b55470428901057342 +PT=6a113c0a28f50ba720c250d732d3c80a +CT=79f7ceac3b9ca39a46bf386986430f66 + +I=167 +KEY=bee90cbe9280902f12cf7ae087467c24 +PT=79f7ceac3b9ca39a46bf386986430f66 +CT=a28428ece2013966f8f21d4491c09268 + +I=168 +KEY=1c6d24527081a949ea3d67a41686ee4c +PT=a28428ece2013966f8f21d4491c09268 +CT=173754fa8ed34fc752255271d3d138db + +I=169 +KEY=0b5a70a8fe52e68eb81835d5c557d697 +PT=173754fa8ed34fc752255271d3d138db +CT=37069565202dc7c3ecd106c0fb5cfd4e + +I=170 +KEY=3c5ce5cdde7f214d54c933153e0b2bd9 +PT=37069565202dc7c3ecd106c0fb5cfd4e +CT=cc637e9c1ee831c32a981b229e3a6153 + +I=171 +KEY=f03f9b51c097108e7e512837a0314a8a +PT=cc637e9c1ee831c32a981b229e3a6153 +CT=be2546a77385a8032991f95f7802d7b1 + +I=172 +KEY=4e1addf6b312b88d57c0d168d8339d3b +PT=be2546a77385a8032991f95f7802d7b1 +CT=0a121db767344edac19cede2d6a37762 + +I=173 +KEY=4408c041d426f657965c3c8a0e90ea59 +PT=0a121db767344edac19cede2d6a37762 +CT=20cb72bc2adc97943eda332f7c31c044 + +I=174 +KEY=64c3b2fdfefa61c3a8860fa572a12a1d +PT=20cb72bc2adc97943eda332f7c31c044 +CT=0dfe61e403edcad54f3ea58b175c404a + +I=175 +KEY=693dd319fd17ab16e7b8aa2e65fd6a57 +PT=0dfe61e403edcad54f3ea58b175c404a +CT=b486e26b9f3ac070d5327d37ad9786c2 + +I=176 +KEY=ddbb3172622d6b66328ad719c86aec95 +PT=b486e26b9f3ac070d5327d37ad9786c2 +CT=31946974edd29d31bdb84cdf723b9c37 + +I=177 +KEY=ec2f58068ffff6578f329bc6ba5170a2 +PT=31946974edd29d31bdb84cdf723b9c37 +CT=0e8037adab50b680b0f78f8ad7c99560 + +I=178 +KEY=e2af6fab24af40d73fc5144c6d98e5c2 +PT=0e8037adab50b680b0f78f8ad7c99560 +CT=04f66c0e1a50aa0357d10bfed10b4442 + +I=179 +KEY=e65903a53effead468141fb2bc93a180 +PT=04f66c0e1a50aa0357d10bfed10b4442 +CT=9f0a0cdff158d69ea1a1abfcee3e6675 + +I=180 +KEY=79530f7acfa73c4ac9b5b44e52adc7f5 +PT=9f0a0cdff158d69ea1a1abfcee3e6675 +CT=48efcd173a819cc8b19684b97ef12f24 + +I=181 +KEY=31bcc26df526a082782330f72c5ce8d1 +PT=48efcd173a819cc8b19684b97ef12f24 +CT=1db127461ed7123c2425b40f6dd308cc + +I=182 +KEY=2c0de52bebf1b2be5c0684f8418fe01d +PT=1db127461ed7123c2425b40f6dd308cc +CT=643cd08a170a490dd255e4d81b428d5d + +I=183 +KEY=483135a1fcfbfbb38e5360205acd6d40 +PT=643cd08a170a490dd255e4d81b428d5d +CT=772c80a42ac76ffee67e73a6841d8d7e + +I=184 +KEY=3f1db505d63c944d682d1386ded0e03e +PT=772c80a42ac76ffee67e73a6841d8d7e +CT=5353a35504b8f271ec1a49b92620710f + +I=185 +KEY=6c4e1650d284663c84375a3ff8f09131 +PT=5353a35504b8f271ec1a49b92620710f +CT=ebe5a8fe754a4662230e5ddbbaa472d1 + +I=186 +KEY=87abbeaea7ce205ea73907e44254e3e0 +PT=ebe5a8fe754a4662230e5ddbbaa472d1 +CT=eb86c00d04f92f76dcf6dde5eb2edb19 + +I=187 +KEY=6c2d7ea3a3370f287bcfda01a97a38f9 +PT=eb86c00d04f92f76dcf6dde5eb2edb19 +CT=12a181853773ab096bad728c219a960c + +I=188 +KEY=7e8cff269444a4211062a88d88e0aef5 +PT=12a181853773ab096bad728c219a960c +CT=d949e4cbd711f1bf8b0f1d2f1d4b5d06 + +I=189 +KEY=a7c51bed4355559e9b6db5a295abf3f3 +PT=d949e4cbd711f1bf8b0f1d2f1d4b5d06 +CT=9332d7b6fecc1f7f962000c2fa869320 + +I=190 +KEY=34f7cc5bbd994ae10d4db5606f2d60d3 +PT=9332d7b6fecc1f7f962000c2fa869320 +CT=5c81168b4aa3e5e0e1885d2d6844329f + +I=191 +KEY=6876dad0f73aaf01ecc5e84d0769524c +PT=5c81168b4aa3e5e0e1885d2d6844329f +CT=24deebf2c91a340039255fbe30f1b319 + +I=192 +KEY=4ca831223e209b01d5e0b7f33798e155 +PT=24deebf2c91a340039255fbe30f1b319 +CT=fade0033804acef2fe3d84eb34b173a7 + +I=193 +KEY=b6763111be6a55f32bdd3318032992f2 +PT=fade0033804acef2fe3d84eb34b173a7 +CT=c2fec0a5e4892d570cd3364e0d7c7d59 + +I=194 +KEY=7488f1b45ae378a4270e05560e55efab +PT=c2fec0a5e4892d570cd3364e0d7c7d59 +CT=e2598f63d7f171ddef80662cffa57ad2 + +I=195 +KEY=96d17ed78d120979c88e637af1f09579 +PT=e2598f63d7f171ddef80662cffa57ad2 +CT=7fa5a283b6969abda64410546473e501 + +I=196 +KEY=e974dc543b8493c46eca732e95837078 +PT=7fa5a283b6969abda64410546473e501 +CT=6e898c01e1d90f8b47809cc6a1549562 + +I=197 +KEY=87fd5055da5d9c4f294aefe834d7e51a +PT=6e898c01e1d90f8b47809cc6a1549562 +CT=b4d149d42f992b23a3f5d572bf4acd1e + +I=198 +KEY=332c1981f5c4b76c8abf3a9a8b9d2804 +PT=b4d149d42f992b23a3f5d572bf4acd1e +CT=80b3c34892874689fe0851377ca01b7d + +I=199 +KEY=b39fdac96743f1e574b76badf73d3379 +PT=80b3c34892874689fe0851377ca01b7d +CT=e668aa0ef80fe5fef96be9a9ddabc9a3 + +I=200 +KEY=55f770c79f4c141b8ddc82042a96fada +PT=e668aa0ef80fe5fef96be9a9ddabc9a3 +CT=039daaeab17fcabf6a433a76ae069ba3 + +I=201 +KEY=566ada2d2e33dea4e79fb87284906179 +PT=039daaeab17fcabf6a433a76ae069ba3 +CT=98c59b283ee15d65afc184516f9cc007 + +I=202 +KEY=ceaf410510d283c1485e3c23eb0ca17e +PT=98c59b283ee15d65afc184516f9cc007 +CT=cbf8934e962a8a0977ee566faba70ccf + +I=203 +KEY=0557d24b86f809c83fb06a4c40abadb1 +PT=cbf8934e962a8a0977ee566faba70ccf +CT=c8fdeb3351f037a30b69e98ea43a4ec2 + +I=204 +KEY=cdaa3978d7083e6b34d983c2e491e373 +PT=c8fdeb3351f037a30b69e98ea43a4ec2 +CT=f11331c8d39a96f3e1a8b5752b1f9127 + +I=205 +KEY=3cb908b00492a898d57136b7cf8e7254 +PT=f11331c8d39a96f3e1a8b5752b1f9127 +CT=4f0161cc9077d9d4e2e5f15aca7a2327 + +I=206 +KEY=73b8697c94e5714c3794c7ed05f45173 +PT=4f0161cc9077d9d4e2e5f15aca7a2327 +CT=10de12ba7f9403298d583a5f71a57196 + +I=207 +KEY=63667bc6eb717265baccfdb2745120e5 +PT=10de12ba7f9403298d583a5f71a57196 +CT=613b84464a09778c0bf964cdee9d54e5 + +I=208 +KEY=025dff80a17805e9b135997f9acc7400 +PT=613b84464a09778c0bf964cdee9d54e5 +CT=29cf542a451480367da9f6f934298ddf + +I=209 +KEY=2b92abaae46c85dfcc9c6f86aee5f9df +PT=29cf542a451480367da9f6f934298ddf +CT=1f536ceefd59f8687bd9c2762b35483b + +I=210 +KEY=34c1c74419357db7b745adf085d0b1e4 +PT=1f536ceefd59f8687bd9c2762b35483b +CT=ce4a251276003d564d202d007ca0c168 + +I=211 +KEY=fa8be2566f3540e1fa6580f0f970708c +PT=ce4a251276003d564d202d007ca0c168 +CT=4ac7a9493677fd51e6ae05e2a5458ce4 + +I=212 +KEY=b04c4b1f5942bdb01ccb85125c35fc68 +PT=4ac7a9493677fd51e6ae05e2a5458ce4 +CT=8dde5dc01880684777f16a60d0dd1c61 + +I=213 +KEY=3d9216df41c2d5f76b3aef728ce8e009 +PT=8dde5dc01880684777f16a60d0dd1c61 +CT=d2367e380d2cbef00e29a8167ddbc70e + +I=214 +KEY=efa468e74cee6b0765134764f1332707 +PT=d2367e380d2cbef00e29a8167ddbc70e +CT=2a836a628cd4ca7efe29a35d893523ff + +I=215 +KEY=c5270285c03aa1799b3ae439780604f8 +PT=2a836a628cd4ca7efe29a35d893523ff +CT=4ccd31a8ac4fb6d61566ff4d94d16081 + +I=216 +KEY=89ea332d6c7517af8e5c1b74ecd76479 +PT=4ccd31a8ac4fb6d61566ff4d94d16081 +CT=9d0961ff4ef2627d833517dbbf4b8cbe + +I=217 +KEY=14e352d2228775d20d690caf539ce8c7 +PT=9d0961ff4ef2627d833517dbbf4b8cbe +CT=c0511f7cba3963b7c8a822196b9da49d + +I=218 +KEY=d4b24dae98be1665c5c12eb638014c5a +PT=c0511f7cba3963b7c8a822196b9da49d +CT=35ee49ffe066fd9ed2a6f8023b23a615 + +I=219 +KEY=e15c045178d8ebfb1767d6b40322ea4f +PT=35ee49ffe066fd9ed2a6f8023b23a615 +CT=1a87d62661ac6b352342685dad27fb4f + +I=220 +KEY=fbdbd277197480ce3425bee9ae051100 +PT=1a87d62661ac6b352342685dad27fb4f +CT=06f8dc8f6c42e2289682fd5587ae7995 + +I=221 +KEY=fd230ef8753662e6a2a743bc29ab6895 +PT=06f8dc8f6c42e2289682fd5587ae7995 +CT=9e3a8178dd466b823e79b8e683fd2aa1 + +I=222 +KEY=63198f80a87009649cdefb5aaa564234 +PT=9e3a8178dd466b823e79b8e683fd2aa1 +CT=0ef5303e629da6ecee630c03ea1993cb + +I=223 +KEY=6decbfbecaedaf8872bdf759404fd1ff +PT=0ef5303e629da6ecee630c03ea1993cb +CT=4cc4ccc1887e38cb1c73bddd894b39a5 + +I=224 +KEY=2128737f429397436ece4a84c904e85a +PT=4cc4ccc1887e38cb1c73bddd894b39a5 +CT=8cc8bae389faedfda5e6aa123de9ffe0 + +I=225 +KEY=ade0c99ccb697abecb28e096f4ed17ba +PT=8cc8bae389faedfda5e6aa123de9ffe0 +CT=b0b3342dad1a5f8fa0c70661c4274c87 + +I=226 +KEY=1d53fdb1667325316befe6f730ca5b3d +PT=b0b3342dad1a5f8fa0c70661c4274c87 +CT=adb6695a651adf77197aa03cf61fdd88 + +I=227 +KEY=b0e594eb0369fa46729546cbc6d586b5 +PT=adb6695a651adf77197aa03cf61fdd88 +CT=6602df8a6a9fa918d87e217758038f03 + +I=228 +KEY=d6e74b6169f6535eaaeb67bc9ed609b6 +PT=6602df8a6a9fa918d87e217758038f03 +CT=021f112bc14fb28847a12aec0ea888a4 + +I=229 +KEY=d4f85a4aa8b9e1d6ed4a4d50907e8112 +PT=021f112bc14fb28847a12aec0ea888a4 +CT=477ae4b11b5d88ff45942688dc9e6e68 + +I=230 +KEY=9382befbb3e46929a8de6bd84ce0ef7a +PT=477ae4b11b5d88ff45942688dc9e6e68 +CT=dedaf752ca1a24b5b732fe2d0f4be91e + +I=231 +KEY=4d5849a979fe4d9c1fec95f543ab0664 +PT=dedaf752ca1a24b5b732fe2d0f4be91e +CT=463cc0431159088bad9cffcdc8d20d95 + +I=232 +KEY=0b6489ea68a74517b2706a388b790bf1 +PT=463cc0431159088bad9cffcdc8d20d95 +CT=d912a32af60ece4327145d2d7e0643c5 + +I=233 +KEY=d2762ac09ea98b5495643715f57f4834 +PT=d912a32af60ece4327145d2d7e0643c5 +CT=317fcac600df8522e3285adf4e9eefea + +I=234 +KEY=e309e0069e760e76764c6dcabbe1a7de +PT=317fcac600df8522e3285adf4e9eefea +CT=4cf17d563dbfc8b7892ffc1dc6d28806 + +I=235 +KEY=aff89d50a3c9c6c1ff6391d77d332fd8 +PT=4cf17d563dbfc8b7892ffc1dc6d28806 +CT=d94ca4f1a749e8181d4fd9219b75c9e8 + +I=236 +KEY=76b439a104802ed9e22c48f6e646e630 +PT=d94ca4f1a749e8181d4fd9219b75c9e8 +CT=f757356bd7cd6bca51f6524e9c1c8b95 + +I=237 +KEY=81e30ccad34d4513b3da1ab87a5a6da5 +PT=f757356bd7cd6bca51f6524e9c1c8b95 +CT=2687fc574167cc0e888d39cd30b02eed + +I=238 +KEY=a764f09d922a891d3b5723754aea4348 +PT=2687fc574167cc0e888d39cd30b02eed +CT=9c2f0537b6bcc32c6dd2f7ba1da6c587 + +I=239 +KEY=3b4bf5aa24964a315685d4cf574c86cf +PT=9c2f0537b6bcc32c6dd2f7ba1da6c587 +CT=caea4f80b31058d0b11ac3d8f95b3af3 + +I=240 +KEY=f1a1ba2a978612e1e79f1717ae17bc3c +PT=caea4f80b31058d0b11ac3d8f95b3af3 +CT=f20987781325b5b5fa4b7761ba308bf2 + +I=241 +KEY=03a83d5284a3a7541dd46076142737ce +PT=f20987781325b5b5fa4b7761ba308bf2 +CT=063bd48bb753312c95dcc518b78dbc9f + +I=242 +KEY=0593e9d933f096788808a56ea3aa8b51 +PT=063bd48bb753312c95dcc518b78dbc9f +CT=4d73d16f94e9e1f877cffddd044a4430 + +I=243 +KEY=48e038b6a7197780ffc758b3a7e0cf61 +PT=4d73d16f94e9e1f877cffddd044a4430 +CT=f1bf4d90456a9ab37ccf2e8feb7ca9a7 + +I=244 +KEY=b95f7526e273ed338308763c4c9c66c6 +PT=f1bf4d90456a9ab37ccf2e8feb7ca9a7 +CT=8ade34f8b4933d4dd22c1b7fc91477eb + +I=245 +KEY=338141de56e0d07e51246d438588112d +PT=8ade34f8b4933d4dd22c1b7fc91477eb +CT=734b8cef7e0ff1c502b399c2e6d200d7 + +I=246 +KEY=40cacd3128ef21bb5397f481635a11fa +PT=734b8cef7e0ff1c502b399c2e6d200d7 +CT=17fe23f54eda4685b602fcf3fa871270 + +I=247 +KEY=5734eec46635673ee595087299dd038a +PT=17fe23f54eda4685b602fcf3fa871270 +CT=e85fadd1b2195710a4782d8055edc8f2 + +I=248 +KEY=bf6b4315d42c302e41ed25f2cc30cb78 +PT=e85fadd1b2195710a4782d8055edc8f2 +CT=f8f27ebc47be2ba111322ed2069e560f + +I=249 +KEY=47993da993921b8f50df0b20caae9d77 +PT=f8f27ebc47be2ba111322ed2069e560f +CT=769b06dcaa1dd2e8174f72a252d6ee31 + +I=250 +KEY=31023b75398fc9674790798298787346 +PT=769b06dcaa1dd2e8174f72a252d6ee31 +CT=02fbc28e369d513fdc0b1d991a82c8bf + +I=251 +KEY=33f9f9fb0f1298589b9b641b82fabbf9 +PT=02fbc28e369d513fdc0b1d991a82c8bf +CT=337cd0599ebf5b4e7d75583eceb4f66f + +I=252 +KEY=008529a291adc316e6ee3c254c4e4d96 +PT=337cd0599ebf5b4e7d75583eceb4f66f +CT=fe5997e58ddf47f04e04d7455f3906e6 + +I=253 +KEY=fedcbe471c7284e6a8eaeb6013774b70 +PT=fe5997e58ddf47f04e04d7455f3906e6 +CT=577744b371af4e9ddc0cd887a74cc043 + +I=254 +KEY=a9abfaf46dddca7b74e633e7b43b8b33 +PT=577744b371af4e9ddc0cd887a74cc043 +CT=3713d1a3577260302fe4740ca96b5bad + +I=255 +KEY=9eb82b573aafaa4b5b0247eb1d50d09e +PT=3713d1a3577260302fe4740ca96b5bad +CT=7f12861268e4a47fa8f01953b149c22c + +I=256 +KEY=e1aaad45524b0e34f3f25eb8ac1912b2 +PT=7f12861268e4a47fa8f01953b149c22c +CT=be787369f9b3299a850bdc57831ce3a6 + +I=257 +KEY=5fd2de2cabf827ae76f982ef2f05f114 +PT=be787369f9b3299a850bdc57831ce3a6 +CT=6cb37981e730b317315986304b8e35d4 + +I=258 +KEY=3361a7ad4cc894b947a004df648bc4c0 +PT=6cb37981e730b317315986304b8e35d4 +CT=a309860c6a2f28f6c190901d41cf2eae + +I=259 +KEY=906821a126e7bc4f863094c22544ea6e +PT=a309860c6a2f28f6c190901d41cf2eae +CT=c0f690a835e4e925bf5319f1c0e8cb9d + +I=260 +KEY=509eb1091303556a39638d33e5ac21f3 +PT=c0f690a835e4e925bf5319f1c0e8cb9d +CT=41c30496df8f0fa3886439efd9df8672 + +I=261 +KEY=115db59fcc8c5ac9b107b4dc3c73a781 +PT=41c30496df8f0fa3886439efd9df8672 +CT=3e67bced5508c62df28d0df64c28fc41 + +I=262 +KEY=2f3a097299849ce4438ab92a705b5bc0 +PT=3e67bced5508c62df28d0df64c28fc41 +CT=a693ef3574ae3613f86432f9c60bf488 + +I=263 +KEY=89a9e647ed2aaaf7bbee8bd3b650af48 +PT=a693ef3574ae3613f86432f9c60bf488 +CT=3cf289b189b42004d2af0559df64c98d + +I=264 +KEY=b55b6ff6649e8af369418e8a693466c5 +PT=3cf289b189b42004d2af0559df64c98d +CT=05ef12f5d05d0725a245ec8dfad7c268 + +I=265 +KEY=b0b47d03b4c38dd6cb04620793e3a4ad +PT=05ef12f5d05d0725a245ec8dfad7c268 +CT=9e25f51f6a463998f672a18bc49c14a9 + +I=266 +KEY=2e91881cde85b44e3d76c38c577fb004 +PT=9e25f51f6a463998f672a18bc49c14a9 +CT=0713603c19128dcc24ddd3c3556d54c6 + +I=267 +KEY=2982e820c797398219ab104f0212e4c2 +PT=0713603c19128dcc24ddd3c3556d54c6 +CT=16234235abc7b866cdcff3f80907db86 + +I=268 +KEY=3fa1aa156c5081e4d464e3b70b153f44 +PT=16234235abc7b866cdcff3f80907db86 +CT=e76c63f62277d5c585c29348f3e0795a + +I=269 +KEY=d8cdc9e34e27542151a670fff8f5461e +PT=e76c63f62277d5c585c29348f3e0795a +CT=6c7ace029b73b4760fcd43a3e6b9c5d8 + +I=270 +KEY=b4b707e1d554e0575e6b335c1e4c83c6 +PT=6c7ace029b73b4760fcd43a3e6b9c5d8 +CT=b14fe51defcd698b2a76c233522a477a + +I=271 +KEY=05f8e2fc3a9989dc741df16f4c66c4bc +PT=b14fe51defcd698b2a76c233522a477a +CT=a261d4a6828f0b82669e492b34d34949 + +I=272 +KEY=a799365ab816825e1283b84478b58df5 +PT=a261d4a6828f0b82669e492b34d34949 +CT=8b2f195fe879faabeb9fb6d3ac31f2dc + +I=273 +KEY=2cb62f05506f78f5f91c0e97d4847f29 +PT=8b2f195fe879faabeb9fb6d3ac31f2dc +CT=1fa8cd273bbb6394b040aacde1c9af25 + +I=274 +KEY=331ee2226bd41b61495ca45a354dd00c +PT=1fa8cd273bbb6394b040aacde1c9af25 +CT=13b9e0ee001e8c68c7e77963f3057f4d + +I=275 +KEY=20a702cc6bca97098ebbdd39c648af41 +PT=13b9e0ee001e8c68c7e77963f3057f4d +CT=c875b409a058efb825971b73d4fdb06a + +I=276 +KEY=e8d2b6c5cb9278b1ab2cc64a12b51f2b +PT=c875b409a058efb825971b73d4fdb06a +CT=65e4372394e9be3d76a92bc977bdacd4 + +I=277 +KEY=8d3681e65f7bc68cdd85ed836508b3ff +PT=65e4372394e9be3d76a92bc977bdacd4 +CT=a068b8d390859a58dae1d7f67532eb33 + +I=278 +KEY=2d5e3935cffe5cd407643a75103a58cc +PT=a068b8d390859a58dae1d7f67532eb33 +CT=7a2b2ebbfa7c1105fd3f1cae16518e48 + +I=279 +KEY=5775178e35824dd1fa5b26db066bd684 +PT=7a2b2ebbfa7c1105fd3f1cae16518e48 +CT=5fa590412d388f748b98aec9ab16cc54 + +I=280 +KEY=08d087cf18bac2a571c38812ad7d1ad0 +PT=5fa590412d388f748b98aec9ab16cc54 +CT=a3c854365c3773ef7256834dda794ac0 + +I=281 +KEY=ab18d3f9448db14a03950b5f77045010 +PT=a3c854365c3773ef7256834dda794ac0 +CT=8f506b1ae3dbc29f23e106b419b2fa1e + +I=282 +KEY=2448b8e3a75673d520740deb6eb6aa0e +PT=8f506b1ae3dbc29f23e106b419b2fa1e +CT=e6de475c5de99f947330f8f4038f72bd + +I=283 +KEY=c296ffbffabfec415344f51f6d39d8b3 +PT=e6de475c5de99f947330f8f4038f72bd +CT=38a4e2f4f0f85dccd7001956585aa57e + +I=284 +KEY=fa321d4b0a47b18d8444ec4935637dcd +PT=38a4e2f4f0f85dccd7001956585aa57e +CT=2b7948323de6827d322dc9ea895d5124 + +I=285 +KEY=d14b557937a133f0b66925a3bc3e2ce9 +PT=2b7948323de6827d322dc9ea895d5124 +CT=591d4541e6ecbcf90affba477812335d + +I=286 +KEY=88561038d14d8f09bc969fe4c42c1fb4 +PT=591d4541e6ecbcf90affba477812335d +CT=608c7e00efb7747ad17e35dd07ca07c8 + +I=287 +KEY=e8da6e383efafb736de8aa39c3e6187c +PT=608c7e00efb7747ad17e35dd07ca07c8 +CT=9ba49264263d0e19bca772ea146fcccc + +I=288 +KEY=737efc5c18c7f56ad14fd8d3d789d4b0 +PT=9ba49264263d0e19bca772ea146fcccc +CT=8fd4ce6ea919f5039b5f96f178301b86 + +I=289 +KEY=fcaa3232b1de00694a104e22afb9cf36 +PT=8fd4ce6ea919f5039b5f96f178301b86 +CT=ec6d51d06bb364b6e8ff5dbd448035b8 + +I=290 +KEY=10c763e2da6d64dfa2ef139feb39fa8e +PT=ec6d51d06bb364b6e8ff5dbd448035b8 +CT=28875366467d3ba64ac410079813f4ff + +I=291 +KEY=384030849c105f79e82b0398732a0e71 +PT=28875366467d3ba64ac410079813f4ff +CT=348831680d595a3bd6acdfb632a58308 + +I=292 +KEY=0cc801ec914905423e87dc2e418f8d79 +PT=348831680d595a3bd6acdfb632a58308 +CT=1ecb71bc17d33d6f30e6f6929589075c + +I=293 +KEY=12037050869a382d0e612abcd4068a25 +PT=1ecb71bc17d33d6f30e6f6929589075c +CT=acb2b1949d6d82e96cb490e2ed1648af + +I=294 +KEY=beb1c1c41bf7bac462d5ba5e3910c28a +PT=acb2b1949d6d82e96cb490e2ed1648af +CT=037f4d2e546b4114fc44f6f900e330db + +I=295 +KEY=bdce8cea4f9cfbd09e914ca739f3f251 +PT=037f4d2e546b4114fc44f6f900e330db +CT=96364a510329e24bd9c0dc1f1b4c3786 + +I=296 +KEY=2bf8c6bb4cb5199b475190b822bfc5d7 +PT=96364a510329e24bd9c0dc1f1b4c3786 +CT=1920e679cc59c2b9eaa88743878db4e1 + +I=297 +KEY=32d820c280ecdb22adf917fba5327136 +PT=1920e679cc59c2b9eaa88743878db4e1 +CT=6499fc9f797f858f9dee0d20110efd54 + +I=298 +KEY=5641dc5df9935ead30171adbb43c8c62 +PT=6499fc9f797f858f9dee0d20110efd54 +CT=8cdf1a4a21c4e868042a1dd3a0812b17 + +I=299 +KEY=da9ec617d857b6c5343d070814bda775 +PT=8cdf1a4a21c4e868042a1dd3a0812b17 +CT=76c800409b96fa82298f7ae3d9f44dd9 + +I=300 +KEY=ac56c65743c14c471db27debcd49eaac +PT=76c800409b96fa82298f7ae3d9f44dd9 +CT=86e96fd3554d69bffcab838172a3c5d3 + +I=301 +KEY=2abfa984168c25f8e119fe6abfea2f7f +PT=86e96fd3554d69bffcab838172a3c5d3 +CT=3f9f65b9662c7473d0541de8a7a3e301 + +I=302 +KEY=1520cc3d70a0518b314de3821849cc7e +PT=3f9f65b9662c7473d0541de8a7a3e301 +CT=13be0d89fa33ac42ada1008d15d4e5dc + +I=303 +KEY=069ec1b48a93fdc99cece30f0d9d29a2 +PT=13be0d89fa33ac42ada1008d15d4e5dc +CT=80e4b109da148e84553916a5fbf65e5d + +I=304 +KEY=867a70bd5087734dc9d5f5aaf66b77ff +PT=80e4b109da148e84553916a5fbf65e5d +CT=0c54342cb428f62d703b05ac0baeb60b + +I=305 +KEY=8a2e4491e4af8560b9eef006fdc5c1f4 +PT=0c54342cb428f62d703b05ac0baeb60b +CT=e2a855b841347e98a3df26235bc60774 + +I=306 +KEY=68861129a59bfbf81a31d625a603c680 +PT=e2a855b841347e98a3df26235bc60774 +CT=7072e3f79176be35803eda7d76b948b5 + +I=307 +KEY=18f4f2de34ed45cd9a0f0c58d0ba8e35 +PT=7072e3f79176be35803eda7d76b948b5 +CT=de8d29fa0d972e14dcf93cd6fd811254 + +I=308 +KEY=c679db24397a6bd946f6308e2d3b9c61 +PT=de8d29fa0d972e14dcf93cd6fd811254 +CT=8a79dca76268a9c16478861805e0d431 + +I=309 +KEY=4c0007835b12c218228eb69628db4850 +PT=8a79dca76268a9c16478861805e0d431 +CT=f94c9c91ec29774b872cdffb2d01b7ea + +I=310 +KEY=b54c9b12b73bb553a5a2696d05daffba +PT=f94c9c91ec29774b872cdffb2d01b7ea +CT=dacd5db555e715ae95dcedf2663a2cfe + +I=311 +KEY=6f81c6a7e2dca0fd307e849f63e0d344 +PT=dacd5db555e715ae95dcedf2663a2cfe +CT=9144b67c9eb6665e441ee7e96ee850c8 + +I=312 +KEY=fec570db7c6ac6a3746063760d08838c +PT=9144b67c9eb6665e441ee7e96ee850c8 +CT=71b7e26598d6e8a232910cfe56061d43 + +I=313 +KEY=8f7292bee4bc2e0146f16f885b0e9ecf +PT=71b7e26598d6e8a232910cfe56061d43 +CT=41d7e6743222cbaf1bdd3e4c3f7823dc + +I=314 +KEY=cea574cad69ee5ae5d2c51c46476bd13 +PT=41d7e6743222cbaf1bdd3e4c3f7823dc +CT=4dec01de2a381307bfd3017a42c5a382 + +I=315 +KEY=83497514fca6f6a9e2ff50be26b31e91 +PT=4dec01de2a381307bfd3017a42c5a382 +CT=4b51fd45dd81697246bd31f862d07b87 + +I=316 +KEY=c818885121279fdba442614644636516 +PT=4b51fd45dd81697246bd31f862d07b87 +CT=aa1ea784ab448339a18bf82dadd09f38 + +I=317 +KEY=62062fd58a631ce205c9996be9b3fa2e +PT=aa1ea784ab448339a18bf82dadd09f38 +CT=2f6e43f77173c845a02dd4b94b581f35 + +I=318 +KEY=4d686c22fb10d4a7a5e44dd2a2ebe51b +PT=2f6e43f77173c845a02dd4b94b581f35 +CT=9e3d8ec0d5805cb452c991a9eb73ad0e + +I=319 +KEY=d355e2e22e908813f72ddc7b49984815 +PT=9e3d8ec0d5805cb452c991a9eb73ad0e +CT=e434467e25cec2bae033708c60130daa + +I=320 +KEY=3761a49c0b5e4aa9171eacf7298b45bf +PT=e434467e25cec2bae033708c60130daa +CT=ee8dc23273a973e0f29afcc1d5adc431 + +I=321 +KEY=d9ec66ae78f73949e5845036fc26818e +PT=ee8dc23273a973e0f29afcc1d5adc431 +CT=6bf73c2db9cf62c4ce40f6169c0bc630 + +I=322 +KEY=b21b5a83c1385b8d2bc4a620602d47be +PT=6bf73c2db9cf62c4ce40f6169c0bc630 +CT=f0d6d96a051bb320777649a5a6368b50 + +I=323 +KEY=42cd83e9c423e8ad5cb2ef85c61bccee +PT=f0d6d96a051bb320777649a5a6368b50 +CT=f4ee407fec9efcf2d33dbd6e58e4091a + +I=324 +KEY=b623c39628bd145f8f8f52eb9effc5f4 +PT=f4ee407fec9efcf2d33dbd6e58e4091a +CT=75e112be8452e6490e66d2c1d2151ded + +I=325 +KEY=c3c2d128aceff21681e9802a4cead819 +PT=75e112be8452e6490e66d2c1d2151ded +CT=98eaede3a12379d6572abbee134ebfcf + +I=326 +KEY=5b283ccb0dcc8bc0d6c33bc45fa467d6 +PT=98eaede3a12379d6572abbee134ebfcf +CT=c0b9518271dde10098da8332ad0e15ab + +I=327 +KEY=9b916d497c116ac04e19b8f6f2aa727d +PT=c0b9518271dde10098da8332ad0e15ab +CT=05ddc987deaef7fe994d20054100625c + +I=328 +KEY=9e4ca4cea2bf9d3ed75498f3b3aa1021 +PT=05ddc987deaef7fe994d20054100625c +CT=1703a6baff2fd94bbea4a418b055f443 + +I=329 +KEY=894f02745d90447569f03ceb03ffe462 +PT=1703a6baff2fd94bbea4a418b055f443 +CT=270470398a007e76b694691c056bc4ee + +I=330 +KEY=ae4b724dd7903a03df6455f70694208c +PT=270470398a007e76b694691c056bc4ee +CT=225287593161094a7c537fa469686fe0 + +I=331 +KEY=8c19f514e6f13349a3372a536ffc4f6c +PT=225287593161094a7c537fa469686fe0 +CT=b3835ecc9e87f579414ea9fc165abc0e + +I=332 +KEY=3f9aabd87876c630e27983af79a6f362 +PT=b3835ecc9e87f579414ea9fc165abc0e +CT=1161cf9bfb59d21d7d08f4e84d57fb99 + +I=333 +KEY=2efb6443832f142d9f71774734f108fb +PT=1161cf9bfb59d21d7d08f4e84d57fb99 +CT=c7fba87efd50d7f5c6d0303b0e362b01 + +I=334 +KEY=e900cc3d7e7fc3d859a1477c3ac723fa +PT=c7fba87efd50d7f5c6d0303b0e362b01 +CT=0ae3c0d0061cb0adb330ccac95374074 + +I=335 +KEY=e3e30ced78637375ea918bd0aff0638e +PT=0ae3c0d0061cb0adb330ccac95374074 +CT=dfb9249b36657f7f1fd54ca44e30a5e0 + +I=336 +KEY=3c5a28764e060c0af544c774e1c0c66e +PT=dfb9249b36657f7f1fd54ca44e30a5e0 +CT=9f7ef9c67cc1d2512acb84f3cefc07da + +I=337 +KEY=a324d1b032c7de5bdf8f43872f3cc1b4 +PT=9f7ef9c67cc1d2512acb84f3cefc07da +CT=ac4e91336990f8bb425a3c28b74ed575 + +I=338 +KEY=0f6a40835b5726e09dd57faf987214c1 +PT=ac4e91336990f8bb425a3c28b74ed575 +CT=4008fcc6bca00ee92cd48c0a29184f37 + +I=339 +KEY=4f62bc45e7f72809b101f3a5b16a5bf6 +PT=4008fcc6bca00ee92cd48c0a29184f37 +CT=1c311ec4005cad8a7aead0a58d2bd4df + +I=340 +KEY=5353a281e7ab8583cbeb23003c418f29 +PT=1c311ec4005cad8a7aead0a58d2bd4df +CT=1bbc845c6e3510d010b8ce92e3319c86 + +I=341 +KEY=48ef26dd899e9553db53ed92df7013af +PT=1bbc845c6e3510d010b8ce92e3319c86 +CT=c4d442a88321b98ff7f3b178255d446f + +I=342 +KEY=8c3b64750abf2cdc2ca05ceafa2d57c0 +PT=c4d442a88321b98ff7f3b178255d446f +CT=1d841bb608215ceb42ac5216a939d521 + +I=343 +KEY=91bf7fc3029e70376e0c0efc531482e1 +PT=1d841bb608215ceb42ac5216a939d521 +CT=5c7d9ba058b88d9fb967bda3080fee41 + +I=344 +KEY=cdc2e4635a26fda8d76bb35f5b1b6ca0 +PT=5c7d9ba058b88d9fb967bda3080fee41 +CT=558feedddf24ec966a8f3835fe252849 + +I=345 +KEY=984d0abe8502113ebde48b6aa53e44e9 +PT=558feedddf24ec966a8f3835fe252849 +CT=a75c5a7a23a020982b367b68ac2154ae + +I=346 +KEY=3f1150c4a6a231a696d2f002091f1047 +PT=a75c5a7a23a020982b367b68ac2154ae +CT=b75d2acdfa1f13ca235f5d7b3da0a877 + +I=347 +KEY=884c7a095cbd226cb58dad7934bfb830 +PT=b75d2acdfa1f13ca235f5d7b3da0a877 +CT=fd9b2f39020ca174f3ef99b834c2df99 + +I=348 +KEY=75d755305eb18318466234c1007d67a9 +PT=fd9b2f39020ca174f3ef99b834c2df99 +CT=f313b97c9a68b5ea4559c3f466a1185b + +I=349 +KEY=86c4ec4cc4d936f2033bf73566dc7ff2 +PT=f313b97c9a68b5ea4559c3f466a1185b +CT=0c136310f5fc3411e5c43f792241f938 + +I=350 +KEY=8ad78f5c312502e3e6ffc84c449d86ca +PT=0c136310f5fc3411e5c43f792241f938 +CT=b15a27b62026660ed67bbd6f9a451a07 + +I=351 +KEY=3b8da8ea110364ed30847523ded89ccd +PT=b15a27b62026660ed67bbd6f9a451a07 +CT=2ae627810e55ca3b53cbb14d987dbb76 + +I=352 +KEY=116b8f6b1f56aed6634fc46e46a527bb +PT=2ae627810e55ca3b53cbb14d987dbb76 +CT=fb8bf764f2683404cc3685e5a8d4b32d + +I=353 +KEY=eae0780fed3e9ad2af79418bee719496 +PT=fb8bf764f2683404cc3685e5a8d4b32d +CT=65462d84b6a50c2acb618fe4d66e6ef5 + +I=354 +KEY=8fa6558b5b9b96f86418ce6f381ffa63 +PT=65462d84b6a50c2acb618fe4d66e6ef5 +CT=35751dc452fe4107636ba323d60c7d6d + +I=355 +KEY=bad3484f0965d7ff07736d4cee13870e +PT=35751dc452fe4107636ba323d60c7d6d +CT=9da691c55581b07b67e532f584674571 + +I=356 +KEY=2775d98a5ce4678460965fb96a74c27f +PT=9da691c55581b07b67e532f584674571 +CT=04aefc109700d4d5e1fa124f1dbcd423 + +I=357 +KEY=23db259acbe4b351816c4df677c8165c +PT=04aefc109700d4d5e1fa124f1dbcd423 +CT=9e611972dd9437e09d90b039f70abb5a + +I=358 +KEY=bdba3ce8167084b11cfcfdcf80c2ad06 +PT=9e611972dd9437e09d90b039f70abb5a +CT=02dad7ac91e7970f96fea1e07147e3ff + +I=359 +KEY=bf60eb44879713be8a025c2ff1854ef9 +PT=02dad7ac91e7970f96fea1e07147e3ff +CT=ba9c25e7cb4fe41d19eee501e02b2c31 + +I=360 +KEY=05fccea34cd8f7a393ecb92e11ae62c8 +PT=ba9c25e7cb4fe41d19eee501e02b2c31 +CT=61a1479c6c8240dd0d54ef4e81fa0529 + +I=361 +KEY=645d893f205ab77e9eb85660905467e1 +PT=61a1479c6c8240dd0d54ef4e81fa0529 +CT=35677d608830dcc80f0d301fbc5048ff + +I=362 +KEY=513af45fa86a6bb691b5667f2c042f1e +PT=35677d608830dcc80f0d301fbc5048ff +CT=551c151bd41dc9780da1d93f0c943512 + +I=363 +KEY=0426e1447c77a2ce9c14bf4020901a0c +PT=551c151bd41dc9780da1d93f0c943512 +CT=a06c75187875abeee4514811f8671c01 + +I=364 +KEY=a44a945c040209207845f751d8f7060d +PT=a06c75187875abeee4514811f8671c01 +CT=f12c94c5ce8194f08eef9c9066fa8dda + +I=365 +KEY=55660099ca839dd0f6aa6bc1be0d8bd7 +PT=f12c94c5ce8194f08eef9c9066fa8dda +CT=ebaf2112eeb3a49dfd68b9c06338cd35 + +I=366 +KEY=bec9218b2430394d0bc2d201dd3546e2 +PT=ebaf2112eeb3a49dfd68b9c06338cd35 +CT=e79375234873f40ba03394f244fd2ab4 + +I=367 +KEY=595a54a86c43cd46abf146f399c86c56 +PT=e79375234873f40ba03394f244fd2ab4 +CT=1a87a6cab94417c0a253540b9e2e40dd + +I=368 +KEY=43ddf262d507da8609a212f807e62c8b +PT=1a87a6cab94417c0a253540b9e2e40dd +CT=0698d6017a8d44038dd1bad284bd1a2f + +I=369 +KEY=45452463af8a9e858473a82a835b36a4 +PT=0698d6017a8d44038dd1bad284bd1a2f +CT=df9ce06432fd38c6d10eb8c316c3b20d + +I=370 +KEY=9ad9c4079d77a643557d10e9959884a9 +PT=df9ce06432fd38c6d10eb8c316c3b20d +CT=ade417ff698ff33ee286e93268450726 + +I=371 +KEY=373dd3f8f4f8557db7fbf9dbfddd838f +PT=ade417ff698ff33ee286e93268450726 +CT=55e1013034d7b2ffb1cab90b7ccf975c + +I=372 +KEY=62dcd2c8c02fe782063140d0811214d3 +PT=55e1013034d7b2ffb1cab90b7ccf975c +CT=fbbb243f9438ffd313842f3a4ce344af + +I=373 +KEY=9967f6f75417185115b56feacdf1507c +PT=fbbb243f9438ffd313842f3a4ce344af +CT=e72968a7804e264a6663e2d4413ee2e4 + +I=374 +KEY=7e4e9e50d4593e1b73d68d3e8ccfb298 +PT=e72968a7804e264a6663e2d4413ee2e4 +CT=29eeaf33ca0089a642233befbb31fe8c + +I=375 +KEY=57a031631e59b7bd31f5b6d137fe4c14 +PT=29eeaf33ca0089a642233befbb31fe8c +CT=8f88d006e954df4971a84684223280a3 + +I=376 +KEY=d828e165f70d68f4405df05515ccccb7 +PT=8f88d006e954df4971a84684223280a3 +CT=7e4fc66ebb2c4f82a1cb0d33f0820c82 + +I=377 +KEY=a667270b4c212776e196fd66e54ec035 +PT=7e4fc66ebb2c4f82a1cb0d33f0820c82 +CT=243eb64d433cda288332afd7d78ac5e2 + +I=378 +KEY=825991460f1dfd5e62a452b132c405d7 +PT=243eb64d433cda288332afd7d78ac5e2 +CT=6c9e1601af7894006ab078df16ea903c + +I=379 +KEY=eec78747a065695e08142a6e242e95eb +PT=6c9e1601af7894006ab078df16ea903c +CT=6736924f907fa9bea54e04cac54ff3a3 + +I=380 +KEY=89f11508301ac0e0ad5a2ea4e1616648 +PT=6736924f907fa9bea54e04cac54ff3a3 +CT=79f24c2c804a36da6f1c0d9386170364 + +I=381 +KEY=f0035924b050f63ac24623376776652c +PT=79f24c2c804a36da6f1c0d9386170364 +CT=14a9b3a4dd2b07df692830a80abb47c3 + +I=382 +KEY=e4aaea806d7bf1e5ab6e139f6dcd22ef +PT=14a9b3a4dd2b07df692830a80abb47c3 +CT=457e67b9fc38a575e6e785f47b61fc0d + +I=383 +KEY=a1d48d39914354904d89966b16acdee2 +PT=457e67b9fc38a575e6e785f47b61fc0d +CT=1c5154c4d6d1c4781c9beb5fa107e1bb + +I=384 +KEY=bd85d9fd479290e851127d34b7ab3f59 +PT=1c5154c4d6d1c4781c9beb5fa107e1bb +CT=62a09f485c24f575d3c476725d6e5767 + +I=385 +KEY=df2546b51bb6659d82d60b46eac5683e +PT=62a09f485c24f575d3c476725d6e5767 +CT=4a965c7bfc7095d0e9cba2b042fd22e6 + +I=386 +KEY=95b31acee7c6f04d6b1da9f6a8384ad8 +PT=4a965c7bfc7095d0e9cba2b042fd22e6 +CT=3e1601ac5365ec8c8806a35da84237cf + +I=387 +KEY=aba51b62b4a31cc1e31b0aab007a7d17 +PT=3e1601ac5365ec8c8806a35da84237cf +CT=d8640dc9b73c47d10aeb1bf9f8cb0f29 + +I=388 +KEY=73c116ab039f5b10e9f01152f8b1723e +PT=d8640dc9b73c47d10aeb1bf9f8cb0f29 +CT=8c56db660307571e6f4fbb12f8518161 + +I=389 +KEY=ff97cdcd00980c0e86bfaa4000e0f35f +PT=8c56db660307571e6f4fbb12f8518161 +CT=b10c941ff996579a26b0324c90d2cc5c + +I=390 +KEY=4e9b59d2f90e5b94a00f980c90323f03 +PT=b10c941ff996579a26b0324c90d2cc5c +CT=2b8099f5d9931a89fb387206d53d994a + +I=391 +KEY=651bc027209d411d5b37ea0a450fa649 +PT=2b8099f5d9931a89fb387206d53d994a +CT=90dc0b869eb93f11d6a6ac30feaca1e5 + +I=392 +KEY=f5c7cba1be247e0c8d91463abba307ac +PT=90dc0b869eb93f11d6a6ac30feaca1e5 +CT=1781e91e7c34a882e5b8601358779a12 + +I=393 +KEY=e24622bfc210d68e68292629e3d49dbe +PT=1781e91e7c34a882e5b8601358779a12 +CT=84049d1082da0a4fa1042c0b9e2229be + +I=394 +KEY=6642bfaf40cadcc1c92d0a227df6b400 +PT=84049d1082da0a4fa1042c0b9e2229be +CT=54bc31b89ce4700886e713aee936c427 + +I=395 +KEY=32fe8e17dc2eacc94fca198c94c07027 +PT=54bc31b89ce4700886e713aee936c427 +CT=68ae964381f03b48bbdaef9581cc2aae + +I=396 +KEY=5a5018545dde9781f410f619150c5a89 +PT=68ae964381f03b48bbdaef9581cc2aae +CT=f4d2372d1949d00f1d7525fa33c28406 + +I=397 +KEY=ae822f794497478ee965d3e326cede8f +PT=f4d2372d1949d00f1d7525fa33c28406 +CT=1fe5e7a2b852afead22d070c46a4520b + +I=398 +KEY=b167c8dbfcc5e8643b48d4ef606a8c84 +PT=1fe5e7a2b852afead22d070c46a4520b +CT=aba9f3de2facf761d9ccbebd295bd402 + +I=399 +KEY=1ace3b05d3691f05e2846a5249315886 +PT=aba9f3de2facf761d9ccbebd295bd402 +CT=662443ca556f5d9475eb34dec6452eb9 + +KEYSIZE=192 + +I=0 +KEY=000000000000000000000000000000000000000000000000 +PT=00000000000000000000000000000000 +CT=2d8af7b79eb7f21fdb394c77c3fb8c3a + +test + +I=1 +KEY=2d8af7b79eb7f21fdb394c77c3fb8c3a0df7df2c9829f1a1 +PT=2d8af7b79eb7f21fdb394c77c3fb8c3a +CT=d7585ada56f93796161c56cdba61aa3f + +I=2 +KEY=fad2ad6dc84ec589cd251aba799a260573a62b94c14e4a37 +PT=d7585ada56f93796161c56cdba61aa3f +CT=654c5eb1018d6086717b89db97e91a5a + +I=3 +KEY=9f9ef3dcc9c3a50fbc5e9361ee733c5fe6d0c5cbb168c289 +PT=654c5eb1018d6086717b89db97e91a5a +CT=8f55d4952903b480ce9ae1b2fdca07f4 + +I=4 +KEY=10cb2749e0c0118f72c472d313b93babb19cde62a492b64d +PT=8f55d4952903b480ce9ae1b2fdca07f4 +CT=122e10485449687f99562a5b3ce0c022 + +I=5 +KEY=02e53701b48979f0eb9258882f59fb895899f389df32a97c +PT=122e10485449687f99562a5b3ce0c022 +CT=0bef7c642c1728a91e0862c32c7ba03a + +I=6 +KEY=090a4b65989e5159f59a3a4b03225bb3b70ec5c405f53739 +PT=0bef7c642c1728a91e0862c32c7ba03a +CT=48b6fb885b50f097fafe596c834a5e3b + +I=7 +KEY=41bcb0edc3cea1ce0f64632780680588d4896b21b4285aec +PT=48b6fb885b50f097fafe596c834a5e3b +CT=6504c124d3fe3075519c02c27156adde + +I=8 +KEY=24b871c9103091bb5ef861e5f13ea856b0d63071660974f3 +PT=6504c124d3fe3075519c02c27156adde +CT=13045621123c54ff17fe6fada146086b + +I=9 +KEY=37bc27e8020cc54449060e485078a03d98d739b3376089a2 +PT=13045621123c54ff17fe6fada146086b +CT=583cfa6c1c0db91e3663d5645c1c0c21 + +I=10 +KEY=6f80dd841e017c5a7f65db2c0c64ac1cb282bf4cd5a00797 +PT=583cfa6c1c0db91e3663d5645c1c0c21 +CT=3fff7bc2d2e91274ecabd80d3b7c9d52 + +I=11 +KEY=507fa646cce86e2e93ce03213718314e4142628604296c73 +PT=3fff7bc2d2e91274ecabd80d3b7c9d52 +CT=04942897fa1bd6797194b877d118aa83 + +I=12 +KEY=54eb8ed136f3b857e25abb56e6009bcdc071cb2aad7e4d42 +PT=04942897fa1bd6797194b877d118aa83 +CT=4f564bee22cfe0ccdfe3d186e2308ab3 + +I=13 +KEY=1bbdc53f143c589b3db96ad00430117e0f5ef27de9747354 +PT=4f564bee22cfe0ccdfe3d186e2308ab3 +CT=a7fc3fcae5bf84a3ab14e5e9bdb24942 + +I=14 +KEY=bc41faf5f183dc3896ad8f39b982583cf24a5e27f0a0ad22 +PT=a7fc3fcae5bf84a3ab14e5e9bdb24942 +CT=3e9627377333c75504c59712c863d118 + +I=15 +KEY=82d7ddc282b01b6d9268182b71e18924aa7c1232aec9851e +PT=3e9627377333c75504c59712c863d118 +CT=ef52a0844f8bb92efa6a4677ff9f2c33 + +I=16 +KEY=6d857d46cd3ba24368025e5c8e7ea517da55980b2aab983e +PT=ef52a0844f8bb92efa6a4677ff9f2c33 +CT=b0c4441c89c80eed7056b88ec5467f20 + +I=17 +KEY=dd41395a44f3acae1854e6d24b38da375e6c74dd4495116f +PT=b0c4441c89c80eed7056b88ec5467f20 +CT=6b069b2bfba26e56c2362fe38ee626cd + +I=18 +KEY=b647a271bf51c2f8da62c931c5defcfaa68dbbb32fef4a12 +PT=6b069b2bfba26e56c2362fe38ee626cd +CT=e7bce5861d3fe4aa3795a6e084505319 + +I=19 +KEY=51fb47f7a26e2652edf76fd1418eafe335674f060f9df9a1 +PT=e7bce5861d3fe4aa3795a6e084505319 +CT=5719e85e04b4a957a422bc8541e368e6 + +I=20 +KEY=06e2afa9a6da8f0549d5d354006dc70516d028fd0e6ad533 +PT=5719e85e04b4a957a422bc8541e368e6 +CT=dd9e532e2f95fab1aba776f20d14d2eb + +I=21 +KEY=db7cfc87894f75b4e272a5a60d7915ee658d52d2d7fbc801 +PT=dd9e532e2f95fab1aba776f20d14d2eb +CT=b293ed77c7213581ca4a3dfb8dda00b6 + +I=22 +KEY=69ef11f04e6e40352838985d80a3155846046c19df20c8f4 +PT=b293ed77c7213581ca4a3dfb8dda00b6 +CT=5b123cd3bbd0ef91a13359cc1aafdfec + +I=23 +KEY=32fd2d23f5beafa4890bc1919a0ccab483526c7fb36aef77 +PT=5b123cd3bbd0ef91a13359cc1aafdfec +CT=a65624c712c1e3e6f7c463bc56aa11d8 + +I=24 +KEY=94ab09e4e77f4c427ecfa22dcca6db6cceaee44725ed9447 +PT=a65624c712c1e3e6f7c463bc56aa11d8 +CT=df4692912e4b72ed39a943c2ab2581da + +I=25 +KEY=4bed9b75c9343eaf4766e1ef67835ab61bce3c2f9bc249ec +PT=df4692912e4b72ed39a943c2ab2581da +CT=cd14310b565131aaebf95fc208935f8d + +I=26 +KEY=86f9aa7e9f650f05ac9fbe2d6f10053b89925d0f3c153401 +PT=cd14310b565131aaebf95fc208935f8d +CT=a5ef5a092ce0f286fa804696811b4fab + +I=27 +KEY=2316f077b385fd83561ff8bbee0b4a90b4da5d062b15d40f +PT=a5ef5a092ce0f286fa804696811b4fab +CT=804feba06527ac99e61acff97adf5cff + +I=28 +KEY=a3591bd7d6a2511ab005374294d4166f589edd3cebdee3b7 +PT=804feba06527ac99e61acff97adf5cff +CT=273e751a93d25e94ded72c1da5f0f537 + +I=29 +KEY=84676ecd45700f8e6ed21b5f3124e35841754e0703f6097e +PT=273e751a93d25e94ded72c1da5f0f537 +CT=ad1c41a25480b1aa59d66be614d08505 + +I=30 +KEY=297b2f6f11f0be24370470b925f4665da59238049b55afd2 +PT=ad1c41a25480b1aa59d66be614d08505 +CT=4d5b00f3cb325331daca84e1eaa857f5 + +I=31 +KEY=64202f9cdac2ed15edcef458cf5c31a8794888f023d0ef74 +PT=4d5b00f3cb325331daca84e1eaa857f5 +CT=9e376004a932d3d69df02de32ad4c400 + +I=32 +KEY=fa174f9873f03ec3703ed9bbe588f5a8cfaad6b45cc1a33d +PT=9e376004a932d3d69df02de32ad4c400 +CT=9056c673de07bdf5820db6a2f3ddaf01 + +I=33 +KEY=6a4189ebadf78336f2336f1916555aa9d2449dad09c280a2 +PT=9056c673de07bdf5820db6a2f3ddaf01 +CT=822d68d5dadf0e6f251a3fd049b57c15 + +I=34 +KEY=e86ce13e77288d59d72950c95fe026bcff3ef12d7b89098c +PT=822d68d5dadf0e6f251a3fd049b57c15 +CT=2cbf859e611f1aa376b72255ed4214b0 + +I=35 +KEY=c4d364a0163797faa19e729cb2a2320c4c0dfc34d7a9f4ff +PT=2cbf859e611f1aa376b72255ed4214b0 +CT=9bc4de94fae3719fac79450ea22ed0be + +I=36 +KEY=5f17ba34ecd4e6650de73792108ce2b2167da256e05d7f59 +PT=9bc4de94fae3719fac79450ea22ed0be +CT=0b23ae79aa698e1651b2d4e23c0bb23d + +I=37 +KEY=5434144d46bd68735c55e3702c87508f9ae6892ba7d6f28c +PT=0b23ae79aa698e1651b2d4e23c0bb23d +CT=fe810c773a93f9556a90e2a18d3f1f00 + +I=38 +KEY=aab5183a7c2e912636c501d1a1b84f8f3352e8d07806e1e8 +PT=fe810c773a93f9556a90e2a18d3f1f00 +CT=f640986154facbfe7d7dfbe2b520570c + +I=39 +KEY=5cf5805b28d45ad84bb8fa33149818839708192518ab2e1e +PT=f640986154facbfe7d7dfbe2b520570c +CT=18a13c3db51457b9bee20e2a8fbc32d1 + +I=40 +KEY=4454bc669dc00d61f55af4199b242a52964aa1ed496eaf07 +PT=18a13c3db51457b9bee20e2a8fbc32d1 +CT=b61b2b452fbc05a38d1fae5e1739673e + +I=41 +KEY=f24f9723b27c08c278455a478c1d4d6c149412a85e99f6a1 +PT=b61b2b452fbc05a38d1fae5e1739673e +CT=2ed882937117a8c134965b5e90df1566 + +I=42 +KEY=dc9715b0c36ba0034cd301191cc2580a7c5e484b32a99f99 +PT=2ed882937117a8c134965b5e90df1566 +CT=0fbd22a9de209ba60f7b759f150719ea + +I=43 +KEY=d32a37191d4b3ba543a8748609c541e0d8e24e72b0b6b2d4 +PT=0fbd22a9de209ba60f7b759f150719ea +CT=31136e8c1fc90c539e5df3706f5159c6 + +I=44 +KEY=e2395995028237f6ddf587f6669418264571d5f7754a16d3 +PT=31136e8c1fc90c539e5df3706f5159c6 +CT=79ab1d2d435f8a070fcdccfbc8ad4053 + +I=45 +KEY=9b9244b841ddbdf1d2384b0dae39587541fbf6abb0334c20 +PT=79ab1d2d435f8a070fcdccfbc8ad4053 +CT=568805dd0e91e1322f215e1f64c7f2b8 + +I=46 +KEY=cd1a41654f4c5cc3fd191512cafeaacddb6dfa85a3b84bdf +PT=568805dd0e91e1322f215e1f64c7f2b8 +CT=bc5651a905b82db28c96b188fc756dc9 + +I=47 +KEY=714c10cc4af47171718fa49a368bc704d81b1e087b537de5 +PT=bc5651a905b82db28c96b188fc756dc9 +CT=0cffbed1099d976da4de97767f3a5d71 + +I=48 +KEY=7db3ae1d4369e61cd55133ec49b19a75b9a41f105b4846a1 +PT=0cffbed1099d976da4de97767f3a5d71 +CT=f87828097f80f20bf598f0f5b063322c + +I=49 +KEY=85cb86143ce9141720c9c319f9d2a8598a1f93a262942c2b +PT=f87828097f80f20bf598f0f5b063322c +CT=054bebec3140a8e426b7995bacade33a + +I=50 +KEY=80806df80da9bcf3067e5a42557f4b6391cda4320c6e02d5 +PT=054bebec3140a8e426b7995bacade33a +CT=c68e22f403dd3aa990275c7c7bb7dc3d + +I=51 +KEY=460e4f0c0e74865a9659063e2ec8975ef5f8ee79d191f18f +PT=c68e22f403dd3aa990275c7c7bb7dc3d +CT=76931ad8bb53a9459da59c11ce94eec5 + +I=52 +KEY=309d55d4b5272f1f0bfc9a2fe05c799b30e2a7a8dcd7c311 +PT=76931ad8bb53a9459da59c11ce94eec5 +CT=fad4b407833808cdfe66ada1aa5799b0 + +I=53 +KEY=ca49e1d3361f27d2f59a378e4a0be02bda4d43f18481fd2e +PT=fad4b407833808cdfe66ada1aa5799b0 +CT=117179d453e7527a889d8863adc8d3cd + +I=54 +KEY=db38980765f875a87d07bfede7c333e671f73a1663d2f545 +PT=117179d453e7527a889d8863adc8d3cd +CT=48a8a6c13bd387d782ed7cd2fad135db + +I=55 +KEY=93903ec65e2bf27fffeac33f1d12063dfca36dbc9dd5204d +PT=48a8a6c13bd387d782ed7cd2fad135db +CT=263f193a9af45a9b8993a88a5b0b6027 + +I=56 +KEY=b5af27fcc4dfa8e476796bb54619661ac8e3b319c8f9aac1 +PT=263f193a9af45a9b8993a88a5b0b6027 +CT=1341d6977d54bf236776412610393794 + +I=57 +KEY=a6eef16bb98b17c7110f2a935620518ee6d35e2a2414e52b +PT=1341d6977d54bf236776412610393794 +CT=d012ba8869e07d3a6484a7b9ba6248a0 + +I=58 +KEY=76fc4be3d06b6afd758b8d2aec42192e1d17a362c53f9207 +PT=d012ba8869e07d3a6484a7b9ba6248a0 +CT=71d597cf23f2b6808f3b5262c7635e15 + +I=59 +KEY=0729dc2cf399dc7dfab0df482b21473bad1aa5feca8b9ec6 +PT=71d597cf23f2b6808f3b5262c7635e15 +CT=e4e9aec9a4929cd7c95cd09f237a6c85 + +I=60 +KEY=e3c072e5570b40aa33ec0fd7085b2bbed1abec62a8338583 +PT=e4e9aec9a4929cd7c95cd09f237a6c85 +CT=26a057233b30a952e74bb157d814632c + +I=61 +KEY=c56025c66c3be9f8d4a7be80d04f489288d973969122c7a0 +PT=26a057233b30a952e74bb157d814632c +CT=cfafb4e3a6d0d288003e616adc9e0f78 + +I=62 +KEY=0acf9125caeb3b70d499dfea0cd147ea2136c30d034a16c9 +PT=cfafb4e3a6d0d288003e616adc9e0f78 +CT=3ec4f89799ee39297413fd79a062fdc2 + +I=63 +KEY=340b69b253050259a08a2293acb3ba28f0f38b85b0d49f78 +PT=3ec4f89799ee39297413fd79a062fdc2 +CT=96e0d59ea36e48ba508ea95139efd6f2 + +I=64 +KEY=a2ebbc2cf06b4ae3f0048bc2955c6cdab1c3dc0ec893cd04 +PT=96e0d59ea36e48ba508ea95139efd6f2 +CT=3cea642c2f6a27038ac8c857b27a04b3 + +I=65 +KEY=9e01d800df016de07acc439527266869d098b50e915b7634 +PT=3cea642c2f6a27038ac8c857b27a04b3 +CT=725ff0b76076d674c17a0cf4fbbe0ca8 + +I=66 +KEY=ec5e28b7bf77bb94bbb64f61dc9864c186ee99b666e77446 +PT=725ff0b76076d674c17a0cf4fbbe0ca8 +CT=de825e1d9ddc42d86b382f9b9bec088f + +I=67 +KEY=32dc76aa22abf94cd08e60fa47746c4e0024496425b0cbad +PT=de825e1d9ddc42d86b382f9b9bec088f +CT=f253002094b48737ba44dace7df46d7b + +I=68 +KEY=c08f768ab61f7e7b6acaba343a80013590320e90906fe510 +PT=f253002094b48737ba44dace7df46d7b +CT=dc7e2a79b0816d9eb52b0d001795a586 + +I=69 +KEY=1cf15cf3069e13e5dfe1b7342d15a4b3ad013fa75fa415f1 +PT=dc7e2a79b0816d9eb52b0d001795a586 +CT=b42aff8e9f07678651009d2707453ba5 + +I=70 +KEY=a8dba37d999974638ee12a132a509f1611f6979d10becb49 +PT=b42aff8e9f07678651009d2707453ba5 +CT=d5909349ebcf4981cfcf084d1e82e660 + +I=71 +KEY=7d4b303472563de2412e225e34d279765ea31aafcf5e0ca1 +PT=d5909349ebcf4981cfcf084d1e82e660 +CT=c3cb793edc49b02e3864e435f4a7f0b8 + +I=72 +KEY=be80490aae1f8dcc794ac66bc07589cee0dee6b115b33f0b +PT=c3cb793edc49b02e3864e435f4a7f0b8 +CT=60ad3f7b6be100dd7ad42c44c3de34ef + +I=73 +KEY=de2d7671c5fe8d11039eea2f03abbd21a4497d0d48989474 +PT=60ad3f7b6be100dd7ad42c44c3de34ef +CT=62f1e52e954e0dab81904c86d4bb3b66 + +I=74 +KEY=bcdc935f50b080ba820ea6a9d71086471d6fb43949562e2f +PT=62f1e52e954e0dab81904c86d4bb3b66 +CT=96002cb4a56174317318298cb41f60d1 + +I=75 +KEY=2adcbfebf5d1f48bf1168f25630fe69648768812290ce79b +PT=96002cb4a56174317318298cb41f60d1 +CT=be520e63971fdb8b21c0bc549607af6f + +I=76 +KEY=948eb18862ce2f00d0d63371f50849f9febe3fa4c94dcdfa +PT=be520e63971fdb8b21c0bc549607af6f +CT=1d8a29a545a3bfd527c0aa8577f5d33f + +I=77 +KEY=8904982d276d90d5f71699f482fd9ac67369b752d60422d4 +PT=1d8a29a545a3bfd527c0aa8577f5d33f +CT=18f4c6ec622dbdaa66876e84016ac191 + +I=78 +KEY=91f05ec145402d7f9191f77083975b5746b797476e10b751 +PT=18f4c6ec622dbdaa66876e84016ac191 +CT=f1b7e0f4890c65e950fa2b4778951144 + +I=79 +KEY=6047be35cc4c4896c16bdc37fb024a1380b7c674ad4e3efd +PT=f1b7e0f4890c65e950fa2b4778951144 +CT=8bcabd1bcb750df509b567640b4c1bc9 + +I=80 +KEY=eb8d032e07394563c8debb53f04e51da2c7d31b60a415c32 +PT=8bcabd1bcb750df509b567640b4c1bc9 +CT=fa085fa67f8ee4d7ce6cfe445aeab419 + +I=81 +KEY=11855c8878b7a1b406b24517aaa4e5c32f964d0b832db18d +PT=fa085fa67f8ee4d7ce6cfe445aeab419 +CT=2766d1d6d2c8a639f1d8150644262833 + +I=82 +KEY=36e38d5eaa7f078df76a5011ee82cdf03765b7833be4b227 +PT=2766d1d6d2c8a639f1d8150644262833 +CT=3664e3882c874a468d2d3527d5bb6eca + +I=83 +KEY=00876ed686f84dcb7a4765363b39a33a90b14b68f23dc944 +PT=3664e3882c874a468d2d3527d5bb6eca +CT=e8ef4a26769e04fd31871da35de2a2c9 + +I=84 +KEY=e86824f0f06649364bc0789566db01f3802e50f053535a23 +PT=e8ef4a26769e04fd31871da35de2a2c9 +CT=f02afc7be83287fa4d5884eda426fa76 + +I=85 +KEY=1842d88b1854cecc0698fc78c2fdfb85ac5d5c7108f66a55 +PT=f02afc7be83287fa4d5884eda426fa76 +CT=d4a8a29119db67bb2043e07e0fe1a7c4 + +I=86 +KEY=ccea7a1a018fa97726db1c06cd1c5c4176af6c1491fb7428 +PT=d4a8a29119db67bb2043e07e0fe1a7c4 +CT=0a6f80ae19305d3dda6284afb81ba8b8 + +I=87 +KEY=c685fab418bff44afcb998a97507f4f9e949e1857bf6751a +PT=0a6f80ae19305d3dda6284afb81ba8b8 +CT=7f3e290603d2146944b8778057617116 + +I=88 +KEY=b9bbd3b21b6de023b801ef29226685ef5134064f5cf90d4b +PT=7f3e290603d2146944b8778057617116 +CT=67c16fbd9b85528e3f3505bddb3b64bc + +I=89 +KEY=de7abc0f80e8b2ad8734ea94f95de15330a1e5f91815fada +PT=67c16fbd9b85528e3f3505bddb3b64bc +CT=6c24e6b5bf7cb216783c547a9c0fee9a + +I=90 +KEY=b25e5aba3f9400bbff08beee65520fc92b1e19016c04ff53 +PT=6c24e6b5bf7cb216783c547a9c0fee9a +CT=c03950f723756e94e204773c0928725d + +I=91 +KEY=72670a4d1ce16e2f1d0cc9d26c7a7d94916be692f62fb8e6 +PT=c03950f723756e94e204773c0928725d +CT=10d65055ab60a2ce10756e82ba6f8c0f + +I=92 +KEY=62b15a18b781cce10d79a750d615f19b9d03dbf1f7d9457f +PT=10d65055ab60a2ce10756e82ba6f8c0f +CT=5d8b154fe29e91f8fdf730b78daaee66 + +I=93 +KEY=3f3a4f57551f5d19f08e97e75bbf1ffdff458c9ada5f20d8 +PT=5d8b154fe29e91f8fdf730b78daaee66 +CT=db7d86fe22c65a2a537b23622aef7a00 + +I=94 +KEY=e447c9a977d90733a3f5b485715065fdc00b611879ac3fca +PT=db7d86fe22c65a2a537b23622aef7a00 +CT=88064e813d1144e71218203ca0057757 + +I=95 +KEY=6c4187284ac843d4b1ed94b9d15512aa9b1fac74e5e902ce +PT=88064e813d1144e71218203ca0057757 +CT=7e6a815f8acafed8a3aa0bdc7976e83b + +I=96 +KEY=122b0677c002bd0c12479f65a823fa91c4f9e3732e163411 +PT=7e6a815f8acafed8a3aa0bdc7976e83b +CT=a2eb8ea612cc883caab100093bd78f91 + +I=97 +KEY=b0c088d1d2ce3530b8f69f6c93f47500d2bdddd137be4a20 +PT=a2eb8ea612cc883caab100093bd78f91 +CT=b167fe11681eb66011f2befe550f4ecb + +I=98 +KEY=01a776c0bad08350a9042192c6fb3bcb3136054972e5377b +PT=b167fe11681eb66011f2befe550f4ecb +CT=df22dfa28ed230fd916cd7506d1085cd + +I=99 +KEY=de85a9623402b3ad3868f6c2abebbe06f6426aa4c548f9e9 +PT=df22dfa28ed230fd916cd7506d1085cd +CT=ad502f6429d7dffa1f0085aa2f99e482 + +I=100 +KEY=73d586061dd56c572768736884725a84355bcd47bae5ad12 +PT=ad502f6429d7dffa1f0085aa2f99e482 +CT=66c7aed5fb1f70e3cf10c221ebfd9ed0 + +I=101 +KEY=151228d3e6ca1cb4e878b1496f8fc4546bb425da11d6c34c +PT=66c7aed5fb1f70e3cf10c221ebfd9ed0 +CT=def74f923faf663ce9473ecf530db9c9 + +I=102 +KEY=cbe56741d9657a88013f8f863c827d9d1af5c011e5ccb301 +PT=def74f923faf663ce9473ecf530db9c9 +CT=4b194db9a75aeba83bc94041fb746ad1 + +I=103 +KEY=80fc2af87e3f91203af6cfc7c7f6174c4bcbbb0a34b366c4 +PT=4b194db9a75aeba83bc94041fb746ad1 +CT=8de5777eed3c43611ccd94394a8f574c + +I=104 +KEY=0d195d869303d241263b5bfe8d7940009a8a2502989f3379 +PT=8de5777eed3c43611ccd94394a8f574c +CT=1c1e3fdaf4357fa1385e887f9c782dc9 + +I=105 +KEY=1107625c6736ade01e65d38111016dc92908c9216e9539c3 +PT=1c1e3fdaf4357fa1385e887f9c782dc9 +CT=b29604f7d9bbef1df0b7a1ab52a61a0d + +I=106 +KEY=a39166abbe8d42fdeed2722a43a777c4f6a97c1c407ab669 +PT=b29604f7d9bbef1df0b7a1ab52a61a0d +CT=9684b786dc96c387c190d261f810bf71 + +I=107 +KEY=3515d12d621b817a2f42a04bbbb7c8b592876ea63f34ee7b +PT=9684b786dc96c387c190d261f810bf71 +CT=aee573e2c587be0358fd0a34ec8b4b75 + +I=108 +KEY=9bf0a2cfa79c3f7977bfaa7f573c83c0941eeaf0dce4f4a3 +PT=aee573e2c587be0358fd0a34ec8b4b75 +CT=418eb25d06657ec20b85714fea7e63a7 + +I=109 +KEY=da7e1092a1f941bb7c3adb30bd42e067386945d9d65e7d13 +PT=418eb25d06657ec20b85714fea7e63a7 +CT=ffe48be9c493e9b13656e78c8887b55f + +I=110 +KEY=259a9b7b656aa80a4a6c3cbc35c55538adcde19cb6104181 +PT=ffe48be9c493e9b13656e78c8887b55f +CT=61e2f5866417b26074e6b7d9a1bff196 + +I=111 +KEY=44786efd017d1a6a3e8a8b65947aa4aecaff01e9a3ca19c6 +PT=61e2f5866417b26074e6b7d9a1bff196 +CT=3c17c1ca1f2dd90269ea48ddac7426fc + +I=112 +KEY=786faf371e50c3685760c3b8380e825280a3f68bb80f45f5 +PT=3c17c1ca1f2dd90269ea48ddac7426fc +CT=2436388016d0ecf3a2a48203d5867475 + +I=113 +KEY=5c5997b708802f9bf5c441bbed88f627565ed0e871de2671 +PT=2436388016d0ecf3a2a48203d5867475 +CT=72402fa5e1414187d7e296811b4fce48 + +I=114 +KEY=2e19b812e9c16e1c2226d73af6c7386fcf29ae81804876cf +PT=72402fa5e1414187d7e296811b4fce48 +CT=232db6b881fe8d30b1ce6606d3ccf189 + +I=115 +KEY=0d340eaa683fe32c93e8b13c250bc9e6b3b50ad84f78964f +PT=232db6b881fe8d30b1ce6606d3ccf189 +CT=a104d42ced1998f92340673da3b1719e + +I=116 +KEY=ac30da8685267bd5b0a8d60186bab87867a404c0b7f2ff49 +PT=a104d42ced1998f92340673da3b1719e +CT=c6ead00d45765d4c4b13f5f0cc942fe2 + +I=117 +KEY=6ada0a8bc0502699fbbb23f14a2e979adaeffc60cf5af817 +PT=c6ead00d45765d4c4b13f5f0cc942fe2 +CT=2061d53486a6d4a6f5a6aac4c36eda7e + +I=118 +KEY=4abbdfbf46f6f23f0e1d893589404de4f20fea6514167038 +PT=2061d53486a6d4a6f5a6aac4c36eda7e +CT=341bbf3fe1cc4b1d62fad0207d7978db + +I=119 +KEY=7ea06080a73ab9226ce75915f439353f73d97e27387ccfa5 +PT=341bbf3fe1cc4b1d62fad0207d7978db +CT=47678b1ee7aead3c7a85376b2842b20c + +I=120 +KEY=39c7eb9e4094141e16626e7edc7b8733612f36d431f07ac7 +PT=47678b1ee7aead3c7a85376b2842b20c +CT=bed835e5abd4ad2a14eb8742db0e9d3a + +I=121 +KEY=871fde7beb40b9340289e93c07751a09e87b0eab9179ed8d +PT=bed835e5abd4ad2a14eb8742db0e9d3a +CT=26254f226e8137f866286c03c3111c9e + +I=122 +KEY=a13a915985c18ecc64a1853fc4640697c080b8347557cbad +PT=26254f226e8137f866286c03c3111c9e +CT=5c247e1c5e3ce47703ad9f6faea9f07f + +I=123 +KEY=fd1eef45dbfd6abb670c1a506acdf6e80e48f06f5d7ed6af +PT=5c247e1c5e3ce47703ad9f6faea9f07f +CT=d9fbd506212f6a70804009ee3fecf015 + +I=124 +KEY=24e53a43fad200cbe74c13be552106fd2894d5df16062649 +PT=d9fbd506212f6a70804009ee3fecf015 +CT=5714238f59cbc1c67ca9a6b7f4378b19 + +I=125 +KEY=73f119cca319c10d9be5b509a1168de44ab48a10c8c9bdac +PT=5714238f59cbc1c67ca9a6b7f4378b19 +CT=ccb2a981ae243280fa070852798f4d3b + +I=126 +KEY=bf43b04d0d3df38d61e2bd5bd899c0df123cbe0c3fc71832 +PT=ccb2a981ae243280fa070852798f4d3b +CT=8c96eefee656d081930ea60d36adf3f6 + +I=127 +KEY=33d55eb3eb6b230cf2ec1b56ee343329dec50651db3d690a +PT=8c96eefee656d081930ea60d36adf3f6 +CT=c5dc669eba3fbf0ee96e94d413410dad + +I=128 +KEY=f609382d51549c021b828f82fd753e841a7580e3a723e5e9 +PT=c5dc669eba3fbf0ee96e94d413410dad +CT=1a3da1d01c383736e10fea1c82c492c0 + +I=129 +KEY=ec3499fd4d6cab34fa8d659e7fb1ac44a375dd6918ef4482 +PT=1a3da1d01c383736e10fea1c82c492c0 +CT=b6acc0296c711a2a7f9d3a5d0f6feb0e + +I=130 +KEY=5a9859d4211db11e85105fc370de474a17cb94cb8e7216e3 +PT=b6acc0296c711a2a7f9d3a5d0f6feb0e +CT=ffb511f43ff5ee126c17cb825b36b36e + +I=131 +KEY=a52d48201ee85f0ce90794412be8f42411cf5b2f2981bbc8 +PT=ffb511f43ff5ee126c17cb825b36b36e +CT=220a57647ecb8da6af45f461b19acace + +I=132 +KEY=87271f446023d2aa464260209a723eea6589606b4405ef88 +PT=220a57647ecb8da6af45f461b19acace +CT=1ea16a1ca19cea74590927a95e470437 + +I=133 +KEY=99867558c1bf38de1f4b4789c4353add3ff9f4e260119b3f +PT=1ea16a1ca19cea74590927a95e470437 +CT=fa52d3c9ccc352fdac49a2aa160a85b8 + +I=134 +KEY=63d4a6910d7c6a23b302e523d23fbf659d4191ed93ae5d43 +PT=fa52d3c9ccc352fdac49a2aa160a85b8 +CT=dc4f577c399c21a08227436dc2d7c0a7 + +I=135 +KEY=bf9bf1ed34e04b833125a64e10e87fc2b39c829a8f592131 +PT=dc4f577c399c21a08227436dc2d7c0a7 +CT=ae6c915260ad76a06adee653adb30213 + +I=136 +KEY=11f760bf544d3d235bfb401dbd5b7dd1d1e6db5c1ed78971 +PT=ae6c915260ad76a06adee653adb30213 +CT=ccddd83b7a6c4e83eb8160cd732d8adc + +I=137 +KEY=dd2ab8842e2173a0b07a20d0ce76f70d637d58fedd1dbc0a +PT=ccddd83b7a6c4e83eb8160cd732d8adc +CT=edf4554df8de0eaedbdce14e12725093 + +I=138 +KEY=30deedc9d6ff7d0e6ba6c19edc04a79e3256b81d1f0e2b97 +PT=edf4554df8de0eaedbdce14e12725093 +CT=ac6f54391f1e467c38a2842c1d8fa434 + +I=139 +KEY=9cb1b9f0c9e13b72530445b2c18b03aa6a9f7545d3a090a0 +PT=ac6f54391f1e467c38a2842c1d8fa434 +CT=12b450ecdaf0229f1bea0811208e070d + +I=140 +KEY=8e05e91c131119ed48ee4da3e10504a74285dc4d851f6b22 +PT=12b450ecdaf0229f1bea0811208e070d +CT=5b9d566bd128d9342a86e26939e3b6de + +I=141 +KEY=d598bf77c239c0d96268afcad8e6b2791686d621327cb8f1 +PT=5b9d566bd128d9342a86e26939e3b6de +CT=c4b6135d55cd3ef807c0c901c7259351 + +I=142 +KEY=112eac2a97f4fe2165a866cb1fc321285159770ae5e4f30f +PT=c4b6135d55cd3ef807c0c901c7259351 +CT=51c99ecc8f245f7f9633f695d1e8ef9a + +I=143 +KEY=40e732e618d0a15ef39b905ece2bceb2bbcfef8f64009a44 +PT=51c99ecc8f245f7f9633f695d1e8ef9a +CT=d77651de6b31ebc004f144256df2f1b8 + +I=144 +KEY=9791633873e14a9ef76ad47ba3d93f0ac0478fa852484f55 +PT=d77651de6b31ebc004f144256df2f1b8 +CT=d180ec4f66382ed36d9c8e5dc4783bc3 + +I=145 +KEY=46118f7715d9644d9af65a2667a104c9c161977ebaa27684 +PT=d180ec4f66382ed36d9c8e5dc4783bc3 +CT=68180eee2b93bd11dd3444e6394f3afd + +I=146 +KEY=2e0981993e4ad95c47c21ec05eee3e343d6bcb012776c011 +PT=68180eee2b93bd11dd3444e6394f3afd +CT=317e531d8663fb0d8fc4f54220a90315 + +I=147 +KEY=1f77d284b8292251c806eb827e473d218cc8719a5c4a86bf +PT=317e531d8663fb0d8fc4f54220a90315 +CT=4d8dda7b8730311f576de8cde9617b3e + +I=148 +KEY=52fa08ff3f19134e9f6b034f9726461f379763fbb0c3a370 +PT=4d8dda7b8730311f576de8cde9617b3e +CT=6ebdd4c42b8db3c71bf773779222e412 + +I=149 +KEY=3c47dc3b1494a089849c70380504a20df1bb5ebd9b580782 +PT=6ebdd4c42b8db3c71bf773779222e412 +CT=42bd60c3be755d38976dd17961f31db7 + +I=150 +KEY=7efabcf8aae1fdb113f1a14164f7bfba25e0d6dae5bff020 +PT=42bd60c3be755d38976dd17961f31db7 +CT=cf7952f4b115c9685ac569fcd71c81a5 + +I=151 +KEY=b183ee0c1bf434d94934c8bdb3eb3e1f8f8ac20e1c1ec238 +PT=cf7952f4b115c9685ac569fcd71c81a5 +CT=a5aa6276f61261dfe56b4ac5ba13f0b2 + +I=152 +KEY=14298c7aede65506ac5f827809f8cead2fc60a4ec5f4e174 +PT=a5aa6276f61261dfe56b4ac5ba13f0b2 +CT=78c28bd3d80cf4683eba4a11ef1f258c + +I=153 +KEY=6ceb07a935eaa16e92e5c869e6e7eb21c3ee314d5bf5aeb8 +PT=78c28bd3d80cf4683eba4a11ef1f258c +CT=809e3910b3ffe40e7e6ec6254ecff301 + +I=154 +KEY=ec753eb986154560ec8b0e4ca828182008d0d603745ca010 +PT=809e3910b3ffe40e7e6ec6254ecff301 +CT=0cfa73fed2f766207a11f7972c655ce5 + +I=155 +KEY=e08f4d4754e22340969af9db844d44c522b76b3d1feef477 +PT=0cfa73fed2f766207a11f7972c655ce5 +CT=cc2fc3831122def26f17ee4344be6414 + +I=156 +KEY=2ca08ec445c0fdb2f98d1798c0f320d1a3575bf135e50b44 +PT=cc2fc3831122def26f17ee4344be6414 +CT=0b4b48fef52d0a8a86f1c75478c28af5 + +I=157 +KEY=27ebc63ab0edf7387f7cd0ccb831aa24cc3fbcbc36551641 +PT=0b4b48fef52d0a8a86f1c75478c28af5 +CT=ef0ac65d2959f4b8f0b9f2bd61bd3fd4 + +I=158 +KEY=c8e1006799b403808fc52271d98c95f00e0da542328f96ed +PT=ef0ac65d2959f4b8f0b9f2bd61bd3fd4 +CT=f03313397d563cced859d7d4b925b7b3 + +I=159 +KEY=38d2135ee4e23f4e579cf5a560a922430a481ecad3796ef4 +PT=f03313397d563cced859d7d4b925b7b3 +CT=1e29abdff3bc2ced6518257063cb4b29 + +I=160 +KEY=26fbb881175e13a33284d0d50362696a6e078d2ae35f544e +PT=1e29abdff3bc2ced6518257063cb4b29 +CT=2a87429eff9a5b31f9fde86f81f666c6 + +I=161 +KEY=0c7cfa1fe8c44892cb7938ba82940fac4c1192c7b4e96bb7 +PT=2a87429eff9a5b31f9fde86f81f666c6 +CT=30c7664123cf7668c071b1371d08f850 + +I=162 +KEY=3cbb9c5ecb0b3efa0b08898d9f9cf7fcc0d9bd1922055a56 +PT=30c7664123cf7668c071b1371d08f850 +CT=77fffe62eddf06023843d8f084b8958c + +I=163 +KEY=4b44623c26d438f8334b517d1b2462701369c4e90f88ee84 +PT=77fffe62eddf06023843d8f084b8958c +CT=af7ef3fb0a178bf9b23148409a14b2bc + +I=164 +KEY=e43a91c72cc3b301817a193d8130d0cc6f6a32a5e9d9eee1 +PT=af7ef3fb0a178bf9b23148409a14b2bc +CT=013789b17bf14a5ff208e5e4081c4447 + +I=165 +KEY=e50d18765732f95e7372fcd9892c948b596ee0289a9f4058 +PT=013789b17bf14a5ff208e5e4081c4447 +CT=e2f24701e05bfab582956dde3c4a1cc0 + +I=166 +KEY=07ff5f77b76903ebf1e79107b566884b7a7115daccb4fba1 +PT=e2f24701e05bfab582956dde3c4a1cc0 +CT=5fcdd0dc199e5b16211a2514f7227d0e + +I=167 +KEY=58328fabaef758fdd0fdb4134244f545e8a7edaabf61c850 +PT=5fcdd0dc199e5b16211a2514f7227d0e +CT=f0e7d446e3f84112ac8dd5731dbc093e + +I=168 +KEY=a8d55bed4d0f19ef7c7061605ff8fc7b70a164a32b87b82a +PT=f0e7d446e3f84112ac8dd5731dbc093e +CT=56112fcb3ab94aa251fe79bfc0c8d1d2 + +I=169 +KEY=fec4742677b6534d2d8e18df9f302da9a9bb958712f5d1f4 +PT=56112fcb3ab94aa251fe79bfc0c8d1d2 +CT=548b8342dc7abe972545c6ac61e8d6b3 + +I=170 +KEY=aa4ff764abccedda08cbde73fed8fb1a09e1776520ca00a0 +PT=548b8342dc7abe972545c6ac61e8d6b3 +CT=338380e73bb2614056e14f34524494b1 + +I=171 +KEY=99cc7783907e8c9a5e2a9147ac9c6fab9de5e0a70b0c122a +PT=338380e73bb2614056e14f34524494b1 +CT=c772fc108a0bfcf42ef444fd9509f5c2 + +I=172 +KEY=5ebe8b931a75706e70ded5ba39959a69e8c6e075dcca4abb +PT=c772fc108a0bfcf42ef444fd9509f5c2 +CT=7d35c39c2d28fe0e3aa0cc5bb47f1478 + +I=173 +KEY=238b480f375d8e604a7e19e18dea8e11e3aa29f209768bf0 +PT=7d35c39c2d28fe0e3aa0cc5bb47f1478 +CT=f7c7c38f3a613d21146468836e75637f + +I=174 +KEY=d44c8b800d3cb3415e1a7162e39fed6e21b48c2105552b69 +PT=f7c7c38f3a613d21146468836e75637f +CT=7c034adde36cc7b6ee8b69035190e1ab + +I=175 +KEY=a84fc15dee5074f7b0911861b20f0cc54e90db22126b8b4b +PT=7c034adde36cc7b6ee8b69035190e1ab +CT=725fc9635335b3431d2b4e934c3c73ae + +I=176 +KEY=da10083ebd65c7b4adba56f2fe337f6b1674cb959c0bbf64 +PT=725fc9635335b3431d2b4e934c3c73ae +CT=33e917653cfe43f4d8d07c31fb8d2a23 + +I=177 +KEY=e9f91f5b819b8440756a2ac305be55481613f6b9c0ed4f6c +PT=33e917653cfe43f4d8d07c31fb8d2a23 +CT=28206dc7d2a2215501fd2b5b61278d44 + +I=178 +KEY=c1d9729c5339a515749701986499d80c001763214d4ab290 +PT=28206dc7d2a2215501fd2b5b61278d44 +CT=efa952bb1c4d4f463765eb14861e3ef9 + +I=179 +KEY=2e7020274f74ea5343f2ea8ce287e6f5e13e603cbba9d01a +PT=efa952bb1c4d4f463765eb14861e3ef9 +CT=01a97067cb02f4a0539d0284177df5f3 + +I=180 +KEY=2fd9504084761ef3106fe808f5fa1306f0238e91f8eee184 +PT=01a97067cb02f4a0539d0284177df5f3 +CT=7c5e4fa966e76e2934c7c75b84c49841 + +I=181 +KEY=53871fe9e29170da24a82f53713e8b4765d32d95ef8b11d7 +PT=7c5e4fa966e76e2934c7c75b84c49841 +CT=bf6d4f2a1a4f3ed6475040e0488fa8c8 + +I=182 +KEY=ecea50c3f8de4e0c63f86fb339b1238f9af9e3983defed0f +PT=bf6d4f2a1a4f3ed6475040e0488fa8c8 +CT=6c5fecfbb0e7ced715f0b026f291dae1 + +I=183 +KEY=80b5bc38483980db7608df95cb20f96e600cb95352962ec2 +PT=6c5fecfbb0e7ced715f0b026f291dae1 +CT=b2d40916e309afcd8c5b2de75637731c + +I=184 +KEY=3261b52eab302f16fa53f2729d178a72c036854b95907409 +PT=b2d40916e309afcd8c5b2de75637731c +CT=bc8cf1d3f623bbe42cfaca135c1c528a + +I=185 +KEY=8eed44fd5d1394f2d6a93861c10bd8f884b73625025639af +PT=bc8cf1d3f623bbe42cfaca135c1c528a +CT=c60c0007eae4ebc8b41b1df79d5e6ac1 + +I=186 +KEY=48e144fab7f77f3a62b225965c55b2396653a5b0c62f1ac6 +PT=c60c0007eae4ebc8b41b1df79d5e6ac1 +CT=633f53132964be630ffcefb0b3635cbd + +I=187 +KEY=2bde17e99e93c1596d4eca26ef36ee84b3ddddd632e134b6 +PT=633f53132964be630ffcefb0b3635cbd +CT=31571843036771f31df1cf449595b4dd + +I=188 +KEY=1a890faa9df4b0aa70bf05627aa35a590469c491d409324e +PT=31571843036771f31df1cf449595b4dd +CT=f59654eb5425b0397f2eca93b9ed329c + +I=189 +KEY=ef1f5b41c9d100930f91cff1c34e68c5ee075b32d84f360e +PT=f59654eb5425b0397f2eca93b9ed329c +CT=5c5fb08f820e09196b671f9ea231307a + +I=190 +KEY=b340ebce4bdf098a64f6d06f617f58bf7468541ae893b378 +PT=5c5fb08f820e09196b671f9ea231307a +CT=e3dfb074140141de191aa8f1cffb42dc + +I=191 +KEY=509f5bba5fde48547dec789eae841a63d0a108202cfcf395 +PT=e3dfb074140141de191aa8f1cffb42dc +CT=f4a49a84ce3238b18686e7e362a47d35 + +I=192 +KEY=a43bc13e91ec70e5fb6a9f7dcc2067561f0e340f5e71b138 +PT=f4a49a84ce3238b18686e7e362a47d35 +CT=b5aaaff97508f8166f125313c72732db + +I=193 +KEY=11916ec7e4e488f39478cc6e0b07558d1236b8fa520e8725 +PT=b5aaaff97508f8166f125313c72732db +CT=6f758f052b5d52f591dfc5282b9d357d + +I=194 +KEY=7ee4e1c2cfb9da0605a70946209a60f0af78435994cd7d6b +PT=6f758f052b5d52f591dfc5282b9d357d +CT=01c64b6d38d7e7bfb198f7db39272311 + +I=195 +KEY=7f22aaaff76e3db9b43ffe9d19bd43e158541e012ba90d02 +PT=01c64b6d38d7e7bfb198f7db39272311 +CT=93762d16b55eb7b07205fa3b8d18a252 + +I=196 +KEY=ec5487b942308a09c63a04a694a5e1b35e3cac7e70688817 +PT=93762d16b55eb7b07205fa3b8d18a252 +CT=21e1e83dd40c7b1a7479137916abaf30 + +I=197 +KEY=cdb56f84963cf113b24317df820e4e83ce259d49c4b8e635 +PT=21e1e83dd40c7b1a7479137916abaf30 +CT=cab4c2405c7ec9f4d67a44e326d46a7a + +I=198 +KEY=0701adc4ca4238e76439533ca4da24f9f9bec3de7a58ac18 +PT=cab4c2405c7ec9f4d67a44e326d46a7a +CT=c3ce7be2b989ff3e9268e5aebc923569 + +I=199 +KEY=c4cfd62673cbc7d9f651b69218481190a43ebbd36e10c8f3 +PT=c3ce7be2b989ff3e9268e5aebc923569 +CT=a6cff559398a4f318f9c2f6720bfc94d + +I=200 +KEY=6200237f4a4188e879cd99f538f7d8dd5db80bea4220cb06 +PT=a6cff559398a4f318f9c2f6720bfc94d +CT=6f6884b517fc95c035a079e7d549720e + +I=201 +KEY=0d68a7ca5dbd1d284c6de012edbeaad33fcafd685c02dfbd +PT=6f6884b517fc95c035a079e7d549720e +CT=1c2abaaecd641550aaf6d008db90c62b + +I=202 +KEY=11421d6490d90878e69b301a362e6cf817c866ee4a3ed492 +PT=1c2abaaecd641550aaf6d008db90c62b +CT=7677f142aaf197b529972369d0df06f0 + +I=203 +KEY=6735ec263a289fcdcf0c1373e6f16a083ae809f24cb50def +PT=7677f142aaf197b529972369d0df06f0 +CT=b7b9557e18e75458ad61165fb0ab995a + +I=204 +KEY=d08cb95822cfcb95626d052c565af352409334d2440e2d66 +PT=b7b9557e18e75458ad61165fb0ab995a +CT=d24d008a447fb47d5ffc5f2cd084893d + +I=205 +KEY=02c1b9d266b07fe83d915a0086de7a6f31bd90c28549f8b8 +PT=d24d008a447fb47d5ffc5f2cd084893d +CT=6b5e8328860dd74b4990c3b6fb739dbe + +I=206 +KEY=699f3afae0bda8a3740199b67dade7d11821b9471d83eefe +PT=6b5e8328860dd74b4990c3b6fb739dbe +CT=5adab34604ccab7648f579b292ba95bf + +I=207 +KEY=334589bce47103d53cf4e004ef17726ed3e16cb26e9be2e5 +PT=5adab34604ccab7648f579b292ba95bf +CT=63b54f12a385c13d33e7209a1bb6f84d + +I=208 +KEY=50f0c6ae47f4c2e80f13c09ef4a18a23bc6b242aa917b35a +PT=63b54f12a385c13d33e7209a1bb6f84d +CT=ad7087040f667b015359562477417247 + +I=209 +KEY=fd8041aa4892b9e95c4a96ba83e0f8649b7b878fa93a56cd +PT=ad7087040f667b015359562477417247 +CT=a6bfd5ab511692f84fb59a9e9737811f + +I=210 +KEY=5b3f940119842b1113ff0c2414d7797b2571eb1738ba9c70 +PT=a6bfd5ab511692f84fb59a9e9737811f +CT=b0c0907539291c2f4c6e05a27a58b96a + +I=211 +KEY=ebff047420ad373e5f9109866e8fc0118198f10e317ad2a6 +PT=b0c0907539291c2f4c6e05a27a58b96a +CT=04e048267f3c7b5a406fb28617a6daa5 + +I=212 +KEY=ef1f4c525f914c641ffebb0079291ab48802f41f54916bab +PT=04e048267f3c7b5a406fb28617a6daa5 +CT=16978208dc2c6b3ca6996faa88962139 + +I=213 +KEY=f988ce5a83bd2758b967d4aaf1bf3b8defabff8e43225d56 +PT=16978208dc2c6b3ca6996faa88962139 +CT=32d65841c001cf6a7c2c724bf8074c34 + +I=214 +KEY=cb5e961b43bce832c54ba6e109b877b90c6dd5ae8707892c +PT=32d65841c001cf6a7c2c724bf8074c34 +CT=7bf136df0820f26ce4fe00302cf89932 + +I=215 +KEY=b0afa0c44b9c1a5e21b5a6d12540ee8b23700ea897ad74c0 +PT=7bf136df0820f26ce4fe00302cf89932 +CT=ab36b850bb77f4836fe155488bab2e36 + +I=216 +KEY=1b991894f0ebeedd4e54f399aeebc0bd94df79d46a1ef9a0 +PT=ab36b850bb77f4836fe155488bab2e36 +CT=6faa40b365c9f578949bf335b93d155b + +I=217 +KEY=7433582795221ba5dacf00ac17d6d5e6ccee0372ac6c08ed +PT=6faa40b365c9f578949bf335b93d155b +CT=dd0a96facce9ef461de17f55aa08ef0b + +I=218 +KEY=a939cedd59cbf4e3c72e7ff9bdde3aed77f84c5855aa14d0 +PT=dd0a96facce9ef461de17f55aa08ef0b +CT=ef5c45d8b6b503b1292a2ed67306789a + +I=219 +KEY=46658b05ef7ef752ee04512fced84277086608edeae72b8c +PT=ef5c45d8b6b503b1292a2ed67306789a +CT=519b746221be2cda8dfcdbded7f0d495 + +I=220 +KEY=17feff67cec0db8863f88af1192896e2ea0b1df535ffb2df +PT=519b746221be2cda8dfcdbded7f0d495 +CT=0c9d5990a87913213ccea99fffbf2756 + +I=221 +KEY=1b63a6f766b9c8a95f36236ee697b1b4fb4cf984db23a34a +PT=0c9d5990a87913213ccea99fffbf2756 +CT=1bb0167d952c9fdec6e9fb12770cd5aa + +I=222 +KEY=00d3b08af395577799dfd87c919b641eac6f13f48714a0e5 +PT=1bb0167d952c9fdec6e9fb12770cd5aa +CT=510dbf1dec6e3cb5ba79fc4a2b67a483 + +I=223 +KEY=51de0f971ffb6bc223a62436bafcc09dd8e0840a5e94fd33 +PT=510dbf1dec6e3cb5ba79fc4a2b67a483 +CT=fc99d3276f523eb82efdcac10b8e15b8 + +I=224 +KEY=ad47dcb070a9557a0d5beef7b172d525a39a4eb1c1414ad2 +PT=fc99d3276f523eb82efdcac10b8e15b8 +CT=ccb74c442862a1d01b4179125abe8389 + +I=225 +KEY=61f090f458cbf4aa161a97e5ebcc56ac0cc62d407eff0ff4 +PT=ccb74c442862a1d01b4179125abe8389 +CT=171d03be7b9efa25698b80b8cbf2c925 + +I=226 +KEY=76ed934a23550e8f7f91175d203e9f898c281130aa3765f9 +PT=171d03be7b9efa25698b80b8cbf2c925 +CT=2db894d3b79e8c78befc4d26c791de2a + +I=227 +KEY=5b55079994cb82f7c16d5a7be7af41a350f44ef5828c66ca +PT=2db894d3b79e8c78befc4d26c791de2a +CT=087071a460a286e88dde51d4a52d8eb5 + +I=228 +KEY=5325763df469041f4cb30baf4282cf166dcf61d20636117b +PT=087071a460a286e88dde51d4a52d8eb5 +CT=07ddcc0d4a2510156010880ce2df0a97 + +I=229 +KEY=54f8ba30be4c140a2ca383a3a05dc58188f419e192117b75 +PT=07ddcc0d4a2510156010880ce2df0a97 +CT=9250468961c14a72b52cb96cc170e755 + +I=230 +KEY=c6a8fcb9df8d5e78998f3acf612d22d4a130de02d68498b3 +PT=9250468961c14a72b52cb96cc170e755 +CT=8b2c5d5411e8851c25a0357082b6cdcd + +I=231 +KEY=4d84a1edce65db64bc2f0fbfe39bef19064234d2feddcc3e +PT=8b2c5d5411e8851c25a0357082b6cdcd +CT=26d97c71ac15211d739106f06eda2090 + +I=232 +KEY=6b5ddd9c6270fa79cfbe094f8d41cf89856f953b758f04f1 +PT=26d97c71ac15211d739106f06eda2090 +CT=4c9ddd3ccbb811d942596ce8ba82de80 + +I=233 +KEY=27c000a0a9c8eba08de765a737c31109460021f35703fd9d +PT=4c9ddd3ccbb811d942596ce8ba82de80 +CT=00b167914b7d82cdd9a933aadd31732b + +I=234 +KEY=27716731e2b5696d544e560deaf262227ce56a73766d1142 +PT=00b167914b7d82cdd9a933aadd31732b +CT=0ef95f2ba6c24765c97737b30d789fc5 + +I=235 +KEY=2988381a44772e089d3961bee78afde74b59e1005f57b807 +PT=0ef95f2ba6c24765c97737b30d789fc5 +CT=8d7950207b9bae36990eabb816fdf00b + +I=236 +KEY=a4f1683a3fec803e0437ca06f1770dec91d453ee032226fb +PT=8d7950207b9bae36990eabb816fdf00b +CT=7be3b3e0f61c4d6de7d36763ecc41e82 + +I=237 +KEY=df12dbdac9f0cd53e3e4ad651db3136eeb591d956a921b82 +PT=7be3b3e0f61c4d6de7d36763ecc41e82 +CT=21700c21d04910a5c5c28f596dd6dfdf + +I=238 +KEY=fe62d7fb19b9ddf62626223c7065ccb139267d28f846eb59 +PT=21700c21d04910a5c5c28f596dd6dfdf +CT=de33a1ed1f68960dbce5a9811d39e78b + +I=239 +KEY=2051761606d14bfb9ac38bbd6d5c2b3a04f88bbff2f86621 +PT=de33a1ed1f68960dbce5a9811d39e78b +CT=beed462a78ddda7a7643be6aa073ffdc + +I=240 +KEY=9ebc303c7e0c9181ec8035d7cd2fd4e6dd857898277ae280 +PT=beed462a78ddda7a7643be6aa073ffdc +CT=8df7ec9a7b7a416d3946e40e107f517a + +I=241 +KEY=134bdca60576d0ecd5c6d1d9dd50859c7e676d6d9f78af9c +PT=8df7ec9a7b7a416d3946e40e107f517a +CT=821510bc602c35b4b932769214c29492 + +I=242 +KEY=915ecc1a655ae5586cf4a74bc992110e952042a686f256c3 +PT=821510bc602c35b4b932769214c29492 +CT=60de3af7e6d8ad49c58ac49cdca17654 + +I=243 +KEY=f180f6ed83824811a97e63d71533675a0847deb5b454c3d3 +PT=60de3af7e6d8ad49c58ac49cdca17654 +CT=e71c5ebb9fce57f032160f689ca20673 + +I=244 +KEY=169ca8561c4c1fe19b686cbf89916129bd9891078478168f +PT=e71c5ebb9fce57f032160f689ca20673 +CT=db9179d9e47c984665c7796443da72f9 + +I=245 +KEY=cd0dd18ff83087a7feaf15dbca4b13d08d55b5ec0777753b +PT=db9179d9e47c984665c7796443da72f9 +CT=44fb8aa1f85a7112f785c400bd39b040 + +I=246 +KEY=89f65b2e006af6b5092ad1db7772a390016d27b6d4af89a1 +PT=44fb8aa1f85a7112f785c400bd39b040 +CT=6e8815716997ee852917ee93e92f6276 + +I=247 +KEY=e77e4e5f69fd1830203d3f489e5dc1e6c0a073572a54339d +PT=6e8815716997ee852917ee93e92f6276 +CT=21706759dd23bf5bd9c5fbbc747d731b + +I=248 +KEY=c60e2906b4dea76bf9f8c4f4ea20b2fd61888ffc35d285ef +PT=21706759dd23bf5bd9c5fbbc747d731b +CT=2cf9573018096d27b7f6fa66d669e54b + +I=249 +KEY=eaf77e36acd7ca4c4e0e3e923c4957b60192452037fa7065 +PT=2cf9573018096d27b7f6fa66d669e54b +CT=b24614d1e06e13fc47a401f275003f6f + +I=250 +KEY=58b16ae74cb9d9b009aa3f60494968d9ec2d24a4eb3288fb +PT=b24614d1e06e13fc47a401f275003f6f +CT=23aeceba739752d03bacc1e5a3632334 + +I=251 +KEY=7b1fa45d3f2e8b603206fe85ea2a4bed9dca7eb6e38efd92 +PT=23aeceba739752d03bacc1e5a3632334 +CT=a946c3b4e91332d40a0521a51dfa850f + +I=252 +KEY=d25967e9d63db9b43803df20f7d0cee262614dcbe151f496 +PT=a946c3b4e91332d40a0521a51dfa850f +CT=5ffa97420aabe91df33fcad992526665 + +I=253 +KEY=8da3f0abdc9650a9cb3c15f96582a887818a31afe4741b9c +PT=5ffa97420aabe91df33fcad992526665 +CT=b6b880200205149f3a8c10725731c605 + +I=254 +KEY=3b1b708bde934436f1b0058b32b36e82d2a099fec719e16b +PT=b6b880200205149f3a8c10725731c605 +CT=080dd63e728c8dc82706446182f1a150 + +I=255 +KEY=3316a6b5ac1fc9fed6b641eab042cfd2ba5ffbf164988862 +PT=080dd63e728c8dc82706446182f1a150 +CT=b48baa096ccb5677852e0d0f01135d44 + +I=256 +KEY=879d0cbcc0d49f8953984ce5b1519296b118757af7cb02b7 +PT=b48baa096ccb5677852e0d0f01135d44 +CT=7406b50b442efcdf15c20969f1b902b6 + +I=257 +KEY=f39bb9b784fa6356465a458c40e89020bb6e355e28bb8822 +PT=7406b50b442efcdf15c20969f1b902b6 +CT=a73d95e16004c34bc64966e205d69d83 + +I=258 +KEY=54a62c56e4fea01d8013236e453e0da3392959a2143b5650 +PT=a73d95e16004c34bc64966e205d69d83 +CT=135b53a5dc75fc4c11b84356fe16149c + +I=259 +KEY=47fd7ff3388b5c5191ab6038bb28193fb21b40c6d6c5f575 +PT=135b53a5dc75fc4c11b84356fe16149c +CT=b154a43a5b325c262842c1ad0eb17cba + +I=260 +KEY=f6a9dbc963b90077b9e9a195b5996585ba3bd467aa77f59c +PT=b154a43a5b325c262842c1ad0eb17cba +CT=e7f43bafd05815c93294c8dd8da22a87 + +I=261 +KEY=115de066b3e115be8b7d6948383b4f02e2d7ee7c1ecdb6f0 +PT=e7f43bafd05815c93294c8dd8da22a87 +CT=503114f4306f2fd788c8b50f3fb8faea + +I=262 +KEY=416cf492838e3a6903b5dc470783b5e8008c1eb3db390223 +PT=503114f4306f2fd788c8b50f3fb8faea +CT=a56e7bb855246cfb27ecbfa9a3e6e215 + +I=263 +KEY=e4028f2ad6aa5692245963eea46557fd33208fdde453406f +PT=a56e7bb855246cfb27ecbfa9a3e6e215 +CT=10b90673c3de683684f34503c833e3b6 + +I=264 +KEY=f4bb895915743ea4a0aa26ed6c56b44b0357f4482b7536c1 +PT=10b90673c3de683684f34503c833e3b6 +CT=537886c90b014092a75ccc50d8f4bb0a + +I=265 +KEY=a7c30f901e757e3607f6eabdb4a20f41d06f0e28de7d6666 +PT=537886c90b014092a75ccc50d8f4bb0a +CT=7cc8ce1864a8267885f6ea1a4710c930 + +I=266 +KEY=db0bc1887add584e820000a7f3b2c6713be5b5548718f8c8 +PT=7cc8ce1864a8267885f6ea1a4710c930 +CT=17972621fe5daea0b8822aaa9c093822 + +I=267 +KEY=cc9ce7a98480f6ee3a822a0d6fbbfe5370a6181b5b673344 +PT=17972621fe5daea0b8822aaa9c093822 +CT=7ac6bd89babad8a55672409c0090ca12 + +I=268 +KEY=b65a5a203e3a2e4b6cf06a916f2b3441cac89abb15c4a9c3 +PT=7ac6bd89babad8a55672409c0090ca12 +CT=98687e643cc26bc5513636030e88ba29 + +I=269 +KEY=2e32244402f8458e3dc65c9261a38e682b9b7f5f569aa526 +PT=98687e643cc26bc5513636030e88ba29 +CT=ebd85639b34cebb7ee883a6122cc2faf + +I=270 +KEY=c5ea727db1b4ae39d34e66f3436fa1c7582ecbf1ef5222f9 +PT=ebd85639b34cebb7ee883a6122cc2faf +CT=13c893f59d4d34399eb09ba7707bee61 + +I=271 +KEY=d622e1882cf99a004dfefd5433144fa6d22ac49ac3722ca7 +PT=13c893f59d4d34399eb09ba7707bee61 +CT=7013f0f757803d01a5fbe993c731625c + +I=272 +KEY=a631117f7b79a701e80514c7f4252dfa4175203c872a48fa +PT=7013f0f757803d01a5fbe993c731625c +CT=9a82e5797e7241df9b06857dfa0deec8 + +I=273 +KEY=3cb3f406050be6de730391ba0e28c332afd1457b9af89dcf +PT=9a82e5797e7241df9b06857dfa0deec8 +CT=65c6d1954ec5a0388a894340ca0a5d96 + +I=274 +KEY=597525934bce46e6f98ad2fac4229ea427b18d461ab08e96 +PT=65c6d1954ec5a0388a894340ca0a5d96 +CT=2c02b14865b6790a4356837ad300d64d + +I=275 +KEY=757794db2e783fecbadc5180172248e978a98695c30a8db4 +PT=2c02b14865b6790a4356837ad300d64d +CT=a5ffb67f7f473ebb4638546b24ed61bd + +I=276 +KEY=d08822a4513f0157fce405eb33cf2954a0d278f8f21be158 +PT=a5ffb67f7f473ebb4638546b24ed61bd +CT=184f4f6acaf604f4c0be8b3f81c60e61 + +I=277 +KEY=c8c76dce9bc905a33c5a8ed4b209273531af07ce23c884e2 +PT=184f4f6acaf604f4c0be8b3f81c60e61 +CT=d312bd4a813d76e8552abb27b07111ac + +I=278 +KEY=1bd5d0841af4734b697035f302783699ebb99288eed52f76 +PT=d312bd4a813d76e8552abb27b07111ac +CT=1411db09476b37e6fe4c9bfe3c098ec0 + +I=279 +KEY=0fc40b8d5d9f44ad973cae0d3e71b859dddcdb8c1d31ab05 +PT=1411db09476b37e6fe4c9bfe3c098ec0 +CT=4021241e00ca55020b1a61bcac5b1f07 + +I=280 +KEY=4fe52f935d5511af9c26cfb1922aa75eba7ef3ff8575f837 +PT=4021241e00ca55020b1a61bcac5b1f07 +CT=17ade995e83426aeeb5dd1ed33472cee + +I=281 +KEY=5848c606b5613701777b1e5ca16d8bb00df5e23a0451ac01 +PT=17ade995e83426aeeb5dd1ed33472cee +CT=72964810219be3690ec41678baec4c5e + +I=282 +KEY=2ade8e1694fad46879bf08241b81c7ee0d3fa7e912a08516 +PT=72964810219be3690ec41678baec4c5e +CT=89600918cc2bb680209dacb268d4a68c + +I=283 +KEY=a3be870e58d162e85922a4967355616225eda85be07c394d +PT=89600918cc2bb680209dacb268d4a68c +CT=2aadff88072a169c973139fe98d9ace2 + +I=284 +KEY=891378865ffb7474ce139d68eb8ccd80c15b5b52895445e7 +PT=2aadff88072a169c973139fe98d9ace2 +CT=374ca2a8a173f99816530588eb4f8b1b + +I=285 +KEY=be5fda2efe888decd84098e000c3469b873948d86015d44b +PT=374ca2a8a173f99816530588eb4f8b1b +CT=89458cf02b47ea7ad7660637c363a3fe + +I=286 +KEY=371a56ded5cf67960f269ed7c3a0e565d3e6ffe6b466cde3 +PT=89458cf02b47ea7ad7660637c363a3fe +CT=1922e71764ba0239ba6bcadcb50f0691 + +I=287 +KEY=2e38b1c9b17565afb54d540b76afe3f40a54da79d887eece +PT=1922e71764ba0239ba6bcadcb50f0691 +CT=21823f2773b95971c5fd38235ad1ee4a + +I=288 +KEY=0fba8eeec2cc3cde70b06c282c7e0dbe5c02c12332cf4ef4 +PT=21823f2773b95971c5fd38235ad1ee4a +CT=beaca5073152991761fb04a8f625aa3a + +I=289 +KEY=b1162be9f39ea5c9114b6880da5ba78489ab8de263c2b1f7 +PT=beaca5073152991761fb04a8f625aa3a +CT=e6249c3d62f212829885d1a0c7b104a3 + +I=290 +KEY=5732b7d4916cb74b89ceb9201deaa3275609d0ed2c59910e +PT=e6249c3d62f212829885d1a0c7b104a3 +CT=662b2626d865e2c65b6293433ed5a6b2 + +I=291 +KEY=311991f24909558dd2ac2a63233f05951cf5f9b30afbc09a +PT=662b2626d865e2c65b6293433ed5a6b2 +CT=1526aa05d63553a95d9c1704dbc3ebaf + +I=292 +KEY=243f3bf79f3c06248f303d67f8fcee3ac7f7acf0813ba468 +PT=1526aa05d63553a95d9c1704dbc3ebaf +CT=6bcd61516c533071653ec0d89f9d0417 + +I=293 +KEY=4ff25aa6f36f3655ea0efdbf6761ea2ddf97a38ddf39b94e +PT=6bcd61516c533071653ec0d89f9d0417 +CT=fb8c67c40814b33c791a3710d10d989d + +I=294 +KEY=b47e3d62fb7b85699314caafb66c72b0ae6d6e49c904e237 +PT=fb8c67c40814b33c791a3710d10d989d +CT=e60b7efd14d66da4cbc5d95edaeeb1fd + +I=295 +KEY=5275439fefade8cd58d113f16c82c34d64f281dec99b71be +PT=e60b7efd14d66da4cbc5d95edaeeb1fd +CT=e3a8fdab5bf23e80b62301bf2522a962 + +I=296 +KEY=b1ddbe34b45fd64deef2124e49a06a2f83a7c9ef53f91b51 +PT=e3a8fdab5bf23e80b62301bf2522a962 +CT=b2bc44429a49382a9f87a417aef28367 + +I=297 +KEY=0361fa762e16ee677175b659e752e94865e6448c3b90e28a +PT=b2bc44429a49382a9f87a417aef28367 +CT=04da509113279d7ec5ddb4c655082783 + +I=298 +KEY=07bbaae73d317319b4a8029fb25acecbd397f82a4d33082e +PT=04da509113279d7ec5ddb4c655082783 +CT=75b955abdb9effc7ed098be8aea283f1 + +I=299 +KEY=7202ff4ce6af8cde59a189771cf84d3af0d9bd7250327442 +PT=75b955abdb9effc7ed098be8aea283f1 +CT=fd2078e4b9da1ec1535fc1ab887c9335 + +I=300 +KEY=8f2287a85f75921f0afe48dc9484de0f1dd2078223de53f8 +PT=fd2078e4b9da1ec1535fc1ab887c9335 +CT=3da9fd55aecdcb6cbe4d7011e44c6d01 + +I=301 +KEY=b28b7afdf1b85973b4b338cd70c8b30eb6cded83eecf0bc7 +PT=3da9fd55aecdcb6cbe4d7011e44c6d01 +CT=da1f2713098ea752d04d6d16eb4284ff + +I=302 +KEY=68945deef836fe2164fe55db9b8a37f16e4569920fdba489 +PT=da1f2713098ea752d04d6d16eb4284ff +CT=cd4129d8b2788082c3f5e2cb35d3e0a6 + +I=303 +KEY=a5d574364a4e7ea3a70bb710ae59d757e79d8115a1b43833 +PT=cd4129d8b2788082c3f5e2cb35d3e0a6 +CT=9c468a3869770cf374161c71ef23ec5d + +I=304 +KEY=3993fe0e23397250d31dab61417a3b0a43c40fe6ebc47fa7 +PT=9c468a3869770cf374161c71ef23ec5d +CT=c83e0d24a366b0287529727a18e801da + +I=305 +KEY=f1adf32a805fc278a634d91b59923ad074586aa6db6315e5 +PT=c83e0d24a366b0287529727a18e801da +CT=3bf96153819780fcca826f076f22b00b + +I=306 +KEY=ca54927901c842846cb6b61c36b08adbf86959c09b7d3660 +PT=3bf96153819780fcca826f076f22b00b +CT=d7ddc016284f865f29571ac67758bb1d + +I=307 +KEY=1d89526f2987c4db45e1acda41e831c628ff6f963750f41b +PT=d7ddc016284f865f29571ac67758bb1d +CT=5de54d6bc8f1fe5d0fb5b97354acb3c9 + +I=308 +KEY=406c1f04e1763a864a5415a91544820f386fe1e18ff36763 +PT=5de54d6bc8f1fe5d0fb5b97354acb3c9 +CT=e33b7b9683cf8d95858da48a47866599 + +I=309 +KEY=a357649262b9b713cfd9b12352c2e796b25a0f43eef89516 +PT=e33b7b9683cf8d95858da48a47866599 +CT=be52a4a81242b8ed447946617eb88faf + +I=310 +KEY=1d05c03a70fb0ffe8ba0f7422c7a6839b81aa039056aa7b5 +PT=be52a4a81242b8ed447946617eb88faf +CT=91d84e4d1badbf657821d6cc5af92621 + +I=311 +KEY=8cdd8e776b56b09bf381218e76834e187da9974e70f67883 +PT=91d84e4d1badbf657821d6cc5af92621 +CT=0cd45fce6e00cb8a62b4e92fbca62651 + +I=312 +KEY=8009d1b905567b119135c8a1ca256849bbbeab29a2a72da3 +PT=0cd45fce6e00cb8a62b4e92fbca62651 +CT=c3c16359a191396606c0b035c6c44cfe + +I=313 +KEY=43c8b2e0a4c7427797f578940ce124b70b38ee16789576ee +PT=c3c16359a191396606c0b035c6c44cfe +CT=fcb08f04fba7e92ebeb5e294be7a446c + +I=314 +KEY=bf783de45f60ab5929409a00b29b60db522b5a282ba0af52 +PT=fcb08f04fba7e92ebeb5e294be7a446c +CT=2185c0f7e04611c41b2bf5ca4dab49f8 + +I=315 +KEY=9efdfd13bf26ba9d326b6fcaff30292332db6d0bc245650d +PT=2185c0f7e04611c41b2bf5ca4dab49f8 +CT=412de0c8ea68badf80051db1be0786af + +I=316 +KEY=dfd01ddb554e0042b26e727b4137af8cfd00588fce3e1160 +PT=412de0c8ea68badf80051db1be0786af +CT=1934a9694a82aa1a99225d33365e3fb7 + +I=317 +KEY=c6e4b4b21fccaa582b4c2f487769903b07b9b3b32cb9edc9 +PT=1934a9694a82aa1a99225d33365e3fb7 +CT=d2a80a4fe2248c1bbbea2b1cf8695343 + +I=318 +KEY=144cbefdfde8264390a604548f00c37810fb47942c0402ff +PT=d2a80a4fe2248c1bbbea2b1cf8695343 +CT=11a365080acd63e5cda1fb78235b12a7 + +I=319 +KEY=05efdbf5f72545a65d07ff2cac5bd1df5bdf4b359e03159d +PT=11a365080acd63e5cda1fb78235b12a7 +CT=0401618a394feac446a4d7c5357405de + +I=320 +KEY=01eeba7fce6aaf621ba328e9992fd401f392f254a94cc092 +PT=0401618a394feac446a4d7c5357405de +CT=f70371b1986464cf3dc6a8db0cc979bd + +I=321 +KEY=f6edcbce560ecbad2665803295e6adbc565629d8b80db754 +PT=f70371b1986464cf3dc6a8db0cc979bd +CT=e841805b36bea6d504415ea70f1edad8 + +I=322 +KEY=1eac4b9560b06d782224de959af8776438b8a0ad040c5f51 +PT=e841805b36bea6d504415ea70f1edad8 +CT=7a3158b1fc19dec2f26d1ee95e81f22f + +I=323 +KEY=649d13249ca9b3bad049c07cc479854bc46bb9c4f312da22 +PT=7a3158b1fc19dec2f26d1ee95e81f22f +CT=d9a03e92d7e2a3e672451197fe68e66d + +I=324 +KEY=bd3d2db64b4b105ca20cd1eb3a116326b516a0b29a8bb07c +PT=d9a03e92d7e2a3e672451197fe68e66d +CT=b44737b140c20b781755c41872c39ec6 + +I=325 +KEY=097a1a070b891b24b55915f348d2fde0a307af79e580da82 +PT=b44737b140c20b781755c41872c39ec6 +CT=0cd7042434ceaa91dfad3c61cbc737b6 + +I=326 +KEY=05ad1e233f47b1b56af429928315ca56068ffe4404299686 +PT=0cd7042434ceaa91dfad3c61cbc737b6 +CT=772d0999713cd5c7c85096c8afe60591 + +I=327 +KEY=728017ba4e7b6472a2a4bf5a2cf3cfc7291e1176306b343e +PT=772d0999713cd5c7c85096c8afe60591 +CT=8011696b913f7d11f81916e1eb2a1b08 + +I=328 +KEY=f2917ed1df4419635abda9bbc7d9d4cfff894d4184c88f5e +PT=8011696b913f7d11f81916e1eb2a1b08 +CT=47751d401feaed870ff0f409a1e4133f + +I=329 +KEY=b5e46391c0aef4e4554d5db2663dc7f03603bb44f560bef3 +PT=47751d401feaed870ff0f409a1e4133f +CT=752ab268c5cc040adf05ffe3e80a19cc + +I=330 +KEY=c0ced1f90562f0ee8a48a2518e37de3c3bde337345b422aa +PT=752ab268c5cc040adf05ffe3e80a19cc +CT=237de9280a4a38d90d48f87283cd6c8c + +I=331 +KEY=e3b338d10f28c83787005a230dfab2b0c6fc21f86e7242d6 +PT=237de9280a4a38d90d48f87283cd6c8c +CT=4d1015b6a406aa1a5b49cbcf6b6eb054 + +I=332 +KEY=aea32d67ab2e622ddc4991ec669402e4af2c7035421dbd5d +PT=4d1015b6a406aa1a5b49cbcf6b6eb054 +CT=37a58ce4a460fc533ca2aa6a94087435 + +I=333 +KEY=9906a1830f4e9e7ee0eb3b86f29c76d1d4fe1a08e4959399 +PT=37a58ce4a460fc533ca2aa6a94087435 +CT=579ed056569ee8a645b4d3b7436493a5 + +I=334 +KEY=ce9871d559d076d8a55fe831b1f8e5740e242134203d13a3 +PT=579ed056569ee8a645b4d3b7436493a5 +CT=e3e21bc5c720a98409610076f2834e6c + +I=335 +KEY=2d7a6a109ef0df5cac3ee847437bab18a92e02b57972a3ce +PT=e3e21bc5c720a98409610076f2834e6c +CT=dbb6145158a35958a5f0699bac83098e + +I=336 +KEY=f6cc7e41c653860409ce81dceff8a296ed4b7801adc5fd5d +PT=dbb6145158a35958a5f0699bac83098e +CT=e7fa8851f06ee660d001b615fdce8576 + +I=337 +KEY=1136f610363d6064d9cf37c9123627e01991c4c1162af4d0 +PT=e7fa8851f06ee660d001b615fdce8576 +CT=c4660150238e0bc7b5e0670062e8c08b + +I=338 +KEY=d550f74015b36ba36c2f50c970dee76ba2d8f269521d0bd5 +PT=c4660150238e0bc7b5e0670062e8c08b +CT=08e1f6e7a919e603fd4793647ce7a237 + +I=339 +KEY=ddb101a7bcaa8da09168c3ad0c39455c19fbf67f2f6f364b +PT=08e1f6e7a919e603fd4793647ce7a237 +CT=982b3af59998f48741d28ae0a63bf33b + +I=340 +KEY=459a3b5225327927d0ba494daa02b6677aaea3abaee33c10 +PT=982b3af59998f48741d28ae0a63bf33b +CT=adc9163437b5a73a8c83a5802057a589 + +I=341 +KEY=e8532d661287de1d5c39eccd8a5513ee6ea1a219b2adf74e +PT=adc9163437b5a73a8c83a5802057a589 +CT=2246ded6d244a32da711433066964ed2 + +I=342 +KEY=ca15f3b0c0c37d30fb28affdecc35d3cedbb8d47649a9cdf +PT=2246ded6d244a32da711433066964ed2 +CT=cc60e691da29db5276d95dac02535abc + +I=343 +KEY=067515211aeaa6628df1f251ee9007808d9baa33fdc34830 +PT=cc60e691da29db5276d95dac02535abc +CT=f7fde1cc5e2a4f343d58750fd77fa37c + +I=344 +KEY=f188f4ed44c0e956b0a9875e39efa4fcae7ce79f0ac4c83d +PT=f7fde1cc5e2a4f343d58750fd77fa37c +CT=cd06eaf54bdb1e5bfbe43417d8633a48 + +I=345 +KEY=3c8e1e180f1bf70d4b4db349e18c9eb4c61c676fd6489fb0 +PT=cd06eaf54bdb1e5bfbe43417d8633a48 +CT=1f886a92d35f9c29218691ac3af6649a + +I=346 +KEY=2306748adc446b246acb22e5db7afa2ea0765bd3e31304f1 +PT=1f886a92d35f9c29218691ac3af6649a +CT=f84048d0307c69cb1f1c661ddbf720c9 + +I=347 +KEY=db463c5aec3802ef75d744f8008ddae70fbc0c06c4a84adf +PT=f84048d0307c69cb1f1c661ddbf720c9 +CT=8094e1149e86d5e92ea8890998e5437e + +I=348 +KEY=5bd2dd4e72bed7065b7fcdf198689999de08e842f4a2f803 +PT=8094e1149e86d5e92ea8890998e5437e +CT=d8525cf55d9ce4c4ee852ed05ada315d + +I=349 +KEY=838081bb2f2233c2b5fae321c2b2a8c48279ea2b5a7717ac +PT=d8525cf55d9ce4c4ee852ed05ada315d +CT=0c03a556a84a7e1c57b188933b035fab + +I=350 +KEY=8f8324ed87684ddee24b6bb2f9b1f76fd4c761955e1da7ff +PT=0c03a556a84a7e1c57b188933b035fab +CT=14626491a3f4243bdcbc1d6731539ec0 + +I=351 +KEY=9be1407c249c69e53ef776d5c8e269af4f58a376f7563f64 +PT=14626491a3f4243bdcbc1d6731539ec0 +CT=462a5df3c9b00fcb7d1ba773aa634fa0 + +I=352 +KEY=ddcb1d8fed2c662e43ecd1a66281260f89df1ba537b77f71 +PT=462a5df3c9b00fcb7d1ba773aa634fa0 +CT=c7e475f30c7c4ed482635bf887b0e4bd + +I=353 +KEY=1a2f687ce15028fac18f8a5ee531c2b246362864792e9b79 +PT=c7e475f30c7c4ed482635bf887b0e4bd +CT=7f1a45415c14d4cfe3d5f72a53ed8fe0 + +I=354 +KEY=65352d3dbd44fc35225a7d74b6dc4d520a4ab7d7e0022baa +PT=7f1a45415c14d4cfe3d5f72a53ed8fe0 +CT=7f519ecdc545a7da41432dd828ad4712 + +I=355 +KEY=1a64b3f078015bef631950ac9e710a4063261742cbf4019b +PT=7f519ecdc545a7da41432dd828ad4712 +CT=77b57823a6d0172fd907c1b59dcda7d6 + +I=356 +KEY=6dd1cbd3ded14cc0ba1e911903bcad96f2c4a49a7bec1107 +PT=77b57823a6d0172fd907c1b59dcda7d6 +CT=256d9a17db775175133e067a5959b8c6 + +I=357 +KEY=48bc51c405a61db5a92097635ae51550389f923887b8b608 +PT=256d9a17db775175133e067a5959b8c6 +CT=eb2498ad3e833a3759ba07027f87ecbd + +I=358 +KEY=a398c9693b252782f09a90612562f9edf5aa2aab2a7f4fa0 +PT=eb2498ad3e833a3759ba07027f87ecbd +CT=0e95de975a800dacfd41911740111d07 + +I=359 +KEY=ad0d17fe61a52a2e0ddb01766573e4ea1f91414e86da5820 +PT=0e95de975a800dacfd41911740111d07 +CT=3a86b6a5168faa2b516fb18de1efc476 + +I=360 +KEY=978ba15b772a80055cb4b0fb849c209cf60ecbe54019be5b +PT=3a86b6a5168faa2b516fb18de1efc476 +CT=49ce25e060cb2076ebb183bf5c7ae029 + +I=361 +KEY=de4584bb17e1a073b7053344d8e6c0b5022a0f9d4caf78a3 +PT=49ce25e060cb2076ebb183bf5c7ae029 +CT=e5df7511808dd10327304a83380349e0 + +I=362 +KEY=3b9af1aa976c7170903579c7e0e5895597ff90310c856cd7 +PT=e5df7511808dd10327304a83380349e0 +CT=41d2fa5f79363fbac1e5c322c7093893 + +I=363 +KEY=7a480bf5ee5a4eca51d0bae527ecb1c6163ec44ed4ded771 +PT=41d2fa5f79363fbac1e5c322c7093893 +CT=d6f325ab115777196581735d5864b598 + +I=364 +KEY=acbb2e5eff0d39d33451c9b87f88045e48d7a4e35cecdbe4 +PT=d6f325ab115777196581735d5864b598 +CT=049240559ce87f13870ea8de2b567b8f + +I=365 +KEY=a8296e0b63e546c0b35f616654de7fd17102f2683e33de60 +PT=049240559ce87f13870ea8de2b567b8f +CT=777801517fa7e25829235555e803c63d + +I=366 +KEY=df516f5a1c42a4989a7c3433bcddb9ec8e8fb8d01880bf58 +PT=777801517fa7e25829235555e803c63d +CT=bf93b326b0f0b6db6fb0208b814d8743 + +I=367 +KEY=60c2dc7cacb21243f5cc14b83d903eaf8c2fc5df853888e6 +PT=bf93b326b0f0b6db6fb0208b814d8743 +CT=bcc3df16b19c9cf20dfb98b65be69044 + +I=368 +KEY=dc01036a1d2e8eb1f8378c0e6676aeeb2dd2ae8d5748021b +PT=bcc3df16b19c9cf20dfb98b65be69044 +CT=075d4a07dc5c97477372b955ccb175d3 + +I=369 +KEY=db5c496dc17219f68b45355baac7db38f07ba9d64d18a701 +PT=075d4a07dc5c97477372b955ccb175d3 +CT=e58af13396f107529b9ffb923b46de80 + +I=370 +KEY=3ed6b85e57831ea410dacec9918105b8e85bf5017bb74cc9 +PT=e58af13396f107529b9ffb923b46de80 +CT=5495642d5084e8166d822bae43ccf4c9 + +I=371 +KEY=6a43dc730707f6b27d58e567d24df171ad301ee47b78bb0e +PT=5495642d5084e8166d822bae43ccf4c9 +CT=aa6505eba58e0fc4fb067a247a63cbf7 + +I=372 +KEY=c026d998a289f976865e9f43a82e3a86e418b76614d435ce +PT=aa6505eba58e0fc4fb067a247a63cbf7 +CT=b0fbea7a9740f4ed8fbdf315f40d38e3 + +I=373 +KEY=70dd33e235c90d9b09e36c565c230265e1efb3201e636b3e +PT=b0fbea7a9740f4ed8fbdf315f40d38e3 +CT=e04393b3b9e7eff5f8f377f95f6dc80b + +I=374 +KEY=909ea0518c2ee26ef1101baf034eca6eb1c74aec5c4c2aed +PT=e04393b3b9e7eff5f8f377f95f6dc80b +CT=13b5fcdb7d16b4a1965fa14be10ee9eb + +I=375 +KEY=832b5c8af13856cf674fbae4e2402385d0350883da3149e8 +PT=13b5fcdb7d16b4a1965fa14be10ee9eb +CT=d2dd8eef977d1515d809ec1c419c69e1 + +I=376 +KEY=51f6d265664543dabf4656f8a3dc4a6420a3cec95d3d8155 +PT=d2dd8eef977d1515d809ec1c419c69e1 +CT=9407c40bc233ae5df16d76d9cd80e050 + +I=377 +KEY=c5f1166ea476ed874e2b20216e5caa345770ff73b25816eb +PT=9407c40bc233ae5df16d76d9cd80e050 +CT=65d5e1dbfcae689f791c6b1253698d82 + +I=378 +KEY=a024f7b558d8851837374b333d3527b6d1f5bc52c6422799 +PT=65d5e1dbfcae689f791c6b1253698d82 +CT=f2d4f4cf2358ed7181e6c745b41e548f + +I=379 +KEY=52f0037a7b806869b6d18c76892b73393a3706ee39b24d7e +PT=f2d4f4cf2358ed7181e6c745b41e548f +CT=10318a48e2408ddca103ff6b558b550b + +I=380 +KEY=42c1893299c0e5b517d2731ddca02632aae98a01e4b0be5d +PT=10318a48e2408ddca103ff6b558b550b +CT=5b554ce660149b20b17aed5701f1ce4a + +I=381 +KEY=1994c5d4f9d47e95a6a89e4add51e878aa4d73983ceeeaea +PT=5b554ce660149b20b17aed5701f1ce4a +CT=8249fffaca1cc50c58881b60ddd98bbc + +I=382 +KEY=9bdd3a2e33c8bb99fe20852a008863c44550271563865db0 +PT=8249fffaca1cc50c58881b60ddd98bbc +CT=11d005637b20296e747004987fb396e8 + +I=383 +KEY=8a0d3f4d48e892f78a5081b27f3bf52c6cfbd2944df270be +PT=11d005637b20296e747004987fb396e8 +CT=271660bb6b356c81574ee593e116146e + +I=384 +KEY=ad1b5ff623ddfe76dd1e64219e2de142eb307364c167877a +PT=271660bb6b356c81574ee593e116146e +CT=306d895189b78992ab7ce7726fec383b + +I=385 +KEY=9d76d6a7aa6a77e476628353f1c1d9798c77dc4032059b3b +PT=306d895189b78992ab7ce7726fec383b +CT=d1b4ef0ecd30b97171dcf2e95c75fffc + +I=386 +KEY=4cc239a9675ace9507be71baadb4268589855799b16bd266 +PT=d1b4ef0ecd30b97171dcf2e95c75fffc +CT=d527094dce476b3963384072e1d78ff5 + +I=387 +KEY=99e530e4a91da5ac648631c84c63a970def568a915c58c62 +PT=d527094dce476b3963384072e1d78ff5 +CT=f96f4f139f537b953c21166108023993 + +I=388 +KEY=608a7ff7364ede3958a727a9446190e38815f9858017d388 +PT=f96f4f139f537b953c21166108023993 +CT=81f1c39692d82b0caeb1124f2855d4a8 + +I=389 +KEY=e17bbc61a496f535f61635e66c34444b1907a9c49cc0a9ea +PT=81f1c39692d82b0caeb1124f2855d4a8 +CT=94bd8014af1109c77e0f27d63b21a513 + +I=390 +KEY=75c63c750b87fcf2881912305715e15804e6cbad2acad92e +PT=94bd8014af1109c77e0f27d63b21a513 +CT=c9aec14d4255c627c3bf5650157f0221 + +I=391 +KEY=bc68fd3849d23ad54ba64460426ae37950af5610394cd6dd +PT=c9aec14d4255c627c3bf5650157f0221 +CT=e2968db9a57eaa4db61821b3e15223a1 + +I=392 +KEY=5efe7081ecac9098fdbe65d3a338c0d84f60a5dc192813d1 +PT=e2968db9a57eaa4db61821b3e15223a1 +CT=ab0bc3e5b1d877b382332ff6b82ec5ee + +I=393 +KEY=f5f5b3645d74e72b7f8d4a251b160536aa081d8a85a06deb +PT=ab0bc3e5b1d877b382332ff6b82ec5ee +CT=f538d73e4d3b6a12597a1dedae05f101 + +I=394 +KEY=00cd645a104f8d3926f757c8b513f4370c0bf06a33d2427b +PT=f538d73e4d3b6a12597a1dedae05f101 +CT=f4562cc9a09b4f984e2fa8bac32469c8 + +I=395 +KEY=f49b4893b0d4c2a168d8ff7276379dffd5c39418bf4f8ed9 +PT=f4562cc9a09b4f984e2fa8bac32469c8 +CT=447b89f843213d977cea8830bdabb275 + +I=396 +KEY=b0e0c16bf3f5ff3614327742cb9c2f8acd44f153ba15dd25 +PT=447b89f843213d977cea8830bdabb275 +CT=db9f729492a66963d98ffcf056323169 + +I=397 +KEY=6b7fb3ff61539655cdbd8bb29dae1ee311cc026f7bb7b89b +PT=db9f729492a66963d98ffcf056323169 +CT=ab6ea3c4f8bfda8cf9ca7a32da700982 + +I=398 +KEY=c011103b99ec4cd93477f18047de1761aebc739e4b6d03d7 +PT=ab6ea3c4f8bfda8cf9ca7a32da700982 +CT=4f3ed223d8bd6d8eadd40ad0e4ccc2db + +I=399 +KEY=8f2fc2184151215799a3fb50a312d5ba7ed77fd93001cb21 +PT=4f3ed223d8bd6d8eadd40ad0e4ccc2db +CT=c1450acdf315be20ba808590083a9133 + + +KEYSIZE=256 + +I=0 +KEY=0000000000000000000000000000000000000000000000000000000000000000 +PT=00000000000000000000000000000000 +CT=92efa3ca9477794d31f4df7bce23e60a +test + +I=1 +KEY=92efa3ca9477794d31f4df7bce23e60a6038d2d2710373f04fd30aaecea8aa43 +PT=92efa3ca9477794d31f4df7bce23e60a +CT=41133a29b97e3b4231549e8c2d0af27e + +I=2 +KEY=d3fc99e32d09420f00a041f7e32914747731be4d4e5b5da518c2abe0a1239fa8 +PT=41133a29b97e3b4231549e8c2d0af27e +CT=6ee8edc74dcfefd0c7beaee4cbcbc9c2 + +I=3 +KEY=bd14742460c6addfc71eef1328e2ddb6ba5b8798bb66c3c4d380acb055cac569 +PT=6ee8edc74dcfefd0c7beaee4cbcbc9c2 +CT=59dd509f8b303ce5527d20d33bd16697 + +I=4 +KEY=e4c924bbebf6913a9563cfc01333bb21111e9ef31799d3c078823aaaef34737c +PT=59dd509f8b303ce5527d20d33bd16697 +CT=e7c035318d676702fb9be6802459951a + +I=5 +KEY=0309118a6691f6386ef82940376a2e3b2d3ee89dc91ca6f749d10d3238238153 +PT=e7c035318d676702fb9be6802459951a +CT=5a1074dc10f4fe274aab8518c8bb15e4 + +I=6 +KEY=591965567665081f2453ac58ffd13bdfc76410ad51f56409cf1a649482baf893 +PT=5a1074dc10f4fe274aab8518c8bb15e4 +CT=4c7e1a8243f19bd97cb9e882145a105e + +I=7 +KEY=15677fd4359493c658ea44daeb8b2b81b3df3941bfe44d38bc88b5274f750935 +PT=4c7e1a8243f19bd97cb9e882145a105e +CT=4bb65c15e5244df0a02b94aa1f4aaa8b + +I=8 +KEY=5ed123c1d0b0de36f8c1d070f4c1810af734159d8ea121a5a30a218ddd80967e +PT=4bb65c15e5244df0a02b94aa1f4aaa8b +CT=a36403c836e42a4b74d0fc09473f20e4 + +I=9 +KEY=fdb52009e654f47d8c112c79b3fea1eeef87f34e469a81d732d7d11e959504d7 +PT=a36403c836e42a4b74d0fc09473f20e4 +CT=6dfc624ed0ffca738e8e7fe5f1d61d45 + +I=10 +KEY=9049424736ab3e0e029f539c4228bcab7afe62a46f4116774c6e0f2d88a00771 +PT=6dfc624ed0ffca738e8e7fe5f1d61d45 +CT=f169deeaaab1bfc6f9a2ca3e583b5d4f + +I=11 +KEY=61209cad9c1a81c8fb3d99a21a13e1e4cc1cac4f2a37de18c5c937ee9b6bc713 +PT=f169deeaaab1bfc6f9a2ca3e583b5d4f +CT=815d0e3a77ef5337a59270673c09d40d + +I=12 +KEY=e07d9297ebf5d2ff5eafe9c5261a35e99ca0baa363f27655df1db5a2919671bb +PT=815d0e3a77ef5337a59270673c09d40d +CT=2874cf07ba108771b91505dcf4949762 + +I=13 +KEY=c8095d9051e5558ee7baec19d28ea28bfb0e254718abe256525a97f4cbe30ad9 +PT=2874cf07ba108771b91505dcf4949762 +CT=fea4d56c2ac1c79b53da45aa917f9607 + +I=14 +KEY=36ad88fc7b249215b460a9b343f1348cf69bb7c3b28e8c3a9cb6e438a45d040b +PT=fea4d56c2ac1c79b53da45aa917f9607 +CT=fbe4b4f196ad7b3740b4c1f9fadb52c1 + +I=15 +KEY=cd493c0ded89e922f4d4684ab92a664d854de978325f2aa90c7313571e032ac9 +PT=fbe4b4f196ad7b3740b4c1f9fadb52c1 +CT=6a4943fff86ea592a2fd03c9350c60d5 + +I=16 +KEY=a7007ff215e74cb056296b838c2606984640c551e686d0ce0243948698d36de4 +PT=6a4943fff86ea592a2fd03c9350c60d5 +CT=fc5a85e0908daac2e32992bcddf49dba + +I=17 +KEY=5b5afa12856ae672b500f93f51d29b220fb9da66baf4d12250f670b06f5853d5 +PT=fc5a85e0908daac2e32992bcddf49dba +CT=e5267119a2f68cd5526ae2013ab7ae6f + +I=18 +KEY=be7c8b0b279c6aa7e76a1b3e6b65354d5f2da29dccb02680addd8508eaac8845 +PT=e5267119a2f68cd5526ae2013ab7ae6f +CT=662f1b120cf6e9839ddc63e5b07c95c3 + +I=19 +KEY=d85390192b6a83247ab678dbdb19a08e77d9fe68d31742783cc32fab5b095c6f +PT=662f1b120cf6e9839ddc63e5b07c95c3 +CT=ab036bfb34c30e16b860cd90c59dc805 + +I=20 +KEY=7350fbe21fa98d32c2d6b54b1e84688b87efbe98b57056b8d3b8ee85a8afa8ef +PT=ab036bfb34c30e16b860cd90c59dc805 +CT=9fd9869697d57a14c751342f34bce755 + +I=21 +KEY=ec897d74887cf726058781642a388fdead1061845f43bbc5b561c354d18d5eef +PT=9fd9869697d57a14c751342f34bce755 +CT=cdddb3eb356b5521ad9f3c644f95a9fa + +I=22 +KEY=2154ce9fbd17a207a818bd0065ad262477418f647934ddc8fd50364270600776 +PT=cdddb3eb356b5521ad9f3c644f95a9fa +CT=5582e14a70e3de215ba66a39bcacbb4d + +I=23 +KEY=74d62fd5cdf47c26f3bed739d9019d69d81b437a9fd2c5ed3aae5ee880e0a9ca +PT=5582e14a70e3de215ba66a39bcacbb4d +CT=5cbd85bc573f7af09d62149f8eb56c0f + +I=24 +KEY=286baa699acb06d66edcc3a657b4f1660cabeb3c6bc748bbe4abb025b255a6a3 +PT=5cbd85bc573f7af09d62149f8eb56c0f +CT=5720da64bbe37cabb5d89459ef4412c9 + +I=25 +KEY=7f4b700d21287a7ddb0457ffb8f0e3afe139d1f91c5573cd9b76ab6d1b331462 +PT=5720da64bbe37cabb5d89459ef4412c9 +CT=e11ad77c90c9aee0c9bc3288a8bcce69 + +I=26 +KEY=9e51a771b1e1d49d12b86577104c2dc63d452bf5f517fd11e815f1833f085398 +PT=e11ad77c90c9aee0c9bc3288a8bcce69 +CT=18cd6b0c63acb759857d108cc3fb00a0 + +I=27 +KEY=869ccc7dd24d63c497c575fbd3b72d66e49536f7a3a2c5bc6c3f4af3e6e4dfa8 +PT=18cd6b0c63acb759857d108cc3fb00a0 +CT=d486d72b29e89e2c638e0d7918ac34ca + +I=28 +KEY=521a1b56fba5fde8f44b7882cb1b19acd0ae41f2594d03a737bb0b3ad1ab8171 +PT=d486d72b29e89e2c638e0d7918ac34ca +CT=520701a5d321e456bc74fe73e93b6f56 + +I=29 +KEY=001d1af3288419be483f86f1222076fa194046841a350535049ca81c09bf58e4 +PT=520701a5d321e456bc74fe73e93b6f56 +CT=bcb9c6c618f4eba777a3a40e11c4bfe1 + +I=30 +KEY=bca4dc353070f2193f9c22ff33e4c91b8472ea7287312b8bc9d9adb17d73cd82 +PT=bcb9c6c618f4eba777a3a40e11c4bfe1 +CT=46df63991a0dfc959c2ae42ffaa27fad + +I=31 +KEY=fa7bbfac2a7d0e8ca3b6c6d0c946b6b67b1ae648c43b40a3b4ea8717bfcbb512 +PT=46df63991a0dfc959c2ae42ffaa27fad +CT=fc24bbcce65c4fd68b56c9116511d65e + +I=32 +KEY=065f0460cc21415a28e00fc1ac5760e8d2aea1f969048baa6c8ce3e762073fb5 +PT=fc24bbcce65c4fd68b56c9116511d65e +CT=44a801f5b003a026d1b1f7b44f6c88fa + +I=33 +KEY=42f705957c22e17cf951f875e33be8125f00c4b740983a51464b7321127d8702 +PT=44a801f5b003a026d1b1f7b44f6c88fa +CT=8614518a60ad5f667fa864222f335d27 + +I=34 +KEY=c4e3541f1c8fbe1a86f99c57cc08b535c6694ce4ebb6804894aa86a7e2ab5c16 +PT=8614518a60ad5f667fa864222f335d27 +CT=e1c01896f45867751855e226c6d1a464 + +I=35 +KEY=25234c89e8d7d96f9eac7e710ad91151d1b9ff547acec63023d585ae3e3ae128 +PT=e1c01896f45867751855e226c6d1a464 +CT=d1eb0d7ac6a17c4ff17f5c6b876eb012 + +I=36 +KEY=f4c841f32e76a5206fd3221a8db7a14363e9ce5150563a4ad8dc674fb5799652 +PT=d1eb0d7ac6a17c4ff17f5c6b876eb012 +CT=bd2c852731d1d59311fa29045862b6a4 + +I=37 +KEY=49e4c4d41fa770b37e290b1ed5d517e73debf12254aa0e5d8af0f6e4f3afc023 +PT=bd2c852731d1d59311fa29045862b6a4 +CT=d4a83eb160da23adc0601ff35ecca326 + +I=38 +KEY=9d4cfa657f7d531ebe4914ed8b19b4c124ec037ecdbdbbc4221217772bf64613 +PT=d4a83eb160da23adc0601ff35ecca326 +CT=27ac189c5f76948036c236783a8030ce + +I=39 +KEY=bae0e2f9200bc79e888b2295b199840f85fc651c726ff218c059cd318a95ad54 +PT=27ac189c5f76948036c236783a8030ce +CT=ec8cfdfa2ff0db1ee7e87dd84ba08803 + +I=40 +KEY=566c1f030ffb1c806f635f4dfa390c0c87239bfa76a1a4c563357f50445d423a +PT=ec8cfdfa2ff0db1ee7e87dd84ba08803 +CT=8c7b8e6764278ed996a873b38620bd16 + +I=41 +KEY=da1791646bdc9259f9cb2cfe7c19b11a6b8a922bd723108bad10cf9508b92e40 +PT=8c7b8e6764278ed996a873b38620bd16 +CT=ec146b292b44732228514735a8b481a7 + +I=42 +KEY=3603fa4d4098e17bd19a6bcbd4ad30bd19bb4999d7d4d13df31b9e017b56bb90 +PT=ec146b292b44732228514735a8b481a7 +CT=4179a2c907c25aaa2a084a194d1cc0ad + +I=43 +KEY=777a5884475abbd1fb9221d299b1f01023ae593c56aa8cda6625df3b5c7139dc +PT=4179a2c907c25aaa2a084a194d1cc0ad +CT=f4ae27028f8ccb55593ec7811ed29d53 + +I=44 +KEY=83d47f86c8d67084a2ace65387636d43395dedabccced117e0d272f238118342 +PT=f4ae27028f8ccb55593ec7811ed29d53 +CT=f1d37aeed0a230d9b48b872220907d25 + +I=45 +KEY=720705681874405d16276171a7f31066136d0180049f67b38c38a7242ca4dabf +PT=f1d37aeed0a230d9b48b872220907d25 +CT=658bbe14eb6776ca80e3b6a44f6fc319 + +I=46 +KEY=178cbb7cf313369796c4d7d5e89cd37f710954db477cf53114131f1469323472 +PT=658bbe14eb6776ca80e3b6a44f6fc319 +CT=ffea34c183609a622200942b5f5ea44d + +I=47 +KEY=e8668fbd7073acf5b4c443feb7c2773252774a4eca70caef56195574b126d60e +PT=ffea34c183609a622200942b5f5ea44d +CT=d36623dbaae8142d8d6b695cd94162c6 + +I=48 +KEY=3b00ac66da9bb8d839af2aa26e8315f41c3e9318614320e69e328e6fb41cd8a4 +PT=d36623dbaae8142d8d6b695cd94162c6 +CT=28861c82c1454130224a3b99ae3b12c2 + +I=49 +KEY=1386b0e41bdef9e81be5113bc0b80736b10a0468627fadf9661582114e00c6ef +PT=28861c82c1454130224a3b99ae3b12c2 +CT=7198db98b00fa090fcdd6deee193177c + +I=50 +KEY=621e6b7cabd15978e7387cd5212b104a93004a543383ba90fde55bde17e42c57 +PT=7198db98b00fa090fcdd6deee193177c +CT=3ee41f4b2e79b3b84c917c96dca4a3b5 + +I=51 +KEY=5cfa743785a8eac0aba90043fd8fb3ff4bccb4173d9f87a8a0e46d26d597e9c9 +PT=3ee41f4b2e79b3b84c917c96dca4a3b5 +CT=73a0c6bd9c266db25444cbcad1b12bf2 + +I=52 +KEY=2f5ab28a198e8772ffedcb892c3e980d2ca9432c886a6acb3238d2a1babe7fdd +PT=73a0c6bd9c266db25444cbcad1b12bf2 +CT=e2f033def6691528f14f0b07ef5a706c + +I=53 +KEY=cdaa8154efe7925a0ea2c08ec364e8615a878847d9f12576edb3cc8f99986b4a +PT=e2f033def6691528f14f0b07ef5a706c +CT=75812d9f11fbc711ba9a33506e2babd3 + +I=54 +KEY=b82baccbfe1c554bb438f3dead4f43b2e19c9f89103cd932a318b42c8e217a71 +PT=75812d9f11fbc711ba9a33506e2babd3 +CT=83c201cc3639bcac531778027b941994 + +I=55 +KEY=3be9ad07c825e9e7e72f8bdcd6db5a262e5ddb8e093991db4c91a0d0630e9644 +PT=83c201cc3639bcac531778027b941994 +CT=0ef6f3395bace938dd227d354c3a006d + +I=56 +KEY=351f5e3e938900df3a0df6e99ae15a4bdb018d541edb4762fe6cf3f0c5f3f529 +PT=0ef6f3395bace938dd227d354c3a006d +CT=f91c0685c34f32e50f37b7d124afbca0 + +I=57 +KEY=cc0358bb50c6323a353a4138be4ee6eb27ce31ad039c28fb3b42d0a8ddf48803 +PT=f91c0685c34f32e50f37b7d124afbca0 +CT=0f472d28863c373c1060ae027720df9a + +I=58 +KEY=c3447593d6fa0506255aef3ac96e3971569ee072bf35230230ec3f37f64e7f44 +PT=0f472d28863c373c1060ae027720df9a +CT=551fca2f3b04297585e9d0a87c1e37e6 + +I=59 +KEY=965bbfbcedfe2c73a0b33f92b5700e97eb085aa1bab6ad89dbe4ad2f76650fcb +PT=551fca2f3b04297585e9d0a87c1e37e6 +CT=78d8dc4d5e1ef49a3b2b96c4f17b1481 + +I=60 +KEY=ee8363f1b3e0d8e99b98a956440b1a160e3bc66e129bb34c3f3e0070a2902d18 +PT=78d8dc4d5e1ef49a3b2b96c4f17b1481 +CT=617282d4f4d1e9d4fff50890a7bf9478 + +I=61 +KEY=8ff1e1254731313d646da1c6e3b48e6ec1afe43d0d46c3881445574b641d4aed +PT=617282d4f4d1e9d4fff50890a7bf9478 +CT=20ff429a414cda5fb20dd3cd3de96747 + +I=62 +KEY=af0ea3bf067deb62d660720bde5de929737f15d87939d521e89cf080edbf49dd +PT=20ff429a414cda5fb20dd3cd3de96747 +CT=cda11f42b83eb30db4e7705dcb5810b0 + +I=63 +KEY=62afbcfdbe43586f628702561505f999116fa4fc270acc0e3e729622d9645c27 +PT=cda11f42b83eb30db4e7705dcb5810b0 +CT=c8238b0506044496845a485198f32800 + +I=64 +KEY=aa8c37f8b8471cf9e6dd4a078df6d199cadada637f5fd0460a202c0f5ea8848c +PT=c8238b0506044496845a485198f32800 +CT=7ad4fe9e53b430046e5827ac06a240b1 + +I=65 +KEY=d058c966ebf32cfd88856dab8b549128a68e3e3e338c5000d83db88f26e575a3 +PT=7ad4fe9e53b430046e5827ac06a240b1 +CT=2314986d8483910ccd19b7a261142315 + +I=66 +KEY=f34c510b6f70bdf1459cda09ea40b23d717ac553ee8071c18c94ba43dcfda83c +PT=2314986d8483910ccd19b7a261142315 +CT=8a8e83be9bcd532dc6afe6d2a5cafce0 + +I=67 +KEY=79c2d2b5f4bdeedc83333cdb4f8a4eddae4ad17ce07bfae38ad1b899cb0a68e3 +PT=8a8e83be9bcd532dc6afe6d2a5cafce0 +CT=58f884db2fc03ead07073c6d294df043 + +I=68 +KEY=213a566edb7dd071843400b666c7be9e0e3b827e6b80c7d7f658648e04cb8ce9 +PT=58f884db2fc03ead07073c6d294df043 +CT=ea3e8b93eb09ff4b073283a1c5868f8b + +I=69 +KEY=cb04ddfd30742f3a83068317a3413115518e14c8cbbca84bf26644451c821f30 +PT=ea3e8b93eb09ff4b073283a1c5868f8b +CT=182751f122f9ade6689bca4cc743ff01 + +I=70 +KEY=d3238c0c128d82dceb9d495b6402ce14e7aa1f4d0f5b42476036cfa3f0272cd0 +PT=182751f122f9ade6689bca4cc743ff01 +CT=6a863fadf4d32b7900e3917d017a0bba + +I=71 +KEY=b9a5b3a1e65ea9a5eb7ed8266578c5ae5f64669c7febcfc20f2aac6b9279a550 +PT=6a863fadf4d32b7900e3917d017a0bba +CT=ceee21603dbbbf98c3a18fef9f9c05ad + +I=72 +KEY=774b92c1dbe5163d28df57c9fae4c003c0917a103844bece714fc1a2b0e192c5 +PT=ceee21603dbbbf98c3a18fef9f9c05ad +CT=72bf550c8afa8051d6645c558229793f + +I=73 +KEY=05f4c7cd511f966cfebb0b9c78cdb93c36a967c03817dfa78fa8d340ed97ccb5 +PT=72bf550c8afa8051d6645c558229793f +CT=00426f8a0d76bab4d8f986b812461b6f + +I=74 +KEY=05b6a8475c692cd826428d246a8ba2533fab2a5bd18a8f65038ab159da3de998 +PT=00426f8a0d76bab4d8f986b812461b6f +CT=5857895b2e275c4c21aa0f08b6f0847b + +I=75 +KEY=5de1211c724e709407e8822cdc7b26285be6574eea8e82ceb377c0020cc8e18e +PT=5857895b2e275c4c21aa0f08b6f0847b +CT=119d43336431c86c6d60dd65a5321040 + +I=76 +KEY=4c7c622f167fb8f86a885f497949366878d7d3a45c12e8232114900b83b5c9b3 +PT=119d43336431c86c6d60dd65a5321040 +CT=4d4cccac8f1ad0d9251f6b0c5810c746 + +I=77 +KEY=0130ae83996568214f9734452159f12e2de3430be25b77bdb91f7e0ba73592d7 +PT=4d4cccac8f1ad0d9251f6b0c5810c746 +CT=ae4d9d075b0bced19612be781224aa61 + +I=78 +KEY=af7d3384c26ea6f0d9858a3d337d5b4f718603b5c5231cb183bc1db054710613 +PT=ae4d9d075b0bced19612be781224aa61 +CT=8a2f017888eec9892074d5d2149eb7eb + +I=79 +KEY=255232fc4a806f79f9f15fef27e3eca4d1184edd7c7ec386b43801239313ff81 +PT=8a2f017888eec9892074d5d2149eb7eb +CT=79fa4e37a35283c043f5fd94ed164fd5 + +I=80 +KEY=5ca87ccbe9d2ecb9ba04a27bcaf5a371a89ae67e2d47de868f1351b12f9d42bd +PT=79fa4e37a35283c043f5fd94ed164fd5 +CT=4276afd3caef8c7f66808575f89049f7 + +I=81 +KEY=1eded318233d60c6dc84270e3265ea864455def03ee994257ed7a49c64cea8c0 +PT=4276afd3caef8c7f66808575f89049f7 +CT=0bd19c327ac30fbfddd617b008bb3a95 + +I=82 +KEY=150f4f2a59fe6f79015230be3aded0137e62a5bba2d205e78ab7fd712b0c359c +PT=0bd19c327ac30fbfddd617b008bb3a95 +CT=8ef3147782c24cca466cc3dcc11f8794 + +I=83 +KEY=9bfc5b5ddb3c23b3473ef362fbc157876b5fb7e4f7aa7674dddbf80a4b446315 +PT=8ef3147782c24cca466cc3dcc11f8794 +CT=ed589a41ba09e9be158c19fdc9dd8a4e + +I=84 +KEY=76a4c11c6135ca0d52b2ea9f321cddc9cfe2ce662a534e949e7f6ad4efcfb113 +PT=ed589a41ba09e9be158c19fdc9dd8a4e +CT=8edee0f1736e3fc0bdbec7964a95ced0 + +I=85 +KEY=f87a21ed125bf5cdef0c2d0978891319315566575ef73adb179151cb52ee3a0a +PT=8edee0f1736e3fc0bdbec7964a95ced0 +CT=3214228bec5aa4abe5181db645018e70 + +I=86 +KEY=ca6e0366fe0151660a1430bf3d889d69f3e071a56871db60e0df22fbb8d94457 +PT=3214228bec5aa4abe5181db645018e70 +CT=2b26424d04f1a75b439e4a5a23956478 + +I=87 +KEY=e148412bfaf0f63d498a7ae51e1df9117c6953caef557f2ab827f4ea2d66b722 +PT=2b26424d04f1a75b439e4a5a23956478 +CT=2be6bcfb07f81876079ecbda3a3f4890 + +I=88 +KEY=caaefdd0fd08ee4b4e14b13f2422b18110bb98781b030fccdbb9799b325eed9e +PT=2be6bcfb07f81876079ecbda3a3f4890 +CT=f3b1a2a7b5ac9a1ef9e26a6fdf0ccb32 + +I=89 +KEY=391f5f7748a47455b7f6db50fb2e7ab32358ba12feefc901d0cc1568f5cca032 +PT=f3b1a2a7b5ac9a1ef9e26a6fdf0ccb32 +CT=bdcd719022de99b1ea3f31eb62feb828 + +I=90 +KEY=84d22ee76a7aede45dc9eabb99d0c29bef052ba16de9a3dfbe7f914d5eb63dee +PT=bdcd719022de99b1ea3f31eb62feb828 +CT=5c4d8b09ade9f2c9f1680f15f26238ae + +I=91 +KEY=d89fa5eec7931f2daca1e5ae6bb2fa35536e42a8c771a42a26afe34d92b7ccd8 +PT=5c4d8b09ade9f2c9f1680f15f26238ae +CT=8fc562748df56011248424df43129d6d + +I=92 +KEY=575ac79a4a667f3c8825c17128a06758f7c3632cafb503f59c04cf668a73c902 +PT=8fc562748df56011248424df43129d6d +CT=737da09e6589b44fac83c49be5c0f3ba + +I=93 +KEY=242767042fefcb7324a605eacd6094e2d8455b2af7a3c29d86ecd2440ae4b7ce +PT=737da09e6589b44fac83c49be5c0f3ba +CT=d34632c3fc090bb7b1bec2ed127723fa + +I=94 +KEY=f76155c7d3e6c0c49518c707df17b7184a2606b484287b41210e41befa23d138 +PT=d34632c3fc090bb7b1bec2ed127723fa +CT=50605c5106d4376c1a746cc949185383 + +I=95 +KEY=a7010996d532f7a88f6cabce960fe49baf59769d229011b88cf4afb49970ac31 +PT=50605c5106d4376c1a746cc949185383 +CT=f0a24adeba5cd6f64146bbcc8f81e6a3 + +I=96 +KEY=57a343486f6e215ece2a1002198e0238adc966659090a09439ef4951a1f41beb +PT=f0a24adeba5cd6f64146bbcc8f81e6a3 +CT=cfe126a13a5f58b18cf9cd8e32abcfe6 + +I=97 +KEY=984265e9553179ef42d3dd8c2b25cddef8af5aa0e111b744f867e0bb9c7d05ca +PT=cfe126a13a5f58b18cf9cd8e32abcfe6 +CT=bda0dfbca714e71ab5b3cc37b1cdedb2 + +I=98 +KEY=25e2ba55f2259ef5f76011bb9ae8206c186936ce3daaa6a3ced23fc51f35f8b4 +PT=bda0dfbca714e71ab5b3cc37b1cdedb2 +CT=a28e8947a32c20a570fb5018f3159713 + +I=99 +KEY=876c33125109be50879b41a369fdb77f1c939d8fd3933a22e07a5a6b9a971e0b +PT=a28e8947a32c20a570fb5018f3159713 +CT=9dd2b23ef7c31d191799f9fd272a3286 + +I=100 +KEY=1abe812ca6caa3499002b85e4ed785f96126d7d55b24d76d37d687bc65a89eee +PT=9dd2b23ef7c31d191799f9fd272a3286 +CT=33f2f90388c1c3734cbb874b835fddf6 + +I=101 +KEY=294c782f2e0b603adcb93f15cd88580fd855c35e61eab3dd351eb3f3aac19138 +PT=33f2f90388c1c3734cbb874b835fddf6 +CT=22ae75800ae2ca23b93a774045bc8ccd + +I=102 +KEY=0be20daf24e9aa19658348558834d4c27a4747283a3914cefbfbd204a8aea59e +PT=22ae75800ae2ca23b93a774045bc8ccd +CT=07129162ce3b5e32d8c7c529f44da327 + +I=103 +KEY=0cf09ccdead2f42bbd448d7c7c7977e5e55d1bf881855a704d77ff354659c06c +PT=07129162ce3b5e32d8c7c529f44da327 +CT=a90afc5f53e49ab2130574aa79667504 + +I=104 +KEY=a5fa6092b9366e99ae41f9d6051f02e15568cced4a84541dcfdd49883eddc5fb +PT=a90afc5f53e49ab2130574aa79667504 +CT=06f86329d92bd99a08fa737884142be3 + +I=105 +KEY=a30203bb601db703a6bb8aae810b2902832b47aa941e6f9dcdf4204e8ede8dd8 +PT=06f86329d92bd99a08fa737884142be3 +CT=5bba9d55d045c63ca25aa1758bccf13d + +I=106 +KEY=f8b89eeeb058713f04e12bdb0ac7d83fd5830ed773b94b27f6985b897a47c82e +PT=5bba9d55d045c63ca25aa1758bccf13d +CT=34a91d6d5b91c842549de629656a4a4a + +I=107 +KEY=cc118383ebc9b97d507ccdf26fad9275d9f42dde1f44a8aa875a466170ce7121 +PT=34a91d6d5b91c842549de629656a4a4a +CT=a934d7635d04e43bb7ba8526aedcf617 + +I=108 +KEY=652554e0b6cd5d46e7c648d4c171646233007726a3972afff4cbc5a78fc7fa13 +PT=a934d7635d04e43bb7ba8526aedcf617 +CT=c0b67afe70a6dda933caeeee888e4eb5 + +I=109 +KEY=a5932e1ec66b80efd40ca63a49ff2ad7387a85c2ab747372563b5bb39e272fa3 +PT=c0b67afe70a6dda933caeeee888e4eb5 +CT=c57d547e6e34752a6ee9a51fb6da0f02 + +I=110 +KEY=60ee7a60a85ff5c5bae50325ff2525d56b8f9e9d9dbea9b24f96772b00e1722a +PT=c57d547e6e34752a6ee9a51fb6da0f02 +CT=87da985350c63f98c01548a2e067da67 + +I=111 +KEY=e734e233f899ca5d7af04b871f42ffb2eeb6b771a7c9e1a3f7ad4b3218ba680c +PT=87da985350c63f98c01548a2e067da67 +CT=841ca91b571fcd140cf1441c748c0c15 + +I=112 +KEY=63284b28af86074976010f9b6bcef3a748b0f1684eab559e465fa8bb8cfb1aac +PT=841ca91b571fcd140cf1441c748c0c15 +CT=f3e8b4842c01119d755caffc6edfc367 + +I=113 +KEY=90c0ffac838716d4035da067051130c0428319e05d8a7bae1daee89447ba0b7b +PT=f3e8b4842c01119d755caffc6edfc367 +CT=6096b877e8d6e8c216559b70b9a7a9c6 + +I=114 +KEY=f05647db6b51fe1615083b17bcb6990608f1a72089615d165b31cafd51496f9f +PT=6096b877e8d6e8c216559b70b9a7a9c6 +CT=83f0f73f91e55bfb3b44e7dfbf1d9e2e + +I=115 +KEY=73a6b0e4fab4a5ed2e4cdcc803ab07281bab82b4ef5732e2d732830e57524fb8 +PT=83f0f73f91e55bfb3b44e7dfbf1d9e2e +CT=03be9a03438357057163e893c40f2ae5 + +I=116 +KEY=70182ae7b937f2e85f2f345bc7a42dcdcec7242c2b60b603a21326476aaf2529 +PT=03be9a03438357057163e893c40f2ae5 +CT=de851c1ea68bacbed283c78151587542 + +I=117 +KEY=ae9d36f91fbc5e568dacf3da96fc588f6f1a1fa72ba20e311b7d31c117107871 +PT=de851c1ea68bacbed283c78151587542 +CT=d7d5030d4cda8176c29d5a24a6d85cca + +I=118 +KEY=794835f45366df204f31a9fe302404458def188f5f18f5ef86d7ce0448a6dc9e +PT=d7d5030d4cda8176c29d5a24a6d85cca +CT=34031201576d10bf597fe46a3f108aed + +I=119 +KEY=4d4b27f5040bcf9f164e4d940f348ea800d140d90342af3d9e307753f1761bf5 +PT=34031201576d10bf597fe46a3f108aed +CT=24cdfb0b3841b6dab850e7804f8c32a6 + +I=120 +KEY=6986dcfe3c4a7945ae1eaa1440b8bc0ed912a43883de7ae866d700fd0510a85f +PT=24cdfb0b3841b6dab850e7804f8c32a6 +CT=d1353948f17b8e23240e82bd2a927b3d + +I=121 +KEY=b8b3e5b6cd31f7668a1028a96a2ac733aec0c3deb1ca6c42359f481a090215d6 +PT=d1353948f17b8e23240e82bd2a927b3d +CT=7ce072484d12a96d12a3b52723c5a3ba + +I=122 +KEY=c45397fe80235e0b98b39d8e49ef6489c33936cf7cd08cccacc64d7dfc5e4053 +PT=7ce072484d12a96d12a3b52723c5a3ba +CT=5ad92969694e2fba016fdd5d63672be9 + +I=123 +KEY=9e8abe97e96d71b199dc40d32a884f60059c028d866a1f35f84065ab768407bb +PT=5ad92969694e2fba016fdd5d63672be9 +CT=dfbdbb0368a030c060c5c6471fd78ac7 + +I=124 +KEY=4137059481cd4171f9198694355fc5a704aba5fe5333e3b555cf1f9f3cb811d3 +PT=dfbdbb0368a030c060c5c6471fd78ac7 +CT=541f1707383dc9639d213ac7cc5786c1 + +I=125 +KEY=15281293b9f088126438bc53f9084366686c8b19745239b57508411935b901c0 +PT=541f1707383dc9639d213ac7cc5786c1 +CT=8f24a894dd8ed70d9632ada1555dde2f + +I=126 +KEY=9a0cba07647e5f1ff20a11f2ac559d49cd60763f90fc22c228bb0d00893e1d17 +PT=8f24a894dd8ed70d9632ada1555dde2f +CT=b571f305443af103d39431c3ecb9d872 + +I=127 +KEY=2f7d49022044ae1c219e203140ec453b69f98aa1aaa0e8fe76a4dc5280b6dc35 +PT=b571f305443af103d39431c3ecb9d872 +CT=14fab8c9ce671f9ff25e8369a029cbee + +I=128 +KEY=3b87f1cbee23b183d3c0a358e0c58ed51dd550c796d3c63e5fd82aaa39592bc2 +PT=14fab8c9ce671f9ff25e8369a029cbee +CT=ddbca0aada112598d4145c451bf71a4f + +I=129 +KEY=e63b51613432941b07d4ff1dfb32949ac2caa04cd85503e5de9a9bf8b88c181f +PT=ddbca0aada112598d4145c451bf71a4f +CT=f0f06dfe81b0eb67811b29f4557e824a + +I=130 +KEY=16cb3c9fb5827f7c86cfd6e9ae4c16d0392f7d171d7f0281154d62bb4c25b75d +PT=f0f06dfe81b0eb67811b29f4557e824a +CT=945c1ac88a42614f0950884525b62a38 + +I=131 +KEY=829726573fc01e338f9f5eac8bfa3ce8809b942f24a69c5feda0193a317e4fee +PT=945c1ac88a42614f0950884525b62a38 +CT=40acbf52df0441b9af1fc6e687bdc992 + +I=132 +KEY=c23b9905e0c45f8a2080984a0c47f57ae638c4c37a333986fb68bad2c567a5b8 +PT=40acbf52df0441b9af1fc6e687bdc992 +CT=d63cfb1457e8aa78d90c0641f6d40243 + +I=133 +KEY=14076211b72cf5f2f98c9e0bfa93f739d02eb3d1e70ec7e26467ef55c2ddf371 +PT=d63cfb1457e8aa78d90c0641f6d40243 +CT=f99c12a6cda822d7bff1df9665ee65ff + +I=134 +KEY=ed9b70b77a84d725467d419d9f7d92c67143277a8c0eb5bfe34f735fc0a54ef6 +PT=f99c12a6cda822d7bff1df9665ee65ff +CT=519be003a2dc78ee834482991d985bdd + +I=135 +KEY=bc0090b4d858afcbc539c30482e5c91b1a879ae9bfc0303997a279a16bef5f2d +PT=519be003a2dc78ee834482991d985bdd +CT=052c6df1473bc91bb5740229525629ae + +I=136 +KEY=b92cfd459f6366d0704dc12dd0b3e0b57bf23beed04c7d94da1b92a570c5b744 +PT=052c6df1473bc91bb5740229525629ae +CT=08b21250fca78faef326bdac53ce7578 + +I=137 +KEY=b19eef1563c4e97e836b7c81837d95cd9a57e1ae2dce99d3134a6b3f20698e91 +PT=08b21250fca78faef326bdac53ce7578 +CT=700fe4b37a792849634817cb62556973 + +I=138 +KEY=c1910ba619bdc137e0236b4ae128fcbe4c5e00cad5f9ff1be42c0ffd0583dad4 +PT=700fe4b37a792849634817cb62556973 +CT=4fba40be05e789574a2d266a57bb859e + +I=139 +KEY=8e2b4b181c5a4860aa0e4d20b6937920a4f9d79e06b1c308ea0c81137b951674 +PT=4fba40be05e789574a2d266a57bb859e +CT=b9e64ab80d475bb26a553daad4c782af + +I=140 +KEY=37cd01a0111d13d2c05b708a6254fb8fba610b0edd91bd0580932b308afc7bcc +PT=b9e64ab80d475bb26a553daad4c782af +CT=43245c72f5c79f1925f0bd36948d2402 + +I=141 +KEY=74e95dd2e4da8ccbe5abcdbcf6d9df8d15ea38e59416af70a5161ec424e4c10c +PT=43245c72f5c79f1925f0bd36948d2402 +CT=cd9167cfbc6e3665b748ada60950251b + +I=142 +KEY=b9783a1d58b4baae52e3601aff89fa967e583c92c8b0a796b7e516775abf41db +PT=cd9167cfbc6e3665b748ada60950251b +CT=0f73880a985ec84192fa3f146d4bbabf + +I=143 +KEY=b60bb217c0ea72efc0195f0e92c240296851f6b5fd314ff09fca4aab1237c0ef +PT=0f73880a985ec84192fa3f146d4bbabf +CT=5f33b905443e840b71b009831b869348 + +I=144 +KEY=e9380b1284d4f6e4b1a9568d8944d3618149c647391f59e619f7f9d87e1fa1c2 +PT=5f33b905443e840b71b009831b869348 +CT=0d90aba5360be05b6dae15ede97ca668 + +I=145 +KEY=e4a8a0b7b2df16bfdc07436060387509f130ab1f75c95b9e602c091dae1d0aec +PT=0d90aba5360be05b6dae15ede97ca668 +CT=b8ec490b182f56dfb95b21d22af661cc + +I=146 +KEY=5c44e9bcaaf04060655c62b24ace14c5435a8c6046a47a36576f01848511b1c1 +PT=b8ec490b182f56dfb95b21d22af661cc +CT=6f7807b7140f14794cfdf030feaa21c7 + +I=147 +KEY=333cee0bbeff541929a19282b4643502e33c81ebf50f696fff2630d7f581d039 +PT=6f7807b7140f14794cfdf030feaa21c7 +CT=a847c7f9a9300d34bce60c20086a07dc + +I=148 +KEY=9b7b29f217cf592d95479ea2bc0e32de3539969ca009f7d4684565b61dc37c18 +PT=a847c7f9a9300d34bce60c20086a07dc +CT=193d03b7f1260fed072a03a916d3187a + +I=149 +KEY=82462a45e6e956c0926d9d0baadd2aa4fb8ab61c29405843a7fba2882af08c78 +PT=193d03b7f1260fed072a03a916d3187a +CT=e54c5c1949626499fdffdfe8cb956e50 + +I=150 +KEY=670a765caf8b32596f9242e3614844f4b6695c34fe595a285d23e076250c88eb +PT=e54c5c1949626499fdffdfe8cb956e50 +CT=de6b840e8f6f68cf1976c5e82f6b99b3 + +I=151 +KEY=b961f25220e45a9676e4870b4e23dd472c90ed731871185fe3d113c4ea949762 +PT=de6b840e8f6f68cf1976c5e82f6b99b3 +CT=8b4e1bcda1f96309319f908ac063ebc1 + +I=152 +KEY=322fe99f811d399f477b17818e4036861c0143a89b37f8351eaf8f23b6514d95 +PT=8b4e1bcda1f96309319f908ac063ebc1 +CT=243a37cf74b006d29b5683b236ae9a9f + +I=153 +KEY=1615de50f5ad3f4ddc2d9433b8eeac19e0880fb4aff1507cf0c818562ad7259f +PT=243a37cf74b006d29b5683b236ae9a9f +CT=2bda66f3c3854a9c83e0200e2805df95 + +I=154 +KEY=3dcfb8a3362875d15fcdb43d90eb738cd9c14be03429d98ed74a0db5a9063d7d +PT=2bda66f3c3854a9c83e0200e2805df95 +CT=aca1a3ba92def11a704e96ada0aa4edb + +I=155 +KEY=916e1b19a4f684cb2f83229030413d575c3005120f9cd4e37cc89b721e732904 +PT=aca1a3ba92def11a704e96ada0aa4edb +CT=450f9d7f3a2ee035b98088a75bab6684 + +I=156 +KEY=d46186669ed864fe9603aa376bea5bd3d88ce3502b4352ea33f8f665f2b89884 +PT=450f9d7f3a2ee035b98088a75bab6684 +CT=5994de5635ea301bbe62a6ee413c44aa + +I=157 +KEY=8df55830ab3254e528610cd92ad61f793da3a5b0bf1e82adf2fcc0be5920afda +PT=5994de5635ea301bbe62a6ee413c44aa +CT=b1502f1a1905c51e41ca48e624770925 + +I=158 +KEY=3ca5772ab23791fb69ab443f0ea1165cfe84a26efda98386e0cfe5ab3c294b9a +PT=b1502f1a1905c51e41ca48e624770925 +CT=db4635bd3345d1d504aa605c0663a0d6 + +I=159 +KEY=e7e342978172402e6d01246308c2b68adb129c9d58a83a31e8c9b861b0e93a95 +PT=db4635bd3345d1d504aa605c0663a0d6 +CT=575ac8eb5e4d2cce3c3ff42aa7dfd819 + +I=160 +KEY=b0b98a7cdf3f6ce0513ed049af1d6e9315545340c2ddb0a56e36f15bf2b7c6be +PT=575ac8eb5e4d2cce3c3ff42aa7dfd819 +CT=d95774b0a3e7417d78c84935c99f14d0 + +I=161 +KEY=69eefecc7cd82d9d29f6997c66827a43437e85d20024729acf17c6399e2e67f6 +PT=d95774b0a3e7417d78c84935c99f14d0 +CT=2b019830992108862b85f7b3a5f996f5 + +I=162 +KEY=42ef66fce5f9251b02736ecfc37becb621270ce552ccd08cb105c17ea7263fc0 +PT=2b019830992108862b85f7b3a5f996f5 +CT=b755ff6b68bfe8b334f42796f619bcf2 + +I=163 +KEY=f5ba99978d46cda83687495935625044f2332d635db6766b961b5ec0f450827e +PT=b755ff6b68bfe8b334f42796f619bcf2 +CT=b1e6d5cd91086d908c9bd4a2d58bedb4 + +I=164 +KEY=445c4c5a1c4ea038ba1c9dfbe0e9bdf031808ca1954badbfa347961abfb630b9 +PT=b1e6d5cd91086d908c9bd4a2d58bedb4 +CT=626d9a6e13b1d72a0dc45e505f36b478 + +I=165 +KEY=2631d6340fff7712b7d8c3abbfdf0988ebff0330f385566db29c4322e5801a52 +PT=626d9a6e13b1d72a0dc45e505f36b478 +CT=7a795e9caa0917dd78bcff2447172850 + +I=166 +KEY=5c4888a8a5f660cfcf643c8ff8c821d8715f807b5269c078875ec4ddac117dfd +PT=7a795e9caa0917dd78bcff2447172850 +CT=e44d512d94bff3834303102bac25a351 + +I=167 +KEY=b805d9853149934c8c672ca454ed828992516228c924dc941ba1c4e153ec5fd3 +PT=e44d512d94bff3834303102bac25a351 +CT=0eb99d4d8f12a593d25b28450a6deefe + +I=168 +KEY=b6bc44c8be5b36df5e3c04e15e806c77bfde7fce545b3e061314a59f39a5022d +PT=0eb99d4d8f12a593d25b28450a6deefe +CT=3c8cd74e8a90138bb240155de1fc21b3 + +I=169 +KEY=8a30938634cb2554ec7c11bcbf7c4dc4623245d0711994b5e410679d866788a4 +PT=3c8cd74e8a90138bb240155de1fc21b3 +CT=23ce64fc19af9fee3efd3fb691398f60 + +I=170 +KEY=a9fef77a2d64babad2812e0a2e45c2a4deba0102dbc75e686a89f0a33aa2f4a4 +PT=23ce64fc19af9fee3efd3fb691398f60 +CT=271059591ff6f87dd2faee6b31937eba + +I=171 +KEY=8eeeae23329242c7007bc0611fd6bc1eecb4eaf146c0b696c45f3b1d64a8a69a +PT=271059591ff6f87dd2faee6b31937eba +CT=42603531793714e8f8cbfd2497ad846f + +I=172 +KEY=cc8e9b124ba5562ff8b03d45887b38716d32dab2cbe999cfe063a98530bf7b4f +PT=42603531793714e8f8cbfd2497ad846f +CT=283a9a04464c07926b40e9c5c358ef76 + +I=173 +KEY=e4b401160de951bd93f0d4804b23d707ff5be1cea6e033c0841f4346a62af0b9 +PT=283a9a04464c07926b40e9c5c358ef76 +CT=e4c6a4aee8fb0c615f41c379fa59a483 + +I=174 +KEY=0072a5b8e5125ddcccb117f9b17a73849c4ef9e81dae0d7899e9022876976e66 +PT=e4c6a4aee8fb0c615f41c379fa59a483 +CT=e7605934d021f0a004512a2c760a80a2 + +I=175 +KEY=e712fc8c3533ad7cc8e03dd5c770f3266189268a81a2ea4a8e760001b0d18a8e +PT=e7605934d021f0a004512a2c760a80a2 +CT=7e2670fa327b4c247d11889ce82e9700 + +I=176 +KEY=99348c760748e158b5f1b5492f5e642619de05d454cd0da858631dc854a3110c +PT=7e2670fa327b4c247d11889ce82e9700 +CT=bae8ddb214410c00b3c7be497b4562e1 + +I=177 +KEY=23dc51c41309ed5806360b00541b06c7dc6b628209714e0416304fd12a386942 +PT=bae8ddb214410c00b3c7be497b4562e1 +CT=13faf0ea2d565a24d2b687d4d9312547 + +I=178 +KEY=3026a12e3e5fb77cd4808cd48d2a2380f86fb0909e3274e3a0d4276aa846cb55 +PT=13faf0ea2d565a24d2b687d4d9312547 +CT=7784540933d0702814528bed11246020 + +I=179 +KEY=47a2f5270d8fc754c0d207399c0e43a08ee475af1371e1d253c635330b1f81af +PT=7784540933d0702814528bed11246020 +CT=ecb7c1f6132ac570e8b23358c55f1232 + +I=180 +KEY=ab1534d11ea502242860346159515192226b5287072f706c44ba0b006dfab082 +PT=ecb7c1f6132ac570e8b23358c55f1232 +CT=8e8d97960ff2ba421711f702a265455c + +I=181 +KEY=2598a3471157b8663f71c363fb3414ce003b4ebe62fce8310d2a7d4387e65230 +PT=8e8d97960ff2ba421711f702a265455c +CT=6dd0b744a33c22de7e929d06c20bdc5e + +I=182 +KEY=48481403b26b9ab841e35e65393fc890b2f1991300a1f6e42e592d7cfca107f3 +PT=6dd0b744a33c22de7e929d06c20bdc5e +CT=51bf01bce5cacc5e1c9d13b3cd85bdd9 + +I=183 +KEY=19f715bf57a156e65d7e4dd6f4ba7549f880f942e4f803f1a8963efd011e4060 +PT=51bf01bce5cacc5e1c9d13b3cd85bdd9 +CT=632701100bb70369d9c6fd1373ea5f6f + +I=184 +KEY=7ad014af5c16558f84b8b0c587502a266a1d5191b6d9f4e9001ed1a019059e26 +PT=632701100bb70369d9c6fd1373ea5f6f +CT=02f5b8ef99d36563c137d630251f3182 + +I=185 +KEY=7825ac40c5c530ec458f66f5a24f1ba4b52ae624abe43d9aea48f0541e484c1e +PT=02f5b8ef99d36563c137d630251f3182 +CT=c318a0a909ca1bc14ba7412d3ab5e143 + +I=186 +KEY=bb3d0ce9cc0f2b2d0e2827d898fafae7168b4a59ccc05682e79880072ec7c5f9 +PT=c318a0a909ca1bc14ba7412d3ab5e143 +CT=300743ea56b544183f1b52ceac8b1271 + +I=187 +KEY=8b3a4f039aba6f35313375163471e89661f2b5af85678f3570a1ec7314ade60d +PT=300743ea56b544183f1b52ceac8b1271 +CT=a5eaac40b778f51f0ddd60c07e90b8cd + +I=188 +KEY=2ed0e3432dc29a2a3cee15d64ae1505be4a0dd7fa57eee57541f602c5a9cc818 +PT=a5eaac40b778f51f0ddd60c07e90b8cd +CT=9b7fd74688d354eca13c460d69cca546 + +I=189 +KEY=b5af3405a511cec69dd253db232df51d5eb7617e6b9a9293be666c935a9df2be +PT=9b7fd74688d354eca13c460d69cca546 +CT=4d7fd70327dba9ebd3d753a3bbe1df6b + +I=190 +KEY=f8d0e30682ca672d4e05007898cc2a7637cf2a064cb700c291bbd9e383aa37f3 +PT=4d7fd70327dba9ebd3d753a3bbe1df6b +CT=65a178e79e6a469d52bdd8e941cc7722 + +I=191 +KEY=9d719be11ca021b01cb8d891d9005d54bf5aa91e98b5f6a2aae0b9858a8a2653 +PT=65a178e79e6a469d52bdd8e941cc7722 +CT=dd0d076d20d6b82ca6eca1056487e4be + +I=192 +KEY=407c9c8c3c76999cba547994bd87b9ea66e864b49b07b3b9da75e2077849973f +PT=dd0d076d20d6b82ca6eca1056487e4be +CT=c24e21b5f8b8c00992f8249633f88b36 + +I=193 +KEY=8232bd39c4ce599528ac5d028e7f32dc52a3c34421ce1a03282e15b48255f5d6 +PT=c24e21b5f8b8c00992f8249633f88b36 +CT=1dee7658ac1f2a52dfa0b42f5c671bb1 + +I=194 +KEY=9fdccb6168d173c7f70ce92dd218296df3c72d6d6703ed14c4c1e44cf9e0adc5 +PT=1dee7658ac1f2a52dfa0b42f5c671bb1 +CT=b882df08f78b034c964c64354ffbc14e + +I=195 +KEY=275e14699f5a708b61408d189de3e82314755da8207ee49869f846a855360c88 +PT=b882df08f78b034c964c64354ffbc14e +CT=0f50b9535b633527727bfbe1d3dde8c7 + +I=196 +KEY=280ead3ac43945ac133b76f94e3e00e478990d91c149089ba2e7bae9a6bb769b +PT=0f50b9535b633527727bfbe1d3dde8c7 +CT=97ae56c1e8a1337f579a697edb0abc67 + +I=197 +KEY=bfa0fbfb2c9876d344a11f879534bc83cffa44f0dabae339d71e377ebe9ee8e4 +PT=97ae56c1e8a1337f579a697edb0abc67 +CT=c99cc7cbd4a0d7d6e59e94c672493a68 + +I=198 +KEY=763c3c30f838a105a13f8b41e77d86eb6942676fbed3a420b4f5b643d33b520f +PT=c99cc7cbd4a0d7d6e59e94c672493a68 +CT=45b59be9f480955240893c2e583c518c + +I=199 +KEY=3389a7d90cb83457e1b6b76fbf41d7675038f93a7c5e93348ad3c72d86527c1e +PT=45b59be9f480955240893c2e583c518c +CT=ccddd5ee7dc1824f6fbc358a80026913 + +I=200 +KEY=ff5472377179b6188e0a82e53f43be74eda898337372b1d35bd3a7cbdfc632dc +PT=ccddd5ee7dc1824f6fbc358a80026913 +CT=5e60cc5d8baa37d9cbcb955637274216 + +I=201 +KEY=a134be6afad381c145c117b30864fc621cfdb3cce065086ebf2c1428d0b41532 +PT=5e60cc5d8baa37d9cbcb955637274216 +CT=01759c8a23f481af248e1d6cc80edc0f + +I=202 +KEY=a04122e0d927006e614f0adfc06a206d5a9e86857dece7b78f839c27387de166 +PT=01759c8a23f481af248e1d6cc80edc0f +CT=1535407b72bd13e7dbffd61e0c7d5467 + +I=203 +KEY=b574629bab9a1389bab0dcc1cc17740ae534b85568ba0a99eaca5d9ddb1ad585 +PT=1535407b72bd13e7dbffd61e0c7d5467 +CT=d5450689d81c0a2dccc61b20f2427467 + +I=204 +KEY=60316412738619a47676c7e13e55006d7af4cfd6260116be24bd0d0f7b3cbc62 +PT=d5450689d81c0a2dccc61b20f2427467 +CT=1a18e1a95402f27474ff070b012844bd + +I=205 +KEY=7a2985bb2784ebd00289c0ea3f7d44d0cdbab05d5241044d29d029af8a66cd2b +PT=1a18e1a95402f27474ff070b012844bd +CT=41b0f3f0e56f05c68d433ae9f85ae9aa + +I=206 +KEY=3b99764bc2ebee168fcafa03c727ad7af62217aa10bb42daff3fedb2158b283e +PT=41b0f3f0e56f05c68d433ae9f85ae9aa +CT=1cd7c7f7883d2c19a7e73c24cbeafb1b + +I=207 +KEY=274eb1bc4ad6c20f282dc6270ccd56617feb1e2621dd688654a60dee82fb2033 +PT=1cd7c7f7883d2c19a7e73c24cbeafb1b +CT=3bd01d14d96444073c62e41ae83d097d + +I=208 +KEY=1c9eaca893b28608144f223de4f05f1ceb9068f4731ddc86ca9c11a1140a08f0 +PT=3bd01d14d96444073c62e41ae83d097d +CT=ce76ae2239ac37fc9da78df6a369ac91 + +I=209 +KEY=d2e8028aaa1eb1f489e8afcb4799f38d67030f7fa73547fa7857196c28c39a39 +PT=ce76ae2239ac37fc9da78df6a369ac91 +CT=1ce5e5b085418e93746cf148fef02158 + +I=210 +KEY=ce0de73a2f5f3f67fd845e83b969d2d5006d3a6a1fc9bbf909412c764122053f +PT=1ce5e5b085418e93746cf148fef02158 +CT=51fe3109c8ef2bf08f3978c80bc18148 + +I=211 +KEY=9ff3d633e7b0149772bd264bb2a8539d9fbc309a92f853fbd52b3adcad3a7833 +PT=51fe3109c8ef2bf08f3978c80bc18148 +CT=b6eced57e09a6c4778e8ec07a17f7791 + +I=212 +KEY=291f3b64072a78d00a55ca4c13d7240c0b6637a13f1646689a2ac2af5faa6f9a +PT=b6eced57e09a6c4778e8ec07a17f7791 +CT=556c753708a07755085244087b88c4f4 + +I=213 +KEY=7c734e530f8a0f8502078e44685fe0f869aa22c4e03efb05f33ef4bcabb2c394 +PT=556c753708a07755085244087b88c4f4 +CT=df77a310cd1949386a5f91e1271e4de8 + +I=214 +KEY=a304ed43c29346bd68581fa54f41ad101a5ce813a3957081a16114f09f3ad011 +PT=df77a310cd1949386a5f91e1271e4de8 +CT=33f546c1245425d5541c7ccbdf5686a4 + +I=215 +KEY=90f1ab82e6c763683c44636e90172bb4b51ea7825b84b906675d6c5b51ab1080 +PT=33f546c1245425d5541c7ccbdf5686a4 +CT=f2ca0805c876c76d0c39822f15ca110f + +I=216 +KEY=623ba3872eb1a405307de14185dd3abb31f24e1c35b9a8e8ba4cff5a5befe1f7 +PT=f2ca0805c876c76d0c39822f15ca110f +CT=6ae977ae32869e6554b027a20acb53aa + +I=217 +KEY=08d2d4291c373a6064cdc6e38f166911db63709d8488d38c2ee9a075264f0785 +PT=6ae977ae32869e6554b027a20acb53aa +CT=819c9dfc06b983c91b70a7b6dcb7cdb3 + +I=218 +KEY=894e49d51a8eb9a97fbd615553a1a4a2b82c97b47fc3049b1c918535783a2c58 +PT=819c9dfc06b983c91b70a7b6dcb7cdb3 +CT=1f5d3c6c7a3f42260c3e7f81961a75d2 + +I=219 +KEY=961375b960b1fb8f73831ed4c5bbd170346a518e6099ef3cb3e43ac31daa033f +PT=1f5d3c6c7a3f42260c3e7f81961a75d2 +CT=8856f37fc587fb38189fe11595b74e28 + +I=220 +KEY=1e4586c6a53600b76b1cffc1500c9f589f0a39680ef8a4d768dc6b708e446408 +PT=8856f37fc587fb38189fe11595b74e28 +CT=69d4072670654e5d468372aac735a8e2 + +I=221 +KEY=779181e0d5534eea2d9f8d6b973937ba15ef104e4ea016b8e14d1237dc12e182 +PT=69d4072670654e5d468372aac735a8e2 +CT=038b1b239032a0f1126389bce3305f3b + +I=222 +KEY=741a9ac34561ee1b3ffc04d7740968812165c32c7c747a036937d2db06647cca +PT=038b1b239032a0f1126389bce3305f3b +CT=f497398973dda5d758a77b14b4d88636 + +I=223 +KEY=808da34a36bc4bcc675b7fc3c0d1eeb78a3479301048570c478257f8752d6fdb +PT=f497398973dda5d758a77b14b4d88636 +CT=06f4398445ffaabe1062f697387354f4 + +I=224 +KEY=86799ace7343e17277398954f8a2ba43959796718f1f7c5502ab350b77374acb +PT=06f4398445ffaabe1062f697387354f4 +CT=2f83c40e1a5fb288657e06119e54ff5c + +I=225 +KEY=a9fa5ec0691c53fa12478f4566f6451f4d1fc1ae333ef0e9b04c5de7a11d88dd +PT=2f83c40e1a5fb288657e06119e54ff5c +CT=3895cbf19cd7651c6da4f578d4297abf + +I=226 +KEY=916f9531f5cb36e67fe37a3db2df3fa08f12dc2505e2ad68e23cd395c89d87ba +PT=3895cbf19cd7651c6da4f578d4297abf +CT=ef7cd7584de4583bbe5840c30ea695d5 + +I=227 +KEY=7e134269b82f6eddc1bb3afebc79aa750acfa06261a0fc006c14e7db4803cf34 +PT=ef7cd7584de4583bbe5840c30ea695d5 +CT=66dc16e4ab5bc2a8274ca034583c6697 + +I=228 +KEY=18cf548d1374ac75e6f79acae445cce21ca6b5979bc569097f752aa4bdd41b31 +PT=66dc16e4ab5bc2a8274ca034583c6697 +CT=fee309553e3bf9c2708ce6b8aa6bbe48 + +I=229 +KEY=e62c5dd82d4f55b7967b7c724e2e72aa2323583c4391bb6abcf6da2111e7d09f +PT=fee309553e3bf9c2708ce6b8aa6bbe48 +CT=69e8d78cc70862a8df85c8ea9dfd6605 + +I=230 +KEY=8fc48a54ea47371f49feb498d3d314af4d3bed1bf3465b68d24f5b2688cb46e1 +PT=69e8d78cc70862a8df85c8ea9dfd6605 +CT=eed08f36a9bc9bed2a6b987ba13cb6ac + +I=231 +KEY=6114056243fbacf263952ce372efa20347e8ef12aa5234b292204b2c2087ce13 +PT=eed08f36a9bc9bed2a6b987ba13cb6ac +CT=d7d4df5a881f08c75629be87999bc82a + +I=232 +KEY=b6c0da38cbe4a43535bc9264eb746a29c746e08d7aae3ee10479885f64c8ea0f +PT=d7d4df5a881f08c75629be87999bc82a +CT=addda2fca587c840d2e1f17dc7e4850e + +I=233 +KEY=1b1d78c46e636c75e75d63192c90ef27a00dd31624a32e927f13352c74e39a5b +PT=addda2fca587c840d2e1f17dc7e4850e +CT=c822ec434797e36698a020641eb58cb5 + +I=234 +KEY=d33f948729f48f137ffd437d322563928d702b20c99ce68cc2aaf7b743cca5d3 +PT=c822ec434797e36698a020641eb58cb5 +CT=c0ab22e8b883eefabfae21b876c3c8a0 + +I=235 +KEY=1394b66f917761e9c05362c544e6ab3272d3d517609f71dd622f1a3330ee470e +PT=c0ab22e8b883eefabfae21b876c3c8a0 +CT=b0ad1adbecca7d8ee4e253b86804251b + +I=236 +KEY=a339acb47dbd1c6724b1317d2ce28e294445956e7197d6e866e375cca688bcae +PT=b0ad1adbecca7d8ee4e253b86804251b +CT=4986bb6d28e11a89253ff4e5e271ca57 + +I=237 +KEY=eabf17d9555c06ee018ec598ce93447e788f6a30b839add828270adb9e2c047a +PT=4986bb6d28e11a89253ff4e5e271ca57 +CT=22cf5a639ce9c413e66960573e6126eb + +I=238 +KEY=c8704dbac9b5c2fde7e7a5cff0f2629520d7234e85c2d68142294b1c531237dc +PT=22cf5a639ce9c413e66960573e6126eb +CT=99e20d03d7d111ff58db07aefb8d1d25 + +I=239 +KEY=519240b91e64d302bf3ca2610b7f7fb0fc845d0caf823cd1c624e762e3e46f70 +PT=99e20d03d7d111ff58db07aefb8d1d25 +CT=0b49bf68cda1e14c853bea3d490e8cf5 + +I=240 +KEY=5adbffd1d3c5324e3a07485c4271f345e5a60b5ea0ede202e963193848179086 +PT=0b49bf68cda1e14c853bea3d490e8cf5 +CT=5b4ce4e36d538d37f318163e0cbf32c8 + +I=241 +KEY=01971b32be96bf79c91f5e624ecec18df080ef67a430394be5f5c0ca55bdf943 +PT=5b4ce4e36d538d37f318163e0cbf32c8 +CT=568791a9530c460aae304ebbde209a7e + +I=242 +KEY=57108a9bed9af973672f10d990ee5bf3a05a06d5abe5db08d7600597ec2050cc +PT=568791a9530c460aae304ebbde209a7e +CT=3df8ebdb4d244d6bc1bc82b7b51d9b97 + +I=243 +KEY=6ae86140a0beb418a693926e25f3c064757fa3a062dce8ca2ce95958f283c496 +PT=3df8ebdb4d244d6bc1bc82b7b51d9b97 +CT=766b0cac7a96b89c3ff1e777c2fd138d + +I=244 +KEY=1c836decda280c8499627519e70ed3e9c928e1e543e40a1ba83df74b1fdccaba +PT=766b0cac7a96b89c3ff1e777c2fd138d +CT=e9bf2162d779bdd01988549210680869 + +I=245 +KEY=f53c4c8e0d51b15480ea218bf766db8077aa75348bdca6525c950c62b5bb27c9 +PT=e9bf2162d779bdd01988549210680869 +CT=bf4a7edbb5d681afc33fde8c850f25b2 + +I=246 +KEY=4a763255b88730fb43d5ff077269fe325832dc90697fbb08e8e8b3d5bf0022b3 +PT=bf4a7edbb5d681afc33fde8c850f25b2 +CT=8c16edb630972e4e0a65c59c8da40b6f + +I=247 +KEY=c660dfe388101eb549b03a9bffcdf55d8ae13a6ce8f73d6c0cb39e9e1217dff6 +PT=8c16edb630972e4e0a65c59c8da40b6f +CT=59eb0dfc0781c320fda8b4caa6d1070c + +I=248 +KEY=9f8bd21f8f91dd95b4188e51591cf2513c5b0624915aae9b1b59427ab43f4530 +PT=59eb0dfc0781c320fda8b4caa6d1070c +CT=86c4cc012596397f5a67d4a04df020b0 + +I=249 +KEY=194f1e1eaa07e4eaee7f5af114ecd2e16a0389844ae3ccae2529859d3a4fa229 +PT=86c4cc012596397f5a67d4a04df020b0 +CT=fb9e2036f4f31417d06c164b62cc077b + +I=250 +KEY=e2d13e285ef4f0fd3e134cba7620d59a6222e9066636d7f3e6026e63db6dc253 +PT=fb9e2036f4f31417d06c164b62cc077b +CT=6e83994ee9b7707ccd7805dd3a4e0226 + +I=251 +KEY=8c52a766b7438081f36b49674c6ed7bcdf165ae16d7fe06905b60b1384eac390 +PT=6e83994ee9b7707ccd7805dd3a4e0226 +CT=ff3f21528529278c578f6b11bd5f8143 + +I=252 +KEY=736d8634326aa70da4e42276f13156ff2c1c631981962a3bb15fdbbaa8aadcaf +PT=ff3f21528529278c578f6b11bd5f8143 +CT=a35159960a6f25be03c3b3c8496bf28a + +I=253 +KEY=d03cdfa2380582b3a72791beb85aa4755ab65ea9fc012f83e5cb3a86f44134d1 +PT=a35159960a6f25be03c3b3c8496bf28a +CT=fa69e4d64a95c79c17d93ec116cb9526 + +I=254 +KEY=2a553b747290452fb0feaf7fae9131534465b8ea70651d27f23494e05ce64385 +PT=fa69e4d64a95c79c17d93ec116cb9526 +CT=aa9a953bbef667743eca6873fa86d2b1 + +I=255 +KEY=80cfae4fcc66225b8e34c70c5417e3e2ea44e8f4a5c7665642f86ca487b1402f +PT=aa9a953bbef667743eca6873fa86d2b1 +CT=7466eba3255219ca783d7a629103d428 + +I=256 +KEY=f4a945ece9343b91f609bd6ec51437ca7ee904d7cc5b9c801c68f7426c7ef7e9 +PT=7466eba3255219ca783d7a629103d428 +CT=b22d190c6d8254903d88d6de7b4e0496 + +I=257 +KEY=46845ce084b66f01cb816bb0be5a335c33e8326359d5d8ae2fab11d62f07130b +PT=b22d190c6d8254903d88d6de7b4e0496 +CT=cde0c859eca378a59c063883e8332041 + +I=258 +KEY=8b6494b9681517a4578753335669131d95085fdc3aa8a442cca652ce70522926 +PT=cde0c859eca378a59c063883e8332041 +CT=31459cf7b1942902b40374c25f816c2e + +I=259 +KEY=ba21084ed9813ea6e38427f109e87f3332a3add54d6a3b3e216aa2f8ff372fa9 +PT=31459cf7b1942902b40374c25f816c2e +CT=85b2a616da4abe6dde259652549d67ee + +I=260 +KEY=3f93ae5803cb80cb3da1b1a35d7518dd4627b5fc7f2442f35fd30a66682929cb +PT=85b2a616da4abe6dde259652549d67ee +CT=8e090017dabe85d27a1c354d04846048 + +I=261 +KEY=b19aae4fd975051947bd84ee59f17895db0b7a5ef82fa6fcc90675a1468e3ad0 +PT=8e090017dabe85d27a1c354d04846048 +CT=854cf40fe22836c9b86da85037236739 + +I=262 +KEY=34d65a403b5d33d0ffd02cbe6ed21fac2f6008dc987281f7d47669c153c16e64 +PT=854cf40fe22836c9b86da85037236739 +CT=6ec8f83bf0df0fe87706a553f99ecb5f + +I=263 +KEY=5a1ea27bcb823c3888d689ed974cd4f3fbac202fc3482cdc9fb2e305985fedb4 +PT=6ec8f83bf0df0fe87706a553f99ecb5f +CT=40c6ca06afd7b9b01dd0d790798c4203 + +I=264 +KEY=1ad8687d6455858895065e7deec096f0dbbaa8e249313d6dded381a114883172 +PT=40c6ca06afd7b9b01dd0d790798c4203 +CT=cb4ffd54cf1012de4b2427ba5cc57a37 + +I=265 +KEY=d1979529ab459756de2279c7b205ecc77095c3da2d230108c70550aabcfd6bbe +PT=cb4ffd54cf1012de4b2427ba5cc57a37 +CT=fcaaaa7a661f48a5c1053b8ba97ff3b4 + +I=266 +KEY=2d3d3f53cd5adff31f27424c1b7a1f73d1f7cc51021f7a65359fe14dec6681dd +PT=fcaaaa7a661f48a5c1053b8ba97ff3b4 +CT=2a3709e9b8eca361e0b19f7fc31bd1cf + +I=267 +KEY=070a36ba75b67c92ff96dd33d861cebcd9f65ec15c1bda45a9efbb00ac1676f4 +PT=2a3709e9b8eca361e0b19f7fc31bd1cf +CT=ff942984c5ac0cf2113bd96a4340e9b5 + +I=268 +KEY=f89e1f3eb01a7060eead04599b212709a387e10499317eed3f1b90062066dfe7 +PT=ff942984c5ac0cf2113bd96a4340e9b5 +CT=ee9c6c351b04bd9a2dd1f4e78a1dab12 + +I=269 +KEY=1602730bab1ecdfac37cf0be113c8c1b8a879053b44110fcc77e002b25877b31 +PT=ee9c6c351b04bd9a2dd1f4e78a1dab12 +CT=0ac2350d9b46be18b4f26b6a260555d6 + +I=270 +KEY=1cc04606305873e2778e9bd43739d9cdf63df2602905501159b8534ea472f94e +PT=0ac2350d9b46be18b4f26b6a260555d6 +CT=70108e3bc792e1a2588545c33bb9a025 + +I=271 +KEY=6cd0c83df7ca92402f0bde170c8079e8acc171d3a6bf06ddf5762949fcc769cf +PT=70108e3bc792e1a2588545c33bb9a025 +CT=f33082a1a0fe00eecc5923b544d3f111 + +I=272 +KEY=9fe04a9c573492aee352fda2485388f9d519911728856aabbddd22dfb87b8fd6 +PT=f33082a1a0fe00eecc5923b544d3f111 +CT=72e74d4e80da8437bdf43cc92cfaa479 + +I=273 +KEY=ed0707d2d7ee16995ea6c16b64a92c805bf344ca53c11c9b1b59c3a7c7a53884 +PT=72e74d4e80da8437bdf43cc92cfaa479 +CT=486c3445d3cd54424d3c2bf8f6951105 + +I=274 +KEY=a56b3397042342db139aea93923c3d85196d9f66a537656873a61b53e8f5cd88 +PT=486c3445d3cd54424d3c2bf8f6951105 +CT=3c9facac4fc77291446b10a56deeaf74 + +I=275 +KEY=99f49f3b4be4304a57f1fa36ffd292f109b78b289041842a7d389b8cb16fee3e +PT=3c9facac4fc77291446b10a56deeaf74 +CT=726a14c4574ce4a94190434767e73ff0 + +I=276 +KEY=eb9e8bff1ca8d4e31661b9719835ad01e41459808ab0d80d7a66b1df56106b23 +PT=726a14c4574ce4a94190434767e73ff0 +CT=6f57c05e3125775c9f199bf7b132a224 + +I=277 +KEY=84c94ba12d8da3bf8978228629070f2534b2c1384e8d632b42005b20b3c262e9 +PT=6f57c05e3125775c9f199bf7b132a224 +CT=8d2097c78a0e5d70d370e29db4e4bacd + +I=278 +KEY=09e9dc66a783fecf5a08c01b9de3b5e85753f8f999370571bf67cbc7b6c43c34 +PT=8d2097c78a0e5d70d370e29db4e4bacd +CT=be6e96319f1ea4723eaf63c039df1108 + +I=279 +KEY=b7874a57389d5abd64a7a3dba43ca4e069b3c6f9bf8991f5553ba1f84739c043 +PT=be6e96319f1ea4723eaf63c039df1108 +CT=5ae08cd2909c8c2e37b7b91a5cf22d2c + +I=280 +KEY=ed67c685a801d69353101ac1f8ce89cc83fcb2c59be91ebb8f772c8657360bf4 +PT=5ae08cd2909c8c2e37b7b91a5cf22d2c +CT=c6c97b09149637f756d421ccb87859bd + +I=281 +KEY=2baebd8cbc97e16405c43b0d40b6d0713156c7af03e6cf70c6cab41d5ad63672 +PT=c6c97b09149637f756d421ccb87859bd +CT=7a84ebe1cb881a210442ced2f08e4873 + +I=282 +KEY=512a566d771ffb450186f5dfb0389802f953460cbd5d59440300e87818fd5478 +PT=7a84ebe1cb881a210442ced2f08e4873 +CT=b673050db8735f02aa3f2e8c1b6cf9c2 + +I=283 +KEY=e7595360cf6ca447abb9db53ab5461c0e6b8e4063c19ca431132d078c6134bd7 +PT=b673050db8735f02aa3f2e8c1b6cf9c2 +CT=4715a677f08d7be62944c4f7db34d166 + +I=284 +KEY=a04cf5173fe1dfa182fd1fa47060b0a67a7ea2fad18a6e4636923cfc243525b1 +PT=4715a677f08d7be62944c4f7db34d166 +CT=2514282a337f5969c356d15d07fea66e + +I=285 +KEY=8558dd3d0c9e86c841abcef9779e16c86263240f3158997ba8b52c1ace603ee1 +PT=2514282a337f5969c356d15d07fea66e +CT=d45baf17262251506ac3eb116d2b045f + +I=286 +KEY=5103722a2abcd7982b6825e81ab512974258ac49bab31a93bd401081162ab220 +PT=d45baf17262251506ac3eb116d2b045f +CT=59968150384d99bdf6a50cbfd449fbb7 + +I=287 +KEY=0895f37a12f14e25ddcd2957cefce9204174c3adfb3d4dc5d0768b0167e5dd84 +PT=59968150384d99bdf6a50cbfd449fbb7 +CT=6a1b9a4344df1d5d4e592f220c9362d6 + +I=288 +KEY=628e6939562e537893940675c26f8bf6ae6f5d145d1a8714b0ffba35545d502b +PT=6a1b9a4344df1d5d4e592f220c9362d6 +CT=3999d773e0534922fb8d9d2502dccb96 + +I=289 +KEY=5b17be4ab67d1a5a68199b50c0b3406087dc78f4d2729ddc7e1d1a41f6023d52 +PT=3999d773e0534922fb8d9d2502dccb96 +CT=3222a3f4c766ad89c718d2d145a9565c + +I=290 +KEY=69351dbe711bb7d3af014981851a163c90dfd45178331d8ea03782dd069de633 +PT=3222a3f4c766ad89c718d2d145a9565c +CT=b1a02422ed5e3e8d08f9c5cd81bde779 + +I=291 +KEY=d895399c9c45895ea7f88c4c04a7f145f28abb926f51e34030daa1aa25c468bb +PT=b1a02422ed5e3e8d08f9c5cd81bde779 +CT=5985a5f828ba07a98394f18711f79d37 + +I=292 +KEY=81109c64b4ff8ef7246c7dcb15506c72d7d9e271dc4ab6a593302b1d6895e394 +PT=5985a5f828ba07a98394f18711f79d37 +CT=b568eaa12f8dd54541f3f27cdb770299 + +I=293 +KEY=347876c59b725bb2659f8fb7ce276eeb7bf5917b6615482ef0407afe9955ede5 +PT=b568eaa12f8dd54541f3f27cdb770299 +CT=d7925d3ddf9358f68bf97cb1f6d8adac + +I=294 +KEY=e3ea2bf844e10344ee66f30638ffc347b44e98ee0f1078c3ea753f6e10741e06 +PT=d7925d3ddf9358f68bf97cb1f6d8adac +CT=a104ce99b644a3d6fcaf29badff98642 + +I=295 +KEY=42eee561f2a5a09212c9dabce706450565ab0caa277426072fb5ffc282f65171 +PT=a104ce99b644a3d6fcaf29badff98642 +CT=40a8fc2e8249ac27044d88ff4ec63b7e + +I=296 +KEY=0246194f70ec0cb516845243a9c07e7bfa510275cff89591a6c745956b7ad4bd +PT=40a8fc2e8249ac27044d88ff4ec63b7e +CT=3d5073643e7b5919fb2f0dbb7f4f7205 + +I=297 +KEY=3f166a2b4e9755acedab5ff8d68f0c7e879505bb9dc25b6a487358414684325f +PT=3d5073643e7b5919fb2f0dbb7f4f7205 +CT=6bb3343c0cbf40f65baeb02396c381a1 + +I=298 +KEY=54a55e174228155ab605efdb404c8ddf364bf2fba16c1a40fd2e4a7ad01f7084 +PT=6bb3343c0cbf40f65baeb02396c381a1 +CT=32d9b2c7c79f72cd38516fb1382a6eb3 + +I=299 +KEY=667cecd085b767978e54806a7866e36c9ae2ddc8739caa87e4e8c3cb2912f54f +PT=32d9b2c7c79f72cd38516fb1382a6eb3 +CT=49af1a2cd93204ce25c25952e1ec81eb + +I=300 +KEY=2fd3f6fc5c856359ab96d938998a6287ec082e79cb69d84803a51ed7fc848e21 +PT=49af1a2cd93204ce25c25952e1ec81eb +CT=9578e0111bd2efb90b3808062fa3a54f + +I=301 +KEY=baab16ed47578ce0a0aed13eb629c7c83b5ae5f7407df63419bb8af30a7780d7 +PT=9578e0111bd2efb90b3808062fa3a54f +CT=81583da5a9373daf96be9c89082469e9 + +I=302 +KEY=3bf32b48ee60b14f36104db7be0dae218dff18f5576b26904840b97b6d584b90 +PT=81583da5a9373daf96be9c89082469e9 +CT=9394a35e7db2dfcbcc7c07bcd54b1838 + +I=303 +KEY=a867881693d26e84fa6c4a0b6b46b6196004593e568516dbe9c3d67c6f6ad5ba +PT=9394a35e7db2dfcbcc7c07bcd54b1838 +CT=f8f59fe73b7cb55cc905d10835033654 + +I=304 +KEY=509217f1a8aedbd833699b035e45804d7402f02263662fd103db90d87e47e0bc +PT=f8f59fe73b7cb55cc905d10835033654 +CT=65c753afee1f1985dd40ec74654fbd15 + +I=305 +KEY=3555445e46b1c25dee2977773b0a3d588e4294decdf632d4da60079733feef9a +PT=65c753afee1f1985dd40ec74654fbd15 +CT=61b77bfca90ea9a3ffbde3fe4ea29d5e + +I=306 +KEY=54e23fa2efbf6bfe1194948975a8a0062ea4de464abb7eae9ce250dcbe709b20 +PT=61b77bfca90ea9a3ffbde3fe4ea29d5e +CT=216800b8935b7c6f617dbb6f2207084f + +I=307 +KEY=758a3f1a7ce4179170e92fe657afa84912d62380a7d6912b70b399b9ce8ce530 +PT=216800b8935b7c6f617dbb6f2207084f +CT=013a4e0093741a94c2970d40dbda1b77 + +I=308 +KEY=74b0711aef900d05b27e22a68c75b33e98030bd3e649c88fdd1b0e79d1d2b362 +PT=013a4e0093741a94c2970d40dbda1b77 +CT=f67a51a33fe9f610cbd5cb0f4097af87 + +I=309 +KEY=82ca20b9d079fb1579abe9a9cce21cb94b7236f38044991328e628a65bf70f22 +PT=f67a51a33fe9f610cbd5cb0f4097af87 +CT=b376c98c344f0a29a1c58a5078bd83a1 + +I=310 +KEY=31bce935e436f13cd86e63f9b45f9f1805fd684fc2d4ed7003efe093cdf0566a +PT=b376c98c344f0a29a1c58a5078bd83a1 +CT=dfb141ab44db37500fa4ed97ba1c8ff7 + +I=311 +KEY=ee0da89ea0edc66cd7ca8e6e0e4310ef6d7429f7261dc4853d2bb514803b0bd0 +PT=dfb141ab44db37500fa4ed97ba1c8ff7 +CT=53f8b416e6fbac6ab6cfb427f60be3bc + +I=312 +KEY=bdf51c8846166a0661053a49f848f353d6d01d18c4f4efb5db3b64b57ad14c73 +PT=53f8b416e6fbac6ab6cfb427f60be3bc +CT=991301040233883d7484115f1a80e016 + +I=313 +KEY=24e61d8c4425e23b15812b16e2c81345850f3a001c438414cf30efef60334388 +PT=991301040233883d7484115f1a80e016 +CT=647c5f7de6a67b4cc21c29a420041b56 + +I=314 +KEY=409a42f1a2839977d79d02b2c2cc08130564d071a57d34ce06447a36aa345da4 +PT=647c5f7de6a67b4cc21c29a420041b56 +CT=732efa1eb54dc106c6918952e11184fe + +I=315 +KEY=33b4b8ef17ce5871110c8be023dd8ced67339144a7955bdcc32bb7286bb576e7 +PT=732efa1eb54dc106c6918952e11184fe +CT=16b199fabb2f6f077a9eeb511343f5ec + +I=316 +KEY=25052115ace137766b9260b1309e7901b826dafb6623c8a19bd5c22a56bc63fd +PT=16b199fabb2f6f077a9eeb511343f5ec +CT=cda74cb0d65a56a02ebe406b11b4ae10 + +I=317 +KEY=e8a26da57abb61d6452c20da212ad711e5a4191d791c19fb1394ee5299dc91be +PT=cda74cb0d65a56a02ebe406b11b4ae10 +CT=b0b1cdb28f8281db99095da4634c1818 + +I=318 +KEY=5813a017f539e00ddc257d7e4266cf098cff8fd6e61d0792ce4a8e0ade451ccb +PT=b0b1cdb28f8281db99095da4634c1818 +CT=d576a1a030c78d0f785eca0cca07fef8 + +I=319 +KEY=8d6501b7c5fe6d02a47bb772886131f1337885e170dc4da2259778c5078400c5 +PT=d576a1a030c78d0f785eca0cca07fef8 +CT=5979788809e0d89ee7391c93d2db5638 + +I=320 +KEY=d41c793fcc1eb59c4342abe15aba67c96d37f0299e58a6a957f260fd7f1f699d +PT=5979788809e0d89ee7391c93d2db5638 +CT=1cf868aca60b7b511a7cdb88fd0bf04b + +I=321 +KEY=c8e411936a15cecd593e7069a7b1978207a46dc61387ba26322a6a84d7dbed92 +PT=1cf868aca60b7b511a7cdb88fd0bf04b +CT=8d62cf754b663b32a2529d0220b99a48 + +I=322 +KEY=4586dee62173f5fffb6ced6b87080dcaa74f69250f45bf0ea81218baf057f6e8 +PT=8d62cf754b663b32a2529d0220b99a48 +CT=1d5842c6e7cce2709ba29a3227e3f860 + +I=323 +KEY=58de9c20c6bf178f60ce7759a0ebf5aafbfd110d74e683b4348d84329a7f10ce +PT=1d5842c6e7cce2709ba29a3227e3f860 +CT=ba958bb5cc6ad16f2820b23395f0942b + +I=324 +KEY=e24b17950ad5c6e048eec56a351b6181000530b730660be25a6bd0764b021760 +PT=ba958bb5cc6ad16f2820b23395f0942b +CT=6986065aa25054a7d06912e5905474fe + +I=325 +KEY=8bcd11cfa88592479887d78fa54f157f0c66f84f343d332148285636c30da218 +PT=6986065aa25054a7d06912e5905474fe +CT=0ea081d618ae77c0fd2ee448419ec224 + +I=326 +KEY=856d9019b02be58765a933c7e4d1d75b0656468eca7b4030d877c03e0d089f41 +PT=0ea081d618ae77c0fd2ee448419ec224 +CT=e05eedbb4567efbe3e146b216ab79431 + +I=327 +KEY=65337da2f54c0a395bbd58e68e66436a7f0637626fd9835cb351a02f5c3ce3bc +PT=e05eedbb4567efbe3e146b216ab79431 +CT=bb0d16ce08581dca44763320b8191fbe + +I=328 +KEY=de3e6b6cfd1417f31fcb6bc6367f5cd4d7eeb990b854076e0bbb8f3ce9e3ae2c +PT=bb0d16ce08581dca44763320b8191fbe +CT=5fad21cacfb0a39b970b7c7a8f0018a4 + +I=329 +KEY=81934aa632a4b46888c017bcb97f4470769521e9ac670254d470645faaef1c00 +PT=5fad21cacfb0a39b970b7c7a8f0018a4 +CT=fcae3ee9928945ec11b5c23cca81a590 + +I=330 +KEY=7d3d744fa02df1849975d58073fee1e0c49592ec481bee84ae2166cc9e5364b1 +PT=fcae3ee9928945ec11b5c23cca81a590 +CT=78f8970c21fecc1c1353d5ac303a7e30 + +I=331 +KEY=05c5e34381d33d988a26002c43c49fd0a3f2153ff979af5e3e2e1c6f334f59f9 +PT=78f8970c21fecc1c1353d5ac303a7e30 +CT=65f32a1744626c17f5f9ec4106fdf112 + +I=332 +KEY=6036c954c5b1518f7fdfec6d45396ec29afdcb7999f8b8bd2a089f286f9fa256 +PT=65f32a1744626c17f5f9ec4106fdf112 +CT=5a48bd5a8e7a0a891992e0645ec601da + +I=333 +KEY=3a7e740e4bcb5b06664d0c091bff6f1888471ea8c77f0bdfd679936cee3e073c +PT=5a48bd5a8e7a0a891992e0645ec601da +CT=997e678e21242ebdc762a15b0185a9ff + +I=334 +KEY=a30013806aef75bba12fad521a7ac6e7cfc8ac91a40902988bd869ab57a0ab67 +PT=997e678e21242ebdc762a15b0185a9ff +CT=8fd42dc3dcb9c2e540ed0f4b0551efed + +I=335 +KEY=2cd43e43b656b75ee1c2a2191f2b290ae79bb07c16b56a4681ee08981394e873 +PT=8fd42dc3dcb9c2e540ed0f4b0551efed +CT=0b962c8ebdaf7d64fb3f272fa20dcc1d + +I=336 +KEY=274212cd0bf9ca3a1afd8536bd26e5175015fc558cf1579986f399a8d7b56f07 +PT=0b962c8ebdaf7d64fb3f272fa20dcc1d +CT=2ecf634f373d09c802d2fa87ac5aa960 + +I=337 +KEY=098d71823cc4c3f2182f7fb1117c4c777c6018409decb134eac57c137200701e +PT=2ecf634f373d09c802d2fa87ac5aa960 +CT=f1f383c8ec7708996cbcff62b76a76d4 + +I=338 +KEY=f87ef24ad0b3cb6b749380d3a6163aa303f7d19be8c18bf190b6c69e1bfad509 +PT=f1f383c8ec7708996cbcff62b76a76d4 +CT=7aa9efc8aa4700805e525b63ab1768a6 + +I=339 +KEY=82d71d827af4cbeb2ac1dbb00d0152053be91fd704181f26c28a9a02b155504d +PT=7aa9efc8aa4700805e525b63ab1768a6 +CT=2e37e77fbfaa656e955177b4ea0b6bd5 + +I=340 +KEY=ace0fafdc55eae85bf90ac04e70a39d08dc6e8927108ed32640626d079351eb6 +PT=2e37e77fbfaa656e955177b4ea0b6bd5 +CT=f414d9e2c523f5e9c44c4049a4b602e7 + +I=341 +KEY=58f4231f007d5b6c7bdcec4d43bc3b3730dbe0d4e8fff4900e8af6374d8876eb +PT=f414d9e2c523f5e9c44c4049a4b602e7 +CT=f75e73c33546631ec5a081d8d1e55f61 + +I=342 +KEY=afaa50dc353b3872be7c6d95925964564f6908f158fb2e7206ec2c7cf28df83e +PT=f75e73c33546631ec5a081d8d1e55f61 +CT=aa6ef2930678811aa2c64ebc43c228fd + +I=343 +KEY=05c4a24f3343b9681cba2329d19b4cabeb47566beb0adb7adeb83e0ed19cb877 +PT=aa6ef2930678811aa2c64ebc43c228fd +CT=ab4a40b1dfdd20e7f528baf3a062eb85 + +I=344 +KEY=ae8ee2feec9e998fe99299da71f9a72e8cf079c36393d5f91b8d2925b23da159 +PT=ab4a40b1dfdd20e7f528baf3a062eb85 +CT=44aabe0aef83592c9077cae4a09e4802 + +I=345 +KEY=ea245cf4031dc0a379e5533ed167ef2c5f6ee9aa84f49f91d51a6d0ad7696e64 +PT=44aabe0aef83592c9077cae4a09e4802 +CT=afba8b63cfcc72e5cd6aed73b4cf2b0a + +I=346 +KEY=459ed797ccd1b246b48fbe4d65a8c426cb6c87f7c06dfb8f071a84ba63fe8279 +PT=afba8b63cfcc72e5cd6aed73b4cf2b0a +CT=7a5cb5ec01c723ef4bada9395a842d83 + +I=347 +KEY=3fc2627bcd1691a9ff2217743f2ce9a52ddc37de150bfa3e514bb3b482f1f016 +PT=7a5cb5ec01c723ef4bada9395a842d83 +CT=c3b77c4028df0c8359477a90f3dcad81 + +I=348 +KEY=fc751e3be5c99d2aa6656de4ccf0442412556a883f2dda5d6b556707db4483b9 +PT=c3b77c4028df0c8359477a90f3dcad81 +CT=07ad1ccf33d649e692e4498865f80761 + +I=349 +KEY=fbd802f4d61fd4cc3481246ca9084345bb032d42bf0e274f75976f91c0d052f8 +PT=07ad1ccf33d649e692e4498865f80761 +CT=39be8dfa7914ae166e412be68ab45249 + +I=350 +KEY=c2668f0eaf0b7ada5ac00f8a23bc110c32a6f9bfdd9d6839d91e3320ac1d73d9 +PT=39be8dfa7914ae166e412be68ab45249 +CT=e54b7e6fba526d40591cf76b89d65373 + +I=351 +KEY=272df1611559179a03dcf8e1aa6a427fad2556b26fb607622ae50e4b975d48de +PT=e54b7e6fba526d40591cf76b89d65373 +CT=e9c9ffbbe54b74d9103fad3251a75b22 + +I=352 +KEY=cee40edaf012634313e355d3fbcd195d9a80735160315fddbe90201f718e1abe +PT=e9c9ffbbe54b74d9103fad3251a75b22 +CT=148201d2aac05bdf41b12b2c076a609f + +I=353 +KEY=da660f085ad2389c52527efffca779c222d21806c5c7f51479a99d633aa1ac13 +PT=148201d2aac05bdf41b12b2c076a609f +CT=81d4ba0822cc17af0d3ef656bb6007cf + +I=354 +KEY=5bb2b500781e2f335f6c88a947c77e0d8fbb308bccf6501eea49044634086b0f +PT=81d4ba0822cc17af0d3ef656bb6007cf +CT=cb1ca3fe723c304b2a35b6a03b388c63 + +I=355 +KEY=90ae16fe0a221f7875593e097cfff26e334c3da3bcc9a22386dc70b27e632625 +PT=cb1ca3fe723c304b2a35b6a03b388c63 +CT=2d5c95e73c9b6319ddff7cecc5e58fd7 + +I=356 +KEY=bdf2831936b97c61a8a642e5b91a7db9227a5a39a57c6cfba306893da321e29d +PT=2d5c95e73c9b6319ddff7cecc5e58fd7 +CT=1e09bab779788cb88ec46afa4decddb1 + +I=357 +KEY=a3fb39ae4fc1f0d92662281ff4f6a0088ff285f5936aa7cf62d4940628492036 +PT=1e09bab779788cb88ec46afa4decddb1 +CT=5a2e0185ed0a3bcf0449feaafe12bae4 + +I=358 +KEY=f9d5382ba2cbcb16222bd6b50ae41aec55a3e7f3fd7c4884d825869670d5923c +PT=5a2e0185ed0a3bcf0449feaafe12bae4 +CT=2edd9eb6bf09d065c90551b2096350ca + +I=359 +KEY=d708a69d1dc21b73eb2e870703874a269d32728a26dee4e24a976884565ffb2e +PT=2edd9eb6bf09d065c90551b2096350ca +CT=2bae8f9327cd1826a9ef64f918723073 + +I=360 +KEY=fca6290e3a0f035542c1e3fe1bf57a55e195ca6d3cb3a03508eb402ca171cf24 +PT=2bae8f9327cd1826a9ef64f918723073 +CT=492b76bbb904701e5f6620693c455df3 + +I=361 +KEY=b58d5fb5830b734b1da7c39727b027a6ac54c38af96b0c99b34a48611b9276c3 +PT=492b76bbb904701e5f6620693c455df3 +CT=70185906be32d3f110d663fc0882072d + +I=362 +KEY=c59506b33d39a0ba0d71a06b2f32208b8d002cc1f3e7725279e62445b4659428 +PT=70185906be32d3f110d663fc0882072d +CT=5504ce475f166f794feb7f14e27766f8 + +I=363 +KEY=9091c8f4622fcfc3429adf7fcd454673fbf6ae3831ae4796dd96ed6aef2f9492 +PT=5504ce475f166f794feb7f14e27766f8 +CT=90449cc02763db30b09a8b483ab682f5 + +I=364 +KEY=00d55434454c14f3f2005437f7f3c486cf82b26d4ddaf69f7eb32eddf8ef6225 +PT=90449cc02763db30b09a8b483ab682f5 +CT=9456ced5c5ec9616e21510313f486bac + +I=365 +KEY=94839ae180a082e510154406c8bbaf2a832153785ce603339e89efbbfa62ddc8 +PT=9456ced5c5ec9616e21510313f486bac +CT=f8fa779ede94704d1612c80eaa3914bb + +I=366 +KEY=6c79ed7f5e34f2a806078c086282bb912e2a97414234899e7bae64e5ff82dbe3 +PT=f8fa779ede94704d1612c80eaa3914bb +CT=279675a5bffd200ba7768e668cc93a49 + +I=367 +KEY=4bef98dae1c9d2a3a171026eee4b81d859269f7a3368fdee859ad0ba7ce7db00 +PT=279675a5bffd200ba7768e668cc93a49 +CT=ef89fe2c859a3fab7b294823a75def19 + +I=368 +KEY=a46666f66453ed08da584a4d49166ec1d21c4e6ca881e3f768ae793de5540574 +PT=ef89fe2c859a3fab7b294823a75def19 +CT=a5f4cf11ed8b8db49acae8bbc20d9aa9 + +I=369 +KEY=0192a9e789d860bc4092a2f68b1bf46887307e5b62693639cdd893c3c697ac75 +PT=a5f4cf11ed8b8db49acae8bbc20d9aa9 +CT=1beda7dda6d8a9d681e8a828ec9cf7d0 + +I=370 +KEY=1a7f0e3a2f00c96ac17a0ade678703b81fc950ea210b67be7ac3d84a005ba57c +PT=1beda7dda6d8a9d681e8a828ec9cf7d0 +CT=6292de24b42bae086e13120dacc30a5f + +I=371 +KEY=78edd01e9b2b6762af6918d3cb4409e78e83a4024d7c6bdb1340f1d5894e4173 +PT=6292de24b42bae086e13120dacc30a5f +CT=33cbd5a6f0fec3a090dedd175f14f7d2 + +I=372 +KEY=4b2605b86bd5a4c23fb7c5c49450fe359c1c5bb789aae0820873c67ca47bb697 +PT=33cbd5a6f0fec3a090dedd175f14f7d2 +CT=356a8fbbe3bb929c4fafb9f6204189dc + +I=373 +KEY=7e4c8a03886e365e70187c32b41177e96694d007e4226dc130a3f307135331e3 +PT=356a8fbbe3bb929c4fafb9f6204189dc +CT=a1c9d464ce544225e2c11f9beea27174 + +I=374 +KEY=df855e67463a747b92d963a95ab3069dbf71b5c3aa59cfb6d1959a291350524c +PT=a1c9d464ce544225e2c11f9beea27174 +CT=0ed64fd51a25f58358cc77d04c4432bc + +I=375 +KEY=d15311b25c1f81f8ca15147916f734211001148af79803f58655be34e17a9e41 +PT=0ed64fd51a25f58358cc77d04c4432bc +CT=5fa8c745dccac2ba0c68b88aea94a76e + +I=376 +KEY=8efbd6f780d54342c67dacf3fc63934f7c13ee8522c5ebd64dd713295194b337 +PT=5fa8c745dccac2ba0c68b88aea94a76e +CT=f56bcf076ea6adfbbb1fe8a81f643196 + +I=377 +KEY=7b9019f0ee73eeb97d62445be307a2d949f55c09f37827128578be424ec31f65 +PT=f56bcf076ea6adfbbb1fe8a81f643196 +CT=841e8bb17f24ddb4ac852d73f6dd8401 + +I=378 +KEY=ff8e92419157330dd1e7692815da26d88b18124adc65223ee6fb349d018acb71 +PT=841e8bb17f24ddb4ac852d73f6dd8401 +CT=a823a09e162a2bd92c3994670e7c75c5 + +I=379 +KEY=57ad32df877d18d4fddefd4f1ba6531d1f3eb1c77c851c5a44e2e20c2b3ea6fc +PT=a823a09e162a2bd92c3994670e7c75c5 +CT=9acb428066b282ed5e3158ca1b6f24b4 + +I=380 +KEY=cd66705fe1cf9a39a3efa58500c977a902158a9639809c880c5f584878773780 +PT=9acb428066b282ed5e3158ca1b6f24b4 +CT=f386ac5bb8ee37118bf4a71d13d4beca + +I=381 +KEY=3ee0dc045921ad28281b0298131dc9638339ad6e46975a1a672cc93784eb31dd +PT=f386ac5bb8ee37118bf4a71d13d4beca +CT=a24c3c8acb59b268d16a6ca1848525f0 + +I=382 +KEY=9cace08e92781f40f9716e399798ec937a29cb1f506bf385f16648798df94313 +PT=a24c3c8acb59b268d16a6ca1848525f0 +CT=c6b950baf41d9cc4b4292ac8e01af0cc + +I=383 +KEY=5a15b034666583844d5844f177821c5f552f103ad76bad085ee453e9ae6efc6d +PT=c6b950baf41d9cc4b4292ac8e01af0cc +CT=c9f0e86d40b1cd620818a38b68512f68 + +I=384 +KEY=93e5585926d44ee64540e77a1fd33337fd1ac5844f5d4527b8884d785151b5cc +PT=c9f0e86d40b1cd620818a38b68512f68 +CT=e78cd32d5532b74590d23c46dd235daa + +I=385 +KEY=74698b7473e6f9a3d592db3cc2f06e9d04c2fedc31fb8dc05e8c2588e6f8c37a +PT=e78cd32d5532b74590d23c46dd235daa +CT=a269ecae359ee5368232430fbae47f84 + +I=386 +KEY=d60067da46781c9557a0983378141119ea48cef13bb270700616c0a29f08822c +PT=a269ecae359ee5368232430fbae47f84 +CT=0d87950d2221b2476e5dd281e48cee78 + +I=387 +KEY=db87f2d76459aed239fd4ab29c98ff613363709056560c323c440e4702d86846 +PT=0d87950d2221b2476e5dd281e48cee78 +CT=2c5dd3a62a3b57bb70296098e4c4f202 + +I=388 +KEY=f7da21714e62f96949d42a2a785c0d639df374f5a46157ef1f5de405ed5addb7 +PT=2c5dd3a62a3b57bb70296098e4c4f202 +CT=099d067b977c9333b999f22e0804f5ff + +I=389 +KEY=fe47270ad91e6a5af04dd8047058f89c4a97750300d3fe9dd0c198ec0965c324 +PT=099d067b977c9333b999f22e0804f5ff +CT=84e1d72641f8224d26c55a5554046412 + +I=390 +KEY=7aa6f02c98e64817d6888251245c9c8e6ab63a034dbc3cbe136987072eb6479c +PT=84e1d72641f8224d26c55a5554046412 +CT=ac16fee8ee9c01058664f6f2ecccffe8 + +I=391 +KEY=d6b00ec4767a491250ec74a3c89063660332d1badd39d92c7a0fbe65196f01b4 +PT=ac16fee8ee9c01058664f6f2ecccffe8 +CT=e33e5fe9b332035441a5ce66fb4a1e4e + +I=392 +KEY=358e512dc5484a461149bac533da7d2816236e093bd767cd38fec5937eb415da +PT=e33e5fe9b332035441a5ce66fb4a1e4e +CT=2a453baea8389046e3f6fdc8979c6951 + +I=393 +KEY=1fcb6a836d70da00f2bf470da446147979f67cc8dcfcd53b76c4106de59b17d0 +PT=2a453baea8389046e3f6fdc8979c6951 +CT=b5fc033918a4ba5dab5fa3eec06ebcd6 + +I=394 +KEY=aa3769ba75d4605d59e0e4e36428a8afc9f57c321612a862cfded2929078ea57 +PT=b5fc033918a4ba5dab5fa3eec06ebcd6 +CT=008f4acbb4523284d4a98a5afec607e4 + +I=395 +KEY=aab82371c18652d98d496eb99aeeaf4b12e39aaa9a0bb569fa3219656e7a1b43 +PT=008f4acbb4523284d4a98a5afec607e4 +CT=1fb27b01fc7f85c5150890bf538b33e1 + +I=396 +KEY=b50a58703df9d71c9841fe06c9659caa282cf8d8170abd5785c222e7146b0f90 +PT=1fb27b01fc7f85c5150890bf538b33e1 +CT=2b790bb52acac2715e7b7e78c2010940 + +I=397 +KEY=9e7353c51733156dc63a807e0b6495ea2ff760f7e65bc859b692d4cdb1bb8b0b +PT=2b790bb52acac2715e7b7e78c2010940 +CT=403e1263eb5cce8f76fe8ab09e48dc39 + +I=398 +KEY=de4d41a6fc6fdbe2b0c40ace952c49d37626c1e0ec4186f9657d5abf51abfb6d +PT=403e1263eb5cce8f76fe8ab09e48dc39 +CT=2616add8c1ca8db1fecd93ed604e4ef3 + +I=399 +KEY=f85bec7e3da556534e099923f5620720dcab50ec752ca0f75e325ade1b403f10 +PT=2616add8c1ca8db1fecd93ed604e4ef3 +CT=f91b76a583320059eb8ece9797eeee90 + + + + + + + + + + + + + diff -urN linux/crypto/testing/test.sha1 int.2.4.0.t2/crypto/testing/test.sha1 --- linux/crypto/testing/test.sha1 Thu Jan 1 01:00:00 1970 +++ int.2.4.0.t2/crypto/testing/test.sha1 Thu Jul 6 13:45:58 2000 @@ -0,0 +1,10 @@ + + +Test Vectors (from FIPS PUB 180-1) +"abc" + A9993E36 4706816A BA3E2571 7850C26C 9CD0D89D +"abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq" + 84983E44 1C3BD26E BAAE4AA1 F95129E5 E54670F1 +A million repetitions of "a" + 34AA973C D4C4DAA4 F61EEB2B DBAD2731 6534016F + diff -urN linux/crypto/testing/test_blowfish.c int.2.4.0.t2/crypto/testing/test_blowfish.c --- linux/crypto/testing/test_blowfish.c Thu Jan 1 01:00:00 1970 +++ int.2.4.0.t2/crypto/testing/test_blowfish.c Thu Jul 6 13:45:58 2000 @@ -0,0 +1,80 @@ +/* + * crypto/testing/test_blowfish.c + * + * Written by Raimar Falke 1998-12-17 + * Copied from speed.c. + * + * Copyright 1998 by Raimar Falke. Redistribution of this file + * is permitted under the GNU Public License. + */ + +#define __KERNEL__ + +typedef int u32; +typedef char u8; + +#define printk printk_dummy + +#include +#include +#include +/* #include */ + +#undef printk + +#define PRINTF(x...) do { printf(x); fflush(stdout); } while(0) + +void dump_buffer (char *buf, int size); + +#define u32 unsigned int + +int main() +{ + struct cipher_implementation *ci; + struct cipher_context *cx; + + unsigned char key1[]={0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00}; + u32 input1[2]={0x00000000, 0x00000000}; + u32 output1[2]; + + /* Register all ciphers */ + ciphers_init(); + + ci = find_cipher_by_id(CIPHER_BLOWFISH); + if (!ci) + { + PRINTF("Can't find blowfish\n"); + return 1; + } + + cx = (struct cipher_context *) malloc(sizeof(struct cipher_context)); + cx->ci = ci; + cx->keyinfo = (u32 *) malloc(ci->key_schedule_size); + ci->set_key(cx, key1, sizeof(key1)); + + ci->encrypt(cx,input1,output1,8); + dump_buffer((char *)output1,8); + + ci->decrypt(cx,output1,input1,8); + dump_buffer((char *)input1,8); + + return 0; +} + +asmlinkage int printk(const char * fmt, va_list args) +{ + return vprintf(fmt, args); +} + +void dump_buffer(char *buf, int size) +{ + int i,j; + + for (i = 0; i < size; i+= 8*4) { + for (j = 0; j < 8; j++) { + PRINTF("%08x ", *(int *)buf); + buf += 4; + } + PRINTF("\n"); + } +} diff -urN linux/crypto/testing/testcip.c int.2.4.0.t2/crypto/testing/testcip.c --- linux/crypto/testing/testcip.c Thu Jan 1 01:00:00 1970 +++ int.2.4.0.t2/crypto/testing/testcip.c Thu Jul 6 13:45:58 2000 @@ -0,0 +1,212 @@ +/* + * crypto/testing/test.c + * + * Written by Alexander Kjeldaas 1998-12-17 + * + * Copyright 1998 by Alexander Kjeldaas. Redistribution of this file + * is permitted under the GNU Public License. + */ + +/* WARNING: This code isn't working yet! */ + +#define __KERNEL__ +typedef unsigned char u8; +typedef unsigned short u16; +typedef unsigned int u32; +#define printk printk_dummy + +#include +#include + +#undef __KERNEL__ +#undef printk + +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#define PRINTF(x...) do { printf(x); fsync(1); } while(0) + +void dump_buffer (unsigned char *buf, int size); +int my_memcmp(char *buf1, char *buf2, int size); +void show_usage(); +int parsehex(char *hex, char *buf); +void net2host(char *x, int size); + +int plaintext[512]; +int ciphertext[512]; +int testres[512]; +char key[512]; +int plaintextlen, ciphertextlen, keylen; + +int main(int argc, char **argv) +{ + struct cipher_implementation *ci = NULL; + struct cipher_context *cx; + int given_args = 0; + int arg, err; + + /* Register all ciphers */ + cryptoapi_init(); + + memset(plaintext, 0, sizeof(plaintext)); + memset(ciphertext, 0, sizeof(ciphertext)); + memset(testres, 0, sizeof(testres)); + memset(key, 0, sizeof(key)); + + + + while((arg = getopt(argc,argv,"hp:e:c:k:")) != EOF) { + switch(arg) { + case 'h': + show_usage(); + break; + case 'p': + plaintextlen = parsehex(optarg, (char *)&plaintext); + given_args |= 2; + break; + case 'e': + ciphertextlen = parsehex(optarg, (char *)&ciphertext); + given_args |= 4; + break; + case 'k': + keylen = parsehex(optarg, key); + given_args |= 8; + break; + case 'c': + if (!(ci = find_cipher_by_name(optarg))) { + PRINTF("no cipher by that name (%s)\n", optarg); + exit(1); + } + given_args |= 1; + break; + } + } + if (given_args != 15) + show_usage(); + if (ciphertextlen != plaintextlen) { + PRINTF("size of plaintext and ciphertext differ\n"); + exit(1); + } + + cx = (struct cipher_context *) malloc(sizeof(struct cipher_context)); + cx->ci = ci; + cx->keyinfo = (u32 *) malloc(ci->key_schedule_size); + if ((err = ci->set_key(cx, (char *)key, keylen))) { + PRINTF("set_key returned error %d\n", err); + exit(1); + } + if ((err = ci->encrypt(cx, (u8 *)plaintext, (u8 *)testres, + plaintextlen))) { + PRINTF("encrypt returned error %d\n", err); + } + if (memcmp(testres, ciphertext, ciphertextlen)) { + PRINTF("encrypted text and ciphertext differ\n"); + PRINTF("generated ciphertext (%d bytes):\n", ciphertextlen); + dump_buffer((char *)testres, ciphertextlen); + PRINTF("correct ciphertext (%d bytes):\n", ciphertextlen); + dump_buffer((char *)ciphertext, ciphertextlen); + } + if ((err = ci->decrypt(cx, (u8 *)ciphertext, (u8 *)testres, + ciphertextlen))) { + PRINTF("decrypt returned error %d\n", err); + } + if (memcmp(testres, plaintext, plaintextlen)) { + PRINTF("decrypted ciphertext and plaintext differ\n"); + PRINTF("generated plaintext (%d bytes):\n", plaintextlen); + dump_buffer((char *)testres, plaintextlen); + PRINTF("correct plaintext (%d bytes):\n", plaintextlen); + dump_buffer((char *)plaintext, plaintextlen); + } + return 0; +} + +int h2int(char c) +{ + c = tolower(c); + if (c >= '0' && c <= '9') + return c - '0'; + return c - 'a' + 10; +} + +char int2h(int h) +{ + if (h >= 0 && h <= 9) + return (char)(h + '0'); + return (char)h - 10 + 'a'; +} + +int parsehex(char *h, char *b) +{ + int size = 0; + /* int i; */ + char *hex = h, *buf = b; + if ((strlen(hex) & 1) == 1) { + *buf = h2int(*hex); + buf++; hex++; + size++; + } + for (; *hex; hex+=2, buf++, size++) { + *buf = (h2int(hex[0]) << 4) + h2int(hex[1]); + } + /* net2host(b, size); */ + return size; +} + +void net2host(char *x, int size) +{ + int *y = (int *)x; + size /= sizeof(int); + for (; size >= 0; size--) + y[size] = ntohl(y[size]); +} + +asmlinkage int printk(const char * fmt, va_list args) +{ + return vprintf(fmt, args); +} + + +void dump_buffer(unsigned char *buf, int size) +{ + int i; + /* net2host(buf, size); */ + for (i = 0; i < size; i++, buf++) { + PRINTF("%c", int2h((*buf) >> 4)); + PRINTF("%c", int2h((*buf) & 0xf)); + } + + PRINTF("\n"); +} + +int my_memcmp(char *buf1, char *buf2, int size) +{ + int i; + int *b1 = (int *)buf1; + int *b2 = (int *)buf2; + for (i = 0; i < size; i+=sizeof(int)) { + if (*b1 != *b2) { + PRINTF("Error at offset %d: buf1=%0x, buf2=%0x\n", + i, *b1, *b2); + return 1; + } + b1++;b2++; + } + return memcmp(buf1, buf2, size); +} + + +void show_usage() +{ + printf("Usage: testcip [-h] -c -p -e <encryptedtext>\n"); + printf(" plaintext and encryptedtext are hex\n"); + exit(1); +} + diff -urN linux/drivers/block/Makefile int.2.4.0.t2/drivers/block/Makefile --- linux/drivers/block/Makefile Thu Jul 6 16:08:01 2000 +++ int.2.4.0.t2/drivers/block/Makefile Thu Jul 6 14:14:10 2000 @@ -32,6 +32,7 @@ obj-$(CONFIG_AMIGA_Z2RAM) += z2ram.o obj-$(CONFIG_BLK_DEV_RAM) += rd.o obj-$(CONFIG_BLK_DEV_LOOP) += loop.o +obj-$(CONFIG_BLK_DEV_LOOP_GEN) += loop_gen.o obj-$(CONFIG_BLK_DEV_PS2) += ps2esdi.o obj-$(CONFIG_BLK_DEV_XD) += xd.o obj-$(CONFIG_BLK_CPQ_DA) += cpqarray.o diff -urN linux/drivers/block/ll_rw_blk.c int.2.4.0.t2/drivers/block/ll_rw_blk.c --- linux/drivers/block/ll_rw_blk.c Thu Jul 6 16:08:01 2000 +++ int.2.4.0.t2/drivers/block/ll_rw_blk.c Thu Jul 6 14:14:29 2000 @@ -934,6 +934,9 @@ #ifdef CONFIG_BLK_DEV_RAM rd_init(); #endif +#ifdef CONFIG_BLK_DEV_LOOP_GEN + loop_gen_init(); +#endif #ifdef CONFIG_BLK_DEV_LOOP loop_init(); #endif diff -urN linux/drivers/block/loop.c int.2.4.0.t2/drivers/block/loop.c --- linux/drivers/block/loop.c Thu Jul 6 16:08:01 2000 +++ int.2.4.0.t2/drivers/block/loop.c Thu Jul 6 14:06:56 2000 @@ -50,6 +50,10 @@ #include <linux/module.h> +#ifdef CONFIG_KMOD +#include <linux/kmod.h> +#endif + #include <linux/sched.h> #include <linux/fs.h> #include <linux/file.h> @@ -516,17 +520,50 @@ int err = 0; if (type) { struct loop_func_table *xfer = xfer_funcs[type]; + + if (xfer->lock) + xfer->lock(lo); if (xfer->init) err = xfer->init(lo, i); - if (!err) { + if (!err) { lo->lo_encrypt_type = type; - if (xfer->lock) - xfer->lock(lo); + } else { + if (xfer->unlock) + xfer->unlock(lo); } } return err; } + +static int loop_request_xfer(int type) +{ + char module_name[50]; + + if (type >= MAX_LO_CRYPT) + return -EINVAL; + if (xfer_funcs[type]) { + return 0; + } + +#ifdef CONFIG_KMOD + sprintf(module_name, "loop-xfer-%d", type); + request_module(module_name); + if (xfer_funcs[type]) { + return 0; + } + + sprintf(module_name, "loop-xfer-gen-%x", type & ~0xf); + request_module(module_name); + if (xfer_funcs[type]) { + return 0; + } +#endif + return -EINVAL; +} + + + static int loop_clr_fd(struct loop_device *lo, kdev_t dev) { struct dentry *dentry = lo->lo_dentry; @@ -582,8 +619,9 @@ if ((unsigned int) info.lo_encrypt_key_size > LO_KEY_SIZE) return -EINVAL; type = info.lo_encrypt_type; - if (type >= MAX_LO_CRYPT || xfer_funcs[type] == NULL) - return -EINVAL; + err = loop_request_xfer(lo); + if (err) + return err; err = loop_release_xfer(lo); if (!err) err = loop_init_xfer(lo, type, &info); @@ -673,7 +711,7 @@ static int lo_open(struct inode *inode, struct file *file) { struct loop_device *lo; - int dev, type; + int dev; if (!inode) @@ -688,9 +726,6 @@ } lo = &loop_dev[dev]; - type = lo->lo_encrypt_type; - if (type && xfer_funcs[type] && xfer_funcs[type]->lock) - xfer_funcs[type]->lock(lo); lo->lo_refcnt++; MOD_INC_USE_COUNT; return 0; @@ -716,10 +751,7 @@ printk(KERN_ERR "lo_release: refcount(%d) <= 0\n", lo->lo_refcnt); else { - int type = lo->lo_encrypt_type; --lo->lo_refcnt; - if (xfer_funcs[type] && xfer_funcs[type]->unlock) - xfer_funcs[type]->unlock(lo); MOD_DEC_USE_COUNT; } return 0; @@ -766,8 +798,27 @@ return 0; } +struct loop_func_table *loop_find_xfer_funcs(int number) +{ + struct loop_device *lo; + struct loop_func_table *funcs = NULL; + + if ((unsigned)number >= MAX_LO_CRYPT) + return NULL; + for (lo = &loop_dev[0]; lo < &loop_dev[MAX_LOOP]; lo++) { + int type = lo->lo_encrypt_type; + if (type == number) { + funcs = xfer_funcs[type]; + break; + } + } + return funcs; +} + + EXPORT_SYMBOL(loop_register_transfer); EXPORT_SYMBOL(loop_unregister_transfer); +EXPORT_SYMBOL(loop_find_xfer_funcs); static void no_plug_device(request_queue_t *q, kdev_t device) { diff -urN linux/drivers/block/loop_gen.c int.2.4.0.t2/drivers/block/loop_gen.c --- linux/drivers/block/loop_gen.c Thu Jan 1 01:00:00 1970 +++ int.2.4.0.t2/drivers/block/loop_gen.c Thu Jul 6 14:06:18 2000 @@ -0,0 +1,194 @@ +#include <linux/module.h> +#include <linux/errno.h> +#include <linux/init.h> +#include <linux/fs.h> +#include <linux/string.h> +#include <linux/mm.h> +#include <linux/slab.h> +#include <asm/byteorder.h> +#include <linux/loop.h> +#include <linux/crypto.h> + + +static char loop_gen_xfers[MAX_CIPHER] = {0}; + +static int loop_gen_transfer(struct loop_device *lo, int cmd, char *raw_buf, + char *loop_buf, int size, int real_block) +{ + struct cipher_context * cx = (struct cipher_context *) lo->key_data; + struct cipher_implementation *ci = cx->ci; + int bsize = ci->blocksize; + int (*encdecfunc)(struct cipher_context *cx, const u8 *in, u8 *out, int size); + char *in, *out; + + if (cmd == READ) { + encdecfunc = ci->decrypt; + in = raw_buf; + out = loop_buf; + } else { + encdecfunc = ci->encrypt; + in = loop_buf; + out = raw_buf; + } + if (!encdecfunc) { + printk("ouch! encdecfunc == NULL!\n"); + return -EINVAL; + } + cx->iv[0] = real_block; + if (bsize) { + while (size >= bsize) { + encdecfunc(cx, in, out, bsize); + in += bsize; + out += bsize; + size -= bsize; + } + if (size != 0) { + return -EINVAL; + } + } else { /* variable-size cipher */ + encdecfunc(cx, in, out, size); + } + + return 0; +} + + +static int loop_gen_init2(struct loop_device *lo, struct loop_info *info) +{ + int cipher,err = -EINVAL; + struct cipher_implementation *ci; + struct cipher_context *cx; + + switch (info->lo_encrypt_type) { + case LO_CRYPT_NONE: cipher = CIPHER_NONE; break; + case LO_CRYPT_XOR: cipher = CIPHER_XOR; break; + case LO_CRYPT_DES: cipher = CIPHER_cbc_DES; break; + case LO_CRYPT_FISH2: cipher = CIPHER_cbc_FISH2; break; + case LO_CRYPT_BLOW: cipher = CIPHER_cbc_BLOWFISH; break; + case LO_CRYPT_CAST128: cipher = CIPHER_cbc_CAST128; break; + case LO_CRYPT_IDEA: cipher = CIPHER_cbc_IDEA; break; + case LO_CRYPT_SERPENT: cipher = CIPHER_cbc_SERPENT; break; + case LO_CRYPT_MARS: cipher = CIPHER_cbc_MARS; break; + case LO_CRYPT_SKIPJACK: cipher = CIPHER_cbc_SKIPJACK; break; + case LO_CRYPT_RC5: cipher = CIPHER_cbc_RC5; break; + case LO_CRYPT_RC6: cipher = CIPHER_cbc_RC6; break; + case LO_CRYPT_3DES: cipher = CIPHER_cbc_3DES; break; + case LO_CRYPT_E2: cipher = CIPHER_cbc_E2; break; + case LO_CRYPT_CAST256: cipher = CIPHER_cbc_CAST256; break; + case LO_CRYPT_DFC: cipher = CIPHER_cbc_DFC; break; + default: goto out; + } + + ci = find_cipher_by_id(cipher); + if (!ci) + goto out; + + if (ci->trans.t_id != cipher) { + printk("find_cipher_by_id gave me the wrong cipher!\n"); + goto out_ci; + } + + ci->lock(); + err = -ENOMEM; + cx = (struct cipher_context *) kmalloc(sizeof(struct cipher_context), + GFP_KERNEL); + if (!cx) + goto out_ci; + cx->ci = ci; + memset(&cx->iv, 0, cx->ci->ivsize); + cx->keyinfo = (u32 *) kmalloc(ci->key_schedule_size, GFP_KERNEL); + if (!cx->keyinfo) + goto out_cx; + if (!ci->set_key) { + printk("Invalid cipher - set_key is NULL\n"); + err = -EINVAL; + goto out_key; + } + if (ci->set_key(cx, info->lo_encrypt_key, + info->lo_encrypt_key_size)) { + err = -EINVAL; + goto out_key; + } + lo->key_data = cx; + return 0; + + out_key: + kfree(cx->keyinfo); + out_cx: + kfree(cx); + out_ci: + ci->unlock(); + out: + return err; +} + + +static int loop_gen_release(struct loop_device *lo) +{ + struct cipher_context *cx = (struct cipher_context *) lo->key_data; + if (cx != NULL) { + memset(cx->keyinfo, 0, cx->ci->key_schedule_size); + kfree(cx->keyinfo); + cx->ci->unlock(); + memset(cx, 0, sizeof(*cx)); + kfree(cx); + lo->key_data=NULL; + } + return 0; +} + + +static void loop_gen_lock(struct loop_device *lo) +{ + MOD_INC_USE_COUNT; +} + +static void loop_gen_unlock(struct loop_device *lo) +{ + MOD_DEC_USE_COUNT; +} + +#ifdef MODULE +int __init init_module(void) +#else +int __init loop_gen_init(void) +#endif +{ + int i, n=0, err; + struct loop_func_table *funcs; + + for (i=0; i<MAX_CIPHER; i++) { + funcs = kmalloc(sizeof (struct loop_func_table), GFP_KERNEL); + memset(funcs, 0, sizeof(*funcs)); + if (funcs) { + funcs->number = i; + funcs->transfer = loop_gen_transfer; + funcs->init = loop_gen_init2; + funcs->release = loop_gen_release; + funcs->lock = loop_gen_lock; + funcs->unlock = loop_gen_unlock; + + err = loop_register_transfer(funcs); + if (!err) { + loop_gen_xfers[i] = 1; + n++; + } + } + } + return 0; +} + +#ifdef MODULE +void cleanup_module(void) +{ + int i; + + for (i=0; i<MAX_CIPHER; i++) { + if (loop_gen_xfers[i]) { + loop_unregister_transfer(i); + loop_gen_xfers[i] = 0; + } + } +} +#endif + diff -urN linux/drivers/block/loopnew.c int.2.4.0.t2/drivers/block/loopnew.c --- linux/drivers/block/loopnew.c Thu Jan 1 01:00:00 1970 +++ int.2.4.0.t2/drivers/block/loopnew.c Thu Jul 6 13:51:24 2000 @@ -0,0 +1,794 @@ +/* + * linux/drivers/block/loop.c + * + * Written by Theodore Ts'o, 3/29/93 + * + * Copyright 1993 by Theodore Ts'o. Redistribution of this file is + * permitted under the GNU Public License. + * + * DES encryption plus some minor changes by Werner Almesberger, 30-MAY-1993 + * more DES encryption plus IDEA encryption by Nicholas J. Leon, June 20, 1996 + * + * Modularized and updated for 1.1.16 kernel - Mitch Dsouza 28th May 1994 + * Adapted for 1.3.59 kernel - Andries Brouwer, 1 Feb 1996 + * + * Fixed do_loop_request() re-entrancy - Vincent.Renardias@waw.com Mar 20, 1997 + * + * Handle sparse backing files correctly - Kenn Humborg, Jun 28, 1998 + * + * Loadable modules and other fixes by AK, 1998 + * + * Make real block number available to downstream transfer functions, enables + * CBC (and relatives) mode encryption requiring unique IVs per data block. + * Reed H. Petty, rhp@draper.net + * + * Still To Fix: + * - Advisory locking is ignored here. + * - Should use an own CAP_* category instead of CAP_SYS_ADMIN + * - Should use the underlying filesystems/devices read function if possible + * to support read ahead (and for write) + * + * WARNING/FIXME: + * - The block number as IV passing to low level transfer functions is broken: + * it passes the underlying device's block number instead of the + * offset. This makes it change for a given block when the file is + * moved/restored/copied and also doesn't work over NFS. + */ + +#include <linux/module.h> + +#ifdef CONFIG_KMOD +#include <linux/kmod.h> +#endif /* CONFIG_KMOD */ + +#include <linux/sched.h> +#include <linux/fs.h> +#include <linux/file.h> +#include <linux/stat.h> +#include <linux/errno.h> +#include <linux/major.h> + +#include <linux/init.h> + +#include <asm/uaccess.h> + +#include <linux/loop.h> + +#define MAJOR_NR LOOP_MAJOR + +#define DEVICE_NAME "loop" +#define DEVICE_REQUEST do_lo_request +#define DEVICE_NR(device) (MINOR(device)) +#define DEVICE_ON(device) +#define DEVICE_OFF(device) +#define DEVICE_NO_RANDOM +#define TIMEOUT_VALUE (6 * HZ) +#include <linux/blk.h> + +#define MAX_LOOP 8 +static struct loop_device loop_dev[MAX_LOOP]; +static int loop_sizes[MAX_LOOP]; +static int loop_blksizes[MAX_LOOP]; + +#define FALSE 0 +#define TRUE (!FALSE) + +/* Forward declaration of function to create missing blocks in the + backing file (can happen if the backing file is sparse) */ +static int create_missing_block(struct loop_device *lo, int block, int blksize); + +/* + * Transfer functions + */ +static int transfer_none(struct loop_device *lo, int cmd, char *raw_buf, + char *loop_buf, int size, int real_block) +{ + if (cmd == READ) + memcpy(loop_buf, raw_buf, size); + else + memcpy(raw_buf, loop_buf, size); + return 0; +} + +static int transfer_xor(struct loop_device *lo, int cmd, char *raw_buf, + char *loop_buf, int size, int real_block) +{ + char *in, *out, *key; + int i, keysize; + + if (cmd == READ) { + in = raw_buf; + out = loop_buf; + } else { + in = loop_buf; + out = raw_buf; + } + key = lo->lo_encrypt_key; + keysize = lo->lo_encrypt_key_size; + for (i=0; i < size; i++) + *out++ = *in++ ^ key[(i & 511) % keysize]; + return 0; +} + +static int none_status(struct loop_device *lo, struct loop_info *info) +{ + return 0; +} + +static int xor_status(struct loop_device *lo, struct loop_info *info) +{ + if (info->lo_encrypt_key_size <= 0) + return -EINVAL; + return 0; +} + +struct loop_func_table none_funcs = { + number: LO_CRYPT_NONE, + transfer: transfer_none, + init: none_status +}; + +struct loop_func_table xor_funcs = { + number: LO_CRYPT_XOR, + transfer: transfer_xor, + init: xor_status +}; + +/* xfer_funcs[0] is special - its release function is never called */ +struct loop_func_table *xfer_funcs[MAX_LO_CRYPT] = { + &none_funcs, + &xor_funcs +}; + +#define MAX_DISK_SIZE 1024*1024*1024 + +static void figure_loop_size(struct loop_device *lo) +{ + int size; + + if (S_ISREG(lo->lo_dentry->d_inode->i_mode)) + size = (lo->lo_dentry->d_inode->i_size - lo->lo_offset) / BLOCK_SIZE; + else { + kdev_t lodev = lo->lo_device; + if (blk_size[MAJOR(lodev)]) + size = blk_size[MAJOR(lodev)][MINOR(lodev)] - + lo->lo_offset / BLOCK_SIZE; + else + size = MAX_DISK_SIZE; + } + + loop_sizes[lo->lo_number] = size; +} + +static void do_lo_request(void) +{ + int real_block, block, offset, len, blksize, size; + char *dest_addr; + struct loop_device *lo; + struct buffer_head *bh; + struct request *current_request; + int block_present; + +repeat: + INIT_REQUEST; + current_request=CURRENT; + CURRENT=current_request->next; + if (MINOR(current_request->rq_dev) >= MAX_LOOP) + goto error_out; + lo = &loop_dev[MINOR(current_request->rq_dev)]; + if (!lo->lo_dentry || !lo->transfer) + goto error_out; + + blksize = BLOCK_SIZE; + if (blksize_size[MAJOR(lo->lo_device)]) { + blksize = blksize_size[MAJOR(lo->lo_device)][MINOR(lo->lo_device)]; + if (!blksize) + blksize = BLOCK_SIZE; + } + + dest_addr = current_request->buffer; + + if (blksize < 512) { + block = current_request->sector * (512/blksize); + offset = 0; + } else { + block = current_request->sector / (blksize >> 9); + offset = (current_request->sector % (blksize >> 9)) << 9; + } + block += lo->lo_offset / blksize; + offset += lo->lo_offset % blksize; + if (offset > blksize) { + block++; + offset -= blksize; + } + len = current_request->current_nr_sectors << 9; + + if (current_request->cmd == WRITE) { + if (lo->lo_flags & LO_FLAGS_READ_ONLY) + goto error_out; + } else if (current_request->cmd != READ) { + printk(KERN_ERR "unknown loop device command (%d)?!?", current_request->cmd); + goto error_out; + } + spin_unlock_irq(&io_request_lock); + while (len > 0) { + + size = blksize - offset; + if (size > len) + size = len; + + real_block = block; + block_present = TRUE; + + if (lo->lo_flags & LO_FLAGS_DO_BMAP) { + real_block = bmap(lo->lo_dentry->d_inode, block); + if (!real_block) { + + /* The backing file is a sparse file and this block + doesn't exist. If reading, return zeros. If + writing, force the underlying FS to create + the block */ + if (current_request->cmd == READ) { + memset(dest_addr, 0, size); + block_present = FALSE; + } else { + if (!create_missing_block(lo, block, blksize)) { + goto error_out_lock; + } + real_block = bmap(lo->lo_dentry->d_inode, block); + } + + } + } + + if (block_present) { + int transfer_result; + int transfer_block = real_block; + bh = getblk(lo->lo_device, real_block, blksize); + if (!bh) { + printk(KERN_ERR "loop: device %s: getblk(-, %d, %d) returned NULL", + kdevname(lo->lo_device), + block, blksize); + goto error_out_lock; + } + if (!buffer_uptodate(bh) && ((current_request->cmd == READ) || + (offset || (len < blksize)))) { + ll_rw_block(READ, 1, &bh); + wait_on_buffer(bh); + if (!buffer_uptodate(bh)) { + brelse(bh); + goto error_out_lock; + } + } +#ifdef CONFIG_BLK_DEV_LOOP_USE_REL_BLOCK + transfer_block = block; +#endif + transfer_result = (lo->transfer) + (lo, current_request->cmd, bh->b_data + offset, + dest_addr, size, transfer_block); + if (transfer_result) { + printk(KERN_ERR "loop: transfer error block %d\n", block); + brelse(bh); + goto error_out_lock; + } + + if (current_request->cmd == WRITE) { + mark_buffer_uptodate(bh, 1); + mark_buffer_dirty(bh, 1); + } + brelse(bh); + } + dest_addr += size; + len -= size; + offset = 0; + block++; + } + spin_lock_irq(&io_request_lock); + current_request->next=CURRENT; + CURRENT=current_request; + end_request(1); + goto repeat; +error_out_lock: + spin_lock_irq(&io_request_lock); +error_out: + current_request->next=CURRENT; + CURRENT=current_request; + end_request(0); + goto repeat; +} + +static int create_missing_block(struct loop_device *lo, int block, int blksize) +{ + struct file *file; + loff_t new_offset; + char zero_buf[1] = { 0 }; + ssize_t retval; + mm_segment_t old_fs; + struct inode *inode; + + file = lo->lo_backing_file; + if (file == NULL) { + printk(KERN_WARNING "loop: cannot create block - no backing file\n"); + return FALSE; + } + + if (file->f_op == NULL) { + printk(KERN_WARNING "loop: cannot create block - no file ops\n"); + return FALSE; + } + + new_offset = block * blksize; + + if (file->f_op->llseek != NULL) { + file->f_op->llseek(file, new_offset, 0); + } else { + /* Do what the default llseek() code would have done */ + file->f_pos = new_offset; + file->f_reada = 0; + file->f_version = ++global_event; + } + + if (file->f_op->write == NULL) { + printk(KERN_WARNING "loop: cannot create block - file not writeable\n"); + return FALSE; + } + + old_fs = get_fs(); + set_fs(get_ds()); + + inode = file->f_dentry->d_inode; + down(&inode->i_sem); + retval = file->f_op->write(file, zero_buf, 1, &file->f_pos); + up(&inode->i_sem); + + set_fs(old_fs); + + if (retval < 0) { + printk(KERN_WARNING "loop: cannot create block - FS write failed: code %d\n", + retval); + return FALSE; + } else { + return TRUE; + } +} + +static int loop_set_fd(struct loop_device *lo, kdev_t dev, unsigned int arg) +{ + struct file *file; + struct inode *inode; + int error; + + MOD_INC_USE_COUNT; + + error = -EBUSY; + if (lo->lo_dentry) + goto out; + + error = -EBADF; + file = fget(arg); + if (!file) + goto out; + + error = -EINVAL; + inode = file->f_dentry->d_inode; + if (!inode) { + printk(KERN_ERR "loop_set_fd: NULL inode?!?\n"); + goto out_putf; + } + + if (S_ISBLK(inode->i_mode)) { + error = blkdev_open(inode, file); + lo->lo_device = inode->i_rdev; + lo->lo_flags = 0; + + /* Backed by a block device - don't need to hold onto + a file structure */ + lo->lo_backing_file = NULL; + } else if (S_ISREG(inode->i_mode)) { + if (!inode->i_op->bmap) { + printk(KERN_ERR "loop: device has no block access/not implemented\n"); + goto out_putf; + } + + /* Backed by a regular file - we need to hold onto + a file structure for this file. We'll use it to + write to blocks that are not already present in + a sparse file. We create a new file structure + based on the one passed to us via 'arg'. This is + to avoid changing the file structure that the + caller is using */ + + lo->lo_device = inode->i_dev; + lo->lo_flags = LO_FLAGS_DO_BMAP; + + error = -ENFILE; + lo->lo_backing_file = get_empty_filp(); + if (lo->lo_backing_file) { + lo->lo_backing_file->f_mode = file->f_mode; + lo->lo_backing_file->f_pos = file->f_pos; + lo->lo_backing_file->f_flags = file->f_flags; + lo->lo_backing_file->f_owner = file->f_owner; + lo->lo_backing_file->f_dentry = file->f_dentry; + lo->lo_backing_file->f_op = file->f_op; + lo->lo_backing_file->private_data = file->private_data; + + error = get_write_access(inode); + if (error) { + put_filp(lo->lo_backing_file); + lo->lo_backing_file = NULL; + } + } + } + if (error) + goto out_putf; + + if (IS_RDONLY (inode) || is_read_only(lo->lo_device)) { + lo->lo_flags |= LO_FLAGS_READ_ONLY; + set_device_ro(dev, 1); + } else { + invalidate_inode_pages (inode); + set_device_ro(dev, 0); + } + + lo->lo_dentry = dget(file->f_dentry); + lo->transfer = NULL; + lo->ioctl = NULL; + figure_loop_size(lo); + +out_putf: + fput(file); +out: + if (error) + MOD_DEC_USE_COUNT; + return error; +} + +static int loop_release_xfer(struct loop_device *lo) +{ + int err = 0; + if (lo->lo_encrypt_type) { + struct loop_func_table *xfer= xfer_funcs[lo->lo_encrypt_type]; + if (xfer && xfer->release) + err = xfer->release(lo); + if (xfer && xfer->unlock) + xfer->unlock(lo); + lo->lo_encrypt_type = 0; + } + return err; +} + +static int loop_init_xfer(struct loop_device *lo, int type, struct loop_info *i) +{ + int err = 0; + + if (type) { + struct loop_func_table *xfer = xfer_funcs[type]; + if (xfer->lock) + xfer->lock(lo); + + if (xfer->init) + err = xfer->init(lo, i); + + if (!err) + lo->lo_encrypt_type = i->lo_encrypt_type; + else { + if (xfer->unlock) + xfer->unlock(lo); + } + } + return err; +} + +static int loop_request_xfer(int type) +{ + char module_name[50]; + + if (type >= MAX_LO_CRYPT) + return -EINVAL; + if (xfer_funcs[type]) { + return 0; + } + +#ifdef CONFIG_KMOD + sprintf(module_name, "loop-xfer-%d", type); + request_module(module_name); + if (xfer_funcs[type]) { + return 0; + } + + sprintf(module_name, "loop-xfer-gen-%x", type & ~0xf); + request_module(module_name); + if (xfer_funcs[type]) { + return 0; + } +#endif + return -EINVAL; +} + +static int loop_clr_fd(struct loop_device *lo, kdev_t dev) +{ + struct dentry *dentry = lo->lo_dentry; + + if (!dentry) + return -ENXIO; + if (lo->lo_refcnt > 1) /* we needed one fd for the ioctl */ + return -EBUSY; + + if (S_ISBLK(dentry->d_inode->i_mode)) + blkdev_release (dentry->d_inode); + lo->lo_dentry = NULL; + + if (lo->lo_backing_file != NULL) { + fput(lo->lo_backing_file); + lo->lo_backing_file = NULL; + } else { + dput(dentry); + } + + loop_release_xfer(lo); + lo->transfer = NULL; + lo->ioctl = NULL; + lo->lo_device = 0; + lo->lo_encrypt_type = 0; + lo->lo_offset = 0; + lo->lo_encrypt_key_size = 0; + memset(lo->lo_encrypt_key, 0, LO_KEY_SIZE); + memset(lo->lo_name, 0, LO_NAME_SIZE); + loop_sizes[lo->lo_number] = 0; + invalidate_buffers(dev); + MOD_DEC_USE_COUNT; + return 0; +} + +static int loop_set_status(struct loop_device *lo, struct loop_info *arg) +{ + struct loop_info info; + int err; + unsigned int type; + + if (lo->lo_encrypt_key_size && lo->lo_key_owner != current->uid && + !capable(CAP_SYS_ADMIN)) + return -EPERM; + if (!lo->lo_dentry) + return -ENXIO; + if (copy_from_user(&info, arg, sizeof (struct loop_info))) + return -EFAULT; + if ((unsigned int) info.lo_encrypt_key_size > LO_KEY_SIZE) + return -EINVAL; + type = info.lo_encrypt_type; + err = loop_request_xfer(type); + if (err) + return err; + err = loop_release_xfer(lo); + if (!err) + err = loop_init_xfer(lo, type, &info); + if (err) + return err; + + lo->lo_offset = info.lo_offset; + strncpy(lo->lo_name, info.lo_name, LO_NAME_SIZE); + + lo->transfer = xfer_funcs[type]->transfer; + lo->ioctl = xfer_funcs[type]->ioctl; + lo->lo_encrypt_key_size = info.lo_encrypt_key_size; + lo->lo_init[0] = info.lo_init[0]; + lo->lo_init[1] = info.lo_init[1]; + if (info.lo_encrypt_key_size) { + memcpy(lo->lo_encrypt_key, info.lo_encrypt_key, + info.lo_encrypt_key_size); + lo->lo_key_owner = current->uid; + } + figure_loop_size(lo); + return 0; +} + +static int loop_get_status(struct loop_device *lo, struct loop_info *arg) +{ + struct loop_info info; + + if (!lo->lo_dentry) + return -ENXIO; + if (!arg) + return -EINVAL; + memset(&info, 0, sizeof(info)); + info.lo_number = lo->lo_number; + info.lo_device = kdev_t_to_nr(lo->lo_dentry->d_inode->i_dev); + info.lo_inode = lo->lo_dentry->d_inode->i_ino; + info.lo_rdevice = kdev_t_to_nr(lo->lo_device); + info.lo_offset = lo->lo_offset; + info.lo_flags = lo->lo_flags; + strncpy(info.lo_name, lo->lo_name, LO_NAME_SIZE); + info.lo_encrypt_type = lo->lo_encrypt_type; + if (lo->lo_encrypt_key_size && capable(CAP_SYS_ADMIN)) { + info.lo_encrypt_key_size = lo->lo_encrypt_key_size; + memcpy(info.lo_encrypt_key, lo->lo_encrypt_key, + lo->lo_encrypt_key_size); + } + return copy_to_user(arg, &info, sizeof(info)) ? -EFAULT : 0; +} + +static int lo_ioctl(struct inode * inode, struct file * file, + unsigned int cmd, unsigned long arg) +{ + struct loop_device *lo; + int dev; + + if (!inode) + return -EINVAL; + if (MAJOR(inode->i_rdev) != MAJOR_NR) { + printk(KERN_WARNING "lo_ioctl: pseudo-major != %d\n", MAJOR_NR); + return -ENODEV; + } + dev = MINOR(inode->i_rdev); + if (dev >= MAX_LOOP) + return -ENODEV; + lo = &loop_dev[dev]; + switch (cmd) { + case LOOP_SET_FD: + return loop_set_fd(lo, inode->i_rdev, arg); + case LOOP_CLR_FD: + return loop_clr_fd(lo, inode->i_rdev); + case LOOP_SET_STATUS: + return loop_set_status(lo, (struct loop_info *) arg); + case LOOP_GET_STATUS: + return loop_get_status(lo, (struct loop_info *) arg); + case BLKGETSIZE: /* Return device size */ + if (!lo->lo_dentry) + return -ENXIO; + if (!arg) + return -EINVAL; + return put_user(loop_sizes[lo->lo_number] << 1, (long *) arg); + default: + return lo->ioctl ? lo->ioctl(lo, cmd, arg) : -EINVAL; + } + return 0; +} + +static int lo_open(struct inode *inode, struct file *file) +{ + struct loop_device *lo; + int dev; + + + if (!inode) + return -EINVAL; + if (MAJOR(inode->i_rdev) != MAJOR_NR) { + printk(KERN_WARNING "lo_open: pseudo-major != %d\n", MAJOR_NR); + return -ENODEV; + } + dev = MINOR(inode->i_rdev); + if (dev >= MAX_LOOP) { + return -ENODEV; + } + lo = &loop_dev[dev]; + + lo->lo_refcnt++; + MOD_INC_USE_COUNT; + return 0; +} + +static int lo_release(struct inode *inode, struct file *file) +{ + struct loop_device *lo; + int dev, err; + + if (!inode) + return 0; + if (MAJOR(inode->i_rdev) != MAJOR_NR) { + printk(KERN_WARNING "lo_release: pseudo-major != %d\n", MAJOR_NR); + return 0; + } + dev = MINOR(inode->i_rdev); + if (dev >= MAX_LOOP) + return 0; + err = fsync_dev(inode->i_rdev); + lo = &loop_dev[dev]; + if (lo->lo_refcnt <= 0) + printk(KERN_ERR "lo_release: refcount(%d) <= 0\n", lo->lo_refcnt); + else { + --lo->lo_refcnt; + MOD_DEC_USE_COUNT; + } + return err; +} + +static struct file_operations lo_fops = { + NULL, /* lseek - default */ + block_read, /* read - general block-dev read */ + block_write, /* write - general block-dev write */ + NULL, /* readdir - bad */ + NULL, /* poll */ + lo_ioctl, /* ioctl */ + NULL, /* mmap */ + lo_open, /* open */ + NULL, /* flush */ + lo_release /* release */ +}; + +/* + * And now the modules code and kernel interface. + */ +#ifdef MODULE +#define loop_init init_module +#endif + +int loop_register_transfer(struct loop_func_table *funcs) +{ + if ((unsigned)funcs->number > MAX_LO_CRYPT || xfer_funcs[funcs->number]) + return -EINVAL; + xfer_funcs[funcs->number] = funcs; + return 0; +} + +int loop_unregister_transfer(int number) +{ + struct loop_device *lo; + + if ((unsigned)number >= MAX_LO_CRYPT) + return -EINVAL; + for (lo = &loop_dev[0]; lo < &loop_dev[MAX_LOOP]; lo++) { + int type = lo->lo_encrypt_type; + if (type == number) { + xfer_funcs[type]->release(lo); + lo->transfer = NULL; + lo->lo_encrypt_type = 0; + } + } + xfer_funcs[number] = NULL; + return 0; +} + +struct loop_func_table *loop_find_xfer_funcs(int number) +{ + struct loop_device *lo; + struct loop_func_table *funcs = NULL; + + if ((unsigned)number >= MAX_LO_CRYPT) + return NULL; + for (lo = &loop_dev[0]; lo < &loop_dev[MAX_LOOP]; lo++) { + int type = lo->lo_encrypt_type; + if (type == number) { + funcs = xfer_funcs[type]; + break; + } + } + return funcs; +} + +EXPORT_SYMBOL(loop_register_transfer); +EXPORT_SYMBOL(loop_unregister_transfer); +EXPORT_SYMBOL(loop_find_xfer_funcs); + +int __init loop_init(void) +{ + int i; + + if (register_blkdev(MAJOR_NR, "loop", &lo_fops)) { + printk(KERN_WARNING "Unable to get major number %d for loop device\n", + MAJOR_NR); + return -EIO; + } +#ifndef MODULE + printk(KERN_INFO "loop: registered device at major %d\n", MAJOR_NR); +#endif + + blk_dev[MAJOR_NR].request_fn = DEVICE_REQUEST; + for (i=0; i < MAX_LOOP; i++) { + memset(&loop_dev[i], 0, sizeof(struct loop_device)); + loop_dev[i].lo_number = i; + } + memset(&loop_sizes, 0, sizeof(loop_sizes)); + memset(&loop_blksizes, 0, sizeof(loop_blksizes)); + blk_size[MAJOR_NR] = loop_sizes; + blksize_size[MAJOR_NR] = loop_blksizes; + + return 0; +} + +#ifdef MODULE +void cleanup_module(void) +{ + if (unregister_blkdev(MAJOR_NR, "loop") != 0) + printk(KERN_WARNING "loop: cannot unregister blkdev\n"); +} +#endif diff -urN linux/include/linux/crypto.h int.2.4.0.t2/include/linux/crypto.h --- linux/include/linux/crypto.h Thu Jan 1 01:00:00 1970 +++ int.2.4.0.t2/include/linux/crypto.h Thu Jul 6 14:34:53 2000 @@ -0,0 +1,348 @@ +#ifndef _LINUX_CRYPTO_H +#define _LINUX_CRYPTO_H + +/* + * include/linux/crypto.h + * + * Written by Alexander Kjeldaas <astor@fast.no> 1998-10-13 + * + * Copyright 1998 by Alexander Kjeldaas. This code is licensed under + * an X11-like license. See LICENSE.crypto for details. + * + */ + +#define CIPHER_NONE 0 +#define CIPHER_XOR 1 +#define CIPHER_DES 2 +#define CIPHER_FISH2 3 +#define CIPHER_BLOWFISH 4 +#define CIPHER_CAST128 5 +#define CIPHER_IDEA 6 +#define CIPHER_SERPENT 7 +#define CIPHER_MARS 8 + +#define CIPHER_SKIPJACK 10 +#define CIPHER_RC6 11 +#define CIPHER_3DES 12 +#define CIPHER_E2 13 +#define CIPHER_CAST256 14 +#define CIPHER_DFC 15 +#define CIPHER_RIJNDAEL 16 +#define CIPHER_RC5 17 +#define MAX_CIPHER 20 + +#define CIPHER_CBC 0x00010000 +#define CIPHER_cbc_DES (CIPHER_DES | CIPHER_CBC) +#define CIPHER_cbc_FISH2 (CIPHER_FISH2 | CIPHER_CBC) +#define CIPHER_cbc_BLOWFISH (CIPHER_BLOWFISH | CIPHER_CBC) +#define CIPHER_cbc_CAST128 (CIPHER_CAST128 | CIPHER_CBC) +#define CIPHER_cbc_IDEA (CIPHER_IDEA | CIPHER_CBC) +#define CIPHER_cbc_SERPENT (CIPHER_SERPENT | CIPHER_CBC) +#define CIPHER_cbc_MARS (CIPHER_MARS | CIPHER_CBC) +#define CIPHER_cbc_SKIPJACK (CIPHER_SKIPJACK | CIPHER_CBC) +#define CIPHER_cbc_RC5 (CIPHER_RC5 | CIPHER_CBC) +#define CIPHER_cbc_RC6 (CIPHER_RC6 | CIPHER_CBC) +#define CIPHER_cbc_3DES (CIPHER_3DES | CIPHER_CBC) +#define CIPHER_cbc_E2 (CIPHER_E2 | CIPHER_CBC) +#define CIPHER_cbc_CAST256 (CIPHER_CAST256 | CIPHER_CBC) +#define CIPHER_cbc_DFC (CIPHER_DFC | CIPHER_CBC) +#define CIPHER_cbc_RIJNDAEL (CIPHER_RIJNDAEL | CIPHER_CBC) + +#define DIGEST_NONE 0 +#define DIGEST_SUM 1 +#define DIGEST_CRC_CCITT16 2 +#define DIGEST_CRC_CCITT32 3 +#define DIGEST_MD4 4 +#define DIGEST_MD5 5 +#define DIGEST_SHA1 6 + +#define MAX_DIGEST 20 + + +#ifdef __KERNEL__ + +#include <linux/list.h> +#include <linux/kernel.h> +#include <asm/page.h> +#include <asm/semaphore.h> +#include <asm/spinlock.h> + +typedef u32 u4byte; +typedef u8 u1byte; + +/* A transform is something that can be found by id or name. Ciphers + and digests are types of transforms. */ + +struct transform_implementation { + struct list_head t_list; + int t_id; + char *t_name; +#ifdef CONFIG_PROC_FS + /* keep track of the allocated proc_dir_entry */ + struct proc_dir_entry *t_proc; +#endif +}; + +/* Cipher data structures */ + +struct cipher_context; +struct cipher_implementation { + struct transform_implementation trans; + int blocksize; /* in bytes */ + int ivsize; /* in bytes */ + int key_schedule_size; /* in bytes */ + int (*encrypt)(struct cipher_context *cx, + const u8 *in, u8 *out, int size); + int (*decrypt)(struct cipher_context *cx, + const u8 *in, u8 *out, int size); + int (*set_key)(struct cipher_context *cx, + unsigned char *key, int key_len); + + /* lock and unlock manage the module use counts */ + void (*lock)(void); + void (*unlock)(void); +}; + +/* List of known ciphers */ + +extern struct list_head ciphers; + +#define MAX_KEY_SIZE 8 +#define MAX_IV_SIZE MAX_KEY_SIZE + +struct cipher_context { + struct cipher_implementation *ci; + u32 *keyinfo; + int key_length; /* in bytes */ + u32 key[MAX_KEY_SIZE]; + u32 iv[MAX_IV_SIZE]; +}; + + +/* Digest data structures */ + +struct digest_context; +struct digest_implementation { + struct transform_implementation trans; + int blocksize; /* in bytes */ + int working_size; /* in bytes */ + + int (*open)(struct digest_context *cx); + int (*update)(struct digest_context *cx, u8 *in, int size); + int (*digest)(struct digest_context *cx, u8 *out); + int (*close)(struct digest_context *cx, u8 *out); + + /* lock and unlock manage the module use counts */ + void (*lock)(void); + void (*unlock)(void); +}; + +extern struct list_head digests; + +struct digest_context { + struct digest_implementation *di; + u32 *digest_info; +}; + +extern struct transform_group *cipher_group, *digest_group; + +#define find_cipher_by_id(id) \ + (struct cipher_implementation *)find_transform_by_id(cipher_group, (id)) +#define find_cipher_by_name(name) \ + (struct cipher_implementation *)find_transform_by_name(cipher_group, (name)) +#define register_cipher(ci) register_transform(cipher_group, &(ci)->trans) +#define unregister_cipher(ci) unregister_transform(cipher_group, &(ci)->trans) + +#define find_digest_by_id(id) \ + (struct digest_implementation *)find_transform_by_id(digest_group, (id)) +#define find_digest_by_name(name) \ + (struct digest_implementation *)find_transform_by_name(digest_group, (name)) +#define register_digest(ci) register_transform(digest_group, &(ci)->trans) +#define unregister_digest(ci) unregister_transform(digest_group, &(ci)->trans) + +struct transform_implementation * +find_transform_by_id(struct transform_group *tg, int id); +struct transform_implementation * +find_transform_by_id(struct transform_group *tg, int id); +struct transform_implementation * +find_transform_by_name(struct transform_group *tg, char *name); +int register_transform(struct transform_group *tg, + struct transform_implementation *ti); +int unregister_transform(struct transform_group *tg, + struct transform_implementation *ti); + + +/* System initialization */ +extern int cryptoapi_init(void); + +/* Cipher implementations */ + +extern int init_cast256(void); +#define CAST256_KEY_SCHEDULE_SIZE (96*sizeof(u32)) +extern int cast256_set_key(struct cipher_context *cx, unsigned char *key, + int key_len); +extern int cast256_encrypt(struct cipher_context *cx, + const u8 *in, u8 *out, int size); +extern int cast256_decrypt(struct cipher_context *cx, + const u8 *in, u8 *out, int size); + +extern int init_crypton(void); +#define CRYPTON_KEY_SCHEDULE_SIZE (104*sizeof(u32)) +extern int crypton_set_key(struct cipher_context *cx, unsigned char *key, + int key_len); +extern int crypton_encrypt(struct cipher_context *cx, + const u8 *in, u8 *out, int size); +extern int crypton_decrypt(struct cipher_context *cx, + const u8 *in, u8 *out, int size); + +extern int init_serpent(void); +#define SERPENT_KEY_SCHEDULE_SIZE (140*sizeof(u32)) +extern int serpent_set_key(struct cipher_context *cx, unsigned char *key, + int key_len); +extern int serpent_encrypt(struct cipher_context *cx, + const u8 *in, u8 *out, int size); +extern int serpent_decrypt(struct cipher_context *cx, + const u8 *in, u8 *out, int size); + +extern int init_mars(void); +#define MARS_KEY_SCHEDULE_SIZE (40*sizeof(u32)) +extern int mars_set_key(struct cipher_context *cx, unsigned char *key, + int key_len); +extern int mars_encrypt(struct cipher_context *cx, + const u8 *in, u8 *out, int size); +extern int mars_decrypt(struct cipher_context *cx, + const u8 *in, u8 *out, int size); + +extern int init_rc5(void); +#define RC5_KEY_SCHEDULE_SIZE (34*sizeof(u32)) +extern int rc5_set_key(struct cipher_context *cx, unsigned char *key, + int key_len); +extern int rc5_encrypt(struct cipher_context *cx, + const u8 *in, u8 *out, int size); +extern int rc5_decrypt(struct cipher_context *cx, + const u8 *in, u8 *out, int size); + +extern int init_rc6(void); +#define RC6_KEY_SCHEDULE_SIZE (44*sizeof(u32)) +extern int rc6_set_key(struct cipher_context *cx, unsigned char *key, + int key_len); +extern int rc6_encrypt(struct cipher_context *cx, + const u8 *in, u8 *out, int size); +extern int rc6_decrypt(struct cipher_context *cx, + const u8 *in, u8 *out, int size); + +extern int init_dfc(void); +#define DFC_KEY_SCHEDULE_SIZE (32*sizeof(u32)) +extern int dfc_set_key(struct cipher_context *cx, unsigned char *key, + int key_len); +extern int dfc_encrypt(struct cipher_context *cx, + const u8 *in, u8 *out, int size); +extern int dfc_decrypt(struct cipher_context *cx, + const u8 *in, u8 *out, int size); + +extern int init_rijndael(void); +#define RIJNDAEL_KEY_SCHEDULE_SIZE ((60+60)*sizeof(u32)) +extern int rijndael_set_key(struct cipher_context *cx, unsigned char *key, + int key_len); +extern int rijndael_encrypt(struct cipher_context *cx, + const u8 *in, u8 *out, int size); +extern int rijndael_decrypt(struct cipher_context *cx, + const u8 *in, u8 *out, int size); + +extern int init_blowfish(void); +#define BLOWFISH_KEY_SCHEDULE_SIZE ((18+1024)*sizeof(u32)) +extern int blowfish_set_key(struct cipher_context *cx, + unsigned char *key, int key_len); +extern int blowfish_encrypt(struct cipher_context *cx, + const u8 *in, u8 *out, int size); +extern int blowfish_decrypt(struct cipher_context *cx, + const u8 *in, u8 *out, int size); +extern int init_idea(void); +#define IDEA_KEY_SCHEDULE_SIZE (104*2) +extern int idea_set_key(struct cipher_context *cx, unsigned char *key, + int key_len); +extern int idea_encrypt(struct cipher_context *cx, + const u8 *in, u8 *out, int size); +extern int idea_decrypt(struct cipher_context *cx, + const u8 *in, u8 *out, int size); + +extern int init_des(void); +#define DES_KEY_SCHEDULE_SIZE (32*sizeof(u32)) +extern int des_set_key(struct cipher_context *cx, unsigned char *key, + int key_len); +extern int des_encrypt(struct cipher_context *cx, + const u8 *in, u8 *out, int size); +extern int des_decrypt(struct cipher_context *cx, + const u8 *in, u8 *out, int size); + +/* Digest implementations */ + +extern int init_md5(void); +#define MD5_WORKING_SIZE ((4+2+16)*sizeof(u32)) +extern int md5_open(struct digest_context *cx); +extern int md5_update(struct digest_context *cx, u8 *in, int size); +extern int md5_current(struct digest_context *cx, u8 *out); +extern int md5_close(struct digest_context *cx, u8 *out); + +extern int init_sha1(void); +#define SHA1_WORKING_SIZE ((5+2+16)*sizeof(u32)) +extern int sha1_open(struct digest_context *cx); +extern int sha1_update(struct digest_context *cx, u8 *in, int size); +extern int sha1_current(struct digest_context *cx, u8 *out); +extern int sha1_close(struct digest_context *cx, u8 *out); + + +/* Utility macros */ + +#define INIT_TRANSFORM(group, uppername, name, sname, mode) \ +{ \ + {&mode##name.trans.t_list, &mode##name.trans.t_list}, \ + group##_##mode##uppername, \ + sname \ +} + + +#define DEFINE_GEN_CIPHER(uppername, name, sname, blocksize, ivsize, mode) \ +static struct cipher_implementation mode##name = \ +{ \ + INIT_TRANSFORM(CIPHER, uppername, name, sname, mode), \ + blocksize, \ + ivsize, \ + uppername##_KEY_SCHEDULE_SIZE, \ + name##_##mode##encrypt, \ + name##_##mode##decrypt, \ + name##_set_key, \ + name##_lock, \ + name##_unlock \ +} + +#define DEFINE_CIPHER(uppername, name, sname, blocksize, ivsize) \ + DEFINE_GEN_CIPHER(uppername, name, sname, blocksize, ivsize, ) + +#define DEFINE_CBC_CIPHER(uppername, name, sname, ivsize) \ + DEFINE_GEN_CIPHER(uppername, name, sname, 0, ivsize, cbc_) + + + +#define DEFINE_GEN_DIGEST(uppername, name, sname, blocksize, mode) \ +static struct digest_implementation mode##name = \ +{ \ + INIT_TRANSFORM(DIGEST, uppername, name, sname, mode), \ + blocksize, \ + uppername##_WORKING_SIZE, \ + name##_open, \ + name##_update, \ + name##_digest, \ + name##_close, \ + name##_lock, \ + name##_unlock \ +} + +#define DEFINE_DIGEST(uppername, name, sname, blocksize) \ + DEFINE_GEN_DIGEST(uppername, name, sname, blocksize, ) + +#define byte(x, nr) ((x) >> (nr*8)) + +#endif /* __KERNEL__ */ + +#endif diff -urN linux/include/linux/loop.h int.2.4.0.t2/include/linux/loop.h --- linux/include/linux/loop.h Mon Nov 23 06:29:54 1998 +++ int.2.4.0.t2/include/linux/loop.h Thu Jul 6 13:50:14 2000 @@ -2,6 +2,7 @@ #define _LINUX_LOOP_H #include <linux/kdev_t.h> +#include <linux/crypto.h> /* * include/linux/loop.h @@ -90,12 +91,21 @@ #define LO_CRYPT_NONE 0 #define LO_CRYPT_XOR 1 #define LO_CRYPT_DES 2 -#define LO_CRYPT_FISH2 3 /* Brand new Twofish encryption */ +#define LO_CRYPT_FISH2 3 #define LO_CRYPT_BLOW 4 #define LO_CRYPT_CAST128 5 #define LO_CRYPT_IDEA 6 +#define LO_CRYPT_SERPENT 7 +#define LO_CRYPT_MARS 8 #define LO_CRYPT_DUMMY 9 #define LO_CRYPT_SKIPJACK 10 +#define LO_CRYPT_RC6 11 +#define LO_CRYPT_3DES 12 +#define LO_CRYPT_E2 13 +#define LO_CRYPT_CAST256 14 +#define LO_CRYPT_DFC 15 +#define LO_CRYPT_RIJNDAEL 16 +#define LO_CRYPT_RC5 17 #define MAX_LO_CRYPT 20 #ifdef __KERNEL__ @@ -116,6 +126,9 @@ int loop_register_transfer(struct loop_func_table *funcs); int loop_unregister_transfer(int number); +struct loop_func_table *loop_find_xfer_funcs(int number); + + #endif /* diff -urN linux/init/main.c int.2.4.0.t2/init/main.c --- linux/init/main.c Thu Jul 6 16:08:05 2000 +++ int.2.4.0.t2/init/main.c Thu Jul 6 16:05:58 2000 @@ -55,6 +55,10 @@ extern void nubus_init(void); #endif +#ifdef CONFIG_CRYPTO +#include <linux/crypto.h> +#endif + #ifdef CONFIG_ISAPNP #include <linux/isapnp.h> #endif @@ -704,6 +708,11 @@ /* .. filesystems .. */ filesystem_setup(); + +#ifdef CONFIG_CRYPTO + /* .. crypto .. */ + cryptoapi_init(); +#endif #ifdef CONFIG_IRDA irda_device_init(); /* Must be done after protocol initialization */