summaryrefslogtreecommitdiff
path: root/src/urtc.c
diff options
context:
space:
mode:
authorChris Hiszpanski <chris@liburtc.org>2021-05-04 00:49:02 -0700
committerChris Hiszpanski <chris@liburtc.org>2021-05-04 01:07:32 -0700
commit1c80e4fad04638b4e6f141f49d27a0caf915d624 (patch)
treec1df01a5d2b11ecbff250749d8a949016b719e1f /src/urtc.c
parent2745c093dca7105672fd540f9d060a0ef1a1ce69 (diff)
Adds ice-pwd and ice-ufrag to sdp answer
Adds simple base64 encoder as pwd and ufrag are expected to be base64 encoded. Uses prng to generate random data. Is this secure?
Diffstat (limited to 'src/urtc.c')
-rw-r--r--src/urtc.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/urtc.c b/src/urtc.c
index f3ffa99..47c32b8 100644
--- a/src/urtc.c
+++ b/src/urtc.c
@@ -39,6 +39,7 @@
#include <sys/socket.h> // socket
#include <sys/types.h>
+#include "b64.h" // b64_encode
#include "err.h"
#include "log.h"
#include "mdns.h" // mdns_subscribe, mdns_unsubscribe
@@ -426,6 +427,17 @@ int urtc_add_ice_candidate(struct peerconn *pc, const char *cand) {
}
int urtc_create_answer(struct peerconn *pc, char *answer, size_t size) {
+ char pwd[18]; // 24 base64 characters
+ char ufrag[3]; // 4 base64 characters
+
+ prng(pwd, sizeof(pwd));
+ prng(ufrag, sizeof(ufrag));
+
+ b64_encode(pc->ldesc.pwd, pwd, sizeof(pwd));
+ b64_encode(pc->ldesc.ufrag, ufrag, sizeof(ufrag));
+
+ pc->ldesc.mode = SDP_MODE_SEND_ONLY;
+
return sdp_serialize(answer, size, &pc->ldesc);
}