package org.bouncycastle.cms.test; import java.math.BigInteger; import java.security.cert.X509CertSelector; import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite; import org.bouncycastle.asn1.DEROctetString; import org.bouncycastle.asn1.x500.X500Name; import org.bouncycastle.cms.KeyTransRecipientId; import org.bouncycastle.cms.SignerId; import org.bouncycastle.cms.jcajce.JcaSelectorConverter; import org.bouncycastle.cms.jcajce.JcaX509CertSelectorConverter; import org.bouncycastle.util.Arrays; public class ConverterTest extends TestCase { public void testSignerIdConversion() throws Exception { JcaX509CertSelectorConverter converter = new JcaX509CertSelectorConverter(); JcaSelectorConverter toSelector = new JcaSelectorConverter(); SignerId sid1 = new SignerId(new X500Name("CN=Test"), BigInteger.valueOf(1), new byte[20]); X509CertSelector conv = converter.getCertSelector(sid1); assertTrue(conv.getIssuerAsString().equals("CN=Test")); assertTrue(Arrays.areEqual(conv.getSubjectKeyIdentifier(), new DEROctetString(new byte[20]).getEncoded())); assertEquals(conv.getSerialNumber(), sid1.getSerialNumber()); SignerId sid2 = toSelector.getSignerId(conv); assertEquals(sid1, sid2); sid1 = new SignerId(new X500Name("CN=Test"), BigInteger.valueOf(1)); conv = converter.getCertSelector(sid1); assertTrue(conv.getIssuerAsString().equals("CN=Test")); assertNull(conv.getSubjectKeyIdentifier()); assertEquals(conv.getSerialNumber(), sid1.getSerialNumber()); sid2 = toSelector.getSignerId(conv); assertEquals(sid1, sid2); sid1 = new SignerId(new byte[20]); conv = converter.getCertSelector(sid1); assertNull(conv.getIssuerAsString()); assertTrue(Arrays.areEqual(conv.getSubjectKeyIdentifier(), new DEROctetString(new byte[20]).getEncoded())); assertNull(conv.getSerialNumber()); sid2 = toSelector.getSignerId(conv); assertEquals(sid1, sid2); } public void testRecipientIdConversion() throws Exception { JcaX509CertSelectorConverter converter = new JcaX509CertSelectorConverter(); JcaSelectorConverter toSelector = new JcaSelectorConverter(); KeyTransRecipientId ktid1 = new KeyTransRecipientId(new X500Name("CN=Test"), BigInteger.valueOf(1), new byte[20]); X509CertSelector conv = converter.getCertSelector(ktid1); assertTrue(conv.getIssuerAsString().equals("CN=Test")); assertTrue(Arrays.areEqual(conv.getSubjectKeyIdentifier(), new DEROctetString(new byte[20]).getEncoded())); assertEquals(conv.getSerialNumber(), ktid1.getSerialNumber()); KeyTransRecipientId ktid2 = toSelector.getKeyTransRecipientId(conv); assertEquals(ktid1, ktid2); ktid1 = new KeyTransRecipientId(new X500Name("CN=Test"), BigInteger.valueOf(1)); conv = converter.getCertSelector(ktid1); assertTrue(conv.getIssuerAsString().equals("CN=Test")); assertNull(conv.getSubjectKeyIdentifier()); assertEquals(conv.getSerialNumber(), ktid1.getSerialNumber()); ktid2 = toSelector.getKeyTransRecipientId(conv); assertEquals(ktid1, ktid2); ktid1 = new KeyTransRecipientId(new byte[20]); conv = converter.getCertSelector(ktid1); assertNull(conv.getIssuerAsString()); assertTrue(Arrays.areEqual(conv.getSubjectKeyIdentifier(), new DEROctetString(new byte[20]).getEncoded())); assertNull(conv.getSerialNumber()); ktid2 = toSelector.getKeyTransRecipientId(conv); assertEquals(ktid1, ktid2); } public static Test suite() throws Exception { return new TestSuite(ConverterTest.class); } }