import "crypto/block"

低レベルのブロック暗号をラップする標準的ブロック暗号モードを実装しています。http://csrc.nist.gov/groups/ST/toolkit/BCM/current_modes.html、およびNIST Special Publication 800-38Aを参照してください。

パッケージファイル

cbc.go cfb.go cipher.go cmac.go ctr.go eax.go ecb.go ofb.go xor.go

NewCBCDecrypter関数

func NewCBCDecrypter(c Cipher, iv []byte, r io.Reader) io.Reader

NewCBCDecrypterは、rからデータを読み込みcを使用して初期ベクトル(initialization vector)ivを伴う暗号ブロック連鎖(CBC)モードでの復号化を行うReaderを返します。返されるReaderはバッファリングせず暗号化ブロックサイズ以上の先読みは行いません。

NewCBCEncrypter関数

func NewCBCEncrypter(c Cipher, iv []byte, w io.Writer) io.Writer

NewCBCEncrypterは、cを使用して初期ベクトル(initialization vector)ivを伴う暗号ブロック連鎖(CBC)モードでの暗号化されたデータを書き込むWriterを返します。返されるWriterは暗号化ブロックサイズ以上のバッファリングはしません。またFlushメソッドの呼び出しは必要ありません。

NewCFBDecrypter関数

func NewCFBDecrypter(c Cipher, s int, iv []byte, r io.Reader) io.Reader

NewCFBDecrypterは、rからデータを読み込みcを使用して初期ベクトル(initialization vector)ivを伴うsビットの暗号フィードバック(CFB)モードでの復号化を行うReaderを返します。返されるReaderはバッファリングせず暗号化ブロックサイズ以上の先読みは行いません。8の倍数以外のモードは実装されていません。

NewCFBEncrypter関数

func NewCFBEncrypter(c Cipher, s int, iv []byte, w io.Writer) io.Writer

NewCFBEncrypterは、cを使用して初期ベクトル(initialization vector)ivを伴うsビットの暗号フィードバック(CFB)モードでの暗号化されたデータを書き込むWriterを返します。返されるWriterは暗号化ブロックサイズ以上のバッファリングはしません。またFlushメソッドの呼び出しは必要ありません。8の倍数以外のモードは実装されていません。

NewCMAC関数

func NewCMAC(c Cipher) hash.Hash

NewCMACは、与えられたCipherを使用する新しいCMACメッセージ認証コードダイジェストを返します。

NewCTRReader関数

func NewCTRReader(c Cipher, iv []byte, r io.Reader) io.Reader

NewCTRReaderは、rからデータを読み込みcを使用して初期ベクトル(initialization vector)ivを伴うカウンタ(CTR)モードでの復号化(または暗号化)を行うReaderを返します。返されるReaderはバッファリングせず、ブロックサイズも持ちません。CTRモードでは暗号化も復号化も同じ処理であり、暗号化しているストリームをCTRReaderに適用すると復号化されたストリームが生成されます。逆も同じです。

NewCTRWriter関数

func NewCTRWriter(c Cipher, iv []byte, w io.Writer) io.Writer

NewCTRWriterは、cを使用して初期ベクトル(initialization vector)ivを伴うカウンタ(CTR)モードでの暗号化(または復号化)されたデータを書き込むWriterを返します。返されるWriterはバッファリングせず、ブロックサイズも持ちません。CTRモードでは暗号化も復号化も同じであり、復号化しているストリームをCTRWriterに適用すると暗号化されたストリームが生成されます。逆も同じです。

NewEAXDecrypter関数

func NewEAXDecrypter(c Cipher, iv []byte, hdr []byte, tagBytes int, r io.Reader) io.Reader

NewEAXDecrypterは、cを使用して初期ベクトル(initialization vector)ivを伴い、hdrデータの連結、tagBytes長のタグ付けをした新しいEAX decrypterを返します。Read関数はrからデータを読み込み復号化を行います。rがEOFに達すると、最後に認証タグをチェックし、認証タグが無効の場合はEAXTagErrorを返します。そのような場合はメッセージは破棄すべきです。Readがデータの終わりであることを示す0,nilを返すまで、Readから返されるデータストリームが認証されたデータであり有効なことを確認する必要があります。

NewEAXEncrypter関数

func NewEAXEncrypter(c Cipher, iv []byte, hdr []byte, tagBytes int, w io.Writer) io.WriteCloser

NewEAXEncrypterは、cを使用して初期ベクトル(initialization vector)ivを伴い、hdrデータの連結、tagBytes長のタグ付けをした新しいEAX encrypterを返します。Writeメソッドは受け取ったデータを暗号化してそのデータをwへ書き込みます。Closeメソッドは最後の認証タグをwへ書き込み ます。

NewECBDecrypter関数

func NewECBDecrypter(c Cipher, r io.Reader) io.Reader

NewECBDecrypterは、rからデータを読み込み、cを使用して復号化を行うReaderを返します。各ブロックで順番にc.Decryptを呼び出すことにより復号化を行います。このモードはelectronic codebook mode(ECB)として知られています。返されるReaderはバッファリングせず暗号化ブロックサイズ以上の先読みは行いません。

NewECBEncrypter関数

func NewECBEncrypter(c Cipher, w io.Writer) io.Writer

NewECBEncrypterは、cを使用して暗号化されたデータをwに書き込むWriterを返します。各ブロックで順番にc.Encryptを呼び出すことにより暗号化を行います。このモードはelectronic codebook mode(ECB)として知られています。返されるWriterは暗号化ブロックサイズ以上のバッファリングはしません。またFlushメソッドの呼び出しは必要ありません。

NewOFBReader関数

func NewOFBReader(c Cipher, iv []byte, r io.Reader) io.Reader

NewOFBReaderは、rから読み込みcを使用して初期ベクトル(initialization vector)ivを伴う暗号出力フィードバック(OFB)モードでの復号化(または暗号化)を行うReaderを返します。返されるReaderはバッファリングせず、ブロックサイズも持ちません。OFBモードでは暗号化も復号化も同じであり、暗号化しているストリームをOFBReaderに適用すると復号化されたストリームが生成されます。逆も同じです。

NewOFBWriter関数

func NewOFBWriter(c Cipher, iv []byte, w io.Writer) io.Writer

NewOFBWriterは、cを使用して初期ベクトル(initialization vector)ivを伴う暗号出力フィードバック(OFB)モードでの暗号化(または復号化)されたデータをwに書き込むWriterを返します。返されるWriterはバッファリングせず、ブロックサイズも持ちません。OFBモードでは暗号化も復号化も同じであり、復号化しているストリームをOFBWriterに適用すると暗号化されたストリームが生成されます。逆も同じです。

Cipher型

Cipherは、与えられた鍵を使用するブロック暗号の実装を表わします。個々のブロックの暗号化、または復号化機能を提供します。モードの実装はブロックのストリームに対する機能を拡張します。

type Cipher interface {
    // BlockSizeは、cipherのブロックサイズを返します。
    BlockSize() int

    // Encryptは、srcの最初のブロックをdstへ暗号化します。
    // srcとdstには、同一メモリへのポインタを指定可能です。
    Encrypt(dst, src []byte)

    // Decryptは、srcの最初のブロックをdstへ復号化します。
    // srcとdstには、同一メモリへのポインタを指定可能です。
    Decrypt(dst, src []byte)
}

EAXTagError型

EAXTagErrorは、メッセージの認証に失敗した(メッセージストリームから読み出された最後のタグ(Read)が、メッセージから計算されたタグ(Computed)と一致しない)ときに返されます。

type EAXTagError struct {
    Read     []byte
    Computed []byte
}

(*EAXTagError) String関数

func (e *EAXTagError) String() string

type EAXTagError struct {
Read     []byte;
Computed []byte;
}