1
0
mirror of https://github.com/godotengine/godot.git synced 2025-11-22 15:06:45 +00:00

Add unit tests for CryptoKey

This commit is contained in:
Edward Moulsdale
2024-03-01 07:17:59 +00:00
parent 7d2ca2d8ac
commit e461496ecb
6 changed files with 139 additions and 0 deletions

View File

@@ -33,6 +33,7 @@
#include "../crypto_mbedtls.h"
#include "tests/test_macros.h"
#include "tests/test_utils.h"
namespace TestCryptoMbedTLS {
@@ -60,4 +61,42 @@ void hmac_context_digest_test(HashingContext::HashType ht, String expected_hex)
String hex = String::hex_encode_buffer(digest.ptr(), digest.size());
CHECK(hex == expected_hex);
}
Ref<CryptoKey> create_crypto_key(const String &p_key_path, bool p_public_only) {
Ref<CryptoKey> crypto_key = Ref<CryptoKey>(CryptoKey::create());
crypto_key->load(p_key_path, p_public_only);
return crypto_key;
}
String read_file_s(const String &p_file_path) {
Ref<FileAccess> file_access = FileAccess::open(p_file_path, FileAccess::READ);
REQUIRE(file_access.is_valid());
return file_access->get_as_utf8_string();
}
bool files_equal(const String &p_in_path, const String &p_out_path) {
const String s_in = read_file_s(p_in_path);
const String s_out = read_file_s(p_out_path);
return s_in == s_out;
}
void crypto_key_public_only_test(const String &p_key_path, bool p_public_only) {
Ref<CryptoKey> crypto_key = create_crypto_key(p_key_path, p_public_only);
bool is_equal = crypto_key->is_public_only() == p_public_only;
CHECK(is_equal);
}
void crypto_key_save_test(const String &p_in_path, const String &p_out_path, bool p_public_only) {
Ref<CryptoKey> crypto_key = create_crypto_key(p_in_path, p_public_only);
crypto_key->save(p_out_path, p_public_only);
bool is_equal = files_equal(p_in_path, p_out_path);
CHECK(is_equal);
}
void crypto_key_save_public_only_test(const String &p_in_priv_path, const String &p_in_pub_path, const String &p_out_path) {
Ref<CryptoKey> crypto_key = create_crypto_key(p_in_priv_path, false);
crypto_key->save(p_out_path, true);
bool is_equal = files_equal(p_in_pub_path, p_out_path);
CHECK(is_equal);
}
} // namespace TestCryptoMbedTLS