int main (int argc, char **argv) { FILE *wwwauthenticates_file; osip_www_authenticate_t *wwwauthenticate; char *a_wwwauthenticate; char *dest; char *res; wwwauthenticates_file = fopen (argv[1], "r"); if (wwwauthenticates_file == NULL) { fprintf (stdout, "Failed to open %s file.\nUsage: twwwauthenticate wwwauthenticates.txt\n", argv[1]); exit (0); } a_wwwauthenticate = (char *) osip_malloc (200); res = fgets (a_wwwauthenticate, 200, wwwauthenticates_file); /* lines are under 200 */ while (res != NULL) { int errcode; /* remove the last '\n' before parsing */ strncpy (a_wwwauthenticate + strlen (a_wwwauthenticate) - 1, "\0", 1); if (0 != strncmp (a_wwwauthenticate, "#", 1)) { /* allocate & init wwwauthenticate */ osip_www_authenticate_init (&wwwauthenticate); printf ("=================================================\n"); printf ("WWWAUTHENTICATE TO PARSE: |%s|\n", a_wwwauthenticate); errcode = osip_www_authenticate_parse (wwwauthenticate, a_wwwauthenticate); if (errcode != -1) { if (osip_www_authenticate_to_str (wwwauthenticate, &dest) != -1) { printf ("result: |%s|\n", dest); osip_free (dest); } } else printf ("Bad wwwauthenticate format: %s\n", a_wwwauthenticate); osip_www_authenticate_free (wwwauthenticate); printf ("=================================================\n"); } res = fgets (a_wwwauthenticate, 200, wwwauthenticates_file); /* lines are under 200 */ } osip_free (a_wwwauthenticate); return 0; }
/* returns -1 on error. */ int osip_message_set_www_authenticate (osip_message_t * sip, const char *hvalue) { osip_www_authenticate_t *www_authenticate; int i; if (hvalue == NULL || hvalue[0] == '\0') return OSIP_SUCCESS; if (sip == NULL) return OSIP_BADPARAMETER; i = osip_www_authenticate_init (&www_authenticate); if (i != 0) return i; i = osip_www_authenticate_parse (www_authenticate, hvalue); if (i != 0) { osip_www_authenticate_free (www_authenticate); return i; } sip->message_property = 2; osip_list_add (&sip->www_authenticates, www_authenticate, -1); return OSIP_SUCCESS; }
int osip_www_authenticate_clone (const osip_www_authenticate_t * wwwa, osip_www_authenticate_t ** dest) { int i; osip_www_authenticate_t *wa; *dest = NULL; if (wwwa == NULL) return OSIP_BADPARAMETER; if (wwwa->auth_type == NULL) return OSIP_BADPARAMETER; i = osip_www_authenticate_init (&wa); if (i != 0) /* allocation failed */ return i; wa->auth_type = osip_strdup (wwwa->auth_type); if (wa->auth_type == NULL && wwwa->auth_type != NULL) { osip_www_authenticate_free (wa); return OSIP_NOMEM; } if (wwwa->realm != NULL) wa->realm = osip_strdup (wwwa->realm); if (wa->realm == NULL && wwwa->realm != NULL) { osip_www_authenticate_free (wa); return OSIP_NOMEM; } if (wwwa->domain != NULL) wa->domain = osip_strdup (wwwa->domain); if (wa->domain == NULL && wwwa->domain != NULL) { osip_www_authenticate_free (wa); return OSIP_NOMEM; } if (wwwa->nonce != NULL) wa->nonce = osip_strdup (wwwa->nonce); if (wa->nonce == NULL && wwwa->nonce != NULL) { osip_www_authenticate_free (wa); return OSIP_NOMEM; } if (wwwa->opaque != NULL) wa->opaque = osip_strdup (wwwa->opaque); if (wa->opaque == NULL && wwwa->opaque != NULL) { osip_www_authenticate_free (wa); return OSIP_NOMEM; } if (wwwa->stale != NULL) wa->stale = osip_strdup (wwwa->stale); if (wa->stale == NULL && wwwa->stale != NULL) { osip_www_authenticate_free (wa); return OSIP_NOMEM; } if (wwwa->algorithm != NULL) wa->algorithm = osip_strdup (wwwa->algorithm); if (wa->algorithm == NULL && wwwa->algorithm != NULL) { osip_www_authenticate_free (wa); return OSIP_NOMEM; } if (wwwa->qop_options != NULL) wa->qop_options = osip_strdup (wwwa->qop_options); if (wa->qop_options == NULL && wwwa->qop_options != NULL) { osip_www_authenticate_free (wa); return OSIP_NOMEM; } if (wwwa->version != NULL) wa->version = osip_strdup (wwwa->version); if (wa->version==NULL && wwwa->version!=NULL) { osip_www_authenticate_free (wa); return OSIP_NOMEM; } if (wwwa->targetname != NULL) wa->targetname = osip_strdup (wwwa->targetname); if (wa->targetname==NULL && wwwa->targetname!=NULL) { osip_www_authenticate_free (wa); return OSIP_NOMEM; } if (wwwa->gssapi_data != NULL) wa->gssapi_data = osip_strdup (wwwa->gssapi_data); if (wa->gssapi_data==NULL && wwwa->gssapi_data!=NULL) { osip_www_authenticate_free (wa); return OSIP_NOMEM; } *dest = wa; return OSIP_SUCCESS; }