2021-08-03 09:04:02 +00:00
|
|
|
// Copyright 2009 The Go Authors. All rights reserved.
|
|
|
|
// Use of this source code is governed by a BSD-style
|
|
|
|
// license that can be found in the LICENSE file.
|
|
|
|
|
|
|
|
package qtls
|
|
|
|
|
|
|
|
import "strconv"
|
|
|
|
|
2023-12-04 09:49:00 +00:00
|
|
|
// An AlertError is a TLS alert.
|
|
|
|
//
|
|
|
|
// When using a QUIC transport, QUICConn methods will return an error
|
|
|
|
// which wraps AlertError rather than sending a TLS alert.
|
|
|
|
type AlertError uint8
|
|
|
|
|
|
|
|
func (e AlertError) Error() string {
|
|
|
|
return alert(e).String()
|
|
|
|
}
|
2021-08-03 09:04:02 +00:00
|
|
|
|
2023-12-04 09:49:00 +00:00
|
|
|
type alert uint8
|
2021-08-03 09:04:02 +00:00
|
|
|
|
|
|
|
const (
|
|
|
|
// alert level
|
|
|
|
alertLevelWarning = 1
|
|
|
|
alertLevelError = 2
|
|
|
|
)
|
|
|
|
|
|
|
|
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
|
|
|
|
)
|
|
|
|
|
|
|
|
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",
|
|
|
|
}
|
|
|
|
|
|
|
|
func (e alert) String() string {
|
|
|
|
s, ok := alertText[e]
|
|
|
|
if ok {
|
|
|
|
return "tls: " + s
|
|
|
|
}
|
|
|
|
return "tls: alert(" + strconv.Itoa(int(e)) + ")"
|
|
|
|
}
|
|
|
|
|
|
|
|
func (e alert) Error() string {
|
|
|
|
return e.String()
|
|
|
|
}
|