Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef AUTH_DIGEST_H
00026
00027 #define AUTH_DIGEST_H
00028
00046 #ifndef SU_ALLOC_H
00047 #include <sofia-sip/su_alloc.h>
00048 #endif
00049
00050 SOFIA_BEGIN_DECLS
00051
00075 typedef struct {
00076 int ac_size;
00077 char const *ac_realm;
00078 char const *ac_domain;
00079 char const *ac_nonce;
00080 char const *ac_opaque;
00081 char const *ac_algorithm;
00082 char const *ac_qop;
00083 unsigned ac_stale : 1;
00084 unsigned ac_md5 : 1;
00085 unsigned ac_md5sess : 1;
00086 unsigned ac_sha1 : 1;
00087 unsigned ac_auth : 1;
00088 unsigned ac_auth_int : 1;
00089 unsigned : 0;
00090 } auth_challenge_t;
00091
00117 typedef struct {
00118 int ar_size;
00119 char const *ar_username;
00120 char const *ar_realm;
00121 char const *ar_nonce;
00122 char const *ar_uri;
00123 char const *ar_response;
00124 char const *ar_algorithm;
00125 char const *ar_cnonce;
00126 char const *ar_opaque;
00127 char const *ar_qop;
00128 char const *ar_nc;
00129 unsigned ar_md5 : 1;
00130 unsigned ar_md5sess : 1;
00131 unsigned ar_sha1 : 1;
00132 unsigned ar_auth : 1;
00133 unsigned ar_auth_int : 1;
00134 unsigned : 0;
00135 } auth_response_t;
00136
00137 typedef char auth_hexmd5_t[33];
00138
00139 SOFIAPUBFUN issize_t auth_digest_challenge_get(su_home_t *, auth_challenge_t *,
00140 char const * const params[]);
00141 SOFIAPUBFUN void auth_digest_challenge_free_params(su_home_t *home,
00142 auth_challenge_t *ac);
00143 SOFIAPUBFUN issize_t auth_digest_response_get(su_home_t *, auth_response_t *,
00144 char const * const params[]);
00145
00146 SOFIAPUBFUN int auth_digest_ha1(auth_hexmd5_t ha1,
00147 char const *username,
00148 char const *realm,
00149 char const *secret);
00150
00151 SOFIAPUBFUN int auth_digest_a1(auth_response_t *ar,
00152 auth_hexmd5_t ha1,
00153 char const *secret);
00154
00155 SOFIAPUBFUN int auth_digest_a1sess(auth_response_t *ar,
00156 auth_hexmd5_t ha1sess,
00157 char const *ha1);
00158
00159 SOFIAPUBFUN int auth_digest_sessionkey(auth_response_t *, auth_hexmd5_t ha1,
00160 char const *secret);
00161
00162 SOFIAPUBFUN int auth_digest_response(auth_response_t *, auth_hexmd5_t response,
00163 auth_hexmd5_t const ha1,
00164 char const *method_name,
00165 void const *data, isize_t dlen);
00166
00167 SOFIAPUBFUN int auth_struct_copy(void *dst, void const *src, isize_t s_size);
00168
00169 SOFIAPUBFUN int auth_strcmp(char const *quoted, char const *unquoted);
00170
00171 SOFIA_END_DECLS
00172
00173 #endif