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

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

?? securesocketfactory.java

?? 非常棒的java數據庫
?? JAVA
字號:
/*
 * Copyright 2004-2008 H2 Group. Licensed under the H2 License, Version 1.0
 * (http://h2database.com/html/license.html).
 * Initial Developer: H2 Group
 */
package org.h2.security;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.security.KeyFactory;
import java.security.KeyStore;
import java.security.PrivateKey;
import java.security.cert.Certificate;
import java.security.cert.CertificateFactory;
import java.security.spec.PKCS8EncodedKeySpec;
import java.sql.SQLException;
import java.util.Properties;

import javax.net.ServerSocketFactory;
import javax.net.ssl.SSLServerSocket;
import javax.net.ssl.SSLServerSocketFactory;
import javax.net.ssl.SSLSocket;
import javax.net.ssl.SSLSocketFactory;

import org.h2.message.Message;
import org.h2.util.ByteUtils;
import org.h2.util.FileUtils;
import org.h2.util.IOUtils;
import org.h2.util.NetUtils;

/**
 * A factory to create encrypted sockets. To generate new keystore, use the
 * SecureKeyStoreBuilder tool.
 */
public class SecureSocketFactory {

    private static final String KEYSTORE = ".h2.keystore";
    private static final String KEYSTORE_KEY = "javax.net.ssl.keyStore";
    private static final String KEYSTORE_PASSWORD_KEY = "javax.net.ssl.keyStorePassword";
    public static final String KEYSTORE_PASSWORD = "h2pass";

    // TODO security / SSL: need a way to disable anonymous ssl
    private static final boolean ENABLE_ANONYMOUS_SSL = true;
    private static SecureSocketFactory factory;
    private static final String ANONYMOUS_CIPHER_SUITE = "SSL_DH_anon_WITH_RC4_128_MD5";

    private static void setFactory(SecureSocketFactory f) {
        factory = f;
    }

    public static SecureSocketFactory getInstance() {
        if (factory == null) {
            setFactory(new SecureSocketFactory());
        }
        return factory;
    }

    public Socket createSocket(InetAddress address, int port) throws IOException {
        Socket socket = null;
//#ifdef JDK14
        setKeystore();
        SSLSocketFactory f = (SSLSocketFactory) SSLSocketFactory.getDefault();
        SSLSocket secureSocket = (SSLSocket) f.createSocket(address, port);
        if (ENABLE_ANONYMOUS_SSL) {
            String[] list = secureSocket.getEnabledCipherSuites();
            list = addAnonymous(list);
            secureSocket.setEnabledCipherSuites(list);
        }
        socket = secureSocket;
//#endif
        return socket;
    }

    public ServerSocket createServerSocket(int port) throws IOException, SQLException {
        ServerSocket socket = null;
//#ifdef JDK14
        setKeystore();
        ServerSocketFactory f = SSLServerSocketFactory.getDefault();
        SSLServerSocket secureSocket;
        InetAddress bindAddress = NetUtils.getBindAddress();
        if (bindAddress == null) {
            secureSocket = (SSLServerSocket) f.createServerSocket(port);
        } else {
            secureSocket = (SSLServerSocket) f.createServerSocket(port, 0, bindAddress);
        }
        if (ENABLE_ANONYMOUS_SSL) {
            String[] list = secureSocket.getEnabledCipherSuites();
            list = addAnonymous(list);
            secureSocket.setEnabledCipherSuites(list);
        }
        socket = secureSocket;
//#endif
        return socket;
    }

//#ifdef JDK14
    private static byte[] getBytes(String hex) throws SQLException {
        return ByteUtils.convertStringToBytes(hex);
    }

    private static byte[] getKeyStoreBytes(KeyStore store, String password) throws IOException {
        ByteArrayOutputStream bout = new ByteArrayOutputStream();
        try {
            store.store(bout, KEYSTORE_PASSWORD.toCharArray());
        } catch (Exception e) {
            throw Message.convertToIOException(e);
        }
        return bout.toByteArray();
    }

    public static KeyStore getKeyStore(String password) throws IOException {
        try {
            // The following source code can be re-generated 
            // if you have a keystore file.
            // This code is (hopefully) more Java version independent 
            // than using keystores directly. See also: 
            // http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4887561 
            // (1.4.2 cannot read keystore written with 1.4.1)
            // --- generated code start ---

            KeyStore store = KeyStore.getInstance(KeyStore.getDefaultType());

            store.load(null, password.toCharArray());
            KeyFactory keyFactory = KeyFactory.getInstance("RSA");
            store.load(null, password.toCharArray());
            PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(
                    getBytes("30820277020100300d06092a864886f70d0101010500048202613082025d02010002818100dc0a13c602b7141110eade2f051b54777b060d0f74e6a110f9cce81159f271ebc88d8e8aa1f743b505fc2e7dfe38d33b8d3f64d1b363d1af4d877833897954cbaec2fa384c22a415498cf306bb07ac09b76b001cd68bf77ea0a628f5101959cf2993a9c23dbee79b19305977f8715ae78d023471194cc900b231eecb0aaea98d02030100010281810099aa4ff4d0a09a5af0bd953cb10c4d08c3d98df565664ac5582e494314d5c3c92dddedd5d316a32a206be4ec084616fe57be15e27cad111aa3c21fa79e32258c6ca8430afc69eddd52d3b751b37da6b6860910b94653192c0db1d02abcfd6ce14c01f238eec7c20bd3bb750940004bacba2880349a9494d10e139ecb2355d101024100ffdc3defd9c05a2d377ef6019fa62b3fbd5b0020a04cc8533bca730e1f6fcf5dfceea1b044fbe17d9eababfbc7d955edad6bc60f9be826ad2c22ba77d19a9f65024100dc28d43fdbbc93852cc3567093157702bc16f156f709fb7db0d9eec028f41fd0edcd17224c866e66be1744141fb724a10fd741c8a96afdd9141b36d67fff6309024077b1cddbde0f69604bdcfe33263fb36ddf24aa3b9922327915b890f8a36648295d0139ecdf68c245652c4489c6257b58744fbdd961834a4cab201801a3b1e52d024100b17142e8991d1b350a0802624759d48ae2b8071a158ff91fabeb6a8f7c328e762143dc726b8529f42b1fab6220d1c676fdc27ba5d44e847c72c52064afd351a902407c6e23fe35bcfcd1a662aa82a2aa725fcece311644d5b6e3894853fd4ce9fe78218c957b1ff03fc9e5ef8ffeb6bd58235f6a215c97d354fdace7e781e4a63e8b"));
            PrivateKey privateKey = keyFactory.generatePrivate(keySpec);
            Certificate[] certs = new Certificate[] { CertificateFactory
                    .getInstance("X.509")
                    .generateCertificate(
                            new ByteArrayInputStream(
                                    getBytes("3082018b3081f502044295ce6b300d06092a864886f70d0101040500300d310b3009060355040313024832301e170d3035303532363133323630335a170d3337303933303036353734375a300d310b300906035504031302483230819f300d06092a864886f70d010101050003818d0030818902818100dc0a13c602b7141110eade2f051b54777b060d0f74e6a110f9cce81159f271ebc88d8e8aa1f743b505fc2e7dfe38d33b8d3f64d1b363d1af4d877833897954cbaec2fa384c22a415498cf306bb07ac09b76b001cd68bf77ea0a628f5101959cf2993a9c23dbee79b19305977f8715ae78d023471194cc900b231eecb0aaea98d0203010001300d06092a864886f70d01010405000381810083f4401a279453701bef9a7681a5b8b24f153f7d18c7c892133d97bd5f13736be7505290a445a7d5ceb75522403e5097515cd966ded6351ff60d5193de34cd36e5cb04d380398e66286f99923fd92296645fd4ada45844d194dfd815e6cd57f385c117be982809028bba1116c85740b3d27a55b1a0948bf291ddba44bed337b9"))), };
            store.setKeyEntry("h2", privateKey, password.toCharArray(), certs);
            // --- generated code end ---
            return store;
        } catch (Exception e) {
            throw Message.convertToIOException(e);
        }
    }

    private void setKeystore() throws IOException {
        Properties p = System.getProperties();
        if (p.getProperty(KEYSTORE_KEY) == null) {
            String fileName = FileUtils.getFileInUserHome(KEYSTORE);
            byte[] data = getKeyStoreBytes(getKeyStore(KEYSTORE_PASSWORD), KEYSTORE_PASSWORD);
            boolean needWrite = true;
            if (FileUtils.exists(fileName) && FileUtils.length(fileName) == data.length) {
                // don't need to overwrite the file if it did not change
                InputStream fin = FileUtils.openFileInputStream(fileName);
                byte[] now = IOUtils.readBytesAndClose(fin, 0);
                if (now != null && ByteUtils.compareNotNull(data, now) == 0) {
                    needWrite = false;
                }
            }
            if (needWrite) {
                try {
                    OutputStream out = FileUtils.openFileOutputStream(fileName, false);
                    out.write(data);
                    out.close();
                } catch (SQLException e) {
                    throw Message.convertToIOException(e);
                }
            }
            String absolutePath = FileUtils.getAbsolutePath(fileName);
            System.setProperty(KEYSTORE_KEY, absolutePath);
        }
        if (p.getProperty(KEYSTORE_PASSWORD_KEY) == null) {
            System.setProperty(KEYSTORE_PASSWORD_KEY, KEYSTORE_PASSWORD);
        }
    }

    private String[] addAnonymous(String[] list) {
        String[] newList = new String[list.length + 1];
        System.arraycopy(list, 0, newList, 1, list.length);
        newList[0] = ANONYMOUS_CIPHER_SUITE;
        return newList;
    }

//#endif

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩一二区| 97久久超碰国产精品| 亚洲一卡二卡三卡四卡五卡| 国产精品欧美一区喷水| 久久久久久久电影| 欧美精品一区二区三区久久久| 日韩丝袜美女视频| 精品国产乱码久久久久久浪潮| 日韩一级二级三级精品视频| 欧美一级黄色片| 欧美第一区第二区| 久久在线观看免费| 国产精品亲子伦对白| 亚洲欧美综合在线精品| 亚洲一区在线视频观看| 五月天丁香久久| 狠狠色综合色综合网络| 成人中文字幕在线| 91久久精品日日躁夜夜躁欧美| 欧洲色大大久久| 日韩情涩欧美日韩视频| 久久久精品天堂| 亚洲图片欧美激情| 亚洲一级二级三级在线免费观看| 丝袜美腿亚洲综合| 国产一区 二区| 色婷婷亚洲综合| 欧美一级一区二区| 欧美国产精品专区| 亚洲国产精品人人做人人爽| 久久精品国产99久久6| 成人伦理片在线| 欧美日韩国产大片| 国产日产亚洲精品系列| 一区二区三区在线不卡| 蜜臀av性久久久久蜜臀aⅴ流畅 | 亚洲男人天堂av网| 日韩精品1区2区3区| 成人动漫中文字幕| 欧美一区二区观看视频| 亚洲天堂免费看| 久久国产日韩欧美精品| 91浏览器打开| 久久久久久久久久美女| 一区二区三区在线高清| 国产白丝精品91爽爽久久| 欧美精品 日韩| 国产精品免费av| 秋霞成人午夜伦在线观看| 97久久人人超碰| 欧美大片一区二区三区| 一区二区三区高清不卡| 国产一区二区在线影院| 欧美精品v国产精品v日韩精品| 亚洲国产精品传媒在线观看| 美女视频网站黄色亚洲| 在线国产电影不卡| 中文欧美字幕免费| 狠狠色丁香九九婷婷综合五月| 欧美日韩免费观看一区二区三区 | 亚洲欧美日韩一区二区 | www.av亚洲| 国产视频一区在线观看| 久久精品国产999大香线蕉| 欧美日韩激情一区二区| 亚洲男女毛片无遮挡| 波多野结衣在线一区| 久久精品男人的天堂| 日韩极品在线观看| 欧美一区二区三区在| 亚洲国产wwwccc36天堂| 欧洲视频一区二区| 亚洲一区二区三区激情| 在线精品亚洲一区二区不卡| 一区二区三区中文免费| 色综合久久久久综合体 | 欧美亚洲综合在线| 国产精品国产馆在线真实露脸 | 国产精品美女久久久久久久久久久| 裸体歌舞表演一区二区| 日韩免费观看高清完整版| 日韩制服丝袜av| 日韩欧美你懂的| 激情综合网最新| 中文字幕av一区二区三区高 | 欧美亚洲免费在线一区| 亚洲一区视频在线| 91精品国产一区二区三区蜜臀| 免费一级欧美片在线观看| 日韩精品一区二区三区老鸭窝 | 国产免费成人在线视频| 懂色av噜噜一区二区三区av| 国产精品久久99| 欧美亚洲综合另类| 裸体歌舞表演一区二区| 欧美国产综合一区二区| 91浏览器在线视频| 青青草精品视频| 国产欧美一区二区精品性色| 色伊人久久综合中文字幕| 午夜亚洲福利老司机| 精品乱人伦一区二区三区| 风间由美一区二区三区在线观看 | 久久国产精品第一页| 久久九九久精品国产免费直播| 成人免费视频一区二区| 一区二区三区高清不卡| 日韩三级视频中文字幕| 成人性生交大片| 亚洲成a天堂v人片| 国产午夜精品久久| 欧美剧情电影在线观看完整版免费励志电影 | 国产精品美女久久久久久久久 | 国产91色综合久久免费分享| 自拍视频在线观看一区二区| 欧美疯狂性受xxxxx喷水图片| 国产精品1024久久| 视频一区国产视频| 国产精品久久久久久亚洲伦| 欧美一区二区三区啪啪| 91丨九色丨尤物| 国内成人免费视频| 亚洲va国产va欧美va观看| 久久久久久99精品| 欧美一区二区视频在线观看2022| 国产白丝网站精品污在线入口| 午夜精品福利一区二区三区蜜桃| 国产精品三级视频| 337p日本欧洲亚洲大胆色噜噜| 欧美偷拍一区二区| 99精品视频在线观看免费| 国内精品国产三级国产a久久| 亚洲在线视频网站| 国产精品电影院| 精品裸体舞一区二区三区| 91精品午夜视频| 欧美亚洲禁片免费| 91麻豆精品视频| 99热99精品| 丰满白嫩尤物一区二区| 国产自产视频一区二区三区| 免费人成精品欧美精品| 同产精品九九九| 亚洲国产综合在线| 亚洲国产婷婷综合在线精品| 一区二区三区在线视频播放| 国产精品天天摸av网| 国产欧美精品一区aⅴ影院| 久久人人97超碰com| 日韩免费高清视频| 精品国产sm最大网站免费看| 欧美一区二区三区免费在线看| 欧美二区乱c少妇| 91精品国产综合久久蜜臀| 欧美久久久久久久久中文字幕| 欧美日韩免费电影| 欧美高清精品3d| 日韩精品一区二区三区四区| 日韩欧美国产小视频| 精品国产91久久久久久久妲己 | 在线观看日韩毛片| 欧美亚洲一区二区在线| 在线一区二区三区四区五区| 欧美午夜影院一区| 欧美精品三级在线观看| 日韩视频免费观看高清完整版 | 国产盗摄视频一区二区三区| 成人午夜视频免费看| 91首页免费视频| 欧美日韩精品免费观看视频| 日韩一卡二卡三卡四卡| 欧美精品一区二区在线播放| 国产精品五月天| 亚洲一区av在线| 精品一区二区三区香蕉蜜桃| 国产91精品久久久久久久网曝门| 成人黄色在线看| 欧美久久久一区| 久久精品夜夜夜夜久久| 亚洲乱码国产乱码精品精的特点| 亚洲制服丝袜av| 久久99精品久久久久久久久久久久| 国产成人在线视频网站| 色88888久久久久久影院野外| 欧美一区二区国产| 国产精品麻豆网站| 日韩不卡在线观看日韩不卡视频| 国产精品系列在线播放| 在线看日本不卡| 久久久久久久久99精品| 亚洲福利视频一区二区| 国产成人午夜高潮毛片| 91久久精品国产91性色tv| 精品福利视频一区二区三区| 亚洲素人一区二区| 麻豆成人av在线| 在线观看国产精品网站| 久久精子c满五个校花| 午夜欧美大尺度福利影院在线看| 国产高清久久久|