亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? certtools.java

?? 一套JAVA的CA證書簽發系統.
?? JAVA
?? 第 1 頁 / 共 3 頁
字號:
/************************************************************************* *                                                                       * *  EJBCA: The OpenSource Certificate Authority                          * *                                                                       * *  This software is free software; you can redistribute it and/or       * *  modify it under the terms of the GNU Lesser General Public           * *  License as published by the Free Software Foundation; either         * *  version 2.1 of the License, or any later version.                    * *                                                                       * *  See terms of license at gnu.org.                                     * *                                                                       * *************************************************************************/ package se.anatom.ejbca.util;import java.io.*;import java.security.*;import java.security.cert.*;import java.util.*;import java.net.URL;import org.apache.log4j.Logger;import org.bouncycastle.asn1.*;import org.bouncycastle.asn1.x509.*;import org.bouncycastle.jce.*;import org.bouncycastle.jce.provider.BouncyCastleProvider;/** * Tools to handle common certificate operations. * * @version $Id: CertTools.java,v 1.64 2004/06/01 19:38:26 anatom Exp $ */public class CertTools {    private static Logger log = Logger.getLogger(CertTools.class);    public static final String EMAIL = "rfc822name";    public static final String EMAIL1 = "email";    public static final String EMAIL2 = "EmailAddress";    public static final String EMAIL3 = "E";    public static final String DNS = "dNSName";    public static final String URI = "uniformResourceIdentifier";    public static final String URI1 = "uri";    public static final String IPADDR = "iPAddress";    /** Microsoft altName for windows smart card logon */    public static final String UPN = "upn";    /** ObjectID for upn altName for windows smart card logon */    public static final String UPN_OBJECTID = "1.3.6.1.4.1.311.20.2.3";    /** Microsoft altName for windows domain controller guid */    public static final String GUID = "guid";    /** ObjectID for upn altName for windows domain controller guid */    public static final String GUID_OBJECTID = "1.3.6.1.4.1.311.25.1";        private static final String[] EMAILIDS = { EMAIL, EMAIL1, EMAIL2, EMAIL3 };    /** ObjectID for unstructuredName DN attribute */    public static final DERObjectIdentifier unstructuredName = new DERObjectIdentifier("1.2.840.113549.1.9.2");    /** ObjectID for unstructuredAddress DN attribute */    public static final DERObjectIdentifier unstructuredAddress = new DERObjectIdentifier("1.2.840.113549.1.9.8");    /**     * inhibits creation of new CertTools     */    private CertTools() {    }    /** BC X509Name contains some lookup tables that could maybe be used here. */    private static final HashMap oids = new HashMap();    static {        oids.put("c", X509Name.C);        oids.put("dc", X509Name.DC);        oids.put("st", X509Name.ST);        oids.put("l", X509Name.L);        oids.put("o", X509Name.O);        oids.put("ou", X509Name.OU);        oids.put("t", X509Name.T);        oids.put("surname", X509Name.SURNAME);        oids.put("initials", X509Name.INITIALS);        oids.put("givenname", X509Name.GIVENNAME);        oids.put("gn", X509Name.GIVENNAME);        oids.put("sn", X509Name.SN);        oids.put("serialnumber", X509Name.SN);        oids.put("cn", X509Name.CN);        oids.put("uid", X509Name.UID);        oids.put("emailaddress", X509Name.EmailAddress);        oids.put("e", X509Name.EmailAddress);        oids.put("email", X509Name.EmailAddress);        oids.put("1.2.840.113549.1.9.2", unstructuredName); //unstructuredName         oids.put("1.2.840.113549.1.9.8", unstructuredAddress); //unstructuredAddress    }    private static final String[] dNObjectsForward = {        "1.2.840.113549.1.9.8", "1.2.840.113549.1.9.2", "emailaddress", "e", "email", "uid", "cn", "sn", "serialnumber", "gn", "givenname",        "initials", "surname", "t", "ou", "o", "l", "st", "dc", "c"    };    private static final String[] dNObjectsReverse = {        "c", "dc", "st", "l", "o", "ou", "t", "surname", "initials",        "givenname", "gn", "serialnumber", "sn", "cn", "uid", "email", "e", "emailaddress", "1.2.840.113549.1.9.2", "1.2.840.113549.1.9.8"    };    /** Change this if you want reverse order */    private static final String[] dNObjects = dNObjectsForward;                private static DERObjectIdentifier getOid(String o) {        return (DERObjectIdentifier) oids.get(o.toLowerCase());    } // getOid    /**     * Creates a (Bouncycastle) X509Name object from a string with a DN. Known OID (with order)     * are: <code> EmailAddress, UID, CN, SN (SerialNumber), GivenName, Initials, SurName, T, OU,     * O, L, ST, DC, C </code>     * To change order edit 'dnObjects' in this source file.     *     * @param dn String containing DN that will be transformed into X509Name, The DN string has the     *        format "CN=zz,OU=yy,O=foo,C=SE". Unknown OIDs in the string will be silently     *        dropped.     *     * @return X509Name     */    public static X509Name stringToBcX509Name(String dn) {        //log.debug(">stringToBcX509Name: " + dn);        // first make two vectors, one with all the C, O, OU etc specifying        // the order and one holding the actual values        ArrayList oldordering = new ArrayList();        ArrayList oldvalues = new ArrayList();        X509NameTokenizer xt = new X509NameTokenizer(dn);        while (xt.hasMoreTokens()) {            // This is a pair (CN=xx)            String pair = xt.nextToken();            int ix = pair.indexOf("=");            if (ix != -1) {                // make lower case so we can easily compare later                oldordering.add(pair.substring(0, ix).toLowerCase());                oldvalues.add(pair.substring(ix + 1));            } else {                // Huh, what's this?            }        }        // Now in the specified order, move from oldordering to newordering,        // reshuffling as we go along        Vector ordering = new Vector();        Vector values = new Vector();        int index = -1;        for (int i = 0; i < dNObjects.length; i++) {            //log.debug("Looking for "+dNObjects[i]);            String object = dNObjects[i];            while ((index = oldordering.indexOf(object)) != -1) {                //log.debug("Found 1 "+object+" at index " + index);                DERObjectIdentifier oid = getOid(object);                if (oid != null) {                    //log.debug("Added "+object+", "+oldvalues.elementAt(index));                    ordering.add(oid);                    // remove from the old vectors, so we start clean the next round                    values.add(oldvalues.remove(index));                    oldordering.remove(index);                    index = -1;                }            }        }        /*        if (log.isDebugEnabled()) {            Iterator i1 = ordering.iterator();            Iterator i2 = values.iterator();            log.debug("Order: ");            while (i1.hasNext()) {                log.debug(((DERObjectIdentifier)i1.next()).getId());            }            log.debug("Values: ");            while (i2.hasNext()) {                log.debug((String)i2.next());            }        } */        //log.debug("<stringToBcX509Name");        return new X509Name(ordering, values);    } // stringToBcX509Name    /**     * Every DN-string should look the same. Creates a name string ordered and looking like we want     * it...     *     * @param dn String containing DN     *     * @return String containing DN     */    public static String stringToBCDNString(String dn) {        //log.debug(">stringToBcDNString: "+dn);        String ret = stringToBcX509Name(dn).toString();        //log.debug("<stringToBcDNString: "+ret);        return ret;    }    /**     * Convenience method for getting an email address from a DN. Uses {@link     * getPartFromDN(String,String)} internally, and searches for {@link EMAIL}, {@link EMAIL1},     * {@link EMAIL2}, {@link EMAIL3} and returns the first one found.     *     * @param dn the DN     *     * @return the found email address, or <code>null</code> if none is found     */    public static String getEmailFromDN(String dn) {        log.debug(">getEmailFromDN(" + dn + ")");        String email = null;        for (int i = 0; (i < EMAILIDS.length) && (email == null); i++) {            email = getPartFromDN(dn, EMAILIDS[i]);        }        log.debug("<getEmailFromDN(" + dn + "): " + email);        return email;    }    /**     * Gets a specified part of a DN. Specifically the first occurrence it the DN contains several     * instances of a part (i.e. cn=x, cn=y returns x).     *     * @param dn String containing DN, The DN string has the format "C=SE, O=xx, OU=yy, CN=zz".     * @param dnpart String specifying which part of the DN to get, should be "CN" or "OU" etc.     *     * @return String containing dnpart or null if dnpart is not present     */    public static String getPartFromDN(String dn, String dnpart) {        log.debug(">getPartFromDN: dn:'" + dn + "', dnpart=" + dnpart);        String part = null;        if ((dn != null) && (dnpart != null)) {            String o;            dnpart += "="; // we search for 'CN=' etc.            X509NameTokenizer xt = new X509NameTokenizer(dn);            while (xt.hasMoreTokens()) {                o = xt.nextToken();                //log.debug("checking: "+o.substring(0,dnpart.length()));                if ((o.length() > dnpart.length()) &&                        o.substring(0, dnpart.length()).equalsIgnoreCase(dnpart)) {                    part = o.substring(dnpart.length());                    break;                }            }        }        log.debug("<getpartFromDN: resulting DN part=" + part);        return part;    } //getPartFromDN    /**     * Gets subject DN in the format we are sure about (BouncyCastle),supporting UTF8.     *     * @param cert X509Certificate     *     * @return String containing the subjects DN.     */    public static String getSubjectDN(X509Certificate cert) {        return getDN(cert, 1);    }    /**     * Gets issuer DN in the format we are sure about (BouncyCastle),supporting UTF8.     *     * @param cert X509Certificate     *     * @return String containing the issuers DN.     */    public static String getIssuerDN(X509Certificate cert) {        return getDN(cert, 2);    }    /**

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲va韩国va欧美va| 日韩欧美一级片| 性欧美疯狂xxxxbbbb| 久久婷婷久久一区二区三区| 91美女在线观看| 免费在线看一区| 亚洲蜜臀av乱码久久精品蜜桃| 欧美日韩三级一区| 国产成人综合视频| 美女网站一区二区| 欧美日韩免费一区二区三区| 成人性生交大片免费看视频在线| 日韩中文字幕1| 亚洲综合久久av| 精品国产一区二区国模嫣然| 色94色欧美sute亚洲线路一ni| 国产一区二区三区在线观看免费视频 | 69堂成人精品免费视频| 亚洲一区二区在线观看视频| 亚洲第一搞黄网站| www.亚洲在线| 国产jizzjizz一区二区| 污片在线观看一区二区| 国产精品久久福利| 2014亚洲片线观看视频免费| 欧美一区二区三区人| 欧美在线制服丝袜| 91免费版pro下载短视频| 成人h版在线观看| 高清视频一区二区| 国产成人精品三级| 国产一区不卡视频| 国产一区福利在线| 国产又粗又猛又爽又黄91精品| 免费在线看成人av| 麻豆国产一区二区| 久久众筹精品私拍模特| 欧美大片拔萝卜| 欧美成人a在线| 日韩欧美高清一区| 日韩美一区二区三区| 日韩午夜电影av| 日韩一区二区免费在线观看| 欧美一区二区三区视频在线观看| 欧美大片国产精品| 日韩一级片网站| 欧美α欧美αv大片| 精品成人在线观看| 欧美一区二区视频网站| 欧美日韩国产电影| 91精品国产黑色紧身裤美女| 91精品综合久久久久久| 日韩一区二区三区电影| 精品欧美一区二区久久| 国产日韩欧美综合一区| 国产精品久久久久久久第一福利| 国产精品初高中害羞小美女文| 亚洲欧洲av在线| 亚洲香肠在线观看| 日韩精品一二三四| 青椒成人免费视频| 极品少妇一区二区| 播五月开心婷婷综合| 色综合久久综合| 在线不卡免费欧美| 久久女同互慰一区二区三区| 国产精品久久免费看| 一区二区免费看| 久久久精品国产免大香伊| 国产精品精品国产色婷婷| 亚洲一区视频在线| 狠狠狠色丁香婷婷综合激情 | 天堂成人免费av电影一区| 日韩专区在线视频| 精品三级在线看| 69久久99精品久久久久婷婷| 欧美草草影院在线视频| 欧美国产97人人爽人人喊| 亚洲综合小说图片| 韩国视频一区二区| 91视频com| 欧美成人猛片aaaaaaa| 综合久久久久综合| 亚洲h在线观看| 欧美最猛性xxxxx直播| 久久国产夜色精品鲁鲁99| av日韩在线网站| 5566中文字幕一区二区电影| 国产午夜精品福利| 亚洲成人综合在线| 国产91精品免费| 正在播放亚洲一区| 综合电影一区二区三区| 日韩黄色免费网站| 91免费观看视频| 久久综合九色综合97_久久久| 国产精品成人在线观看| 日本视频免费一区| 亚洲激情综合网| 国产激情一区二区三区四区| 91福利精品视频| 国产欧美精品一区二区色综合| 亚洲国产精品自拍| 成人黄色片在线观看| 日韩精品中文字幕在线不卡尤物 | 天天色 色综合| 国产高清无密码一区二区三区| 欧美三级视频在线| 中国色在线观看另类| 人人狠狠综合久久亚洲| 欧美日免费三级在线| 国产精品麻豆一区二区| 九一久久久久久| 欧美人妇做爰xxxⅹ性高电影| 亚洲天堂成人在线观看| 国产九色sp调教91| 精品人伦一区二区色婷婷| 青青青爽久久午夜综合久久午夜| 色哟哟欧美精品| 国产精品看片你懂得| 狠狠色丁香久久婷婷综合_中| 欧美精品国产精品| 亚洲精品成人天堂一二三| 9人人澡人人爽人人精品| 久久精品一区二区三区av| 日韩av不卡一区二区| 欧美影视一区在线| 亚洲精品免费在线观看| 99精品国产99久久久久久白柏| 国产亚洲欧美日韩俺去了| 国产女人18水真多18精品一级做| 精品一区二区久久| 欧美电影免费观看完整版| 裸体一区二区三区| 日韩精品中文字幕在线一区| 久久99国产精品久久| 久久众筹精品私拍模特| 国产电影一区在线| 久久久五月婷婷| 日本福利一区二区| 久久女同精品一区二区| 国产成人精品影视| 国产亚洲欧美激情| 99re66热这里只有精品3直播| 国产精品成人免费精品自在线观看| 成人一级片在线观看| 亚洲视频免费观看| 色八戒一区二区三区| 亚洲一二三四在线观看| 91麻豆精品国产自产在线观看一区| 日本午夜精品视频在线观看| 精品1区2区在线观看| 美女网站色91| 亚洲国产成人tv| 韩国欧美国产一区| 国产精品久久久久久户外露出| www.99精品| 亚洲影院久久精品| 日韩视频在线观看一区二区| 韩国女主播一区| 国产精品美女久久久久久久久 | 激情伊人五月天久久综合| 精品成人私密视频| 成人伦理片在线| 亚洲中国最大av网站| 日韩欧美123| 成人av先锋影音| 亚洲国产视频直播| 精品久久久久久久久久久久久久久久久 | 毛片不卡一区二区| 久久久久久日产精品| 91女神在线视频| 日韩高清不卡在线| 欧美国产乱子伦 | 国产a久久麻豆| 亚洲视频一区二区在线| 欧美日韩国产首页| 久久国产精品第一页| 1024精品合集| 欧美电影免费提供在线观看| 高清国产一区二区| 香蕉av福利精品导航| 国产亚洲制服色| 欧美色图片你懂的| 国产精品99久久久久久有的能看| 1024成人网| 欧美一区二区三区在线| www.欧美色图| 国产在线精品一区二区夜色| 亚洲欧洲一区二区在线播放| 经典三级一区二区| 午夜欧美电影在线观看| 国产精品全国免费观看高清 | 国产麻豆视频一区| 夜夜嗨av一区二区三区网页| 国产色91在线| 91麻豆精品国产91| 91国偷自产一区二区开放时间 | 性做久久久久久免费观看欧美| 亚洲一区二区视频|