Documentation
¶
Overview ¶
Package crypto provides common crypto libraries for V2Ray.
Index ¶
- func NewAesCTRStream(key []byte, iv []byte) cipher.Stream
- func NewAesDecryptionStream(key []byte, iv []byte) cipher.Stream
- func NewAesEncryptionStream(key []byte, iv []byte) cipher.Stream
- func NewAesGcm(key []byte) cipher.AEAD
- func NewAesStreamMethod(key []byte, iv []byte, f func(cipher.Block, []byte) cipher.Stream) cipher.Stream
- func NewChaCha20Stream(key []byte, iv []byte) cipher.Stream
- func RandBetween(from int64, to int64) int64
- type AEADAuthenticator
- type AEADChunkSizeParser
- type AuthenticationReader
- type AuthenticationReader1
- type AuthenticationWriter
- type AuthenticationWriterIO
- type Authenticator
- type BytesGenerator
- type ChunkSizeDecoder
- type ChunkSizeDecoderWithOffset
- type ChunkSizeEncoder
- type ChunkStreamReader
- func NewChunkStreamReader(sizeDecoder ChunkSizeDecoder, reader io.Reader) *ChunkStreamReader
- func NewChunkStreamReaderIO(sizeDecoder ChunkSizeDecoder, reader io.Reader) *ChunkStreamReader
- func NewChunkStreamReaderWithChunkCount(sizeDecoder ChunkSizeDecoder, reader io.Reader, maxNumChunk uint32) *ChunkStreamReader
- type ChunkStreamReader1
- type ChunkStreamReaderIO
- type ChunkStreamWriter
- type ChunkStreamWriter1
- type CryptionReader
- type CryptionWriter
- type PaddingLengthGenerator
- type PlainChunkSizeParser
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func NewAesCTRStream ¶
NewAesCTRStream creates a stream cipher based on AES-CTR.
func NewAesDecryptionStream ¶
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 ¶
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 NewAesStreamMethod ¶
func NewChaCha20Stream ¶
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.
func RandBetween ¶
Types ¶
type AEADAuthenticator ¶
type AEADAuthenticator struct {
cipher.AEAD
NonceGenerator BytesGenerator
AdditionalDataGenerator BytesGenerator
}
type AEADChunkSizeParser ¶
type AEADChunkSizeParser struct {
Auth *AEADAuthenticator
}
func (*AEADChunkSizeParser) Encode ¶
func (p *AEADChunkSizeParser) Encode(size uint16, b []byte) []byte
func (*AEADChunkSizeParser) SizeBytes ¶
func (p *AEADChunkSizeParser) SizeBytes() int32
type AuthenticationReader ¶
type AuthenticationReader struct {
// contains filtered or unexported fields
}
func NewAuthenticationReader ¶
func NewAuthenticationReader(ctx context.Context, auth Authenticator, sizeParser ChunkSizeDecoder, reader io.Reader, transferType protocol.TransferType, paddingLen PaddingLengthGenerator) *AuthenticationReader
func (*AuthenticationReader) ReadMultiBuffer ¶
func (r *AuthenticationReader) ReadMultiBuffer() (buf.MultiBuffer, error)
type AuthenticationReader1 ¶
type AuthenticationReader1 struct {
// contains filtered or unexported fields
}
func NewAuthenticationReader1 ¶
func NewAuthenticationReader1(auth Authenticator, sizeParser ChunkSizeDecoder, reader io.Reader, transferType protocol.TransferType, paddingLen PaddingLengthGenerator) *AuthenticationReader1
func (*AuthenticationReader1) Close ¶
func (r *AuthenticationReader1) Close() 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, padding PaddingLengthGenerator) *AuthenticationWriter
func (*AuthenticationWriter) CloseWrite ¶
func (a *AuthenticationWriter) CloseWrite() error
func (*AuthenticationWriter) WriteMultiBuffer ¶
func (w *AuthenticationWriter) WriteMultiBuffer(mb buf.MultiBuffer) error
WriteMultiBuffer implements buf.Writer.
type AuthenticationWriterIO ¶
type AuthenticationWriterIO struct {
// contains filtered or unexported fields
}
func NewAuthenticationWriterIO ¶
func NewAuthenticationWriterIO(auth Authenticator, sizeParser ChunkSizeEncoder, writer io.Writer, transferType protocol.TransferType, padding PaddingLengthGenerator) *AuthenticationWriterIO
func (*AuthenticationWriterIO) Close ¶
func (w *AuthenticationWriterIO) Close() error
type Authenticator ¶
type BytesGenerator ¶
type BytesGenerator func() []byte
func GenerateEmptyBytes ¶
func GenerateEmptyBytes() BytesGenerator
func GenerateIncreasingNonce ¶
func GenerateIncreasingNonce(nonce []byte) BytesGenerator
func GenerateInitialAEADNonce ¶
func GenerateInitialAEADNonce() BytesGenerator
func GenerateStaticBytes ¶
func GenerateStaticBytes(content []byte) BytesGenerator
type ChunkSizeDecoder ¶
type ChunkSizeDecoder interface {
// SizeBytes must be stable, return the same value across all calls
SizeBytes() int32
Decode([]byte) (uint16, error)
}
ChunkSizeDecoder is a utility class to decode size value from bytes.
type ChunkSizeDecoderWithOffset ¶
type ChunkSizeDecoderWithOffset interface {
ChunkSizeDecoder
// HasConstantOffset set the constant offset of Decode
// The effective size should be HasConstantOffset() + Decode(_).[0](uint64)
HasConstantOffset() uint16
}
type ChunkSizeEncoder ¶
ChunkSizeEncoder is a 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 NewChunkStreamReaderIO ¶
func NewChunkStreamReaderIO(sizeDecoder ChunkSizeDecoder, reader io.Reader) *ChunkStreamReader
func NewChunkStreamReaderWithChunkCount ¶
func NewChunkStreamReaderWithChunkCount(sizeDecoder ChunkSizeDecoder, reader io.Reader, maxNumChunk uint32) *ChunkStreamReader
func (*ChunkStreamReader) ReadMultiBuffer ¶
func (r *ChunkStreamReader) ReadMultiBuffer() (buf.MultiBuffer, error)
type ChunkStreamReader1 ¶
type ChunkStreamReader1 struct {
// contains filtered or unexported fields
}
func NewChunkStreamReader1 ¶
func NewChunkStreamReader1(sizeDecoder ChunkSizeDecoder, reader io.Reader, maxNumChunk uint32) *ChunkStreamReader1
func (*ChunkStreamReader1) Close ¶
func (r *ChunkStreamReader1) Close() error
type ChunkStreamReaderIO ¶
type ChunkStreamReaderIO struct {
// contains filtered or unexported fields
}
func NewChunkStreamReaderWithChunkCountIO ¶
func NewChunkStreamReaderWithChunkCountIO(sizeDecoder ChunkSizeDecoder, reader io.Reader, maxNumChunk uint32) *ChunkStreamReaderIO
type ChunkStreamWriter ¶
type ChunkStreamWriter struct {
// contains filtered or unexported fields
}
func NewChunkStreamWriter ¶
func NewChunkStreamWriter(sizeEncoder ChunkSizeEncoder, writer io.Writer) *ChunkStreamWriter
func (*ChunkStreamWriter) CloseWrite ¶
func (*ChunkStreamWriter) CloseWrite() error
func (*ChunkStreamWriter) WriteMultiBuffer ¶
func (w *ChunkStreamWriter) WriteMultiBuffer(mb buf.MultiBuffer) error
type ChunkStreamWriter1 ¶
type ChunkStreamWriter1 struct {
// contains filtered or unexported fields
}
func NewChunkStreamWriter1 ¶
func NewChunkStreamWriter1(sizeEncoder ChunkSizeEncoder, writer io.Writer) *ChunkStreamWriter1
func (*ChunkStreamWriter1) Close ¶
func (w *ChunkStreamWriter1) Close() error
type CryptionReader ¶
type CryptionReader struct {
// contains filtered or unexported fields
}
func NewCryptionReader ¶
func NewCryptionReader(stream cipher.Stream, reader io.Reader) *CryptionReader
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) CloseWrite ¶
func (*CryptionWriter) CloseWrite() error
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
WriteMultiBuffer implements buf.Writer.
type PaddingLengthGenerator ¶
type PlainChunkSizeParser ¶
type PlainChunkSizeParser struct{}
func (PlainChunkSizeParser) Encode ¶
func (PlainChunkSizeParser) Encode(size uint16, b []byte) []byte
func (PlainChunkSizeParser) SizeBytes ¶
func (PlainChunkSizeParser) SizeBytes() int32