?? main.c
字號(hào):
/**********************************************************************************/
/* */
/* Copyright (C) 2006 Oki Electric Industry Co., LTD. */
/* */
/* Module Name : Main Source file */
/* File Name : main.c */
/* Revision : 1.00 */
/* Date : 2006/03/17 */
/**********************************************************************************/
#include <stdlib.h>
#include <string.h>
#include "ml675050.h"
#include "main.h"
/* expect */
ULONG expect[4][MAXWORD] =
{
/*mode1*/
{
0x0C242F0D, 0x30224843, 0x77C32227, 0x52AD75E4,
0xEE52CC51, 0x54BBA3E3, 0x117518E9, 0xF62AE9AF,
0x73BE7F9E, 0x5F9DE6E6, 0x9D465F05, 0x2B95065C,
0x1C3C041D, 0x11060AA0, 0x6413DE84, 0x7E88D6A4,
0x85332E28, 0xAB563DB2, 0xF9101B51, 0x6CA4DE56,
0x884D00ED, 0x25986CFF, 0x07BBE060, 0x3B202885,
0x2156F028, 0xD5332184, 0xDB252E18, 0x89041CB6,
0x6F28139C, 0x0F689C3F, 0x07AD026B, 0x08170571
},
/*mode2*/
{
0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000
},
/*mode3*/
{
0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000
},
/*mode4*/
{
0x9049029C, 0x4B8BE1A5, 0xDCC315BA, 0x20B5E203,
0xAB3CE01C, 0xEF2F13CE, 0x21C25A2B, 0x40593C1D,
0xF97DAF2C, 0x0B7A3232, 0x1566283F, 0xE5F9B938,
0x95051136, 0x75D04CB5, 0x55ECFCBD, 0xDCF74AC9,
0x7D7D838B, 0xB0A1602B, 0x7613E9EF, 0xDEBF7B59,
0x62F8A5AB, 0x3EFEA3DF, 0x899F6560, 0x6E53DDFA,
0xC5CB85A3, 0x6B696F27, 0xB6A2FE81, 0xC6916B95,
0x65F74679, 0xDD6F82FB, 0x27FBF183, 0x75EE8DA9
}
};
/* key P */
ULONG expect_P[MAXWORD] =
{
0x234F99A3, 0x9D7B356B, 0x99781A7A, 0x00053AD6,
0x19A9FF75, 0xC0A81E4E, 0x355D1D27, 0xBB8289D7,
0x5B8020BD, 0x6F9032B8, 0x442B8C9B, 0x6A19FA5F,
0x90D4014D, 0xB6EBA2CE, 0x445C0061, 0xBB2E7E20,
0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000
};
/* key Q */
ULONG expect_Q[MAXWORD] =
{
0x37421C1F, 0xCFCBFD8F, 0x018F3114, 0x78F1C88E,
0x5ECEDA9D, 0xF0FDB5BC, 0xB10E8D55, 0x4B3DC81C,
0x102DF287, 0x93E96350, 0x9850062F, 0x83035446,
0x0B4F9104, 0xD899FC19, 0xB3C4B4F3, 0xCC6C05C6,
0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000
};
/* key n */
ULONG expect_N[MAXWORD] =
{
0x9C776EBD, 0x5B864D6A, 0x10AFFA24, 0x5FA8B80E,
0x58E3860A, 0x94A3FD6D, 0xD1E8F354, 0x9AEABC4E,
0x36E42DD9, 0xBBF790FD, 0xA219BDD0, 0xE48B793C,
0xDB84B51A, 0x51E720C1, 0xE38D3D11, 0xC7CDB1B9,
0xB393865D, 0xA160CCBD, 0x70E083CD, 0x1F3E83E4,
0x9B509C7F, 0xEBD37D12, 0xA2EA2B90, 0xA0E6DF5B,
0xBB8F5412, 0xC03230DB, 0x8B87B553, 0xA5B8C5B2,
0x3F399C3C, 0xCED80A3A, 0x1DF3AB80, 0x95780858
};
UCHAR exec_finish_flag;
/****************************************/
/*
main()
*/
/****************************************/
int main(void)
{
UCHAR mode = 1;
UCHAR error = 0;
/* Board Clear */
init_Board();
/* Interrupt Clear */
init_Irq();
reg_Irq_Handler();
/* Accelerator Initialize */
init_Accelerator();
do{
/* PQ mod N Caluculate*/
calculate_PQmodN(expect_P,expect_Q ,expect_N , mode);
/* Result Compare */
if(mode < 3){
error = result_Compare((ULONG*)T1REG ,expect[mode-1] , mode);
}
else{
error = result_Compare((ULONG*)T2REG ,expect[mode-1] , mode);
}
if(error == 1){
break;
}
mode ++ ;
}while(mode < 5 );
if(error == 0){
/* Green LED*/
*(ULONG*)PO3 = 0x20;
}
else{
/* RED LED */
*(ULONG*)PO3 = 0x80;
}
return(0);
}
/****************************************/
/*
init_Board()
*/
/****************************************/
void init_Board(void)
{
*(ULONG*)CLKCNT = 0x000500A8;
*(ULONG*)PECLKCNT = 0x00084000;
*(ULONG*)PM3 = 0xE0;
*(ULONG*)PO3 = 0x00;
return;
}
/****************************************/
/*
result_Compare()
*/
/****************************************/
UCHAR result_Compare(ULONG* T , ULONG* expect,UCHAR mode)
{
int i = 0;
ULONG tmp[MAXWORD];
memset(tmp,0,(MAXWORD << 2) ) ;
set_Reg(tmp, T ,MAXWORD);
i = MAXWORD-1;
while(i >= 0) {
if(tmp[i] == expect[i] ) {
i--;
}
else{
return(NG);
}
}
return(OK);
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -