diff options
Diffstat (limited to 'modules/mbedtls/tests/test_crypto_mbedtls.cpp')
-rw-r--r-- | modules/mbedtls/tests/test_crypto_mbedtls.cpp | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/modules/mbedtls/tests/test_crypto_mbedtls.cpp b/modules/mbedtls/tests/test_crypto_mbedtls.cpp index 22d79b79f9..b96a072146 100644 --- a/modules/mbedtls/tests/test_crypto_mbedtls.cpp +++ b/modules/mbedtls/tests/test_crypto_mbedtls.cpp @@ -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 |