public DerExternal(Asn1EncodableVector vector)
{
int num = 0;
Asn1Object objFromVector = DerExternal.GetObjFromVector(vector, num);
if (objFromVector is DerObjectIdentifier)
{
this.directReference = (DerObjectIdentifier)objFromVector;
num++;
objFromVector = DerExternal.GetObjFromVector(vector, num);
}
if (objFromVector is DerInteger)
{
this.indirectReference = (DerInteger)objFromVector;
num++;
objFromVector = DerExternal.GetObjFromVector(vector, num);
}
if (!(objFromVector is DerTaggedObject))
{
this.dataValueDescriptor = objFromVector;
num++;
objFromVector = DerExternal.GetObjFromVector(vector, num);
}
if (!(objFromVector is DerTaggedObject))
{
throw new InvalidOperationException("No tagged object found in vector. Structure doesn't seem to be of type External");
}
if (vector.Count != num + 1)
{
throw new ArgumentException("input vector too large", "vector");
}
if (!(objFromVector is DerTaggedObject))
{
throw new ArgumentException("No tagged object found in vector. Structure doesn't seem to be of type External", "vector");
}
DerTaggedObject derTaggedObject = (DerTaggedObject)objFromVector;
this.Encoding = derTaggedObject.TagNo;
if (this.encoding < 0 || this.encoding > 2)
{
throw new InvalidOperationException("invalid encoding value");
}
this.externalContent = derTaggedObject.GetObject();
}