MCPcopy Create free account
hub / github.com/SIPp/sipp / createAuthHeader

Function createAuthHeader

src/auth.cpp:163–218  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

161}
162
163int createAuthHeader(
164 const char* user, const char* password, const char* method,
165 const char* uri, const char* msgbody, const char* auth,
166 const char* aka_OP, const char* aka_AMF, const char* aka_K,
167 unsigned int nonce_count, char* result, size_t result_len)
168{
169
170 char algo[32] = "MD5";
171 char *start, *end;
172
173 if ((start = stristr(auth, "Digest")) == nullptr) {
174 snprintf(result, result_len, "createAuthHeader: authentication must be digest");
175 return 0;
176 }
177
178 if (!method) {
179 snprintf(result, result_len, "createAuthHeader: authentication requires a method");
180 return 0;
181 }
182
183 if ((start = stristr(auth, "algorithm=")) != nullptr) {
184 start = start + strlen("algorithm=");
185 if (*start == '"') {
186 start++;
187 }
188 end = start + strcspn(start, " ,\"\r\n");
189 strncpy(algo, start, end - start);
190 algo[end - start] ='\0';
191
192 }
193
194 if (strncasecmp(algo, "MD5", 3)==0) {
195 return createAuthHeaderMD5(
196 user, password, strlen(password), method, uri, msgbody,
197 auth, algo, nonce_count, result, result_len);
198 } else if (strncasecmp(algo, "AKAv1-MD5", 9)==0) {
199 if (!aka_K) {
200 snprintf(result, result_len, "createAuthHeader: AKAv1-MD5 authentication requires a key");
201 return 0;
202 }
203 return createAuthHeaderAKAv1MD5(
204 user, aka_OP, aka_AMF, aka_K, method, uri, msgbody, auth,
205 algo, nonce_count, result, result_len);
206#ifdef USE_SHA256
207 } else if (strncasecmp(algo, "SHA-256", 7)==0) {
208 return createAuthHeaderSHA256(
209 user, password, strlen(password), method, uri, msgbody,
210 auth, algo, nonce_count, result, result_len);
211#endif // USE_SHA256
212 } else {
213 snprintf(result, result_len, "createAuthHeader: authentication must use MD5, AKAv1-MD5 or SHA-256");
214 return 0;
215 }
216
217
218}
219
220

Callers 2

createSendingMessageMethod · 0.85
TESTFunction · 0.85

Calls 4

stristrFunction · 0.85
createAuthHeaderMD5Function · 0.85
createAuthHeaderAKAv1MD5Function · 0.85
createAuthHeaderSHA256Function · 0.85

Tested by

no test coverage detected