document krb5_storage and related functions
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@13569 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
		
							
								
								
									
										383
									
								
								lib/krb5/krb5_storage.3
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										383
									
								
								lib/krb5/krb5_storage.3
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,383 @@ | ||||
| .\" Copyright (c) 2003 - 2004 Kungliga Tekniska H<>gskolan | ||||
| .\" (Royal Institute of Technology, Stockholm, Sweden). | ||||
| .\" All rights reserved. | ||||
| .\" | ||||
| .\" Redistribution and use in source and binary forms, with or without | ||||
| .\" modification, are permitted provided that the following conditions | ||||
| .\" are met: | ||||
| .\" | ||||
| .\" 1. Redistributions of source code must retain the above copyright | ||||
| .\"    notice, this list of conditions and the following disclaimer. | ||||
| .\" | ||||
| .\" 2. Redistributions in binary form must reproduce the above copyright | ||||
| .\"    notice, this list of conditions and the following disclaimer in the | ||||
| .\"    documentation and/or other materials provided with the distribution. | ||||
| .\" | ||||
| .\" 3. Neither the name of the Institute nor the names of its contributors | ||||
| .\"    may be used to endorse or promote products derived from this software | ||||
| .\"    without specific prior written permission. | ||||
| .\" | ||||
| .\" THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND | ||||
| .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||||
| .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | ||||
| .\" ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE | ||||
| .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||||
| .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | ||||
| .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||||
| .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | ||||
| .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | ||||
| .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | ||||
| .\" SUCH DAMAGE. | ||||
| .\" | ||||
| .\" $Id$ | ||||
| .\" | ||||
| .Dd March 20, 2004 | ||||
| .Dt KRB5_STORAGE 3 | ||||
| .Os HEIMDAL | ||||
| .Sh NAME | ||||
| .Nm krb5_storage , | ||||
| .Nm krb5_storage_emem , | ||||
| .Nm krb5_storage_from_data , | ||||
| .Nm krb5_storage_from_fd , | ||||
| .Nm krb5_storage_from_mem , | ||||
| .Nm krb5_storage_set_flags , | ||||
| .Nm krb5_storage_clear_flags , | ||||
| .Nm krb5_storage_is_flags , | ||||
| .Nm krb5_storage_set_byteorder , | ||||
| .Nm krb5_storage_get_byteorder , | ||||
| .Nm krb5_storage_set_eof_code , | ||||
| .Nm krb5_storage_seek , | ||||
| .Nm krb5_storage_read , | ||||
| .Nm krb5_storage_write , | ||||
| .Nm krb5_storage_free , | ||||
| .Nm krb5_storage_to_data , | ||||
| .Nm krb5_store_int32 , | ||||
| .Nm krb5_ret_int32 , | ||||
| .Nm krb5_store_int16 , | ||||
| .Nm krb5_ret_int16 , | ||||
| .Nm krb5_store_int8 , | ||||
| .Nm krb5_ret_int8 , | ||||
| .Nm krb5_store_data , | ||||
| .Nm krb5_ret_data , | ||||
| .Nm krb5_store_string , | ||||
| .Nm krb5_ret_string , | ||||
| .Nm krb5_store_stringz , | ||||
| .Nm krb5_ret_stringz , | ||||
| .Nm krb5_store_principal , | ||||
| .Nm krb5_ret_principal , | ||||
| .Nm krb5_store_keyblock , | ||||
| .Nm krb5_ret_keyblock , | ||||
| .Nm krb5_store_times , | ||||
| .Nm krb5_ret_times , | ||||
| .Nm krb5_store_address , | ||||
| .Nm krb5_ret_address , | ||||
| .Nm krb5_store_addrs , | ||||
| .Nm krb5_ret_addrs , | ||||
| .Nm krb5_store_authdata , | ||||
| .Nm krb5_ret_authdata , | ||||
| .Nm krb5_store_creds , | ||||
| .Nm krb5_ret_creds | ||||
| .Nd operates on the Kerberos datatype krb5_storage | ||||
| .Sh LIBRARY | ||||
| Kerberos 5 Library (libkrb5, -lkrb5) | ||||
| .Sh SYNOPSIS | ||||
| .In krb5.h | ||||
| .Pp | ||||
| .Li "struct krb5_storage;" | ||||
| .Pp | ||||
| .Ft "krb5_storage *" | ||||
| .Fn krb5_storage_from_fd "int fd" | ||||
| .Ft "krb5_storage *" | ||||
| .Fn krb5_storage_emem "void" | ||||
| .Ft "krb5_storage *" | ||||
| .Fn krb5_storage_from_mem "void *buf" "size_t len" | ||||
| .Ft "krb5_storage *" | ||||
| .Fn krb5_storage_from_data "krb5_data *data" | ||||
| .Ft void | ||||
| .Fn krb5_storage_set_flags "krb5_storage *sp" "krb5_flags flags" | ||||
| .Ft void | ||||
| .Fn krb5_storage_clear_flags "krb5_storage *sp" "krb5_flags flags" | ||||
| .Ft krb5_boolean | ||||
| .Fn krb5_storage_is_flags "krb5_storage *sp" "krb5_flags flags" | ||||
| .Ft void | ||||
| .Fn krb5_storage_set_byteorder "krb5_storage *sp" "krb5_flags byteorder" | ||||
| .Ft krb5_flags | ||||
| .Fn krb5_storage_get_byteorder "krb5_storage *sp" "krb5_flags byteorder" | ||||
| .Ft void | ||||
| .Fn krb5_storage_set_eof_code "krb5_storage *sp" "int code" | ||||
| .Ft off_t | ||||
| .Fn krb5_storage_seek "krb5_storage *sp" "off_t offset" "int whence" | ||||
| .Ft krb5_ssize_t | ||||
| .Fn krb5_storage_read "krb5_storage *sp" "void *buf" "size_t len" | ||||
| .Ft krb5_ssize_t | ||||
| .Fn krb5_storage_write "krb5_storage *sp" "const void *buf" "size_t len" | ||||
| .Ft krb5_error_code | ||||
| .Fn krb5_storage_free "krb5_storage *sp" | ||||
| .Ft krb5_error_code | ||||
| .Fn krb5_storage_to_data "krb5_storage *sp" "krb5_data *data" | ||||
| .Ft krb5_error_code | ||||
| .Fn krb5_store_int32 "krb5_storage *sp" "int32_t value" | ||||
| .Ft krb5_error_code | ||||
| .Fn krb5_ret_int32 "krb5_storage *sp" "int32_t *value" | ||||
| .Ft krb5_error_code | ||||
| .Fn krb5_store_int16 "krb5_storage *sp" "int16_t value" | ||||
| .Ft krb5_error_code | ||||
| .Fn krb5_ret_int16 "krb5_storage *sp" "int16_t *value" | ||||
| .Ft krb5_error_code | ||||
| .Fn krb5_store_int8 "krb5_storage *sp" "int8_t value" | ||||
| .Ft krb5_error_code | ||||
| .Fn krb5_ret_int8 "krb5_storage *sp" "int8_t *value" | ||||
| .Ft krb5_error_code | ||||
| .Fn krb5_store_data "krb5_storage *sp" "krb5_data data" | ||||
| .Ft krb5_error_code | ||||
| .Fn krb5_ret_data "krb5_storage *sp" "krb5_data *data" | ||||
| .Ft krb5_error_code | ||||
| .Fn krb5_store_string "krb5_storage *sp" "const char *s" | ||||
| .Ft krb5_error_code | ||||
| .Fn krb5_ret_string "krb5_storage *sp" "char **string" | ||||
| .Ft krb5_error_code | ||||
| .Fn krb5_store_stringz "krb5_storage *sp" "const char *s" | ||||
| .Ft krb5_error_code | ||||
| .Fn krb5_ret_stringz "krb5_storage *sp" "char **string" | ||||
| .Ft krb5_error_code | ||||
| .Fn krb5_store_principal "krb5_storage *sp" "krb5_principal p" | ||||
| .Ft krb5_error_code | ||||
| .Fn krb5_ret_principal "krb5_storage *sp" "krb5_principal *princ" | ||||
| .Ft krb5_error_code | ||||
| .Fn krb5_store_keyblock "krb5_storage *sp" "krb5_keyblock p" | ||||
| .Ft krb5_error_code | ||||
| .Fn krb5_ret_keyblock "krb5_storage *sp" "krb5_keyblock *p" | ||||
| .Ft krb5_error_code | ||||
| .Fn krb5_store_times "krb5_storage *sp" "krb5_times times" | ||||
| .Ft krb5_error_code | ||||
| .Fn krb5_ret_times "krb5_storage *sp" "krb5_times *times" | ||||
| .Ft krb5_error_code | ||||
| .Fn krb5_store_address "krb5_storage *sp" "krb5_address p" | ||||
| .Ft krb5_error_code | ||||
| .Fn krb5_ret_address "krb5_storage *sp" "krb5_address *adr" | ||||
| .Ft krb5_error_code | ||||
| .Fn krb5_store_addrs "krb5_storage *sp" "krb5_addresses p" | ||||
| .Ft krb5_error_code | ||||
| .Fn krb5_ret_addrs "krb5_storage *sp" "krb5_addresses *adr" | ||||
| .Ft krb5_error_code | ||||
| .Fn krb5_store_authdata "krb5_storage *sp" "krb5_authdata auth" | ||||
| .Ft krb5_error_code | ||||
| .Fn krb5_ret_authdata "krb5_storage *sp" "krb5_authdata *auth" | ||||
| .Ft krb5_error_code | ||||
| .Fn krb5_store_creds "krb5_storage *sp" "krb5_creds *creds" | ||||
| .Ft krb5_error_code | ||||
| .Fn krb5_ret_creds "krb5_storage *sp" "krb5_creds *creds" | ||||
| .Sh DESCRIPTION | ||||
| The | ||||
| .Li krb5_storage | ||||
| structure holds a storage element that is used for data manipulation. | ||||
| The structure contains no public accessible elements. | ||||
| .Pp | ||||
| .Fn krb5_storage_emem | ||||
| create a memory based krb5 storage unit that dynamicly resized to the | ||||
| ammount of data stored in. | ||||
| The storage never returns errors, on memory allocation errors | ||||
| .Xr exit 3 | ||||
| will be called. | ||||
| .Pp | ||||
| .Fn krb5_storage_from_data | ||||
| create a krb5 storage unit that will read is data from a | ||||
| .Li krb5_data . | ||||
| There is no copy made of the | ||||
| .Fa data , | ||||
| so the caller must not free | ||||
| .Fa data | ||||
| until the storage is freed. | ||||
| .Pp | ||||
| .Fn krb5_storage_from_fd | ||||
| create a krb5 storage unit that will read is data from a | ||||
| file descriptor. | ||||
| The descriptor must be seekable if | ||||
| .Fn krb5_storage_seek | ||||
| is used. | ||||
| Caller must not free the file descriptor before the storage is freed. | ||||
| .Pp | ||||
| .Fn krb5_storage_from_mem | ||||
| create a krb5 storage unit that will read is data from a | ||||
| memory region. | ||||
| There is no copy made of the | ||||
| .Fa data , | ||||
| so the caller must not free | ||||
| .Fa data | ||||
| until the storage is freed. | ||||
| .Pp | ||||
| .Fn krb5_storage_set_flags | ||||
| and | ||||
| .Fn krb5_storage_clear_flags | ||||
| modifies the behavior of the storage functions. | ||||
| .Pp | ||||
| .Bl -tag -compact -offset indent | ||||
| .It KRB5_STORAGE_PRINCIPAL_WRONG_NUM_COMPONENTS | ||||
| Stores the number of principal componets one too many when storing | ||||
| principal namees, used for compatibility with version 1 of file | ||||
| keytabs and version 1 of file credential caches. | ||||
| .It KRB5_STORAGE_PRINCIPAL_NO_NAME_TYPE | ||||
| Doesn't store the name type in when storing a principal name, used for | ||||
| compatibility with version 1 of file keytabs and version 1 of file | ||||
| credential caches. | ||||
| .It KRB5_STORAGE_KEYBLOCK_KEYTYPE_TWICE | ||||
| Stores the keyblock type twice storing a keyblock, used for | ||||
| compatibility version 3 of file credential caches. | ||||
| .It KRB5_STORAGE_BYTEORDER_MASK | ||||
| bitmask that can be used to and out what type of byte order order is used. | ||||
| .It KRB5_STORAGE_BYTEORDER_BE | ||||
| Store integers in in big endian byte order, this is the default mode. | ||||
| .It KRB5_STORAGE_BYTEORDER_LE | ||||
| Store integers in in little endian byte order. | ||||
| .It KRB5_STORAGE_BYTEORDER_HOST | ||||
| Stores the integers in host byte order, used for compatibility with | ||||
| version 1 of file keytabs and version 1 and 2 of file credential | ||||
| caches. | ||||
| .El | ||||
| .Pp | ||||
| .Fn krb5_storage_set_byteorder | ||||
| and | ||||
| .Fn krb5_storage_get_byteorder | ||||
| modifies the byte order used in the storage for integers. | ||||
| The flags used is same as above. | ||||
| The valid flags are | ||||
| .Dv KRB5_STORAGE_BYTEORDER_BE , | ||||
| .Dv KRB5_STORAGE_BYTEORDER_LE | ||||
| and | ||||
| .Dv KRB5_STORAGE_BYTEORDER_HOST . | ||||
| .Pp | ||||
| .Fn krb5_storage_set_eof_code | ||||
| sets the error code that will be returned on end of file condition to | ||||
| .Fa code . | ||||
| .Pp | ||||
| .Fn krb5_storage_seek | ||||
| seeks | ||||
| .Fa offset | ||||
| bytes in the storage | ||||
| .Fa sp . | ||||
| The | ||||
| .Fa whence | ||||
| argument is one of | ||||
| .Bl -tag -compact -offset indent | ||||
| .It SEEK_SET | ||||
| offset is from begining of storage. | ||||
| .It SEEK_CUR | ||||
| offset is relative from current offset. | ||||
| .It SEEK_END | ||||
| offset is from end of storage. | ||||
| .El | ||||
| .Pp | ||||
| .Fn krb5_storage_read | ||||
| reads | ||||
| .Fa len | ||||
| (or less bytes in case of end of file) into | ||||
| .Fa buf | ||||
| from the current offset in the storage | ||||
| .Fa sp . | ||||
| .Pp | ||||
| .Fn krb5_storage_write | ||||
| writes | ||||
| .Fa len | ||||
| or (less bytes in case of end of file) from | ||||
| .Fa buf | ||||
| from the current offset in the storage | ||||
| .Fa sp . | ||||
| .Pp | ||||
| .Fn krb5_storage_free | ||||
| frees the storage | ||||
| .Fa sp . | ||||
| .Pp | ||||
| .Fn krb5_storage_to_data | ||||
| converts the data in storage | ||||
| .Fa sp | ||||
| into a | ||||
| .Li krb5_data | ||||
| structure. | ||||
| .Fa data | ||||
| must be freed with | ||||
| .Fn krb5_data_free | ||||
| by the caller when done with the | ||||
| .Fa data . | ||||
| .Pp | ||||
| All | ||||
| .Li krb5_store | ||||
| and | ||||
| .Li krb5_ret | ||||
| functions move the current offset forward when the functions returns. | ||||
| .Pp | ||||
| .Fn krb5_store_int32 , | ||||
| .Fn krb5_ret_int32 , | ||||
| .Fn krb5_store_int16 , | ||||
| .Fn krb5_ret_int16 , | ||||
| .Fn krb5_store_int8 , | ||||
| and | ||||
| .Fn krb5_ret_int8  | ||||
| stores and reads an integer from | ||||
| .Fa sp | ||||
| in the byte order specified by the flags set on the | ||||
| .Fa sp . | ||||
| .Pp | ||||
| .Fn krb5_store_data | ||||
| and | ||||
| .Fn krb5_ret_data | ||||
| store and reads a krb5_data. | ||||
| The length of the data is stored with | ||||
| .Fn krb5_store_int32 . | ||||
| .Pp | ||||
| .Fn krb5_store_string | ||||
| and | ||||
| .Fn krb5_ret_string | ||||
| store and reads a string by storing the length of the string with | ||||
| .Fn krb5_store_int32 | ||||
| followed by the string itself. | ||||
| .Pp | ||||
| .Fn krb5_store_stringz | ||||
| and  | ||||
| .Fn krb5_ret_stringz | ||||
| store and reads a string by storing string followed by a | ||||
| .Dv NUL . | ||||
| .Pp | ||||
| .Fn krb5_store_principal | ||||
| and | ||||
| .Fn krb5_ret_principal | ||||
| store and reads a principal. | ||||
| .Pp | ||||
| .Fn krb5_store_keyblock | ||||
| and | ||||
| .Fn krb5_ret_keyblock | ||||
| store and reads a | ||||
| .Li krb5_keyblock . | ||||
| .Pp | ||||
| .Fn krb5_store_times | ||||
| .Fn krb5_ret_times | ||||
| store and reads | ||||
| .Li krb5_times  | ||||
| structure . | ||||
| .Pp | ||||
| .Fn krb5_store_address | ||||
| and | ||||
| .Fn krb5_ret_address | ||||
| store and reads a  | ||||
| .Li krb5_address . | ||||
| .Pp | ||||
| .Fn krb5_store_addrs | ||||
| and | ||||
| .Fn krb5_ret_addrs | ||||
| store and reads a  | ||||
| .Li krb5_addresses . | ||||
| .Pp | ||||
| .Fn krb5_store_authdata | ||||
| and | ||||
| .Fn krb5_ret_authdata | ||||
| store and reads a | ||||
| .Li krb5_authdata . | ||||
| .Pp | ||||
| .Fn krb5_store_creds | ||||
| and | ||||
| .Fn krb5_ret_creds | ||||
| store and reads a | ||||
| .Li krb5_creds . | ||||
| .Sh SEE ALSO | ||||
| .Xr krb5 3 , | ||||
| .Xr krb5_data 3 , | ||||
| .Xr kerberos 8 | ||||
		Reference in New Issue
	
	Block a user
	 Love Hörnquist Åstrand
					Love Hörnquist Åstrand