auth_gssapi.h 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  1. /* include/gssrpc/auth_gssapi.h - GSS-API style auth parameters for RPC */
  2. /*
  3. * Copyright 1993 OpenVision Technologies, Inc., All Rights Reserved.
  4. */
  5. #ifndef GSSRPC_AUTH_GSSAPI_H
  6. #define GSSRPC_AUTH_GSSAPI_H
  7. GSSRPC__BEGIN_DECLS
  8. #define AUTH_GSSAPI_EXIT 0
  9. #define AUTH_GSSAPI_INIT 1
  10. #define AUTH_GSSAPI_CONTINUE_INIT 2
  11. #define AUTH_GSSAPI_MSG 3
  12. #define AUTH_GSSAPI_DESTROY 4
  13. /*
  14. * Yuck. Some sys/types.h files leak symbols
  15. */
  16. #ifdef major
  17. #undef major
  18. #endif
  19. #ifdef minor
  20. #undef minor
  21. #endif
  22. typedef struct _auth_gssapi_name {
  23. char *name;
  24. gss_OID type;
  25. } auth_gssapi_name;
  26. typedef struct _auth_gssapi_creds {
  27. uint32_t version;
  28. bool_t auth_msg;
  29. gss_buffer_desc client_handle;
  30. } auth_gssapi_creds;
  31. typedef struct _auth_gssapi_init_arg {
  32. uint32_t version;
  33. gss_buffer_desc token;
  34. } auth_gssapi_init_arg;
  35. typedef struct _auth_gssapi_init_res {
  36. uint32_t version;
  37. gss_buffer_desc client_handle;
  38. OM_uint32 gss_major, gss_minor;
  39. gss_buffer_desc token;
  40. gss_buffer_desc signed_isn;
  41. } auth_gssapi_init_res;
  42. typedef void (*auth_gssapi_log_badauth_func)
  43. (OM_uint32 major,
  44. OM_uint32 minor,
  45. struct sockaddr_in *raddr,
  46. caddr_t data);
  47. /* auth_gssapi_log_badauth_func is IPv4-specific; this version gives the
  48. * transport handle so the fd can be used to get the address. */
  49. typedef void (*auth_gssapi_log_badauth2_func)
  50. (OM_uint32 major,
  51. OM_uint32 minor,
  52. SVCXPRT *xprt,
  53. caddr_t data);
  54. typedef void (*auth_gssapi_log_badverf_func)
  55. (gss_name_t client,
  56. gss_name_t server,
  57. struct svc_req *rqst,
  58. struct rpc_msg *msg,
  59. caddr_t data);
  60. typedef void (*auth_gssapi_log_miscerr_func)
  61. (struct svc_req *rqst,
  62. struct rpc_msg *msg,
  63. char *error,
  64. caddr_t data);
  65. bool_t xdr_gss_buf(XDR *, gss_buffer_t);
  66. bool_t xdr_authgssapi_creds(XDR *, auth_gssapi_creds *);
  67. bool_t xdr_authgssapi_init_arg(XDR *, auth_gssapi_init_arg *);
  68. bool_t xdr_authgssapi_init_res(XDR *, auth_gssapi_init_res *);
  69. bool_t auth_gssapi_wrap_data
  70. (OM_uint32 *major, OM_uint32 *minor,
  71. gss_ctx_id_t context, uint32_t seq_num, XDR
  72. *out_xdrs, bool_t (*xdr_func)(), caddr_t
  73. xdr_ptr);
  74. bool_t auth_gssapi_unwrap_data
  75. (OM_uint32 *major, OM_uint32 *minor,
  76. gss_ctx_id_t context, uint32_t seq_num, XDR
  77. *in_xdrs, bool_t (*xdr_func)(), caddr_t
  78. xdr_ptr);
  79. AUTH *auth_gssapi_create
  80. (CLIENT *clnt,
  81. OM_uint32 *major_status,
  82. OM_uint32 *minor_status,
  83. gss_cred_id_t claimant_cred_handle,
  84. gss_name_t target_name,
  85. gss_OID mech_type,
  86. OM_uint32 req_flags,
  87. OM_uint32 time_req,
  88. gss_OID *actual_mech_type,
  89. OM_uint32 *ret_flags,
  90. OM_uint32 *time_rec);
  91. AUTH *auth_gssapi_create_default
  92. (CLIENT *clnt, char *service_name);
  93. void auth_gssapi_display_status
  94. (char *msg, OM_uint32 major,
  95. OM_uint32 minor);
  96. bool_t auth_gssapi_seal_seq
  97. (gss_ctx_id_t context, uint32_t seq_num, gss_buffer_t out_buf);
  98. bool_t auth_gssapi_unseal_seq
  99. (gss_ctx_id_t context, gss_buffer_t in_buf, uint32_t *seq_num);
  100. bool_t svcauth_gssapi_set_names
  101. (auth_gssapi_name *names, int num);
  102. void svcauth_gssapi_unset_names
  103. (void);
  104. void svcauth_gssapi_set_log_badauth_func
  105. (auth_gssapi_log_badauth_func func,
  106. caddr_t data);
  107. void svcauth_gssapi_set_log_badauth2_func
  108. (auth_gssapi_log_badauth2_func func,
  109. caddr_t data);
  110. void svcauth_gssapi_set_log_badverf_func
  111. (auth_gssapi_log_badverf_func func,
  112. caddr_t data);
  113. void svcauth_gssapi_set_log_miscerr_func
  114. (auth_gssapi_log_miscerr_func func,
  115. caddr_t data);
  116. void svcauth_gss_set_log_badauth_func(auth_gssapi_log_badauth_func,
  117. caddr_t);
  118. void svcauth_gss_set_log_badauth2_func(auth_gssapi_log_badauth2_func,
  119. caddr_t);
  120. void svcauth_gss_set_log_badverf_func(auth_gssapi_log_badverf_func,
  121. caddr_t);
  122. void svcauth_gss_set_log_miscerr_func(auth_gssapi_log_miscerr_func,
  123. caddr_t data);
  124. #define GSS_COPY_BUFFER(dest, src) { \
  125. (dest).length = (src).length; \
  126. (dest).value = (src).value; }
  127. #define GSS_DUP_BUFFER(dest, src) { \
  128. (dest).length = (src).length; \
  129. (dest).value = (void *) malloc((dest).length); \
  130. memcpy((dest).value, (src).value, (dest).length); }
  131. #define GSS_BUFFERS_EQUAL(b1, b2) (((b1).length == (b2).length) && \
  132. !memcmp((b1).value,(b2).value,(b1.length)))
  133. GSSRPC__END_DECLS
  134. #endif /* !defined(GSSRPC_AUTH_GSSAPI_H) */