static private FromAsn1Octets ( byte octets ) : |
||
octets | byte | |
return |
internal static DerBitString FromAsn1Octets(byte[] octets)
{
if (octets.Length < 1)
throw new ArgumentException("truncated BIT STRING detected", "octets");
int padBits = octets[0];
byte[] data = Arrays.CopyOfRange(octets, 1, octets.Length);
if (padBits > 0 && padBits < 8 && data.Length > 0)
{
int last = data[data.Length - 1];
int mask = (1 << padBits) - 1;
if ((last & mask) != 0)
{
return new BerBitString(data, padBits);
}
}
return new DerBitString(data, padBits);
}
}
public static DerBitString GetInstance(Asn1TaggedObject obj, bool isExplicit) { Asn1Object @object = obj.GetObject(); if (isExplicit || @object is DerBitString) { return(DerBitString.GetInstance(@object)); } return(DerBitString.FromAsn1Octets(((Asn1OctetString)@object).GetOctets())); }