00001 #ifndef __XRDTLS_H__ 00002 #define __XRDTLS_H__ 00003 /******************************************************************************/ 00004 /* */ 00005 /* X r d T l s . h h */ 00006 /* */ 00007 /* (c) 2019 by the Board of Trustees of the Leland Stanford, Jr., University */ 00008 /* Produced by Andrew Hanushevsky for Stanford University under contract */ 00009 /* DE-AC02-76-SFO0515 with the Department of Energy */ 00010 /* */ 00011 /* This file is part of the XRootD software suite. */ 00012 /* */ 00013 /* XRootD is free software: you can redistribute it and/or modify it under */ 00014 /* the terms of the GNU Lesser General Public License as published by the */ 00015 /* Free Software Foundation, either version 3 of the License, or (at your */ 00016 /* option) any later version. */ 00017 /* */ 00018 /* XRootD is distributed in the hope that it will be useful, but WITHOUT */ 00019 /* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or */ 00020 /* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public */ 00021 /* License for more details. */ 00022 /* */ 00023 /* You should have received a copy of the GNU Lesser General Public License */ 00024 /* along with XRootD in a file called COPYING.LESSER (LGPL license) and file */ 00025 /* COPYING (GPL license). If not, see <http://www.gnu.org/licenses/>. */ 00026 /* */ 00027 /* The copyright holder's institutional names and contributor's names may not */ 00028 /* be used to endorse or promote products derived from this software without */ 00029 /* specific prior written permission of the institution or contributor. */ 00030 /******************************************************************************/ 00031 00032 #include <string> 00033 00034 class XrdSysLogger; 00035 00036 class XrdTls 00037 { 00038 public: 00039 00040 enum RC {TLS_AOK = 0, 00041 TLS_CON_Closed, 00042 TLS_CRT_Missing, 00043 TLS_CTX_Missing, 00044 TLS_HNV_Error, 00045 TLS_SSL_Error, 00046 TLS_SYS_Error, 00047 TLS_UNK_Error, 00048 TLS_VER_Error, 00049 TLS_WantAccept, 00050 TLS_WantConnect, 00051 TLS_WantRead, 00052 TLS_WantWrite 00053 }; 00054 00055 //------------------------------------------------------------------------ 00062 //------------------------------------------------------------------------ 00063 00064 static void Emsg(const char *tid, const char *msg=0, bool flush=true); 00065 00066 //------------------------------------------------------------------------ 00074 //------------------------------------------------------------------------ 00075 00076 static std::string RC2Text(XrdTls::RC rc, bool dbg=false); 00077 00078 //------------------------------------------------------------------------ 00085 //------------------------------------------------------------------------ 00086 00087 typedef void (*msgCB_t)(const char *tid, const char *msg, bool sslmsg); 00088 00089 static void SetMsgCB(msgCB_t cbP); 00090 00091 //------------------------------------------------------------------------ 00097 //------------------------------------------------------------------------ 00098 00099 static const int dbgOFF = 0; 00100 static const int dbgCTX = 1; 00101 static const int dbgSOK = 2; 00102 static const int dbgSIO = 4; 00103 static const int dbgALL = 7; 00104 static const int dbgOUT = 8; 00105 00106 static void SetDebug(int opts, XrdSysLogger *logP=0); 00107 00108 static void SetDebug(int opts, msgCB_t logP); 00109 00110 //------------------------------------------------------------------------ 00116 //------------------------------------------------------------------------ 00117 00118 static RC ssl2RC(int sslrc); 00119 00120 //------------------------------------------------------------------------ 00130 //------------------------------------------------------------------------ 00131 00132 static const char *ssl2Text(int sslrc, const char *dflt="unknown_error"); 00133 00134 //------------------------------------------------------------------------ 00136 //------------------------------------------------------------------------ 00137 00138 static void ClearErrorQueue(); 00139 }; 00140 #endif