package com.wesabe.grendel.openpgp.tests; import static org.fest.assertions.Assertions.*; import java.security.KeyPair; import java.security.KeyPairGenerator; import java.security.Signature; import java.security.spec.DSAParameterSpec; import org.junit.Test; import org.junit.experimental.runners.Enclosed; import org.junit.runner.RunWith; import com.wesabe.grendel.openpgp.PregeneratedDSAParameterSpec; @RunWith(Enclosed.class) public class PregeneratedDSAParameterSpecTest { public static class A_Pregenerated_DSAParameterSpec { private DSAParameterSpec spec = new PregeneratedDSAParameterSpec(); @Test public void itHasA1024bitPrimeP() throws Exception { assertThat(spec.getP().bitLength()).isEqualTo(1024); assertThat(spec.getP().isProbablePrime(1000000)).isTrue(); } @Test public void itHasA160bitPrimeQ() throws Exception { assertThat(spec.getQ().bitLength()).isEqualTo(160); assertThat(spec.getQ().isProbablePrime(1000000)).isTrue(); } @Test public void itCanBeUsedToGenerateDSAKeyPairs() throws Exception { final KeyPairGenerator generator = KeyPairGenerator.getInstance("DSA"); generator.initialize(spec); final KeyPair kp = generator.generateKeyPair(); final Signature signer = Signature.getInstance("DSA"); signer.initSign(kp.getPrivate()); signer.update("oh hi, just testing my new keypair".getBytes()); final byte[] signature = signer.sign(); final Signature verifier = Signature.getInstance("DSA"); verifier.initVerify(kp.getPublic()); verifier.update("oh hi, just testing my new keypair".getBytes()); assertThat(verifier.verify(signature)).isTrue(); final Signature falsifier = Signature.getInstance("DSA"); falsifier.initVerify(kp.getPublic()); falsifier.update("oh hi, just MOO HOO HA HA testing my new keypair".getBytes()); assertThat(falsifier.verify(signature)).isFalse(); } } }