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
Read []byte;
Computed []byte;
}
Trackback URL
Leave a comment
Comments