2 * Copyright (c) 2014, 2015 JANET(UK)
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
12 * 2. Redistributions in binary form must reproduce the above copyright
13 * notice, this list of conditions and the following disclaimer in the
14 * documentation and/or other materials provided with the distribution.
16 * 3. Neither the name of JANET(UK) nor the names of its contributors
17 * may be used to endorse or promote products derived from this software
18 * without specific prior written permission.
20 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
23 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
24 * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
25 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
26 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
27 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
28 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
29 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
30 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
31 * OF THE POSSIBILITY OF SUCH DAMAGE.
36 #include "../GSSException.h"
38 GSSOID::GSSOID(std::string oid_str)
40 init( GSSBuffer(oid_str) );
43 GSSOID::GSSOID(char *oid_str)
45 init( GSSBuffer(oid_str) );
48 GSSOID::GSSOID(GSSBuffer oid_str)
53 GSSOID::GSSOID(gss_OID gssoid)
56 this->gssInternal = true;
59 GSSOID::GSSOID ( const GSSOID &gssoid )
61 this->oid = gssoid.oid;
62 this->gssInternal = true;
65 void GSSOID::release()
67 OM_uint32 major, minor;
68 if ( (!this->gssInternal) && (oid != GSS_C_NO_OID) )
70 major = gss_release_oid(&minor, &(this->oid));
73 throw GSSException("Error in releasing a GSS OID", major, minor);
83 void GSSOID::init(GSSBuffer oid_str)
86 OM_uint32 major, minor;
92 major = gss_str_to_oid(&minor, oid_str.toGss(), &(this->oid));
95 throw GSSException("Error creating GSS OID", major, minor);
97 this->gssInternal = false;
103 std::string GSSOID::toString() const
106 OM_uint32 major, minor;
111 if (oid->length == 0)
112 return std::string("");
115 major = gss_oid_to_str(&minor, this->oid, &buf);
116 if (GSS_ERROR(major))
118 throw GSSException("Error in creating a string representation of a GSS OID",
121 ret = std::string((char *)buf.value);
124 major = gss_release_buffer(&minor, &buf);
125 if (GSS_ERROR(major))
127 throw GSSException("Error releasing a gss_buffer",
135 JSONObject *GSSOID::toJSONValue() const
137 std::string val = this->toString();
138 JSONObject *ret = new JSONObject( val.c_str() );
142 bool GSSOID::setValue ( GSSBuffer buf )
148 bool GSSOID::setValue ( gss_OID gssOID )
151 this->gssInternal = true;