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

     1  // Copyright 2013 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 cipher
     6  
     7  // AEADは関連データを含めた認証暗号化を提供する暗号モードです。手法の説明については、以下を参照してください。
     8  // https://en.wikipedia.org/wiki/Authenticated_encryption.
     9  type AEAD interface {
    10  	NonceSize() int
    11  
    12  	Overhead() int
    13  
    14  	Seal(dst, nonce, plaintext, additionalData []byte) []byte
    15  
    16  	Open(dst, nonce, ciphertext, additionalData []byte) ([]byte, error)
    17  }
    18  
    19  // NewGCMは、標準のnonce長でラップされた128ビットのブロック暗号を返します。
    20  //
    21  // 一般的に、GCMのこの実装で実行されるGHASH操作は一定時間ではありません。
    22  // aes.NewCipherで生成された基礎の [Block] が、AESのハードウェアサポートを持つシステムである場合は例外です。詳細については、 [crypto/aes] パッケージのドキュメントを参照してください。
    23  func NewGCM(cipher Block) (AEAD, error)
    24  
    25  // NewGCMWithNonceSize は、与えられた長さの非スタンダードなノンスを受け付ける、128-bitのブロック暗号をGalios Counter Modeでラップしたものを返します。長さはゼロであってはいけません。
    26  // 他の暗号システムとの互換性が必要な場合にのみ、この関数を使用してください。他のユーザーは、より高速でミス使用に対してより抵抗力のある [NewGCM] を使用すべきです。
    27  func NewGCMWithNonceSize(cipher Block, size int) (AEAD, error)
    28  
    29  // NewGCMWithTagSizeは、指定された128ビットのブロック暗号をGalois Counter Modeでラップし、指定された長さのタグを生成します。
    30  // 12バイトから16バイトのタグサイズが許可されています。
    31  // 非標準のタグ長を使用する既存の暗号システムとの互換性が必要な場合にのみ、この関数を使用してください。その他のユーザーは、誤用に対してより耐性がある [NewGCM] を使用するべきです。
    32  func NewGCMWithTagSize(cipher Block, tagSize int) (AEAD, error)