1// Copyright 2009 The Go Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style
3// license that can be found in the LICENSE file.
4
5package tls
6
7import "strconv"
8
9type alert uint8
10
11const (
12	// alert level
13	alertLevelWarning = 1
14	alertLevelError   = 2
15)
16
17const (
18	alertCloseNotify            alert = 0
19	alertUnexpectedMessage      alert = 10
20	alertBadRecordMAC           alert = 20
21	alertDecryptionFailed       alert = 21
22	alertRecordOverflow         alert = 22
23	alertDecompressionFailure   alert = 30
24	alertHandshakeFailure       alert = 40
25	alertBadCertificate         alert = 42
26	alertUnsupportedCertificate alert = 43
27	alertCertificateRevoked     alert = 44
28	alertCertificateExpired     alert = 45
29	alertCertificateUnknown     alert = 46
30	alertIllegalParameter       alert = 47
31	alertUnknownCA              alert = 48
32	alertAccessDenied           alert = 49
33	alertDecodeError            alert = 50
34	alertDecryptError           alert = 51
35	alertProtocolVersion        alert = 70
36	alertInsufficientSecurity   alert = 71
37	alertInternalError          alert = 80
38	alertInappropriateFallback  alert = 86
39	alertUserCanceled           alert = 90
40	alertNoRenegotiation        alert = 100
41	alertMissingExtension       alert = 109
42	alertUnsupportedExtension   alert = 110
43	alertNoApplicationProtocol  alert = 120
44)
45
46var alertText = map[alert]string{
47	alertCloseNotify:            "close notify",
48	alertUnexpectedMessage:      "unexpected message",
49	alertBadRecordMAC:           "bad record MAC",
50	alertDecryptionFailed:       "decryption failed",
51	alertRecordOverflow:         "record overflow",
52	alertDecompressionFailure:   "decompression failure",
53	alertHandshakeFailure:       "handshake failure",
54	alertBadCertificate:         "bad certificate",
55	alertUnsupportedCertificate: "unsupported certificate",
56	alertCertificateRevoked:     "revoked certificate",
57	alertCertificateExpired:     "expired certificate",
58	alertCertificateUnknown:     "unknown certificate",
59	alertIllegalParameter:       "illegal parameter",
60	alertUnknownCA:              "unknown certificate authority",
61	alertAccessDenied:           "access denied",
62	alertDecodeError:            "error decoding message",
63	alertDecryptError:           "error decrypting message",
64	alertProtocolVersion:        "protocol version not supported",
65	alertInsufficientSecurity:   "insufficient security level",
66	alertInternalError:          "internal error",
67	alertInappropriateFallback:  "inappropriate fallback",
68	alertUserCanceled:           "user canceled",
69	alertNoRenegotiation:        "no renegotiation",
70	alertMissingExtension:       "missing extension",
71	alertUnsupportedExtension:   "unsupported extension",
72	alertNoApplicationProtocol:  "no application protocol",
73}
74
75func (e alert) String() string {
76	s, ok := alertText[e]
77	if ok {
78		return "tls: " + s
79	}
80	return "tls: alert(" + strconv.Itoa(int(e)) + ")"
81}
82
83func (e alert) Error() string {
84	return e.String()
85}
86