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

     1  // Copyright 2011 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 x509
     6  
     7  // CertPoolは証明書のセットです。
     8  type CertPool struct {
     9  	byName map[string][]int
    10  
    11  	// lazyCertsには、必要に応じて遅延的に解析/展開される証明書を返す関数が含まれています。
    12  	lazyCerts []lazyCert
    13  
    14  	// haveSum は sum224(cert.Raw) を true にマッピングします。これは、AddCert の重複検出のためにのみ使用されます。CertPool.contains の呼び出しを AddCert パスで避けるためです(なぜなら、contains メソッドは getCert を呼び出し、怠惰な getCert からの節約を否定することができるためです)。
    15  	haveSum map[sum224]bool
    16  
    17  	// systemPoolは、システムルートから派生した特別なプールであることを示します。追加のルートを含む場合、呼び出し元によって提供されたルートを使用して1つの検証、およびシステムプラットフォームの検証装置を使用してもう1つの検証が必要です。
    18  	systemPool bool
    19  }
    20  
    21  // NewCertPoolは新しい、空のCertPoolを返します。
    22  func NewCertPool() *CertPool
    23  
    24  // Cloneはsのコピーを返します。
    25  func (s *CertPool) Clone() *CertPool
    26  
    27  // SystemCertPoolはシステム証明書プールのコピーを返します。
    28  //
    29  // macOS以外のUnixシステムでは、環境変数SSL_CERT_FILEとSSL_CERT_DIRを使用して、
    30  // SSL証明書ファイルとSSL証明書ファイルのディレクトリのシステムのデフォルト場所を上書きすることができます。後者はコロンで区切られたリストになります。
    31  //
    32  // 返されたプールへの変更はディスクに書き込まれず、SystemCertPoolによって返される他のプールに影響を与えません。
    33  //
    34  // システム証明書プールの新しい変更は、後続の呼び出しで反映されない場合があります。
    35  func SystemCertPool() (*CertPool, error)
    36  
    37  // AddCertは証明書をプールに追加します。
    38  func (s *CertPool) AddCert(cert *Certificate)
    39  
    40  // AppendCertsFromPEMは、一連のPEMエンコードされた証明書を解析しようとします。
    41  // 見つかった証明書をsに追加し、成功した証明書があるかどうかを報告します。
    42  //
    43  // 多くのLinuxシステムでは、/etc/ssl/cert.pemには、この関数に適した形式でシステム全体のルートCAセットが含まれています。
    44  func (s *CertPool) AppendCertsFromPEM(pemCerts []byte) (ok bool)
    45  
    46  // Subjectsはプール内のすべての証明書のDERエンコードされたサブジェクトのリストを返します。
    47  //
    48  // Deprecated: sが [SystemCertPool] から返された場合、Subjectsにはシステムルートは含まれません。
    49  func (s *CertPool) Subjects() [][]byte
    50  
    51  // Equalは、sとotherが等しいかどうかを報告します。
    52  func (s *CertPool) Equal(other *CertPool) bool
    53  
    54  // AddCertWithConstraintは、追加の制約を持つ証明書をプールに追加します。
    55  // Certificate.Verifyがcertによってルート化されたチェーンを構築するとき、
    56  // さらにその全体のチェーンを制約に渡してその有効性を判断します。
    57  // 制約が非nilのエラーを返すと、チェーンは破棄されます。
    58  // 制約は複数のゴルーチンから同時に呼び出される可能性があります。
    59  func (s *CertPool) AddCertWithConstraint(cert *Certificate, constraint func([]*Certificate) error)