ГОСТ Р ИСО/МЭК 9834-8—2011
if (United) {
next_save = timestamp,
inlted = 1;
}
/* всегда сохранять состояние в изменяющейся
совместно используемой памяти V
st.cs = clockseq;
st.ts = timestamp;
st.node = node;
if (timestamp >= next_save){
fp * fopen(*state", ’wb"):
fwrlte(Ast. sl
2
eof st. 1. fp);
fclose(fp);
/’запланировать следующее сохранение через 10 секунд */
next_save = timestamp ♦ (10 * 10* 1000 * 1000);
}
)
/*get-current_time -- получить время как 60-битовые 100-наносекундные
отсчеты с эпохи УУИд.
Внести поправку на то. что разрешение реапьных часов
меньше чем 100 наносекунд. Ч
void get_current_tlme(uuid_time t ’timestamp)
{
static Int inlted = 0;
static uuid_time_t timeJast;
static unsignedl6 uuidsjh is jic k ;
uuid_tlme_t bme_now;
if(!mited){
get_system_tlme(4time_now);
uulds_thisJlck * UUIDS_PER_TICK;
inlted = 1;
}
< o r(;;)(
get_system_tlme(8.time_now);
/•если чтение с часов изменилось с последнего
сгенерированного УУИд, */
if (timeJast != time_now){
/•установить отсчет сгенерированных УУИд с данным чтением с часов */
u u ld sjh lsjick = 0;
bm ejast = tlme_now.
break;
}
if(uuids_this_bck < UUIDS_PER_TICK) {
uu*de_this_Uck>*;
break;
}
/•идет слишком быстро для наших часов; зввернуть */
}
Г добавить отсчет УУИд к низшим битам, считанного с часов */
•timestamp = time_now * u u ld sjh lsjick;
)
/’ true_random -- создать случайное число криптографического качества.
** В данном примере это не делается." Ч
static unsigned16 true_random(void)
{
static int Inlted = 0;
uuldJlm e J time_now;
20