1526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt/*
2526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * Test program for SHA1 and MD5
3526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * Copyright (c) 2003-2006, Jouni Malinen <j@w1.fi>
4526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt *
5526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * This program is free software; you can redistribute it and/or modify
6526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * it under the terms of the GNU General Public License version 2 as
7526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * published by the Free Software Foundation.
8526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt *
9526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * Alternatively, this software may be distributed under the terms of BSD
10526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * license.
11526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt *
12526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * See README and COPYING for more details.
13526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt */
14526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt
15526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt#include "includes.h"
16526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt
17526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt#include "common.h"
18b349ef9e9f3f5399bf96b3c1c663cb9e547f50a1Dmitry Shmidt#include "crypto/sha1.h"
19526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt#include "md5.h"
20526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt#include "crypto.h"
21526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt
22526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt
23526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtstatic int test_eap_fast(void)
24526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt{
25526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	/* RFC 4851, Appendix B.1 */
26526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	const u8 pac_key[] = {
27526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		0x0B, 0x97, 0x39, 0x0F, 0x37, 0x51, 0x78, 0x09,
28526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		0x81, 0x1E, 0xFD, 0x9C, 0x6E, 0x65, 0x94, 0x2B,
29526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		0x63, 0x2C, 0xE9, 0x53, 0x89, 0x38, 0x08, 0xBA,
30526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		0x36, 0x0B, 0x03, 0x7C, 0xD1, 0x85, 0xE4, 0x14
31526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	};
32526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	const u8 seed[] = {
33526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		0x3F, 0xFB, 0x11, 0xC4, 0x6C, 0xBF, 0xA5, 0x7A,
34526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		0x54, 0x40, 0xDA, 0xE8, 0x22, 0xD3, 0x11, 0xD3,
35526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		0xF7, 0x6D, 0xE4, 0x1D, 0xD9, 0x33, 0xE5, 0x93,
36526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		0x70, 0x97, 0xEB, 0xA9, 0xB3, 0x66, 0xF4, 0x2A,
37526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		0x00, 0x00, 0x00, 0x02, 0x6A, 0x66, 0x43, 0x2A,
38526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		0x8D, 0x14, 0x43, 0x2C, 0xEC, 0x58, 0x2D, 0x2F,
39526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		0xC7, 0x9C, 0x33, 0x64, 0xBA, 0x04, 0xAD, 0x3A,
40526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		0x52, 0x54, 0xD6, 0xA5, 0x79, 0xAD, 0x1E, 0x00
41526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	};
42526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	const u8 master_secret[] = {
43526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		0x4A, 0x1A, 0x51, 0x2C, 0x01, 0x60, 0xBC, 0x02,
44526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		0x3C, 0xCF, 0xBC, 0x83, 0x3F, 0x03, 0xBC, 0x64,
45526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		0x88, 0xC1, 0x31, 0x2F, 0x0B, 0xA9, 0xA2, 0x77,
46526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		0x16, 0xA8, 0xD8, 0xE8, 0xBD, 0xC9, 0xD2, 0x29,
47526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		0x38, 0x4B, 0x7A, 0x85, 0xBE, 0x16, 0x4D, 0x27,
48526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		0x33, 0xD5, 0x24, 0x79, 0x87, 0xB1, 0xC5, 0xA2
49526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	};
50526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	const u8 key_block[] = {
51526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		0x59, 0x59, 0xBE, 0x8E, 0x41, 0x3A, 0x77, 0x74,
52526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		0x8B, 0xB2, 0xE5, 0xD3, 0x60, 0xAC, 0x4D, 0x35,
53526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		0xDF, 0xFB, 0xC8, 0x1E, 0x9C, 0x24, 0x9C, 0x8B,
54526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		0x0E, 0xC3, 0x1D, 0x72, 0xC8, 0x84, 0x9D, 0x57,
55526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		0x48, 0x51, 0x2E, 0x45, 0x97, 0x6C, 0x88, 0x70,
56526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		0xBE, 0x5F, 0x01, 0xD3, 0x64, 0xE7, 0x4C, 0xBB,
57526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		0x11, 0x24, 0xE3, 0x49, 0xE2, 0x3B, 0xCD, 0xEF,
58526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		0x7A, 0xB3, 0x05, 0x39, 0x5D, 0x64, 0x8A, 0x44,
59526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		0x11, 0xB6, 0x69, 0x88, 0x34, 0x2E, 0x8E, 0x29,
60526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		0xD6, 0x4B, 0x7D, 0x72, 0x17, 0x59, 0x28, 0x05,
61526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		0xAF, 0xF9, 0xB7, 0xFF, 0x66, 0x6D, 0xA1, 0x96,
62526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		0x8F, 0x0B, 0x5E, 0x06, 0x46, 0x7A, 0x44, 0x84,
63526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		0x64, 0xC1, 0xC8, 0x0C, 0x96, 0x44, 0x09, 0x98,
64526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		0xFF, 0x92, 0xA8, 0xB4, 0xC6, 0x42, 0x28, 0x71
65526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	};
66526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	const u8 sks[] = {
67526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		0xD6, 0x4B, 0x7D, 0x72, 0x17, 0x59, 0x28, 0x05,
68526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		0xAF, 0xF9, 0xB7, 0xFF, 0x66, 0x6D, 0xA1, 0x96,
69526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		0x8F, 0x0B, 0x5E, 0x06, 0x46, 0x7A, 0x44, 0x84,
70526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		0x64, 0xC1, 0xC8, 0x0C, 0x96, 0x44, 0x09, 0x98,
71526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		0xFF, 0x92, 0xA8, 0xB4, 0xC6, 0x42, 0x28, 0x71
72526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	};
73526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	const u8 isk[] = {
74526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
75526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
76526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
77526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
78526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	};
79526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	const u8 imck[] = {
80526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		0x16, 0x15, 0x3C, 0x3F, 0x21, 0x55, 0xEF, 0xD9,
81526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		0x7F, 0x34, 0xAE, 0xC8, 0x1A, 0x4E, 0x66, 0x80,
82526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		0x4C, 0xC3, 0x76, 0xF2, 0x8A, 0xA9, 0x6F, 0x96,
83526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		0xC2, 0x54, 0x5F, 0x8C, 0xAB, 0x65, 0x02, 0xE1,
84526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		0x18, 0x40, 0x7B, 0x56, 0xBE, 0xEA, 0xA7, 0xC5,
85526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		0x76, 0x5D, 0x8F, 0x0B, 0xC5, 0x07, 0xC6, 0xB9,
86526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		0x04, 0xD0, 0x69, 0x56, 0x72, 0x8B, 0x6B, 0xB8,
87526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		0x15, 0xEC, 0x57, 0x7B
88526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	};
89526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	const u8 msk[] = {
90526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		0x4D, 0x83, 0xA9, 0xBE, 0x6F, 0x8A, 0x74, 0xED,
91526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		0x6A, 0x02, 0x66, 0x0A, 0x63, 0x4D, 0x2C, 0x33,
92526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		0xC2, 0xDA, 0x60, 0x15, 0xC6, 0x37, 0x04, 0x51,
93526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		0x90, 0x38, 0x63, 0xDA, 0x54, 0x3E, 0x14, 0xB9,
94526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		0x27, 0x99, 0x18, 0x1E, 0x07, 0xBF, 0x0F, 0x5A,
95526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		0x5E, 0x3C, 0x32, 0x93, 0x80, 0x8C, 0x6C, 0x49,
96526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		0x67, 0xED, 0x24, 0xFE, 0x45, 0x40, 0xA0, 0x59,
97526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		0x5E, 0x37, 0xC2, 0xE9, 0xD0, 0x5D, 0x0A, 0xE3
98526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	};
99526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	const u8 emsk[] = {
100526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		0x3A, 0xD4, 0xAB, 0xDB, 0x76, 0xB2, 0x7F, 0x3B,
101526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		0xEA, 0x32, 0x2C, 0x2B, 0x74, 0xF4, 0x28, 0x55,
102526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		0xEF, 0x2D, 0xBA, 0x78, 0xC9, 0x57, 0x2F, 0x0D,
103526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		0x06, 0xCD, 0x51, 0x7C, 0x20, 0x93, 0x98, 0xA9,
104526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		0x76, 0xEA, 0x70, 0x21, 0xD7, 0x0E, 0x25, 0x54,
105526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		0x97, 0xED, 0xB2, 0x8A, 0xF6, 0xED, 0xFD, 0x0A,
106526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		0x2A, 0xE7, 0xA1, 0x58, 0x90, 0x10, 0x50, 0x44,
107526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		0xB3, 0x82, 0x85, 0xDB, 0x06, 0x14, 0xD2, 0xF9
108526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	};
109526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	/* RFC 4851, Appendix B.2 */
110526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	u8 tlv[] = {
111526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		0x80, 0x0C, 0x00, 0x38, 0x00, 0x01, 0x01, 0x00,
112526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		0xD8, 0x6A, 0x8C, 0x68, 0x3C, 0x32, 0x31, 0xA8,
113526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		0x56, 0x63, 0xB6, 0x40, 0x21, 0xFE, 0x21, 0x14,
114526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		0x4E, 0xE7, 0x54, 0x20, 0x79, 0x2D, 0x42, 0x62,
115526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		0xC9, 0xBF, 0x53, 0x7F, 0x54, 0xFD, 0xAC, 0x58,
116526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		0x43, 0x24, 0x6E, 0x30, 0x92, 0x17, 0x6D, 0xCF,
117526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		0xE6, 0xE0, 0x69, 0xEB, 0x33, 0x61, 0x6A, 0xCC,
118526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		0x05, 0xC5, 0x5B, 0xB7
119526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	};
120526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	const u8 compound_mac[] = {
121526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		0x43, 0x24, 0x6E, 0x30, 0x92, 0x17, 0x6D, 0xCF,
122526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		0xE6, 0xE0, 0x69, 0xEB, 0x33, 0x61, 0x6A, 0xCC,
123526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		0x05, 0xC5, 0x5B, 0xB7
124526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	};
125526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	u8 buf[512];
126526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	const u8 *simck, *cmk;
127526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	int errors = 0;
128526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt
129526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	printf("EAP-FAST test cases\n");
130526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt
131526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	printf("- T-PRF (SHA1) test case / master_secret\n");
132526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	sha1_t_prf(pac_key, sizeof(pac_key), "PAC to master secret label hash",
133526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		   seed, sizeof(seed), buf, sizeof(master_secret));
134526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	if (memcmp(master_secret, buf, sizeof(master_secret)) != 0) {
135526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		printf("T-PRF test - FAILED!\n");
136526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		errors++;
137526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	}
138526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt
139526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	printf("- PRF (TLS, SHA1/MD5) test case / key_block\n");
140526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	tls_prf(master_secret, sizeof(master_secret), "key expansion",
141526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		seed, sizeof(seed), buf, sizeof(key_block));
142526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	if (memcmp(key_block, buf, sizeof(key_block)) != 0) {
143526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		printf("PRF test - FAILED!\n");
144526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		errors++;
145526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	}
146526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt
147526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	printf("- T-PRF (SHA1) test case / IMCK\n");
148526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	sha1_t_prf(sks, sizeof(sks), "Inner Methods Compound Keys",
149526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		   isk, sizeof(isk), buf, sizeof(imck));
150526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	if (memcmp(imck, buf, sizeof(imck)) != 0) {
151526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		printf("T-PRF test - FAILED!\n");
152526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		errors++;
153526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	}
154526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt
155526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	simck = imck;
156526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	cmk = imck + 40;
157526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt
158526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	printf("- T-PRF (SHA1) test case / MSK\n");
159526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	sha1_t_prf(simck, 40, "Session Key Generating Function",
160526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		   (u8 *) "", 0, buf, sizeof(msk));
161526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	if (memcmp(msk, buf, sizeof(msk)) != 0) {
162526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		printf("T-PRF test - FAILED!\n");
163526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		errors++;
164526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	}
165526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt
166526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	printf("- T-PRF (SHA1) test case / EMSK\n");
167526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	sha1_t_prf(simck, 40, "Extended Session Key Generating Function",
168526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		   (u8 *) "", 0, buf, sizeof(msk));
169526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	if (memcmp(emsk, buf, sizeof(emsk)) != 0) {
170526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		printf("T-PRF test - FAILED!\n");
171526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		errors++;
172526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	}
173526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt
174526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	printf("- Compound MAC test case\n");
175526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	memset(tlv + sizeof(tlv) - 20, 0, 20);
176526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	hmac_sha1(cmk, 20, tlv, sizeof(tlv), tlv + sizeof(tlv) - 20);
177526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	if (memcmp(tlv + sizeof(tlv) - 20, compound_mac, sizeof(compound_mac))
178526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	    != 0) {
179526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		printf("Compound MAC test - FAILED!\n");
180526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		errors++;
181526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	}
182526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt
183526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	return errors;
184526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt}
185526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt
186526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt
187526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtstatic u8 key0[] =
188526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt{
189526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
190526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
191526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	0x0b, 0x0b, 0x0b, 0x0b
192526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt};
193526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtstatic u8 data0[] = "Hi There";
194526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtstatic u8 prf0[] =
195526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt{
196526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	0xbc, 0xd4, 0xc6, 0x50, 0xb3, 0x0b, 0x96, 0x84,
197526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	0x95, 0x18, 0x29, 0xe0, 0xd7, 0x5f, 0x9d, 0x54,
198526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	0xb8, 0x62, 0x17, 0x5e, 0xd9, 0xf0, 0x06, 0x06,
199526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	0xe1, 0x7d, 0x8d, 0xa3, 0x54, 0x02, 0xff, 0xee,
200526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	0x75, 0xdf, 0x78, 0xc3, 0xd3, 0x1e, 0x0f, 0x88,
201526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	0x9f, 0x01, 0x21, 0x20, 0xc0, 0x86, 0x2b, 0xeb,
202526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	0x67, 0x75, 0x3e, 0x74, 0x39, 0xae, 0x24, 0x2e,
203526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	0xdb, 0x83, 0x73, 0x69, 0x83, 0x56, 0xcf, 0x5a
204526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt};
205526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt
206526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtstatic u8 key1[] = "Jefe";
207526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtstatic u8 data1[] = "what do ya want for nothing?";
208526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtstatic u8 prf1[] =
209526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt{
210526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	0x51, 0xf4, 0xde, 0x5b, 0x33, 0xf2, 0x49, 0xad,
211526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	0xf8, 0x1a, 0xeb, 0x71, 0x3a, 0x3c, 0x20, 0xf4,
212526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	0xfe, 0x63, 0x14, 0x46, 0xfa, 0xbd, 0xfa, 0x58,
213526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	0x24, 0x47, 0x59, 0xae, 0x58, 0xef, 0x90, 0x09,
214526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	0xa9, 0x9a, 0xbf, 0x4e, 0xac, 0x2c, 0xa5, 0xfa,
215526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	0x87, 0xe6, 0x92, 0xc4, 0x40, 0xeb, 0x40, 0x02,
216526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	0x3e, 0x7b, 0xab, 0xb2, 0x06, 0xd6, 0x1d, 0xe7,
217526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	0xb9, 0x2f, 0x41, 0x52, 0x90, 0x92, 0xb8, 0xfc
218526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt};
219526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt
220526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt
221526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtstatic u8 key2[] =
222526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt{
223526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
224526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
225526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	0xaa, 0xaa, 0xaa, 0xaa
226526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt};
227526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtstatic u8 data2[] =
228526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt{
229526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
230526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
231526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
232526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
233526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
234526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
235526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	0xdd, 0xdd
236526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt};
237526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtstatic u8 prf2[] =
238526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt{
239526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	0xe1, 0xac, 0x54, 0x6e, 0xc4, 0xcb, 0x63, 0x6f,
240526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	0x99, 0x76, 0x48, 0x7b, 0xe5, 0xc8, 0x6b, 0xe1,
241526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	0x7a, 0x02, 0x52, 0xca, 0x5d, 0x8d, 0x8d, 0xf1,
242526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	0x2c, 0xfb, 0x04, 0x73, 0x52, 0x52, 0x49, 0xce,
243526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	0x9d, 0xd8, 0xd1, 0x77, 0xea, 0xd7, 0x10, 0xbc,
244526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	0x9b, 0x59, 0x05, 0x47, 0x23, 0x91, 0x07, 0xae,
245526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	0xf7, 0xb4, 0xab, 0xd4, 0x3d, 0x87, 0xf0, 0xa6,
246526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	0x8f, 0x1c, 0xbd, 0x9e, 0x2b, 0x6f, 0x76, 0x07
247526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt};
248526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt
249526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt
250526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtstruct passphrase_test {
251526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	char *passphrase;
252526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	char *ssid;
253526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	char psk[32];
254526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt};
255526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt
256526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtstatic struct passphrase_test passphrase_tests[] =
257526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt{
258526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	{
259526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		"password",
260526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		"IEEE",
261526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		{
262526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt			0xf4, 0x2c, 0x6f, 0xc5, 0x2d, 0xf0, 0xeb, 0xef,
263526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt			0x9e, 0xbb, 0x4b, 0x90, 0xb3, 0x8a, 0x5f, 0x90,
264526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt			0x2e, 0x83, 0xfe, 0x1b, 0x13, 0x5a, 0x70, 0xe2,
265526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt			0x3a, 0xed, 0x76, 0x2e, 0x97, 0x10, 0xa1, 0x2e
266526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		}
267526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	},
268526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	{
269526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		"ThisIsAPassword",
270526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		"ThisIsASSID",
271526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		{
272526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt			0x0d, 0xc0, 0xd6, 0xeb, 0x90, 0x55, 0x5e, 0xd6,
273526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt			0x41, 0x97, 0x56, 0xb9, 0xa1, 0x5e, 0xc3, 0xe3,
274526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt			0x20, 0x9b, 0x63, 0xdf, 0x70, 0x7d, 0xd5, 0x08,
275526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt			0xd1, 0x45, 0x81, 0xf8, 0x98, 0x27, 0x21, 0xaf
276526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		}
277526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	},
278526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	{
279526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
280526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		"ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ",
281526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		{
282526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt			0xbe, 0xcb, 0x93, 0x86, 0x6b, 0xb8, 0xc3, 0x83,
283526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt			0x2c, 0xb7, 0x77, 0xc2, 0xf5, 0x59, 0x80, 0x7c,
284526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt			0x8c, 0x59, 0xaf, 0xcb, 0x6e, 0xae, 0x73, 0x48,
285526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt			0x85, 0x00, 0x13, 0x00, 0xa9, 0x81, 0xcc, 0x62
286526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		}
287526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	},
288526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt};
289526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt
290526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt#define NUM_PASSPHRASE_TESTS \
291526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt(sizeof(passphrase_tests) / sizeof(passphrase_tests[0]))
292526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt
293526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt
294526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtint main(int argc, char *argv[])
295526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt{
296526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	u8 res[512];
297526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	int ret = 0;
298526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	unsigned int i;
299526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt
300526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	printf("PRF-SHA1 test cases:\n");
301526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt
302526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	sha1_prf(key0, sizeof(key0), "prefix", data0, sizeof(data0) - 1,
303526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		 res, sizeof(prf0));
304526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	if (memcmp(res, prf0, sizeof(prf0)) == 0)
305526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		printf("Test case 0 - OK\n");
306526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	else {
307526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		printf("Test case 0 - FAILED!\n");
308526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		ret++;
309526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	}
310526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt
311526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	sha1_prf(key1, sizeof(key1) - 1, "prefix", data1, sizeof(data1) - 1,
312526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		 res, sizeof(prf1));
313526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	if (memcmp(res, prf1, sizeof(prf1)) == 0)
314526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		printf("Test case 1 - OK\n");
315526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	else {
316526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		printf("Test case 1 - FAILED!\n");
317526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		ret++;
318526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	}
319526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt
320526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	sha1_prf(key2, sizeof(key2), "prefix", data2, sizeof(data2),
321526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		 res, sizeof(prf2));
322526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	if (memcmp(res, prf2, sizeof(prf2)) == 0)
323526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		printf("Test case 2 - OK\n");
324526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	else {
325526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		printf("Test case 2 - FAILED!\n");
326526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		ret++;
327526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	}
328526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt
329526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	ret += test_eap_fast();
330526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt
331526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	printf("PBKDF2-SHA1 Passphrase test cases:\n");
332526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	for (i = 0; i < NUM_PASSPHRASE_TESTS; i++) {
333526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		u8 psk[32];
334526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		struct passphrase_test *test = &passphrase_tests[i];
335526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		pbkdf2_sha1(test->passphrase,
336526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt			    test->ssid, strlen(test->ssid),
337526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt			    4096, psk, 32);
338526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		if (memcmp(psk, test->psk, 32) == 0)
339526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt			printf("Test case %d - OK\n", i);
340526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		else {
341526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt			printf("Test case %d - FAILED!\n", i);
342526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt			ret++;
343526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		}
344526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	}
345526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt
346526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	return ret;
347526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt}
348