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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? keytools.java

?? 一個java開發(fā)的非常全面的關(guān)于證書發(fā)放
?? JAVA
字號:
package net.sourceforge.jcetaglib.tools;

import net.sourceforge.jcetaglib.lib.CertTools;
import org.bouncycastle.asn1.DERBMPString;
import org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers;
import org.bouncycastle.jce.interfaces.PKCS12BagAttributeCarrier;

import javax.crypto.Cipher;
import javax.crypto.EncryptedPrivateKeyInfo;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.PBEKeySpec;
import javax.crypto.spec.PBEParameterSpec;
import java.io.ByteArrayInputStream;
import java.security.*;
import java.security.cert.Certificate;
import java.security.cert.CertificateFactory;
import java.security.cert.X509Certificate;
import java.security.spec.PKCS8EncodedKeySpec;
import java.util.ArrayList;

/**
 * Tools to handle common key and keystore operations.
 *
 * @version $Id: KeyTools.java,v 1.4 2004/04/15 07:28:36 hamgert Exp $
 */
public class KeyTools {

    //private static Category cat = Category.getInstance(KeyTools.class.getName());


    private static byte[] salt = {
        (byte) 0x23, (byte) 0xc8, (byte) 0x99, (byte) 0x8c,
        (byte) 0xc4, (byte) 0xff, (byte) 0xee, (byte) 0x7d
    }; // Salt

    private static int count = 100; // Iteration count
    private static String alg = "1.2.840.113549.1.12.1.3"; // 3 key triple DES with SHA-1


    /** Prevent from creating new KeyTools object*/
    private KeyTools() {
    }

    /**
     * Creates PKCS12-file that can be imported in IE or Netscape.
     * The alias for the private key is set to 'privateKey' and the private key password is null.
     * @param alias the alias used for the key entry
     * @param privKey RSA private key
     * @param cert user certificate
     * @param cacert CA-certificate or null if only one cert in chain, in that case use 'cert'.
     * @return byte[] containing PKCS12-file in binary format
     * @exception Exception if input parameters are not OK or certificate generation fails
     */
    static public KeyStore createP12(String alias, PrivateKey privKey, X509Certificate cert, X509Certificate cacert)
            throws Exception {
        Certificate[] chain;
        if (cacert == null)
            chain = null;
        else {
            chain = new Certificate[1];
            chain[0] = cacert;
        }
        return createP12(alias, privKey, cert, chain);
    } // createP12

    /**
     * Creates PKCS12-file that can be imported in IE or Netscape.
     * The alias for the private key is set to 'privateKey' and the private key password is null.
     * @param alias the alias used for the key entry
     * @param privKey RSA private key
     * @param cert user certificate
     * @param cachain CA-certificate chain or null if only one cert in chain, in that case use 'cert'.
     * @return byte[] containing PKCS12-file in binary format
     * @exception Exception if input parameters are not OK or certificate generation fails
     */
    static public KeyStore createP12(String alias, PrivateKey privKey, X509Certificate cert, Certificate[] cachain)
            throws Exception {
        // Certificate chain, only max two levels deep unforturnately, this is a TODO:
        if (cert == null)
            throw new IllegalArgumentException("Parameter cert cannot be null.");
        int len = 1;
        if (cachain != null)
            len += cachain.length;
        Certificate[] chain = new Certificate[len];
        // To not get a ClassCastException we need to genereate a real new certificate with BC
        CertificateFactory cf = CertificateFactory.getInstance("X.509", "BC");
        chain[0] = cf.generateCertificate(new ByteArrayInputStream(cert.getEncoded()));
        if (cachain != null)
            for (int i = 0; i < cachain.length; i++) {
                X509Certificate tmpcert = (X509Certificate) cf.generateCertificate(new ByteArrayInputStream(cachain[i].getEncoded()));
                chain[i + 1] = tmpcert;
            }


        if (chain.length > 1) {
            for (int i = 1; i < chain.length; i++) {
                X509Certificate cacert = (X509Certificate) cf.generateCertificate(new ByteArrayInputStream(chain[i].getEncoded()));
                // Set attributes on CA-cert
                PKCS12BagAttributeCarrier caBagAttr = (PKCS12BagAttributeCarrier) chain[i];
                String cafriendly = CertTools.getPartFromDN(cacert.getSubjectDN().toString(), "CN");
                caBagAttr.setBagAttribute(PKCSObjectIdentifiers.pkcs_9_at_friendlyName, new DERBMPString(cafriendly));
            }
        }
        // Set attributes on user-cert
        PKCS12BagAttributeCarrier certBagAttr = (PKCS12BagAttributeCarrier) chain[0];
        certBagAttr.setBagAttribute(PKCSObjectIdentifiers.pkcs_9_at_friendlyName, new DERBMPString(alias));
        // in this case we just set the local key id to that of the public key
        certBagAttr.setBagAttribute(PKCSObjectIdentifiers.pkcs_9_at_localKeyId, CertTools.createSubjectKeyId(chain[0].getPublicKey()));

        // "Clean" private key, i.e. remove any old attributes
        KeyFactory keyfact = KeyFactory.getInstance(privKey.getAlgorithm(), "BC");
        PrivateKey pk = keyfact.generatePrivate(new PKCS8EncodedKeySpec(privKey.getEncoded()));
        // Set attributes for private key
        PKCS12BagAttributeCarrier keyBagAttr = (PKCS12BagAttributeCarrier) pk;
        // in this case we just set the local key id to that of the public key
        keyBagAttr.setBagAttribute(PKCSObjectIdentifiers.pkcs_9_at_friendlyName, new DERBMPString(alias));
        keyBagAttr.setBagAttribute(PKCSObjectIdentifiers.pkcs_9_at_localKeyId, CertTools.createSubjectKeyId(chain[0].getPublicKey()));

        // store the key and the certificate chain
        KeyStore store = KeyStore.getInstance("PKCS12", "BC");
        store.load(null, null);
        store.setKeyEntry(alias, pk, null, chain);
        return store;
    } // createP12

    /** Retrieves the certificate chain from a keystore.
     * @param keyStore the keystore, which has been loaded and opened.
     * @param privateKeyAlias the alias of the privatekey for which the certchain belongs.
     * @return array of Certificate, length of array is 0 if no certificates are found.
     */
    public static Certificate[] getCertChain(KeyStore keyStore, String privateKeyAlias) throws KeyStoreException {

        Certificate[] certchain = keyStore.getCertificateChain(privateKeyAlias);

        if (certchain.length < 1) {
            System.out.println("Cannot load certificate chain with alias '" + privateKeyAlias + "' from keystore.");
            return certchain;
        } else if (certchain.length > 0) {
            if (CertTools.isSelfSigned((X509Certificate) certchain[certchain.length - 1])) {
                return certchain;
            }
        }

        // If we came here, we have a cert which is not root cert in 'cert'
        ArrayList array = new ArrayList();
        for (int i = 0; i < certchain.length; i++) {
            array.add(certchain[i]);
        }

        boolean stop = false;
        while (!stop) {
            X509Certificate cert = (X509Certificate) array.get(array.size() - 1);
            String ialias = CertTools.getPartFromDN(cert.getIssuerDN().toString(), "CN");
            Certificate[] chain1 = keyStore.getCertificateChain(ialias);
            if (chain1 == null) {
                stop = true;
            } else {
                if (chain1.length == 0) {
                    System.out.println("No RootCA certificate found!");
                    stop = true;
                }
                for (int j = 0; j < chain1.length; j++) {
                    array.add(chain1[j]);
                    // If one cert is slefsigned, we have found a root certificate, we don't need to go on anymore
                    if (CertTools.isSelfSigned((X509Certificate) chain1[j]))
                        stop = true;
                }
            }
        }
        Certificate[] ret = new Certificate[array.size()];
        for (int i = 0; i < ret.length; i++) {
            ret[i] = (X509Certificate) array.get(i);
        }
        return ret;
    } // getCertChain

    /** decrypts an RSA private key.
     * @param wrappedKey the key in bytes
     * @param password password as string
     * @return PrivateKey structure
     */
    public static PrivateKey decryptPrivateKey(byte[] wrappedKey, String password)
            throws Exception {
        PBEParameterSpec defParams = new PBEParameterSpec(salt, count);

        AlgorithmParameters params = AlgorithmParameters.getInstance(alg, "BC");

        params.init(defParams);

        //
        // set up the key
        //

        EncryptedPrivateKeyInfo privKeyInfo = new EncryptedPrivateKeyInfo(params, wrappedKey);


        PBEKeySpec pbeSpec = new PBEKeySpec(password.toCharArray());
        SecretKeyFactory keyFact = SecretKeyFactory.getInstance(alg, "BC");
        Cipher cipher = Cipher.getInstance(alg, "BC");

        cipher.init(Cipher.DECRYPT_MODE, keyFact.generateSecret(pbeSpec), privKeyInfo.getAlgParameters());


        PKCS8EncodedKeySpec keySpec = privKeyInfo.getKeySpec(cipher);

        KeyFactory kf = KeyFactory.getInstance("RSA");
        PrivateKey privKey = kf.generatePrivate(keySpec);

        return privKey;
    } //decryptPrivateKey

} // KeyTools//

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区日韩电影| 中文字幕一区二区三区在线播放 | 一个色综合av| 色综合天天综合色综合av| 亚洲视频一区二区在线| 色综合欧美在线| 午夜精品影院在线观看| 91精品国模一区二区三区| 精品一区二区在线视频| 2022国产精品视频| 91在线看国产| 午夜久久久久久| 日韩欧美国产麻豆| 福利一区二区在线| 亚洲综合在线视频| 精品欧美黑人一区二区三区| 国产精品一区免费在线观看| 一区二区三区日韩在线观看| 制服丝袜亚洲精品中文字幕| 国产精品影音先锋| 亚洲国产精品一区二区久久| 日韩一区二区免费视频| av一区二区三区黑人| 香蕉成人啪国产精品视频综合网| 欧美精品一区二区三区蜜桃视频 | 91成人免费在线视频| 日韩av高清在线观看| 亚洲国产电影在线观看| 欧美色综合网站| 国产成人精品综合在线观看| 亚洲午夜成aⅴ人片| 国产清纯美女被跳蛋高潮一区二区久久w| 91毛片在线观看| 狠狠色狠狠色合久久伊人| 一区二区三区不卡视频在线观看 | 欧美三区在线视频| 大陆成人av片| 免费成人在线观看视频| 一区二区三区中文在线| 久久久精品免费网站| 欧美精品亚洲二区| 91美女在线观看| 国产91色综合久久免费分享| 日韩av电影一区| **网站欧美大片在线观看| 精品成人一区二区| 欧美理论片在线| 97se亚洲国产综合自在线不卡| 美女视频一区二区三区| 亚洲午夜免费电影| 亚洲天堂免费看| 国产日韩精品视频一区| 日韩精品一区二区三区在线观看| 在线一区二区三区四区五区| 成人网在线免费视频| 国模套图日韩精品一区二区| 天堂成人免费av电影一区| 亚洲人成亚洲人成在线观看图片 | 日韩免费一区二区三区在线播放| 欧美体内she精视频| 色域天天综合网| 97久久超碰国产精品| 丁香婷婷综合激情五月色| 国产资源在线一区| 韩国精品主播一区二区在线观看 | 国产亚洲短视频| 精品免费一区二区三区| 欧美精三区欧美精三区| 欧美视频中文一区二区三区在线观看| 色哟哟国产精品免费观看| 成人性色生活片免费看爆迷你毛片| 久久国产视频网| 美国欧美日韩国产在线播放| 六月丁香综合在线视频| 国内不卡的二区三区中文字幕| 捆绑调教美女网站视频一区| 久久黄色级2电影| 国产一区二区视频在线| 国内成人精品2018免费看| 国产在线视视频有精品| 国产精品99久久久久久久vr | 久久国产精品无码网站| 美国毛片一区二区| 国产麻豆精品视频| 丁香一区二区三区| 色哟哟国产精品免费观看| 欧美在线999| 69久久99精品久久久久婷婷| 日韩亚洲欧美成人一区| 欧美va日韩va| 中文在线免费一区三区高中清不卡| 国产精品无遮挡| 亚洲另类中文字| 视频在线观看一区| 国产一区二区调教| 色婷婷久久久亚洲一区二区三区| 欧美日韩国产首页| 日韩精品专区在线影院观看| 中文成人综合网| 亚洲尤物在线视频观看| 免费视频一区二区| 成人性生交大合| 欧美精品电影在线播放| 精品国产123| 亚洲精品视频免费看| 偷拍日韩校园综合在线| 激情久久五月天| 91网上在线视频| 日韩欧美一区二区在线视频| 欧美国产综合一区二区| 夜夜嗨av一区二区三区网页 | 国产乱子伦视频一区二区三区| 91在线你懂得| 欧美大白屁股肥臀xxxxxx| 亚洲欧洲日韩在线| 免费看日韩a级影片| 99国产精品久久久久久久久久久| 7777精品伊人久久久大香线蕉最新版| 国产调教视频一区| 午夜激情综合网| 成人av动漫在线| 91精品国产综合久久久久久久久久| 中文字幕国产一区| 日韩电影一区二区三区| 99国产精品久| 久久久99精品久久| 午夜精品久久久久久久99水蜜桃 | 一区二区三区精品在线观看| 久久99精品国产麻豆不卡| 91福利区一区二区三区| 欧美国产乱子伦| 日韩精彩视频在线观看| 91麻豆国产精品久久| 日韩视频不卡中文| 亚洲国产日韩一区二区| aaa欧美大片| 久久久美女艺术照精彩视频福利播放| 亚洲第一会所有码转帖| 91视频你懂的| 中文字幕不卡在线播放| 免费av成人在线| 欧美日韩国产美| 亚洲自拍偷拍网站| 99r精品视频| 中文字幕成人在线观看| 国产专区欧美精品| 日韩免费高清电影| 天天做天天摸天天爽国产一区| 99久久免费视频.com| 国产蜜臀97一区二区三区 | 九九国产精品视频| 91麻豆精品国产自产在线| 一区二区三区在线播| 91在线小视频| 中文字幕在线播放不卡一区| 成人综合激情网| 国产精品丝袜91| www.日本不卡| 中文字幕一区三区| 91一区一区三区| 亚洲精品日韩一| 在线精品观看国产| 亚洲午夜精品在线| 欧美人妇做爰xxxⅹ性高电影| 亚洲线精品一区二区三区 | 欧美哺乳videos| 九色porny丨国产精品| 精品免费一区二区三区| 国产伦精品一区二区三区视频青涩| 欧美电视剧免费观看| 精品综合免费视频观看| 久久综合av免费| 成人午夜在线免费| 亚洲精品高清视频在线观看| 色噜噜狠狠成人网p站| 一区二区久久久久久| 欧美日韩一区二区三区四区| 日韩极品在线观看| 久久午夜免费电影| 高清不卡在线观看| 亚洲蜜桃精久久久久久久| 欧美午夜精品一区二区三区| 视频一区二区三区中文字幕| 日韩视频中午一区| 国产成人精品亚洲777人妖| 国产精品久久久久久久裸模| 在线视频中文字幕一区二区| 视频一区视频二区中文字幕| 久久网站最新地址| jlzzjlzz亚洲日本少妇| 亚洲一区二区综合| 日韩写真欧美这视频| 成人黄色软件下载| 亚洲国产另类精品专区| 欧美大肚乱孕交hd孕妇| aaa国产一区| 麻豆精品国产传媒mv男同| 中文字幕在线一区二区三区| 欧美美女网站色| www.亚洲色图.com|