mirror of
https://github.com/open62541/open62541.git
synced 2025-06-03 04:00:21 +00:00
Added tests for the generateNonce function
This commit is contained in:
parent
fdd5efcd64
commit
b0a358d4c5
@ -162,55 +162,6 @@ add_executable(check_server_readspeed server/check_server_readspeed.c $<TARGET_O
|
||||
target_link_libraries(check_server_readspeed ${LIBS})
|
||||
add_test_valgrind(check_server_readspeed ${TESTS_BINARY_DIR}/check_server_readspeed)
|
||||
|
||||
# Test server with network dumps from files
|
||||
|
||||
add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/client_HELOPN.bin
|
||||
${CMAKE_CURRENT_BINARY_DIR}/client_CLO.bin
|
||||
${CMAKE_CURRENT_BINARY_DIR}/client_CreateActivateSession.bin
|
||||
${CMAKE_CURRENT_BINARY_DIR}/client_Browse.bin
|
||||
${CMAKE_CURRENT_BINARY_DIR}/client_Read.bin
|
||||
${CMAKE_CURRENT_BINARY_DIR}/client_Write.bin
|
||||
PRE_BUILD
|
||||
COMMAND python ${PROJECT_SOURCE_DIR}/tools/hex2bin.py
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/dumps/client_HELOPN.hex
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/dumps/client_CLO.hex
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/dumps/client_CreateActivateSession.hex
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/dumps/client_Browse.hex
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/dumps/client_Read.hex
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/dumps/client_Write.hex
|
||||
DEPENDS ${PROJECT_SOURCE_DIR}/tools/hex2bin.py
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/dumps/client_HELOPN.hex
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/dumps/client_CLO.hex
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/dumps/client_CreateActivateSession.hex
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/dumps/client_Browse.hex
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/dumps/client_Read.hex
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/dumps/client_Write.hex)
|
||||
add_custom_target(client_HELOPN.bin DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/client_HELOPN.bin")
|
||||
add_custom_target(client_CreateActivateSession.bin DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/client_CreateActivateSession.bin")
|
||||
|
||||
add_executable(check_server_binary_messages server/check_server_binary_messages.c $<TARGET_OBJECTS:open62541-object> $<TARGET_OBJECTS:open62541-testplugins>)
|
||||
target_include_directories(check_server_binary_messages PRIVATE ${PROJECT_SOURCE_DIR}/src/server)
|
||||
target_link_libraries(check_server_binary_messages ${LIBS})
|
||||
add_dependencies(check_server_binary_messages client_HELOPN.bin)
|
||||
|
||||
add_test_valgrind(check_server_binary_messages_browse ${TESTS_BINARY_DIR}/check_server_binary_messages
|
||||
${CMAKE_CURRENT_BINARY_DIR}/client_HELOPN.bin
|
||||
${CMAKE_CURRENT_BINARY_DIR}/client_CreateActivateSession.bin
|
||||
${CMAKE_CURRENT_BINARY_DIR}/client_Browse.bin
|
||||
${CMAKE_CURRENT_BINARY_DIR}/client_CLO.bin)
|
||||
|
||||
add_test_valgrind(check_server_binary_messages_read ${TESTS_BINARY_DIR}/check_server_binary_messages
|
||||
${CMAKE_CURRENT_BINARY_DIR}/client_HELOPN.bin
|
||||
${CMAKE_CURRENT_BINARY_DIR}/client_CreateActivateSession.bin
|
||||
${CMAKE_CURRENT_BINARY_DIR}/client_Read.bin
|
||||
${CMAKE_CURRENT_BINARY_DIR}/client_CLO.bin)
|
||||
|
||||
add_test_valgrind(check_server_binary_messages_write ${TESTS_BINARY_DIR}/check_server_binary_messages
|
||||
${CMAKE_CURRENT_BINARY_DIR}/client_HELOPN.bin
|
||||
${CMAKE_CURRENT_BINARY_DIR}/client_CreateActivateSession.bin
|
||||
${CMAKE_CURRENT_BINARY_DIR}/client_Write.bin
|
||||
${CMAKE_CURRENT_BINARY_DIR}/client_CLO.bin)
|
||||
|
||||
# Test Client
|
||||
|
||||
add_executable(check_client client/check_client.c $<TARGET_OBJECTS:open62541-object> $<TARGET_OBJECTS:open62541-testplugins>)
|
||||
|
@ -452,6 +452,45 @@ START_TEST(Securechannel_sendAsymmetricOPNMessage_extraPaddingPresentWhenKeyLarg
|
||||
}
|
||||
END_TEST
|
||||
|
||||
START_TEST(SecureChannel_generateNonce)
|
||||
{
|
||||
UA_ByteString myNonce;
|
||||
UA_ByteString_init(&myNonce);
|
||||
|
||||
for(size_t i = 0; i < 129; ++i) {
|
||||
i = (i == 128) ? 65536 : i; // large edge case
|
||||
|
||||
UA_StatusCode retval = UA_SecureChannel_generateNonce(&testChannel, i, &myNonce);
|
||||
|
||||
ck_assert_msg(retval == UA_STATUSCODE_GOOD, "Expected retval to be good");
|
||||
ck_assert_msg(myNonce.length == i, "Expected nonce length to be %i but was %i", i, myNonce.length);
|
||||
if(i != 0)
|
||||
ck_assert_msg(fCalled.generateNonce, "Expected generateNonce to have been called");
|
||||
else
|
||||
if(fCalled.generateNonce)
|
||||
printf("generateNonce was called with nonceLength = 0. Could possibly be avoided");
|
||||
}
|
||||
|
||||
UA_ByteString_deleteMembers(&myNonce);
|
||||
}
|
||||
END_TEST
|
||||
|
||||
START_TEST(SecureChannel_generateNonce_invalidParameters)
|
||||
{
|
||||
UA_ByteString myNonce;
|
||||
UA_ByteString_init(&myNonce);
|
||||
|
||||
UA_StatusCode retval = UA_SecureChannel_generateNonce(NULL, 42, NULL);
|
||||
ck_assert_msg(retval != UA_STATUSCODE_GOOD, "Expected failure");
|
||||
|
||||
retval = UA_SecureChannel_generateNonce(NULL, 42, &myNonce);
|
||||
ck_assert_msg(retval != UA_STATUSCODE_GOOD, "Expected failure");
|
||||
|
||||
retval = UA_SecureChannel_generateNonce(&testChannel, 42, NULL);
|
||||
ck_assert_msg(retval != UA_STATUSCODE_GOOD, "Expected failure");
|
||||
}
|
||||
END_TEST
|
||||
|
||||
static Suite *
|
||||
testSuite_SecureChannel(void) {
|
||||
Suite *s = suite_create("SecureChannel");
|
||||
@ -492,6 +531,13 @@ testSuite_SecureChannel(void) {
|
||||
Securechannel_sendAsymmetricOPNMessage_extraPaddingPresentWhenKeyLargerThan2048Bits);
|
||||
suite_add_tcase(s, tc_sendAsymmetricOPNMessage);
|
||||
|
||||
TCase *tc_generateNonce = tcase_create("Test generateNonce function");
|
||||
tcase_add_checked_fixture(tc_generateNonce, setup_funcs_called, teardown_funcs_called);
|
||||
tcase_add_checked_fixture(tc_generateNonce, setup_key_sizes, teardown_key_sizes);
|
||||
tcase_add_checked_fixture(tc_generateNonce, setup_secureChannel, teardown_secureChannel);
|
||||
tcase_add_test(tc_generateNonce, SecureChannel_generateNonce);
|
||||
tcase_add_test(tc_generateNonce, SecureChannel_generateNonce_invalidParameters);
|
||||
suite_add_tcase(s, tc_generateNonce);
|
||||
|
||||
return s;
|
||||
}
|
||||
|
@ -2,8 +2,7 @@
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
/* This work is licensed under a Creative Commons CCZero 1.0 Universal License.
|
||||
* See http://creativecommons.org/publicdomain/zero/1.0/ for more information. */
|
||||
#ifndef __clang_analyzer__
|
||||
|
||||
#include <ua_types.h>
|
||||
#include <ua_plugin_securitypolicy.h>
|
||||
@ -11,7 +10,6 @@
|
||||
#include "testing_policy.h"
|
||||
#include "check.h"
|
||||
|
||||
#ifndef __clang_analyzer__
|
||||
#define SET_CALLED(func) funcsCalled->func = true
|
||||
|
||||
static funcs_called *funcsCalled;
|
||||
@ -197,11 +195,13 @@ generateKey_testing(const UA_SecurityPolicy *securityPolicy,
|
||||
static UA_StatusCode
|
||||
generateNonce_testing(const UA_SecurityPolicy *securityPolicy,
|
||||
UA_ByteString *out) {
|
||||
out->data = UA_Byte_new();
|
||||
if(!out->data)
|
||||
return UA_STATUSCODE_BADOUTOFMEMORY;
|
||||
out->length = 1;
|
||||
out->data[0] = 'a';
|
||||
ck_assert(securityPolicy != NULL);
|
||||
ck_assert(out != NULL);
|
||||
ck_assert(out->data != NULL);
|
||||
|
||||
memset(out->data, 'N', out->length);
|
||||
|
||||
SET_CALLED(generateNonce);
|
||||
return UA_STATUSCODE_GOOD;
|
||||
}
|
||||
|
||||
|
@ -30,6 +30,7 @@ typedef struct funcs_called {
|
||||
|
||||
bool makeCertificateThumbprint;
|
||||
bool generateKey;
|
||||
bool generateNonce;
|
||||
|
||||
bool setLocalSymEncryptingKey;
|
||||
bool setLocalSymSigningKey;
|
||||
|
Loading…
Reference in New Issue
Block a user