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