# digest_calc
[utilities]

## Defines
#define | AXIS2_DIGEST_HASH_LEN 16
#define | AXIS2_DIGEST_HASH_HEX_LEN 32
## Typedefs
typedef unsigned char | axutil_digest_hash_t [AXIS2_DIGEST_HASH_LEN]
typedef unsigned char | axutil_digest_hash_hex_t [AXIS2_DIGEST_HASH_HEX_LEN+1]
## Functions
AXIS2_EXTERN axis2_status_t | axutil_digest_calc_get_h_a1 (const axutil_env_t *env, char *algorithm, char *user_name, char *realm, char *password, char *nonce, char *cnonce, axutil_digest_hash_hex_t session_key)
AXIS2_EXTERN axis2_status_t | axutil_digest_calc_get_response (const axutil_env_t *env, axutil_digest_hash_hex_t h_a1, char *nonce, char *nonce_count, char *cnonce, char *qop, char *method, char *digest_uri, axutil_digest_hash_hex_t h_entity, axutil_digest_hash_hex_t response)

## Function Documentation

AXIS2_EXTERN axis2_status_t axutil_digest_calc_get_h_a1 | ( | const axutil_env_t * | env,
|  | char * | algorithm,
|  | char * | user_name,
|  | char * | realm,
|  | char * | password,
|  | char * | nonce,
|  | char * | cnonce,
|  | axutil_digest_hash_hex_t | session_key |
| ) |  |  |

calculate H(A1) as per HTTP Digest spec

Parameters:

  | env,pointer | to env struct
  | algorithm,algorithm |
  | user_name,user | name
  | realm,reaalm |
  | password,password |
  | nonce,nonce | from server
  | cnonce,client | nonce
  | session_key,H(A1) |

Returns:
  AXIS2_SUCCESS on success or AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t axutil_digest_calc_get_response | ( | const axutil_env_t * | env,
|  | axutil_digest_hash_hex_t | h_a1,
|  | char * | nonce,
|  | char * | nonce_count,
|  | char * | cnonce,
|  | char * | qop,
|  | char * | method,
|  | char * | digest_uri,
|  | axutil_digest_hash_hex_t | h_entity,
|  | axutil_digest_hash_hex_t | response |
| ) |  |  |

calculate request-digest/response-digest as per HTTP Digest spec

Parameters:

  | env,pointer | to env struct
  | h_a1,H(A1) |
  | nonce,nonce | from server
  | cnonce,client | nonce
  | qop,qop-value,: | "", "auth", "auth-int"
  | method,method | from the request
  | digest_uri,requested | URL
  | h_entry,H(entity | body) if qop="auth-int"
  | response,request-digest | or response-digest

Returns:
  AXIS2_SUCCESS on success or AXIS2_FAILURE