1234567891011121314151617181920212223242526272829303132333435363738 |
- 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;
|