1 /* main-prf_tls12-test.c */
3 This file is part of the ARM-Crypto-Lib.
4 Copyright (C) 2010 Daniel Otte (daniel.otte@rub.de)
6 This program is free software: you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation, either version 3 of the License, or
9 (at your option) any later version.
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
16 You should have received a copy of the GNU General Public License
17 along with this program. If not, see <http://www.gnu.org/licenses/>.
24 #include "main-test-common.h"
25 #include "prf_tls12.h"
26 #include <crypto/hashfunction_descriptor.h>
27 #include <crypto/hfal_sha1.h>
28 #include <crypto/hfal_sha256.h>
29 const char* algo_name = "PRF-TLS1.2";
31 /*****************************************************************************
32 * additional validation-functions *
33 *****************************************************************************/
36 # Generating 100 bytes of pseudo-randomness using TLS1.2PRF-SHA256
38 0000 9b be 43 6b a9 40 f0 17 ..Ck....
39 0008 b1 76 52 84 9a 71 db 35 .vR..q.5
42 0000 a0 ba 9f 93 6c da 31 18 ....l.1.
43 0008 27 a6 f7 96 ff d5 19 8c ........
46 0000 74 65 73 74 20 6c 61 62 test lab
50 0000 e3 f2 29 ba 72 7b e1 7b ....r...
51 0008 8d 12 26 20 55 7c d4 53 ... U..S
52 0010 c2 aa b2 1d 07 c3 d4 95 ........
53 0018 32 9b 52 d4 e6 1e db 5a 2.R....Z
54 0020 6b 30 17 91 e9 0d 35 c9 k0....5.
55 0028 c9 a4 6b 4e 14 ba f9 af ..kN....
56 0030 0f a0 22 f7 07 7d ef 17 ........
57 0038 ab fd 37 97 c0 56 4b ab ..7..VK.
58 0040 4f bc 91 66 6e 9d ef 9b O..fn...
59 0048 97 fc e3 4f 79 67 89 ba ...Oyg..
60 0050 a4 80 82 d1 22 ee 42 c5 ......B.
61 0058 a7 2e 5a 51 10 ff f7 01 ..ZQ....
65 const uint8_t test_secret[] = {
66 0x9b, 0xbe, 0x43, 0x6b, 0xa9, 0x40, 0xf0, 0x17,
67 0xb1, 0x76, 0x52, 0x84, 0x9a, 0x71, 0xdb, 0x35
70 const uint8_t test_seed[] = {
71 0xa0, 0xba, 0x9f, 0x93, 0x6c, 0xda, 0x31, 0x18,
72 0x27, 0xa6, 0xf7, 0x96, 0xff, 0xd5, 0x19, 0x8c
75 const char test_label[] = "test label";
77 void test_prf(const hfdesc_t* hash){
79 prf_tls12_init_w_label(&ctx, hash, test_secret, 16*8, test_label, strlen(test_label), test_seed, 16*8);
80 uint8_t buffer[ctx.blocklength_b/8];
82 cli_putstr("\r\n== Testing PRF-TLSv1.2 with ");
83 cli_putstr(hash->name);
84 cli_putstr(" ==\r\n");
86 prf_tls12_next(buffer, &ctx);
87 cli_hexdump_block(buffer, ctx.blocklength_b/8, 4, 8);
88 i += ctx.blocklength_b/8;
93 void test_sha256(void){
94 test_prf(&sha256_desc);
100 /*****************************************************************************
102 *****************************************************************************/
104 const char echo_test_str[] = "echo-test";
105 const char test_sha256_str[] = "test-sha256";
106 const char test_sha1_str[] = "test-sha1";
107 //const char performance_str[] = "performance";
108 const char echo_str[] = "echo";
110 cmdlist_entry_t cmdlist[] = {
111 { test_sha256_str, NULL, test_sha256 },
112 { test_sha1_str, NULL, test_sha1 },
113 // { performance_str, NULL, testrun_performance_bigint },
114 { echo_str, (void*)1, (void_fpt)echo_ctrl },
122 welcome_msg(algo_name);
123 cmd_interface(cmdlist);