secure_random_value
unsigned int secure_random_value(void);
random |= (T)secure_random_value() << shift;