github.com/shogo82148/std@v1.22.1-0.20240327122250-4e474527810c/crypto/tls/cipher_suites.go (about)

     1  // Copyright 2010 The Go Authors. All rights reserved.
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  package tls
     6  
     7  // CipherSuiteはTLSの暗号スイートです。このパッケージのほとんどの関数は、この型の代わりに暗号スイートのIDを受け入れて公開します。
     8  type CipherSuite struct {
     9  	ID   uint16
    10  	Name string
    11  
    12  	// Supported versionsは、この暗号スイートをネゴシエートできるTLSプロトコルのバージョンのリストです。
    13  	SupportedVersions []uint16
    14  
    15  	// Insecureは、そのプリミティブ、設計、または実装による既知のセキュリティ問題があるため、暗号スイートが安全ではない場合にtrueとなります。
    16  	Insecure bool
    17  }
    18  
    19  // CipherSuitesは、このパッケージで現在実装されている暗号スイートのリストを返します。
    20  // ただし、セキュリティ上の問題があるものは [InsecureCipherSuites] によって返されます。
    21  //
    22  // このリストはIDでソートされています。このパッケージによって選択されるデフォルトの暗号スイートが、
    23  // 静的なリストでは捉えることができないロジックに依存している場合があり、
    24  // この関数によって返されるものと一致しない場合があります。
    25  func CipherSuites() []*CipherSuite
    26  
    27  // InsecureCipherSuitesは、現在このパッケージで実装されているセキュリティ上の問題を抱えた暗号スイートのリストを返します。
    28  // ほとんどのアプリケーションは、このリストに含まれる暗号スイートを使用すべきではありません。代わりに、 [CipherSuites] で返されるスイートのみを使用するべきです。
    29  func InsecureCipherSuites() []*CipherSuite
    30  
    31  // CipherSuiteNameは渡された暗号スイートIDの標準名
    32  // (例:「TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256」)を返します。
    33  // もしこのパッケージで暗号スイートが実装されていない場合は、IDの値をフォールバック表現として返します。
    34  func CipherSuiteName(id uint16) string
    35  
    36  // このパッケージで実装されている、または実装されていた暗号スイートのIDのリストです。
    37  //
    38  // 詳細は、https://www.iana.org/assignments/tls-parameters/tls-parameters.xml を参照してください。
    39  const (
    40  	// TLS 1.0 - 1.2の暗号スイート。
    41  	TLS_RSA_WITH_RC4_128_SHA                      uint16 = 0x0005
    42  	TLS_RSA_WITH_3DES_EDE_CBC_SHA                 uint16 = 0x000a
    43  	TLS_RSA_WITH_AES_128_CBC_SHA                  uint16 = 0x002f
    44  	TLS_RSA_WITH_AES_256_CBC_SHA                  uint16 = 0x0035
    45  	TLS_RSA_WITH_AES_128_CBC_SHA256               uint16 = 0x003c
    46  	TLS_RSA_WITH_AES_128_GCM_SHA256               uint16 = 0x009c
    47  	TLS_RSA_WITH_AES_256_GCM_SHA384               uint16 = 0x009d
    48  	TLS_ECDHE_ECDSA_WITH_RC4_128_SHA              uint16 = 0xc007
    49  	TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA          uint16 = 0xc009
    50  	TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA          uint16 = 0xc00a
    51  	TLS_ECDHE_RSA_WITH_RC4_128_SHA                uint16 = 0xc011
    52  	TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA           uint16 = 0xc012
    53  	TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA            uint16 = 0xc013
    54  	TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA            uint16 = 0xc014
    55  	TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256       uint16 = 0xc023
    56  	TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256         uint16 = 0xc027
    57  	TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256         uint16 = 0xc02f
    58  	TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256       uint16 = 0xc02b
    59  	TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384         uint16 = 0xc030
    60  	TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384       uint16 = 0xc02c
    61  	TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256   uint16 = 0xcca8
    62  	TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256 uint16 = 0xcca9
    63  
    64  	// TLS 1.3サイファースイート。
    65  	TLS_AES_128_GCM_SHA256       uint16 = 0x1301
    66  	TLS_AES_256_GCM_SHA384       uint16 = 0x1302
    67  	TLS_CHACHA20_POLY1305_SHA256 uint16 = 0x1303
    68  
    69  	// TLS_FALLBACK_SCSVは標準の暗号スイートではなく、クライアントがバージョンのフォールバックを行っていることを示すものです。RFC 7507を参照してください。
    70  	TLS_FALLBACK_SCSV uint16 = 0x5600
    71  
    72  	// 正しい_SHA256サフィックスを持つ対応する暗号スイートのためのレガシー名前
    73  	// 互換性のために保持されています。
    74  	TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305   = TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256
    75  	TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305 = TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256
    76  )