📄 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 + -