@Test
public void testProofPerformance() {

	final int keyLength = 2048;
	final int n = 11;
	final int t = ((n - 1) / 2) + 1;
	// Generate shareholder public keys
	final PaillierKeyPair[] keyPairs = new PaillierKeyPair[n];
	final PaillierPublicKey[] publicKeys = new PaillierPublicKey[n];
	final PaillierPrivateKey[] privateKeys = new PaillierPrivateKey[n];
	final PaillierKeyGenerator generator = new PaillierKeyGenerator(keyLength);
	for (int i = 0; i < n; i++) {
		keyPairs[i] = generator.generate();
		publicKeys[i] = keyPairs[i].getPublicKey();
		privateKeys[i] = keyPairs[i].getPrivateKey();
	}
	// Warm up
	final PublicSharingGenerator pvssDealer = new PublicSharingGenerator(n, t);
	PublicSharing sharing = null;
	for (int i = 0; i < 20; i++) {
		sharing = pvssDealer.shareSecret(BigInteger.valueOf(1), publicKeys);
	}
	System.out.println("Sharing size: " + sharing.getSize());
	// Do test
	long timeNs = 0;
	final int iterations = 1000;
	for (int i = 0; i < iterations; i++) {
		final long start = System.nanoTime();
		pvssDealer.shareRandomSecret(publicKeys);
		final long end = System.nanoTime();
		timeNs += (end - start);
	}
	System.out.println("Total time (ms): " + timeNs / (((long) iterations) * 1_000_000.0));
}