pkg crypto, func NewBoxCrypter(BoxKeyExchanger, *iobuf.Pool) (Crypter, error)
pkg crypto, func NewControlCipherRPC6(*BoxKey, *BoxKey, bool) ControlCipher
pkg crypto, func NewDisabledControlCipher(ControlCipher) ControlCipher
pkg crypto, func NewNullCrypter() Crypter
pkg crypto, func NewTLSClient(io.ReadWriteCloser, net.Addr, net.Addr, TLSClientSessionCache, *iobuf.Pool) (Crypter, error)
pkg crypto, func NewTLSClientSessionCache() TLSClientSessionCache
pkg crypto, func NewTLSServer(io.ReadWriteCloser, net.Addr, net.Addr, *iobuf.Pool) (Crypter, error)
pkg crypto, func ServerTLSConfig() *tls.Config
pkg crypto, method (NullControlCipher) Decrypt([]byte)
pkg crypto, method (NullControlCipher) Encrypt([]byte)
pkg crypto, method (NullControlCipher) MACSize() int
pkg crypto, method (NullControlCipher) Open([]byte) bool
pkg crypto, method (NullControlCipher) Seal([]byte) error
pkg crypto, method (TLSClientSessionCache) RPCStreamVCOpt()
pkg crypto, type BoxKey [32]byte
pkg crypto, type BoxKeyExchanger func(myPublicKey *BoxKey) (theirPublicKey *BoxKey, err error)
pkg crypto, type ControlCipher interface { Decrypt, Encrypt, MACSize, Open, Seal }
pkg crypto, type ControlCipher interface, Decrypt([]byte)
pkg crypto, type ControlCipher interface, Encrypt([]byte)
pkg crypto, type ControlCipher interface, MACSize() int
pkg crypto, type ControlCipher interface, Open([]byte) bool
pkg crypto, type ControlCipher interface, Seal([]byte) error
pkg crypto, type Crypter interface { ChannelBinding, Decrypt, Encrypt, String }
pkg crypto, type Crypter interface, ChannelBinding() []byte
pkg crypto, type Crypter interface, Decrypt(*iobuf.Slice) (*iobuf.Slice, error)
pkg crypto, type Crypter interface, Encrypt(*iobuf.Slice) (*iobuf.Slice, error)
pkg crypto, type Crypter interface, String() string
pkg crypto, type Decrypter interface { Decrypt }
pkg crypto, type Decrypter interface, Decrypt(*iobuf.Slice) (*iobuf.Slice, error)
pkg crypto, type Encrypter interface { Encrypt }
pkg crypto, type Encrypter interface, Encrypt(*iobuf.Slice) (*iobuf.Slice, error)
pkg crypto, type NullControlCipher struct
pkg crypto, type TLSClientSessionCache struct
pkg crypto, type TLSClientSessionCache struct, embedded tls.ClientSessionCache
