blob: 0a3d3cf3621529bb715328645c77f8ff468780d8 [file] [log] [blame]
package org.bouncycastle.asn1.test;
import org.bouncycastle.asn1.ASN1Encodable;
import org.bouncycastle.asn1.ASN1Integer;
import org.bouncycastle.asn1.DERBitString;
import org.bouncycastle.asn1.DERSequence;
import org.bouncycastle.asn1.DERSet;
import org.bouncycastle.asn1.DERTaggedObject;
import org.bouncycastle.asn1.cmc.BodyPartID;
import org.bouncycastle.asn1.cmc.CertificationRequest;
import org.bouncycastle.asn1.cmc.TaggedCertificationRequest;
import org.bouncycastle.asn1.cmc.TaggedRequest;
import org.bouncycastle.asn1.crmf.AttributeTypeAndValue;
import org.bouncycastle.asn1.crmf.CertReqMsg;
import org.bouncycastle.asn1.crmf.CertRequest;
import org.bouncycastle.asn1.crmf.CertTemplate;
import org.bouncycastle.asn1.crmf.Controls;
import org.bouncycastle.asn1.crmf.POPOSigningKey;
import org.bouncycastle.asn1.crmf.POPOSigningKeyInput;
import org.bouncycastle.asn1.crmf.ProofOfPossession;
import org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers;
import org.bouncycastle.asn1.x509.AlgorithmIdentifier;
import org.bouncycastle.asn1.x509.GeneralName;
import org.bouncycastle.asn1.x509.SubjectPublicKeyInfo;
import org.bouncycastle.util.encoders.Base64;
import org.bouncycastle.util.test.SimpleTest;
public class TaggedRequestTest
extends SimpleTest
{
public static void main(String[] args)
{
runTest(new TaggedRequestTest());
}
public String getName()
{
return "TaggedRequestTest";
}
private static byte[] req1 = Base64.decode(
"MIHoMIGTAgEAMC4xDjAMBgNVBAMTBVRlc3QyMQ8wDQYDVQQKEwZBbmFUb20xCzAJBgNVBAYTAlNF"
+ "MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBALlEt31Tzt2MlcOljvacJgzQVhmlMoqAOgqJ9Pgd3Gux"
+ "Z7/WcIlgW4QCB7WZT21O1YoghwBhPDMcNGrHei9kHQkCAwEAAaAAMA0GCSqGSIb3DQEBBQUAA0EA"
+ "NDEI4ecNtJ3uHwGGlitNFq9WxcoZ0djbQJ5hABMotav6gtqlrwKXY2evaIrsNwkJtNdwwH18aQDU"
+ "KCjOuBL38Q==");
public void performTest()
throws Exception
{
{ // TaggedCertificationRequest
TaggedRequest tr = new TaggedRequest(
new TaggedCertificationRequest(
new BodyPartID(10L),
CertificationRequest.getInstance(req1))
);
byte[] b = tr.getEncoded();
TaggedRequest trResult = TaggedRequest.getInstance(b);
isEquals("Tag", tr.getTagNo(), trResult.getTagNo());
isEquals("Is TCR tag", TaggedRequest.TCR, tr.getTagNo());
isEquals("Value", tr.getValue(), trResult.getValue());
}
{ // CertReqMsg
POPOSigningKeyInput pski = new POPOSigningKeyInput(
new GeneralName(GeneralName.rfc822Name, "fish"),
new SubjectPublicKeyInfo(new AlgorithmIdentifier(
PKCSObjectIdentifiers.certBag,
new ASN1Integer(5L)), new ASN1Integer(4L)
));
AlgorithmIdentifier aid = new AlgorithmIdentifier(PKCSObjectIdentifiers.crlTypes, new ASN1Integer(1L));
DERBitString dbi = new DERBitString(2);
POPOSigningKey popoSigningKey = new POPOSigningKey(pski, aid, dbi);
ProofOfPossession proofOfPossession = new ProofOfPossession(new POPOSigningKey(pski, aid, dbi));
TaggedRequest tr = new TaggedRequest(
new CertReqMsg(new CertRequest(
new ASN1Integer(1L),
CertTemplate.getInstance(new DERSequence(new DERTaggedObject(0,new ASN1Integer(3L)))),
new Controls(new AttributeTypeAndValue(PKCSObjectIdentifiers.pkcs_9,new ASN1Integer(3)))),
proofOfPossession,
new AttributeTypeAndValue[0])
);
byte[] b = tr.getEncoded();
TaggedRequest trResult = TaggedRequest.getInstance(b);
isEquals("Tag", tr.getTagNo(), trResult.getTagNo());
isEquals("Is CRM tag", TaggedRequest.CRM, tr.getTagNo());
isEquals("Value", tr.getValue(), trResult.getValue());
}
{ // ORM
TaggedRequest tr = TaggedRequest.getInstance( new DERTaggedObject(TaggedRequest.ORM, new DERSequence(new ASN1Encodable[]{
new BodyPartID(1L),
PKCSObjectIdentifiers.data,
new DERSet(new ASN1Encodable[]{new ASN1Integer(5L)})
})));
byte[] b = tr.getEncoded();
TaggedRequest trResult = TaggedRequest.getInstance(b);
isEquals("Tag", tr.getTagNo(), trResult.getTagNo());
isEquals("Is ORM tag", TaggedRequest.ORM, tr.getTagNo());
isEquals("Value", tr.getValue(), trResult.getValue());
}
}
}