• BlackBerry Dynamics
  • Runtime library for iOS applications
  • 14.0.8198.18
GDNegotiateScheme.h
Go to the documentation of this file.
1 /*
2  * (c) 2017 BlackBerry Limited. All rights reserved.
3  *
4  */
5 
6 #ifndef GD_GSS_API_NEGOTIATESCHEME_H_
7 #define GD_GSS_API_NEGOTIATESCHEME_H_
8 
9 #include <stdint.h>
10 #include <netinet/in.h>
11 
12 #if defined(_WIN32)
13 # define GD_ATTRIBUTE(ignore)
14 #else
15 # define GD_ATTRIBUTE __attribute__
16 #endif
17 
18 namespace GD
19 {
20 
21 namespace GSS_API
22 {
23 
50 enum class GssStatusCode
51 {
52  /* Major status codes. */
53 
57 
58  /*
59  * Calling errors.
60  */
61 
65 
69 
73 
74  /*
75  * Routine errors.
76  */
77 
81 
85 
89 
90 
94 
98 
102 
106 
110 
114 
118 
122 
126 
130 
134 
138 
142 
146 
150 
154 
155  /*
156  * Supplementary status:
157  */
158 
162 
166 
170 
174 
178 
182 };
183 
198 {
202 
206 };
207 
255 class GD_ATTRIBUTE((visibility("default"))) NegotiateScheme /* final */
256 {
257 
258 public:
262  NegotiateScheme();
263  ~NegotiateScheme();
264 
265 public:
266 
321  char* generateGssApiData(const char* token,
322  const char* hostname,
323  const bool allow_delegation);
324 
325 
385  char* generateGssApiDataWithCB(const char* token,
386  const char* hostname,
387  const bool allow_delegation,
388  const char* initiator_IPV4);
389 
446  char* generateGssApiData(const char* token,
447  NegotiateMechanism mechanism,
448  const char* service_principal_name,
449  const bool allow_delegation);
450 
462  GssStatusCode getGssApiStatus() const;
463 
475  bool gssContextEstablishmentInitiated() const;
476 
481  static void resetKerberosNegotiateTimeout();
482 
489  static void setKerberosNegotiateTimeout(unsigned long timeout);
490 
497  static bool attemptToCancelKDCNegotiate(const char* host);
498 
499 
500 private:
501  void* _impl;
502 };
503 
504 
505 } // end of namespace GSS_API
506 
507 } // end of namespace GD
508 
509 #endif /* GDNEGOTIATESCHEME_H_ */
GD
Definition: GDKerberosAuthHandler.h:16
GD::GSS_API::GssStatusCode::STATUS_GSS_S_BAD_QOP
@ STATUS_GSS_S_BAD_QOP
GSS-API status code: GSS_S_BAD_QOP.
GD::GSS_API::GssStatusCode::STATUS_GSS_S_CALL_INACCESSIBLE_READ
@ STATUS_GSS_S_CALL_INACCESSIBLE_READ
GSS-API status code: GSS_S_CALL_INACCESSIBLE_READ.
GD::GSS_API::GssStatusCode::STATUS_GSS_S_BAD_NAME
@ STATUS_GSS_S_BAD_NAME
GSS-API status code: GSS_S_BAD_NAME.
GD::GSS_API::GssStatusCode::STATUS_GSS_S_DUPLICATE_TOKEN
@ STATUS_GSS_S_DUPLICATE_TOKEN
GSS-API status code: GSS_S_DUPLICATE_TOKEN.
GD::GSS_API::GssStatusCode::STATUS_GSS_S_BAD_SIG
@ STATUS_GSS_S_BAD_SIG
GSS-API status code: GSS_S_BAD_SIG.
GD::GSS_API::NegotiateMechanism::NEGOTIATE_MECHANISM_KRB5
@ NEGOTIATE_MECHANISM_KRB5
Raw Kerberos version 5 scheme.
GD::GSS_API::GssStatusCode::STATUS_GSS_S_BAD_STATUS
@ STATUS_GSS_S_BAD_STATUS
GSS-API status code: GSS_S_BAD_STATUS.
GD::GSS_API::GssStatusCode::STATUS_GSS_S_UNAUTHORIZED
@ STATUS_GSS_S_UNAUTHORIZED
GSS-API status code: GSS_S_UNAUTHORIZED.
GD::GSS_API::GssStatusCode::STATUS_GSS_S_NO_CRED
@ STATUS_GSS_S_NO_CRED
GSS-API status code: GSS_S_NO_CRED.
GD::GSS_API::GssStatusCode::STATUS_GSS_S_FAILURE
@ STATUS_GSS_S_FAILURE
GSS-API status code: GSS_S_FAILURE.
GD::GSS_API::GssStatusCode::STATUS_GSS_S_CONTEXT_EXPIRED
@ STATUS_GSS_S_CONTEXT_EXPIRED
GSS-API status code: GSS_S_CONTEXT_EXPIRED.
GD::GSS_API::GssStatusCode::STATUS_GSS_S_UNSEQ_TOKEN
@ STATUS_GSS_S_UNSEQ_TOKEN
GSS-API status code: GSS_S_UNSEQ_TOKEN.
GD::GSS_API::GssStatusCode::STATUS_GSS_S_CALL_BAD_STRUCTURE
@ STATUS_GSS_S_CALL_BAD_STRUCTURE
GSS-API status code: GSS_S_CALL_BAD_STRUCTURE.
GD::GSS_API::GssStatusCode::STATUS_GSS_S_CONTINUE_NEEDED
@ STATUS_GSS_S_CONTINUE_NEEDED
GSS-API status code: GSS_S_CONTINUE_NEEDED.
GD::GSS_API::GssStatusCode::STATUS_GSS_S_BAD_BINDINGS
@ STATUS_GSS_S_BAD_BINDINGS
GSS-API status code: GSS_S_BAD_BINDINGS.
GD_ATTRIBUTE
#define GD_ATTRIBUTE
Definition: GDNegotiateScheme.h:15
GD::GSS_API::NegotiateScheme
GSS programming interface, including SPNEGO (C++).
Definition: GDNegotiateScheme.h:255
GD::GSS_API::NegotiateMechanism
NegotiateMechanism
Generic Security Service Application Program Interface negotiation mechanisms (deprecated).
Definition: GDNegotiateScheme.h:197
GD::GSS_API::GssStatusCode::STATUS_GSS_S_UNAVAILABLE
@ STATUS_GSS_S_UNAVAILABLE
GSS-API status code: GSS_S_UNAVAILABLE.
GD::GSS_API::GssStatusCode::STATUS_UNKNOWN
@ STATUS_UNKNOWN
Initial value.
GD::GSS_API::GssStatusCode::STATUS_GSS_S_NO_CONTEXT
@ STATUS_GSS_S_NO_CONTEXT
GSS-API status code: GSS_S_NO_CONTEXT.
GD::GSS_API::GssStatusCode::STATUS_GSS_S_GAP_TOKEN
@ STATUS_GSS_S_GAP_TOKEN
GSS-API status code: GSS_S_GAP_TOKEN.
GD::GSS_API::GssStatusCode::STATUS_GSS_S_COMPLETE
@ STATUS_GSS_S_COMPLETE
GSS-API status code: GSS_S_COMPLETE.
GD::GSS_API::GssStatusCode::STATUS_GSS_S_CREDENTIALS_EXPIRED
@ STATUS_GSS_S_CREDENTIALS_EXPIRED
GSS-API status code: GSS_S_CREDENTIALS_EXPIRED.
GD::GSS_API::GssStatusCode
GssStatusCode
Generic Security Service Application Program Interface status code.
Definition: GDNegotiateScheme.h:50
GD::GSS_API::GssStatusCode::STATUS_GSS_S_BAD_MECH
@ STATUS_GSS_S_BAD_MECH
GSS-API status code: GSS_S_BAD_MECH.
GD::GSS_API::GssStatusCode::STATUS_GSS_S_BAD_MIC
@ STATUS_GSS_S_BAD_MIC
GSS-API status code: GSS_S_BAD_MIC.
GD::GSS_API::GssStatusCode::STATUS_GSS_S_BAD_NAMETYPE
@ STATUS_GSS_S_BAD_NAMETYPE
GSS-API status code: GSS_S_BAD_NAMETYPE.
GD::GSS_API::GssStatusCode::STATUS_GSS_S_DUPLICATE_ELEMENT
@ STATUS_GSS_S_DUPLICATE_ELEMENT
GSS-API status code: GSS_S_DUPLICATE_ELEMENT.
GD::GSS_API::GssStatusCode::STATUS_GSS_S_OLD_TOKEN
@ STATUS_GSS_S_OLD_TOKEN
GSS-API status code: GSS_S_OLD_TOKEN.
GD::GSS_API::GssStatusCode::STATUS_GSS_S_DEFECTIVE_CREDENTIAL
@ STATUS_GSS_S_DEFECTIVE_CREDENTIAL
GSS-API status code: GSS_S_DEFECTIVE_CREDENTIAL.
GD::GSS_API::GssStatusCode::STATUS_GSS_S_DEFECTIVE_TOKEN
@ STATUS_GSS_S_DEFECTIVE_TOKEN
GSS-API status code: GSS_S_DEFECTIVE_TOKEN.
GD::GSS_API::GssStatusCode::STATUS_GSS_S_CALL_INACCESSIBLE_WRITE
@ STATUS_GSS_S_CALL_INACCESSIBLE_WRITE
GSS-API status code: GSS_S_CALL_INACCESSIBLE_WRITE.
GD::GSS_API::GssStatusCode::STATUS_GSS_S_NAME_NOT_MN
@ STATUS_GSS_S_NAME_NOT_MN
GSS-API status code: GSS_S_NAME_NOT_MN.
GD::GSS_API::NegotiateMechanism::NEGOTIATE_MECHANISM_SPNEGO
@ NEGOTIATE_MECHANISM_SPNEGO
Simple and Protected GSS-API Negotiation.