GSS Acquire Cred calling out correctly; slight reorginzation
[gssweb.git] / json_gssapi / src / datamodel / GSSName.h
1 /*
2  * Copyright (c) 2014 <copyright holder> <email>
3  * 
4  * For license details, see the LICENSE file in the root of this project.
5  * 
6  */
7
8 #include <string>
9 #include "GSSBuffer.h"
10 #include "GSSOID.h"
11
12 #ifndef GSSNAME_H
13 #define GSSNAME_H
14
15
16 typedef OM_uint32 (*gss_imp_name_type)(
17     OM_uint32 *,        /* minor_status */
18     gss_buffer_t,       /* input_name_buffer */
19     gss_OID,            /* input_name_type(used to be const) */
20     gss_name_t *);      /* output_name */
21
22
23 class GSSName {
24 public:
25   GSSName() {name = GSS_C_NO_NAME; };
26   GSSName(std::string nameStr, 
27           GSSOID name_type = GSSOID( (gss_OID)GSS_C_NO_OID ), 
28           gss_imp_name_type fn = (gss_imp_name_type)&gss_import_name);
29   GSSName(std::string nameStr, 
30           gss_OID name_type, 
31           gss_imp_name_type fn = (gss_imp_name_type)&gss_import_name);
32   GSSName(std::string nameStr, 
33           std::string name_type, 
34           gss_imp_name_type fn = (gss_imp_name_type)&gss_import_name);
35
36   GSSName(char *namestr,       
37           GSSOID name_type = GSSOID( (gss_OID)GSS_C_NO_OID ), 
38           gss_imp_name_type fn = (gss_imp_name_type)&gss_import_name);
39   GSSName(char *namestr,       
40           gss_OID name_type, 
41           gss_imp_name_type fn = (gss_imp_name_type)&gss_import_name);
42   GSSName(char *namestr,       
43           std::string name_type, 
44           gss_imp_name_type fn = (gss_imp_name_type)&gss_import_name);
45
46   GSSName(GSSBuffer namestr,   
47           GSSOID name_type = GSSOID( (gss_OID)GSS_C_NO_OID ), 
48           gss_imp_name_type fn = (gss_imp_name_type)&gss_import_name);
49   GSSName(GSSBuffer namestr,   
50           gss_OID name_type, 
51           gss_imp_name_type fn = (gss_imp_name_type)&gss_import_name);
52   GSSName(GSSBuffer namestr,   
53           std::string name_type, 
54           gss_imp_name_type fn = (gss_imp_name_type)&gss_import_name);
55
56   GSSName(gss_name_t gss_name) { name = gss_name; }
57
58   ~GSSName();
59   
60   
61   gss_name_t toGss() const { return(name); }
62   std::string toString() const;
63   
64   bool setValue(gss_name_t newName);
65   void setKey(std::string key) { this->hashKey = key; }
66   std::string getKey() const { return this->hashKey; }
67   
68   OM_uint32 getMajorStatus() const { return this->major_status; }
69   OM_uint32 getMinorStatus() const { return this->minor_status; }
70   
71 private:
72   OM_uint32 major_status, minor_status;
73   gss_name_t name;
74   gss_imp_name_type function;
75   std::string hashKey;
76   
77   void init(const GSSBuffer namestr, GSSOID name_type, gss_imp_name_type fn);
78   void release();
79 };
80
81
82 #endif // GSSNAME_H