?? ecc_encrypt.h
字號:
//***************程序說明****************************************//
//程序名稱: 射頻數據通信頭文件 AUCT-Scanner.h //
//功能: 無線掃碼器 //
//硬件環境: MSP430F135; NRF2401 //
//軟件開發環境:IAR Embedded Workbench for MSP430 V3 //
//制作單位: 艾易(武漢)電子技術有限公司 //
//作者: //
//日期: 2007.1.1 //
//***************************************************************//
#ifndef __COMMON_H
#define __COMMON_H
#include <stdio.h>
#include <msp430x13x.h>
//********************************NRF2401 CONTROL 宏命令********************************//
// I/O口對應關系: P2.0-----> DATA P2.1-----> CLK1 P2.2-----> DR1
// P2.3-----> CS P2.4-----> DOUT2 P2.5-----> CLK2
// P2.6-----> DR2 P2.7-----> CE
#define DATA_NRF2401_H (P2OUT |= 0x01) // P2.0=1 " XXXX,XXX1 "
#define DATA_NRF2401_L (P2OUT &= 0xfe) // P2.0=0 " XXXX,XXX0 "
#define DATA_NRF2401_IN (P2IN & 0x01) // get the bit0 data
#define CLK1_NRF2401_H (P2OUT |= 0x02) // P2.1 =1 " XXXX,XX1X "
#define CLK1_NRF2401_L (P2OUT &= 0xfd) // P2.1 =0 " XXXX,XX0X "
#define DR1_NRF2401 (P2IN & 0x04) // P2.2 IS DR1 OF NRF2401
#define CS_NRF2401_H (P2OUT |= 0x08) // P2.3 =1 " XXXX,1XXX "
#define CS_NRF2401_L (P2OUT &= 0xf7) // P2.3 =0 " XXXX,0XXX "
#define DOUT2_NRF2401_H (P2OUT |= 0x10) // P2.4 =1 " XXX1 ,XXXX "
#define DOUT2_NRF2401_L (P2OUT &= 0xef) // P2.4 =0 " XXX0 ,XXXX "
#define CLK2_NRF2401_H (P2OUT |= 0x20) // P2.5 =1 " XX1X ,XXXX "
#define CLK2_NRF2401_L (P2OUT &= 0xdf) // P2.5 =0 " XX0X ,XXXX "
// P2.6 IS DR2 OF NRF2401
#define CE_NRF2401_H (P2OUT |= 0x80) // P2.7 =1 " 1XXX ,XXXX "
#define CE_NRF2401_L (P2OUT &= 0x7f) // P2.7 =0 " 0XXX ,XXXX "
#define POWER_UP_NRF2401_H (P3OUT |= 0x01) // P3.0 =1 " XXXX ,XXX1 "
#define POWER_UP_NRF2401_L (P3OUT &= 0xfe) // P3.0 =0 " XXXX ,XXX0 "
#define P2DIR_FIRST_SETUP (P2DIR = 0xAA) // P2口初始化
#define P2DIR_DATA_RECV (P2DIR &= 0xfe) // P2.0 =0 "XXXX,XXX0"
#define P2DIR_DATA_SEND (P2DIR |= 0x01) // P2.0 =1 "XXXX,XXX1"
#define P2INIT_FLAG_SET (P2IFG = 0) // 標志設置 1 = 有中斷
#define P2INIT_EDGE_SET (P2IES = 0) // 中斷信號 1 = 下降沿
#define P2INIT_ENABLE_SET (P2IE = BIT2) // 開中斷 1 = 開中斷
//*************************************串口控制宏命令*************************************//
#define P3SEL_INIT_SETUP (P3SEL = 0x30) // P3.4,5 = USART0 TXD/RXD
#define P3DIR_SETUP_OUTPUT (P3DIR = 0x11) // P3.0,4 = OUT
//****************************************************************************************//
//---------------常數定義------------
#define MAX_BUF_SIZE 34 //串口最大接收數據個數
#define BITS_OF_ABYTE 8 //一個字節有8位
#define ONE_BYTE_CONFIG 2 //串口接收到的數據個數
#define MULT_BYTE_CONFIG 17 //串口接收到的數據個數
#define TR_CONFIG_BYTE 14 //射頻頭的最后一個字節,配置其收發轉換
#define MAX_CONFIG_BYTE 15 //配置字節數
#define DATA_BIT_TO_BYTE 3 //將數據長度的位轉換為字節
#define ADDR_BIT_TO_BYTE 5 //將地址長度的位轉換為字節
#define POWERUP_DELAY_TIME 16000 //軟件延時
//========================================================================================================
// 以下常數定義為串口波特率設置
//========================================================================================================
#define UART_BAUD_BYTE_H 0x00 // 32768Hz/9600
#define UART_BAUD_BYTE_L 0x03
#define UART_BAUD_FINE 0x4A //UMCTL 寄存器用細調
//========================================================================================================
// 以下常數定義為串口命令字定義
//========================================================================================================
#define GET_ENCRYPT_PK_COMD 0x01 //命令1:請求加密方公鑰/加密方算出公鑰返回
#define SENT_DECRYPT_PK_COMD 0x02 //命令2:向加密方傳送解密方的公鑰
#define SENT_ENCRYPT_COMD 0x03 //命令3:向加密方發送加密命令
#define GET_DECRYPT_PK_COMD 0x04 //命令4:請求解密方公鑰/解密方算出公鑰返回
#define SENT_ENCRYPT_PK_COMD 0x05 //命令5:向解密方傳送加密方的公鑰
#define SENT_DECRYPT_COMD 0x06 //命令6:向解密方發送解密命令
#define NORMAL 0x88 // show the program into the normal state
//========================================================================================================
// 以下常數定義為MCU的DCO配置信息
//========================================================================================================
#define SYS_XTCL1_INIT 0x87 //clock初始設置1;XT2 off;XT on;DIV 0;RSEL 111; BCSCTL1
#define SYS_XTCL2_INIT 0x00 //clock初始設置2;XT1 sel;DIV 0;SEL XT1;DIV 0; BCSCTL2
#define SYS_DCOCTL_INIT 0x80
//========================================================================================================
// 全局變量定義
//========================================================================================================
unsigned char g_recv_count; //接收數據總數
unsigned char g_recv_flag; // 收到一幀數據標志
unsigned char g_uart_answer; //串口應答 無錯時為0,有錯時為1
unsigned char g_UartCommand; // 串口命令
unsigned char g_Uartdata2; // 串口命令接收到的第二個字節
unsigned char g_powerup_flag; //上電標志
unsigned char g_buf[12]; //數據接收緩沖區12字節
unsigned char g_buf_out[12]; //數據發送緩沖區12字節
unsigned char g_encrypt_private_key; //加密方私鑰
unsigned char g_encrypt_pk_x; //加密方公鑰x
unsigned char g_encrypt_pk_y; //加密方公鑰y
unsigned char g_decrypt_private_key; //解密方私鑰
unsigned char g_decrypt_pk_x; //解密方公鑰x
unsigned char g_decrypt_pk_y; //解密方公鑰y
unsigned char yes;
unsigned char px;
unsigned char py;
//========================================================================================================
// 函數定義
//========================================================================================================
void Software_delay(unsigned int i); //軟件延時
void send_uart_a_byte(unsigned char sendbyte); //串口發射一字節數據
void uart_command_prog(void); //串口命令處理函數
unsigned char add(unsigned char add_1,unsigned char add_2);
unsigned char sub(unsigned char sub_1,unsigned char sub_2);
unsigned char mul(unsigned char mul_1,unsigned char mul_2);
unsigned char division(unsigned char div_1,unsigned char div_2);
void addition(unsigned char x1,unsigned char y1,unsigned char x2,unsigned char y2,unsigned char *x3,unsigned char *y3);
void square(unsigned char x1,unsigned char y1,unsigned char *x3,unsigned char *y3);
void proclaimed(unsigned char mw,unsigned char *pmx,unsigned char *pmy,unsigned char *yes);
int oula(unsigned char mwdel);
void pow_p(unsigned char bottom,unsigned char top,unsigned char *result);
void longth(unsigned char pv_key,unsigned char *bit);
void kp(unsigned char pv_key,unsigned char pb_key_x,unsigned char pb_key_y,unsigned char *pv_pb_key_x,unsigned char *pv_pb_key_y);
void encryption(unsigned char mw,unsigned char qbx,unsigned char qby,unsigned char *cx,unsigned char *cy,unsigned char *yes);
void decode(unsigned char cx,unsigned char cy,unsigned char qax,unsigned char qay,unsigned char yes,unsigned char *mx);
void SHA_b_4(unsigned char,unsigned char *pv_key_b);
void SHA_a_4(unsigned char ,unsigned char*pv_key_a);
#endif /* #ifndef __common */
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -