-
Notifications
You must be signed in to change notification settings - Fork 13
Expand file tree
/
Copy pathauth.h
More file actions
68 lines (64 loc) · 2.51 KB
/
Copy pathauth.h
File metadata and controls
68 lines (64 loc) · 2.51 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
/*
* FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application
* Copyright (C) 2005-2014, Anthony Minessale II <anthm@freeswitch.org>
*
* Version: MPL 1.1
*
* The contents of this file are subject to the Mozilla Public License Version
* 1.1 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* The Original Code is FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application
*
* Contributor(s):
*
*
* auth.h -- HMAC-SHA1 signed-token generation for Janus signed-mode auth
*
* Produces tokens in the exact format Janus core validates in
* janus_auth_check_signature / janus_auth_check_signature_contains:
*
* <expiry>,janus,<descriptor1>[,<descriptor2>...]:<base64(HMAC-SHA1(data, secret))>
*
* The caller is responsible for providing the HMAC secret (the same value
* as Janus core's `token_auth_secret`), the token TTL, and the list of
* descriptors that must be embedded in the token (e.g. the plugin package
* "janus.plugin.audiobridge", optionally followed by "room=<id>" for the
* AudioBridge/VideoRoom per-room signed_tokens enforcement).
*/
#ifndef _AUTH_H_
#define _AUTH_H_
#include "switch.h"
/*! \brief Generate a Janus HMAC-SHA1 signed token.
*
* \param pSecret NUL-terminated HMAC key (must match Janus core's
* token_auth_secret). Must be non-NULL and non-empty.
* \param ttlSeconds Token lifetime in seconds from now. Must be > 0.
* \param ppDescriptors Array of NUL-terminated descriptor strings that will
* be embedded in the token data part (e.g.
* "janus.plugin.audiobridge", "room=1234"). May be NULL
* if ndesc == 0.
* \param ndesc Number of entries in ppDescriptors.
*
* \returns A malloc'd NUL-terminated token string on success, or NULL on
* failure. Caller must free() the returned pointer.
*/
char *authSignToken(const char *pSecret, int ttlSeconds,
const char *const *ppDescriptors, int ndesc);
#endif /* _AUTH_H_ */
/* For Emacs:
* Local Variables:
* mode:c
* indent-tabs-mode:t
* tab-width:4
* c-basic-offset:4
* End:
* For VIM:
* vim:set softtabstop=4 shiftwidth=4 tabstop=4 noet:
*/