Module: kamailio
Branch: master
Commit: 090a1903a3f8cc0fc4789fdd75405d5eed92a2e7
URL: 
https://github.com/kamailio/kamailio/commit/090a1903a3f8cc0fc4789fdd75405d5eed92a2e7

Author: Daniel-Constantin Mierla <[email protected]>
Committer: Daniel-Constantin Mierla <[email protected]>
Date: 2026-05-06T09:50:05+02:00

core: parser/digest - extended for sha hashing algoritms

---

Modified: src/core/parser/digest/digest.c
Modified: src/core/parser/digest/digest_parser.c
Modified: src/core/parser/digest/digest_parser.h

---

Diff:  
https://github.com/kamailio/kamailio/commit/090a1903a3f8cc0fc4789fdd75405d5eed92a2e7.diff
Patch: 
https://github.com/kamailio/kamailio/commit/090a1903a3f8cc0fc4789fdd75405d5eed92a2e7.patch

---

diff --git a/src/core/parser/digest/digest.c b/src/core/parser/digest/digest.c
index 7e7deda2fa7..8bd0a692384 100644
--- a/src/core/parser/digest/digest.c
+++ b/src/core/parser/digest/digest.c
@@ -185,6 +185,24 @@ void print_cred(dig_cred_t *_c)
                        case ALG_MD5SESS:
                                printf("ALG_MD5SESS\n");
                                break;
+                       case ALG_SHA256:
+                               printf("ALG_SHA256\n");
+                               break;
+                       case ALG_SHA256SESS:
+                               printf("ALG_SHA256SESS\n");
+                               break;
+                       case ALG_SHA512:
+                               printf("ALG_SHA512\n");
+                               break;
+                       case ALG_SHA512SESS:
+                               printf("ALG_SHA512SESS\n");
+                               break;
+                       case ALG_SHA512_256:
+                               printf("ALG_SHA512_256\n");
+                               break;
+                       case ALG_SHA512_256SESS:
+                               printf("ALG_SHA512_256SESS\n");
+                               break;
                        case ALG_OTHER:
                                printf("ALG_OTHER\n");
                                break;
diff --git a/src/core/parser/digest/digest_parser.c 
b/src/core/parser/digest/digest_parser.c
index eb772ba5090..8a0a52396d1 100644
--- a/src/core/parser/digest/digest_parser.c
+++ b/src/core/parser/digest/digest_parser.c
@@ -52,6 +52,24 @@
 #define ALG_MD5SESS_STR "MD5-sess"
 #define ALG_MD5SESS_STR_LEN 8
 
+#define ALG_SHA256_STR "SHA-256"
+#define ALG_SHA256_STR_LEN 7
+
+#define ALG_SHA256SESS_STR "SHA-256-sess"
+#define ALG_SHA256SESS_STR_LEN 12
+
+#define ALG_SHA512_STR "SHA-512"
+#define ALG_SHA512_STR_LEN 7
+
+#define ALG_SHA512SESS_STR "SHA-512-sess"
+#define ALG_SHA512SESS_STR_LEN 12
+
+#define ALG_SHA512_256_STR "SHA-512-256"
+#define ALG_SHA512_256_STR_LEN 11
+
+#define ALG_SHA512_256SESS_STR "SHA-512-256-sess"
+#define ALG_SHA512_256SESS_STR_LEN 16
+
 
 /*
  * Parse quoted string in a parameter body
@@ -283,6 +301,28 @@ static inline void parse_algorithm(struct algorithm *_a)
        } else if((s.len == ALG_MD5SESS_STR_LEN)
                          && !strncasecmp(s.s, ALG_MD5SESS_STR, 
ALG_MD5SESS_STR_LEN)) {
                _a->alg_parsed = ALG_MD5SESS;
+       } else if((s.len == ALG_SHA256_STR_LEN)
+                         && !strncasecmp(s.s, ALG_SHA256_STR, 
ALG_SHA256_STR_LEN)) {
+               _a->alg_parsed = ALG_SHA256;
+       } else if((s.len == ALG_SHA256SESS_STR_LEN)
+                         && !strncasecmp(
+                                         s.s, ALG_SHA256SESS_STR, 
ALG_SHA256SESS_STR_LEN)) {
+               _a->alg_parsed = ALG_SHA256SESS;
+       } else if((s.len == ALG_SHA512_STR_LEN)
+                         && !strncasecmp(s.s, ALG_SHA512_STR, 
ALG_SHA512_STR_LEN)) {
+               _a->alg_parsed = ALG_SHA512;
+       } else if((s.len == ALG_SHA512SESS_STR_LEN)
+                         && !strncasecmp(
+                                         s.s, ALG_SHA512SESS_STR, 
ALG_SHA512SESS_STR_LEN)) {
+               _a->alg_parsed = ALG_SHA512SESS;
+       } else if((s.len == ALG_SHA512_256_STR_LEN)
+                         && !strncasecmp(
+                                         s.s, ALG_SHA512_256_STR, 
ALG_SHA512_256_STR_LEN)) {
+               _a->alg_parsed = ALG_SHA512_256;
+       } else if((s.len == ALG_SHA512_256SESS_STR_LEN)
+                         && !strncasecmp(s.s, ALG_SHA512_256SESS_STR,
+                                         ALG_SHA512_256SESS_STR_LEN)) {
+               _a->alg_parsed = ALG_SHA512_256SESS;
        } else {
                _a->alg_parsed = ALG_OTHER;
        }
diff --git a/src/core/parser/digest/digest_parser.h 
b/src/core/parser/digest/digest_parser.h
index f52894abfce..c27d0c0da02 100644
--- a/src/core/parser/digest/digest_parser.h
+++ b/src/core/parser/digest/digest_parser.h
@@ -40,10 +40,16 @@
 /* Type of algorithm used */
 typedef enum alg
 {
-       ALG_UNSPEC = 0,  /* Algorithm parameter not specified */
-       ALG_MD5 = 1,     /* MD5 - default value*/
-       ALG_MD5SESS = 2, /* MD5-Session */
-       ALG_OTHER = 4    /* Unknown */
+       ALG_UNSPEC = 0,                 /* Algorithm parameter not specified */
+       ALG_MD5 = 1,                    /* MD5 - default value*/
+       ALG_MD5SESS = 2,                /* MD5-Session */
+       ALG_SHA256 = 3,                 /* SHA-256 */
+       ALG_SHA256SESS = 4,             /* SHA-256-sess */
+       ALG_SHA512 = 5,                 /* SHA-512 */
+       ALG_SHA512SESS = 6,             /* SHA-512-sess */
+       ALG_SHA512_256 = 7,             /* SHA-512-256 */
+       ALG_SHA512_256SESS = 8, /* SHA-512-256-sess */
+       ALG_OTHER = 255                 /* Unknown */
 } alg_t;
 
 

_______________________________________________
Kamailio - Development Mailing List -- [email protected]
To unsubscribe send an email to [email protected]
Important: keep the mailing list in the recipients, do not reply only to the 
sender!

Reply via email to