root/source4/heimdal/lib/krb5/misc.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. _krb5_s4u2self_to_checksumdata

   1 /*
   2  * Copyright (c) 1997 Kungliga Tekniska Högskolan
   3  * (Royal Institute of Technology, Stockholm, Sweden).
   4  * All rights reserved.
   5  *
   6  * Redistribution and use in source and binary forms, with or without
   7  * modification, are permitted provided that the following conditions
   8  * are met:
   9  *
  10  * 1. Redistributions of source code must retain the above copyright
  11  *    notice, this list of conditions and the following disclaimer.
  12  *
  13  * 2. Redistributions in binary form must reproduce the above copyright
  14  *    notice, this list of conditions and the following disclaimer in the
  15  *    documentation and/or other materials provided with the distribution.
  16  *
  17  * 3. Neither the name of the Institute nor the names of its contributors
  18  *    may be used to endorse or promote products derived from this software
  19  *    without specific prior written permission.
  20  *
  21  * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
  22  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  23  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  24  * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
  25  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  26  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  27  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  28  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  29  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  30  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  31  * SUCH DAMAGE.
  32  */
  33 
  34 #include "krb5_locl.h"
  35 
  36 RCSID("$Id$");
  37 
  38 krb5_error_code KRB5_LIB_FUNCTION
  39 _krb5_s4u2self_to_checksumdata(krb5_context context,
     /* [<][>][^][v][top][bottom][index][help] */
  40                                const PA_S4U2Self *self,
  41                                krb5_data *data)
  42 {
  43     krb5_error_code ret;
  44     krb5_ssize_t ssize;
  45     krb5_storage *sp;
  46     size_t size;
  47     int i;
  48 
  49     sp = krb5_storage_emem();
  50     if (sp == NULL) {
  51         krb5_clear_error_message(context);
  52         return ENOMEM;
  53     }
  54     krb5_storage_set_flags(sp, KRB5_STORAGE_BYTEORDER_LE);
  55     ret = krb5_store_int32(sp, self->name.name_type);
  56     if (ret)
  57         goto out;
  58     for (i = 0; i < self->name.name_string.len; i++) {
  59         size = strlen(self->name.name_string.val[i]);
  60         ssize = krb5_storage_write(sp, self->name.name_string.val[i], size);
  61         if (ssize != size) {
  62             ret = ENOMEM;
  63             goto out;
  64         }
  65     }
  66     size = strlen(self->realm);
  67     ssize = krb5_storage_write(sp, self->realm, size);
  68     if (ssize != size) {
  69         ret = ENOMEM;
  70         goto out;
  71     }
  72     size = strlen(self->auth);
  73     ssize = krb5_storage_write(sp, self->auth, size);
  74     if (ssize != size) {
  75         ret = ENOMEM;
  76         goto out;
  77     }
  78 
  79     ret = krb5_storage_to_data(sp, data);
  80     krb5_storage_free(sp);
  81     return ret;
  82 
  83 out:
  84     krb5_clear_error_message(context);
  85     return ret;
  86 }

/* [<][>][^][v][top][bottom][index][help] */