blob: c0461a3379d7b1bba7d406792a96103173507318 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
Const
RandomDevice = '/dev/urandom';
Function GetURandomBytes(Var Buf; NBytes : Integer) : Boolean;
Var
fd,I : Integer;
P : PByte;
begin
P:=@Buf;
fd:=FileOpen(RandomDevice,fmOpenRead);
Result:=(fd>=0);
if Result then
Try
While (NBytes>0) do
begin
I:=FileRead(fd,P^,nbytes);
If I>0 then
begin
Inc(P,I);
Dec(NBytes,I);
end;
end;
Finally
FileClose(Fd);
end;
end;
Function SysCreateGUID(out GUID : TGUID) : Integer;
begin
if not GetUrandomBytes(Guid,SizeOf(GUID)) then
GetRandomBytes(GUID,SizeOf(Guid));
Result:=0;
end;
|