package io.bitsquare.common.crypto; import io.bitsquare.storage.FileUtil; import org.bouncycastle.jce.provider.BouncyCastleProvider; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.File; import java.io.IOException; import java.security.KeyStoreException; import java.security.NoSuchAlgorithmException; import java.security.Security; import java.security.cert.CertificateException; import java.util.Random; import static org.junit.Assert.assertTrue; public class SigTest { private static final Logger log = LoggerFactory.getLogger(SigTest.class); private KeyRing keyRing; private File dir; @Before public void setup() throws CertificateException, NoSuchAlgorithmException, KeyStoreException, IOException, CryptoException { Security.addProvider(new BouncyCastleProvider()); dir = File.createTempFile("temp_tests", ""); dir.delete(); dir.mkdir(); KeyStorage keyStorage = new KeyStorage(dir); keyRing = new KeyRing(keyStorage); } @After public void tearDown() throws IOException { FileUtil.deleteDirectory(dir); } @Test public void testSignature() { long ts = System.currentTimeMillis(); log.trace("start "); for (int i = 0; i < 100; i++) { String msg = String.valueOf(new Random().nextInt()); String sig = null; try { sig = Sig.sign(keyRing.getSignatureKeyPair().getPrivate(), msg); } catch (CryptoException e) { log.error("sign failed"); e.printStackTrace(); assertTrue(false); } try { assertTrue(Sig.verify(keyRing.getSignatureKeyPair().getPublic(), msg, sig)); } catch (CryptoException e) { log.error("verify failed"); e.printStackTrace(); assertTrue(false); } } log.trace("took " + (System.currentTimeMillis() - ts) + " ms."); } }