github.com/Psiphon-Labs/tls-tris@v0.0.0-20230824155421-58bf6d336a9a/alert.go (about)

     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  
     5  package tls
     6  
     7  import "strconv"
     8  
     9  type alert uint8
    10  
    11  const (
    12  	// alert level
    13  	alertLevelWarning = 1
    14  	alertLevelError   = 2
    15  )
    16  
    17  const (
    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  	alertUnsupportedExtension   alert = 110
    42  	alertCertificateRequired    alert = 116
    43  	alertNoApplicationProtocol  alert = 120
    44  	alertSuccess                alert = 255 // dummy value returned by unmarshal functions
    45  )
    46  
    47  var alertText = map[alert]string{
    48  	alertCloseNotify:            "close notify",
    49  	alertUnexpectedMessage:      "unexpected message",
    50  	alertBadRecordMAC:           "bad record MAC",
    51  	alertDecryptionFailed:       "decryption failed",
    52  	alertRecordOverflow:         "record overflow",
    53  	alertDecompressionFailure:   "decompression failure",
    54  	alertHandshakeFailure:       "handshake failure",
    55  	alertBadCertificate:         "bad certificate",
    56  	alertUnsupportedCertificate: "unsupported certificate",
    57  	alertCertificateRevoked:     "revoked certificate",
    58  	alertCertificateExpired:     "expired certificate",
    59  	alertCertificateUnknown:     "unknown certificate",
    60  	alertIllegalParameter:       "illegal parameter",
    61  	alertUnknownCA:              "unknown certificate authority",
    62  	alertAccessDenied:           "access denied",
    63  	alertDecodeError:            "error decoding message",
    64  	alertDecryptError:           "error decrypting message",
    65  	alertProtocolVersion:        "protocol version not supported",
    66  	alertInsufficientSecurity:   "insufficient security level",
    67  	alertInternalError:          "internal error",
    68  	alertInappropriateFallback:  "inappropriate fallback",
    69  	alertUserCanceled:           "user canceled",
    70  	alertNoRenegotiation:        "no renegotiation",
    71  	alertNoApplicationProtocol:  "no application protocol",
    72  }
    73  
    74  func (e alert) String() string {
    75  	s, ok := alertText[e]
    76  	if ok {
    77  		return "tls: " + s
    78  	}
    79  	return "tls: alert(" + strconv.Itoa(int(e)) + ")"
    80  }
    81  
    82  func (e alert) Error() string {
    83  	return e.String()
    84  }