package org.bouncycastle.asn1.test; import java.util.Date; import org.bouncycastle.asn1.DERGeneralizedTime; import org.bouncycastle.asn1.cmc.BodyPartID; import org.bouncycastle.asn1.cmc.CMCFailInfo; import org.bouncycastle.asn1.cmc.CMCStatus; import org.bouncycastle.asn1.cmc.CMCStatusInfo; import org.bouncycastle.asn1.cmc.CMCStatusInfoBuilder; import org.bouncycastle.asn1.cmc.PendInfo; import org.bouncycastle.util.Strings; import org.bouncycastle.util.test.SimpleTest; public class CMCStatusInfoTest extends SimpleTest { public static void main(String[] args) { runTest(new CMCStatusInfoTest()); } public String getName() { return "CMCStatusInfoTest"; } public void performTest() throws Exception { { // Without optional status String CMCStatusInfoBuilder bldr = new CMCStatusInfoBuilder(CMCStatus.confirmRequired, new BodyPartID(10)); CMCStatusInfo cmsInfo = bldr.build(); isTrue("Has statusString", null == cmsInfo.getStatusString()); isEquals("Has other info", false, cmsInfo.hasOtherInfo()); byte[] b = cmsInfo.getEncoded(); CMCStatusInfo res = CMCStatusInfo.getInstance(b); // Same isEquals("CMCStatus with no optional part",cmsInfo, res); isEquals("Has other info", false, res.hasOtherInfo()); } { // Without optional other info. CMCStatusInfoBuilder bldr = new CMCStatusInfoBuilder(CMCStatus.confirmRequired, new BodyPartID(10)).setStatusString("Cats"); CMCStatusInfo cmsInfo = bldr.build(); isEquals("Has other info", false, cmsInfo.hasOtherInfo()); byte[] b = cmsInfo.getEncoded(); CMCStatusInfo res = CMCStatusInfo.getInstance(b); // Same isEquals("CMCStatus with no optional part",cmsInfo, res); isEquals("Has other info", false, res.hasOtherInfo()); } { // With optional info: PendInfo CMCStatusInfoBuilder bldr = new CMCStatusInfoBuilder(CMCStatus.confirmRequired, new BodyPartID(10)) .setStatusString("Cats") .setOtherInfo(new PendInfo(Strings.toByteArray("fish"), new DERGeneralizedTime(new Date()))); CMCStatusInfo cmsInfo = bldr.build(); isEquals("Must have other info", true, cmsInfo.hasOtherInfo()); isEquals("Other is NOT fail info", false, cmsInfo.getOtherInfo().isFailInfo()); byte[] b = cmsInfo.getEncoded(); CMCStatusInfo res = CMCStatusInfo.getInstance(b); isEquals("With optional info: PendInfo",cmsInfo, res); isEquals("Must have other info", true, res.hasOtherInfo()); isEquals("Other is NOT fail info", false, res.getOtherInfo().isFailInfo()); } { // With optional info: CMCFailInfo CMCStatusInfoBuilder bldr = new CMCStatusInfoBuilder(CMCStatus.confirmRequired, new BodyPartID(10)) .setStatusString("Cats") .setOtherInfo(CMCFailInfo.authDataFail); CMCStatusInfo cmsInfo = bldr.build(); isEquals("Must have other info", true, cmsInfo.hasOtherInfo()); isEquals("Other is fail info", true, cmsInfo.getOtherInfo().isFailInfo()); byte[] b = cmsInfo.getEncoded(); CMCStatusInfo res = CMCStatusInfo.getInstance(b); isEquals("With optional info: CMCFailInfo",cmsInfo, res); isEquals("Must have other info", true, res.hasOtherInfo()); isEquals("Other is fail info", true, res.getOtherInfo().isFailInfo()); } } }