test_sha_based_aka.cpp
来自「agsm a gsm sim manager for browsing, man」· C++ 代码 · 共 329 行
CPP
329 行
/* test_sha_based_aka.c */
#include "stdafx.h"
#include <stdio.h>
#include "aka.h"
#ifdef DEBUG
#define dbg_printf printf
#else
#define dbg_printf
#endif
//unsigned char *msg_data =
// "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq";
void pause(void)
{
dbg_printf("Press any key to continue\n");
#ifdef DEBUG
getchar();
#endif
}
void test_aka()
{
uchar K[]={0xad,0x1b,0x5a,0x15,0x9b,0xe8,0x6b,0x2c,
0xa6,0x6c,0x7a,0xe4,0x0b,0xba,0x9b,0x9d};
uchar seed[]={0xb0,0xab,0xb9,0x9d,0x6a,0xc6,0xa7,0x4e,
0xb9,0x8e,0xb6,0xc2,0xda,0xb1,0xa5,0x51};
uchar Fmk[L_FMK] = { 'A', 'H', 'A', 'G' };
uchar RAND[L_RAND];
uchar CK[L_CK];
uchar IK[L_IK];
uchar UAK[L_UAK];
uchar MACA[L_MACA];
uchar MACS[L_MACS];
uchar RES[L_RES];
uchar AK[L_AK];
uchar AKS[L_AKS];
uchar SQN[L_SQN]={0x00,0x00,0x00,0x00,0x00,0x01};
uchar fi0,fi1,fi1star,fi2,fi3,fi4,fi5,fi5star,fi11;
uchar buff1[L_RAND/2],buff2[L_RAND/2];
uchar AMF[2];
int i;
fi0=0x41;
fi1=0x42;
fi1star=0x43;
fi2=0x44;
fi3=0x45;
fi4=0x46;
fi5=0x47;
fi5star=0x48;
fi11 = 0x50;
dbg_printf("test vector for f0:\n");
dbg_printf("input section\n");
dbg_printf("seed is: ");
for(i=0;i<L_KEY;i++)
dbg_printf("%02x ",seed[i]);
dbg_printf("\n");
dbg_printf("fi0 is: %02x\n",fi0);
dbg_printf("Fmk is: ");
for (i=0;i<L_FMK;i++)
dbg_printf("%02x ",Fmk[i]);
dbg_printf("\n");
dbg_printf("\n");
f0(seed,fi0,Fmk,buff1);
f0(seed,fi0,Fmk,buff2);
dbg_printf("output section\n");
dbg_printf("f0 RAND: ");
for (i=0;i<L_RAND/2;i++)
dbg_printf("%02x ",buff1[i]);
for (i=0;i<L_RAND/2;i++)
dbg_printf("%02x ",buff2[i]);
dbg_printf("\n");
pause();
/* reuse RAND generated for the subsequent function calls*/
for (i=0;i<L_RAND/2;i++)
RAND[i] = buff1[i];
for (i=0;i<L_RAND/2;i++)
RAND[i+L_RAND/2] = buff2[i];
AMF[0]=0x00;
AMF[1]=0x01;
dbg_printf("\n");
dbg_printf("\n");
dbg_printf("test vector for f1:\n");
dbg_printf("input section\n");
dbg_printf("K is: ");
for(i=0;i<L_KEY;i++)
dbg_printf("%02x ",K[i]);
dbg_printf("\n");
dbg_printf("fi1 is: %02x\n",fi1);
dbg_printf("RAND is: ");
for(i=0;i<L_RAND;i++)
dbg_printf("%02x ",RAND[i]);
dbg_printf("\n");
dbg_printf("Fmk is: ");
for(i=0;i<L_FMK;i++)
dbg_printf("%02x ",Fmk[i]);
dbg_printf("\n");
dbg_printf("SQN is: ");
for(i=0;i<L_SQN;i++)
dbg_printf("%02x ",SQN[i]);
dbg_printf("\n");
dbg_printf("AMF is: %02x %02x\n",AMF[0],AMF[1]);
f1(K,fi1,RAND,Fmk,SQN,AMF,MACA);
dbg_printf("\n");
dbg_printf("output section\n");
dbg_printf("f1 MACA: ");
for (i=0;i<L_MACA;i++)
dbg_printf("%02x ",MACA[i]);
dbg_printf("\n");
pause();
dbg_printf("\n");
dbg_printf("\n");
dbg_printf("test vector for f1*:\n");
dbg_printf("input section\n");
dbg_printf("K is: ");
for(i=0;i<L_KEY;i++)
dbg_printf("%02x ",K[i]);
dbg_printf("\n");
dbg_printf("fi1star is: %02x\n",fi1star);
dbg_printf("RAND is: ");
for(i=0;i<L_RAND;i++)
dbg_printf("%02x ",RAND[i]);
dbg_printf("\n");
dbg_printf("Fmk is: ");
for(i=0;i<L_FMK;i++)
dbg_printf("%02x ",Fmk[i]);
dbg_printf("\n");
dbg_printf("SQN is: ");
for(i=0;i<L_SQN;i++)
dbg_printf("%02x ",SQN[i]);
dbg_printf("\n");
dbg_printf("AMF is: %02x %02x\n",AMF[0],AMF[1]);
dbg_printf("\n");
f1star(K,fi1star,RAND,Fmk,SQN,AMF,MACS);
dbg_printf("output section\n");
dbg_printf("f1* MACS: ");
for(i=0;i<L_MACS;i++)
dbg_printf("%02x ",MACS[i]);
for(i=0;i<L_SQN;i++)
SQN[i]=0x00;
AMF[0]=AMF[1]=0;
dbg_printf("\n");
pause();
dbg_printf("\n");
dbg_printf("\n");
dbg_printf("test vector for f2:\n");
dbg_printf("input section\n");
dbg_printf("K is: ");
for(i=0;i<L_KEY;i++)
dbg_printf("%02x ",K[i]);
dbg_printf("\n");
dbg_printf("fi2 is: %02x\n",fi2);
dbg_printf("RAND is: ");
for(i=0;i<L_RAND;i++)
dbg_printf("%02x ",RAND[i]);
dbg_printf("\n");
dbg_printf("Fmk is: ");
for(i=0;i<L_FMK;i++)
dbg_printf("%02x ",Fmk[i]);
dbg_printf("\n");
dbg_printf("\n");
f2(K,fi2,RAND,Fmk,RES,L_RES);
dbg_printf("output section\n");
dbg_printf("f2 RES: ");
for (i=0;i<L_RES;i++)
dbg_printf("%02x ",RES[i]);
dbg_printf("\n");
pause();
dbg_printf("\n");
dbg_printf("\n");
dbg_printf("test vector for f3:\n");
dbg_printf("input section\n");
dbg_printf("K is: ");
for(i=0;i<L_KEY;i++)
dbg_printf("%02x ",K[i]);
dbg_printf("\n");
dbg_printf("fi3 is: %02x\n",fi3);
dbg_printf("RAND is: ");
for(i=0;i<L_RAND;i++)
dbg_printf("%02x ",RAND[i]);
dbg_printf("\n");
dbg_printf("Fmk is: ");
for(i=0;i<L_FMK;i++)
dbg_printf("%02x ",Fmk[i]);
dbg_printf("\n");
dbg_printf("\n");
f3(K,fi3,RAND,Fmk,CK);
dbg_printf("output section\n");
dbg_printf("f3 CK: ");
for (i=0;i<L_CK;i++)
dbg_printf("%02x ",CK[i]);
dbg_printf("\n");
pause();
dbg_printf("\n");
dbg_printf("\n");
dbg_printf("test vector for f4:\n");
dbg_printf("input section\n");
dbg_printf("K is: ");
for(i=0;i<L_KEY;i++)
dbg_printf("%02x ",K[i]);
dbg_printf("\n");
dbg_printf("fi4 is: %02x\n",fi4);
dbg_printf("RAND is: ");
for(i=0;i<L_RAND;i++)
dbg_printf("%02x ",RAND[i]);
dbg_printf("\n");
dbg_printf("Fmk is: ");
for(i=0;i<L_FMK;i++)
dbg_printf("%02x ",Fmk[i]);
dbg_printf("\n");
dbg_printf("\n");
f4(K,fi4,RAND,Fmk,IK);
dbg_printf("output section\n");
dbg_printf("f4 IK: ");
for (i=0;i<L_IK;i++)
dbg_printf("%02x ",IK[i]);
dbg_printf("\n");
pause();
dbg_printf("\n");
dbg_printf("\n");
dbg_printf("test vector for f5\n");
dbg_printf("input section\n");
dbg_printf("K is: ");
for(i=0;i<L_KEY;i++)
dbg_printf("%02x ",K[i]);
dbg_printf("\n");
dbg_printf("fi5 is: %02x\n",fi5);
dbg_printf("RAND is: ");
for(i=0;i<L_RAND;i++)
dbg_printf("%02x ",RAND[i]);
dbg_printf("\n");
dbg_printf("Fmk is: ");
for(i=0;i<L_FMK;i++)
dbg_printf("%02x ",Fmk[i]);
dbg_printf("\n");
dbg_printf("\n");
f5(K,fi5,RAND,Fmk,AK);
dbg_printf("output section\n");
dbg_printf("f5 AK: ");
for (i=0;i<L_AK;i++)
dbg_printf("%02x ",AK[i]);
dbg_printf("\n");
pause();
dbg_printf("\n");
dbg_printf("\n");
dbg_printf("test vector for f5*\n");
dbg_printf("input section\n");
dbg_printf("K is: ");
for(i=0;i<L_KEY;i++)
dbg_printf("%02x ",K[i]);
dbg_printf("\n");
dbg_printf("fi5* is: %02x\n",fi5star);
dbg_printf("RAND is: ");
for(i=0;i<L_RAND;i++)
dbg_printf("%02x ",RAND[i]);
dbg_printf("\n");
dbg_printf("Fmk is: ");
for(i=0;i<L_FMK;i++)
dbg_printf("%02x ",Fmk[i]);
dbg_printf("\n");
dbg_printf("\n");
f5star(K,fi5star,RAND,Fmk,AKS);
dbg_printf("output section\n");
dbg_printf("f5* AKS: ");
for (i=0;i<L_AKS;i++)
dbg_printf("%02x ",AKS[i]);
dbg_printf("\n");
pause();
dbg_printf("\n");
dbg_printf("\n");
dbg_printf("test vector for f11\n");
dbg_printf("input section\n");
dbg_printf("K is: ");
for(i=0;i<L_KEY;i++)
dbg_printf("%02x ",K[i]);
dbg_printf("\n");
dbg_printf("fi11 is: %02x\n",fi11);
dbg_printf("RAND is: ");
for(i=0;i<L_RAND;i++)
dbg_printf("%02x ",RAND[i]);
dbg_printf("\n");
dbg_printf("Fmk is: ");
for(i=0;i<L_FMK;i++)
dbg_printf("%02x ",Fmk[i]);
dbg_printf("\n");
dbg_printf("\n");
f11(K,fi11,RAND,Fmk,UAK);
dbg_printf("output section\n");
dbg_printf("f11 UAK: ");
for (i=0;i<L_UAK;i++)
dbg_printf("%02x ",UAK[i]);
dbg_printf("\n");
pause();
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?