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(GSSBuffer namestr, GSSOID name_type, gss_imp_name_type fn)
14 OM_uint32 major, minor;
18 major = gss_import_name(&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());
34 GSSName::GSSName(std::string namestr, GSSOID name_type, gss_imp_name_type fn)
36 init(namestr, name_type, fn);
39 GSSName::GSSName(char *namestr, GSSOID name_type, gss_imp_name_type fn)
41 init(GSSBuffer(namestr), name_type, fn);
44 GSSName::GSSName(GSSBuffer namestr, GSSOID name_type, gss_imp_name_type fn)
46 init(GSSBuffer(namestr), name_type, fn);
49 GSSName::GSSName(std::string namestr, gss_OID name_type, gss_imp_name_type fn)
51 init(GSSBuffer(namestr), GSSOID(name_type), fn);
54 GSSName::GSSName(char *namestr, gss_OID name_type, gss_imp_name_type fn)
56 init(GSSBuffer(namestr), GSSOID(name_type), fn);
59 GSSName::GSSName(GSSBuffer namestr, gss_OID name_type, gss_imp_name_type fn)
61 init(namestr, GSSOID(name_type), fn);
64 GSSName::GSSName(std::string namestr, std::string name_type, gss_imp_name_type fn)
66 init(GSSBuffer(namestr), GSSOID(name_type), fn);
69 GSSName::GSSName(char *namestr, std::string name_type, gss_imp_name_type fn)
71 init(GSSBuffer(namestr), GSSOID(name_type), fn);
74 GSSName::GSSName(GSSBuffer namestr, std::string name_type, gss_imp_name_type fn)
76 init(namestr, GSSOID(name_type), fn);
83 OM_uint32 major, minor;
88 major = gss_release_name(&minor, &name);
89 if ( GSS_ERROR(major) && !( major & GSS_S_BAD_NAME ) )
91 throw GSSException("Cannot free memory for a GSS name.", major, minor);
99 std::string GSSName::toString()
102 OM_uint32 major, minor;
109 major = gss_display_name(&minor, (this->name), buf.toGss(), &oid);
110 if ( GSS_ERROR(major) )
112 throw GSSException("Cannot convert a GSS name to a string.", major, minor);
117 return buf.toString();