package org.bouncycastle.asn1.test; import org.bouncycastle.asn1.ASN1Encodable; import org.bouncycastle.asn1.ASN1Integer; import org.bouncycastle.asn1.DERSequence; import org.bouncycastle.asn1.DERTaggedObject; import org.bouncycastle.asn1.DLSequence; import org.bouncycastle.asn1.cmc.BodyPartID; import org.bouncycastle.asn1.cmc.BodyPartList; import org.bouncycastle.asn1.cmc.BodyPartPath; import org.bouncycastle.asn1.cmc.ModCertTemplate; import org.bouncycastle.asn1.crmf.CertTemplate; import org.bouncycastle.util.test.SimpleTest; public class ModCertTemplateTest extends SimpleTest { public static void main(String[] args) { runTest(new ModCertTemplateTest()); } public String getName() { return "ModCertTemplateTest"; } public void performTest() throws Exception { BodyPartPath pkiDataReference = new BodyPartPath(new BodyPartID(10L)); BodyPartList certReferences = new BodyPartList(new BodyPartID(12L)); boolean replace = false; CertTemplate certTemplate = CertTemplate.getInstance(new DLSequence(new DERTaggedObject(false, 1, new ASN1Integer(34L)))); { ModCertTemplate modCertTemplate = new ModCertTemplate( pkiDataReference, certReferences, replace, certTemplate ); byte[] b = modCertTemplate.getEncoded(); ModCertTemplate modCertTemplateResult = ModCertTemplate.getInstance(b); isEquals("pkiDataReference", modCertTemplate.getPkiDataReference(), modCertTemplateResult.getPkiDataReference()); isEquals("certReference", modCertTemplate.getCertReferences(), modCertTemplateResult.getCertReferences()); isEquals("replacingFields", modCertTemplate.isReplacingFields(), modCertTemplateResult.isReplacingFields()); isEquals("certTemplate", modCertTemplate.getCertTemplate().getSerialNumber(), modCertTemplateResult.getCertTemplate().getSerialNumber()); } { // Test default 'result' ModCertTemplate mct = ModCertTemplate.getInstance(new DERSequence(new ASN1Encodable[]{ pkiDataReference, certReferences, certTemplate })); isEquals("pkiDataReference", mct.getPkiDataReference(), pkiDataReference); isEquals("certReference", mct.getCertReferences(), certReferences); isEquals("DEFAULT TRUE on replacingFields", mct.isReplacingFields(), true); isEquals("certTemplate", mct.getCertTemplate().getSerialNumber(), certTemplate.getSerialNumber()); } try { ModCertTemplate.getInstance(new DERSequence()); fail("Sequence must be 3 or 4."); } catch (Throwable t) { isEquals(t.getClass(), IllegalArgumentException.class); } } }