org.bouncycastle.oer.its.ieee1609dot2.RecipientInfo Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of bcutil-jdk18on Show documentation
Show all versions of bcutil-jdk18on Show documentation
The Bouncy Castle Java APIs for ASN.1 extension and utility APIs used to support bcpkix and bctls. This jar contains APIs for JDK 1.8 and up.
package org.bouncycastle.oer.its.ieee1609dot2;
import org.bouncycastle.asn1.ASN1Choice;
import org.bouncycastle.asn1.ASN1Encodable;
import org.bouncycastle.asn1.ASN1Object;
import org.bouncycastle.asn1.ASN1Primitive;
import org.bouncycastle.asn1.ASN1TaggedObject;
import org.bouncycastle.asn1.BERTags;
import org.bouncycastle.asn1.DERTaggedObject;
/**
*
* RecipientInfo ::= CHOICE {
* pskRecipInfo PreSharedKeyRecipientInfo,
* symmRecipInfo SymmRecipientInfo,
* certRecipInfo PKRecipientInfo,
* signedDataRecipInfo PKRecipientInfo,
* rekRecipInfo PKRecipientInfo
* }
*
*/
public class RecipientInfo
extends ASN1Object
implements ASN1Choice
{
public static final int pskRecipInfo = 0;
public static final int symmRecipInfo = 1;
public static final int certRecipInfo = 2;
public static final int signedDataRecipInfo = 3;
public static final int rekRecipInfo = 4;
private final int choice;
private final ASN1Encodable recipientInfo;
public RecipientInfo(int choice, ASN1Encodable value)
{
this.choice = choice;
this.recipientInfo = value;
}
private RecipientInfo(ASN1TaggedObject instance)
{
choice = instance.getTagNo();
switch (choice)
{
case pskRecipInfo:
recipientInfo = PreSharedKeyRecipientInfo.getInstance(instance.getExplicitBaseObject());
break;
case symmRecipInfo:
recipientInfo = SymmRecipientInfo.getInstance(instance.getExplicitBaseObject());
break;
case certRecipInfo:
case signedDataRecipInfo:
case rekRecipInfo:
recipientInfo = PKRecipientInfo.getInstance(instance.getExplicitBaseObject());
break;
default:
throw new IllegalArgumentException("invalid choice value " + choice);
}
}
public static RecipientInfo getInstance(Object object)
{
if (object instanceof RecipientInfo)
{
return (RecipientInfo)object;
}
if (object != null)
{
return new RecipientInfo(ASN1TaggedObject.getInstance(object, BERTags.CONTEXT_SPECIFIC));
}
return null;
}
public int getChoice()
{
return choice;
}
public ASN1Encodable getRecipientInfo()
{
return recipientInfo;
}
public static RecipientInfo pskRecipInfo(PreSharedKeyRecipientInfo info)
{
return new RecipientInfo(pskRecipInfo, info);
}
public static RecipientInfo symmRecipInfo(SymmRecipientInfo info)
{
return new RecipientInfo(symmRecipInfo, info);
}
public static RecipientInfo certRecipInfo(PKRecipientInfo info)
{
return new RecipientInfo(certRecipInfo, info);
}
public static RecipientInfo signedDataRecipInfo(PKRecipientInfo info)
{
return new RecipientInfo(signedDataRecipInfo, info);
}
public static RecipientInfo rekRecipInfo(PKRecipientInfo info)
{
return new RecipientInfo(rekRecipInfo, info);
}
@Override
public ASN1Primitive toASN1Primitive()
{
return new DERTaggedObject(choice, recipientInfo);
}
}