coturn源码解析之turn_random_tid_size()函数

#include <stdio.h>
#include <stdint.h>
#include <openssl/rand.h>
#include <stdlib.h>
#include <math.h>
#include <strings.h>
static void turn_random_tid_size(void *id)
{
    uint32_t *ar=(uint32_t*)id;
    if(!RAND_pseudo_bytes((unsigned char *)ar,12)) {
        size_t i;
        for(i=0;i<3;++i) {
            ar[i] = (uint32_t)random();
        }
    }
}



int main(){
    uint8_t id[12];
    bzero(&id,12);
    turn_random_tid_size(id);
    uint16_t temp = 0;
    for (int i=0;i<12;i++){
        temp = temp + ((int )pow(256,i))*id[i];
    }
    printf("temp:%u",temp);
    return 0;
}

编译:

gcc demo.c  -lm  -lcrypto -o demo

在coturn的ns_turn_msg.c中函数turn_random_tid_size()的作用是对传入的参数id进行12byte空间赋予随机值!

如果第一此使用函数RAND_pseudo_bytes()赋了0随机值,则会使用random()函数对id所指的12byte空间再此进行三次随机赋值,每次对4byte空间赋值!

原文地址:https://www.cnblogs.com/iuyy/p/13446432.html