blob: 09cdf11a844a97b4d3abd10a5972c0cb3d3adfad [file] [log] [blame]
package org.bouncycastle.asn1.ocsp;
import org.bouncycastle.asn1.ASN1Choice;
import org.bouncycastle.asn1.ASN1OctetString;
import org.bouncycastle.asn1.ASN1TaggedObject;
import org.bouncycastle.asn1.ASN1Encodable;
import org.bouncycastle.asn1.DEREncodable;
import org.bouncycastle.asn1.DERObject;
import org.bouncycastle.asn1.DEROctetString;
import org.bouncycastle.asn1.DERTaggedObject;
import org.bouncycastle.asn1.x509.X509Name;
public class ResponderID
extends ASN1Encodable
implements ASN1Choice
{
private DEREncodable value;
public ResponderID(
ASN1OctetString value)
{
this.value = value;
}
public ResponderID(
X509Name value)
{
this.value = value;
}
public static ResponderID getInstance(
Object obj)
{
if (obj == null || obj instanceof ResponderID)
{
return (ResponderID)obj;
}
else if (obj instanceof DEROctetString)
{
return new ResponderID((DEROctetString)obj);
}
else if (obj instanceof ASN1TaggedObject)
{
ASN1TaggedObject o = (ASN1TaggedObject)obj;
if (o.getTagNo() == 1)
{
return new ResponderID(X509Name.getInstance(o, true));
}
else
{
return new ResponderID(ASN1OctetString.getInstance(o, true));
}
}
return new ResponderID(X509Name.getInstance(obj));
}
public static ResponderID getInstance(
ASN1TaggedObject obj,
boolean explicit)
{
return getInstance(obj.getObject()); // must be explicitly tagged
}
/**
* Produce an object suitable for an ASN1OutputStream.
* <pre>
* ResponderID ::= CHOICE {
* byName [1] Name,
* byKey [2] KeyHash }
* </pre>
*/
public DERObject toASN1Object()
{
if (value instanceof ASN1OctetString)
{
return new DERTaggedObject(true, 2, value);
}
return new DERTaggedObject(true, 1, value);
}
}