package com.wesabe.grendel.openpgp.tests; import static org.fest.assertions.Assertions.*; import java.io.FileInputStream; import java.util.Iterator; import org.bouncycastle.openpgp.PGPSecretKey; import org.bouncycastle.openpgp.PGPSecretKeyRing; import org.bouncycastle.openpgp.PGPSignature; import org.joda.time.DateTime; import org.joda.time.DateTimeZone; import org.junit.Before; import org.junit.Test; import org.junit.experimental.runners.Enclosed; import org.junit.runner.RunWith; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSet; import com.wesabe.grendel.openpgp.AsymmetricAlgorithm; import com.wesabe.grendel.openpgp.CompressionAlgorithm; import com.wesabe.grendel.openpgp.HashAlgorithm; import com.wesabe.grendel.openpgp.KeyFlag; import com.wesabe.grendel.openpgp.KeySignature; import com.wesabe.grendel.openpgp.SignatureType; import com.wesabe.grendel.openpgp.SymmetricAlgorithm; @RunWith(Enclosed.class) public class KeySignatureTest { public static class A_Self_Signature { private PGPSecretKey key; private KeySignature signature; @Before public void setup() throws Exception { final FileInputStream keyRingFile = new FileInputStream("src/test/resources/secret-keyring.gpg"); final PGPSecretKeyRing keyRing = new PGPSecretKeyRing(keyRingFile); keyRingFile.close(); this.key = keyRing.getSecretKey(0x8C7035EF8838238CL); final Iterator<?> sigs = key.getPublicKey().getSignatures(); this.signature = new KeySignature((PGPSignature) sigs.next()); } @Test public void itIsAPositiveCertification() throws Exception { assertThat(signature.getSignatureType()).isEqualTo(SignatureType.POSITIVE_CERTIFICATION); } @Test public void itHasAKeyID() throws Exception { assertThat(signature.getKeyID()).isEqualTo(0x8C7035EF8838238CL); } @SuppressWarnings("deprecation") @Test public void itHasAHashAlgorithm() throws Exception { assertThat(signature.getHashAlgorithm()).isEqualTo(HashAlgorithm.SHA_1); } @Test public void itHasAKeyAlgorithm() throws Exception { assertThat(signature.getKeyAlgorithm()).isEqualTo(AsymmetricAlgorithm.RSA); } @Test public void itHasACreationTimestamp() throws Exception { assertThat(signature.getCreatedAt()).isEqualTo(new DateTime(2009, 7, 9, 16, 22, 3, 00, DateTimeZone.UTC)); } @Test public void itHasKeyFlags() throws Exception { assertThat(signature.getKeyFlags()).isEqualTo(ImmutableSet.of(KeyFlag.CERTIFICATION, KeyFlag.SIGNING)); } @SuppressWarnings("deprecation") @Test public void itHasPreferredSymmetricAlgorithms() throws Exception { assertThat(signature.getPreferredSymmetricAlgorithms()) .isEqualTo(ImmutableList.of( SymmetricAlgorithm.AES_256, SymmetricAlgorithm.AES_192, SymmetricAlgorithm.AES_128, SymmetricAlgorithm.CAST_128, SymmetricAlgorithm.TRIPLE_DES, SymmetricAlgorithm.IDEA )); } @Test public void itHasPreferredCompressionAlgorithms() throws Exception { assertThat(signature.getPreferredCompressionAlgorithms()) .isEqualTo(ImmutableList.of( CompressionAlgorithm.ZLIB, CompressionAlgorithm.BZIP2, CompressionAlgorithm.ZIP )); } @SuppressWarnings("deprecation") @Test public void itHasPreferredHashAlgorithms() throws Exception { assertThat(signature.getPreferredHashAlgorithms()) .isEqualTo(ImmutableList.of( HashAlgorithm.SHA_1, HashAlgorithm.SHA_256, HashAlgorithm.RIPEMD_160 )); } } }