crypto

package
v5.14.1 Latest Latest
Warning

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

Go to latest
Published: Mar 4, 2024 License: MIT Imports: 11 Imported by: 3

Documentation

Overview

Package crypto provides common crypto libraries for V2Ray.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func NewAesCTRStream

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

NewAesCTRStream creates a stream cipher based on AES-CTR.

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 NewAesGcm

func NewAesGcm(key []byte) cipher.AEAD

NewAesGcm creates a AEAD cipher based on AES-GCM.

func NewAesStreamMethod

func NewAesStreamMethod(key []byte, iv []byte, f func(cipher.Block, []byte) cipher.Stream) cipher.Stream

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() int32

type AuthenticationReader

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

func NewAuthenticationReader

func NewAuthenticationReader(auth Authenticator, sizeParser ChunkSizeDecoder, reader io.Reader, transferType protocol.TransferType, paddingLen PaddingLengthGenerator) *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, padding PaddingLengthGenerator) *AuthenticationWriter

func (*AuthenticationWriter) WriteMultiBuffer

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

WriteMultiBuffer implements buf.Writer.

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 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 added in v5.12.1

type ChunkSizeDecoderWithOffset interface {
	ChunkSizeDecoder
	// HasConstantOffset set the constant offset of Decode
	// The effective size should be HasConstantOffset() + Decode(_).[0](uint64)
	HasConstantOffset() uint16
}

type ChunkSizeEncoder

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

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 NewChunkStreamReaderWithChunkCount

func NewChunkStreamReaderWithChunkCount(sizeDecoder ChunkSizeDecoder, reader io.Reader, maxNumChunk uint32) *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

WriteMultiBuffer implements buf.Writer.

type PaddingLengthGenerator

type PaddingLengthGenerator interface {
	MaxPaddingLen() uint16
	NextPaddingLen() uint16
}

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() int32

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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