diff --git a/core/java/test/junit/net/i2p/crypto/AES256Bench.java b/core/java/test/junit/net/i2p/crypto/AES256Bench.java deleted file mode 100644 index 59c4a342b..000000000 --- a/core/java/test/junit/net/i2p/crypto/AES256Bench.java +++ /dev/null @@ -1,148 +0,0 @@ -package net.i2p.crypto; - -/* - * Copyright (c) 2003, TheCrypto - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * - Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - Neither the name of the TheCrypto may be used to endorse or promote - * products derived from this software without specific prior written - * permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ - -import net.i2p.I2PAppContext; -import net.i2p.data.DataHelper; -import net.i2p.data.SessionKey; - -public class AES256Bench { - private static I2PAppContext _context = new I2PAppContext(); - - public static void main(String args[]) { - char[] cplain = { - 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, - 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff, - 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, - 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff - }; - - byte[] plain = new byte[cplain.length]; - for (int x = 0; x < cplain.length; x++) { - plain[x] = (byte)cplain[x]; - } - char[] ckey = { - 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, - 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, - 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, - 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f - }; - byte[] bkey = new byte[ckey.length]; - for (int x = 0; x < ckey.length; x++) { - bkey[x] = (byte)ckey[x]; - } - - SessionKey key = new SessionKey(); - key.setData(bkey); - - char[] civ = { - 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, - 0xfe, 0xdc, 0xba, 0x98, 0x67, 0x54, 0x32, 0x10 - }; - - byte[] iv = new byte[civ.length]; - for (int x = 0; x < iv.length; x++) { - iv[x] = (byte)civ[x]; - } - - byte[] e = new byte[plain.length]; - _context.aes().encrypt(plain, 0, e, 0, key, iv, plain.length); - byte[] d = new byte[e.length]; - _context.aes().decrypt(e, 0, d, 0, key, iv, d.length); - boolean same = true; - for (int x = 0; x < d.length; x++) { - if (plain[x] != d[x]) { - throw new RuntimeException("Failed decrypt at " + x); - } - } - - System.out.println("Standard test D(E(value)) == value? " + same); - if (!same) throw new RuntimeException("moo"); - - plain = DataHelper.getASCII("1234567890123456"); - e = new byte[plain.length]; - _context.aes().encrypt(plain, 0, e, 0, key, iv, plain.length); - d = new byte[e.length]; - _context.aes().decrypt(e, 0, d, 0, key, iv, d.length); - same = DataHelper.eq(plain, d); - System.out.println("Different value test D(E(value)) == value? " + same); - if (!same) throw new RuntimeException("moo"); - - System.out.println(); - System.out.println(); - - long times = 100; - long encrypttime = 0; - long decrypttime = 0; - long maxE = 0; - long minE = 0; - long maxD = 0; - long minD = 0; - byte[] message = new byte[2*1024]; - for (int i = 0; i < message.length; i++) - message[i] = (byte)((i%26)+'a'); - for (int x = 0; x < times; x++) { - long startencrypt = System.currentTimeMillis(); - e = new byte[message.length]; - d = new byte[e.length]; - _context.aes().encrypt(message, 0, e, 0, key, iv, message.length); - long endencryptstartdecrypt = System.currentTimeMillis(); - _context.aes().decrypt(e, 0, d, 0, key, iv, d.length); - long enddecrypt = System.currentTimeMillis(); - System.out.print("."); - encrypttime += endencryptstartdecrypt - startencrypt; - decrypttime += enddecrypt - endencryptstartdecrypt; - if (!DataHelper.eq(d, message)) { - System.out.println("Lengths: source [" + message.length + "] dest [" + d.length + "]"); - System.out.println("Data: dest [" + DataHelper.toString(d, d.length) + "]"); - throw new RuntimeException("Holy crap, decrypted != source message"); - } - - if ( (minE == 0) && (minD == 0) ) { - minE = endencryptstartdecrypt - startencrypt; - maxE = endencryptstartdecrypt - startencrypt; - minD = enddecrypt - endencryptstartdecrypt; - maxD = enddecrypt - endencryptstartdecrypt; - } else { - if (minE > endencryptstartdecrypt - startencrypt) minE = endencryptstartdecrypt - startencrypt; - if (maxE < endencryptstartdecrypt - startencrypt) maxE = endencryptstartdecrypt - startencrypt; - if (minD > enddecrypt - endencryptstartdecrypt) minD = enddecrypt - endencryptstartdecrypt; - if (maxD < enddecrypt - endencryptstartdecrypt) maxD = enddecrypt - endencryptstartdecrypt; - } - - } - - System.out.println(); - System.out.println("Data size : " + message.length); - System.out.println("Encryption Time Average : " + (encrypttime/times) + "ms\ttotal: " + encrypttime + "ms\tmin: " + minE + "ms\tmax: " + maxE + "ms\tEncryption Bps: " + (times*message.length*1000)/encrypttime); - System.out.println("Decryption Time Average : " + (decrypttime/times) + "ms\ttotal: " + decrypttime + "ms\tmin: " + minD + "ms\tmax: " + maxD + "ms\tDecryption Bps: " + (times*message.length*1000)/decrypttime); - } -} - diff --git a/core/java/test/junit/net/i2p/crypto/ElGamalBench.java b/core/java/test/junit/net/i2p/crypto/ElGamalBench.java deleted file mode 100644 index 02daf06cc..000000000 --- a/core/java/test/junit/net/i2p/crypto/ElGamalBench.java +++ /dev/null @@ -1,98 +0,0 @@ -package net.i2p.crypto; - -/* - * Copyright (c) 2003, TheCrypto - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * - Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - Neither the name of the TheCrypto may be used to endorse or promote - * products derived from this software without specific prior written - * permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ - -import net.i2p.I2PAppContext; -import net.i2p.data.DataHelper; -import net.i2p.data.PrivateKey; -import net.i2p.data.PublicKey; - -public class ElGamalBench { - private static I2PAppContext _context = new I2PAppContext(); - public static void main(String args[]) { - int times = 100; - long keygentime = 0; - long encrypttime = 0; - long decrypttime = 0; - long maxKey = 0; - long minKey = 0; - long maxE = 0; - long minE = 0; - long maxD = 0; - long minD = 0; - Object[] keys = KeyGenerator.getInstance().generatePKIKeypair(); - byte[] message = new byte[222]; - for (int i = 0; i < message.length; i++) - message[i] = (byte)((i%26)+'a'); - for (int x = 0; x < times; x++) { - long startkeys = System.currentTimeMillis(); - keys = KeyGenerator.getInstance().generatePKIKeypair(); - PublicKey pubkey = (PublicKey)keys[0]; - PrivateKey privkey = (PrivateKey)keys[1]; - long endkeys = System.currentTimeMillis(); - long startencrypt = System.currentTimeMillis(); - byte[] e = _context.elGamalEngine().encrypt(message, pubkey); - long endencryptstartdecrypt = System.currentTimeMillis(); - byte[] d = _context.elGamalEngine().decrypt(e, privkey); - long enddecrypt = System.currentTimeMillis(); - System.out.print("."); - keygentime += endkeys - startkeys; - encrypttime += endencryptstartdecrypt - startencrypt; - decrypttime += enddecrypt - endencryptstartdecrypt; - if (!DataHelper.eq(d, message)) { - System.out.println("Lengths: source [" + message.length + "] dest [" + d.length + "]"); - byte hash1[] = SHA256Generator.getInstance().calculateHash(message).getData(); - byte hash2[] = SHA256Generator.getInstance().calculateHash(d).getData(); - System.out.println("Hashes: source [" + DataHelper.toString(hash1, hash1.length) + "] dest [" + DataHelper.toString(hash2, hash2.length) + "]"); - throw new RuntimeException("Holy crap, decrypted != source message"); - } - if ( (minKey == 0) && (minE == 0) && (minD == 0) ) { - minKey = endkeys - startkeys; - maxKey = endkeys - startkeys; - minE = endencryptstartdecrypt - startencrypt; - maxE = endencryptstartdecrypt - startencrypt; - minD = enddecrypt - endencryptstartdecrypt; - maxD = enddecrypt - endencryptstartdecrypt; - } else { - if (minKey > endkeys - startkeys) minKey = endkeys - startkeys; - if (maxKey < endkeys - startkeys) maxKey = endkeys - startkeys; - if (minE > endencryptstartdecrypt - startencrypt) minE = endencryptstartdecrypt - startencrypt; - if (maxE < endencryptstartdecrypt - startencrypt) maxE = endencryptstartdecrypt - startencrypt; - if (minD > enddecrypt - endencryptstartdecrypt) minD = enddecrypt - endencryptstartdecrypt; - if (maxD < enddecrypt - endencryptstartdecrypt) maxD = enddecrypt - endencryptstartdecrypt; - } - } - System.out.println(); - System.out.println("Key Generation Time Average: " + (keygentime/times) + "\ttotal: " + keygentime + "\tmin: " + minKey + "\tmax: " + maxKey + "\tKeygen/second: " + (keygentime == 0 ? "NaN" : ""+(times*1000)/keygentime)); - System.out.println("Encryption Time Average : " + (encrypttime/times) + "\ttotal: " + encrypttime + "\tmin: " + minE + "\tmax: " + maxE + "\tEncryption Bps: " + (times*message.length*1000)/encrypttime); - System.out.println("Decryption Time Average : " + (decrypttime/times) + "\ttotal: " + decrypttime + "\tmin: " + minD + "\tmax: " + maxD + "\tDecryption Bps: " + (times*message.length*1000)/decrypttime); - } -} - diff --git a/core/java/test/junit/net/i2p/crypto/SHA256Bench.java b/core/java/test/junit/net/i2p/crypto/SHA256Bench.java deleted file mode 100644 index fc9ccc221..000000000 --- a/core/java/test/junit/net/i2p/crypto/SHA256Bench.java +++ /dev/null @@ -1,114 +0,0 @@ -package net.i2p.crypto; - -/* - * Copyright (c) 2003, TheCrypto - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * - Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - Neither the name of the TheCrypto may be used to endorse or promote - * products derived from this software without specific prior written - * permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ - -import net.i2p.data.DataHelper; -import net.i2p.data.Hash; - -public class SHA256Bench { - public static void main(String args[]) { - Hash asdfs = SHA256Generator.getInstance().calculateHash(DataHelper.getASCII("qwerty")); - - int times = 100; - long shorttime = 0; - long medtime = 0; - long longtime = 0; - long minShort = 0; - long maxShort = 0; - long minMed = 0; - long maxMed = 0; - long minLong = 0; - long maxLong = 0; - - long shorttime1 = 0; - long medtime1 = 0; - long longtime1 = 0; - long minShort1 = 0; - long maxShort1 = 0; - long minMed1 = 0; - long maxMed1 = 0; - long minLong1 = 0; - long maxLong1 = 0; - - byte[] smess = DataHelper.getASCII(new String("abc")); - StringBuilder buf = new StringBuilder(); - for (int x = 0; x < 10*1024; x++) { - buf.append("a"); - } - byte[] mmess = DataHelper.getASCII(buf.toString()); // new String("abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq").getBytes(); - buf = new StringBuilder(); - for (int x = 0; x < 1000000; x++) { - buf.append("a"); - } - byte[] lmess = DataHelper.getASCII(buf.toString()); - - // warm up the engines - SHA256Generator.getInstance().calculateHash(smess); - SHA256Generator.getInstance().calculateHash(mmess); - SHA256Generator.getInstance().calculateHash(lmess); - // now do it - for (int x = 0; x < times; x++) { - long startshort = System.currentTimeMillis(); - boolean cacheOnly = false; - // no caching - Hash s = cacheOnly ? null : SHA256Generator.getInstance().calculateHash(smess); - long endshortstartmed = System.currentTimeMillis(); - Hash m = cacheOnly ? null : SHA256Generator.getInstance().calculateHash(mmess); - long endmedstartlong = System.currentTimeMillis(); - Hash l = cacheOnly ? null : SHA256Generator.getInstance().calculateHash(lmess); - long endlong = System.currentTimeMillis(); - - shorttime += endshortstartmed - startshort; - medtime += endmedstartlong - endshortstartmed; - longtime += endlong - endmedstartlong; - - if ((minShort == 0) && (minMed == 0) && (minLong == 0) ) { - minShort = endshortstartmed - startshort; - maxShort = endshortstartmed - startshort; - minMed = endmedstartlong - endshortstartmed; - maxMed = endmedstartlong - endshortstartmed; - minLong = endlong - endmedstartlong; - maxLong = endlong - endmedstartlong; - } else { - if (minShort > endshortstartmed - startshort) minShort = endshortstartmed - startshort; - if (maxShort < endshortstartmed - startshort) maxShort = endshortstartmed - startshort; - if (minMed > endmedstartlong - endshortstartmed) minMed = endmedstartlong - endshortstartmed; - if (maxMed < endmedstartlong - endshortstartmed) maxMed = endmedstartlong - endshortstartmed; - if (minLong > endlong - endmedstartlong) minLong = endlong - endmedstartlong; - if (maxLong < endlong - endmedstartlong) maxLong = endlong - endmedstartlong; - } - } - System.out.println(); - System.out.println("Short Message Time Average : " + (shorttime/times) + "\ttotal: " + shorttime + "\tmin: " + minShort + "\tmax: " + maxShort + "\tBps: " + (shorttime == 0 ? "NaN" : ""+(times*smess.length)/shorttime)); - System.out.println("Medium Message Time Average : " + (medtime/times) + "\ttotal: " + medtime + "\tmin: " + minMed + "\tmax: " + maxMed + "\tBps: " + (medtime == 0 ? "NaN" : ""+(times*mmess.length*1000)/medtime)); - System.out.println("Long Message Time Average : " + (longtime/times) + "\ttotal: " + longtime + "\tmin: " + minLong + "\tmax: " + maxLong + "\tBps: " + (longtime == 0 ? "NaN" : "" + (times*lmess.length*1000)/longtime)); - } -} - diff --git a/core/perl/i2pbench.sh b/core/perl/i2pbench.sh index 9f8b5a129..4603c4f78 100644 --- a/core/perl/i2pbench.sh +++ b/core/perl/i2pbench.sh @@ -19,7 +19,7 @@ $javacommand = "$runtime -cp $classpath -Dlogger.shutdownDelay=0"; print "\nBenchmark Suite #1: i2p/core/java/test/net/i2p/crypto/*\n\n"; -@testclasses = ( "AES256Bench", "DSABench", "ElGamalBench", "SHA256Bench" ); +@testclasses = ( "DSABench" ); foreach $testclass (@testclasses) { print "[BENCHMARK] $testclass:\n\n";