1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- //go:build go1.25 && badlinkname
- package badtls
- import (
- "crypto/tls"
- "net"
- "unsafe"
- )
- type Methods struct {
- readRecord func(c unsafe.Pointer) error
- handlePostHandshakeMessage func(c unsafe.Pointer) error
- writeRecordLocked func(c unsafe.Pointer, typ uint16, data []byte) (int, error)
- setErrorLocked func(hc unsafe.Pointer, err error) error
- decrypt func(hc unsafe.Pointer, record []byte) ([]byte, uint8, error)
- setTrafficSecret func(hc unsafe.Pointer, suite unsafe.Pointer, level int, secret []byte)
- explicitNonceLen func(hc unsafe.Pointer) int
- }
- var methodRegistry []func(conn net.Conn) (unsafe.Pointer, *Methods, bool)
- func init() {
- methodRegistry = append(methodRegistry, func(conn net.Conn) (unsafe.Pointer, *Methods, bool) {
- tlsConn, loaded := conn.(*tls.Conn)
- if !loaded {
- return nil, nil, false
- }
- return unsafe.Pointer(tlsConn), &Methods{
- readRecord: stdTLSReadRecord,
- handlePostHandshakeMessage: stdTLSHandlePostHandshakeMessage,
- writeRecordLocked: stdWriteRecordLocked,
- setErrorLocked: stdSetErrorLocked,
- decrypt: stdDecrypt,
- setTrafficSecret: stdSetTrafficSecret,
- explicitNonceLen: stdExplicitNonceLen,
- }, true
- })
- }
- //go:linkname stdTLSReadRecord crypto/tls.(*Conn).readRecord
- func stdTLSReadRecord(c unsafe.Pointer) error
- //go:linkname stdTLSHandlePostHandshakeMessage crypto/tls.(*Conn).handlePostHandshakeMessage
- func stdTLSHandlePostHandshakeMessage(c unsafe.Pointer) error
- //go:linkname stdWriteRecordLocked crypto/tls.(*Conn).writeRecordLocked
- func stdWriteRecordLocked(c unsafe.Pointer, typ uint16, data []byte) (int, error)
- //go:linkname stdSetErrorLocked crypto/tls.(*halfConn).setErrorLocked
- func stdSetErrorLocked(hc unsafe.Pointer, err error) error
- //go:linkname stdDecrypt crypto/tls.(*halfConn).decrypt
- func stdDecrypt(hc unsafe.Pointer, record []byte) ([]byte, uint8, error)
- //go:linkname stdSetTrafficSecret crypto/tls.(*halfConn).setTrafficSecret
- func stdSetTrafficSecret(hc unsafe.Pointer, suite unsafe.Pointer, level int, secret []byte)
- //go:linkname stdExplicitNonceLen crypto/tls.(*halfConn).explicitNonceLen
- func stdExplicitNonceLen(hc unsafe.Pointer) int
|