From 1a86b2499a8bd0adead434848ff345909fcade01 Mon Sep 17 00:00:00 2001 From: Dan Cropp Date: Wed, 21 Aug 2019 10:58:00 -0500 Subject: [PATCH] pjproject: Configurable setting for cnonce to include hyphens or not NEC SIP Station interface with authenticated registration only supports cnonce up to 32 characters. In Linux, PJSIP would generate 36 character cnonce which included hyphens. Teluu developed this patch adding a compile time setting to default to not include the hyphens. They felt it best to still generate the UUID and strip the hyphens. They have indicated it will be part of PJSIP 2.10. ASTERISK-28509 Reported-by: Dan Cropp Change-Id: Ibdfcf845d4f8c0a14df09fd983b11f2d72c5f470 --- ...0020-patch_cnonce_only_digits_option.patch | 53 +++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 third-party/pjproject/patches/0020-patch_cnonce_only_digits_option.patch diff --git a/third-party/pjproject/patches/0020-patch_cnonce_only_digits_option.patch b/third-party/pjproject/patches/0020-patch_cnonce_only_digits_option.patch new file mode 100644 index 0000000000..ecf6c94324 --- /dev/null +++ b/third-party/pjproject/patches/0020-patch_cnonce_only_digits_option.patch @@ -0,0 +1,53 @@ +Index: pjsip/include/pjsip/sip_config.h +=================================================================== +--- a/pjsip/include/pjsip/sip_config.h (revision 6050) ++++ b/pjsip/include/pjsip/sip_config.h (working copy) +@@ -1190,6 +1190,20 @@ + # define PJSIP_AUTH_CACHED_POOL_MAX_SIZE (20 * 1024) + #endif + ++ ++/** ++ * Specify whether the cnonce used for SIP authentication contain digits only. ++ * The "cnonce" value is setup using GUID generator, i.e: ++ * pj_create_unique_string(), and the GUID string may contain hyphen character ++ * ("-"). Some SIP servers do not like this GUID format, so this option will ++ * strip any hyphens from the GUID string. ++ * ++ * Default is 1 (cnonce will only contain digit characters). ++ */ ++#ifndef PJSIP_AUTH_CNONCE_USE_DIGITS_ONLY ++# define PJSIP_AUTH_CNONCE_USE_DIGITS_ONLY 1 ++#endif ++ + /***************************************************************************** + * SIP Event framework and presence settings. + */ +Index: pjsip/src/pjsip/sip_auth_client.c +=================================================================== +--- a/pjsip/src/pjsip/sip_auth_client.c (revision 6050) ++++ b/pjsip/src/pjsip/sip_auth_client.c (working copy) +@@ -396,7 +396,23 @@ + + /* Create cnonce */ + pj_create_unique_string( cached_auth->pool, &cached_auth->cnonce ); ++#if defined(PJSIP_AUTH_CNONCE_USE_DIGITS_ONLY) && \ ++ PJSIP_AUTH_CNONCE_USE_DIGITS_ONLY!=0 ++ if (pj_strchr(&cached_auth->cnonce, '-')) { ++ /* remove hyphen character. */ ++ int w, r, len = pj_strlen(&cached_auth->cnonce); ++ char *s = cached_auth->cnonce.ptr; + ++ w = r = 0; ++ for (; r < len; r++) { ++ if (s[r] != '-') ++ s[w++] = s[r]; ++ } ++ s[w] = '\0'; ++ cached_auth->cnonce.slen = w; ++ } ++#endif ++ + /* Initialize nonce-count */ + cached_auth->nc = 1; +