Some error code cleanups (SSL lib. used SSL_R_... codes reserved for alerts)
This commit is contained in:
148
ssl/ssl.h
148
ssl/ssl.h
@@ -1114,7 +1114,8 @@ size_t SSL_get_peer_finished(const SSL *s, void *buf, size_t count);
|
||||
PEM_ASN1_write_bio_of(SSL_SESSION,i2d_SSL_SESSION,PEM_STRING_SSL_SESSION,bp,x,NULL,NULL,0,NULL,NULL)
|
||||
#endif
|
||||
|
||||
#define SSL_AD_REASON_OFFSET 1000
|
||||
#define SSL_AD_REASON_OFFSET 1000 /* offset to get SSL_R_... value from SSL_AD_... /
|
||||
|
||||
/* These alert types are for SSLv3 and TLSv1 */
|
||||
#define SSL_AD_CLOSE_NOTIFY SSL3_AD_CLOSE_NOTIFY
|
||||
#define SSL_AD_UNEXPECTED_MESSAGE SSL3_AD_UNEXPECTED_MESSAGE /* fatal */
|
||||
@@ -1595,31 +1596,31 @@ void ERR_load_SSL_strings(void);
|
||||
#define SSL_F_CLIENT_HELLO 101
|
||||
#define SSL_F_CLIENT_MASTER_KEY 102
|
||||
#define SSL_F_D2I_SSL_SESSION 103
|
||||
#define SSL_F_DO_DTLS1_WRITE 1003
|
||||
#define SSL_F_DO_DTLS1_WRITE 245
|
||||
#define SSL_F_DO_SSL3_WRITE 104
|
||||
#define SSL_F_DTLS1_ACCEPT 1004
|
||||
#define SSL_F_DTLS1_BUFFER_RECORD 1005
|
||||
#define SSL_F_DTLS1_CLIENT_HELLO 1006
|
||||
#define SSL_F_DTLS1_CONNECT 1007
|
||||
#define SSL_F_DTLS1_ENC 1008
|
||||
#define SSL_F_DTLS1_GET_HELLO_VERIFY 1009
|
||||
#define SSL_F_DTLS1_GET_MESSAGE 1010
|
||||
#define SSL_F_DTLS1_GET_MESSAGE_FRAGMENT 1011
|
||||
#define SSL_F_DTLS1_GET_RECORD 1012
|
||||
#define SSL_F_DTLS1_OUTPUT_CERT_CHAIN 1013
|
||||
#define SSL_F_DTLS1_PROCESS_OUT_OF_SEQ_MESSAGE 1014
|
||||
#define SSL_F_DTLS1_PROCESS_RECORD 1015
|
||||
#define SSL_F_DTLS1_READ_BYTES 1016
|
||||
#define SSL_F_DTLS1_READ_FAILED 1001
|
||||
#define SSL_F_DTLS1_SEND_CERTIFICATE_REQUEST 1017
|
||||
#define SSL_F_DTLS1_SEND_CLIENT_CERTIFICATE 1018
|
||||
#define SSL_F_DTLS1_SEND_CLIENT_KEY_EXCHANGE 1019
|
||||
#define SSL_F_DTLS1_SEND_CLIENT_VERIFY 1020
|
||||
#define SSL_F_DTLS1_SEND_HELLO_VERIFY_REQUEST 1002
|
||||
#define SSL_F_DTLS1_SEND_SERVER_CERTIFICATE 1021
|
||||
#define SSL_F_DTLS1_SEND_SERVER_HELLO 1022
|
||||
#define SSL_F_DTLS1_SEND_SERVER_KEY_EXCHANGE 1023
|
||||
#define SSL_F_DTLS1_WRITE_APP_DATA_BYTES 1024
|
||||
#define SSL_F_DTLS1_ACCEPT 246
|
||||
#define SSL_F_DTLS1_BUFFER_RECORD 247
|
||||
#define SSL_F_DTLS1_CLIENT_HELLO 248
|
||||
#define SSL_F_DTLS1_CONNECT 249
|
||||
#define SSL_F_DTLS1_ENC 250
|
||||
#define SSL_F_DTLS1_GET_HELLO_VERIFY 251
|
||||
#define SSL_F_DTLS1_GET_MESSAGE 252
|
||||
#define SSL_F_DTLS1_GET_MESSAGE_FRAGMENT 253
|
||||
#define SSL_F_DTLS1_GET_RECORD 254
|
||||
#define SSL_F_DTLS1_OUTPUT_CERT_CHAIN 255
|
||||
#define SSL_F_DTLS1_PROCESS_OUT_OF_SEQ_MESSAGE 256
|
||||
#define SSL_F_DTLS1_PROCESS_RECORD 257
|
||||
#define SSL_F_DTLS1_READ_BYTES 258
|
||||
#define SSL_F_DTLS1_READ_FAILED 259
|
||||
#define SSL_F_DTLS1_SEND_CERTIFICATE_REQUEST 260
|
||||
#define SSL_F_DTLS1_SEND_CLIENT_CERTIFICATE 261
|
||||
#define SSL_F_DTLS1_SEND_CLIENT_KEY_EXCHANGE 262
|
||||
#define SSL_F_DTLS1_SEND_CLIENT_VERIFY 263
|
||||
#define SSL_F_DTLS1_SEND_HELLO_VERIFY_REQUEST 264
|
||||
#define SSL_F_DTLS1_SEND_SERVER_CERTIFICATE 265
|
||||
#define SSL_F_DTLS1_SEND_SERVER_HELLO 266
|
||||
#define SSL_F_DTLS1_SEND_SERVER_KEY_EXCHANGE 267
|
||||
#define SSL_F_DTLS1_WRITE_APP_DATA_BYTES 268
|
||||
#define SSL_F_GET_CLIENT_FINISHED 105
|
||||
#define SSL_F_GET_CLIENT_HELLO 106
|
||||
#define SSL_F_GET_CLIENT_MASTER_KEY 107
|
||||
@@ -1703,7 +1704,7 @@ void ERR_load_SSL_strings(void);
|
||||
#define SSL_F_SSL_CTRL 232
|
||||
#define SSL_F_SSL_CTX_CHECK_PRIVATE_KEY 168
|
||||
#define SSL_F_SSL_CTX_NEW 169
|
||||
#define SSL_F_SSL_CTX_SET_CIPHER_LIST 1026
|
||||
#define SSL_F_SSL_CTX_SET_CIPHER_LIST 269
|
||||
#define SSL_F_SSL_CTX_SET_PURPOSE 226
|
||||
#define SSL_F_SSL_CTX_SET_SESSION_ID_CONTEXT 219
|
||||
#define SSL_F_SSL_CTX_SET_SSL_VERSION 170
|
||||
@@ -1726,7 +1727,7 @@ void ERR_load_SSL_strings(void);
|
||||
#define SSL_F_SSL_INIT_WBIO_BUFFER 184
|
||||
#define SSL_F_SSL_LOAD_CLIENT_CA_FILE 185
|
||||
#define SSL_F_SSL_NEW 186
|
||||
#define SSL_F_SSL_PEEK 1025
|
||||
#define SSL_F_SSL_PEEK 270
|
||||
#define SSL_F_SSL_READ 223
|
||||
#define SSL_F_SSL_RSA_PRIVATE_DECRYPT 187
|
||||
#define SSL_F_SSL_RSA_PUBLIC_ENCRYPT 188
|
||||
@@ -1734,7 +1735,7 @@ void ERR_load_SSL_strings(void);
|
||||
#define SSL_F_SSL_SESSION_PRINT_FP 190
|
||||
#define SSL_F_SSL_SESS_CERT_NEW 225
|
||||
#define SSL_F_SSL_SET_CERT 191
|
||||
#define SSL_F_SSL_SET_CIPHER_LIST 1027
|
||||
#define SSL_F_SSL_SET_CIPHER_LIST 271
|
||||
#define SSL_F_SSL_SET_FD 192
|
||||
#define SSL_F_SSL_SET_PKEY 193
|
||||
#define SSL_F_SSL_SET_PURPOSE 227
|
||||
@@ -1777,9 +1778,9 @@ void ERR_load_SSL_strings(void);
|
||||
#define SSL_R_BAD_DH_P_LENGTH 110
|
||||
#define SSL_R_BAD_DIGEST_LENGTH 111
|
||||
#define SSL_R_BAD_DSA_SIGNATURE 112
|
||||
#define SSL_R_BAD_ECC_CERT 1117
|
||||
#define SSL_R_BAD_ECDSA_SIGNATURE 1112
|
||||
#define SSL_R_BAD_ECPOINT 1113
|
||||
#define SSL_R_BAD_ECC_CERT 304
|
||||
#define SSL_R_BAD_ECDSA_SIGNATURE 305
|
||||
#define SSL_R_BAD_ECPOINT 306
|
||||
#define SSL_R_BAD_HELLO_REQUEST 105
|
||||
#define SSL_R_BAD_LENGTH 271
|
||||
#define SSL_R_BAD_MAC_DECODE 113
|
||||
@@ -1809,53 +1810,52 @@ void ERR_load_SSL_strings(void);
|
||||
#define SSL_R_CIPHER_CODE_WRONG_LENGTH 137
|
||||
#define SSL_R_CIPHER_OR_HASH_UNAVAILABLE 138
|
||||
#define SSL_R_CIPHER_TABLE_SRC_ERROR 139
|
||||
#define SSL_R_CLIENTHELLO_TLS_EXT 2003
|
||||
#define SSL_R_CLIENTHELLO_TLS_EXT 316
|
||||
#define SSL_R_COMPRESSED_LENGTH_TOO_LONG 140
|
||||
#define SSL_R_COMPRESSION_FAILURE 141
|
||||
#define SSL_R_COMPRESSION_ID_NOT_WITHIN_PRIVATE_RANGE 1120
|
||||
#define SSL_R_COMPRESSION_ID_NOT_WITHIN_PRIVATE_RANGE 307
|
||||
#define SSL_R_COMPRESSION_LIBRARY_ERROR 142
|
||||
#define SSL_R_CONNECTION_ID_IS_DIFFERENT 143
|
||||
#define SSL_R_CONNECTION_TYPE_NOT_SET 144
|
||||
#define SSL_R_COOKIE_MISMATCH 2002
|
||||
#define SSL_R_COOKIE_MISMATCH 308
|
||||
#define SSL_R_DATA_BETWEEN_CCS_AND_FINISHED 145
|
||||
#define SSL_R_DATA_LENGTH_TOO_LONG 146
|
||||
#define SSL_R_DECRYPTION_FAILED 147
|
||||
#define SSL_R_DECRYPTION_FAILED_OR_BAD_RECORD_MAC 1109
|
||||
#define SSL_R_DECRYPTION_FAILED_OR_BAD_RECORD_MAC 281
|
||||
#define SSL_R_DH_PUBLIC_VALUE_LENGTH_IS_WRONG 148
|
||||
#define SSL_R_DIGEST_CHECK_FAILED 149
|
||||
#define SSL_R_DUPLICATE_COMPRESSION_ID 1121
|
||||
#define SSL_R_ECGROUP_TOO_LARGE_FOR_CIPHER 1119
|
||||
#define SSL_R_DUPLICATE_COMPRESSION_ID 309
|
||||
#define SSL_R_ECGROUP_TOO_LARGE_FOR_CIPHER 310
|
||||
#define SSL_R_ENCRYPTED_LENGTH_TOO_LONG 150
|
||||
#define SSL_R_ERROR_GENERATING_TMP_RSA_KEY 1092
|
||||
#define SSL_R_ERROR_GENERATING_TMP_RSA_KEY 282
|
||||
#define SSL_R_ERROR_IN_RECEIVED_CIPHER_LIST 151
|
||||
#define SSL_R_EXCESSIVE_MESSAGE_SIZE 152
|
||||
#define SSL_R_EXTRA_DATA_IN_MESSAGE 153
|
||||
#define SSL_R_GOT_A_FIN_BEFORE_A_CCS 154
|
||||
#define SSL_R_HTTPS_PROXY_REQUEST 155
|
||||
#define SSL_R_HTTP_REQUEST 156
|
||||
#define SSL_R_ILLEGAL_PADDING 1110
|
||||
#define SSL_R_ILLEGAL_PADDING 283
|
||||
#define SSL_R_INVALID_CHALLENGE_LENGTH 158
|
||||
#define SSL_R_INVALID_COMMAND 280
|
||||
#define SSL_R_INVALID_PURPOSE 278
|
||||
#define SSL_R_INVALID_TRUST 279
|
||||
#define SSL_R_KEY_ARG_TOO_LONG 1112
|
||||
#define SSL_R_KRB5 1104
|
||||
#define SSL_R_KRB5_C_CC_PRINC 1094
|
||||
#define SSL_R_KRB5_C_GET_CRED 1095
|
||||
#define SSL_R_KRB5_C_INIT 1096
|
||||
#define SSL_R_KRB5_C_MK_REQ 1097
|
||||
#define SSL_R_KRB5_S_BAD_TICKET 1098
|
||||
#define SSL_R_KRB5_S_INIT 1099
|
||||
#define SSL_R_KRB5_S_RD_REQ 1108
|
||||
#define SSL_R_KRB5_S_TKT_EXPIRED 1105
|
||||
#define SSL_R_KRB5_S_TKT_NYV 1106
|
||||
#define SSL_R_KRB5_S_TKT_SKEW 1107
|
||||
#define SSL_R_KEY_ARG_TOO_LONG 284
|
||||
#define SSL_R_KRB5 285
|
||||
#define SSL_R_KRB5_C_CC_PRINC 286
|
||||
#define SSL_R_KRB5_C_GET_CRED 287
|
||||
#define SSL_R_KRB5_C_INIT 288
|
||||
#define SSL_R_KRB5_C_MK_REQ 289
|
||||
#define SSL_R_KRB5_S_BAD_TICKET 290
|
||||
#define SSL_R_KRB5_S_INIT 291
|
||||
#define SSL_R_KRB5_S_RD_REQ 292
|
||||
#define SSL_R_KRB5_S_TKT_EXPIRED 293
|
||||
#define SSL_R_KRB5_S_TKT_NYV 294
|
||||
#define SSL_R_KRB5_S_TKT_SKEW 295
|
||||
#define SSL_R_LENGTH_MISMATCH 159
|
||||
#define SSL_R_LENGTH_TOO_SHORT 160
|
||||
#define SSL_R_LIBRARY_BUG 274
|
||||
#define SSL_R_LIBRARY_HAS_NO_CIPHERS 161
|
||||
#define SSL_R_MASTER_KEY_TOO_LONG 1112
|
||||
#define SSL_R_MESSAGE_TOO_LONG 1111
|
||||
#define SSL_R_MESSAGE_TOO_LONG 296
|
||||
#define SSL_R_MISSING_DH_DSA_CERT 162
|
||||
#define SSL_R_MISSING_DH_KEY 163
|
||||
#define SSL_R_MISSING_DH_RSA_CERT 164
|
||||
@@ -1866,7 +1866,7 @@ void ERR_load_SSL_strings(void);
|
||||
#define SSL_R_MISSING_RSA_ENCRYPTING_CERT 169
|
||||
#define SSL_R_MISSING_RSA_SIGNING_CERT 170
|
||||
#define SSL_R_MISSING_TMP_DH_KEY 171
|
||||
#define SSL_R_MISSING_TMP_ECDH_KEY 1114
|
||||
#define SSL_R_MISSING_TMP_ECDH_KEY 311
|
||||
#define SSL_R_MISSING_TMP_RSA_KEY 172
|
||||
#define SSL_R_MISSING_TMP_RSA_PKEY 173
|
||||
#define SSL_R_MISSING_VERIFY_MESSAGE 174
|
||||
@@ -1893,8 +1893,9 @@ void ERR_load_SSL_strings(void);
|
||||
#define SSL_R_NULL_SSL_CTX 195
|
||||
#define SSL_R_NULL_SSL_METHOD_PASSED 196
|
||||
#define SSL_R_OLD_SESSION_CIPHER_NOT_RETURNED 197
|
||||
#define SSL_R_ONLY_TLS_ALLOWED_IN_FIPS_MODE 297
|
||||
#define SSL_R_PACKET_LENGTH_TOO_LONG 198
|
||||
#define SSL_R_PARSE_TLS_EXT 2004
|
||||
#define SSL_R_PARSE_TLS_EXT 317
|
||||
#define SSL_R_PATH_TOO_LONG 270
|
||||
#define SSL_R_PEER_DID_NOT_RETURN_A_CERTIFICATE 199
|
||||
#define SSL_R_PEER_ERROR 200
|
||||
@@ -1909,24 +1910,24 @@ void ERR_load_SSL_strings(void);
|
||||
#define SSL_R_PUBLIC_KEY_IS_NOT_RSA 209
|
||||
#define SSL_R_PUBLIC_KEY_NOT_RSA 210
|
||||
#define SSL_R_READ_BIO_NOT_SET 211
|
||||
#define SSL_R_READ_TIMEOUT_EXPIRED 2001
|
||||
#define SSL_R_READ_TIMEOUT_EXPIRED 312
|
||||
#define SSL_R_READ_WRONG_PACKET_TYPE 212
|
||||
#define SSL_R_RECORD_LENGTH_MISMATCH 213
|
||||
#define SSL_R_RECORD_TOO_LARGE 214
|
||||
#define SSL_R_RECORD_TOO_SMALL 1093
|
||||
#define SSL_R_RECORD_TOO_SMALL 298
|
||||
#define SSL_R_REQUIRED_CIPHER_MISSING 215
|
||||
#define SSL_R_REUSE_CERT_LENGTH_NOT_ZERO 216
|
||||
#define SSL_R_REUSE_CERT_TYPE_NOT_ZERO 217
|
||||
#define SSL_R_REUSE_CIPHER_LIST_NOT_ZERO 218
|
||||
#define SSL_R_SERVERHELLO_TLS_EXT 2005
|
||||
#define SSL_R_SERVERHELLO_TLS_EXT 318
|
||||
#define SSL_R_SESSION_ID_CONTEXT_UNINITIALIZED 277
|
||||
#define SSL_R_SHORT_READ 219
|
||||
#define SSL_R_SIGNATURE_FOR_NON_SIGNING_CERTIFICATE 220
|
||||
#define SSL_R_SSL23_DOING_SESSION_ID_REUSE 221
|
||||
#define SSL_R_SSL2_CONNECTION_ID_TOO_LONG 1114
|
||||
#define SSL_R_SSL3_EXT_INVALID_SERVERNAME 2006
|
||||
#define SSL_R_SSL3_EXT_INVALID_SERVERNAME_TYPE 2007
|
||||
#define SSL_R_SSL3_SESSION_ID_TOO_LONG 1113
|
||||
#define SSL_R_SSL2_CONNECTION_ID_TOO_LONG 299
|
||||
#define SSL_R_SSL3_EXT_INVALID_SERVERNAME 319
|
||||
#define SSL_R_SSL3_EXT_INVALID_SERVERNAME_TYPE 320
|
||||
#define SSL_R_SSL3_SESSION_ID_TOO_LONG 300
|
||||
#define SSL_R_SSL3_SESSION_ID_TOO_SHORT 222
|
||||
#define SSL_R_SSLV3_ALERT_BAD_CERTIFICATE 1042
|
||||
#define SSL_R_SSLV3_ALERT_BAD_RECORD_MAC 1020
|
||||
@@ -1937,20 +1938,15 @@ void ERR_load_SSL_strings(void);
|
||||
#define SSL_R_SSLV3_ALERT_HANDSHAKE_FAILURE 1040
|
||||
#define SSL_R_SSLV3_ALERT_ILLEGAL_PARAMETER 1047
|
||||
#define SSL_R_SSLV3_ALERT_NO_CERTIFICATE 1041
|
||||
#define SSL_R_SSLV3_ALERT_PEER_ERROR_CERTIFICATE 223
|
||||
#define SSL_R_SSLV3_ALERT_PEER_ERROR_NO_CERTIFICATE 224
|
||||
#define SSL_R_SSLV3_ALERT_PEER_ERROR_NO_CIPHER 225
|
||||
#define SSL_R_SSLV3_ALERT_PEER_ERROR_UNSUPPORTED_CERTIFICATE_TYPE 226
|
||||
#define SSL_R_SSLV3_ALERT_UNEXPECTED_MESSAGE 1010
|
||||
#define SSL_R_SSLV3_ALERT_UNKNOWN_REMOTE_ERROR_TYPE 227
|
||||
#define SSL_R_SSLV3_ALERT_UNSUPPORTED_CERTIFICATE 1043
|
||||
#define SSL_R_SSL_CTX_HAS_NO_DEFAULT_SSL_VERSION 228
|
||||
#define SSL_R_SSL_HANDSHAKE_FAILURE 229
|
||||
#define SSL_R_SSL_LIBRARY_HAS_NO_CIPHERS 230
|
||||
#define SSL_R_SSL_SESSION_ID_CALLBACK_FAILED 1102
|
||||
#define SSL_R_SSL_SESSION_ID_CONFLICT 1103
|
||||
#define SSL_R_SSL_SESSION_ID_CALLBACK_FAILED 301
|
||||
#define SSL_R_SSL_SESSION_ID_CONFLICT 302
|
||||
#define SSL_R_SSL_SESSION_ID_CONTEXT_TOO_LONG 273
|
||||
#define SSL_R_SSL_SESSION_ID_HAS_BAD_LENGTH 1101
|
||||
#define SSL_R_SSL_SESSION_ID_HAS_BAD_LENGTH 303
|
||||
#define SSL_R_SSL_SESSION_ID_IS_DIFFERENT 231
|
||||
#define SSL_R_TLSV1_ALERT_ACCESS_DENIED 1049
|
||||
#define SSL_R_TLSV1_ALERT_DECODE_ERROR 1050
|
||||
@@ -1964,15 +1960,20 @@ void ERR_load_SSL_strings(void);
|
||||
#define SSL_R_TLSV1_ALERT_RECORD_OVERFLOW 1022
|
||||
#define SSL_R_TLSV1_ALERT_UNKNOWN_CA 1048
|
||||
#define SSL_R_TLSV1_ALERT_USER_CANCELLED 1090
|
||||
#define SSL_R_TLSV1_BAD_CERTIFICATE_HASH_VALUE 1114
|
||||
#define SSL_R_TLSV1_BAD_CERTIFICATE_STATUS_RESPONSE 1113
|
||||
#define SSL_R_TLSV1_CERTIFICATE_UNOBTAINABLE 1111
|
||||
#define SSL_R_TLSV1_UNRECOGNIZED_NAME 1112
|
||||
#define SSL_R_TLSV1_UNSUPPORTED_EXTENSION 1110
|
||||
#define SSL_R_TLS_CLIENT_CERT_REQ_WITH_ANON_CIPHER 232
|
||||
#define SSL_R_TLS_PEER_DID_NOT_RESPOND_WITH_CERTIFICATE_LIST 233
|
||||
#define SSL_R_TLS_RSA_ENCRYPTED_VALUE_LENGTH_IS_WRONG 234
|
||||
#define SSL_R_TRIED_TO_USE_UNSUPPORTED_CIPHER 235
|
||||
#define SSL_R_UNABLE_TO_DECODE_DH_CERTS 236
|
||||
#define SSL_R_UNABLE_TO_DECODE_ECDH_CERTS 1115
|
||||
#define SSL_R_UNABLE_TO_DECODE_ECDH_CERTS 313
|
||||
#define SSL_R_UNABLE_TO_EXTRACT_PUBLIC_KEY 237
|
||||
#define SSL_R_UNABLE_TO_FIND_DH_PARAMETERS 238
|
||||
#define SSL_R_UNABLE_TO_FIND_ECDH_PARAMETERS 1116
|
||||
#define SSL_R_UNABLE_TO_FIND_ECDH_PARAMETERS 314
|
||||
#define SSL_R_UNABLE_TO_FIND_PUBLIC_KEY_PARAMETERS 239
|
||||
#define SSL_R_UNABLE_TO_FIND_SSL_METHOD 240
|
||||
#define SSL_R_UNABLE_TO_LOAD_SSL2_MD5_ROUTINES 241
|
||||
@@ -1993,8 +1994,7 @@ void ERR_load_SSL_strings(void);
|
||||
#define SSL_R_UNKNOWN_STATE 255
|
||||
#define SSL_R_UNSUPPORTED_CIPHER 256
|
||||
#define SSL_R_UNSUPPORTED_COMPRESSION_ALGORITHM 257
|
||||
#define SSL_R_UNSUPPORTED_ELLIPTIC_CURVE 1118
|
||||
#define SSL_R_UNSUPPORTED_OPTION 1091
|
||||
#define SSL_R_UNSUPPORTED_ELLIPTIC_CURVE 315
|
||||
#define SSL_R_UNSUPPORTED_PROTOCOL 258
|
||||
#define SSL_R_UNSUPPORTED_SSL_VERSION 259
|
||||
#define SSL_R_WRITE_BIO_NOT_SET 260
|
||||
|
Reference in New Issue
Block a user