crypto

package
v3.8.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 12, 2018 License: MIT Imports: 9 Imported by: 0

Documentation

Overview

Package crypto provides common crypto libraries for V2Ray.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func NewAesDecryptionStream

func NewAesDecryptionStream(key []byte, iv []byte) cipher.Stream

NewAesDecryptionStream creates a new AES encryption stream based on given key and IV. Caller must ensure the length of key and IV is either 16, 24 or 32 bytes.

func NewAesEncryptionStream

func NewAesEncryptionStream(key []byte, iv []byte) cipher.Stream

NewAesEncryptionStream creates a new AES description stream based on given key and IV. Caller must ensure the length of key and IV is either 16, 24 or 32 bytes.

func NewChaCha20Stream

func NewChaCha20Stream(key []byte, iv []byte) cipher.Stream

NewChaCha20Stream creates a new Chacha20 encryption/descryption stream based on give key and IV. Caller must ensure the length of key is 32 bytes, and length of IV is either 8 or 12 bytes.

Types

type AEADAuthenticator

type AEADAuthenticator struct {
	cipher.AEAD
	NonceGenerator          BytesGenerator
	AdditionalDataGenerator BytesGenerator
}

func (*AEADAuthenticator) Open

func (v *AEADAuthenticator) Open(dst, cipherText []byte) ([]byte, error)

func (*AEADAuthenticator) Seal

func (v *AEADAuthenticator) Seal(dst, plainText []byte) ([]byte, error)

type AEADChunkSizeParser

type AEADChunkSizeParser struct {
	Auth *AEADAuthenticator
}

func (*AEADChunkSizeParser) Decode

func (p *AEADChunkSizeParser) Decode(b []byte) (uint16, error)

func (*AEADChunkSizeParser) Encode

func (p *AEADChunkSizeParser) Encode(size uint16, b []byte) []byte

func (*AEADChunkSizeParser) SizeBytes

func (p *AEADChunkSizeParser) SizeBytes() int

type AuthenticationReader

type AuthenticationReader struct {
	// contains filtered or unexported fields
}

func NewAuthenticationReader

func NewAuthenticationReader(auth Authenticator, sizeParser ChunkSizeDecoder, reader io.Reader, transferType protocol.TransferType) *AuthenticationReader

func (*AuthenticationReader) ReadMultiBuffer

func (r *AuthenticationReader) ReadMultiBuffer() (buf.MultiBuffer, error)

type AuthenticationWriter

type AuthenticationWriter struct {
	// contains filtered or unexported fields
}

func NewAuthenticationWriter

func NewAuthenticationWriter(auth Authenticator, sizeParser ChunkSizeEncoder, writer io.Writer, transferType protocol.TransferType) *AuthenticationWriter

func (*AuthenticationWriter) WriteMultiBuffer

func (w *AuthenticationWriter) WriteMultiBuffer(mb buf.MultiBuffer) error

type Authenticator

type Authenticator interface {
	NonceSize() int
	Overhead() int
	Open(dst, cipherText []byte) ([]byte, error)
	Seal(dst, plainText []byte) ([]byte, error)
}

type BytesGenerator

type BytesGenerator interface {
	Next() []byte
}

type ChunkSizeDecoder

type ChunkSizeDecoder interface {
	SizeBytes() int
	Decode([]byte) (uint16, error)
}

ChunkSizeDecoder is an utility class to decode size value from bytes.

type ChunkSizeEncoder

type ChunkSizeEncoder interface {
	SizeBytes() int
	Encode(uint16, []byte) []byte
}

ChunkSizeEncoder is an utility class to encode size value into bytes.

type ChunkStreamReader

type ChunkStreamReader struct {
	// contains filtered or unexported fields
}

func NewChunkStreamReader

func NewChunkStreamReader(sizeDecoder ChunkSizeDecoder, reader io.Reader) *ChunkStreamReader

func (*ChunkStreamReader) ReadMultiBuffer

func (r *ChunkStreamReader) ReadMultiBuffer() (buf.MultiBuffer, error)

type ChunkStreamWriter

type ChunkStreamWriter struct {
	// contains filtered or unexported fields
}

func NewChunkStreamWriter

func NewChunkStreamWriter(sizeEncoder ChunkSizeEncoder, writer io.Writer) *ChunkStreamWriter

func (*ChunkStreamWriter) WriteMultiBuffer

func (w *ChunkStreamWriter) WriteMultiBuffer(mb buf.MultiBuffer) error

type CryptionReader

type CryptionReader struct {
	// contains filtered or unexported fields
}

func NewCryptionReader

func NewCryptionReader(stream cipher.Stream, reader io.Reader) *CryptionReader

func (*CryptionReader) Read

func (r *CryptionReader) Read(data []byte) (int, error)

type CryptionWriter

type CryptionWriter struct {
	// contains filtered or unexported fields
}

func NewCryptionWriter

func NewCryptionWriter(stream cipher.Stream, writer io.Writer) *CryptionWriter

NewCryptionWriter creates a new CryptionWriter.

func (*CryptionWriter) Write

func (w *CryptionWriter) Write(data []byte) (int, error)

Write implements io.Writer.Write().

func (*CryptionWriter) WriteMultiBuffer

func (w *CryptionWriter) WriteMultiBuffer(mb buf.MultiBuffer) error

type IncreasingAEADNonceGenerator

type IncreasingAEADNonceGenerator struct {
	// contains filtered or unexported fields
}

func NewIncreasingAEADNonceGenerator

func NewIncreasingAEADNonceGenerator() *IncreasingAEADNonceGenerator

func (*IncreasingAEADNonceGenerator) Next

func (g *IncreasingAEADNonceGenerator) Next() []byte

type NoOpBytesGenerator

type NoOpBytesGenerator struct {
	// contains filtered or unexported fields
}

func (NoOpBytesGenerator) Next

func (v NoOpBytesGenerator) Next() []byte

type PlainChunkSizeParser

type PlainChunkSizeParser struct{}

func (PlainChunkSizeParser) Decode

func (PlainChunkSizeParser) Decode(b []byte) (uint16, error)

func (PlainChunkSizeParser) Encode

func (PlainChunkSizeParser) Encode(size uint16, b []byte) []byte

func (PlainChunkSizeParser) SizeBytes

func (PlainChunkSizeParser) SizeBytes() int

type StaticBytesGenerator

type StaticBytesGenerator struct {
	Content []byte
}

func (StaticBytesGenerator) Next

func (v StaticBytesGenerator) Next() []byte

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL