1
package org.bouncycastle.asn1.cms;
3
import org.bouncycastle.asn1.ASN1Choice;
4
import org.bouncycastle.asn1.ASN1Encodable;
5
import org.bouncycastle.asn1.ASN1OctetString;
6
import org.bouncycastle.asn1.ASN1TaggedObject;
7
import org.bouncycastle.asn1.DEREncodable;
8
import org.bouncycastle.asn1.DERObject;
9
import org.bouncycastle.asn1.DERTaggedObject;
11
public class RecipientIdentifier
15
private DEREncodable id;
17
public RecipientIdentifier(
18
IssuerAndSerialNumber id)
23
public RecipientIdentifier(
26
this.id = new DERTaggedObject(false, 0, id);
29
public RecipientIdentifier(
36
* return a RecipientIdentifier object from the given object.
38
* @param o the object we want converted.
39
* @exception IllegalArgumentException if the object cannot be converted.
41
public static RecipientIdentifier getInstance(
44
if (o == null || o instanceof RecipientIdentifier)
46
return (RecipientIdentifier)o;
49
if (o instanceof IssuerAndSerialNumber)
51
return new RecipientIdentifier((IssuerAndSerialNumber)o);
54
if (o instanceof ASN1OctetString)
56
return new RecipientIdentifier((ASN1OctetString)o);
59
if (o instanceof DERObject)
61
return new RecipientIdentifier((DERObject)o);
64
throw new IllegalArgumentException(
65
"Illegal object in RecipientIdentifier: " + o.getClass().getName());
68
public boolean isTagged()
70
return (id instanceof ASN1TaggedObject);
73
public DEREncodable getId()
75
if (id instanceof ASN1TaggedObject)
77
return ASN1OctetString.getInstance((ASN1TaggedObject)id, false);
80
return IssuerAndSerialNumber.getInstance(id);
84
* Produce an object suitable for an ASN1OutputStream.
86
* RecipientIdentifier ::= CHOICE {
87
* issuerAndSerialNumber IssuerAndSerialNumber,
88
* subjectKeyIdentifier [0] SubjectKeyIdentifier
91
* SubjectKeyIdentifier ::= OCTET STRING
94
public DERObject toASN1Object()
96
return id.getDERObject();