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

📄 rolesyntax.java

📁 kmlnjlkj nlkjlkjkljl okopokipoipo oipipipo i
💻 JAVA
字号:
package org.bouncycastle.asn1.x509;import org.bouncycastle.asn1.ASN1Encodable;import org.bouncycastle.asn1.ASN1EncodableVector;import org.bouncycastle.asn1.ASN1Sequence;import org.bouncycastle.asn1.ASN1TaggedObject;import org.bouncycastle.asn1.DEREncodable;import org.bouncycastle.asn1.DERObject;import org.bouncycastle.asn1.DERSequence;import org.bouncycastle.asn1.DERString;import org.bouncycastle.asn1.DERTaggedObject;/** * Implementation of the RoleSyntax object as specified by the RFC3281. *  * <pre> * RoleSyntax ::= SEQUENCE { *                 roleAuthority  [0] GeneralNames OPTIONAL, *                 roleName       [1] GeneralName *           }  * </pre> */public class RoleSyntax     extends ASN1Encodable{    private GeneralNames roleAuthority;    private GeneralName roleName;    /**     * RoleSyntax factory method.     * @param obj the object used to construct an instance of <code>     * RoleSyntax</code>. It must be an instance of <code>RoleSyntax     * </code> or <code>ASN1Sequence</code>.     * @return the instance of <code>RoleSyntax</code> built from the     * supplied object.     * @throws java.lang.IllegalArgumentException if the object passed     * to the factory is not an instance of <code>RoleSyntax</code> or     * <code>ASN1Sequence</code>.     */    public static RoleSyntax getInstance(        Object obj)    {                if(obj == null || obj instanceof RoleSyntax)        {            return (RoleSyntax)obj;        }        else if(obj instanceof ASN1Sequence)        {            return new RoleSyntax((ASN1Sequence)obj);        }        throw new IllegalArgumentException("Unknown object in RoleSyntax factory.");    }        /**     * Constructor.     * @param roleAuthority the role authority of this RoleSyntax.     * @param roleName    the role name of this RoleSyntax.     */    public RoleSyntax(        GeneralNames roleAuthority,        GeneralName roleName)    {        if(roleName == null ||                 roleName.getTagNo() != GeneralName.uniformResourceIdentifier ||                ((DERString)roleName.getName()).getString().equals(""))        {            throw new IllegalArgumentException("the role name MUST be non empty and MUST " +                    "use the URI option of GeneralName");        }        this.roleAuthority = roleAuthority;        this.roleName = roleName;    }        /**     * Constructor. Invoking this constructor is the same as invoking     * <code>new RoleSyntax(null, roleName)</code>.     * @param roleName    the role name of this RoleSyntax.     */    public RoleSyntax(        GeneralName roleName)    {        this(null, roleName);    }    /**     * Utility constructor. Takes a <code>String</code> argument representing     * the role name, builds a <code>GeneralName</code> to hold the role name     * and calls the constructor that takes a <code>GeneralName</code>.     * @param roleName     */    public RoleSyntax(        String roleName)    {        this(new GeneralName(GeneralName.uniformResourceIdentifier,                (roleName == null)? "": roleName));    }        /**     * Constructor that builds an instance of <code>RoleSyntax</code> by     * extracting the encoded elements from the <code>ASN1Sequence</code>     * object supplied.     * @param seq    an instance of <code>ASN1Sequence</code> that holds     * the encoded elements used to build this <code>RoleSyntax</code>.     */    public RoleSyntax(        ASN1Sequence seq)    {        if (seq.size() < 1 || seq.size() > 2)        {            throw new IllegalArgumentException("Bad sequence size: "                    + seq.size());        }        for (int i = 0; i != seq.size(); i++)        {            ASN1TaggedObject taggedObject = ASN1TaggedObject.getInstance(seq.getObjectAt(i));            switch (taggedObject.getTagNo())            {            case 0:                roleAuthority = GeneralNames.getInstance(taggedObject, false);                break;            case 1:                roleName = GeneralName.getInstance(taggedObject, true);                break;            default:                throw new IllegalArgumentException("Unknown tag in RoleSyntax");            }        }    }    /**     * Gets the role authority of this RoleSyntax.     * @return    an instance of <code>GeneralNames</code> holding the     * role authority of this RoleSyntax.     */    public GeneralNames getRoleAuthority()    {        return this.roleAuthority;    }        /**     * Gets the role name of this RoleSyntax.     * @return    an instance of <code>GeneralName</code> holding the     * role name of this RoleSyntax.     */    public GeneralName getRoleName()    {        return this.roleName;    }        /**     * Gets the role name as a <code>java.lang.String</code> object.     * @return    the role name of this RoleSyntax represented as a      * <code>java.lang.String</code> object.     */    public String getRoleNameAsString()    {        DERString str = (DERString)this.roleName.getName();                return str.getString();    }        /**     * Gets the role authority as a <code>String[]</code> object.     * @return the role authority of this RoleSyntax represented as a     * <code>String[]</code> array.     */    public String[] getRoleAuthorityAsString()     {        if(roleAuthority == null)         {            return new String[0];        }                GeneralName[] names = roleAuthority.getNames();        String[] namesString = new String[names.length];        for(int i = 0; i < names.length; i++)         {            DEREncodable value = names[i].getName();            if(value instanceof DERString)            {                namesString[i] = ((DERString)value).getString();            }            else            {                namesString[i] = value.toString();            }        }        return namesString;    }        /**     * Implementation of the method <code>toASN1Object</code> as     * required by the superclass <code>ASN1Encodable</code>.     *      * <pre>     * RoleSyntax ::= SEQUENCE {     *                 roleAuthority  [0] GeneralNames OPTIONAL,     *                 roleName       [1] GeneralName     *           }      * </pre>     */    public DERObject toASN1Object()    {        ASN1EncodableVector v = new ASN1EncodableVector();        if(this.roleAuthority != null)        {            v.add(new DERTaggedObject(false, 0, roleAuthority));        }        v.add(new DERTaggedObject(true, 1, roleName));                return new DERSequence(v);    }        public String toString()     {        StringBuffer buff = new StringBuffer("Name: " + this.getRoleNameAsString() +                " - Auth: ");        if(this.roleAuthority == null || roleAuthority.getNames().length == 0)        {            buff.append("N/A");        }        else         {            String[] names = this.getRoleAuthorityAsString();            buff.append('[').append(names[0]);            for(int i = 1; i < names.length; i++)             {                    buff.append(", ").append(names[i]);            }            buff.append(']');        }        return buff.toString();    }}

⌨️ 快捷键说明

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