diff options
author | Dominik Riebeling <Dominik.Riebeling@gmail.com> | 2020-08-08 18:45:07 +0200 |
---|---|---|
committer | Dominik Riebeling <Dominik.Riebeling@gmail.com> | 2020-10-18 19:08:32 +0200 |
commit | caa9d9c1c5cc4347edca0c9a9868fdd105b5e779 (patch) | |
tree | 403787a018da9eced31d1f84b6493e59466dddc7 /utils/tomcrypt/src/misc/compare_testvector.c | |
parent | 7603533f7fc9f7aec7c04a1258cf772247170e90 (diff) | |
download | rockbox-caa9d9c1c5cc4347edca0c9a9868fdd105b5e779.tar.gz rockbox-caa9d9c1c5cc4347edca0c9a9868fdd105b5e779.zip |
utils: Add (partial) libtomcrypt.
Add the parts of libtomcrypt that we're about to use.
Change-Id: I0adc1d7d1f4833e7bb3ed53b9a4d9a85977cfb8b
Diffstat (limited to 'utils/tomcrypt/src/misc/compare_testvector.c')
-rw-r--r-- | utils/tomcrypt/src/misc/compare_testvector.c | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/utils/tomcrypt/src/misc/compare_testvector.c b/utils/tomcrypt/src/misc/compare_testvector.c new file mode 100644 index 0000000000..67fe1c1f9a --- /dev/null +++ b/utils/tomcrypt/src/misc/compare_testvector.c | |||
@@ -0,0 +1,87 @@ | |||
1 | /* LibTomCrypt, modular cryptographic library -- Tom St Denis | ||
2 | * | ||
3 | * LibTomCrypt is a library that provides various cryptographic | ||
4 | * algorithms in a highly modular and flexible manner. | ||
5 | * | ||
6 | * The library is free for all purposes without any express | ||
7 | * guarantee it works. | ||
8 | */ | ||
9 | |||
10 | #include "tomcrypt.h" | ||
11 | |||
12 | /** | ||
13 | @file compare_testvector.c | ||
14 | Function to compare two testvectors and print a (detailed) error-message if required, Steffen Jaeckel | ||
15 | */ | ||
16 | |||
17 | #if defined(LTC_TEST) && defined(LTC_TEST_DBG) | ||
18 | static void _print_hex(const char* what, const void* v, const unsigned long l) | ||
19 | { | ||
20 | const unsigned char* p = v; | ||
21 | unsigned long x, y = 0, z; | ||
22 | fprintf(stderr, "%s contents: \n", what); | ||
23 | for (x = 0; x < l; ) { | ||
24 | fprintf(stderr, "%02X ", p[x]); | ||
25 | if (!(++x % 16) || x == l) { | ||
26 | if((x % 16) != 0) { | ||
27 | z = 16 - (x % 16); | ||
28 | if(z >= 8) | ||
29 | fprintf(stderr, " "); | ||
30 | for (; z != 0; --z) { | ||
31 | fprintf(stderr, " "); | ||
32 | } | ||
33 | } | ||
34 | fprintf(stderr, " | "); | ||
35 | for(; y < x; y++) { | ||
36 | if((y % 8) == 0) | ||
37 | fprintf(stderr, " "); | ||
38 | if(isgraph(p[y])) | ||
39 | fprintf(stderr, "%c", p[y]); | ||
40 | else | ||
41 | fprintf(stderr, "."); | ||
42 | } | ||
43 | fprintf(stderr, "\n"); | ||
44 | } | ||
45 | else if((x % 8) == 0) { | ||
46 | fprintf(stderr, " "); | ||
47 | } | ||
48 | } | ||
49 | } | ||
50 | #endif | ||
51 | |||
52 | /** | ||
53 | Compare two test-vectors | ||
54 | |||
55 | @param is The data as it is | ||
56 | @param is_len The length of is | ||
57 | @param should The data as it should | ||
58 | @param should_len The length of should | ||
59 | @param what The type of the data | ||
60 | @param which The iteration count | ||
61 | @return 0 on equality, -1 or 1 on difference | ||
62 | */ | ||
63 | int compare_testvector(const void* is, const unsigned long is_len, const void* should, const unsigned long should_len, const char* what, int which) | ||
64 | { | ||
65 | int res = 0; | ||
66 | if(is_len != should_len) | ||
67 | res = is_len > should_len ? -1 : 1; | ||
68 | else | ||
69 | res = XMEMCMP(is, should, is_len); | ||
70 | |||
71 | #if defined(LTC_TEST) && defined(LTC_TEST_DBG) | ||
72 | if (res != 0) { | ||
73 | fprintf(stderr, "Testvector #%i of %s failed:\n", which, what); | ||
74 | _print_hex("SHOULD", should, should_len); | ||
75 | _print_hex("IS ", is, is_len); | ||
76 | } | ||
77 | #else | ||
78 | LTC_UNUSED_PARAM(which); | ||
79 | LTC_UNUSED_PARAM(what); | ||
80 | #endif | ||
81 | |||
82 | return res; | ||
83 | } | ||
84 | |||
85 | /* ref: HEAD -> master, tag: v1.18.2 */ | ||
86 | /* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ | ||
87 | /* commit time: 2018-07-01 22:49:01 +0200 */ | ||