1 /*
2  * Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
3  * Use is subject to license terms.
4  */
5 
6 #ifndef _PRINC_XDR_H
7 #define _PRINC_XDR_H 1
8 
9 #include <sys/types.h>
10 #include <krb5.h>
11 #include <kdb.h>
12 /* Solaris Kerberos: gssrpc not supported */
13 #if 0 /************** Begin IFDEF'ed OUT *******************************/
14 #include <gssrpc/rpc.h>
15 #else
16 #include <rpc/rpc.h>
17 #endif /**************** END IFDEF'ed OUT *******************************/
18 
19 #ifdef HAVE_MEMORY_H
20 #include <memory.h>
21 #endif
22 
23 #define OSA_ADB_PRINC_VERSION_1  0x12345C01
24 /* Solaris Kerberos: */
25 #ifndef xdralloc_getdata
26 extern caddr_t xdralloc_getdata(XDR *xdrs);
27 #endif
28 #ifndef xdralloc_create
29 extern void xdralloc_create(XDR *xdrs, enum xdr_op op);
30 #endif
31 
32 typedef struct _osa_pw_hist_t {
33   int n_key_data;
34   krb5_key_data *key_data;
35 } osa_pw_hist_ent, *osa_pw_hist_t;
36 
37 typedef struct _osa_princ_ent_t {
38   int                         version;
39   char                        *policy;
40   long                        aux_attributes;
41   unsigned int                old_key_len;
42   unsigned int                old_key_next;
43   krb5_kvno                   admin_history_kvno;
44   osa_pw_hist_ent             *old_keys;
45 } osa_princ_ent_rec, *osa_princ_ent_t;
46 
47 bool_t
48 ldap_xdr_krb5_ui_2(XDR *xdrs, krb5_ui_2 *objp);
49 
50 bool_t
51 ldap_xdr_krb5_int16(XDR *xdrs, krb5_int16 *objp);
52 
53 bool_t
54 ldap_xdr_nullstring(XDR *xdrs, char **objp);
55 
56 bool_t
57 ldap_xdr_krb5_kvno(XDR *xdrs, krb5_kvno *objp);
58 
59 bool_t
60 ldap_xdr_krb5_key_data(XDR *xdrs, krb5_key_data *objp);
61 
62 bool_t
63 ldap_xdr_osa_pw_hist_ent(XDR *xdrs, osa_pw_hist_ent *objp);
64 
65 bool_t
66 ldap_xdr_osa_princ_ent_rec(XDR *xdrs, osa_princ_ent_t objp);
67 
68 void
69 ldap_osa_free_princ_ent(osa_princ_ent_t val);
70 
71 krb5_error_code
72 krb5_lookup_tl_kadm_data(krb5_tl_data *tl_data, osa_princ_ent_rec *princ_entry);
73 
74 /* Solaris Kerberos: adding support for key history in LDAP KDB */
75 krb5_error_code
76 krb5_update_tl_kadm_data(char *, krb5_tl_data *, krb5_tl_data *);
77 
78 #endif
79