/// <summary> /// Gets 0 or 1 or many attributes with the specified OID. /// </summary> /// <param name="attributes">A collection of attributes.</param> /// <param name="oid">The attribute OID to search for.</param> /// <returns>Either a <see cref="CryptographicAttributeObject" /> or <c>null</c>, if no attribute was found.</returns> /// <exception cref="ArgumentNullException">Thrown if <paramref name="attributes" /> is <c>null</c>.</exception> /// <exception cref="ArgumentException">Thrown if <paramref name="oid" /> is either <c>null</c> or an empty string.</exception> public static IEnumerable <CryptographicAttributeObject> GetAttributes(this CryptographicAttributeObjectCollection attributes, string oid) { if (attributes == null) { throw new ArgumentNullException(nameof(attributes)); } if (string.IsNullOrEmpty(oid)) { throw new ArgumentException(Strings.ArgumentCannotBeNullOrEmpty, nameof(oid)); } return(attributes.Cast <CryptographicAttributeObject>() .Where(attribute => attribute.Oid.Value == oid)); }