Port libsparkcrypto test cases

This commit is contained in:
Alexander Senier
2019-02-20 14:21:24 +01:00
parent 858256d4d1
commit 70c44f934b
9 changed files with 990 additions and 390 deletions

View File

@@ -0,0 +1 @@
include $(call select_from_repositories,lib/import/import-libsparkcrypto.mk)

View File

@@ -10,7 +10,8 @@ SRC_C += \
posix_common.c \
posix_fat.c
SRC_ADS += system.ads \
SRC_ADS += \
system.ads \
s-soflin.ads \
s-imgint.ads \
s-stoele.ads \
@@ -25,9 +26,10 @@ SRC_ADS += system.ads \
ada.ads \
g-souinf.ads \
g-trasym.ads \
s-unstyp.ads
s-unstyp.ads \
SRC_ADB += g-io.adb \
SRC_ADB += \
g-io.adb \
a-except.adb \
a-tags.adb \
a-finali.adb \
@@ -94,6 +96,7 @@ vpath platform.% $(ADA_RUNTIME_LIB_DIR)
vpath string_utils.% $(ADA_RUNTIME_LIB_DIR)
vpath ss_utils.% $(ADA_RUNTIME_LIB_DIR)
vpath a-except.adb $(ADA_RUNTIME_DIR)
vpath s-osprim.adb $(ADA_RUNTIME_DIR)
vpath %.c $(ADA_RUNTIME_PLATFORM_DIR)
vpath %.ads $(ADA_RTS_SOURCE)

View File

@@ -0,0 +1,2 @@
LSC_RUNTIME := ada
include $(call select_from_repositories,lib/mk/libsparkcrypto.inc)

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,326 @@
lsc__aes__cbc__decrypt T
lsc__aes__cbc_E D 2
lsc__aes__cbc__encrypt T
lsc__aes__dec_key T
lsc__aes__decrypt T
lsc__aes_E D 2
lsc__aes__enc_key T
lsc__aes__encrypt T
lsc__aes_generic__cbc_E D 2
lsc__aes_generic__dec_key_typeIP T
lsc__aes_generic_E D 2
lsc__aes_generic__enc_key_typeIP T
lsc__aes_generic__key_bytes T
lsc__aes_generic__keylen_typeN R 4
lsc__aes_generic__keylen_typeS R 16
lsc__aes__l128 R 1
lsc__aes__l192 R 1
lsc__aes__l256 R 1
lsc_E D 2
lsc__internal__aes__aes_dec_contextIP T
lsc__internal__aes__aes_enc_contextIP T
lsc__internal__aes__cbc__decrypt T
lsc__internal__aes__cbc_E D 2
lsc__internal__aes__cbc__encrypt T
lsc__internal__aes__create_aes128_dec_context T
lsc__internal__aes__create_aes128_enc_context T
lsc__internal__aes__create_aes192_dec_context T
lsc__internal__aes__create_aes192_enc_context T
lsc__internal__aes__create_aes256_dec_context T
lsc__internal__aes__create_aes256_enc_context T
lsc__internal__aes__decrypt T
lsc__internal__aes_E D 2
lsc__internal__aes__encrypt T
lsc__internal__aes__key_typeIP T
lsc__internal__aes__message_typeIP T
lsc__internal__aes__nb R 1
lsc__internal__aes__null_aes128_key R 16
lsc__internal__aes__null_aes192_key R 24
lsc__internal__aes__null_aes256_key R 32
lsc__internal__aes__null_block R 16
lsc__internal__aes__null_schedule R 240
lsc__internal__aes__print_E D 2
lsc__internal__aes__tables_E D 2
lsc__internal__aes__tables__rcon R 120
lsc__internal__aes__tables__si R 256
lsc__internal__aes__tables__s R 256
lsc__internal__aes__tables__t1 R 1024
lsc__internal__aes__tables__t2 R 1024
lsc__internal__aes__tables__t3 R 1024
lsc__internal__aes__tables__t4 R 1024
lsc__internal__aes__tables__t5 R 1024
lsc__internal__aes__tables__t6 R 1024
lsc__internal__aes__tables__t7 R 1024
lsc__internal__aes__tables__t8 R 1024
lsc__internal__aes__tables__Trcon_typeBIP T
lsc__internal__aes__tables__Tsbox_typeBIP T
lsc__internal__aes__tables__Ttable_typeBIP T
lsc__internal__aes__tables__u1 R 1024
lsc__internal__aes__tables__u2 R 1024
lsc__internal__aes__tables__u3 R 1024
lsc__internal__aes__tables__u4 R 1024
lsc__internal__bignum__add_inplace T
lsc__internal__bignum__add T
lsc__internal__bignum__big_intIP T
lsc__internal__bignum__copy T
lsc__internal__bignum__double_inplace T
lsc__internal__bignum_E D 2
lsc__internal__bignum__equal T
lsc__internal__bignum__initialize T
lsc__internal__bignum__is_zero T
lsc__internal__bignum__less T
lsc__internal__bignum__mod_add_inplace T
lsc__internal__bignum__mod_add T
lsc__internal__bignum__mod_sub_inplace T
lsc__internal__bignum__mod_sub T
lsc__internal__bignum__mont_exp T
lsc__internal__bignum__mont_exp_window T
lsc__internal__bignum__mont_mult T
lsc__internal__bignum__native_to_be T
lsc__internal__bignum__shr_inplace T
lsc__internal__bignum__size_square_mod T
lsc__internal__bignum__sub_inplace T
lsc__internal__bignum__sub T
lsc__internal__bignum__word_inverse T
lsc__internal__byteorder32__be_to_native T
lsc__internal__byteorder32_E D 2
lsc__internal__byteorder32__le_to_native T
lsc__internal__byteorder32__native_to_be T
lsc__internal__byteorder32__native_to_le T
lsc__internal__byteorder64__be_to_native T
lsc__internal__byteorder64_E D 2
lsc__internal__byteorder64__le_to_native T
lsc__internal__byteorder64__native_to_be T
lsc__internal__byteorder64__native_to_le T
lsc__internal__byteswap32_E D 2
lsc__internal__byteswap32__swap T
lsc__internal__byteswap64_E D 2
lsc__internal__byteswap64__swap T
lsc__internal__convert_E D 2
lsc__internal__convert_hash_E D 2
lsc__internal__convert_hmac_E D 2
lsc__internal__debug_E D 2
lsc__internal__ec__A3s B 80
lsc__internal__ec_E D 2
lsc__internal__ec___elabs T
lsc__internal__ec__invert T
lsc__internal__ec__J4s D 4
lsc__internal__ec__make_affine T
lsc__internal__ec__on_curve T
lsc__internal__ec__one B 80
lsc__internal__ec__point_add T
lsc__internal__ec__point_double T
lsc__internal__ec__point_mult T
lsc__internal__ec_signature_E D 2
lsc__internal__ec_signature__signature_typeN R 4
lsc__internal__ec_signature__signature_typeS R 16
lsc__internal__ec_signature__sign T
lsc__internal__ec_signature__verify T
lsc__internal__ec__two_point_mult T
lsc__internal__ec__uncompress_point T
lsc__internal_E D 2
lsc__internal__hmac_ripemd160__authenticate T
lsc__internal__hmac_ripemd160__context_finalize_outer T
lsc__internal__hmac_ripemd160__context_finalize T
lsc__internal__hmac_ripemd160__context_init T
lsc__internal__hmac_ripemd160__context_typeIP T
lsc__internal__hmac_ripemd160__context_update T
lsc__internal__hmac_ripemd160_E D 2
lsc__internal__hmac_ripemd160__get_auth T
lsc__internal__hmac_ripemd160__ipad R 64
lsc__internal__hmac_ripemd160__opad R 64
lsc__internal__hmac_sha1__authenticate T
lsc__internal__hmac_sha1__context_finalize_outer T
lsc__internal__hmac_sha1__context_finalize T
lsc__internal__hmac_sha1__context_init T
lsc__internal__hmac_sha1__context_typeIP T
lsc__internal__hmac_sha1__context_update T
lsc__internal__hmac_sha1_E D 2
lsc__internal__hmac_sha1__get_auth T
lsc__internal__hmac_sha1__ipad R 64
lsc__internal__hmac_sha1__opad R 64
lsc__internal__hmac_sha256__authenticate T
lsc__internal__hmac_sha256__context_finalize T
lsc__internal__hmac_sha256__context_init T
lsc__internal__hmac_sha256__context_typeIP T
lsc__internal__hmac_sha256__context_update T
lsc__internal__hmac_sha256_E D 2
lsc__internal__hmac_sha256__get_auth T
lsc__internal__hmac_sha256__get_prf T
lsc__internal__hmac_sha256__pseudorandom T
lsc__internal__hmac_sha384__authenticate T
lsc__internal__hmac_sha384__context_finalize T
lsc__internal__hmac_sha384__context_init T
lsc__internal__hmac_sha384__context_typeIP T
lsc__internal__hmac_sha384__context_update T
lsc__internal__hmac_sha384_E D 2
lsc__internal__hmac_sha384__get_auth T
lsc__internal__hmac_sha384__get_prf T
lsc__internal__hmac_sha384__null_auth R 24
lsc__internal__hmac_sha384__pseudorandom T
lsc__internal__hmac_sha512__authenticate T
lsc__internal__hmac_sha512__context_finalize T
lsc__internal__hmac_sha512__context_init T
lsc__internal__hmac_sha512__context_typeIP T
lsc__internal__hmac_sha512__context_update T
lsc__internal__hmac_sha512_E D 2
lsc__internal__hmac_sha512__get_auth T
lsc__internal__hmac_sha512__get_prf T
lsc__internal__hmac_sha512__null_auth R 32
lsc__internal__hmac_sha512__pseudorandom T
lsc__internal__io_E D 2
lsc__internal__io__end_of_stream T
lsc__internal__io__new_line T
lsc__internal__io__print_byte T
lsc__internal__io__print_index T
lsc__internal__io__print_natural T
lsc__internal__io__print_word32_array T
lsc__internal__io__print_word32 T
lsc__internal__io__print_word64_array T
lsc__internal__io__print_word64 T
lsc__internal__io__put_line T
lsc__internal__io__put T
lsc__internal__io__read_byte T
lsc__internal__math_int_E D 2
lsc__internal__ops32__block_copy T
lsc__internal__ops32__block_xor T
lsc__internal__ops32__byte0 T
lsc__internal__ops32__byte1 T
lsc__internal__ops32__byte2 T
lsc__internal__ops32__byte3 T
lsc__internal__ops32__bytes_to_word T
lsc__internal__ops32__bytex T
lsc__internal__ops32_E D 2
lsc__internal__ops32__xor2 T
lsc__internal__ops32__xor3 T
lsc__internal__ops32__xor4 T
lsc__internal__ops32__xor5 T
lsc__internal__ops64__block_copy T
lsc__internal__ops64__block_xor T
lsc__internal__ops64__bytes_to_word T
lsc__internal__ops64_E D 2
lsc__internal__ops64__xor2 T
lsc__internal__pad32__block_terminate T
lsc__internal__pad32_E D 2
lsc__internal__pad64__block_terminate T
lsc__internal__pad64_E D 2
lsc__internal__ripemd160__context_finalize T
lsc__internal__ripemd160__context_init T
lsc__internal__ripemd160__context_typeIP T
lsc__internal__ripemd160__context_update T
lsc__internal__ripemd160__data_lengthIP T
lsc__internal__ripemd160_E D 2
lsc__internal__ripemd160__get_hash T
lsc__internal__ripemd160__hash_context T
lsc__internal__ripemd160__hash T
lsc__internal__ripemd160__message_typeIP T
lsc__internal__ripemd160__null_block R 64
lsc__internal__ripemd160__null_hash R 20
lsc__internal__ripemd160__print_E D 2
lsc__internal__sha1__add T
lsc__internal__sha1__ch T
lsc__internal__sha1__context_finalize T
lsc__internal__sha1__context_init T
lsc__internal__sha1__context_typeIP T
lsc__internal__sha1__context_update T
lsc__internal__sha1__data_lengthIP T
lsc__internal__sha1_E D 2
lsc__internal__sha1__get_hash T
lsc__internal__sha1__hash_context T
lsc__internal__sha1__hash T
lsc__internal__sha1__init_data_length T
lsc__internal__sha1__k1 R 4
lsc__internal__sha1__k2 R 4
lsc__internal__sha1__k3 R 4
lsc__internal__sha1__k4 R 4
lsc__internal__sha1__maj T
lsc__internal__sha1__message_typeIP T
lsc__internal__sha1__null_block R 64
lsc__internal__sha1__null_hash R 20
lsc__internal__sha1__null_schedule R 320
lsc__internal__sha256__add T
lsc__internal__sha256__cap_sigma_0_256 T
lsc__internal__sha256__cap_sigma_1_256 T
lsc__internal__sha256__ch T
lsc__internal__sha256__context_finalize T
lsc__internal__sha256__context_typeIP T
lsc__internal__sha256__context_update_internal T
lsc__internal__sha256__context_update T
lsc__internal__sha256__data_lengthIP T
lsc__internal__sha256_E D 2
lsc__internal__sha256__hash_context T
lsc__internal__sha256__hash T
lsc__internal__sha256__init_data_length T
lsc__internal__sha256__maj T
lsc__internal__sha256__message_typeIP T
lsc__internal__sha256__null_block R 64
lsc__internal__sha256__null_schedule R 256
lsc__internal__sha256__sha256_context_init T
lsc__internal__sha256__sha256_get_hash T
lsc__internal__sha256__sha256_null_hash R 32
lsc__internal__sha256__sigma_0_256 T
lsc__internal__sha256__sigma_1_256 T
lsc__internal__sha256__tables_E D 2
lsc__internal__sha256__tables__k R 256
lsc__internal__sha512__add T
lsc__internal__sha512__cap_sigma_0_512 T
lsc__internal__sha512__cap_sigma_1_512 T
lsc__internal__sha512__ch T
lsc__internal__sha512__context_finalize T
lsc__internal__sha512__context_typeIP T
lsc__internal__sha512__context_update_internal T
lsc__internal__sha512__context_update T
lsc__internal__sha512__data_lengthIP T
lsc__internal__sha512_E D 2
lsc__internal__sha512__hash_context T
lsc__internal__sha512__init_data_length T
lsc__internal__sha512__maj T
lsc__internal__sha512__message_typeIP T
lsc__internal__sha512__null_block R 128
lsc__internal__sha512__null_schedule R 640
lsc__internal__sha512__null_sha384_hash R 48
lsc__internal__sha512__null_sha512_hash R 64
lsc__internal__sha512__sha384_context_init T
lsc__internal__sha512__sha384_get_hash T
lsc__internal__sha512__sha384_hash T
lsc__internal__sha512__sha512_context_init T
lsc__internal__sha512__sha512_get_hash T
lsc__internal__sha512__sha512_hash T
lsc__internal__sha512__sigma_0_512 T
lsc__internal__sha512__sigma_1_512 T
lsc__internal__sha512__tables_E D 2
lsc__internal__sha512__tables__k R 640
lsc__internal__types__byte_array32_to_word32 T
lsc__internal__types__byte_array64_to_word64 T
lsc__internal__types_E D 2
lsc__internal__types__Tbyte_array32_typeBIP T
lsc__internal__types__Tbyte_array64_typeBIP T
lsc__internal__types__word32_array_typeIP T
lsc__internal__types__word32_to_byte_array32 T
lsc__internal__types__word64_array_typeIP T
lsc__internal__types__word64_to_byte_array64 T
lsc__ops_generic_E D 2
lsc__ripemd160_E D 2
lsc__ripemd160_generic_E D 2
lsc__ripemd160__hash T
lsc__ripemd160__hmac_E D 2
lsc__ripemd160__hmac_generic_E D 2
lsc__ripemd160__hmac__hmac T
lsc__sha1_E D 2
lsc__sha1_generic_E D 2
lsc__sha1__hash T
lsc__sha1__hmac_E D 2
lsc__sha1__hmac_generic_E D 2
lsc__sha1__hmac__hmac T
lsc__sha2_E D 2
lsc__sha2_generic_E D 2
lsc__sha2__hash_sha256 T
lsc__sha2__hash_sha384 T
lsc__sha2__hash_sha512 T
lsc__sha2__hmac_E D 2
lsc__sha2__hmac_generic_E D 2
lsc__sha2__hmac__hmac_sha256 T
lsc__sha2__hmac__hmac_sha384 T
lsc__sha2__hmac__hmac_sha512 T
lsc__types__bytesIP T
lsc__types_E D 2

View File

@@ -0,0 +1,72 @@
set build_components {
core init server/log_terminal
test/libsparkcrypto
lib/vfs/jitterentropy
drivers/rtc
timer
}
build $build_components
create_boot_directory
install_config {
<config>
<parent-provides>
<service name="LOG"/>
<service name="PD"/>
<service name="CPU"/>
<service name="ROM"/>
<service name="IO_PORT"/>
</parent-provides>
<default-route>
<any-service> <parent/> </any-service>
</default-route>
<default caps="100"/>
<start name="timer">
<resource name="RAM" quantum="1M"/>
<provides> <service name="Timer"/> </provides>
</start>
<start name="rtc_drv">
<resource name="RAM" quantum="1M"/>
<provides> <service name="Rtc"/> </provides>
</start>
<start name="terminal">
<binary name="log_terminal"/>
<resource name="RAM" quantum="2M"/>
<provides><service name="Terminal"/></provides>
</start>
<start name="test-libsparkcrypto">
<resource name="RAM" quantum="100M"/>
<config>
<vfs>
<ram/>
<dir name="dev">
<jitterentropy name="random"/>
<log/>
<rtc/>
</dir>
</vfs>
<libc stdout="/dev/log" stderr="/dev/log" rtc="/dev/rtc" />
</config>
<route>
<service name="Terminal"> <child name="terminal"/> </service>
<any-service> <parent/> <any-child/> </any-service>
</route>
</start>
</config>
}
build_boot_image {
core init test-libsparkcrypto log_terminal rtc_drv timer
libc.lib.so vfs.lib.so ld.lib.so ada.lib.so
libcrypto.lib.so libaunit.lib.so libsparkcryptofat.lib.so
vfs_jitterentropy.lib.so
}
append qemu_args " -nographic "
run_genode_until "child \"test-libsparkcrypto\" exited with exit value 0" 200

View File

@@ -0,0 +1,64 @@
-------------------------------------------------------------------------------
-- This file is part of libsparkcrypto.
--
-- Copyright (C) 2019, Componolit GmbH
-- All rights reserved.
--
-- Redistribution and use in source and binary forms, with or without
-- modification, are permitted provided that the following conditions are met:
--
-- * Redistributions of source code must retain the above copyright notice,
-- this list of conditions and the following disclaimer.
--
-- * Redistributions in binary form must reproduce the above copyright
-- notice, this list of conditions and the following disclaimer in the
-- documentation and/or other materials provided with the distribution.
--
-- * Neither the name of the nor the names of its contributors may be used
-- to endorse or promote products derived from this software without
-- specific prior written permission.
--
-- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-- ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS
-- BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-- POSSIBILITY OF SUCH DAMAGE.
-------------------------------------------------------------------------------
pragma Style_Checks ("-s");
pragma Warnings (Off, "formal parameter ""T"" is not referenced");
package body LSC_Internal_Benchmark
is
function Routine_Name (T : Test_Case) return Message_String
is
begin
return Format ("Void");
end Routine_Name;
---------------------------------------------------------------------------
procedure Register_Tests (T : in out Test_Case) is
package Registration is new
AUnit.Test_Cases.Specific_Test_Case_Registration (Test_Case);
use Registration;
begin
null;
end Register_Tests;
---------------------------------------------------------------------------
function Name (T : Test_Case) return Test_String is
begin
pragma Unreferenced (T);
return Format ("Benchmark dummy");
end Name;
end LSC_Internal_Benchmark;

View File

@@ -0,0 +1,14 @@
/*
* \brief Startup code for Ada main program
* \author Alexander Senier
* \date 2019-01-03
*/
#include <ada/component.h>
extern "C" void _ada_main(void);
void Ada::Component::main()
{
_ada_main();
}

View File

@@ -0,0 +1,44 @@
TARGET = test-libsparkcrypto
SRC_ADB = \
lsc_internal_benchmark.adb \
lsc_internal_suite.adb \
lsc_internal_test_aes.adb \
lsc_internal_test_aes_cbc.adb \
lsc_internal_test_bignum.adb \
lsc_internal_test_ec.adb \
lsc_internal_test_hmac.adb \
lsc_internal_test_ripemd160.adb \
lsc_internal_test_sha1.adb \
lsc_internal_test_sha2.adb \
lsc_internal_test_shadow.adb \
lsc_suite.adb \
lsc_test_aes.adb \
lsc_test_aes_cbc.adb \
lsc_test_hmac_ripemd160.adb \
lsc_test_hmac_sha1.adb \
lsc_test_hmac_sha2.adb \
lsc_test_ripemd160.adb \
lsc_test_sha1.adb \
lsc_test_sha2.adb \
main.adb \
openssl.adb \
tests.adb \
util.adb \
util_tests.adb
SRC_CC = startup.cc
SRC_C = libglue.c
OPT_C = -DDEBUG
LIBS = ada libaunit libsparkcryptofat libcrypto libc
LSC_TESTS_DIR := $(call select_from_ports,libsparkcrypto)/libsparkcrypto/tests
INC_DIR += $(LSC_TESTS_DIR)
CUSTOM_ADA_OPT += -gnatec=$(call select_from_ports,libsparkcrypto)/libsparkcrypto/build/pragmas.adc
vpath lsc_internal_benchmark.adb $(PRG_DIR)
vpath %.adb $(LSC_TESTS_DIR)
vpath %.ads $(LSC_TESTS_DIR)
vpath %.c $(LSC_TESTS_DIR)