📄 ciphersuite.java
字号:
// sorta look the same, so why not make them equivalent? // // There should be a seperate padding "TLS1Padding". if (provider != null) { try { return Cipher.getInstance (name + "/CBC/SSL3Padding", provider); } catch (NoSuchProviderException nspe) { // Fall through. Try any available provider. } } return Cipher.getInstance (name + "/CBC/SSL3Padding"); } } static IMac getMac(String macName) { if (macName.startsWith("SSLMAC-")) { return new SSLHMac(macName.substring(7)); } else { return MacFactory.getInstance(macName); } } static Mac getJCEMac (final String name) throws NoSuchAlgorithmException { final String provider = Util.getSecurityProperty ("jessie.with.jce.provider"); if (provider != null) { try { return Mac.getInstance (name, provider); } catch (NoSuchProviderException nspe) { // Fall through. Try any available provider. } } return Mac.getInstance (name); } // Intance methods. // ------------------------------------------------------------------------- public void write(OutputStream out) throws IOException { out.write(id); } CipherSuite resolve(ProtocolVersion version) { if (version == ProtocolVersion.SSL_3) { if (id[0] == 0x00) switch (id[1]) { case 0x00: return SSL_NULL_WITH_NULL_NULL; case 0x01: return SSL_RSA_WITH_NULL_MD5; case 0x02: return SSL_RSA_WITH_NULL_SHA; case 0x03: return SSL_RSA_EXPORT_WITH_RC4_40_MD5; case 0x04: return SSL_RSA_WITH_RC4_128_MD5; case 0x05: return SSL_RSA_WITH_RC4_128_SHA; case 0x08: return SSL_RSA_EXPORT_WITH_DES40_CBC_SHA; case 0x09: return SSL_RSA_WITH_DES_CBC_SHA; case 0x0A: return SSL_RSA_WITH_3DES_EDE_CBC_SHA; case 0x0B: return SSL_DH_DSS_EXPORT_WITH_DES40_CBC_SHA; case 0x0C: return SSL_DH_DSS_WITH_DES_CBC_SHA; case 0x0D: return SSL_DH_DSS_WITH_3DES_EDE_CBC_SHA; case 0x0E: return SSL_DH_RSA_EXPORT_WITH_DES40_CBC_SHA; case 0x0F: return SSL_DH_RSA_WITH_DES_CBC_SHA; case 0x10: return SSL_DH_RSA_WITH_3DES_EDE_CBC_SHA; case 0x11: return SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA; case 0x12: return SSL_DHE_DSS_WITH_DES_CBC_SHA; case 0x13: return SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA; case 0x14: return SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA; case 0x15: return SSL_DHE_RSA_WITH_DES_CBC_SHA; case 0x16: return SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA; case 0x2F: return SSL_RSA_WITH_AES_128_CBC_SHA; case 0x30: return SSL_DH_DSS_WITH_AES_128_CBC_SHA; case 0x31: return SSL_DH_RSA_WITH_AES_128_CBC_SHA; case 0x32: return SSL_DHE_DSS_WITH_AES_128_CBC_SHA; case 0x33: return SSL_DHE_RSA_WITH_AES_128_CBC_SHA; case 0x35: return SSL_RSA_WITH_AES_256_CBC_SHA; case 0x36: return SSL_DH_DSS_WITH_AES_256_CBC_SHA; case 0x37: return SSL_DH_RSA_WITH_AES_256_CBC_SHA; case 0x38: return SSL_DHE_DSS_WITH_AES_256_CBC_SHA; case 0x39: return SSL_DHE_RSA_WITH_AES_256_CBC_SHA; } } else if (version == ProtocolVersion.TLS_1 || version == ProtocolVersion.TLS_1_1) { if (id[0] == 0x00) switch (id[1]) { case 0x00: return TLS_NULL_WITH_NULL_NULL; case 0x01: return TLS_RSA_WITH_NULL_MD5; case 0x02: return TLS_RSA_WITH_NULL_SHA; case 0x03: return TLS_RSA_EXPORT_WITH_RC4_40_MD5; case 0x04: return TLS_RSA_WITH_RC4_128_MD5; case 0x05: return TLS_RSA_WITH_RC4_128_SHA; case 0x08: return TLS_RSA_EXPORT_WITH_DES40_CBC_SHA; case 0x09: return TLS_RSA_WITH_DES_CBC_SHA; case 0x0A: return TLS_RSA_WITH_3DES_EDE_CBC_SHA; case 0x0B: return TLS_DH_DSS_EXPORT_WITH_DES40_CBC_SHA; case 0x0C: return TLS_DH_DSS_WITH_DES_CBC_SHA; case 0x0D: return TLS_DH_DSS_WITH_3DES_EDE_CBC_SHA; case 0x0E: return TLS_DH_RSA_EXPORT_WITH_DES40_CBC_SHA; case 0x0F: return TLS_DH_RSA_WITH_DES_CBC_SHA; case 0x10: return TLS_DH_RSA_WITH_3DES_EDE_CBC_SHA; case 0x11: return TLS_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA; case 0x12: return TLS_DHE_DSS_WITH_DES_CBC_SHA; case 0x13: return TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA; case 0x14: return TLS_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA; case 0x15: return TLS_DHE_RSA_WITH_DES_CBC_SHA; case 0x16: return TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA; case 0x2F: return TLS_RSA_WITH_AES_128_CBC_SHA; case 0x30: return TLS_DH_DSS_WITH_AES_128_CBC_SHA; case 0x31: return TLS_DH_RSA_WITH_AES_128_CBC_SHA; case 0x32: return TLS_DHE_DSS_WITH_AES_128_CBC_SHA; case 0x33: return TLS_DHE_RSA_WITH_AES_128_CBC_SHA; case 0x35: return TLS_RSA_WITH_AES_256_CBC_SHA; case 0x36: return TLS_DH_DSS_WITH_AES_256_CBC_SHA; case 0x37: return TLS_DH_RSA_WITH_AES_256_CBC_SHA; case 0x38: return TLS_DHE_DSS_WITH_AES_256_CBC_SHA; case 0x39: return TLS_DHE_RSA_WITH_AES_256_CBC_SHA; case 0x50: return TLS_SRP_SHA_WITH_3DES_EDE_CBC_SHA; case 0x51: return TLS_SRP_SHA_RSA_WITH_3DES_EDE_CBC_SHA; case 0x52: return TLS_SRP_SHA_DSS_WITH_3DES_EDE_CBC_SHA; case 0x53: return TLS_SRP_SHA_WITH_AES_128_CBC_SHA; case 0x54: return TLS_SRP_SHA_RSA_WITH_AES_128_CBC_SHA; case 0x55: return TLS_SRP_SHA_DSS_WITH_AES_128_CBC_SHA; case 0x56: return TLS_SRP_SHA_WITH_AES_256_CBC_SHA; case 0x57: return TLS_SRP_SHA_RSA_WITH_AES_256_CBC_SHA; case 0x58: return TLS_SRP_SHA_DSS_WITH_AES_256_CBC_SHA; case 0x70: return TLS_DHE_DSS_WITH_CAST_128_CBC_SHA; case 0x71: return TLS_DHE_DSS_WITH_CAST_128_CBC_RMD; case 0x72: return TLS_DHE_DSS_WITH_3DES_EDE_CBC_RMD; case 0x73: return TLS_DHE_DSS_WITH_AES_128_CBC_RMD; case 0x74: return TLS_DHE_DSS_WITH_AES_256_CBC_RMD; case 0x75: return TLS_DHE_RSA_WITH_CAST_128_CBC_SHA; case 0x76: return TLS_DHE_RSA_WITH_CAST_128_CBC_RMD; case 0x77: return TLS_DHE_RSA_WITH_3DES_EDE_CBC_RMD; case 0x78: return TLS_DHE_RSA_WITH_AES_128_CBC_RMD; case 0x79: return TLS_DHE_RSA_WITH_AES_256_CBC_RMD; case 0x7A: return TLS_RSA_WITH_CAST_128_CBC_SHA; case 0x7B: return TLS_RSA_WITH_CAST_128_CBC_RMD; case 0x7C: return TLS_RSA_WITH_3DES_EDE_CBC_RMD; case 0x7D: return TLS_RSA_WITH_AES_128_CBC_RMD; case 0x7E: return TLS_RSA_WITH_AES_256_CBC_RMD; } } return this; } String getCipher() { return cipherName; } int getKeyLength() { return keyLength; } String getKeyExchange() { return kexName; } String getSignature() { return sigName; } String getMac() { return macName; } boolean isExportable() { return exportable; } boolean isStreamCipher() { return isStream; } String getAuthType() { if (kexName.equals("RSA")) { if (isExportable()) { return "RSA_EXPORT"; } return "RSA"; } return kexName + "_" + sigName; } byte[] getId() { return id; } ProtocolVersion getVersion() { return version; } public boolean equals(Object o) { if (!(o instanceof CipherSuite)) { return false; } if (o == this) return true; byte[] id = ((CipherSuite) o).getId(); return id[0] == this.id[0] && id[1] == this.id[1]; } public int hashCode() { if (version == null) { return 0xFFFF0000 | (id[0] & 0xFF) << 8 | (id[1] & 0xFF); } return version.getMajor() << 24 | version.getMinor() << 16 | (id[0] & 0xFF) << 8 | (id[1] & 0xFF); } public String toString() { if (name == null) { return "UNKNOWN { " + (id[0] & 0xFF) + ", " + (id[1] & 0xFF) + " }"; } return name; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -