diff options
author | Chris Hiszpanski <chris@liburtc.org> | 2021-05-04 00:49:02 -0700 |
---|---|---|
committer | Chris Hiszpanski <chris@liburtc.org> | 2021-05-04 01:07:32 -0700 |
commit | 1c80e4fad04638b4e6f141f49d27a0caf915d624 (patch) | |
tree | c1df01a5d2b11ecbff250749d8a949016b719e1f /src/urtc.c | |
parent | 2745c093dca7105672fd540f9d060a0ef1a1ce69 (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.c | 12 |
1 files changed, 12 insertions, 0 deletions
@@ -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); } |