public int Add(CryptographicAttributeObject attribute)
{
if (attribute == null)
{
throw new ArgumentNullException("attribute");
}
string strA = null;
if (attribute.Oid != null)
{
strA = attribute.Oid.Value;
}
for (int i = 0; i < this.m_list.Count; i++)
{
CryptographicAttributeObject obj2 = (CryptographicAttributeObject)this.m_list[i];
if (obj2.Values == attribute.Values)
{
throw new InvalidOperationException(SecurityResources.GetResourceString("InvalidOperation_DuplicateItemNotAllowed"));
}
string strB = null;
if (obj2.Oid != null)
{
strB = obj2.Oid.Value;
}
if ((strA == null) && (strB == null))
{
AsnEncodedDataEnumerator enumerator = attribute.Values.GetEnumerator();
while (enumerator.MoveNext())
{
AsnEncodedData current = enumerator.Current;
obj2.Values.Add(current);
}
return(i);
}
if (((strA != null) && (strB != null)) && (string.Compare(strA, strB, StringComparison.OrdinalIgnoreCase) == 0))
{
if (string.Compare(strA, "1.2.840.113549.1.9.5", StringComparison.OrdinalIgnoreCase) == 0)
{
throw new CryptographicException(SecurityResources.GetResourceString("Cryptography_Pkcs9_MultipleSigningTimeNotAllowed"));
}
AsnEncodedDataEnumerator enumerator2 = attribute.Values.GetEnumerator();
while (enumerator2.MoveNext())
{
AsnEncodedData asnEncodedData = enumerator2.Current;
obj2.Values.Add(asnEncodedData);
}
return(i);
}
}
return(this.m_list.Add(attribute));
}