summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRémi Verschelde <rverschelde@gmail.com>2024-06-17 13:30:14 +0200
committerRémi Verschelde <rverschelde@gmail.com>2024-06-17 13:30:14 +0200
commit277e4ea937cb3728d2ed1344ad4c682dd1e190b0 (patch)
tree623c29944c3f4b284f0583c8b333bae51691be31
parent8c70c18132441d11a88dd96b462d89d8eba4c2f5 (diff)
parentae7045f67efede5eafa5af3279ab1d88c0facec5 (diff)
downloadredot-engine-277e4ea937cb3728d2ed1344ad4c682dd1e190b0.tar.gz
Merge pull request #93177 from Faless/crypto/expose_get_entropy
[Crypto] Expose `OS.get_entropy`
-rw-r--r--core/core_bind.cpp9
-rw-r--r--core/core_bind.h1
-rw-r--r--doc/classes/OS.xml8
3 files changed, 18 insertions, 0 deletions
diff --git a/core/core_bind.cpp b/core/core_bind.cpp
index d6719e715f..a1b7b81111 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 1452368f60..b142a2fbbd 100644
--- a/core/core_bind.h
+++ b/core/core_bind.h
@@ -134,6 +134,7 @@ public:
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 a3fd15a46d..3d048e2f63 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.
</description>
</method>
+ <method name="get_entropy">
+ <return type="PackedByteArray" />
+ <param index="0" name="size" type="int" />
+ <description>
+ 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.
+ </description>
+ </method>
<method name="get_environment" qualifiers="const">
<return type="String" />
<param index="0" name="variable" type="String" />