diff --git a/core/core_bind.cpp b/core/core_bind.cpp
index d6719e715fcd..a1b7b81111df 100644
--- a/core/core_bind.cpp
+++ b/core/core_bind.cpp
@@ -194,6 +194,14 @@ void ResourceSaver::_bind_methods() {
////// OS //////
+PackedByteArray OS::get_entropy(int p_bytes) {
+ PackedByteArray pba;
+ pba.resize(p_bytes);
+ Error err = ::OS::get_singleton()->get_entropy(pba.ptrw(), p_bytes);
+ ERR_FAIL_COND_V(err != OK, PackedByteArray());
+ return pba;
+}
+
String OS::get_system_ca_certificates() {
return ::OS::get_singleton()->get_system_ca_certificates();
}
@@ -577,6 +585,7 @@ String OS::get_unique_id() const {
OS *OS::singleton = nullptr;
void OS::_bind_methods() {
+ ClassDB::bind_method(D_METHOD("get_entropy", "size"), &OS::get_entropy);
ClassDB::bind_method(D_METHOD("get_system_ca_certificates"), &OS::get_system_ca_certificates);
ClassDB::bind_method(D_METHOD("get_connected_midi_inputs"), &OS::get_connected_midi_inputs);
ClassDB::bind_method(D_METHOD("open_midi_inputs"), &OS::open_midi_inputs);
diff --git a/core/core_bind.h b/core/core_bind.h
index 1452368f60e5..b142a2fbbd9c 100644
--- a/core/core_bind.h
+++ b/core/core_bind.h
@@ -134,6 +134,7 @@ class OS : public Object {
RENDERING_DRIVER_D3D12,
};
+ PackedByteArray get_entropy(int p_bytes);
String get_system_ca_certificates();
virtual PackedStringArray get_connected_midi_inputs();
diff --git a/doc/classes/OS.xml b/doc/classes/OS.xml
index a3fd15a46d4d..3d048e2f6347 100644
--- a/doc/classes/OS.xml
+++ b/doc/classes/OS.xml
@@ -262,6 +262,14 @@
[b]Note:[/b] This method is not supported on the Web platform. It returns an empty string.
+
+
+
+
+ Generates a [PackedByteArray] of cryptographically secure random bytes with given [param size].
+ [b]Note:[/b] Generating large quantities of bytes using this method can result in locking and entropy of lower quality on most platforms. Using [method Crypto.generate_random_bytes] is preferred in most cases.
+
+