xref: /freebsd/lib/libgssapi/gss_display_status.3 (revision c0b9f4fe659b6839541970eb5675e57f4d814969)
1c0b9f4feSDoug Rabson.\" -*- nroff -*-
2c0b9f4feSDoug Rabson.\"
3c0b9f4feSDoug Rabson.\" Copyright (c) 2005 Doug Rabson
4c0b9f4feSDoug Rabson.\" All rights reserved.
5c0b9f4feSDoug Rabson.\"
6c0b9f4feSDoug Rabson.\" Redistribution and use in source and binary forms, with or without
7c0b9f4feSDoug Rabson.\" modification, are permitted provided that the following conditions
8c0b9f4feSDoug Rabson.\" are met:
9c0b9f4feSDoug Rabson.\" 1. Redistributions of source code must retain the above copyright
10c0b9f4feSDoug Rabson.\"    notice, this list of conditions and the following disclaimer.
11c0b9f4feSDoug Rabson.\" 2. Redistributions in binary form must reproduce the above copyright
12c0b9f4feSDoug Rabson.\"    notice, this list of conditions and the following disclaimer in the
13c0b9f4feSDoug Rabson.\"    documentation and/or other materials provided with the distribution.
14c0b9f4feSDoug Rabson.\"
15c0b9f4feSDoug Rabson.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
16c0b9f4feSDoug Rabson.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17c0b9f4feSDoug Rabson.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18c0b9f4feSDoug Rabson.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
19c0b9f4feSDoug Rabson.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20c0b9f4feSDoug Rabson.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
21c0b9f4feSDoug Rabson.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
22c0b9f4feSDoug Rabson.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
23c0b9f4feSDoug Rabson.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
24c0b9f4feSDoug Rabson.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
25c0b9f4feSDoug Rabson.\" SUCH DAMAGE.
26c0b9f4feSDoug Rabson.\"
27c0b9f4feSDoug Rabson.\"	$FreeBSD$
28c0b9f4feSDoug Rabson.\"
29c0b9f4feSDoug Rabson.\" Copyright (C) The Internet Society (2000).  All Rights Reserved.
30c0b9f4feSDoug Rabson.\"
31c0b9f4feSDoug Rabson.\" This document and translations of it may be copied and furnished to
32c0b9f4feSDoug Rabson.\" others, and derivative works that comment on or otherwise explain it
33c0b9f4feSDoug Rabson.\" or assist in its implementation may be prepared, copied, published
34c0b9f4feSDoug Rabson.\" and distributed, in whole or in part, without restriction of any
35c0b9f4feSDoug Rabson.\" kind, provided that the above copyright notice and this paragraph are
36c0b9f4feSDoug Rabson.\" included on all such copies and derivative works.  However, this
37c0b9f4feSDoug Rabson.\" document itself may not be modified in any way, such as by removing
38c0b9f4feSDoug Rabson.\" the copyright notice or references to the Internet Society or other
39c0b9f4feSDoug Rabson.\" Internet organizations, except as needed for the purpose of
40c0b9f4feSDoug Rabson.\" developing Internet standards in which case the procedures for
41c0b9f4feSDoug Rabson.\" copyrights defined in the Internet Standards process must be
42c0b9f4feSDoug Rabson.\" followed, or as required to translate it into languages other than
43c0b9f4feSDoug Rabson.\" English.
44c0b9f4feSDoug Rabson.\"
45c0b9f4feSDoug Rabson.\" The limited permissions granted above are perpetual and will not be
46c0b9f4feSDoug Rabson.\" revoked by the Internet Society or its successors or assigns.
47c0b9f4feSDoug Rabson.\"
48c0b9f4feSDoug Rabson.\" This document and the information contained herein is provided on an
49c0b9f4feSDoug Rabson.\" "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
50c0b9f4feSDoug Rabson.\" TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
51c0b9f4feSDoug Rabson.\" BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
52c0b9f4feSDoug Rabson.\" HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
53c0b9f4feSDoug Rabson.\" MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
54c0b9f4feSDoug Rabson.\"
55c0b9f4feSDoug Rabson.\" The following commands are required for all man pages.
56c0b9f4feSDoug Rabson.Dd November 12, 2005
57c0b9f4feSDoug Rabson.Os
58c0b9f4feSDoug Rabson.Dt GSS_DISPLAY_STATUS 3 PRM
59c0b9f4feSDoug Rabson.Sh NAME
60c0b9f4feSDoug Rabson.Nm gss_display_status
61c0b9f4feSDoug Rabson.Nd Convert a GSS-API status code to text
62c0b9f4feSDoug Rabson.\" This next command is for sections 2 and 3 only.
63c0b9f4feSDoug Rabson.\" .Sh LIBRARY
64c0b9f4feSDoug Rabson.Sh SYNOPSIS
65c0b9f4feSDoug Rabson.In "gssapi/gssapi.h"
66c0b9f4feSDoug Rabson.Ft OM_uint32
67c0b9f4feSDoug Rabson.Fo gss_display_status
68c0b9f4feSDoug Rabson.Fa "OM_uint32 *minor_status"
69c0b9f4feSDoug Rabson.Fa "OM_uint32 status_value"
70c0b9f4feSDoug Rabson.Fa "int status_type"
71c0b9f4feSDoug Rabson.Fa "const gss_OID mech_type"
72c0b9f4feSDoug Rabson.Fa "OM_uint32 *message_context"
73c0b9f4feSDoug Rabson.Fa "gss_buffer_t status_string"
74c0b9f4feSDoug Rabson.Fc
75c0b9f4feSDoug Rabson.Sh DESCRIPTION
76c0b9f4feSDoug RabsonAllows an application to obtain a textual representation of a GSS-API
77c0b9f4feSDoug Rabsonstatus code,
78c0b9f4feSDoug Rabsonfor display to the user or for logging purposes.
79c0b9f4feSDoug RabsonSince some status values may indicate multiple conditions,
80c0b9f4feSDoug Rabsonapplications may need to call
81c0b9f4feSDoug Rabson.Fn gss_display_status
82c0b9f4feSDoug Rabsonmultiple times,
83c0b9f4feSDoug Rabsoneach call generating a single text string.
84c0b9f4feSDoug RabsonThe
85c0b9f4feSDoug Rabson.Fa message_context
86c0b9f4feSDoug Rabsonparameter is used by
87c0b9f4feSDoug Rabson.Fn gss_display_status
88c0b9f4feSDoug Rabsonto store state information about which error messages have already
89c0b9f4feSDoug Rabsonbeen extracted from a given
90c0b9f4feSDoug Rabson.Fa status_value ;
91c0b9f4feSDoug Rabson.Fa message_context
92c0b9f4feSDoug Rabsonmust be initialized to zero by the application prior to the first call,
93c0b9f4feSDoug Rabsonand
94c0b9f4feSDoug Rabson.Fn gss_display_status
95c0b9f4feSDoug Rabsonwill return a non-zero value in this parameter if there are further
96c0b9f4feSDoug Rabsonmessages to extract.
97c0b9f4feSDoug Rabson.Pp
98c0b9f4feSDoug RabsonThe
99c0b9f4feSDoug Rabson.Fa message_context
100c0b9f4feSDoug Rabsonparameter contains all state information required by
101c0b9f4feSDoug Rabson.Fn gss_display_status
102c0b9f4feSDoug Rabsonin order to extract further messages from the
103c0b9f4feSDoug Rabson.Fa status_value ;
104c0b9f4feSDoug Rabsoneven when a non-zero value is returned in this parameter,
105c0b9f4feSDoug Rabsonthe application is not required to call
106c0b9f4feSDoug Rabson.Fn gss_display_status
107c0b9f4feSDoug Rabsonagain unless subsequent messages are desired.
108c0b9f4feSDoug RabsonThe following code extracts all messages from a given status code and prints them to stderr:
109c0b9f4feSDoug Rabson.Bd -literal
110c0b9f4feSDoug RabsonOM_uint32 message_context;
111c0b9f4feSDoug RabsonOM_uint32 status_code;
112c0b9f4feSDoug RabsonOM_uint32 maj_status;
113c0b9f4feSDoug RabsonOM_uint32 min_status;
114c0b9f4feSDoug Rabsongss_buffer_desc status_string;
115c0b9f4feSDoug Rabson
116c0b9f4feSDoug Rabson       ...
117c0b9f4feSDoug Rabson
118c0b9f4feSDoug Rabsonmessage_context = 0;
119c0b9f4feSDoug Rabson
120c0b9f4feSDoug Rabsondo {
121c0b9f4feSDoug Rabson
122c0b9f4feSDoug Rabson  maj_status = gss_display_status (
123c0b9f4feSDoug Rabson		  &min_status,
124c0b9f4feSDoug Rabson		  status_code,
125c0b9f4feSDoug Rabson		  GSS_C_GSS_CODE,
126c0b9f4feSDoug Rabson		  GSS_C_NO_OID,
127c0b9f4feSDoug Rabson		  &message_context,
128c0b9f4feSDoug Rabson		  &status_string)
129c0b9f4feSDoug Rabson
130c0b9f4feSDoug Rabson  fprintf(stderr,
131c0b9f4feSDoug Rabson	  "%.*s\\n",
132c0b9f4feSDoug Rabson	 (int)status_string.length,
133c0b9f4feSDoug Rabson	 (char *)status_string.value);
134c0b9f4feSDoug Rabson
135c0b9f4feSDoug Rabson  gss_release_buffer(&min_status, &status_string);
136c0b9f4feSDoug Rabson
137c0b9f4feSDoug Rabson} while (message_context != 0);
138c0b9f4feSDoug Rabson.Ed
139c0b9f4feSDoug Rabson.Sh PARAMETERS
140c0b9f4feSDoug Rabson.Bl -tag
141c0b9f4feSDoug Rabson.It minor_status
142c0b9f4feSDoug RabsonMechanism specific status code.
143c0b9f4feSDoug Rabson.It status_value
144c0b9f4feSDoug RabsonStatus value to be converted
145c0b9f4feSDoug Rabson.It status_type
146c0b9f4feSDoug Rabson.Bl -tag
147c0b9f4feSDoug Rabson.It GSS_C_GSS_CODE
148c0b9f4feSDoug Rabson.Fa status_value
149c0b9f4feSDoug Rabsonis a GSS status code
150c0b9f4feSDoug Rabson.It GSS_C_MECH_CODE
151c0b9f4feSDoug Rabson.Fa status_value
152c0b9f4feSDoug Rabsonis a mechanism status code
153c0b9f4feSDoug Rabson.El
154c0b9f4feSDoug Rabson.It mech_type
155c0b9f4feSDoug RabsonUnderlying mechanism (used to interpret a minor status value).
156c0b9f4feSDoug RabsonSupply
157c0b9f4feSDoug Rabson.Dv GSS_C_NO_OID
158c0b9f4feSDoug Rabsonto obtain the system default.
159c0b9f4feSDoug Rabson.It message_context
160c0b9f4feSDoug RabsonShould be initialized to zero by the application prior to the first
161c0b9f4feSDoug Rabsoncall.
162c0b9f4feSDoug RabsonOn return from
163c0b9f4feSDoug Rabson.Fn gss_display_status ,
164c0b9f4feSDoug Rabsona non-zero status_value parameter indicates that additional messages
165c0b9f4feSDoug Rabsonmay be extracted from the status code via subsequent calls to
166c0b9f4feSDoug Rabson.Fn gss_display_status ,
167c0b9f4feSDoug Rabsonpassing the same
168c0b9f4feSDoug Rabson.Fa status_value ,
169c0b9f4feSDoug Rabson.Fa status_type ,
170c0b9f4feSDoug Rabson.Fa mech_type ,
171c0b9f4feSDoug Rabsonand
172c0b9f4feSDoug Rabson.Fa message_context
173c0b9f4feSDoug Rabsonparameters.
174c0b9f4feSDoug Rabson.It status_string
175c0b9f4feSDoug RabsonTextual interpretation of the
176c0b9f4feSDoug Rabson.Fa status_value .
177c0b9f4feSDoug RabsonStorage associated with this parameter must be freed by the
178c0b9f4feSDoug Rabsonapplication after use with a call to
179c0b9f4feSDoug Rabson.Fn gss_release_buffer .
180c0b9f4feSDoug Rabson.El
181c0b9f4feSDoug Rabson.Sh RETURN VALUES
182c0b9f4feSDoug Rabson.Bl -tag
183c0b9f4feSDoug Rabson.It GSS_S_COMPLETE
184c0b9f4feSDoug RabsonSuccessful completion
185c0b9f4feSDoug Rabson.It GSS_S_BAD_MECH
186c0b9f4feSDoug RabsonIndicates that translation in accordance with an unsupported mechanism
187c0b9f4feSDoug Rabsontype was requested
188c0b9f4feSDoug Rabson.It GSS_S_BAD_STATUS
189c0b9f4feSDoug RabsonThe status value was not recognized, or the status type was neither
190c0b9f4feSDoug Rabson.Dv GSS_C_GSS_CODE
191c0b9f4feSDoug Rabsonnor
192c0b9f4feSDoug Rabson.Dv GSS_C_MECH_CODE .
193c0b9f4feSDoug Rabson.El
194c0b9f4feSDoug Rabson.Sh SEE ALSO
195c0b9f4feSDoug Rabson.Xr gss_release_buffer 3
196c0b9f4feSDoug Rabson.Sh STANDARDS
197c0b9f4feSDoug Rabson.Bl -tag
198c0b9f4feSDoug Rabson.It RFC 2743
199c0b9f4feSDoug RabsonGeneric Security Service Application Program Interface Version 2, Update 1
200c0b9f4feSDoug Rabson.It RFC 2744
201c0b9f4feSDoug RabsonGeneric Security Service API Version 2 : C-bindings
202c0b9f4feSDoug Rabson.\" .Sh HISTORY
203c0b9f4feSDoug Rabson.El
204c0b9f4feSDoug Rabson.Sh HISTORY
205c0b9f4feSDoug RabsonThe
206c0b9f4feSDoug Rabson.Nm
207c0b9f4feSDoug Rabsonmanual page example first appeared in
208c0b9f4feSDoug Rabson.Fx 7.0 .
209c0b9f4feSDoug Rabson.Sh AUTHORS
210c0b9f4feSDoug RabsonJohn Wray, Iris Associates
211