Genivia Home Documentation
httpda.c File Reference

updated Mon Apr 22 2024 by Robert van Engelen
 
Macros | Functions | Variables
httpda.c File Reference
#include "httpda.h"
Include dependency graph for httpda.c:

Macros

#define HTTP_DA_NONCELEN   (21)
 
#define HTTP_DA_OPAQUELEN   (9)
 

Functions

static int http_da_init (struct soap *soap, struct http_da_data *data, int *arg)
 
static int http_da_copy (struct soap *soap, struct soap_plugin *dst, struct soap_plugin *src)
 
static void http_da_delete (struct soap *soap, struct soap_plugin *p)
 
static int http_da_post_header (struct soap *soap, const char *key, const char *val)
 
static int http_da_parse (struct soap *soap)
 
static int http_da_parse_header (struct soap *soap, const char *key, const char *val)
 
static int http_da_prepareinitsend (struct soap *soap)
 
static int http_da_prepareinitrecv (struct soap *soap)
 
static int http_da_preparesend (struct soap *soap, const char *buf, size_t len)
 
static int http_da_preparerecv (struct soap *soap, const char *buf, size_t len)
 
static int http_da_preparefinalrecv (struct soap *soap)
 
static void http_da_session_start (const char *realm, const char *nonce, const char *opaque)
 
static int http_da_session_update (const char *realm, const char *nonce, const char *opaque, const char *cnonce, const char *ncount)
 
static void http_da_session_cleanup ()
 
static void http_da_calc_nonce (struct soap *soap, char nonce[HTTP_DA_NONCELEN])
 
static void http_da_calc_opaque (struct soap *soap, char opaque[HTTP_DA_OPAQUELEN])
 
static int http_da_calc_HA1 (struct soap *soap, struct soap_smd_data *smd_data, const char *alg, const char *userid, const char *realm, const char *passwd, const char *nonce, const char *cnonce, char HA1hex[65])
 
static int http_da_calc_response (struct soap *soap, struct soap_smd_data *smd_data, const char *alg, char HA1hex[65], const char *nonce, const char *ncount, const char *cnonce, const char *qop, const char *method, const char *uri, char entityHAhex[65], char response[65], char responseHA[32])
 
SOAP_FMAC1 int SOAP_FMAC2 http_da (struct soap *soap, struct soap_plugin *p, void *arg)
 
SOAP_FMAC1 void *SOAP_FMAC2 http_da_md5 ()
 Use soap_register_plugin_arg(soap, http_da, http_da_md5()) for MD5 server-side challenge algorithm (not recommended). More...
 
SOAP_FMAC1 void *SOAP_FMAC2 http_da_md5_sess ()
 Use soap_register_plugin_arg(soap, http_da, http_da_md5_sess()) for MD5-sess server-side challenge algorithm (not recommended). More...
 
SOAP_FMAC1 void *SOAP_FMAC2 http_da_sha256 ()
 Use soap_register_plugin_arg(soap, http_da, http_da_sha256()) for MD5 server-side challenge algorithm (recommended). More...
 
SOAP_FMAC1 void *SOAP_FMAC2 http_da_sha256_sess ()
 Use soap_register_plugin_arg(soap, http_da, http_da_sha256_sess()) for MD5-sess server-side challenge algorithm (recommended). More...
 
SOAP_FMAC1 void *SOAP_FMAC2 http_da_sha512_256 ()
 Use soap_register_plugin_arg(soap, http_da, http_da_sha512_256()) for MD5 server-side challenge algorithm (not yet supported). More...
 
SOAP_FMAC1 void *SOAP_FMAC2 http_da_sha512_256_sess ()
 Use soap_register_plugin_arg(soap, http_da, http_da_sha512_256_sess()) for MD5-sess server-side challenge algorithm (not yet supported). More...
 
SOAP_FMAC1 void SOAP_FMAC2 http_da_save (struct soap *soap, struct http_da_info *info, const char *realm, const char *userid, const char *passwd)
 Saves the credentials to the digest store to use repeatedly for authentication. More...
 
SOAP_FMAC1 void SOAP_FMAC2 http_da_proxy_save (struct soap *soap, struct http_da_info *info, const char *realm, const char *userid, const char *passwd)
 Saves the credentials to the digest store to use repeatedly for proxy authentication. More...
 
SOAP_FMAC1 void SOAP_FMAC2 http_da_restore (struct soap *soap, struct http_da_info *info)
 Retrieves the credentials from the digest store to use for authentication. More...
 
SOAP_FMAC1 void SOAP_FMAC2 http_da_proxy_restore (struct soap *soap, struct http_da_info *info)
 Retrieves the credentials from the digest store to use for proxy authentication. More...
 
SOAP_FMAC1 void SOAP_FMAC2 http_da_release (struct soap *soap, struct http_da_info *info)
 Releases the digest store and frees memory. More...
 
SOAP_FMAC1 void SOAP_FMAC2 http_da_proxy_release (struct soap *soap, struct http_da_info *info)
 Releases the digest store for proxy authentication and frees memory. More...
 
SOAP_FMAC1 int SOAP_FMAC2 http_da_verify_post (struct soap *soap, const char *passwd)
 Verifies the password credentials at the server side when used in an HTTP POST service operation. More...
 
SOAP_FMAC1 int SOAP_FMAC2 http_da_verify_get (struct soap *soap, const char *passwd)
 Verifies the password credentials at the server side when used in an HTTP GET service operation. More...
 
SOAP_FMAC1 int SOAP_FMAC2 http_da_verify_put (struct soap *soap, const char *passwd)
 Verifies the password credentials at the server side when used in an HTTP PUT service operation. More...
 
SOAP_FMAC1 int SOAP_FMAC2 http_da_verify_patch (struct soap *soap, const char *passwd)
 Verifies the password credentials at the server side when used in an HTTP PATCH service operation. More...
 
SOAP_FMAC1 int SOAP_FMAC2 http_da_verify_del (struct soap *soap, const char *passwd)
 Verifies the password credentials at the server side when used in an HTTP DELETE service operation. More...
 
SOAP_FMAC1 int SOAP_FMAC2 http_da_verify_method (struct soap *soap, const char *method, const char *passwd)
 Verifies the password credentials at the server side when used in the specified HTTP method. More...
 

Variables

const char http_da_id [] = HTTP_DA_ID
 
static struct http_da_sessionhttp_da_session = NULL
 
static MUTEX_TYPE http_da_session_lock = MUTEX_INITIALIZER
 

Macro Definition Documentation

#define HTTP_DA_NONCELEN   (21)
#define HTTP_DA_OPAQUELEN   (9)

Function Documentation

SOAP_FMAC1 int SOAP_FMAC2 http_da ( struct soap *  soap,
struct soap_plugin *  p,
void *  arg 
)

Plugin registry function, use with soap_register_plugin_arg(soap, http_da, ...)

static int http_da_calc_HA1 ( struct soap *  soap,
struct soap_smd_data *  smd_data,
const char *  alg,
const char *  userid,
const char *  realm,
const char *  passwd,
const char *  nonce,
const char *  cnonce,
char  HA1hex[65] 
)
static
static void http_da_calc_nonce ( struct soap *  soap,
char  nonce[HTTP_DA_NONCELEN] 
)
static
static void http_da_calc_opaque ( struct soap *  soap,
char  opaque[HTTP_DA_OPAQUELEN] 
)
static
static int http_da_calc_response ( struct soap *  soap,
struct soap_smd_data *  smd_data,
const char *  alg,
char  HA1hex[65],
const char *  nonce,
const char *  ncount,
const char *  cnonce,
const char *  qop,
const char *  method,
const char *  uri,
char  entityHAhex[65],
char  response[65],
char  responseHA[32] 
)
static
static int http_da_copy ( struct soap *  soap,
struct soap_plugin *  dst,
struct soap_plugin *  src 
)
static
static void http_da_delete ( struct soap *  soap,
struct soap_plugin *  p 
)
static
static int http_da_init ( struct soap *  soap,
struct http_da_data data,
int *  arg 
)
static
SOAP_FMAC1 void* SOAP_FMAC2 http_da_md5 ( )

Use soap_register_plugin_arg(soap, http_da, http_da_md5()) for MD5 server-side challenge algorithm (not recommended).

Use MD5 for server-side configuration with soap_register_plugin_arg() not recommended

SOAP_FMAC1 void* SOAP_FMAC2 http_da_md5_sess ( )

Use soap_register_plugin_arg(soap, http_da, http_da_md5_sess()) for MD5-sess server-side challenge algorithm (not recommended).

Use MD5-sess for server-side configuration with soap_register_plugin_arg() not recommended

static int http_da_parse ( struct soap *  soap)
static
static int http_da_parse_header ( struct soap *  soap,
const char *  key,
const char *  val 
)
static
static int http_da_post_header ( struct soap *  soap,
const char *  key,
const char *  val 
)
static
static int http_da_preparefinalrecv ( struct soap *  soap)
static
static int http_da_prepareinitrecv ( struct soap *  soap)
static
static int http_da_prepareinitsend ( struct soap *  soap)
static
static int http_da_preparerecv ( struct soap *  soap,
const char *  buf,
size_t  len 
)
static
static int http_da_preparesend ( struct soap *  soap,
const char *  buf,
size_t  len 
)
static
SOAP_FMAC1 void SOAP_FMAC2 http_da_proxy_release ( struct soap *  soap,
struct http_da_info info 
)

Releases the digest store for proxy authentication and frees memory.

Parameters
soapcontext
infoa pointer to the digest store
SOAP_FMAC1 void SOAP_FMAC2 http_da_proxy_restore ( struct soap *  soap,
struct http_da_info info 
)

Retrieves the credentials from the digest store to use for proxy authentication.

Parameters
soapcontext
infoa pointer to the digest store
SOAP_FMAC1 void SOAP_FMAC2 http_da_proxy_save ( struct soap *  soap,
struct http_da_info info,
const char *  realm,
const char *  userid,
const char *  passwd 
)

Saves the credentials to the digest store to use repeatedly for proxy authentication.

Parameters
soapcontext
infoa pointer to the digest store
realmstring (e.g. use soap->authrealm) of the server
useridthe user ID string
passwdthe user password string
SOAP_FMAC1 void SOAP_FMAC2 http_da_release ( struct soap *  soap,
struct http_da_info info 
)

Releases the digest store and frees memory.

Parameters
soapcontext
infoa pointer to the digest store
SOAP_FMAC1 void SOAP_FMAC2 http_da_restore ( struct soap *  soap,
struct http_da_info info 
)

Retrieves the credentials from the digest store to use for authentication.

Parameters
soapcontext
infoa pointer to the digest store
SOAP_FMAC1 void SOAP_FMAC2 http_da_save ( struct soap *  soap,
struct http_da_info info,
const char *  realm,
const char *  userid,
const char *  passwd 
)

Saves the credentials to the digest store to use repeatedly for authentication.

Parameters
soapcontext
infoa pointer to the digest store
realmstring (e.g. use soap->authrealm) of the server
useridthe user ID string
passwdthe user password string
static void http_da_session_cleanup ( )
static
static void http_da_session_start ( const char *  realm,
const char *  nonce,
const char *  opaque 
)
static
static int http_da_session_update ( const char *  realm,
const char *  nonce,
const char *  opaque,
const char *  cnonce,
const char *  ncount 
)
static
SOAP_FMAC1 void* SOAP_FMAC2 http_da_sha256 ( )

Use soap_register_plugin_arg(soap, http_da, http_da_sha256()) for MD5 server-side challenge algorithm (recommended).

Use SHA-256 for server-side configuration with soap_register_plugin_arg()

SOAP_FMAC1 void* SOAP_FMAC2 http_da_sha256_sess ( )

Use soap_register_plugin_arg(soap, http_da, http_da_sha256_sess()) for MD5-sess server-side challenge algorithm (recommended).

Use SHA-256-sess for server-side configuration with soap_register_plugin_arg()

SOAP_FMAC1 void* SOAP_FMAC2 http_da_sha512_256 ( )

Use soap_register_plugin_arg(soap, http_da, http_da_sha512_256()) for MD5 server-side challenge algorithm (not yet supported).

Use SHA-512-256 for server-side configuration with soap_register_plugin_arg()

SOAP_FMAC1 void* SOAP_FMAC2 http_da_sha512_256_sess ( )

Use soap_register_plugin_arg(soap, http_da, http_da_sha512_256_sess()) for MD5-sess server-side challenge algorithm (not yet supported).

Use SHA-512-256-sess for server-side configuration with soap_register_plugin_arg()

SOAP_FMAC1 int SOAP_FMAC2 http_da_verify_del ( struct soap *  soap,
const char *  passwd 
)

Verifies the password credentials at the server side when used in an HTTP DELETE service operation.

Parameters
soapcontext
passwdthe user password string
Returns
SOAP_OK or error when verification failed
SOAP_FMAC1 int SOAP_FMAC2 http_da_verify_get ( struct soap *  soap,
const char *  passwd 
)

Verifies the password credentials at the server side when used in an HTTP GET service operation.

Parameters
soapcontext
passwdthe user password string
Returns
SOAP_OK or error when verification failed
SOAP_FMAC1 int SOAP_FMAC2 http_da_verify_method ( struct soap *  soap,
const char *  method,
const char *  passwd 
)

Verifies the password credentials at the server side when used in the specified HTTP method.

Parameters
soapcontext
methodthe HTTP method, e.g. "POST", "GET", "PUT", "DELETE", "PATCH", "HEAD", "OPTIONS"
passwdthe user password string
Returns
SOAP_OK or error when verification failed
SOAP_FMAC1 int SOAP_FMAC2 http_da_verify_patch ( struct soap *  soap,
const char *  passwd 
)

Verifies the password credentials at the server side when used in an HTTP PATCH service operation.

Parameters
soapcontext
passwdthe user password string
Returns
SOAP_OK or error when verification failed
SOAP_FMAC1 int SOAP_FMAC2 http_da_verify_post ( struct soap *  soap,
const char *  passwd 
)

Verifies the password credentials at the server side when used in an HTTP POST service operation.

Parameters
soapcontext
passwdthe user password string
Returns
SOAP_OK or error when verification failed
SOAP_FMAC1 int SOAP_FMAC2 http_da_verify_put ( struct soap *  soap,
const char *  passwd 
)

Verifies the password credentials at the server side when used in an HTTP PUT service operation.

Parameters
soapcontext
passwdthe user password string
Returns
SOAP_OK or error when verification failed

Variable Documentation

const char http_da_id[] = HTTP_DA_ID

plugin identification for plugin registry

struct http_da_session* http_da_session = NULL
static

HTTP DA session database

MUTEX_TYPE http_da_session_lock = MUTEX_INITIALIZER
static

HTTP DA session database lock