Skip to content

Commit

Permalink
[Crypto] Expose OS.get_entropy
Browse files Browse the repository at this point in the history
  • Loading branch information
Faless committed Jun 17, 2024
1 parent 8c70c18 commit ae7045f
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 0 deletions.
9 changes: 9 additions & 0 deletions core/core_bind.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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();
}
Expand Down Expand Up @@ -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);
Expand Down
1 change: 1 addition & 0 deletions core/core_bind.h
Original file line number Diff line number Diff line change
Expand Up @@ -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();
Expand Down
8 changes: 8 additions & 0 deletions doc/classes/OS.xml
Original file line number Diff line number Diff line change
Expand Up @@ -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" />
Expand Down

0 comments on commit ae7045f

Please sign in to comment.