28 RCSID(
"$Id: f57714b6df9164afdccad0b73138c3c0e6f1b141 $")
35 #include <freeradius-devel/sha1.h>
41 unsigned char buf[256];
57 #if defined(TEST_CASE) || defined(DUMP_EAPSIM_KEYS)
63 printf(
"SHA1buffer was: ");
64 for (i = 0; i < blen; i++) {
77 printf(
"%02x", buf[i]);
96 memcpy(ek->
K_encr, fk + 0, 16);
98 memcpy(ek->
msk, fk + 32, 64);
99 memcpy(ek->
emsk, fk + 96, 64);
105 unsigned int i, j, k;
107 printf(
"Input was: \n");
113 printf(
"\n nonce_mt: ");
118 for (k = 0; k<3; k++) {
119 printf(
"\n rand%u: ", k);
121 printf(
"%02x", ek->
rand[k][i]);
125 for (k = 0; k<3; k++) {
126 printf(
"\n sres%u: ", k);
128 printf(
"%02x", ek->
sres[k][i]);
132 for (k = 0; k<3; k++) {
133 printf(
"\n Kc%u: ", k);
135 printf(
"%02x", ek->
Kc[k][i]);
144 printf(
"\n select %02x %02x\n",
148 printf(
"\n\nOutput\n");
152 for (i = 0; i <
sizeof(ek->
master_key); i++) {
164 for (i = 0; i <
sizeof(ek->
K_aut); i++) {
171 printf(
"%02x", ek->
K_aut[i]);
174 printf(
"\nK_encr: ");
176 for (i = 0; i <
sizeof(ek->
K_encr); i++) {
183 printf(
"%02x", ek->
K_encr[i]);
188 for (i = 0; i <
sizeof(ek->
msk); i++) {
201 printf(
"%02x", ek->
msk[i]);
205 for (i = 0; i <
sizeof(ek->
emsk); i++) {
218 printf(
"%02x", ek->
emsk[i]);
228 {
'e',
'a',
'p',
's',
'i',
'm' },
230 0x4d, 0x6c, 0x40, 0xde, 0x48, 0x3a, 0xdd, 0x99,
231 0x50, 0x90, 0x2c, 0x40, 0x24, 0xce, 0x76, 0x5e,
232 0x89, 0xab, 0xcd, 0xef, 0x89, 0xab, 0xcd, 0xef,
233 0x89, 0xab, 0xcd, 0xef, 0x89, 0xab, 0xcd, 0xef,
234 0x9a, 0xbc, 0xde, 0xf8, 0x9a, 0xbc, 0xde, 0xf8,
235 0x9a, 0xbc, 0xde, 0xf8, 0x9a, 0xbc, 0xde, 0xf8,
236 0xab, 0xcd, 0xef, 0x89, 0xab, 0xcd, 0xef, 0x89,
237 0xab, 0xcd, 0xef, 0x89, 0xab, 0xcd, 0xef, 0x89,
238 0x12, 0x34, 0xab, 0xcd,
239 0x12, 0x34, 0xab, 0xcd,
240 0x23, 0x4a, 0xbc, 0xd1,
241 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77,
242 0x10, 0x21, 0x32, 0x43, 0x54, 0x65, 0x76, 0x87,
243 0x30, 0x41, 0x52, 0x63, 0x74, 0x85, 0x96, 0xa7,
244 {0x00, 0x02, 0x00, 0x01},
250 {
'1',
'2',
'4',
'4',
'0',
'7',
'0',
'1',
'0',
'0',
'0',
'0',
'0',
'0',
'0',
'1',
'@',
'e',
'a',
'p',
's',
'i',
'm',
'.',
'f',
'o',
'o'},
252 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef,
253 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10,
254 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
255 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
256 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
257 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
258 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
259 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
261 0xd1, 0xd2, 0xd3, 0xd4,
262 0xe1, 0xe2, 0xe3, 0xe4,
263 0xf1, 0xf2, 0xf3, 0xf4,
265 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
266 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,
267 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
276 main(
int argc,
char *argv[])
void fr_sha1_update(fr_sha1_ctx *context, uint8_t const *data, size_t len)
uint8_t sres[3][EAPSIM_SRES_SIZE]
void fr_sha1_init(fr_sha1_ctx *context)
void fips186_2prf(uint8_t mk[20], uint8_t finalkey[160])
#define EAPSIM_NONCEMT_SIZE
uint8_t rand[3][EAPSIM_RAND_SIZE]
void fr_sha1_final(uint8_t digest[20], fr_sha1_ctx *context)
uint8_t identity[MAX_STRING_LEN]
uint8_t K_aut[EAPSIM_AUTH_SIZE]
uint8_t Kc[3][EAPSIM_KC_SIZE]
uint8_t versionlist[MAX_STRING_LEN]
void eapsim_dump_mk(struct eapsim_keys *ek)
void eapsim_calculate_keys(struct eapsim_keys *ek)
int main(int argc, char *argv[])
uint8_t nonce_mt[EAPSIM_NONCEMT_SIZE]