| package org.bouncycastle.asn1.test; |
| |
| import java.util.Date; |
| |
| import org.bouncycastle.asn1.ASN1OctetString; |
| import org.bouncycastle.asn1.DERGeneralizedTime; |
| import org.bouncycastle.asn1.DEROctetString; |
| import org.bouncycastle.asn1.cmc.BodyPartID; |
| import org.bouncycastle.asn1.cmc.CMCFailInfo; |
| import org.bouncycastle.asn1.cmc.CMCStatus; |
| import org.bouncycastle.asn1.cmc.CMCStatusInfoV2; |
| import org.bouncycastle.asn1.cmc.CMCStatusInfoV2Builder; |
| import org.bouncycastle.asn1.cmc.ExtendedFailInfo; |
| import org.bouncycastle.asn1.cmc.PendInfo; |
| import org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers; |
| import org.bouncycastle.util.Strings; |
| import org.bouncycastle.util.test.SimpleTest; |
| |
| |
| public class CMCStatusInfoV2Test |
| extends SimpleTest |
| { |
| |
| public static void main(String[] args) |
| { |
| runTest(new CMCStatusInfoV2Test()); |
| } |
| |
| public String getName() |
| { |
| return "CMCStatusInfoV2Test"; |
| } |
| |
| public void performTest() |
| throws Exception |
| { |
| { // Without optional status String |
| |
| CMCStatusInfoV2Builder bldr = |
| new CMCStatusInfoV2Builder(CMCStatus.confirmRequired, new BodyPartID(10)); |
| |
| CMCStatusInfoV2 cmsInfo = bldr.build(); |
| |
| isTrue("Has statusString", null == cmsInfo.getStatusString()); |
| isEquals("Has other info", false, cmsInfo.hasOtherInfo()); |
| |
| byte[] b = cmsInfo.getEncoded(); |
| CMCStatusInfoV2 res = CMCStatusInfoV2.getInstance(b); |
| |
| // Same |
| isEquals("CMCStatus with no optional part", cmsInfo, res); |
| |
| isEquals("Has other info", false, res.hasOtherInfo()); |
| |
| } |
| |
| { // Without optional other info. |
| |
| CMCStatusInfoV2Builder bldr = |
| new CMCStatusInfoV2Builder(CMCStatus.confirmRequired, new BodyPartID(10)).setStatusString("Cats"); |
| |
| CMCStatusInfoV2 cmsInfo = bldr.build(); |
| |
| isEquals("Has other info", false, cmsInfo.hasOtherInfo()); |
| |
| byte[] b = cmsInfo.getEncoded(); |
| CMCStatusInfoV2 res = CMCStatusInfoV2.getInstance(b); |
| |
| // Same |
| isEquals("CMCStatus with no optional part", cmsInfo, res); |
| |
| isEquals("Has other info", false, res.hasOtherInfo()); |
| |
| } |
| |
| |
| { // With optional info: PendInfo |
| CMCStatusInfoV2Builder bldr = |
| new CMCStatusInfoV2Builder(CMCStatus.confirmRequired, new BodyPartID(10)) |
| .setStatusString("Cats") |
| .setOtherInfo(new PendInfo(Strings.toByteArray("fish"), new DERGeneralizedTime(new Date()))); |
| |
| CMCStatusInfoV2 cmsInfo = bldr.build(); |
| |
| isEquals("Must have other info", true, cmsInfo.hasOtherInfo()); |
| isEquals("Other is NOT fail info", false, cmsInfo.getOtherStatusInfo().isFailInfo()); |
| |
| byte[] b = cmsInfo.getEncoded(); |
| CMCStatusInfoV2 res = CMCStatusInfoV2.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.getOtherStatusInfo().isFailInfo()); |
| } |
| |
| |
| { // With optional info: CMCFailInfo |
| CMCStatusInfoV2Builder bldr = |
| new CMCStatusInfoV2Builder(CMCStatus.confirmRequired, new BodyPartID(10)) |
| .setStatusString("Cats") |
| .setOtherInfo(CMCFailInfo.authDataFail); |
| |
| CMCStatusInfoV2 cmsInfo = bldr.build(); |
| |
| isEquals("Must have other info", true, cmsInfo.hasOtherInfo()); |
| isEquals("Other is fail info", true, cmsInfo.getOtherStatusInfo().isFailInfo()); |
| |
| byte[] b = cmsInfo.getEncoded(); |
| CMCStatusInfoV2 res = CMCStatusInfoV2.getInstance(b); |
| |
| isEquals("With optional info: CMCFailInfo", cmsInfo, res); |
| |
| isEquals("Must have other info", true, res.hasOtherInfo()); |
| isEquals("Other is fail info", true, res.getOtherStatusInfo().isFailInfo()); |
| } |
| |
| |
| { // With optional info: ExtendedFailInfo |
| CMCStatusInfoV2Builder bldr = |
| new CMCStatusInfoV2Builder(CMCStatus.confirmRequired, new BodyPartID(10)) |
| .setStatusString("Cats") |
| .setOtherInfo(new ExtendedFailInfo(PKCSObjectIdentifiers.bagtypes, new DEROctetString("fish".getBytes()))); |
| |
| CMCStatusInfoV2 cmsInfo = bldr.build(); |
| |
| isEquals("Must have other info", true, cmsInfo.hasOtherInfo()); |
| isEquals("Other is extended fail info", true, cmsInfo.getOtherStatusInfo().isExtendedFailInfo()); |
| |
| byte[] b = cmsInfo.getEncoded(); |
| CMCStatusInfoV2 res = CMCStatusInfoV2.getInstance(b); |
| |
| isEquals("With optional info: ExtendedFailInfo", cmsInfo, res); |
| |
| isEquals("Must have other info", true, res.hasOtherInfo()); |
| isEquals("Other is extended fail info", true, res.getOtherStatusInfo().isExtendedFailInfo()); |
| } |
| |
| |
| } |
| } |