2 * Copyright (c) 2014 <copyright holder> <email>
4 * For license details, see the LICENSE file in the root of this project.
9 #include "../GSSException.h"
11 void GSSName::init(const GSSBuffer namestr, GSSOID name_type, gss_imp_name_type fn)
14 OM_uint32 major, minor;
18 major = fn(&minor, namestr.toGss(), name_type.toGss(), &name);
19 if ( GSS_ERROR(major) )
22 errMsg += "Cannot import name: ";
23 errMsg += namestr.toString();
24 throw GSSException(errMsg.c_str(), major, minor, name_type.toGss());
33 GSSName::GSSName(std::string namestr, GSSOID name_type, gss_imp_name_type fn)
35 init(namestr, name_type, fn);
38 GSSName::GSSName(char *namestr, GSSOID name_type, gss_imp_name_type fn)
40 init(GSSBuffer(namestr, true), name_type, fn);
43 GSSName::GSSName(GSSBuffer namestr, GSSOID name_type, gss_imp_name_type fn)
45 init(GSSBuffer(namestr), name_type, fn);
48 GSSName::GSSName(std::string namestr, gss_OID name_type, gss_imp_name_type fn)
50 init(GSSBuffer(namestr, true), GSSOID(name_type), fn);
53 GSSName::GSSName(char *namestr, gss_OID name_type, gss_imp_name_type fn)
55 init(GSSBuffer(namestr, true), GSSOID(name_type), fn);
58 GSSName::GSSName(GSSBuffer namestr, gss_OID name_type, gss_imp_name_type fn)
60 init(namestr, GSSOID(name_type), fn);
63 GSSName::GSSName(std::string namestr, std::string name_type, gss_imp_name_type fn)
65 init(GSSBuffer(namestr, true), GSSOID(name_type), fn);
68 GSSName::GSSName(char *namestr, std::string name_type, gss_imp_name_type fn)
70 init(GSSBuffer(namestr, true), GSSOID(name_type), fn);
73 GSSName::GSSName(GSSBuffer namestr, std::string name_type, gss_imp_name_type fn)
75 init(namestr, GSSOID(name_type), fn);
78 void GSSName::release()
81 OM_uint32 major, minor;
84 if (name == GSS_C_NO_NAME)
89 major = gss_release_name(&minor, &name);
90 if ( GSS_ERROR(major) && !( major & GSS_S_BAD_NAME ) )
92 throw GSSException("Cannot free memory for a GSS name.", major, minor);
105 std::string GSSName::toString()
108 OM_uint32 major, minor;
115 major = gss_display_name(&minor, (this->name), buf.toGss(), &oid);
116 if ( GSS_ERROR(major) )
118 throw GSSException("Cannot convert a GSS name to a string.", major, minor);
123 return buf.toString();
126 bool GSSName::setValue ( gss_name_t newName )
129 this->name = newName;