summaryrefslogtreecommitdiffstats
path: root/modules/mbedtls/tests/test_crypto_mbedtls.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'modules/mbedtls/tests/test_crypto_mbedtls.cpp')
-rw-r--r--modules/mbedtls/tests/test_crypto_mbedtls.cpp39
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