Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
third_party
dart-lang
sdk
runtime
bin
crypto_linux.cc
Go to the documentation of this file.
1
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
2
// for details. All rights reserved. Use of this source code is governed by a
3
// BSD-style license that can be found in the LICENSE file.
4
5
#include "
platform/globals.h
"
6
#if defined(DART_HOST_OS_LINUX) || defined(DART_HOST_OS_ANDROID)
7
8
#include <errno.h>
// NOLINT
9
#include <fcntl.h>
// NOLINT
10
11
#include "
bin/crypto.h
"
12
#include "
bin/fdutils.h
"
13
#include "
platform/signal_blocker.h
"
14
15
namespace
dart
{
16
namespace
bin {
17
18
bool
Crypto::GetRandomBytes
(intptr_t
count
, uint8_t*
buffer
) {
19
ThreadSignalBlocker signal_blocker(SIGPROF);
20
intptr_t fd =
TEMP_FAILURE_RETRY_NO_SIGNAL_BLOCKER
(
21
open(
"/dev/urandom"
, O_RDONLY | O_CLOEXEC));
22
if
(fd < 0) {
23
return
false
;
24
}
25
intptr_t bytes_read = 0;
26
do
{
27
int
res =
TEMP_FAILURE_RETRY_NO_SIGNAL_BLOCKER
(
28
read
(fd,
buffer
+ bytes_read,
count
- bytes_read));
29
if
(res < 0) {
30
int
err = errno;
31
close(fd);
32
errno = err;
33
return
false
;
34
}
35
bytes_read += res;
36
}
while
(bytes_read <
count
);
37
close(fd);
38
return
true
;
39
}
40
41
}
// namespace bin
42
}
// namespace dart
43
44
#endif
// defined(DART_HOST_OS_LINUX) || defined(DART_HOST_OS_ANDROID)
count
int count
Definition
FontMgrTest.cpp:50
read
static bool read(SkStream *stream, void *buffer, size_t amount)
Definition
SkFontStream.cpp:44
dart::bin::Crypto::GetRandomBytes
static bool GetRandomBytes(intptr_t count, uint8_t *buffer)
crypto.h
fdutils.h
buffer
static const uint8_t buffer[]
Definition
fl_pixel_buffer_texture_test.cc:44
dart
Definition
dart_vm.cc:33
globals.h
signal_blocker.h
TEMP_FAILURE_RETRY_NO_SIGNAL_BLOCKER
#define TEMP_FAILURE_RETRY_NO_SIGNAL_BLOCKER(expression)
Definition
signal_blocker.h:99
Generated on Fri Apr 26 2024 06:14:40 for Flutter Engine by
1.9.8