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)