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

     1  // Copyright 2009 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  // パッケージtlsは、RFC 5246で指定されているTLS 1.2と、RFC 8446で指定されているTLS 1.3を部分的に実装しています。
     6  package tls
     7  
     8  import (
     9  	"github.com/shogo82148/std/context"
    10  	"github.com/shogo82148/std/net"
    11  )
    12  
    13  // Serverは、基礎となるトランスポートとしてconnを使用して新しいTLSサーバーサイド接続を返します。
    14  // configの設定は、非nilであり、少なくとも1つの証明書を含んでいるか、またはGetCertificateを設定している必要があります。
    15  func Server(conn net.Conn, config *Config) *Conn
    16  
    17  // Client は、基礎となるトランスポートとして conn を使用して
    18  // 新しい TLS クライアント側の接続を返します。
    19  // ユーザーは、config に ServerName または InsecureSkipVerify のどちらかを設定する必要があります。config は nil であってはなりません。
    20  func Client(conn net.Conn, config *Config) *Conn
    21  
    22  // NewListenerは、内部Listenerからの接続を受け入れ、それぞれの接続を [Server] でラップするListenerを作成します。
    23  // 設定configはnilではなく、少なくとも1つの証明書を含むか、それ以外の場合はGetCertificateを設定する必要があります。
    24  func NewListener(inner net.Listener, config *Config) net.Listener
    25  
    26  // Listenは、net.Listenを使用して、指定されたネットワークアドレスで接続を受け入れるTLSリスナーを作成します。
    27  // 設定(config)は、nil以外である必要があり、少なくとも1つの証明書を含んでいるか、GetCertificateを設定している必要があります。
    28  func Listen(network, laddr string, config *Config) (net.Listener, error)
    29  
    30  // DialWithDialerは、dialer.Dialを使用して指定されたネットワークアドレスに接続し、
    31  // TLSハンドシェイクを開始し、結果のTLS接続を返します。dialerで指定されたタイムアウトや
    32  // デッドラインは、接続とTLSハンドシェイク全体に適用されます。
    33  //
    34  // DialWithDialerは、nilの設定をゼロの設定として解釈します。
    35  // デフォルトの内容については、 [Config] のドキュメントを参照してください。
    36  //
    37  // DialWithDialerは、内部的にcontext.Backgroundを使用します。
    38  // コンテキストを指定するには、NetDialerを必要なダイアラに設定した
    39  // [Dialer.DialContext] を使用してください。
    40  func DialWithDialer(dialer *net.Dialer, network, addr string, config *Config) (*Conn, error)
    41  
    42  // Dial関数は、net.Dialを使用して指定されたネットワークアドレスに接続し、
    43  // 次にTLSハンドシェイクを開始して、結果として得られるTLSコネクションを返します。
    44  // Dialはnilのconfigurationをゼロのconfigurationと同等だと解釈します。
    45  // デフォルトの設定については、Configのドキュメンテーションを参照してください。
    46  func Dial(network, addr string, config *Config) (*Conn, error)
    47  
    48  // Dialerは、設定と基礎となる接続のためのダイアラーを使用してTLS接続をダイアルします。
    49  type Dialer struct {
    50  
    51  	// NetDialerはTLS接続の基礎となるTCP接続に使用するオプションのダイアラです。
    52  	// nilのNetDialerはnet.Dialerのゼロ値と同じです。
    53  	NetDialer *net.Dialer
    54  
    55  	// Config は新しい接続に使用するTLSの設定です。
    56  	// nilの設定はゼロと同等であり、デフォルトの設定についてはConfigのドキュメントを参照してください。
    57  	Config *Config
    58  }
    59  
    60  // Dialは指定されたネットワークアドレスに接続し、TLSハンドシェイクを開始し、結果のTLS接続を返します。
    61  //
    62  // 返される [Conn] は、もし存在する場合は常に *[Conn] 型です。
    63  //
    64  // 内部的にDialはcontext.Backgroundを使用しますが、コンテキストを指定するにはDialContextを使用してください。
    65  func (d *Dialer) Dial(network, addr string) (net.Conn, error)
    66  
    67  // DialContextは指定されたネットワークアドレスに接続し、TLSハンドシェイクを開始し、結果のTLS接続を返します。
    68  // 提供されたContextはnil以外である必要があります。接続が完了する前にContextが期限切れになった場合、エラーが返されます。接続成功後、Contextが期限切れになっても接続には影響しません。
    69  // 返される [Conn] (あれば)は常に *[Conn] 型です。
    70  func (d *Dialer) DialContext(ctx context.Context, network, addr string) (net.Conn, error)
    71  
    72  // LoadX509KeyPairは、公開/秘密キーペアをペアのファイルから読み込んで解析します。
    73  // ファイルにはPEMエンコードされたデータを含める必要があります。証明書ファイルには、
    74  // リーフ証明書に続く中間証明書を含めて、証明書チェーンを形成することができます。成功した場合、
    75  // Certificate.Leafはnilになります。これは、証明書の解析形式が保持されていないためです。
    76  func LoadX509KeyPair(certFile, keyFile string) (Certificate, error)
    77  
    78  // X509KeyPairは、一組のPEMエンコードされたデータから公開/秘密鍵のペアを解析します。成功した場合、Certificate.Leafはnilです。そのため、証明書の解析形式は保持されません。
    79  func X509KeyPair(certPEMBlock, keyPEMBlock []byte) (Certificate, error)