150477Speter/* $NetBSD: gss_display_name_ext.c,v 1.2 2017/01/28 21:31:46 christos Exp $ */ 240269Srnordier 340326Srnordier/* 440326Srnordier * Copyright (c) 2010, PADL Software Pty Ltd. 540326Srnordier * All rights reserved. 640326Srnordier * 740326Srnordier * Redistribution and use in source and binary forms, with or without 840326Srnordier * modification, are permitted provided that the following conditions 980751Sjhb * are met: 1040404Srnordier * 1140326Srnordier * 1. Redistributions of source code must retain the above copyright 1280751Sjhb * notice, this list of conditions and the following disclaimer. 1380751Sjhb * 1448919Srnordier * 2. Redistributions in binary form must reproduce the above copyright 1562138Sjhb * notice, this list of conditions and the following disclaimer in the 1648919Srnordier * documentation and/or other materials provided with the distribution. 1742480Srnordier * 1842480Srnordier * 3. Neither the name of PADL Software nor the names of its contributors 1940541Srnordier * may be used to endorse or promote products derived from this software 2040541Srnordier * without specific prior written permission. 2140269Srnordier * 2240269Srnordier * THIS SOFTWARE IS PROVIDED BY PADL SOFTWARE AND CONTRIBUTORS ``AS IS'' AND 2340269Srnordier * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 2440269Srnordier * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 2540269Srnordier * ARE DISCLAIMED. IN NO EVENT SHALL PADL SOFTWARE OR CONTRIBUTORS BE LIABLE 2640269Srnordier * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 2740269Srnordier * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 2840269Srnordier * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 2940269Srnordier * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 3096327Sjhb * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 3196306Sobrien * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 3296327Sjhb * SUCH DAMAGE. 3396306Sobrien */ 3440269Srnordier 3540269Srnordier#include "mech_locl.h" 3640269Srnordier 3740269SrnordierGSSAPI_LIB_FUNCTION OM_uint32 GSSAPI_LIB_CALL 3840269Srnordiergss_display_name_ext(OM_uint32 *minor_status, 3940269Srnordier gss_name_t input_name, 4040269Srnordier gss_OID display_as_name_type, 4140269Srnordier gss_buffer_t display_name) 4240269Srnordier{ 4340308Srnordier OM_uint32 major_status = GSS_S_UNAVAILABLE; 4440269Srnordier struct _gss_name *name = (struct _gss_name *) input_name; 4540269Srnordier struct _gss_mechanism_name *mn; 4640269Srnordier 4740269Srnordier *minor_status = 0; 4860821Sjhb _mg_buffer_zero(display_name); 4960821Sjhb 5040269Srnordier if (input_name == GSS_C_NO_NAME) 5180751Sjhb return GSS_S_BAD_NAME; 5280751Sjhb 5380751Sjhb HEIM_SLIST_FOREACH(mn, &name->gn_mn, gmn_link) { 5480751Sjhb gssapi_mech_interface m = mn->gmn_mech; 5580751Sjhb 5659150Sjhb if (!m->gm_display_name_ext) 5740269Srnordier continue; 5840314Srnordier 5940314Srnordier major_status = m->gm_display_name_ext(minor_status, 6040314Srnordier mn->gmn_name, 6140314Srnordier display_as_name_type, 6240269Srnordier display_name); 6340269Srnordier if (GSS_ERROR(major_status)) 6440269Srnordier _gss_mg_error(m, major_status, *minor_status); 6540269Srnordier else 6640269Srnordier break; 6740308Srnordier } 6840269Srnordier 6940404Srnordier return major_status; 7040269Srnordier} 7140404Srnordier