📄 tlsciphersuitemanager.java
字号:
package org.bouncycastle.crypto.tls;import org.bouncycastle.crypto.digests.SHA1Digest;import org.bouncycastle.crypto.engines.AESFastEngine;import org.bouncycastle.crypto.engines.DESedeEngine;import org.bouncycastle.crypto.modes.CBCBlockCipher;import java.io.IOException;import java.io.OutputStream;/** * A manager for ciphersuite. This class does manage all ciphersuites * which are used by MicroTLS. */public class TlsCipherSuiteManager{ private static final int TLS_RSA_WITH_3DES_EDE_CBC_SHA = 0x000a; private static final int TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA = 0x0016; private static final int TLS_RSA_WITH_AES_128_CBC_SHA = 0x002f; private static final int TLS_DHE_RSA_WITH_AES_128_CBC_SHA = 0x0033; private static final int TLS_RSA_WITH_AES_256_CBC_SHA = 0x0035; private static final int TLS_DHE_RSA_WITH_AES_256_CBC_SHA = 0x0039; protected static void writeCipherSuites(OutputStream os) throws IOException { TlsUtils.writeUint16(2 * 6, os); TlsUtils.writeUint16(TLS_DHE_RSA_WITH_AES_256_CBC_SHA, os); TlsUtils.writeUint16(TLS_DHE_RSA_WITH_AES_128_CBC_SHA, os); TlsUtils.writeUint16(TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA, os); TlsUtils.writeUint16(TLS_RSA_WITH_AES_256_CBC_SHA, os); TlsUtils.writeUint16(TLS_RSA_WITH_AES_128_CBC_SHA, os); TlsUtils.writeUint16(TLS_RSA_WITH_3DES_EDE_CBC_SHA, os); } protected static TlsCipherSuite getCipherSuite(int number, TlsProtocolHandler handler) throws IOException { switch (number) { case TLS_RSA_WITH_3DES_EDE_CBC_SHA: return new TlsBlockCipherCipherSuite(new CBCBlockCipher(new DESedeEngine()), new CBCBlockCipher(new DESedeEngine()), new SHA1Digest(), new SHA1Digest(), 24, TlsCipherSuite.KE_RSA); case TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA: return new TlsBlockCipherCipherSuite(new CBCBlockCipher(new DESedeEngine()), new CBCBlockCipher(new DESedeEngine()), new SHA1Digest(), new SHA1Digest(), 24, TlsCipherSuite.KE_DHE_RSA); case TLS_RSA_WITH_AES_128_CBC_SHA: return new TlsBlockCipherCipherSuite(new CBCBlockCipher(new AESFastEngine()), new CBCBlockCipher(new AESFastEngine()), new SHA1Digest(), new SHA1Digest(), 16, TlsCipherSuite.KE_RSA); case TLS_DHE_RSA_WITH_AES_128_CBC_SHA: return new TlsBlockCipherCipherSuite(new CBCBlockCipher(new AESFastEngine()), new CBCBlockCipher(new AESFastEngine()), new SHA1Digest(), new SHA1Digest(), 16, TlsCipherSuite.KE_DHE_RSA); case TLS_RSA_WITH_AES_256_CBC_SHA: return new TlsBlockCipherCipherSuite(new CBCBlockCipher(new AESFastEngine()), new CBCBlockCipher(new AESFastEngine()), new SHA1Digest(), new SHA1Digest(), 32, TlsCipherSuite.KE_RSA); case TLS_DHE_RSA_WITH_AES_256_CBC_SHA: return new TlsBlockCipherCipherSuite(new CBCBlockCipher(new AESFastEngine()), new CBCBlockCipher(new AESFastEngine()), new SHA1Digest(), new SHA1Digest(), 32, TlsCipherSuite.KE_DHE_RSA); default: handler.failWithError(TlsProtocolHandler.AL_fatal, TlsProtocolHandler.AP_handshake_failure); /* * Unreachable Code, failWithError will always throw an exception! */ return null; } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -