aboutsummaryrefslogtreecommitdiffstats
path: root/libraries/spongycastle/core/src/test/java/org/spongycastle/crypto/test/speedy/MacThroughputTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'libraries/spongycastle/core/src/test/java/org/spongycastle/crypto/test/speedy/MacThroughputTest.java')
-rw-r--r--libraries/spongycastle/core/src/test/java/org/spongycastle/crypto/test/speedy/MacThroughputTest.java156
1 files changed, 0 insertions, 156 deletions
diff --git a/libraries/spongycastle/core/src/test/java/org/spongycastle/crypto/test/speedy/MacThroughputTest.java b/libraries/spongycastle/core/src/test/java/org/spongycastle/crypto/test/speedy/MacThroughputTest.java
deleted file mode 100644
index ffbc673f9..000000000
--- a/libraries/spongycastle/core/src/test/java/org/spongycastle/crypto/test/speedy/MacThroughputTest.java
+++ /dev/null
@@ -1,156 +0,0 @@
-package org.spongycastle.crypto.test.speedy;
-
-import java.security.SecureRandom;
-
-import org.spongycastle.crypto.CipherParameters;
-import org.spongycastle.crypto.KeyGenerationParameters;
-import org.spongycastle.crypto.Mac;
-import org.spongycastle.crypto.digests.SHA1Digest;
-import org.spongycastle.crypto.engines.AESFastEngine;
-import org.spongycastle.crypto.engines.NullEngine;
-import org.spongycastle.crypto.generators.Poly1305KeyGenerator;
-import org.spongycastle.crypto.macs.CMac;
-import org.spongycastle.crypto.macs.GMac;
-import org.spongycastle.crypto.macs.HMac;
-import org.spongycastle.crypto.macs.Poly1305;
-import org.spongycastle.crypto.macs.SipHash;
-import org.spongycastle.crypto.macs.SkeinMac;
-import org.spongycastle.crypto.modes.GCMBlockCipher;
-import org.spongycastle.crypto.params.KeyParameter;
-import org.spongycastle.crypto.params.ParametersWithIV;
-
-/**
- * Microbenchmark of MACs on short, medium, long messages, with optional object creation cost.
- */
-public class MacThroughputTest
-{
-
- private static final long CLOCK_SPEED = 2400000000L;
-
- private static final SecureRandom RANDOM = new SecureRandom();
- private static Poly1305KeyGenerator kg = new Poly1305KeyGenerator();;
-
- private static final byte[] SHORT_MESSAGE = new byte[16];
- private static final byte[] MEDIUM_MESSAGE = new byte[256];
- private static final byte[] LONG_MESSAGE = new byte[8192];
- static
- {
- RANDOM.nextBytes(SHORT_MESSAGE);
- RANDOM.nextBytes(MEDIUM_MESSAGE);
- RANDOM.nextBytes(LONG_MESSAGE);
- }
-
- private static final int SHORT_MESSAGE_COUNT = 20000000;
- private static final int MEDIUM_MESSAGE_COUNT = 2200000;
- private static final int LONG_MESSAGE_COUNT = 80000;
-
- static
- {
- kg.init(new KeyGenerationParameters(RANDOM, 256));
- }
-
- private static KeyParameter generatePoly1305Key()
- {
- return new KeyParameter(kg.generateKey());
- }
-
- public static void main(String[] args)
- {
- testMac(new HMac(new SHA1Digest()), new KeyParameter(generateNonce(20)), 3);
- testMac(new SkeinMac(SkeinMac.SKEIN_512, 128), new KeyParameter(generateNonce(64)), 2);
- testMac(new SipHash(), new KeyParameter(generateNonce(16)), 1);
- testMac(new CMac(new AESFastEngine()), new KeyParameter(generateNonce(16)), 3);
- testMac(new GMac(new GCMBlockCipher(new AESFastEngine())), new ParametersWithIV(new KeyParameter(
- generateNonce(16)), generateNonce(16)), 5);
- testMac(new Poly1305(new NullEngine(16)), new ParametersWithIV(generatePoly1305Key(), generateNonce(16)), 1);
- testMac(new Poly1305(new AESFastEngine()), new ParametersWithIV(generatePoly1305Key(), generateNonce(16)), 1);
- testMac(new Poly1305Reference(new NullEngine(16)), new ParametersWithIV(generatePoly1305Key(),
- generateNonce(16)), 1);
- }
-
- private static byte[] generateNonce(int sizeBytes)
- {
- byte[] nonce = new byte[16];
- RANDOM.nextBytes(nonce);
- return nonce;
- }
-
- private static void testMac(Mac mac, CipherParameters params, int rateFactor)
- {
- System.out.println("=========================");
-
- long total = testRun(mac, params, false, MEDIUM_MESSAGE, adjust(MEDIUM_MESSAGE_COUNT, rateFactor));
- System.out.printf("%s Warmup 1 run time: %,d ms\n", mac.getAlgorithmName(), total / 1000000);
- total = testRun(mac, params, false, MEDIUM_MESSAGE, adjust(MEDIUM_MESSAGE_COUNT, rateFactor));
- System.out.printf("%s Warmup 2 run time: %,d ms\n", mac.getAlgorithmName(), total / 1000000);
- System.gc();
- try
- {
- Thread.sleep(1000);
- } catch (InterruptedException e)
- {
- }
-
- test("Short", mac, params, false, SHORT_MESSAGE, adjust(SHORT_MESSAGE_COUNT, rateFactor));
- // test("Short", mac, params, true, SHORT_MESSAGE, adjust(SHORT_MESSAGE_COUNT, rateFactor));
- test("Medium", mac, params, false, MEDIUM_MESSAGE, adjust(MEDIUM_MESSAGE_COUNT, rateFactor));
- // test("Medium", mac, params, true, MEDIUM_MESSAGE, adjust(MEDIUM_MESSAGE_COUNT,
- // rateFactor));
- test("Long", mac, params, false, LONG_MESSAGE, adjust(LONG_MESSAGE_COUNT, rateFactor));
- // test("Long", mac, params, true, LONG_MESSAGE, adjust(LONG_MESSAGE_COUNT, rateFactor));
- }
-
- private static int adjust(int iterationCount, int rateFactor)
- {
- return (int)(iterationCount * (1.0f / rateFactor));
- }
-
- private static void test(String name,
- Mac mac,
- CipherParameters params,
- boolean initPerMessage,
- byte[] message,
- int adjustedCount)
- {
- System.out.println("=========================");
- long total = testRun(mac, params, initPerMessage, message, adjustedCount);
-
- long averageRuntime = total / adjustedCount;
- System.out.printf("%s %-7s%s Total run time: %,d ms\n", mac.getAlgorithmName(), name, initPerMessage ? "*"
- : " ", total / 1000000);
- System.out.printf("%s %-7s%s Average run time: %,d ns\n", mac.getAlgorithmName(), name, initPerMessage ? "*"
- : " ", averageRuntime);
- final long mbPerSecond = (long)((double)message.length / averageRuntime * 1000000000 / (1024 * 1024));
- System.out.printf("%s %-7s%s Average speed: %,d MB/s\n", mac.getAlgorithmName(), name, initPerMessage ? "*"
- : " ", mbPerSecond);
- System.out.printf("%s %-7s%s Average speed: %,f c/b\n", mac.getAlgorithmName(), name, initPerMessage ? "*"
- : " ", CLOCK_SPEED / (double)(mbPerSecond * (1024 * 1024)));
- }
-
- private static long testRun(Mac mac,
- CipherParameters params,
- boolean initPerMessage,
- byte[] message,
- int adjustedCount)
- {
- byte[] out = new byte[mac.getMacSize()];
-
- if (!initPerMessage)
- {
- mac.init(params);
- }
- long start = System.nanoTime();
-
- for (int i = 0; i < adjustedCount; i++)
- {
- if (initPerMessage)
- {
- mac.init(params);
- }
- mac.update(message, 0, message.length);
- mac.doFinal(out, 0);
- }
- long total = System.nanoTime() - start;
- return total;
- }
-}