⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 x509name.java

📁 bouncycastle 是一个JAVA安全提供者
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
            if (attributes.get(oid) == null)            {                throw new IllegalArgumentException("No attribute for object id - " + oid.getId() + " - passed to distinguished name");            }            this.values.addElement(attributes.get(oid)); // copy the hash table        }    }    /**     * Takes two vectors one of the oids and the other of the values.     */    public X509Name(        Vector  oids,        Vector  values)    {        this(oids, values, new X509DefaultEntryConverter());    }        /**     * Takes two vectors one of the oids and the other of the values.     * <p>     * The passed in converter will be used to convert the strings into their     * ASN.1 counterparts.     */    public X509Name(        Vector                  oids,        Vector                  values,        X509NameEntryConverter  converter)    {        this.converter = converter;                if (oids.size() != values.size())        {            throw new IllegalArgumentException("oids vector must be same length as values.");        }        for (int i = 0; i < oids.size(); i++)        {            this.ordering.addElement(oids.elementAt(i));            this.values.addElement(values.elementAt(i));            this.added.addElement(new Boolean(false));        }    }    /**     * Takes an X509 dir name as a string of the format "C=AU, ST=Victoria", or     * some such, converting it into an ordered set of name attributes.     */    public X509Name(        String  dirName)    {        this(DefaultReverse, DefaultLookUp, dirName);    }    /**     * Takes an X509 dir name as a string of the format "C=AU, ST=Victoria", or     * some such, converting it into an ordered set of name attributes with each     * string value being converted to its associated ASN.1 type using the passed     * in converter.     */    public X509Name(        String                  dirName,        X509NameEntryConverter  converter)    {        this(DefaultReverse, DefaultLookUp, dirName, converter);    }        /**     * Takes an X509 dir name as a string of the format "C=AU, ST=Victoria", or     * some such, converting it into an ordered set of name attributes. If reverse     * is true, create the encoded version of the sequence starting from the     * last element in the string.     */    public X509Name(        boolean reverse,        String  dirName)    {        this(reverse, DefaultLookUp, dirName);    }    /**     * Takes an X509 dir name as a string of the format "C=AU, ST=Victoria", or     * some such, converting it into an ordered set of name attributes with each     * string value being converted to its associated ASN.1 type using the passed     * in converter. If reverse is true the ASN.1 sequence representing the DN will     * be built by starting at the end of the string, rather than the start.     */    public X509Name(        boolean                 reverse,        String                  dirName,        X509NameEntryConverter  converter)    {        this(reverse, DefaultLookUp, dirName, converter);    }        /**     * Takes an X509 dir name as a string of the format "C=AU, ST=Victoria", or     * some such, converting it into an ordered set of name attributes. lookUp      * should provide a table of lookups, indexed by lowercase only strings and     * yielding a DERObjectIdentifier, other than that OID. and numeric oids     * will be processed automatically.     * <br>     * If reverse is true, create the encoded version of the sequence     * starting from the last element in the string.     * @param reverse true if we should start scanning from the end (RFC 2553).     * @param lookUp table of names and their oids.     * @param dirName the X.500 string to be parsed.     */    public X509Name(        boolean     reverse,        Hashtable   lookUp,        String      dirName)    {        this(reverse, lookUp, dirName, new X509DefaultEntryConverter());    }        private DERObjectIdentifier decodeOID(        String      name,        Hashtable   lookUp)    {        if (name.toUpperCase().startsWith("OID."))        {            return new DERObjectIdentifier(name.substring(4));        }        else if (name.charAt(0) >= '0' && name.charAt(0) <= '9')        {            return new DERObjectIdentifier(name);        }        DERObjectIdentifier oid = (DERObjectIdentifier)lookUp.get(name.toLowerCase());        if (oid == null)        {            throw new IllegalArgumentException("Unknown object id - " + name + " - passed to distinguished name");        }                return oid;    }        /**     * Takes an X509 dir name as a string of the format "C=AU, ST=Victoria", or     * some such, converting it into an ordered set of name attributes. lookUp      * should provide a table of lookups, indexed by lowercase only strings and     * yielding a DERObjectIdentifier, other than that OID. and numeric oids     * will be processed automatically. The passed in converter is used to convert the     * string values to the right of each equals sign to their ASN.1 counterparts.     * <br>     * @param reverse true if we should start scanning from the end, false otherwise.     * @param lookUp table of names and oids.     * @param dirName the string dirName     * @param converter the converter to convert string values into their ASN.1 equivalents     */    public X509Name(        boolean                 reverse,        Hashtable               lookUp,        String                  dirName,        X509NameEntryConverter  converter)    {        this.converter = converter;        X509NameTokenizer   nTok = new X509NameTokenizer(dirName);        while (nTok.hasMoreTokens())        {            String  token = nTok.nextToken();            int     index = token.indexOf('=');            if (index == -1)            {                throw new IllegalArgumentException("badly formated directory string");            }            String              name = token.substring(0, index);            String              value = token.substring(index + 1);            DERObjectIdentifier oid = decodeOID(name, lookUp);            if (value.indexOf('+') > 0)            {                X509NameTokenizer   vTok = new X509NameTokenizer(value, '+');                                this.ordering.addElement(oid);                this.values.addElement(vTok.nextToken());                this.added.addElement(new Boolean(false));                                while (vTok.hasMoreTokens())                {                    String  sv = vTok.nextToken();                    int     ndx = sv.indexOf('=');                    String  nm = sv.substring(0, ndx);                    String  vl = sv.substring(ndx + 1);                    this.ordering.addElement(decodeOID(nm, lookUp));                    this.values.addElement(vl);                    this.added.addElement(new Boolean(true));                }            }            else            {                this.ordering.addElement(oid);                this.values.addElement(value);                this.added.addElement(new Boolean(false));            }        }        if (reverse)        {            Vector  o = new Vector();            Vector  v = new Vector();            Vector  a = new Vector();            for (int i = this.ordering.size() - 1; i >= 0; i--)            {                o.addElement(this.ordering.elementAt(i));                v.addElement(this.values.elementAt(i));                a.addElement(this.added.elementAt(i));            }            this.ordering = o;            this.values = v;            this.added = a;        }    }    /**     * return a vector of the oids in the name, in the order they were found.     */    public Vector getOIDs()    {        Vector  v = new Vector();        for (int i = 0; i != ordering.size(); i++)        {            v.addElement(ordering.elementAt(i));        }        return v;    }    /**     * return a vector of the values found in the name, in the order they     * were found.     */    public Vector getValues()    {        Vector  v = new Vector();        for (int i = 0; i != values.size(); i++)        {            v.addElement(values.elementAt(i));        }        return v;    }    public DERObject toASN1Object()    {        if (seq == null)        {            ASN1EncodableVector  vec = new ASN1EncodableVector();            ASN1EncodableVector  sVec = new ASN1EncodableVector();            DERObjectIdentifier  lstOid = null;                        for (int i = 0; i != ordering.size(); i++)            {                ASN1EncodableVector     v = new ASN1EncodableVector();                DERObjectIdentifier     oid = (DERObjectIdentifier)ordering.elementAt(i);                v.add(oid);                String  str = (String)values.elementAt(i);                v.add(converter.getConvertedValue(oid, str));                 if (lstOid == null                     || ((Boolean)this.added.elementAt(i)).booleanValue())                {                    sVec.add(new DERSequence(v));                }                else                {                    vec.add(new DERSet(sVec));                    sVec = new ASN1EncodableVector();                                        sVec.add(new DERSequence(v));                }                                lstOid = oid;            }                        vec.add(new DERSet(sVec));                        seq = new DERSequence(vec);        }        return seq;    }    /**     * @param inOrder if true the order of both X509 names must be the same,     * as well as the values associated with each element.     */    public boolean equals(Object _obj, boolean inOrder)     {        if (_obj == this)        {            return true;        }        if (!inOrder)        {            return this.equals(_obj);        }        if (_obj == null || !(_obj instanceof X509Name))        {            return false;        }                X509Name _oxn          = (X509Name)_obj;        int      _orderingSize = ordering.size();        if (_orderingSize != _oxn.ordering.size())         {            return false;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -