mirror of
https://github.com/godotengine/godot.git
synced 2024-11-24 13:12:42 +00:00
Add unit tests for CryptoKey
This commit is contained in:
parent
7d2ca2d8ac
commit
e461496ecb
1
.gitignore
vendored
1
.gitignore
vendored
@ -43,6 +43,7 @@ logs/
|
|||||||
|
|
||||||
# Generated by unit tests
|
# Generated by unit tests
|
||||||
tests/data/*.translation
|
tests/data/*.translation
|
||||||
|
tests/data/crypto/out*
|
||||||
|
|
||||||
############################
|
############################
|
||||||
### General build output ###
|
### General build output ###
|
||||||
|
@ -121,6 +121,9 @@ if env["tests"]:
|
|||||||
env_mbed_tls.Append(CPPDEFINES=["TESTS_ENABLED"])
|
env_mbed_tls.Append(CPPDEFINES=["TESTS_ENABLED"])
|
||||||
env_mbed_tls.add_source_files(module_obj, "./tests/*.cpp")
|
env_mbed_tls.add_source_files(module_obj, "./tests/*.cpp")
|
||||||
|
|
||||||
|
if env["disable_exceptions"]:
|
||||||
|
env_mbed_tls.Append(CPPDEFINES=["DOCTEST_CONFIG_NO_EXCEPTIONS_BUT_WITH_ALL_ASSERTS"])
|
||||||
|
|
||||||
env.modules_sources += module_obj
|
env.modules_sources += module_obj
|
||||||
|
|
||||||
# Needed to force rebuilding the module files when the thirdparty library is updated.
|
# Needed to force rebuilding the module files when the thirdparty library is updated.
|
||||||
|
@ -33,6 +33,7 @@
|
|||||||
#include "../crypto_mbedtls.h"
|
#include "../crypto_mbedtls.h"
|
||||||
|
|
||||||
#include "tests/test_macros.h"
|
#include "tests/test_macros.h"
|
||||||
|
#include "tests/test_utils.h"
|
||||||
|
|
||||||
namespace TestCryptoMbedTLS {
|
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());
|
String hex = String::hex_encode_buffer(digest.ptr(), digest.size());
|
||||||
CHECK(hex == expected_hex);
|
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
|
} // namespace TestCryptoMbedTLS
|
||||||
|
@ -31,9 +31,11 @@
|
|||||||
#ifndef TEST_CRYPTO_MBEDTLS_H
|
#ifndef TEST_CRYPTO_MBEDTLS_H
|
||||||
#define TEST_CRYPTO_MBEDTLS_H
|
#define TEST_CRYPTO_MBEDTLS_H
|
||||||
|
|
||||||
|
#include "core/crypto/crypto.h"
|
||||||
#include "core/crypto/hashing_context.h"
|
#include "core/crypto/hashing_context.h"
|
||||||
|
|
||||||
#include "tests/test_macros.h"
|
#include "tests/test_macros.h"
|
||||||
|
#include "tests/test_utils.h"
|
||||||
|
|
||||||
namespace TestCryptoMbedTLS {
|
namespace TestCryptoMbedTLS {
|
||||||
|
|
||||||
@ -56,6 +58,35 @@ TEST_CASE("[HMACContext] HMAC digest") {
|
|||||||
// SHA-1
|
// SHA-1
|
||||||
hmac_context_digest_test(HashingContext::HashType::HASH_SHA1, "a0ac4cd68a2f4812c355983d94e8d025afe7dddf");
|
hmac_context_digest_test(HashingContext::HashType::HASH_SHA1, "a0ac4cd68a2f4812c355983d94e8d025afe7dddf");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void crypto_key_public_only_test(const String &p_key_path, bool public_only);
|
||||||
|
|
||||||
|
TEST_CASE("[Crypto] CryptoKey is_public_only") {
|
||||||
|
crypto_key_public_only_test(TestUtils::get_data_path("crypto/in.key"), false);
|
||||||
|
crypto_key_public_only_test(TestUtils::get_data_path("crypto/in.pub"), true);
|
||||||
|
}
|
||||||
|
|
||||||
|
void crypto_key_save_test(const String &p_in_path, const String &p_out_path, bool public_only);
|
||||||
|
|
||||||
|
TEST_CASE("[Crypto] CryptoKey save") {
|
||||||
|
const String in_priv_path = TestUtils::get_data_path("crypto/in.key");
|
||||||
|
const String out_priv_path = TestUtils::get_data_path("crypto/out.key");
|
||||||
|
crypto_key_save_test(in_priv_path, out_priv_path, false);
|
||||||
|
|
||||||
|
const String in_pub_path = TestUtils::get_data_path("crypto/in.pub");
|
||||||
|
const String out_pub_path = TestUtils::get_data_path("crypto/out.pub");
|
||||||
|
crypto_key_save_test(in_pub_path, out_pub_path, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
void crypto_key_save_public_only_test(const String &p_in_priv_path, const String &p_in_pub_path, const String &p_out_path);
|
||||||
|
|
||||||
|
TEST_CASE("[Crypto] CryptoKey save public_only") {
|
||||||
|
const String in_priv_path = TestUtils::get_data_path("crypto/in.key");
|
||||||
|
const String in_pub_path = TestUtils::get_data_path("crypto/in.pub");
|
||||||
|
const String out_path = TestUtils::get_data_path("crypto/out_public_only.pub");
|
||||||
|
crypto_key_save_public_only_test(in_priv_path, in_pub_path, out_path);
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace TestCryptoMbedTLS
|
} // namespace TestCryptoMbedTLS
|
||||||
|
|
||||||
#endif // TEST_CRYPTO_MBEDTLS_H
|
#endif // TEST_CRYPTO_MBEDTLS_H
|
||||||
|
51
tests/data/crypto/in.key
Normal file
51
tests/data/crypto/in.key
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
-----BEGIN RSA PRIVATE KEY-----
|
||||||
|
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
|
||||||
|
-----END RSA PRIVATE KEY-----
|
14
tests/data/crypto/in.pub
Normal file
14
tests/data/crypto/in.pub
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
-----BEGIN PUBLIC KEY-----
|
||||||
|
MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAp+sWMepqN+dXhmZkS45W
|
||||||
|
0FTLX2f0zRb+kUhXngfiEprgA2UuZP5gGv7/EjOBDniYalGZqYPJum08Px++17P6
|
||||||
|
Hyopr05aPhZ6Ocnt+LAU/WRAFspN3xXTZglqnmGMsdNcqBl3loVNmC1H/zX53oBe
|
||||||
|
P/L/i4lva3DjCRIpHtGjfy3ufSn7fTrlBqKIEHYgQZyzos9dxbk1NJcWVxlNmvFR
|
||||||
|
tgPW6DQ/P3g0ahLJeq/hO3ykUFfiKdhHkS+s9dC9qjZwSxCCEF1o6zkEO6ynxk0s
|
||||||
|
xjOpPTJFw7fQ+2KeJWJQfdZeJ6u+DpbwK4g9tMUMNxf3QMk1KhAnwwUrKXfZcviS
|
||||||
|
3zweD8Tl5zEj45H1ghoUQfuW7Y3wgwHMu8lF8iGA87cf/fhqr0V9piCcwWkfVP/a
|
||||||
|
thpMoUfyj9Sa3ag0dvDSo9PAet0urXmdKTyhMg4lQL6f9BmMuuB/KwWzCuG/5VY9
|
||||||
|
ONxno3OVX6juHTpng5UglbkiDsD3tivl1gCbvIryoGdt+xI0JmAC5eXfg79Nio/B
|
||||||
|
ayDR9Npm1m460p3GeRaawyYysBo/L5/YZ/S3bYBRoJ7lq6GkTA+22lWAb04IgtS8
|
||||||
|
wxO4Ma8EOtKD+AoR3C+WLivcp9LNTxbQOMKGL+8imQGBEz3XTR4lrE02QDQy0DIB
|
||||||
|
Ky7p7dhlyBdwhTmBX3P2mx0CAwEAAQ==
|
||||||
|
-----END PUBLIC KEY-----
|
Loading…
Reference in New Issue
Block a user