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の倍数以外の暗号フィードバック(CFB)モードは実装されていません。

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の倍数以外の暗号フィードバック(CFB)モードは実装されていません。

NewCMAC関数

func NewCMAC(c Cipher) hash.Hash

NewCMACはcを使用して新しいCMACメッセージ認証コードダイジェストを返します。

NewCTRReader関数

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

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

NewCTRWriter関数

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

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

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

NewOFBReader関数

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

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

NewOFBWriter関数

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

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

Cipher型

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

type Cipher interface {
    // BlockSize returns the cipher's block size.
    BlockSize() int;

    // Encrypt encrypts the first block in src into dst.
    // Src and dst may point at the same memory.
    Encrypt(src, dst []byte);

    // Decrypt decrypts the first block in src into dst.
    // Src and dst may point at the same memory.
    Decrypt(src, dst []byte);
}

EAXTagError型

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

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

(*EAXTagError) String関数

func (e *EAXTagError) String() string

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