Documentation
¶
Index ¶
- Constants
- Variables
- func CipherSuiteName(id uint16) string
- type Alert
- type Certificate
- type CertificateChain
- type CertificateRequestInfo
- type CipherSuite
- type ClientHelloInfo
- type ClientSessionCache
- type ClientSessionState
- type Config
- type Conn
- func (c *Conn) Close() error
- func (c *Conn) CloseWrite() error
- func (c *Conn) Config() *Config
- func (c *Conn) ConnectionState() ConnectionState
- func (c *Conn) Handshake() error
- func (c *Conn) HandshakeContext(ctx context.Context) error
- func (c *Conn) LocalAddr() net.Addr
- func (c *Conn) NetConn() net.Conn
- func (c *Conn) OCSPResponse() []byte
- func (c *Conn) Read(b []byte) (int, error)
- func (c *Conn) RemoteAddr() net.Addr
- func (c *Conn) SetDeadline(t time.Time) error
- func (c *Conn) SetReadDeadline(t time.Time) error
- func (c *Conn) SetWriteDeadline(t time.Time) error
- func (c *Conn) VerifyHostname(host string) error
- func (c *Conn) Write(b []byte) (int, error)
- type ConnectionState
- type CurveID
- type HandshakeLog
- type PointFormat
- type RecordHeaderError
- type RenegotiationSupport
- type SigAndHash
- type SignatureScheme
Constants ¶
const ( // alert level AlertLevelWarning = 1 AlertLevelError = 2 )
const ( TLS_NULL_WITH_NULL_NULL uint16 = 0x0000 TLS_RSA_WITH_NULL_MD5 uint16 = 0x0001 TLS_RSA_WITH_NULL_SHA uint16 = 0x0002 TLS_RSA_EXPORT_WITH_RC4_40_MD5 uint16 = 0x0003 TLS_RSA_WITH_RC4_128_MD5 uint16 = 0x0004 TLS_RSA_WITH_RC4_128_SHA uint16 = 0x0005 TLS_RSA_EXPORT_WITH_RC2_CBC_40_MD5 uint16 = 0x0006 TLS_RSA_WITH_IDEA_CBC_SHA uint16 = 0x0007 TLS_RSA_EXPORT_WITH_DES40_CBC_SHA uint16 = 0x0008 TLS_RSA_WITH_DES_CBC_SHA uint16 = 0x0009 TLS_RSA_WITH_3DES_EDE_CBC_SHA uint16 = 0x000A TLS_DH_DSS_EXPORT_WITH_DES40_CBC_SHA uint16 = 0x000B TLS_DH_DSS_WITH_DES_CBC_SHA uint16 = 0x000C TLS_DH_DSS_WITH_3DES_EDE_CBC_SHA uint16 = 0x000D TLS_DH_RSA_EXPORT_WITH_DES40_CBC_SHA uint16 = 0x000E TLS_DH_RSA_WITH_DES_CBC_SHA uint16 = 0x000F TLS_DH_RSA_WITH_3DES_EDE_CBC_SHA uint16 = 0x0010 TLS_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA uint16 = 0x0011 TLS_DHE_DSS_WITH_DES_CBC_SHA uint16 = 0x0012 TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA uint16 = 0x0013 TLS_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA uint16 = 0x0014 TLS_DHE_RSA_WITH_DES_CBC_SHA uint16 = 0x0015 TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA uint16 = 0x0016 TLS_DH_ANON_EXPORT_WITH_RC4_40_MD5 uint16 = 0x0017 TLS_DH_ANON_WITH_RC4_128_MD5 uint16 = 0x0018 TLS_DH_ANON_EXPORT_WITH_DES40_CBC_SHA uint16 = 0x0019 TLS_DH_ANON_WITH_DES_CBC_SHA uint16 = 0x001A TLS_DH_ANON_WITH_3DES_EDE_CBC_SHA uint16 = 0x001B SSL_FORTEZZA_KEA_WITH_NULL_SHA uint16 = 0x001C SSL_FORTEZZA_KEA_WITH_FORTEZZA_CBC_SHA uint16 = 0x001D TLS_KRB5_WITH_DES_CBC_SHA uint16 = 0x001E TLS_KRB5_WITH_3DES_EDE_CBC_SHA uint16 = 0x001F TLS_KRB5_WITH_RC4_128_SHA uint16 = 0x0020 TLS_KRB5_WITH_IDEA_CBC_SHA uint16 = 0x0021 TLS_KRB5_WITH_DES_CBC_MD5 uint16 = 0x0022 TLS_KRB5_WITH_3DES_EDE_CBC_MD5 uint16 = 0x0023 TLS_KRB5_WITH_RC4_128_MD5 uint16 = 0x0024 TLS_KRB5_WITH_IDEA_CBC_MD5 uint16 = 0x0025 TLS_KRB5_EXPORT_WITH_DES_CBC_40_SHA uint16 = 0x0026 TLS_KRB5_EXPORT_WITH_RC2_CBC_40_SHA uint16 = 0x0027 TLS_KRB5_EXPORT_WITH_RC4_40_SHA uint16 = 0x0028 TLS_KRB5_EXPORT_WITH_DES_CBC_40_MD5 uint16 = 0x0029 TLS_KRB5_EXPORT_WITH_RC2_CBC_40_MD5 uint16 = 0x002A TLS_KRB5_EXPORT_WITH_RC4_40_MD5 uint16 = 0x002B TLS_PSK_WITH_NULL_SHA uint16 = 0x002C TLS_DHE_PSK_WITH_NULL_SHA uint16 = 0x002D TLS_RSA_PSK_WITH_NULL_SHA uint16 = 0x002E TLS_RSA_WITH_AES_128_CBC_SHA uint16 = 0x002F TLS_DH_DSS_WITH_AES_128_CBC_SHA uint16 = 0x0030 TLS_DH_RSA_WITH_AES_128_CBC_SHA uint16 = 0x0031 TLS_DHE_DSS_WITH_AES_128_CBC_SHA uint16 = 0x0032 TLS_DHE_RSA_WITH_AES_128_CBC_SHA uint16 = 0x0033 TLS_DH_ANON_WITH_AES_128_CBC_SHA uint16 = 0x0034 TLS_RSA_WITH_AES_256_CBC_SHA uint16 = 0x0035 TLS_DH_DSS_WITH_AES_256_CBC_SHA uint16 = 0x0036 TLS_DH_RSA_WITH_AES_256_CBC_SHA uint16 = 0x0037 TLS_DHE_DSS_WITH_AES_256_CBC_SHA uint16 = 0x0038 TLS_DHE_RSA_WITH_AES_256_CBC_SHA uint16 = 0x0039 TLS_DH_ANON_WITH_AES_256_CBC_SHA uint16 = 0x003A TLS_RSA_WITH_NULL_SHA256 uint16 = 0x003B TLS_RSA_WITH_AES_128_CBC_SHA256 uint16 = 0x003C TLS_RSA_WITH_AES_256_CBC_SHA256 uint16 = 0x003D TLS_DH_DSS_WITH_AES_128_CBC_SHA256 uint16 = 0x003E TLS_DH_RSA_WITH_AES_128_CBC_SHA256 uint16 = 0x003F TLS_DHE_DSS_WITH_AES_128_CBC_SHA256 uint16 = 0x0040 TLS_RSA_WITH_CAMELLIA_128_CBC_SHA uint16 = 0x0041 TLS_DH_DSS_WITH_CAMELLIA_128_CBC_SHA uint16 = 0x0042 TLS_DH_RSA_WITH_CAMELLIA_128_CBC_SHA uint16 = 0x0043 TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA uint16 = 0x0044 TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA uint16 = 0x0045 TLS_DH_ANON_WITH_CAMELLIA_128_CBC_SHA uint16 = 0x0046 TLS_RSA_EXPORT1024_WITH_RC4_56_MD5 uint16 = 0x0060 TLS_RSA_EXPORT1024_WITH_RC2_CBC_56_MD5 uint16 = 0x0061 TLS_RSA_EXPORT1024_WITH_DES_CBC_SHA uint16 = 0x0062 TLS_DHE_DSS_EXPORT1024_WITH_DES_CBC_SHA uint16 = 0x0063 TLS_RSA_EXPORT1024_WITH_RC4_56_SHA uint16 = 0x0064 TLS_DHE_DSS_EXPORT1024_WITH_RC4_56_SHA uint16 = 0x0065 TLS_DHE_DSS_WITH_RC4_128_SHA uint16 = 0x0066 TLS_DHE_RSA_WITH_AES_128_CBC_SHA256 uint16 = 0x0067 TLS_DH_DSS_WITH_AES_256_CBC_SHA256 uint16 = 0x0068 TLS_DH_RSA_WITH_AES_256_CBC_SHA256 uint16 = 0x0069 TLS_DHE_DSS_WITH_AES_256_CBC_SHA256 uint16 = 0x006A TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 uint16 = 0x006B TLS_DH_ANON_WITH_AES_128_CBC_SHA256 uint16 = 0x006C TLS_DH_ANON_WITH_AES_256_CBC_SHA256 uint16 = 0x006D TLS_GOSTR341094_WITH_28147_CNT_IMIT uint16 = 0x0080 TLS_GOSTR341001_WITH_28147_CNT_IMIT uint16 = 0x0081 TLS_GOSTR341094_WITH_NULL_GOSTR3411 uint16 = 0x0082 TLS_GOSTR341001_WITH_NULL_GOSTR3411 uint16 = 0x0083 TLS_RSA_WITH_CAMELLIA_256_CBC_SHA uint16 = 0x0084 TLS_DH_DSS_WITH_CAMELLIA_256_CBC_SHA uint16 = 0x0085 TLS_DH_RSA_WITH_CAMELLIA_256_CBC_SHA uint16 = 0x0086 TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA uint16 = 0x0087 TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA uint16 = 0x0088 TLS_DH_ANON_WITH_CAMELLIA_256_CBC_SHA uint16 = 0x0089 TLS_PSK_WITH_RC4_128_SHA uint16 = 0x008A TLS_PSK_WITH_3DES_EDE_CBC_SHA uint16 = 0x008B TLS_PSK_WITH_AES_128_CBC_SHA uint16 = 0x008C TLS_PSK_WITH_AES_256_CBC_SHA uint16 = 0x008D TLS_DHE_PSK_WITH_RC4_128_SHA uint16 = 0x008E TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA uint16 = 0x008F TLS_DHE_PSK_WITH_AES_128_CBC_SHA uint16 = 0x0090 TLS_DHE_PSK_WITH_AES_256_CBC_SHA uint16 = 0x0091 TLS_RSA_PSK_WITH_RC4_128_SHA uint16 = 0x0092 TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA uint16 = 0x0093 TLS_RSA_PSK_WITH_AES_128_CBC_SHA uint16 = 0x0094 TLS_RSA_PSK_WITH_AES_256_CBC_SHA uint16 = 0x0095 TLS_RSA_WITH_SEED_CBC_SHA uint16 = 0x0096 TLS_DH_DSS_WITH_SEED_CBC_SHA uint16 = 0x0097 TLS_DH_RSA_WITH_SEED_CBC_SHA uint16 = 0x0098 TLS_DHE_DSS_WITH_SEED_CBC_SHA uint16 = 0x0099 TLS_DHE_RSA_WITH_SEED_CBC_SHA uint16 = 0x009A TLS_DH_ANON_WITH_SEED_CBC_SHA uint16 = 0x009B TLS_RSA_WITH_AES_128_GCM_SHA256 uint16 = 0x009C TLS_RSA_WITH_AES_256_GCM_SHA384 uint16 = 0x009D TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 uint16 = 0x009E TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 uint16 = 0x009F TLS_DH_RSA_WITH_AES_128_GCM_SHA256 uint16 = 0x00A0 TLS_DH_RSA_WITH_AES_256_GCM_SHA384 uint16 = 0x00A1 TLS_DHE_DSS_WITH_AES_128_GCM_SHA256 uint16 = 0x00A2 TLS_DHE_DSS_WITH_AES_256_GCM_SHA384 uint16 = 0x00A3 TLS_DH_DSS_WITH_AES_128_GCM_SHA256 uint16 = 0x00A4 TLS_DH_DSS_WITH_AES_256_GCM_SHA384 uint16 = 0x00A5 TLS_DH_ANON_WITH_AES_128_GCM_SHA256 uint16 = 0x00A6 TLS_DH_ANON_WITH_AES_256_GCM_SHA384 uint16 = 0x00A7 TLS_PSK_WITH_AES_128_GCM_SHA256 uint16 = 0x00A8 TLS_PSK_WITH_AES_256_GCM_SHA384 uint16 = 0x00A9 TLS_DHE_PSK_WITH_AES_128_GCM_SHA256 uint16 = 0x00AA TLS_DHE_PSK_WITH_AES_256_GCM_SHA384 uint16 = 0x00AB TLS_RSA_PSK_WITH_AES_128_GCM_SHA256 uint16 = 0x00AC TLS_RSA_PSK_WITH_AES_256_GCM_SHA384 uint16 = 0x00AD TLS_PSK_WITH_AES_128_CBC_SHA256 uint16 = 0x00AE TLS_PSK_WITH_AES_256_CBC_SHA384 uint16 = 0x00AF TLS_PSK_WITH_NULL_SHA256 uint16 = 0x00B0 TLS_PSK_WITH_NULL_SHA384 uint16 = 0x00B1 TLS_DHE_PSK_WITH_AES_128_CBC_SHA256 uint16 = 0x00B2 TLS_DHE_PSK_WITH_AES_256_CBC_SHA384 uint16 = 0x00B3 TLS_DHE_PSK_WITH_NULL_SHA256 uint16 = 0x00B4 TLS_DHE_PSK_WITH_NULL_SHA384 uint16 = 0x00B5 TLS_RSA_PSK_WITH_AES_128_CBC_SHA256 uint16 = 0x00B6 TLS_RSA_PSK_WITH_AES_256_CBC_SHA384 uint16 = 0x00B7 TLS_RSA_PSK_WITH_NULL_SHA256 uint16 = 0x00B8 TLS_RSA_PSK_WITH_NULL_SHA384 uint16 = 0x00B9 TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256 uint16 = 0x00BA TLS_DH_DSS_WITH_CAMELLIA_128_CBC_SHA256 uint16 = 0x00BB TLS_DH_RSA_WITH_CAMELLIA_128_CBC_SHA256 uint16 = 0x00BC TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA256 uint16 = 0x00BD TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 uint16 = 0x00BE TLS_DH_ANON_WITH_CAMELLIA_128_CBC_SHA256 uint16 = 0x00BF TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256 uint16 = 0x00C0 TLS_DH_DSS_WITH_CAMELLIA_256_CBC_SHA256 uint16 = 0x00C1 TLS_DH_RSA_WITH_CAMELLIA_256_CBC_SHA256 uint16 = 0x00C2 TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA256 uint16 = 0x00C3 TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256 uint16 = 0x00C4 TLS_DH_ANON_WITH_CAMELLIA_256_CBC_SHA256 uint16 = 0x00C5 TLS_RENEGO_PROTECTION_REQUEST uint16 = 0x00FF TLS_ECDH_ECDSA_WITH_NULL_SHA uint16 = 0xC001 TLS_ECDH_ECDSA_WITH_RC4_128_SHA uint16 = 0xC002 TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA uint16 = 0xC003 TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA uint16 = 0xC004 TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA uint16 = 0xC005 TLS_ECDHE_ECDSA_WITH_NULL_SHA uint16 = 0xC006 TLS_ECDHE_ECDSA_WITH_RC4_128_SHA uint16 = 0xC007 TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA uint16 = 0xC008 TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA uint16 = 0xC009 TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA uint16 = 0xC00A TLS_ECDH_RSA_WITH_NULL_SHA uint16 = 0xC00B TLS_ECDH_RSA_WITH_RC4_128_SHA uint16 = 0xC00C TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA uint16 = 0xC00D TLS_ECDH_RSA_WITH_AES_128_CBC_SHA uint16 = 0xC00E TLS_ECDH_RSA_WITH_AES_256_CBC_SHA uint16 = 0xC00F TLS_ECDHE_RSA_WITH_NULL_SHA uint16 = 0xC010 TLS_ECDHE_RSA_WITH_RC4_128_SHA uint16 = 0xC011 TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA uint16 = 0xC012 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA uint16 = 0xC013 TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA uint16 = 0xC014 TLS_ECDH_ANON_WITH_NULL_SHA uint16 = 0xC015 TLS_ECDH_ANON_WITH_RC4_128_SHA uint16 = 0xC016 TLS_ECDH_ANON_WITH_3DES_EDE_CBC_SHA uint16 = 0xC017 TLS_ECDH_ANON_WITH_AES_128_CBC_SHA uint16 = 0xC018 TLS_ECDH_ANON_WITH_AES_256_CBC_SHA uint16 = 0xC019 TLS_SRP_SHA_WITH_3DES_EDE_CBC_SHA uint16 = 0xC01A TLS_SRP_SHA_RSA_WITH_3DES_EDE_CBC_SHA uint16 = 0xC01B TLS_SRP_SHA_DSS_WITH_3DES_EDE_CBC_SHA uint16 = 0xC01C TLS_SRP_SHA_WITH_AES_128_CBC_SHA uint16 = 0xC01D TLS_SRP_SHA_RSA_WITH_AES_128_CBC_SHA uint16 = 0xC01E TLS_SRP_SHA_DSS_WITH_AES_128_CBC_SHA uint16 = 0xC01F TLS_SRP_SHA_WITH_AES_256_CBC_SHA uint16 = 0xC020 TLS_SRP_SHA_RSA_WITH_AES_256_CBC_SHA uint16 = 0xC021 TLS_SRP_SHA_DSS_WITH_AES_256_CBC_SHA uint16 = 0xC022 TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 uint16 = 0xC023 TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 uint16 = 0xC024 TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256 uint16 = 0xC025 TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384 uint16 = 0xC026 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 uint16 = 0xC027 TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 uint16 = 0xC028 TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256 uint16 = 0xC029 TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384 uint16 = 0xC02A TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 uint16 = 0xC02B TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 uint16 = 0xC02C TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256 uint16 = 0xC02D TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384 uint16 = 0xC02E TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 uint16 = 0xC02F TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 uint16 = 0xC030 TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256 uint16 = 0xC031 TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384 uint16 = 0xC032 TLS_ECDHE_PSK_WITH_RC4_128_SHA uint16 = 0xC033 TLS_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA uint16 = 0xC034 TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA uint16 = 0xC035 TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA uint16 = 0xC036 TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA256 uint16 = 0xC037 TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA384 uint16 = 0xC038 TLS_ECDHE_PSK_WITH_NULL_SHA uint16 = 0xC039 TLS_ECDHE_PSK_WITH_NULL_SHA256 uint16 = 0xC03A TLS_ECDHE_PSK_WITH_NULL_SHA384 uint16 = 0xC03B TLS_RSA_WITH_ARIA_128_CBC_SHA256 uint16 = 0xC03C TLS_RSA_WITH_ARIA_256_CBC_SHA384 uint16 = 0xC03D TLS_DH_DSS_WITH_ARIA_128_CBC_SHA256 uint16 = 0xC03E TLS_DH_DSS_WITH_ARIA_256_CBC_SHA384 uint16 = 0xC03F TLS_DH_RSA_WITH_ARIA_128_CBC_SHA256 uint16 = 0xC040 TLS_DH_RSA_WITH_ARIA_256_CBC_SHA384 uint16 = 0xC041 TLS_DHE_DSS_WITH_ARIA_128_CBC_SHA256 uint16 = 0xC042 TLS_DHE_DSS_WITH_ARIA_256_CBC_SHA384 uint16 = 0xC043 TLS_DHE_RSA_WITH_ARIA_128_CBC_SHA256 uint16 = 0xC044 TLS_DHE_RSA_WITH_ARIA_256_CBC_SHA384 uint16 = 0xC045 TLS_DH_ANON_WITH_ARIA_128_CBC_SHA256 uint16 = 0xC046 TLS_DH_ANON_WITH_ARIA_256_CBC_SHA384 uint16 = 0xC047 TLS_ECDHE_ECDSA_WITH_ARIA_128_CBC_SHA256 uint16 = 0xC048 TLS_ECDHE_ECDSA_WITH_ARIA_256_CBC_SHA384 uint16 = 0xC049 TLS_ECDH_ECDSA_WITH_ARIA_128_CBC_SHA256 uint16 = 0xC04A TLS_ECDH_ECDSA_WITH_ARIA_256_CBC_SHA384 uint16 = 0xC04B TLS_ECDHE_RSA_WITH_ARIA_128_CBC_SHA256 uint16 = 0xC04C TLS_ECDHE_RSA_WITH_ARIA_256_CBC_SHA384 uint16 = 0xC04D TLS_ECDH_RSA_WITH_ARIA_128_CBC_SHA256 uint16 = 0xC04E TLS_ECDH_RSA_WITH_ARIA_256_CBC_SHA384 uint16 = 0xC04F TLS_RSA_WITH_ARIA_128_GCM_SHA256 uint16 = 0xC050 TLS_RSA_WITH_ARIA_256_GCM_SHA384 uint16 = 0xC051 TLS_DHE_RSA_WITH_ARIA_128_GCM_SHA256 uint16 = 0xC052 TLS_DHE_RSA_WITH_ARIA_256_GCM_SHA384 uint16 = 0xC053 TLS_DH_RSA_WITH_ARIA_128_GCM_SHA256 uint16 = 0xC054 TLS_DH_RSA_WITH_ARIA_256_GCM_SHA384 uint16 = 0xC055 TLS_DHE_DSS_WITH_ARIA_128_GCM_SHA256 uint16 = 0xC056 TLS_DHE_DSS_WITH_ARIA_256_GCM_SHA384 uint16 = 0xC057 TLS_DH_DSS_WITH_ARIA_128_GCM_SHA256 uint16 = 0xC058 TLS_DH_DSS_WITH_ARIA_256_GCM_SHA384 uint16 = 0xC059 TLS_DH_ANON_WITH_ARIA_128_GCM_SHA256 uint16 = 0xC05A TLS_DH_ANON_WITH_ARIA_256_GCM_SHA384 uint16 = 0xC05B TLS_ECDHE_ECDSA_WITH_ARIA_128_GCM_SHA256 uint16 = 0xC05C TLS_ECDHE_ECDSA_WITH_ARIA_256_GCM_SHA384 uint16 = 0xC05D TLS_ECDH_ECDSA_WITH_ARIA_128_GCM_SHA256 uint16 = 0xC05E TLS_ECDH_ECDSA_WITH_ARIA_256_GCM_SHA384 uint16 = 0xC05F TLS_ECDHE_RSA_WITH_ARIA_128_GCM_SHA256 uint16 = 0xC060 TLS_ECDHE_RSA_WITH_ARIA_256_GCM_SHA384 uint16 = 0xC061 TLS_ECDH_RSA_WITH_ARIA_128_GCM_SHA256 uint16 = 0xC062 TLS_ECDH_RSA_WITH_ARIA_256_GCM_SHA384 uint16 = 0xC063 TLS_PSK_WITH_ARIA_128_CBC_SHA256 uint16 = 0xC064 TLS_PSK_WITH_ARIA_256_CBC_SHA384 uint16 = 0xC065 TLS_DHE_PSK_WITH_ARIA_128_CBC_SHA256 uint16 = 0xC066 TLS_DHE_PSK_WITH_ARIA_256_CBC_SHA384 uint16 = 0xC067 TLS_RSA_PSK_WITH_ARIA_128_CBC_SHA256 uint16 = 0xC068 TLS_RSA_PSK_WITH_ARIA_256_CBC_SHA384 uint16 = 0xC069 TLS_PSK_WITH_ARIA_128_GCM_SHA256 uint16 = 0xC06A TLS_PSK_WITH_ARIA_256_GCM_SHA384 uint16 = 0xC06B TLS_DHE_PSK_WITH_ARIA_128_GCM_SHA256 uint16 = 0xC06C TLS_DHE_PSK_WITH_ARIA_256_GCM_SHA384 uint16 = 0xC06D TLS_RSA_PSK_WITH_ARIA_128_GCM_SHA256 uint16 = 0xC06E TLS_RSA_PSK_WITH_ARIA_256_GCM_SHA384 uint16 = 0xC06F TLS_ECDHE_PSK_WITH_ARIA_128_CBC_SHA256 uint16 = 0xC070 TLS_ECDHE_PSK_WITH_ARIA_256_CBC_SHA384 uint16 = 0xC071 TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 uint16 = 0xC072 TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 uint16 = 0xC073 TLS_ECDH_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 uint16 = 0xC074 TLS_ECDH_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 uint16 = 0xC075 TLS_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 uint16 = 0xC076 TLS_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384 uint16 = 0xC077 TLS_ECDH_RSA_WITH_CAMELLIA_128_CBC_SHA256 uint16 = 0xC078 TLS_ECDH_RSA_WITH_CAMELLIA_256_CBC_SHA384 uint16 = 0xC079 TLS_RSA_WITH_CAMELLIA_128_GCM_SHA256 uint16 = 0xC07A TLS_RSA_WITH_CAMELLIA_256_GCM_SHA384 uint16 = 0xC07B TLS_DHE_RSA_WITH_CAMELLIA_128_GCM_SHA256 uint16 = 0xC07C TLS_DHE_RSA_WITH_CAMELLIA_256_GCM_SHA384 uint16 = 0xC07D TLS_DH_RSA_WITH_CAMELLIA_128_GCM_SHA256 uint16 = 0xC07E TLS_DH_RSA_WITH_CAMELLIA_256_GCM_SHA384 uint16 = 0xC07F TLS_DHE_DSS_WITH_CAMELLIA_128_GCM_SHA256 uint16 = 0xC080 TLS_DHE_DSS_WITH_CAMELLIA_256_GCM_SHA384 uint16 = 0xC081 TLS_DH_DSS_WITH_CAMELLIA_128_GCM_SHA256 uint16 = 0xC082 TLS_DH_DSS_WITH_CAMELLIA_256_GCM_SHA384 uint16 = 0xC083 TLS_DH_ANON_WITH_CAMELLIA_128_GCM_SHA256 uint16 = 0xC084 TLS_DH_ANON_WITH_CAMELLIA_256_GCM_SHA384 uint16 = 0xC085 TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_GCM_SHA256 uint16 = 0xC086 TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384 uint16 = 0xC087 TLS_ECDH_ECDSA_WITH_CAMELLIA_128_GCM_SHA256 uint16 = 0xC088 TLS_ECDH_ECDSA_WITH_CAMELLIA_256_GCM_SHA384 uint16 = 0xC089 TLS_ECDHE_RSA_WITH_CAMELLIA_128_GCM_SHA256 uint16 = 0xC08A TLS_ECDHE_RSA_WITH_CAMELLIA_256_GCM_SHA384 uint16 = 0xC08B TLS_ECDH_RSA_WITH_CAMELLIA_128_GCM_SHA256 uint16 = 0xC08C TLS_ECDH_RSA_WITH_CAMELLIA_256_GCM_SHA384 uint16 = 0xC08D TLS_PSK_WITH_CAMELLIA_128_GCM_SHA256 uint16 = 0xC08E TLS_PSK_WITH_CAMELLIA_256_GCM_SHA384 uint16 = 0xC08F TLS_DHE_PSK_WITH_CAMELLIA_128_GCM_SHA256 uint16 = 0xC090 TLS_DHE_PSK_WITH_CAMELLIA_256_GCM_SHA384 uint16 = 0xC091 TLS_RSA_PSK_WITH_CAMELLIA_128_GCM_SHA256 uint16 = 0xC092 TLS_RSA_PSK_WITH_CAMELLIA_256_GCM_SHA384 uint16 = 0xC093 TLS_PSK_WITH_CAMELLIA_128_CBC_SHA256 uint16 = 0xC094 TLS_PSK_WITH_CAMELLIA_256_CBC_SHA384 uint16 = 0xC095 TLS_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 uint16 = 0xC096 TLS_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 uint16 = 0xC097 TLS_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256 uint16 = 0xC098 TLS_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384 uint16 = 0xC099 TLS_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 uint16 = 0xC09A TLS_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 uint16 = 0xC09B TLS_RSA_WITH_AES_128_CCM uint16 = 0xC09C TLS_RSA_WITH_AES_256_CCM uint16 = 0xC09D TLS_DHE_RSA_WITH_AES_128_CCM uint16 = 0xC09E TLS_DHE_RSA_WITH_AES_256_CCM uint16 = 0xC09F TLS_RSA_WITH_AES_128_CCM_8 uint16 = 0xC0A0 TLS_RSA_WITH_AES_256_CCM_8 uint16 = 0xC0A1 TLS_DHE_RSA_WITH_AES_128_CCM_8 uint16 = 0xC0A2 TLS_DHE_RSA_WITH_AES_256_CCM_8 uint16 = 0xC0A3 TLS_PSK_WITH_AES_128_CCM uint16 = 0xC0A4 TLS_PSK_WITH_AES_256_CCM uint16 = 0xC0A5 TLS_DHE_PSK_WITH_AES_128_CCM uint16 = 0xC0A6 TLS_DHE_PSK_WITH_AES_256_CCM uint16 = 0xC0A7 TLS_PSK_WITH_AES_128_CCM_8 uint16 = 0xC0A8 TLS_PSK_WITH_AES_256_CCM_8 uint16 = 0xC0A9 TLS_PSK_DHE_WITH_AES_128_CCM_8 uint16 = 0xC0AA TLS_PSK_DHE_WITH_AES_256_CCM_8 uint16 = 0xC0AB TLS_ECDHE_ECDSA_WITH_AES_128_CCM uint16 = 0xC0AC TLS_ECDHE_ECDSA_WITH_AES_256_CCM uint16 = 0xC0AD TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8 uint16 = 0xC0AE TLS_ECDHE_ECDSA_WITH_AES_256_CCM_8 uint16 = 0xC0AF TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 uint16 = 0xCCA8 TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256 uint16 = 0xCCA9 TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256 uint16 = 0xCCAA TLS_ECDHE_PSK_WITH_AES_128_GCM_SHA256 uint16 = 0xD001 TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256_OLD uint16 = 0xCC13 TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256_OLD uint16 = 0xCC14 TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256_OLD uint16 = 0xCC15 TLS_AES_128_GCM_SHA256 uint16 = 0x1301 TLS_AES_256_GCM_SHA384 uint16 = 0x1302 TLS_CHACHA20_POLY1305_SHA256 uint16 = 0x1303 TLS_FALLBACK_SCSV uint16 = 0x5600 TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 = TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305 = TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256 )
const ( VersionTLS10 = 0x0301 VersionTLS11 = 0x0302 VersionTLS12 = 0x0303 VersionTLS13 = 0x0304 VersionSSL30 = 0x0300 VersionSSL20 = 0x0002 // there we go again )
Variables ¶
var AlertText = map[Alert]string{ AlertCloseNotify: "close notify", AlertUnexpectedMessage: "unexpected message", AlertBadRecordMAC: "bad record MAC", AlertDecryptionFailed: "decryption failed", AlertRecordOverflow: "record overflow", AlertDecompressionFailure: "decompression failure", AlertHandshakeFailure: "handshake failure", AlertBadCertificate: "bad certificate", AlertUnsupportedCertificate: "unsupported certificate", AlertCertificateRevoked: "revoked certificate", AlertCertificateExpired: "expired certificate", AlertCertificateUnknown: "unknown certificate", AlertIllegalParameter: "illegal parameter", AlertUnknownCA: "unknown certificate authority", AlertAccessDenied: "access denied", AlertDecodeError: "error decoding message", AlertDecryptError: "error decrypting message", AlertExportRestriction: "export restriction", AlertProtocolVersion: "protocol version not supported", AlertInsufficientSecurity: "insufficient security level", AlertInternalError: "internal error", AlertInappropriateFallback: "inappropriate fallback", AlertUserCanceled: "user canceled", AlertNoRenegotiation: "no renegotiation", AlertMissingExtension: "missing extension", AlertUnsupportedExtension: "unsupported extension", AlertCertificateUnobtainable: "certificate unobtainable", AlertUnrecognizedName: "unrecognized name", AlertBadCertificateStatusResponse: "bad certificate status response", AlertBadCertificateHashValue: "bad certificate hash value", AlertUnknownPSKIdentity: "unknown PSK identity", AlertCertificateRequired: "certificate required", AlertNoApplicationProtocol: "no application protocol", }
var ErrExpected = errors.New("rxds: expected early exit")
Functions ¶
func CipherSuiteName ¶
Types ¶
type Alert ¶
type Alert uint8
const ( AlertCloseNotify Alert = 0 AlertUnexpectedMessage Alert = 10 AlertBadRecordMAC Alert = 20 AlertDecryptionFailed Alert = 21 AlertRecordOverflow Alert = 22 AlertDecompressionFailure Alert = 30 AlertHandshakeFailure Alert = 40 AlertBadCertificate Alert = 42 AlertUnsupportedCertificate Alert = 43 AlertCertificateRevoked Alert = 44 AlertCertificateExpired Alert = 45 AlertCertificateUnknown Alert = 46 AlertIllegalParameter Alert = 47 AlertUnknownCA Alert = 48 AlertAccessDenied Alert = 49 AlertDecodeError Alert = 50 AlertDecryptError Alert = 51 AlertExportRestriction Alert = 60 AlertProtocolVersion Alert = 70 AlertInsufficientSecurity Alert = 71 AlertInternalError Alert = 80 AlertInappropriateFallback Alert = 86 AlertUserCanceled Alert = 90 AlertNoRenegotiation Alert = 100 AlertMissingExtension Alert = 109 AlertUnsupportedExtension Alert = 110 AlertCertificateUnobtainable Alert = 111 AlertUnrecognizedName Alert = 112 AlertBadCertificateStatusResponse Alert = 113 AlertBadCertificateHashValue Alert = 114 AlertUnknownPSKIdentity Alert = 115 AlertCertificateRequired Alert = 116 AlertNoApplicationProtocol Alert = 120 )
type Certificate ¶
type Certificate struct {
Certificate [][]byte `json:"certificate_chain,omitempty"`
PrivateKey crypto.PrivateKey `json:"-"`
SupportedSignatureAlgorithms []SignatureScheme `json:"supported_sig_algos,omitempty"`
OCSPStaple []byte `json:"ocsp_staple,omitempty"`
SignedCertificateTimestamps [][]byte `json:"signed_cert_timestamps,omitempty"`
Leaf *x509.Certificate `json:"leaf,omitempty"`
}
type CertificateChain ¶
type CertificateChain []*x509.Certificate
type CertificateRequestInfo ¶
type CertificateRequestInfo struct {
AcceptableCAs [][]byte
SignatureSchemes []SignatureScheme
Version uint16
}
type CipherSuite ¶
func CipherSuites ¶
func CipherSuites() []*CipherSuite
func InsecureCipherSuites ¶
func InsecureCipherSuites() []*CipherSuite
type ClientHelloInfo ¶
type ClientSessionCache ¶
type ClientSessionCache interface {
Get(sessionKey string) (session *ClientSessionState, ok bool)
Put(sessionKey string, cs *ClientSessionState)
}
func NewLRUClientSessionCache ¶
func NewLRUClientSessionCache(capacity int) ClientSessionCache
type ClientSessionState ¶
type ClientSessionState struct {
// contains filtered or unexported fields
}
type Config ¶
type Config struct {
Rand io.Reader
Time func() time.Time
Certificates []Certificate
NameToCertificate map[string]*Certificate
GetCertificate func(*ClientHelloInfo) (*Certificate, error)
GetClientCertificate func(*CertificateRequestInfo) (*Certificate, error)
GetConfigForClient func(*ClientHelloInfo) (*Config, error)
VerifyPeerCertificate func(rawCerts [][]byte, verifiedChains []CertificateChain) error
VerifyConnection func(ConnectionState) error
RootCAs *x509.CertPool
NextProtos []string
ServerName string
ClientAuth int
ClientCAs *x509.CertPool
InsecureSkipVerify bool
CipherSuites []uint16
PreferServerCipherSuites bool
SessionTicketsDisabled bool
SessionTicketKey [32]byte
ClientSessionCache ClientSessionCache
MinVersion uint16
MaxVersion uint16
CurvePreferences []CurveID
ExplicitCurvePreferences bool
SupportedPoints []uint8
NoOcspStapling bool
CompressionMethods []uint8
SignatureAndHashes []SigAndHash
ForceSuites bool
ExportRSAKey *rsa.PrivateKey
HeartbeatEnabled bool
ClientDSAEnabled bool
ExtendedRandom bool
ForceSessionTicketExt bool
ExtendedMasterSecret bool
SignedCertificateTimestampExt bool
ClientRandom []byte
ServerRandom []byte
ExternalClientHello []byte
CertsOnly bool
DontBufferHandshakes bool
DynamicRecordSizingDisabled bool
Renegotiation RenegotiationSupport
KeyLogWriter io.Writer
SSLv2ClientHello bool
// contains filtered or unexported fields
}
func (*Config) WarmHelloTemplate ¶
func (c *Config) WarmHelloTemplate()
WarmHelloTemplate pre-builds the ClientHello template so clones of this Config inherit the cached wire bytes. Safe to call concurrently.
type Conn ¶
type Conn struct {
// contains filtered or unexported fields
}
func Client ¶
Client returns a new TLS client side connection using conn as the underlying transport. The config cannot be nil: users must set either ServerName or InsecureSkipVerify in the config.
func Dial ¶
Dial connects to the given network address using net.Dial and then initiates a TLS handshake, returning the resulting TLS connection.
func DialWithDialer ¶
DialWithDialer connects to the given network address using dialer.Dial and then initiates a TLS handshake, returning the resulting TLS connection. Any timeout or deadline given in the dialer apply to connection and TLS handshake as a whole.
DialWithDialer interprets a nil configuration as equivalent to the zero configuration; see the documentation of Config for the defaults.
func (*Conn) CloseWrite ¶
func (*Conn) ConnectionState ¶
func (c *Conn) ConnectionState() ConnectionState
func (*Conn) OCSPResponse ¶
func (*Conn) RemoteAddr ¶
func (*Conn) VerifyHostname ¶
type ConnectionState ¶
type ConnectionState struct {
Version uint16
HandshakeComplete bool
DidResume bool
CipherSuite uint16
NegotiatedProtocol string
NegotiatedProtocolIsMutual bool
ServerName string
PeerCertificates []*x509.Certificate
VerifiedChains []CertificateChain
SignedCertificateTimestamps [][]byte
OCSPResponse []byte
TLSUnique []byte
HandshakeLog *HandshakeLog
// contains filtered or unexported fields
}
func (*ConnectionState) ExportKeyingMaterial ¶
type HandshakeLog ¶
type HandshakeLog struct {
ClientHelloRaw []byte `json:"client_hello_raw,omitempty"`
ServerHelloRaw []byte `json:"server_hello_raw,omitempty"`
ServerVersion uint16 `json:"server_version,omitempty"`
ServerRandom []byte `json:"server_random,omitempty"`
ServerCipher uint16 `json:"server_cipher,omitempty"`
}
HandshakeLog captures structured handshake metadata for scan analysis. Populated only when Config.CertsOnly is true and the handshake reaches the relevant messages. Inspired by zcrypto-style transcript logging.
type PointFormat ¶
type PointFormat uint8
func (*PointFormat) String ¶
func (pFormat *PointFormat) String() string
type RecordHeaderError ¶
func (RecordHeaderError) Error ¶
func (e RecordHeaderError) Error() string
type RenegotiationSupport ¶
type RenegotiationSupport int
const ( RenegotiateNever RenegotiationSupport = iota RenegotiateOnceAsClient RenegotiateFreelyAsClient )
type SigAndHash ¶
type SigAndHash struct {
Signature, Hash uint8
}
type SignatureScheme ¶
type SignatureScheme uint16
SignatureScheme identifies a signature algorithm supported by TLS.
const ( PKCS1WithSHA256 SignatureScheme = 0x0401 PKCS1WithSHA384 SignatureScheme = 0x0501 PKCS1WithSHA512 SignatureScheme = 0x0601 PSSWithSHA256 SignatureScheme = 0x0804 PSSWithSHA384 SignatureScheme = 0x0805 PSSWithSHA512 SignatureScheme = 0x0806 ECDSAWithP256AndSHA256 SignatureScheme = 0x0403 ECDSAWithP384AndSHA384 SignatureScheme = 0x0503 ECDSAWithP521AndSHA512 SignatureScheme = 0x0603 Ed25519 SignatureScheme = 0x0807 EdDSAWithEd25519 SignatureScheme = 0x0807 EdDSAWithEd448 SignatureScheme = 0x0808 PKCS1WithSHA1 SignatureScheme = 0x0201 ECDSAWithSHA1 SignatureScheme = 0x0203 )