⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 msg_auth.c

📁 Sofia SIP is an open-source SIP User-Agent library, compliant with the IETF RFC3261 specification.
💻 C
字号:
/* * This file is part of the Sofia-SIP package * * Copyright (C) 2005 Nokia Corporation. * * Contact: Pekka Pessi <pekka.pessi@nokia.com> * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public License * as published by the Free Software Foundation; either version 2.1 of * the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA * 02110-1301 USA * *//**@ingroup msg_parser * @CFILE msg_auth.c * * Functions for handling authentication-related headers * * @author Pekka Pessi <Pekka.Pessi@nokia.com> * * @date Created: Tue Jun 13 02:57:51 2000 ppessi * */#include "config.h"#include <stdio.h>#include <stddef.h>#include <stdlib.h>#include <string.h>#include <limits.h>#include <assert.h>#include <sofia-sip/msg.h>#include <sofia-sip/msg_parser.h>#include <sofia-sip/msg_header.h>#include <sofia-sip/bnf.h>#if 0/** * Scan and compact an authentication parameter. * * Scan an authentication parameter, which has syntax as follows: * @code * auth-item = auth-param | base64-string * auth-param = token [ "=" (token | quoted-string)] * @endcode * * Parameters: * @param s      pointer to string to scan * * @return Number of characters scanned, or zero upon an error. */static size_t msg_auth_item_scan(char *start){  char *p, *s;  p = s = start;  /* XXX */  return start - s;}#endif/* ====================================================================== *//* * auth           = ("Authorization" | "Encryption" |  *                   "Proxy-Authenticate" | "Proxy-Authorization" | *                   "Response-Key" | "WWW-Authenticate") ":"  *                    scheme 1*SP #auth-param * scheme         = token * auth-param     = token | token "=" token | token "=" quoted-string *//** Parse security headers. */issize_t msg_auth_d(su_home_t *home,		    msg_header_t *h,		    char *s,		    isize_t slen){  msg_auth_t *au = (msg_auth_t *)h;  au->au_scheme = s;    skip_token(&s);  if (!IS_LWS(*s)) return -1;  *s++ = '\0';			/* NUL-terminate scheme */  return msg_commalist_d(home, &s, (msg_param_t **)&au->au_params, 			 NULL /* msg_auth_item_scan */);}issize_t msg_auth_e(char b[], isize_t bsiz, msg_header_t const *h, int f){  msg_auth_t const *au = (msg_auth_t *)h;  int compact = MSG_IS_COMPACT(f);  char *b0 = b, *end = b + bsiz;  MSG_STRING_E(b, end, au->au_scheme);  if (au->au_params) {    MSG_CHAR_E(b, end, ' ');    MSG_COMMALIST_E(b, end, au->au_params, compact);  }  MSG_TERM_E(b, end);    return b - b0;}/**@internal  * Extra size of a msg_auth_t object. * * This function calculates extra size required by a msg_auth_t object. * * @param a pointer to a msg_auth_t object * * @return *   Size of strings related to msg_auth_t object. */isize_t msg_auth_dup_xtra(msg_header_t const *h, isize_t offset){  msg_auth_t const *au = h->sh_auth;  MSG_PARAMS_SIZE(offset, au->au_params);  offset += MSG_STRING_SIZE(au->au_scheme);      return offset;}/**Duplicate one msg_auth_t object. */char *msg_auth_dup_one(msg_header_t *dst,		       msg_header_t const *src,		       char *b,		       isize_t xtra){  msg_auth_t *au = dst->sh_auth;  msg_auth_t const *o = src->sh_auth;  char *end = b + xtra;  b = msg_params_dup(&au->au_params, o->au_params, b, xtra);  MSG_STRING_DUP(b, au->au_scheme, o->au_scheme);      assert(b <= end); (void)end;  return b;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -