KRB5_STORAGE(3)         NetBSD Library Functions Manual        KRB5_STORAGE(3)

NAME
     krb5_storage, krb5_storage_emem, krb5_storage_from_data,
     krb5_storage_from_fd, krb5_storage_from_mem, krb5_storage_set_flags,
     krb5_storage_clear_flags, krb5_storage_is_flags,
     krb5_storage_set_byteorder, krb5_storage_get_byteorder,
     krb5_storage_set_eof_code, krb5_storage_seek, krb5_storage_read,
     krb5_storage_write, krb5_storage_free, krb5_storage_to_data,
     krb5_store_int32, krb5_ret_int32, krb5_store_uint32, krb5_ret_uint32,
     krb5_store_int16, krb5_ret_int16, krb5_store_uint16, krb5_ret_uint16,
     krb5_store_int8, krb5_ret_int8, krb5_store_uint8, krb5_ret_uint8,
     krb5_store_data, krb5_ret_data, krb5_store_string, krb5_ret_string,
     krb5_store_stringnl, krb5_ret_stringnl, krb5_store_stringz,
     krb5_ret_stringz, krb5_store_principal, krb5_ret_principal,
     krb5_store_keyblock, krb5_ret_keyblock, krb5_store_times, krb5_ret_times,
     krb5_store_address, krb5_ret_address, krb5_store_addrs, krb5_ret_addrs,
     krb5_store_authdata, krb5_ret_authdata, krb5_store_creds, krb5_ret_creds
     -- operates on the Kerberos datatype krb5_storage

LIBRARY
     Kerberos 5 Library (libkrb5, -lkrb5)

SYNOPSIS
     #include <krb5/krb5.h>

     struct krb5_storage;

     krb5_storage *
     krb5_storage_from_fd(int fd);

     krb5_storage *
     krb5_storage_emem(void);

     krb5_storage *
     krb5_storage_from_mem(void *buf, size_t len);

     krb5_storage *
     krb5_storage_from_data(krb5_data *data);

     void
     krb5_storage_set_flags(krb5_storage *sp, krb5_flags flags);

     void
     krb5_storage_clear_flags(krb5_storage *sp, krb5_flags flags);

     krb5_boolean
     krb5_storage_is_flags(krb5_storage *sp, krb5_flags flags);

     void
     krb5_storage_set_byteorder(krb5_storage *sp, krb5_flags byteorder);

     krb5_flags
     krb5_storage_get_byteorder(krb5_storage *sp, krb5_flags byteorder);

     void
     krb5_storage_set_eof_code(krb5_storage *sp, int code);

     off_t
     krb5_storage_seek(krb5_storage *sp, off_t offset, int whence);

     krb5_ssize_t
     krb5_storage_read(krb5_storage *sp, void *buf, size_t len);

     krb5_ssize_t
     krb5_storage_write(krb5_storage *sp, const void *buf, size_t len);

     krb5_error_code
     krb5_storage_free(krb5_storage *sp);

     krb5_error_code
     krb5_storage_to_data(krb5_storage *sp, krb5_data *data);

     krb5_error_code
     krb5_store_int32(krb5_storage *sp, int32_t value);

     krb5_error_code
     krb5_ret_int32(krb5_storage *sp, int32_t *value);

     krb5_error_code
     krb5_ret_uint32(krb5_storage *sp, uint32_t *value);

     krb5_error_code
     krb5_store_uint32(krb5_storage *sp, uint32_t value);

     krb5_error_code
     krb5_store_int16(krb5_storage *sp, int16_t value);

     krb5_error_code
     krb5_ret_int16(krb5_storage *sp, int16_t *value);

     krb5_error_code
     krb5_store_uint16(krb5_storage *sp, uint16_t value);

     krb5_error_code
     krb5_ret_uint16(krb5_storage *sp, u_int16_t *value);

     krb5_error_code
     krb5_store_int8(krb5_storage *sp, int8_t value);

     krb5_error_code
     krb5_ret_int8(krb5_storage *sp, int8_t *value);

     krb5_error_code
     krb5_store_uint8(krb5_storage *sp, u_int8_t value);

     krb5_error_code
     krb5_ret_uint8(krb5_storage *sp, u_int8_t *value);

     krb5_error_code
     krb5_store_data(krb5_storage *sp, krb5_data data);

     krb5_error_code
     krb5_ret_data(krb5_storage *sp, krb5_data *data);

     krb5_error_code
     krb5_store_string(krb5_storage *sp, const char *s);

     krb5_error_code
     krb5_ret_string(krb5_storage *sp, char **string);

     krb5_error_code
     krb5_store_stringnl(krb5_storage *sp, const char *s);

     krb5_error_code
     krb5_ret_stringnl(krb5_storage *sp, char **string);

     krb5_error_code
     krb5_store_stringz(krb5_storage *sp, const char *s);

     krb5_error_code
     krb5_ret_stringz(krb5_storage *sp, char **string);

     krb5_error_code
     krb5_store_principal(krb5_storage *sp, krb5_const_principal p);

     krb5_error_code
     krb5_ret_principal(krb5_storage *sp, krb5_principal *princ);

     krb5_error_code
     krb5_store_keyblock(krb5_storage *sp, krb5_keyblock p);

     krb5_error_code
     krb5_ret_keyblock(krb5_storage *sp, krb5_keyblock *p);

     krb5_error_code
     krb5_store_times(krb5_storage *sp, krb5_times times);

     krb5_error_code
     krb5_ret_times(krb5_storage *sp, krb5_times *times);

     krb5_error_code
     krb5_store_address(krb5_storage *sp, krb5_address p);

     krb5_error_code
     krb5_ret_address(krb5_storage *sp, krb5_address *adr);

     krb5_error_code
     krb5_store_addrs(krb5_storage *sp, krb5_addresses p);

     krb5_error_code
     krb5_ret_addrs(krb5_storage *sp, krb5_addresses *adr);

     krb5_error_code
     krb5_store_authdata(krb5_storage *sp, krb5_authdata auth);

     krb5_error_code
     krb5_ret_authdata(krb5_storage *sp, krb5_authdata *auth);

     krb5_error_code
     krb5_store_creds(krb5_storage *sp, krb5_creds *creds);

     krb5_error_code
     krb5_ret_creds(krb5_storage *sp, krb5_creds *creds);

DESCRIPTION
     The krb5_storage structure holds a storage element that is used for data
     manipulation.  The structure contains no public accessible elements.

     krb5_storage_emem() create a memory based krb5 storage unit that dynam-
     icly resized to the ammount of data stored in.  The storage never returns
     errors, on memory allocation errors exit(3) will be called.

     krb5_storage_from_data() create a krb5 storage unit that will read is
     data from a krb5_data.  There is no copy made of the data, so the caller
     must not free data until the storage is freed.

     krb5_storage_from_fd() create a krb5 storage unit that will read is data
     from a file descriptor.  The descriptor must be seekable if
     krb5_storage_seek() is used.  Caller must not free the file descriptor
     before the storage is freed.

     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 data, so the caller
     must not free data until the storage is freed.

     krb5_storage_set_flags() and krb5_storage_clear_flags() modifies the
     behavior of the storage functions.  krb5_storage_is_flags() tests if the
     flags are set on the krb5_storage.  Valid flags to set, is and clear is
     are:

           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.
           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.
           KRB5_STORAGE_KEYBLOCK_KEYTYPE_TWICE
                       Stores the keyblock type twice storing a keyblock, used
                       for compatibility version 3 of file credential caches.
           KRB5_STORAGE_BYTEORDER_MASK
                       bitmask that can be used to and out what type of byte
                       order order is used.
           KRB5_STORAGE_BYTEORDER_BE
                       Store integers in in big endian byte order, this is the
                       default mode.
           KRB5_STORAGE_BYTEORDER_LE
                       Store integers in in little endian byte order.
           KRB5_STORAGE_BYTEORDER_HOST
                       Stores the integers in host byte order, used for com-
                       patibility with version 1 of file keytabs and version 1
                       and 2 of file credential caches.
           KRB5_STORAGE_CREDS_FLAGS_WRONG_BITORDER
                       Store the credential flags in a krb5_creds in the
                       reverse bit order.

     krb5_storage_set_byteorder() and 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 KRB5_STORAGE_BYTEORDER_BE,
     KRB5_STORAGE_BYTEORDER_LE and KRB5_STORAGE_BYTEORDER_HOST.

     krb5_storage_set_eof_code() sets the error code that will be returned on
     end of file condition to code.

     krb5_storage_seek() seeks offset bytes in the storage sp.  The whence
     argument is one of
           SEEK_SET  offset is from begining of storage.
           SEEK_CUR  offset is relative from current offset.
           SEEK_END  offset is from end of storage.

     krb5_storage_read() reads len (or less bytes in case of end of file) into
     buf from the current offset in the storage sp.

     krb5_storage_write() writes len or (less bytes in case of end of file)
     from buf from the current offset in the storage sp.

     krb5_storage_free() frees the storage sp.

     krb5_storage_to_data() converts the data in storage sp into a krb5_data
     structure.  data must be freed with krb5_data_free() by the caller when
     done with the data.

     All krb5_store and krb5_ret functions move the current offset forward
     when the functions returns.

     krb5_store_int32(), krb5_ret_int32(), krb5_store_uint32(),
     krb5_ret_uint32(), krb5_store_int16(), krb5_ret_int16(),
     krb5_store_uint16(), krb5_ret_uint16(), krb5_store_int8(),
     krb5_ret_int8() krb5_store_uint8(), and krb5_ret_uint8() stores and reads
     an integer from sp in the byte order specified by the flags set on the
     sp.

     krb5_store_data() and krb5_ret_data() store and reads a krb5_data.  The
     length of the data is stored with krb5_store_int32().

     krb5_store_string() and krb5_ret_string() store and reads a string by
     storing the length of the string with krb5_store_int32() followed by the
     string itself.

     krb5_store_stringnl() and krb5_ret_stringnl() store and reads a string by
     storing string followed by a '0.

     krb5_store_stringz() and krb5_ret_stringz() store and reads a string by
     storing string followed by a NUL.

     krb5_store_principal() and krb5_ret_principal() store and reads a princi-
     pal.

     krb5_store_keyblock() and krb5_ret_keyblock() store and reads a
     krb5_keyblock.

     krb5_store_times() krb5_ret_times() store and reads krb5_times structure
     .

     krb5_store_address() and krb5_ret_address() store and reads a
     krb5_address.

     krb5_store_addrs() and krb5_ret_addrs() store and reads a krb5_addresses.

     krb5_store_authdata() and krb5_ret_authdata() store and reads a
     krb5_authdata.

     krb5_store_creds() and krb5_ret_creds() store and reads a krb5_creds.

SEE ALSO
     krb5(3), krb5_data(3), kerberos(8)

NetBSD 5.0_STABLE                Aug 18, 2006                NetBSD 5.0_STABLE
