18d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt/*
28d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * Test program for EAP-SIM PRF
38d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * Copyright (c) 2004-2006, Jouni Malinen <j@w1.fi>
48d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt *
5c5ec7f57ead87efa365800228aa0b09a12d9e6c4Dmitry Shmidt * This software may be distributed under the terms of the BSD license.
6c5ec7f57ead87efa365800228aa0b09a12d9e6c4Dmitry Shmidt * See README for more details.
78d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt */
88d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
98d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#include "eap_common/eap_sim_common.c"
108d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
118d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
128d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstatic int test_eap_sim_prf(void)
138d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{
148d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	/* http://csrc.nist.gov/encryption/dss/Examples-1024bit.pdf */
158d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	u8 xkey[] = {
168d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt		0xbd, 0x02, 0x9b, 0xbe, 0x7f, 0x51, 0x96, 0x0b,
178d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt		0xcf, 0x9e, 0xdb, 0x2b, 0x61, 0xf0, 0x6f, 0x0f,
188d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt		0xeb, 0x5a, 0x38, 0xb6
198d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	};
208d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	u8 w[] = {
218d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt		0x20, 0x70, 0xb3, 0x22, 0x3d, 0xba, 0x37, 0x2f,
228d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt		0xde, 0x1c, 0x0f, 0xfc, 0x7b, 0x2e, 0x3b, 0x49,
238d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt		0x8b, 0x26, 0x06, 0x14, 0x3c, 0x6c, 0x18, 0xba,
248d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt		0xcb, 0x0f, 0x6c, 0x55, 0xba, 0xbb, 0x13, 0x78,
258d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt		0x8e, 0x20, 0xd7, 0x37, 0xa3, 0x27, 0x51, 0x16
268d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	};
278d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	u8 buf[40];
288d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
298d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	printf("Testing EAP-SIM PRF (FIPS 186-2 + change notice 1)\n");
308d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	eap_sim_prf(xkey, buf, sizeof(buf));
3161d9df3e62aaa0e87ad05452fcb95142159a17b6Dmitry Shmidt	if (memcmp(w, buf, sizeof(w)) != 0) {
328d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt		printf("eap_sim_prf failed\n");
338d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt		return 1;
348d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	}
358d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
368d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	return 0;
378d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt}
388d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
398d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
408d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtint main(int argc, char *argv[])
418d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{
428d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	int errors = 0;
438d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
448d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	errors += test_eap_sim_prf();
458d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
468d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	return errors;
478d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt}
48