Go to the documentation of this file.00001
00002
00003
00004
00005
00006 #ifndef GD_GSS_API_NEGOTIATESCHEME_H_
00007 #define GD_GSS_API_NEGOTIATESCHEME_H_
00008
00009 #include <stdint.h>
00010
00011 #if defined(_WIN32)
00012 # define GD_ATTRIBUTE(ignore)
00013 #else
00014 # define GD_ATTRIBUTE __attribute__
00015 #endif
00016
00017 namespace GD
00018 {
00019
00020 namespace GSS_API
00021 {
00022
00050 enum class GssStatusCode
00051 {
00052
00053
00056 STATUS_GSS_S_COMPLETE,
00057
00058
00059
00060
00061
00064 STATUS_GSS_S_CALL_INACCESSIBLE_READ,
00065
00068 STATUS_GSS_S_CALL_INACCESSIBLE_WRITE,
00069
00072 STATUS_GSS_S_CALL_BAD_STRUCTURE,
00073
00074
00075
00076
00077
00080 STATUS_GSS_S_BAD_MECH,
00081
00084 STATUS_GSS_S_BAD_NAME,
00085
00088 STATUS_GSS_S_BAD_NAMETYPE,
00089
00090
00093 STATUS_GSS_S_BAD_BINDINGS,
00094
00097 STATUS_GSS_S_BAD_STATUS,
00098
00101 STATUS_GSS_S_BAD_SIG,
00102
00105 STATUS_GSS_S_BAD_MIC,
00106
00109 STATUS_GSS_S_NO_CRED,
00110
00113 STATUS_GSS_S_NO_CONTEXT,
00114
00117 STATUS_GSS_S_DEFECTIVE_TOKEN,
00118
00121 STATUS_GSS_S_DEFECTIVE_CREDENTIAL,
00122
00125 STATUS_GSS_S_CREDENTIALS_EXPIRED,
00126
00129 STATUS_GSS_S_CONTEXT_EXPIRED,
00130
00133 STATUS_GSS_S_FAILURE,
00134
00137 STATUS_GSS_S_BAD_QOP,
00138
00141 STATUS_GSS_S_UNAUTHORIZED,
00142
00145 STATUS_GSS_S_UNAVAILABLE,
00146
00149 STATUS_GSS_S_DUPLICATE_ELEMENT,
00150
00153 STATUS_GSS_S_NAME_NOT_MN,
00154
00155
00156
00157
00158
00161 STATUS_GSS_S_CONTINUE_NEEDED,
00162
00165 STATUS_GSS_S_DUPLICATE_TOKEN,
00166
00169 STATUS_GSS_S_OLD_TOKEN,
00170
00173 STATUS_GSS_S_UNSEQ_TOKEN,
00174
00177 STATUS_GSS_S_GAP_TOKEN,
00178
00181 STATUS_UNKNOWN
00182 };
00183
00194 enum class NegotiateMechanism
00195 {
00198 NEGOTIATE_MECHANISM_SPNEGO,
00199
00202 NEGOTIATE_MECHANISM_KRB5
00203 };
00204
00253 class GD_ATTRIBUTE((visibility("default"))) NegotiateScheme
00254 {
00255
00256 public:
00260 NegotiateScheme();
00261 ~NegotiateScheme();
00262
00263 public:
00264
00319 char* generateGssApiData(const char* token,
00320 const char* hostname,
00321 const bool allow_delegation);
00322
00376 char* generateGssApiData(const char* token,
00377 NegotiateMechanism mechanism,
00378 const char* service_principal_name,
00379 const bool allow_delegation);
00380
00392 GssStatusCode getGssApiStatus() const;
00393
00405 bool gssContextEstablishmentInitiated() const;
00406
00407
00408 private:
00409 void* _impl;
00410 };
00411
00412
00413 }
00414
00415 }
00416
00417 #endif