tls

package
v0.1.1 Latest Latest
Warning

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

Go to latest
Published: Apr 8, 2026 License: MPL-2.0 Imports: 40 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// alert level
	AlertLevelWarning = 1
	AlertLevelError   = 2
)
View Source
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
)
View Source
const (
	VersionTLS10 = 0x0301
	VersionTLS11 = 0x0302
	VersionTLS12 = 0x0303
	VersionTLS13 = 0x0304

	VersionSSL30 = 0x0300
	VersionSSL20 = 0x0002 // there we go again
)

Variables

View Source
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",
}
View Source
var ErrExpected = errors.New("rxds: expected early exit")

Functions

func CipherSuiteName

func CipherSuiteName(id uint16) string

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
)

func (Alert) Error

func (e Alert) Error() string

func (Alert) String

func (e Alert) String() string

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

type CipherSuite struct {
	ID                uint16
	Name              string
	SupportedVersions []uint16
	Insecure          bool
}

func CipherSuites

func CipherSuites() []*CipherSuite

func InsecureCipherSuites

func InsecureCipherSuites() []*CipherSuite

type ClientHelloInfo

type ClientHelloInfo struct {
	CipherSuites      []uint16
	ServerName        string
	SupportedCurves   []CurveID
	SupportedPoints   []uint8
	SignatureSchemes  []SignatureScheme
	SupportedProtos   []string
	SupportedVersions []uint16
	Conn              net.Conn
	// contains filtered or unexported fields
}

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) Clone

func (c *Config) Clone() *Config

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

func Client(conn net.Conn, config *Config) *Conn

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

func Dial(network, addr string, config *Config) (*Conn, error)

Dial connects to the given network address using net.Dial and then initiates a TLS handshake, returning the resulting TLS connection.

func DialWithDialer

func DialWithDialer(dialer *net.Dialer, network, addr string, config *Config) (*Conn, error)

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) Close

func (c *Conn) Close() error

func (*Conn) CloseWrite

func (c *Conn) CloseWrite() error

func (*Conn) Config

func (c *Conn) Config() *Config

func (*Conn) ConnectionState

func (c *Conn) ConnectionState() ConnectionState

func (*Conn) Handshake

func (c *Conn) Handshake() error

func (*Conn) HandshakeContext

func (c *Conn) HandshakeContext(ctx context.Context) error

func (*Conn) LocalAddr

func (c *Conn) LocalAddr() net.Addr

func (*Conn) NetConn

func (c *Conn) NetConn() net.Conn

func (*Conn) OCSPResponse

func (c *Conn) OCSPResponse() []byte

func (*Conn) Read

func (c *Conn) Read(b []byte) (int, error)

func (*Conn) RemoteAddr

func (c *Conn) RemoteAddr() net.Addr

func (*Conn) SetDeadline

func (c *Conn) SetDeadline(t time.Time) error

func (*Conn) SetReadDeadline

func (c *Conn) SetReadDeadline(t time.Time) error

func (*Conn) SetWriteDeadline

func (c *Conn) SetWriteDeadline(t time.Time) error

func (*Conn) VerifyHostname

func (c *Conn) VerifyHostname(host string) error

func (*Conn) Write

func (c *Conn) Write(b []byte) (int, error)

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

func (cs *ConnectionState) ExportKeyingMaterial(label string, context []byte, length int) ([]byte, error)

type CurveID

type CurveID uint16
const (
	CurveP256 CurveID = 23
	CurveP384 CurveID = 24
	CurveP521 CurveID = 25
	X25519    CurveID = 29
)

func (*CurveID) String

func (curveID *CurveID) String() string

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

type RecordHeaderError struct {
	Msg          string
	RecordHeader [5]byte
	Conn         net.Conn
}

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
)

Jump to

Keyboard shortcuts

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