Path: blob/main/crypto/krb5/src/lib/kadm5/srv/adb_xdr.c
39566 views
/* -*- mode: c; c-file-style: "bsd"; indent-tabs-mode: t -*- */1/*2* Copyright 1993 OpenVision Technologies, Inc., All Rights Reserved3*4* $Header$5*/67#include <sys/types.h>8#include <krb5.h>9#include <gssrpc/rpc.h>10#include "server_internal.h"11#include "admin_xdr.h"12#ifdef HAVE_MEMORY_H13#include <memory.h>14#endif1516bool_t17xdr_krb5_key_data(XDR *xdrs, krb5_key_data *objp)18{19unsigned int tmp;2021if (!xdr_krb5_int16(xdrs, &objp->key_data_ver))22return(FALSE);23if (!xdr_krb5_ui_2(xdrs, &objp->key_data_kvno))24return(FALSE);25if (!xdr_krb5_int16(xdrs, &objp->key_data_type[0]))26return(FALSE);27if (!xdr_krb5_int16(xdrs, &objp->key_data_type[1]))28return(FALSE);29if (!xdr_krb5_ui_2(xdrs, &objp->key_data_length[0]))30return(FALSE);31if (!xdr_krb5_ui_2(xdrs, &objp->key_data_length[1]))32return(FALSE);3334tmp = (unsigned int) objp->key_data_length[0];35if (!xdr_bytes(xdrs, (char **) &objp->key_data_contents[0],36&tmp, ~0))37return FALSE;38if (tmp != objp->key_data_length[0])39return FALSE;4041tmp = (unsigned int) objp->key_data_length[1];42if (!xdr_bytes(xdrs, (char **) &objp->key_data_contents[1],43&tmp, ~0))44return FALSE;45if (tmp != objp->key_data_length[1])46return FALSE;4748/* don't need to copy tmp out, since key_data_length will be set49by the above encoding. */5051return(TRUE);52}5354bool_t55xdr_osa_pw_hist_ent(XDR *xdrs, osa_pw_hist_ent *objp)56{57if (!xdr_array(xdrs, (caddr_t *) &objp->key_data,58(u_int *) &objp->n_key_data, ~0,59sizeof(krb5_key_data), (xdrproc_t)xdr_krb5_key_data))60return (FALSE);61return (TRUE);62}6364bool_t65xdr_osa_princ_ent_rec(XDR *xdrs, osa_princ_ent_t objp)66{67switch (xdrs->x_op) {68case XDR_ENCODE:69objp->version = OSA_ADB_PRINC_VERSION_1;70/* fall through */71case XDR_FREE:72if (!xdr_int(xdrs, &objp->version))73return FALSE;74break;75case XDR_DECODE:76if (!xdr_int(xdrs, &objp->version))77return FALSE;78if (objp->version != OSA_ADB_PRINC_VERSION_1)79return FALSE;80break;81}8283if (!xdr_nullstring(xdrs, &objp->policy))84return (FALSE);85if (!xdr_long(xdrs, &objp->aux_attributes))86return (FALSE);87if (!xdr_u_int(xdrs, &objp->old_key_next))88return (FALSE);89if (!xdr_krb5_kvno(xdrs, &objp->admin_history_kvno))90return (FALSE);91if (!xdr_array(xdrs, (caddr_t *) &objp->old_keys,92(unsigned int *) &objp->old_key_len, ~0,93sizeof(osa_pw_hist_ent), (xdrproc_t)xdr_osa_pw_hist_ent))94return (FALSE);95return (TRUE);96}9798void99osa_free_princ_ent(osa_princ_ent_t val)100{101XDR xdrs;102103xdrmem_create(&xdrs, NULL, 0, XDR_FREE);104105xdr_osa_princ_ent_rec(&xdrs, val);106free(val);107}108109110