public static ASN1Sequence getInstance(
        ASN1TaggedObject    obj,
        boolean             explicit)
    {
        if (explicit)
        {
            if (!obj.isExplicit())
            {
                throw new IllegalArgumentException("object implicit - explicit expected.");
            }

            return (ASN1Sequence)obj.getObject();
        }
        else
        {
            //
            // constructed object which appears to be explicitly tagged
            // when it should be implicit means we have to add the
            // surrounding sequence.
            //
            if (obj.isExplicit())
            {
                if (obj instanceof BERTaggedObject)
                {
                    return new BERSequence(obj.getObject());
                }
                else
                {
                    return new DERSequence(obj.getObject());
                }
            }
            else
            {
                if (obj.getObject() instanceof ASN1Sequence)
                {
                    return (ASN1Sequence)obj.getObject();
                }
            }
        }

        throw new IllegalArgumentException(
                "unknown object in getInstanceFromTagged");
    }
public static ASN1Sequence getInstance ( ASN1TaggedObject obj , boolean explicit ) { if ( explicit ) { if ( ! obj . isExplicit ( ) ) { throw new IllegalArgumentException ( "object implicit - explicit expected." ) ; } return ( ASN1Sequence ) obj . getObject ( ) ; } else { if ( obj . isExplicit ( ) ) { if ( obj instanceof BERTaggedObject ) { return new BERSequence ( obj . getObject ( ) ) ; } else { return new DERSequence ( obj . getObject ( ) ) ; } } else { if ( obj . getObject ( ) instanceof ASN1Sequence ) { return ( ASN1Sequence ) obj . getObject ( ) ; } } } throw new IllegalArgumentException ( "unknown object in getInstanceFromTagged" ) ; }
Return an ASN1 sequence from a tagged object. There is a special
case here, if an object appears to have been explicitly tagged on
reading but we were expecting it to be implictly tagged in the
normal course of events it indicates that we lost the surrounding
sequence - so we need to add it back (this will happen if the tagged
object is a sequence that contains other sequences). If you are
dealing with implicitly tagged sequences you really <b>should</b>
be using this method.

@param obj the tagged object.
@param explicit true if the object is meant to be explicitly tagged,
false otherwise.
@exception IllegalArgumentException if the tagged object cannot
be converted.