1e71b7053SJung-uk Kim /* 2*b077aed3SPierre Pronchery * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. 31f13597dSJung-uk Kim * Copyright 2005 Nokia. All rights reserved. 41f13597dSJung-uk Kim * 5*b077aed3SPierre Pronchery * Licensed under the Apache License 2.0 (the "License"). You may not use 6e71b7053SJung-uk Kim * this file except in compliance with the License. You can obtain a copy 7e71b7053SJung-uk Kim * in the file LICENSE in the source distribution or at 8e71b7053SJung-uk Kim * https://www.openssl.org/source/license.html 91f13597dSJung-uk Kim */ 1074664626SKris Kennaway 1174664626SKris Kennaway #include <stdio.h> 1217f01e99SJung-uk Kim #include "ssl_local.h" 1374664626SKris Kennaway SSL_state_string_long(const SSL * s)145c87c606SMark Murrayconst char *SSL_state_string_long(const SSL *s) 1574664626SKris Kennaway { 16e71b7053SJung-uk Kim if (ossl_statem_in_error(s)) 17e71b7053SJung-uk Kim return "error"; 1874664626SKris Kennaway 19e71b7053SJung-uk Kim switch (SSL_get_state(s)) { 20e71b7053SJung-uk Kim case TLS_ST_CR_CERT_STATUS: 21e71b7053SJung-uk Kim return "SSLv3/TLS read certificate status"; 22e71b7053SJung-uk Kim case TLS_ST_CW_NEXT_PROTO: 23e71b7053SJung-uk Kim return "SSLv3/TLS write next proto"; 24e71b7053SJung-uk Kim case TLS_ST_SR_NEXT_PROTO: 25e71b7053SJung-uk Kim return "SSLv3/TLS read next proto"; 26e71b7053SJung-uk Kim case TLS_ST_SW_CERT_STATUS: 27e71b7053SJung-uk Kim return "SSLv3/TLS write certificate status"; 28e71b7053SJung-uk Kim case TLS_ST_BEFORE: 29e71b7053SJung-uk Kim return "before SSL initialization"; 30e71b7053SJung-uk Kim case TLS_ST_OK: 31e71b7053SJung-uk Kim return "SSL negotiation finished successfully"; 32e71b7053SJung-uk Kim case TLS_ST_CW_CLNT_HELLO: 33e71b7053SJung-uk Kim return "SSLv3/TLS write client hello"; 34e71b7053SJung-uk Kim case TLS_ST_CR_SRVR_HELLO: 35e71b7053SJung-uk Kim return "SSLv3/TLS read server hello"; 36e71b7053SJung-uk Kim case TLS_ST_CR_CERT: 37e71b7053SJung-uk Kim return "SSLv3/TLS read server certificate"; 38e71b7053SJung-uk Kim case TLS_ST_CR_KEY_EXCH: 39e71b7053SJung-uk Kim return "SSLv3/TLS read server key exchange"; 40e71b7053SJung-uk Kim case TLS_ST_CR_CERT_REQ: 41e71b7053SJung-uk Kim return "SSLv3/TLS read server certificate request"; 42e71b7053SJung-uk Kim case TLS_ST_CR_SESSION_TICKET: 43e71b7053SJung-uk Kim return "SSLv3/TLS read server session ticket"; 44e71b7053SJung-uk Kim case TLS_ST_CR_SRVR_DONE: 45e71b7053SJung-uk Kim return "SSLv3/TLS read server done"; 46e71b7053SJung-uk Kim case TLS_ST_CW_CERT: 47e71b7053SJung-uk Kim return "SSLv3/TLS write client certificate"; 48e71b7053SJung-uk Kim case TLS_ST_CW_KEY_EXCH: 49e71b7053SJung-uk Kim return "SSLv3/TLS write client key exchange"; 50e71b7053SJung-uk Kim case TLS_ST_CW_CERT_VRFY: 51e71b7053SJung-uk Kim return "SSLv3/TLS write certificate verify"; 52e71b7053SJung-uk Kim case TLS_ST_CW_CHANGE: 53e71b7053SJung-uk Kim case TLS_ST_SW_CHANGE: 54e71b7053SJung-uk Kim return "SSLv3/TLS write change cipher spec"; 55e71b7053SJung-uk Kim case TLS_ST_CW_FINISHED: 56e71b7053SJung-uk Kim case TLS_ST_SW_FINISHED: 57e71b7053SJung-uk Kim return "SSLv3/TLS write finished"; 58e71b7053SJung-uk Kim case TLS_ST_CR_CHANGE: 59e71b7053SJung-uk Kim case TLS_ST_SR_CHANGE: 60e71b7053SJung-uk Kim return "SSLv3/TLS read change cipher spec"; 61e71b7053SJung-uk Kim case TLS_ST_CR_FINISHED: 62e71b7053SJung-uk Kim case TLS_ST_SR_FINISHED: 63e71b7053SJung-uk Kim return "SSLv3/TLS read finished"; 64e71b7053SJung-uk Kim case TLS_ST_SR_CLNT_HELLO: 65e71b7053SJung-uk Kim return "SSLv3/TLS read client hello"; 66e71b7053SJung-uk Kim case TLS_ST_SW_HELLO_REQ: 67e71b7053SJung-uk Kim return "SSLv3/TLS write hello request"; 68e71b7053SJung-uk Kim case TLS_ST_SW_SRVR_HELLO: 69e71b7053SJung-uk Kim return "SSLv3/TLS write server hello"; 70e71b7053SJung-uk Kim case TLS_ST_SW_CERT: 71e71b7053SJung-uk Kim return "SSLv3/TLS write certificate"; 72e71b7053SJung-uk Kim case TLS_ST_SW_KEY_EXCH: 73e71b7053SJung-uk Kim return "SSLv3/TLS write key exchange"; 74e71b7053SJung-uk Kim case TLS_ST_SW_CERT_REQ: 75e71b7053SJung-uk Kim return "SSLv3/TLS write certificate request"; 76e71b7053SJung-uk Kim case TLS_ST_SW_SESSION_TICKET: 77e71b7053SJung-uk Kim return "SSLv3/TLS write session ticket"; 78e71b7053SJung-uk Kim case TLS_ST_SW_SRVR_DONE: 79e71b7053SJung-uk Kim return "SSLv3/TLS write server done"; 80e71b7053SJung-uk Kim case TLS_ST_SR_CERT: 81e71b7053SJung-uk Kim return "SSLv3/TLS read client certificate"; 82e71b7053SJung-uk Kim case TLS_ST_SR_KEY_EXCH: 83e71b7053SJung-uk Kim return "SSLv3/TLS read client key exchange"; 84e71b7053SJung-uk Kim case TLS_ST_SR_CERT_VRFY: 85e71b7053SJung-uk Kim return "SSLv3/TLS read certificate verify"; 86e71b7053SJung-uk Kim case DTLS_ST_CR_HELLO_VERIFY_REQUEST: 87e71b7053SJung-uk Kim return "DTLS1 read hello verify request"; 88e71b7053SJung-uk Kim case DTLS_ST_SW_HELLO_VERIFY_REQUEST: 89e71b7053SJung-uk Kim return "DTLS1 write hello verify request"; 90e71b7053SJung-uk Kim case TLS_ST_SW_ENCRYPTED_EXTENSIONS: 91e71b7053SJung-uk Kim return "TLSv1.3 write encrypted extensions"; 92e71b7053SJung-uk Kim case TLS_ST_CR_ENCRYPTED_EXTENSIONS: 93e71b7053SJung-uk Kim return "TLSv1.3 read encrypted extensions"; 94e71b7053SJung-uk Kim case TLS_ST_CR_CERT_VRFY: 95e71b7053SJung-uk Kim return "TLSv1.3 read server certificate verify"; 96e71b7053SJung-uk Kim case TLS_ST_SW_CERT_VRFY: 97e71b7053SJung-uk Kim return "TLSv1.3 write server certificate verify"; 98e71b7053SJung-uk Kim case TLS_ST_CR_HELLO_REQ: 99e71b7053SJung-uk Kim return "SSLv3/TLS read hello request"; 100e71b7053SJung-uk Kim case TLS_ST_SW_KEY_UPDATE: 101e71b7053SJung-uk Kim return "TLSv1.3 write server key update"; 102e71b7053SJung-uk Kim case TLS_ST_CW_KEY_UPDATE: 103e71b7053SJung-uk Kim return "TLSv1.3 write client key update"; 104e71b7053SJung-uk Kim case TLS_ST_SR_KEY_UPDATE: 105e71b7053SJung-uk Kim return "TLSv1.3 read client key update"; 106e71b7053SJung-uk Kim case TLS_ST_CR_KEY_UPDATE: 107e71b7053SJung-uk Kim return "TLSv1.3 read server key update"; 108e71b7053SJung-uk Kim case TLS_ST_EARLY_DATA: 109e71b7053SJung-uk Kim return "TLSv1.3 early data"; 110e71b7053SJung-uk Kim case TLS_ST_PENDING_EARLY_DATA_END: 111e71b7053SJung-uk Kim return "TLSv1.3 pending early data end"; 112e71b7053SJung-uk Kim case TLS_ST_CW_END_OF_EARLY_DATA: 113e71b7053SJung-uk Kim return "TLSv1.3 write end of early data"; 114e71b7053SJung-uk Kim case TLS_ST_SR_END_OF_EARLY_DATA: 115e71b7053SJung-uk Kim return "TLSv1.3 read end of early data"; 1166f9291ceSJung-uk Kim default: 117e71b7053SJung-uk Kim return "unknown state"; 11874664626SKris Kennaway } 11974664626SKris Kennaway } 12074664626SKris Kennaway SSL_state_string(const SSL * s)1215c87c606SMark Murrayconst char *SSL_state_string(const SSL *s) 12274664626SKris Kennaway { 123e71b7053SJung-uk Kim if (ossl_statem_in_error(s)) 124e71b7053SJung-uk Kim return "SSLERR"; 12574664626SKris Kennaway 126e71b7053SJung-uk Kim switch (SSL_get_state(s)) { 127e71b7053SJung-uk Kim case TLS_ST_SR_NEXT_PROTO: 128e71b7053SJung-uk Kim return "TRNP"; 129e71b7053SJung-uk Kim case TLS_ST_SW_SESSION_TICKET: 130e71b7053SJung-uk Kim return "TWST"; 131e71b7053SJung-uk Kim case TLS_ST_SW_CERT_STATUS: 132e71b7053SJung-uk Kim return "TWCS"; 133e71b7053SJung-uk Kim case TLS_ST_CR_CERT_STATUS: 134e71b7053SJung-uk Kim return "TRCS"; 135e71b7053SJung-uk Kim case TLS_ST_CR_SESSION_TICKET: 136e71b7053SJung-uk Kim return "TRST"; 137e71b7053SJung-uk Kim case TLS_ST_CW_NEXT_PROTO: 138e71b7053SJung-uk Kim return "TWNP"; 139e71b7053SJung-uk Kim case TLS_ST_BEFORE: 140e71b7053SJung-uk Kim return "PINIT"; 141e71b7053SJung-uk Kim case TLS_ST_OK: 142e71b7053SJung-uk Kim return "SSLOK"; 143e71b7053SJung-uk Kim case TLS_ST_CW_CLNT_HELLO: 144e71b7053SJung-uk Kim return "TWCH"; 145e71b7053SJung-uk Kim case TLS_ST_CR_SRVR_HELLO: 146e71b7053SJung-uk Kim return "TRSH"; 147e71b7053SJung-uk Kim case TLS_ST_CR_CERT: 148e71b7053SJung-uk Kim return "TRSC"; 149e71b7053SJung-uk Kim case TLS_ST_CR_KEY_EXCH: 150e71b7053SJung-uk Kim return "TRSKE"; 151e71b7053SJung-uk Kim case TLS_ST_CR_CERT_REQ: 152e71b7053SJung-uk Kim return "TRCR"; 153e71b7053SJung-uk Kim case TLS_ST_CR_SRVR_DONE: 154e71b7053SJung-uk Kim return "TRSD"; 155e71b7053SJung-uk Kim case TLS_ST_CW_CERT: 156e71b7053SJung-uk Kim return "TWCC"; 157e71b7053SJung-uk Kim case TLS_ST_CW_KEY_EXCH: 158e71b7053SJung-uk Kim return "TWCKE"; 159e71b7053SJung-uk Kim case TLS_ST_CW_CERT_VRFY: 160e71b7053SJung-uk Kim return "TWCV"; 161e71b7053SJung-uk Kim case TLS_ST_SW_CHANGE: 162e71b7053SJung-uk Kim case TLS_ST_CW_CHANGE: 163e71b7053SJung-uk Kim return "TWCCS"; 164e71b7053SJung-uk Kim case TLS_ST_SW_FINISHED: 165e71b7053SJung-uk Kim case TLS_ST_CW_FINISHED: 166e71b7053SJung-uk Kim return "TWFIN"; 167e71b7053SJung-uk Kim case TLS_ST_SR_CHANGE: 168e71b7053SJung-uk Kim case TLS_ST_CR_CHANGE: 169e71b7053SJung-uk Kim return "TRCCS"; 170e71b7053SJung-uk Kim case TLS_ST_SR_FINISHED: 171e71b7053SJung-uk Kim case TLS_ST_CR_FINISHED: 172e71b7053SJung-uk Kim return "TRFIN"; 173e71b7053SJung-uk Kim case TLS_ST_SW_HELLO_REQ: 174e71b7053SJung-uk Kim return "TWHR"; 175e71b7053SJung-uk Kim case TLS_ST_SR_CLNT_HELLO: 176e71b7053SJung-uk Kim return "TRCH"; 177e71b7053SJung-uk Kim case TLS_ST_SW_SRVR_HELLO: 178e71b7053SJung-uk Kim return "TWSH"; 179e71b7053SJung-uk Kim case TLS_ST_SW_CERT: 180e71b7053SJung-uk Kim return "TWSC"; 181e71b7053SJung-uk Kim case TLS_ST_SW_KEY_EXCH: 182e71b7053SJung-uk Kim return "TWSKE"; 183e71b7053SJung-uk Kim case TLS_ST_SW_CERT_REQ: 184e71b7053SJung-uk Kim return "TWCR"; 185e71b7053SJung-uk Kim case TLS_ST_SW_SRVR_DONE: 186e71b7053SJung-uk Kim return "TWSD"; 187e71b7053SJung-uk Kim case TLS_ST_SR_CERT: 188e71b7053SJung-uk Kim return "TRCC"; 189e71b7053SJung-uk Kim case TLS_ST_SR_KEY_EXCH: 190e71b7053SJung-uk Kim return "TRCKE"; 191e71b7053SJung-uk Kim case TLS_ST_SR_CERT_VRFY: 192e71b7053SJung-uk Kim return "TRCV"; 193e71b7053SJung-uk Kim case DTLS_ST_CR_HELLO_VERIFY_REQUEST: 194e71b7053SJung-uk Kim return "DRCHV"; 195e71b7053SJung-uk Kim case DTLS_ST_SW_HELLO_VERIFY_REQUEST: 196e71b7053SJung-uk Kim return "DWCHV"; 197e71b7053SJung-uk Kim case TLS_ST_SW_ENCRYPTED_EXTENSIONS: 198e71b7053SJung-uk Kim return "TWEE"; 199e71b7053SJung-uk Kim case TLS_ST_CR_ENCRYPTED_EXTENSIONS: 200e71b7053SJung-uk Kim return "TREE"; 201e71b7053SJung-uk Kim case TLS_ST_CR_CERT_VRFY: 202e71b7053SJung-uk Kim return "TRSCV"; 203e71b7053SJung-uk Kim case TLS_ST_SW_CERT_VRFY: 204*b077aed3SPierre Pronchery return "TWSCV"; 205e71b7053SJung-uk Kim case TLS_ST_CR_HELLO_REQ: 206e71b7053SJung-uk Kim return "TRHR"; 207e71b7053SJung-uk Kim case TLS_ST_SW_KEY_UPDATE: 208e71b7053SJung-uk Kim return "TWSKU"; 209e71b7053SJung-uk Kim case TLS_ST_CW_KEY_UPDATE: 210e71b7053SJung-uk Kim return "TWCKU"; 211e71b7053SJung-uk Kim case TLS_ST_SR_KEY_UPDATE: 212e71b7053SJung-uk Kim return "TRCKU"; 213e71b7053SJung-uk Kim case TLS_ST_CR_KEY_UPDATE: 214e71b7053SJung-uk Kim return "TRSKU"; 215e71b7053SJung-uk Kim case TLS_ST_EARLY_DATA: 216e71b7053SJung-uk Kim return "TED"; 217e71b7053SJung-uk Kim case TLS_ST_PENDING_EARLY_DATA_END: 218e71b7053SJung-uk Kim return "TPEDE"; 219e71b7053SJung-uk Kim case TLS_ST_CW_END_OF_EARLY_DATA: 220e71b7053SJung-uk Kim return "TWEOED"; 221e71b7053SJung-uk Kim case TLS_ST_SR_END_OF_EARLY_DATA: 222e71b7053SJung-uk Kim return "TWEOED"; 2236f9291ceSJung-uk Kim default: 224e71b7053SJung-uk Kim return "UNKWN"; 22574664626SKris Kennaway } 22674664626SKris Kennaway } 22774664626SKris Kennaway SSL_alert_type_string_long(int value)2285c87c606SMark Murrayconst char *SSL_alert_type_string_long(int value) 22974664626SKris Kennaway { 230e71b7053SJung-uk Kim switch (value >> 8) { 231e71b7053SJung-uk Kim case SSL3_AL_WARNING: 232e71b7053SJung-uk Kim return "warning"; 233e71b7053SJung-uk Kim case SSL3_AL_FATAL: 234e71b7053SJung-uk Kim return "fatal"; 235e71b7053SJung-uk Kim default: 236e71b7053SJung-uk Kim return "unknown"; 237e71b7053SJung-uk Kim } 23874664626SKris Kennaway } 23974664626SKris Kennaway SSL_alert_type_string(int value)2405c87c606SMark Murrayconst char *SSL_alert_type_string(int value) 24174664626SKris Kennaway { 242e71b7053SJung-uk Kim switch (value >> 8) { 243e71b7053SJung-uk Kim case SSL3_AL_WARNING: 244e71b7053SJung-uk Kim return "W"; 245e71b7053SJung-uk Kim case SSL3_AL_FATAL: 246e71b7053SJung-uk Kim return "F"; 247e71b7053SJung-uk Kim default: 248e71b7053SJung-uk Kim return "U"; 249e71b7053SJung-uk Kim } 25074664626SKris Kennaway } 25174664626SKris Kennaway SSL_alert_desc_string(int value)2525c87c606SMark Murrayconst char *SSL_alert_desc_string(int value) 25374664626SKris Kennaway { 2546f9291ceSJung-uk Kim switch (value & 0xff) { 2556f9291ceSJung-uk Kim case SSL3_AD_CLOSE_NOTIFY: 256e71b7053SJung-uk Kim return "CN"; 2576f9291ceSJung-uk Kim case SSL3_AD_UNEXPECTED_MESSAGE: 258e71b7053SJung-uk Kim return "UM"; 2596f9291ceSJung-uk Kim case SSL3_AD_BAD_RECORD_MAC: 260e71b7053SJung-uk Kim return "BM"; 2616f9291ceSJung-uk Kim case SSL3_AD_DECOMPRESSION_FAILURE: 262e71b7053SJung-uk Kim return "DF"; 2636f9291ceSJung-uk Kim case SSL3_AD_HANDSHAKE_FAILURE: 264e71b7053SJung-uk Kim return "HF"; 2656f9291ceSJung-uk Kim case SSL3_AD_NO_CERTIFICATE: 266e71b7053SJung-uk Kim return "NC"; 2676f9291ceSJung-uk Kim case SSL3_AD_BAD_CERTIFICATE: 268e71b7053SJung-uk Kim return "BC"; 2696f9291ceSJung-uk Kim case SSL3_AD_UNSUPPORTED_CERTIFICATE: 270e71b7053SJung-uk Kim return "UC"; 2716f9291ceSJung-uk Kim case SSL3_AD_CERTIFICATE_REVOKED: 272e71b7053SJung-uk Kim return "CR"; 2736f9291ceSJung-uk Kim case SSL3_AD_CERTIFICATE_EXPIRED: 274e71b7053SJung-uk Kim return "CE"; 2756f9291ceSJung-uk Kim case SSL3_AD_CERTIFICATE_UNKNOWN: 276e71b7053SJung-uk Kim return "CU"; 2776f9291ceSJung-uk Kim case SSL3_AD_ILLEGAL_PARAMETER: 278e71b7053SJung-uk Kim return "IP"; 2796f9291ceSJung-uk Kim case TLS1_AD_DECRYPTION_FAILED: 280e71b7053SJung-uk Kim return "DC"; 2816f9291ceSJung-uk Kim case TLS1_AD_RECORD_OVERFLOW: 282e71b7053SJung-uk Kim return "RO"; 2836f9291ceSJung-uk Kim case TLS1_AD_UNKNOWN_CA: 284e71b7053SJung-uk Kim return "CA"; 2856f9291ceSJung-uk Kim case TLS1_AD_ACCESS_DENIED: 286e71b7053SJung-uk Kim return "AD"; 2876f9291ceSJung-uk Kim case TLS1_AD_DECODE_ERROR: 288e71b7053SJung-uk Kim return "DE"; 2896f9291ceSJung-uk Kim case TLS1_AD_DECRYPT_ERROR: 290e71b7053SJung-uk Kim return "CY"; 2916f9291ceSJung-uk Kim case TLS1_AD_EXPORT_RESTRICTION: 292e71b7053SJung-uk Kim return "ER"; 2936f9291ceSJung-uk Kim case TLS1_AD_PROTOCOL_VERSION: 294e71b7053SJung-uk Kim return "PV"; 2956f9291ceSJung-uk Kim case TLS1_AD_INSUFFICIENT_SECURITY: 296e71b7053SJung-uk Kim return "IS"; 2976f9291ceSJung-uk Kim case TLS1_AD_INTERNAL_ERROR: 298e71b7053SJung-uk Kim return "IE"; 2996f9291ceSJung-uk Kim case TLS1_AD_USER_CANCELLED: 300e71b7053SJung-uk Kim return "US"; 3016f9291ceSJung-uk Kim case TLS1_AD_NO_RENEGOTIATION: 302e71b7053SJung-uk Kim return "NR"; 3036f9291ceSJung-uk Kim case TLS1_AD_UNSUPPORTED_EXTENSION: 304e71b7053SJung-uk Kim return "UE"; 3056f9291ceSJung-uk Kim case TLS1_AD_CERTIFICATE_UNOBTAINABLE: 306e71b7053SJung-uk Kim return "CO"; 3076f9291ceSJung-uk Kim case TLS1_AD_UNRECOGNIZED_NAME: 308e71b7053SJung-uk Kim return "UN"; 3096f9291ceSJung-uk Kim case TLS1_AD_BAD_CERTIFICATE_STATUS_RESPONSE: 310e71b7053SJung-uk Kim return "BR"; 3116f9291ceSJung-uk Kim case TLS1_AD_BAD_CERTIFICATE_HASH_VALUE: 312e71b7053SJung-uk Kim return "BH"; 3136f9291ceSJung-uk Kim case TLS1_AD_UNKNOWN_PSK_IDENTITY: 314e71b7053SJung-uk Kim return "UP"; 3156f9291ceSJung-uk Kim default: 316e71b7053SJung-uk Kim return "UK"; 31774664626SKris Kennaway } 31874664626SKris Kennaway } 31974664626SKris Kennaway SSL_alert_desc_string_long(int value)3205c87c606SMark Murrayconst char *SSL_alert_desc_string_long(int value) 32174664626SKris Kennaway { 3226f9291ceSJung-uk Kim switch (value & 0xff) { 32374664626SKris Kennaway case SSL3_AD_CLOSE_NOTIFY: 324e71b7053SJung-uk Kim return "close notify"; 32574664626SKris Kennaway case SSL3_AD_UNEXPECTED_MESSAGE: 326e71b7053SJung-uk Kim return "unexpected_message"; 32774664626SKris Kennaway case SSL3_AD_BAD_RECORD_MAC: 328e71b7053SJung-uk Kim return "bad record mac"; 32974664626SKris Kennaway case SSL3_AD_DECOMPRESSION_FAILURE: 330e71b7053SJung-uk Kim return "decompression failure"; 33174664626SKris Kennaway case SSL3_AD_HANDSHAKE_FAILURE: 332e71b7053SJung-uk Kim return "handshake failure"; 33374664626SKris Kennaway case SSL3_AD_NO_CERTIFICATE: 334e71b7053SJung-uk Kim return "no certificate"; 33574664626SKris Kennaway case SSL3_AD_BAD_CERTIFICATE: 336e71b7053SJung-uk Kim return "bad certificate"; 33774664626SKris Kennaway case SSL3_AD_UNSUPPORTED_CERTIFICATE: 338e71b7053SJung-uk Kim return "unsupported certificate"; 33974664626SKris Kennaway case SSL3_AD_CERTIFICATE_REVOKED: 340e71b7053SJung-uk Kim return "certificate revoked"; 34174664626SKris Kennaway case SSL3_AD_CERTIFICATE_EXPIRED: 342e71b7053SJung-uk Kim return "certificate expired"; 34374664626SKris Kennaway case SSL3_AD_CERTIFICATE_UNKNOWN: 344e71b7053SJung-uk Kim return "certificate unknown"; 34574664626SKris Kennaway case SSL3_AD_ILLEGAL_PARAMETER: 346e71b7053SJung-uk Kim return "illegal parameter"; 347a21b1b38SKris Kennaway case TLS1_AD_DECRYPTION_FAILED: 348e71b7053SJung-uk Kim return "decryption failed"; 349a21b1b38SKris Kennaway case TLS1_AD_RECORD_OVERFLOW: 350e71b7053SJung-uk Kim return "record overflow"; 351a21b1b38SKris Kennaway case TLS1_AD_UNKNOWN_CA: 352e71b7053SJung-uk Kim return "unknown CA"; 353a21b1b38SKris Kennaway case TLS1_AD_ACCESS_DENIED: 354e71b7053SJung-uk Kim return "access denied"; 355a21b1b38SKris Kennaway case TLS1_AD_DECODE_ERROR: 356e71b7053SJung-uk Kim return "decode error"; 357a21b1b38SKris Kennaway case TLS1_AD_DECRYPT_ERROR: 358e71b7053SJung-uk Kim return "decrypt error"; 359a21b1b38SKris Kennaway case TLS1_AD_EXPORT_RESTRICTION: 360e71b7053SJung-uk Kim return "export restriction"; 361a21b1b38SKris Kennaway case TLS1_AD_PROTOCOL_VERSION: 362e71b7053SJung-uk Kim return "protocol version"; 363a21b1b38SKris Kennaway case TLS1_AD_INSUFFICIENT_SECURITY: 364e71b7053SJung-uk Kim return "insufficient security"; 365a21b1b38SKris Kennaway case TLS1_AD_INTERNAL_ERROR: 366e71b7053SJung-uk Kim return "internal error"; 367a21b1b38SKris Kennaway case TLS1_AD_USER_CANCELLED: 368e71b7053SJung-uk Kim return "user canceled"; 369a21b1b38SKris Kennaway case TLS1_AD_NO_RENEGOTIATION: 370e71b7053SJung-uk Kim return "no renegotiation"; 3711f13597dSJung-uk Kim case TLS1_AD_UNSUPPORTED_EXTENSION: 372e71b7053SJung-uk Kim return "unsupported extension"; 3731f13597dSJung-uk Kim case TLS1_AD_CERTIFICATE_UNOBTAINABLE: 374e71b7053SJung-uk Kim return "certificate unobtainable"; 3751f13597dSJung-uk Kim case TLS1_AD_UNRECOGNIZED_NAME: 376e71b7053SJung-uk Kim return "unrecognized name"; 3771f13597dSJung-uk Kim case TLS1_AD_BAD_CERTIFICATE_STATUS_RESPONSE: 378e71b7053SJung-uk Kim return "bad certificate status response"; 3791f13597dSJung-uk Kim case TLS1_AD_BAD_CERTIFICATE_HASH_VALUE: 380e71b7053SJung-uk Kim return "bad certificate hash value"; 3811f13597dSJung-uk Kim case TLS1_AD_UNKNOWN_PSK_IDENTITY: 382e71b7053SJung-uk Kim return "unknown PSK identity"; 383e71b7053SJung-uk Kim case TLS1_AD_NO_APPLICATION_PROTOCOL: 384e71b7053SJung-uk Kim return "no application protocol"; 3856f9291ceSJung-uk Kim default: 386e71b7053SJung-uk Kim return "unknown"; 38774664626SKris Kennaway } 38874664626SKris Kennaway } 389