|
| 1 | +From 9d771b79c7bfa8db4a4a0075c72608f7d987b598 Mon Sep 17 00:00:00 2001 |
| 2 | + |
| 3 | +Date: Tue, 22 Mar 2016 02:56:41 +0800 |
| 4 | +Subject: [PATCH] crypto/tls: add |
| 5 | + TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256/TLS_RSA_WITH_AES_128_CBC_SHA256/TLS_RSA_WITH_AES_256_CBC_SHA256 |
| 6 | + |
| 7 | +--- |
| 8 | + src/crypto/tls/cipher_suites.go | 20 ++++++++++++++++++++ |
| 9 | + 1 file changed, 20 insertions(+) |
| 10 | + |
| 11 | +diff --git a/src/crypto/tls/cipher_suites.go b/src/crypto/tls/cipher_suites.go |
| 12 | +index e69f5f9..d544d4e 100644 |
| 13 | +--- a/src/crypto/tls/cipher_suites.go |
| 14 | ++++ b/src/crypto/tls/cipher_suites.go |
| 15 | +@@ -11,6 +11,7 @@ import ( |
| 16 | + "crypto/hmac" |
| 17 | + "crypto/rc4" |
| 18 | + "crypto/sha1" |
| 19 | ++ "crypto/sha256" |
| 20 | + "crypto/x509" |
| 21 | + "hash" |
| 22 | + ) |
| 23 | +@@ -82,6 +83,7 @@ var cipherSuites = []*cipherSuite{ |
| 24 | + {TLS_ECDHE_RSA_WITH_RC4_128_SHA, 16, 20, 0, ecdheRSAKA, suiteECDHE | suiteDefaultOff, cipherRC4, macSHA1, nil}, |
| 25 | + {TLS_ECDHE_ECDSA_WITH_RC4_128_SHA, 16, 20, 0, ecdheECDSAKA, suiteECDHE | suiteECDSA | suiteDefaultOff, cipherRC4, macSHA1, nil}, |
| 26 | + {TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, 16, 20, 16, ecdheRSAKA, suiteECDHE, cipherAES, macSHA1, nil}, |
| 27 | ++ {TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256, 16, 32, 16, ecdheRSAKA, suiteECDHE, cipherAES, macSHA256, nil}, |
| 28 | + {TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, 16, 20, 16, ecdheECDSAKA, suiteECDHE | suiteECDSA, cipherAES, macSHA1, nil}, |
| 29 | + {TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, 32, 20, 16, ecdheRSAKA, suiteECDHE, cipherAES, macSHA1, nil}, |
| 30 | + {TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, 32, 20, 16, ecdheECDSAKA, suiteECDHE | suiteECDSA, cipherAES, macSHA1, nil}, |
| 31 | +@@ -90,6 +92,8 @@ var cipherSuites = []*cipherSuite{ |
| 32 | + {TLS_RSA_WITH_RC4_128_SHA, 16, 20, 0, rsaKA, suiteDefaultOff, cipherRC4, macSHA1, nil}, |
| 33 | + {TLS_RSA_WITH_AES_128_CBC_SHA, 16, 20, 16, rsaKA, 0, cipherAES, macSHA1, nil}, |
| 34 | + {TLS_RSA_WITH_AES_256_CBC_SHA, 32, 20, 16, rsaKA, 0, cipherAES, macSHA1, nil}, |
| 35 | ++ {TLS_RSA_WITH_AES_128_CBC_SHA256, 16, 32, 16, rsaKA, 0, cipherAES, macSHA256, nil}, |
| 36 | ++ {TLS_RSA_WITH_AES_256_CBC_SHA256, 32, 32, 16, rsaKA, 0, cipherAES, macSHA256, nil}, |
| 37 | + {TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA, 24, 20, 8, ecdheRSAKA, suiteECDHE, cipher3DES, macSHA1, nil}, |
| 38 | + {TLS_RSA_WITH_3DES_EDE_CBC_SHA, 24, 20, 8, rsaKA, 0, cipher3DES, macSHA1, nil}, |
| 39 | + } |
| 40 | +@@ -128,6 +132,19 @@ func macSHA1(version uint16, key []byte) macFunction { |
| 41 | + return tls10MAC{hmac.New(sha1.New, key)} |
| 42 | + } |
| 43 | + |
| 44 | ++// macSHA256 returns a macFunction for the given protocol version. |
| 45 | ++func macSHA256(version uint16, key []byte) macFunction { |
| 46 | ++ if version == VersionSSL30 { |
| 47 | ++ mac := ssl30MAC{ |
| 48 | ++ h: sha256.New(), |
| 49 | ++ key: make([]byte, len(key)), |
| 50 | ++ } |
| 51 | ++ copy(mac.key, key) |
| 52 | ++ return mac |
| 53 | ++ } |
| 54 | ++ return tls10MAC{hmac.New(sha256.New, key)} |
| 55 | ++} |
| 56 | ++ |
| 57 | + type macFunction interface { |
| 58 | + Size() int |
| 59 | + MAC(digestBuf, seq, header, data []byte) []byte |
| 60 | +@@ -270,6 +287,8 @@ const ( |
| 61 | + TLS_RSA_WITH_3DES_EDE_CBC_SHA uint16 = 0x000a |
| 62 | + TLS_RSA_WITH_AES_128_CBC_SHA uint16 = 0x002f |
| 63 | + TLS_RSA_WITH_AES_256_CBC_SHA uint16 = 0x0035 |
| 64 | ++ TLS_RSA_WITH_AES_128_CBC_SHA256 uint16 = 0x003c |
| 65 | ++ TLS_RSA_WITH_AES_256_CBC_SHA256 uint16 = 0x003d |
| 66 | + TLS_RSA_WITH_AES_128_GCM_SHA256 uint16 = 0x009c |
| 67 | + TLS_RSA_WITH_AES_256_GCM_SHA384 uint16 = 0x009d |
| 68 | + TLS_ECDHE_ECDSA_WITH_RC4_128_SHA uint16 = 0xc007 |
| 69 | +@@ -279,6 +298,7 @@ const ( |
| 70 | + TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA uint16 = 0xc012 |
| 71 | + TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA uint16 = 0xc013 |
| 72 | + TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA uint16 = 0xc014 |
| 73 | ++ TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 uint16 = 0xc027 |
| 74 | + TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 uint16 = 0xc02f |
| 75 | + TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 uint16 = 0xc02b |
| 76 | + TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 uint16 = 0xc030 |
0 commit comments