Beispiel #1
0
 public X509Name(IList oids, IList values, X509NameEntryConverter converter)
 {
     this.converter = converter;
     if (oids.Count != values.Count)
     {
         throw new ArgumentException("'oids' must be same length as 'values'.");
     }
     for (int i = 0; i < oids.Count; i++)
     {
         ordering.Add(oids[i]);
         this.values.Add(values[i]);
         added.Add(false);
     }
 }
Beispiel #2
0
 public X509Name(IList ordering, IDictionary attributes, X509NameEntryConverter converter)
 {
     this.converter = converter;
     foreach (DerObjectIdentifier item in ordering)
     {
         object obj = attributes[item];
         if (obj == null)
         {
             throw new ArgumentException("No attribute for object id - " + item + " - passed to distinguished name");
         }
         this.ordering.Add(item);
         added.Add(false);
         values.Add(obj);
     }
 }
Beispiel #3
0
    public X509Name(bool reverse, IDictionary lookUp, string dirName, X509NameEntryConverter converter)
    {
        this.converter = converter;
        X509NameTokenizer x509NameTokenizer = new X509NameTokenizer(dirName);

        while (x509NameTokenizer.HasMoreTokens())
        {
            string text = x509NameTokenizer.NextToken();
            int    num  = text.IndexOf('=');
            if (num == -1)
            {
                throw new ArgumentException("badly formated directory string");
            }
            string name  = text.Substring(0, num);
            string text2 = text.Substring(num + 1);
            DerObjectIdentifier value = DecodeOid(name, lookUp);
            if (text2.IndexOf('+') > 0)
            {
                X509NameTokenizer x509NameTokenizer2 = new X509NameTokenizer(text2, '+');
                string            value2             = x509NameTokenizer2.NextToken();
                ordering.Add(value);
                values.Add(value2);
                added.Add(false);
                while (x509NameTokenizer2.HasMoreTokens())
                {
                    string text3  = x509NameTokenizer2.NextToken();
                    int    num2   = text3.IndexOf('=');
                    string name2  = text3.Substring(0, num2);
                    string value3 = text3.Substring(num2 + 1);
                    ordering.Add(DecodeOid(name2, lookUp));
                    values.Add(value3);
                    added.Add(true);
                }
            }
            else
            {
                ordering.Add(value);
                values.Add(text2);
                added.Add(false);
            }
        }
        if (!reverse)
        {
            return;
        }
        IList list  = Platform.CreateArrayList();
        IList list2 = Platform.CreateArrayList();
        IList list3 = Platform.CreateArrayList();
        int   num3  = 1;

        for (int i = 0; i < ordering.Count; i++)
        {
            if (!(bool)added[i])
            {
                num3 = 0;
            }
            int index = num3++;
            list.Insert(index, ordering[i]);
            list2.Insert(index, values[i]);
            list3.Insert(index, added[i]);
        }
        ordering = list;
        values   = list2;
        added    = list3;
    }
Beispiel #4
0
 public X509Name(bool reverse, string dirName, X509NameEntryConverter converter)
     : this(reverse, DefaultLookup, dirName, converter)
 {
 }