blackberry.com
BlackBerry Dynamics
Runtime library for macOS applications
from the application developer portal

GDNegotiateScheme.h

Go to the documentation of this file.
00001 /*
00002  * (c) 2017 BlackBerry Limited. All rights reserved.
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     /* Major status codes. */
00053 
00056     STATUS_GSS_S_COMPLETE,
00057     
00058     /*
00059      * Calling errors.
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      * Routine errors.
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      * Supplementary status:
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 /* final */
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 } // end of namespace GSS_API
00414     
00415 } // end of namespace GD
00416 
00417 #endif /* GDNEGOTIATESCHEME_H_ */